theonedev/onedev · error · ExplicitException
No issue creation settings for project: %s
Error message
No issue creation settings for project: %s
What it means
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.
Source
Thrown at server-core/src/main/java/io/onedev/server/model/support/administration/ServiceDeskSetting.java:65
return issueCreationSettings;
}
public void setIssueCreationSettings(List<IssueCreationSetting> issueCreationSettings) {
this.issueCreationSettings = issueCreationSettings;
}
public IssueCreationSetting getIssueCreationSetting(Project project) {
for (IssueCreationSetting setting: issueCreationSettings) {
String projectPatterns = setting.getApplicableProjects();
if (projectPatterns == null)
projectPatterns = "**";
PatternSet projectPatternSet = PatternSet.parse(projectPatterns);
if (projectPatternSet.matches(new PathMatcher(), project.getPath()))
return setting;
}
String errorMessage = String.format("No issue creation settings for project: %s", project.getPath());
throw new ExplicitException(errorMessage);
}
public void onMoveProject(String oldPath, String newPath) {
for (IssueCreationSetting setting: getIssueCreationSettings()) {
setting.setApplicableProjects(Project.substitutePath(
setting.getApplicableProjects(), oldPath, newPath));
}
}
public Usage onDeleteProject(String projectPath) {
Usage usage = new Usage();
int index = 1;
for (IssueCreationSetting setting: getIssueCreationSettings()) {
if (Project.containsPath(setting.getApplicableProjects(), projectPath))
usage.add("issue creation setting #" + index + ": applicable projects");
index++;
}View on GitHub (pinned to d44925c47c)
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
Example fix
// before: patterns only cover 'demo/*' but project is 'apps/main' applicableProjects: "demo/*" // after applicableProjects: "demo/*\napps/*"
Defensive patterns
Strategy: validation
Validate before calling
var setting = OneDev.getInstance(SettingService.class).getServiceDeskSetting();
boolean matches = setting.getIssueCreationSettings().stream()
.anyMatch(s -> PatternSet.parse(s.getApplicableProjects())
.matches(new PathMatcher(), project.getPath())); Try / catch
try {
var ics = setting.getIssueCreationSetting(project);
} catch (ExplicitException e) {
logger.warn("No service desk setting for {}: {}", project.getPath(), e.getMessage());
} Prevention
- Use broad fallback patterns like ~/* covering all projects
- Update patterns after project renames/moves
- Test pattern syntax against actual project paths
When it happens
Trigger: An incoming service-desk request (or any call to getIssueCreationSetting) targeting a project whose path matches none of the configured IssueCreationSetting project patterns.
Common situations: 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.
Understand the failure class
Background: "X is required", "must be set", "cannot be empty": the missing-required-config error family, from Vertex AI project/location to WeChat keys — this error's family across 18 libraries.
Related errors
- Malformed pattern set
- Unrecognized command:
- Unable to discover cluster ip from database connection url:
- Time tracking needs to be enabled for the project
- Link spec not found: ${linkName}
AI-assisted analysis of theonedev/onedev@d44925c47c (2026-09-06).
Data as JSON: /api/errors/80651934c6e6414b.
Report an issue: GitHub.