flowable/flowable-engine · error · FlowableObjectNotFoundException
No case definition found for id = '
Error message
No case definition found for id = '
What it means
After a non-null id is validated, SetCaseDefinitionCategoryCmd looks up the CaseDefinitionEntity. If no case definition exists for the given id, it throws FlowableObjectNotFoundException with the id and CaseDefinition.class.
Source
Thrown at modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/cmd/SetCaseDefinitionCategoryCmd.java:48
protected String caseDefinitionId;
protected String category;
public SetCaseDefinitionCategoryCmd(String caseDefinitionId, String category) {
this.caseDefinitionId = caseDefinitionId;
this.category = category;
}
@Override
public Void execute(CommandContext commandContext) {
if (caseDefinitionId == null) {
throw new FlowableIllegalArgumentException("Case definition id is null");
}
CaseDefinitionEntity caseDefinition = CommandContextUtil.getCaseDefinitionEntityManager(commandContext).findById(caseDefinitionId);
if (caseDefinition == null) {
throw new FlowableObjectNotFoundException("No case definition found for id = '" + caseDefinitionId + "'", CaseDefinition.class);
}
// Update category
caseDefinition.setCategory(category);
// Remove case definition from cache, it will be refetch later
DeploymentCache<CaseDefinitionCacheEntry> caseDefinitionCache = CommandContextUtil.getCmmnEngineConfiguration(commandContext).getCaseDefinitionCache();
if (caseDefinitionCache != null) {
caseDefinitionCache.remove(caseDefinitionId);
}
return null;
}
public String getCaseDefinitionId() {
return caseDefinitionId;
}
View on GitHub (pinned to d6d39ce1c6)
Solutions
- Fetch the id via CaseDefinitionQuery (repositoryService.createCaseDefinitionQuery()) instead of hardcoding
- Verify the id exists in ACT_RE_CASEDEF for the connected datasource
- Confirm you are not passing a process definition id by mistake
Example fix
// before
repoService.setCaseDefinitionCategory(wrongId, "hr");
// after
CaseDefinition def = repoService.createCaseDefinitionQuery().caseDefinitionKey("myCase").latestVersion().singleResult();
repoService.setCaseDefinitionCategory(def.getId(), "hr"); Defensive patterns
Strategy: validation
Validate before calling
if (repoService.createCaseDefinitionQuery().caseDefinitionId(id).count() == 0) throw new IllegalStateException("Unknown case definition " + id); Try / catch
try { repoService.setCaseDefinitionCategory(id, category); } catch (FlowableObjectNotFoundException e) { log.warn("Case definition not found: {}", id); } Prevention
- Resolve ids via CaseDefinitionQuery
- Distinguish case vs process definition ids
- Verify environment/datasource consistency
When it happens
Trigger: Calling setCaseDefinitionCategory with a fabricated, deleted, or wrong-engine definition id; using an id from a different Flowable engine (e.g. a process definition id instead of a case definition id).
Common situations: Mixing process/case definition ids; definition removed by cleanup or redeploy; id copied from a different environment's database.
Understand the failure class
Background: Record Not Found Errors: "not found", RecordNotFound, and "was not found" — what they mean and how to fix them — this error's family across 28 libraries.
Related errors
- Cannot find case definition with id
- Cannot find case definition for id:
- Cannot find the case definition to migrate to, identified by
- No case definition found for key <caseDefinitionKey>
- Case definition was not found by key '<caseDefinitionKey>'.
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/b7ae01a40a431c94.
Report an issue: GitHub.