{"record":{"id":"80651934c6e6414b","repo":"theonedev/onedev","slug":"no-issue-creation-settings-for-project-s","errorCode":null,"errorMessage":"No issue creation settings for project: %s","messagePattern":"No issue creation settings for project: (.+?)","errorType":"exception","errorClass":"ExplicitException","httpStatus":null,"severity":"error","filePath":"server-core/src/main/java/io/onedev/server/model/support/administration/ServiceDeskSetting.java","lineNumber":65,"sourceCode":"\t\treturn issueCreationSettings;\n\t}\n\n\tpublic void setIssueCreationSettings(List<IssueCreationSetting> issueCreationSettings) {\n\t\tthis.issueCreationSettings = issueCreationSettings;\n\t}\n\t\n\tpublic IssueCreationSetting getIssueCreationSetting(Project project) {\n\t\tfor (IssueCreationSetting setting: issueCreationSettings) {\n\t\t\tString projectPatterns = setting.getApplicableProjects();\n\t\t\tif (projectPatterns == null)\n\t\t\t\tprojectPatterns = \"**\";\n\t\t\tPatternSet projectPatternSet = PatternSet.parse(projectPatterns);\n\t\t\t\n\t\t\tif (projectPatternSet.matches(new PathMatcher(), project.getPath())) \n\t\t\t\treturn setting;\n\t\t}\n\t\tString errorMessage = String.format(\"No issue creation settings for project: %s\", project.getPath());\n\t\tthrow new ExplicitException(errorMessage);\n\t}\n\t\n\tpublic void onMoveProject(String oldPath, String newPath) {\n\t\tfor (IssueCreationSetting setting: getIssueCreationSettings()) {\n\t\t\tsetting.setApplicableProjects(Project.substitutePath(\n\t\t\t\t\tsetting.getApplicableProjects(), oldPath, newPath));\n\t\t}\n\t}\n\t\n\tpublic Usage onDeleteProject(String projectPath) {\n\t\tUsage usage = new Usage();\n\t\t\n\t\tint index = 1;\n\t\tfor (IssueCreationSetting setting: getIssueCreationSettings()) {\n\t\t\tif (Project.containsPath(setting.getApplicableProjects(), projectPath))\n\t\t\t\tusage.add(\"issue creation setting #\" + index + \": applicable projects\");\n\t\t\tindex++;\n\t\t}","sourceCodeStart":47,"sourceCodeEnd":83,"githubUrl":"https://github.com/theonedev/onedev/blob/d44925c47c37992c828ea673a5f9620539bc3ff2/server-core/src/main/java/io/onedev/server/model/support/administration/ServiceDeskSetting.java#L47-L83","documentation":"ServiceDeskSetting.getIssueCreationSetting(project) finds the issue creation setting whose applicable-projects pattern matches the given project path. If no configured setting's pattern matches, it throws this ExplicitException with the project path. Service desk operation for that project cannot proceed without a matching rule.","triggerScenarios":"An incoming service-desk request (or any call to getIssueCreationSetting) targeting a project whose path matches none of the configured IssueCreationSetting project patterns.","commonSituations":"Project renamed/moved so it no longer matches the configured patterns (e.g. 'old/*' vs new path); new project created without extending service desk settings; pattern typos or overly restrictive globs.","solutions":["Add an IssueCreationSetting in Administration → Service Desk whose applicable projects pattern covers the project path (e.g. `~/*` or the explicit project path)","If the project was renamed, update the setting's applicable projects to the new path (or use the project move handler which substitutes paths)","Verify the pattern syntax against the project's actual getPath() value"],"exampleFix":"// before: patterns only cover 'demo/*' but project is 'apps/main'\napplicableProjects: \"demo/*\"\n// after\napplicableProjects: \"demo/*\\napps/*\"","handlingStrategy":"validation","validationCode":"var setting = OneDev.getInstance(SettingService.class).getServiceDeskSetting();\nboolean matches = setting.getIssueCreationSettings().stream()\n    .anyMatch(s -> PatternSet.parse(s.getApplicableProjects())\n        .matches(new PathMatcher(), project.getPath()));","typeGuard":null,"tryCatchPattern":"try {\n    var ics = setting.getIssueCreationSetting(project);\n} catch (ExplicitException e) {\n    logger.warn(\"No service desk setting for {}: {}\", project.getPath(), e.getMessage());\n}","preventionTips":["Use broad fallback patterns like ~/* covering all projects","Update patterns after project renames/moves","Test pattern syntax against actual project paths"],"tags":["service-desk","configuration","pattern-matching"],"backgroundTag":"missing-required-config","analyzedSha":"d44925c47c37992c828ea673a5f9620539bc3ff2","analyzedAt":"2026-09-06T07:18:27.995Z","contentChangedAt":"2026-09-06T07:18:27.995Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}