{"record":{"id":"959eacc82cd62ed8","repo":"flowable/flowable-engine","slug":"no-case-definition-found-for-key-casedefinitionke","errorCode":null,"errorMessage":"No case definition found for key <caseDefinitionKey>","messagePattern":"No case definition found for key <caseDefinitionKey>","errorType":"exception","errorClass":"FlowableObjectNotFoundException","httpStatus":null,"severity":"error","filePath":"modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/runtime/CaseInstanceHelperImpl.java","lineNumber":148,"sourceCode":"                String defaultTenant = cmmnEngineConfiguration.getDefaultTenantProvider().getDefaultTenant(tenantId, ScopeTypes.CMMN, caseDefinitionKey);\n                if (StringUtils.isNotEmpty(defaultTenant)) {\n                    caseDefinition = caseDefinitionEntityManager.findLatestCaseDefinitionByKeyAndTenantId(caseDefinitionKey, defaultTenant);\n                } else {\n                    caseDefinition = caseDefinitionEntityManager.findLatestCaseDefinitionByKey(caseDefinitionKey);\n                }\n            }\n        } else {\n            if (parentDeploymentId != null) {\n                caseDefinition = caseDefinitionEntityManager.findCaseDefinitionByParentDeploymentAndKey(parentDeploymentId, caseDefinitionKey);\n            }\n            if (caseDefinition == null) {\n                caseDefinition = caseDefinitionEntityManager.findLatestCaseDefinitionByKey(caseDefinitionKey);\n            }\n        }\n\n        if (caseDefinition == null) {\n            if (tenantId == null || CmmnEngineConfiguration.NO_TENANT_ID.equals(tenantId)) {\n                throw new FlowableObjectNotFoundException(\"No case definition found for key \" + caseDefinitionKey, CaseDefinition.class);\n            } else if (fallbackToDefaultTenant) {\n                throw new FlowableObjectNotFoundException(\n                        \"Case definition was not found by key '\" + caseDefinitionKey + \"'. Fallback to default tenant was also used.\");\n            } else {\n                throw new FlowableObjectNotFoundException(\n                        \"Case definition was not found by key '\" + caseDefinitionKey + \"' and tenant '\" + tenantId + \"'\");\n            }\n        }\n\n        return caseDefinition;\n    }\n\n    protected CaseDefinition getCaseDefinition(CaseInstanceBuilder caseInstanceBuilder, CommandContext commandContext) {\n        CaseDefinition caseDefinition = null;\n        if (caseInstanceBuilder.getCaseDefinitionId() != null) {\n            String caseDefinitionId = caseInstanceBuilder.getCaseDefinitionId();\n            CmmnDeploymentManager deploymentManager = cmmnEngineConfiguration.getDeploymentManager();\n            caseDefinition = deploymentManager.findDeployedCaseDefinitionById(caseDefinitionId);","sourceCodeStart":130,"sourceCodeEnd":166,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/runtime/CaseInstanceHelperImpl.java#L130-L166","documentation":"CaseInstanceHelperImpl.resolveCaseDefinition could not find any case definition for the given key (and optional tenant), so it throws a FlowableObjectNotFoundException typed to CaseDefinition.class. This happens when starting a case by key or resolving a definition and no deployed case definition matches.","triggerScenarios":"Starting a case instance via CaseRuntimeServiceImpl by caseDefinitionKey where no deployed definition has that key, and tenantId is null or equals NO_TENANT_ID.","commonSituations":"Typo in the case key; case model never deployed or deployment failed; querying with the wrong tenant; definition deployed under a different engine/tenant.","solutions":["Check the key against deployed definitions via CmmnRepositoryService.createCaseDefinitionQuery().caseDefinitionKey(...)","Deploy the case definition (CMMN XML) containing the key before starting the case","Confirm the tenantId matches the deployment's tenant (or pass null / empty for no tenant)","Use the case definition id instead of the key if the exact version is known"],"exampleFix":"// before\ncmmnRuntimeService.createCaseInstanceBuilder().caseDefinitionKey(\"orderCase\").start(); // not deployed\n// after\nCaseDefinition cd = cmmnRepositoryService.createCaseDefinitionQuery()\n    .caseDefinitionKey(\"orderCase\").latestVersion().singleResult();\nif (cd != null) {\n    cmmnRuntimeService.createCaseInstanceBuilder().caseDefinitionId(cd.getId()).start();\n}","handlingStrategy":"validation","validationCode":"CaseDefinition cd = cmmnRepositoryService.createCaseDefinitionQuery()\n    .caseDefinitionKey(\"orderCase\").latestVersion().singleResult();\nif (cd == null) throw new IllegalStateException(\"Case definition 'orderCase' not deployed\");","typeGuard":null,"tryCatchPattern":"try {\n    cmmnRuntimeService.createCaseInstanceBuilder().caseDefinitionKey(key).start();\n} catch (FlowableObjectNotFoundException e) {\n    if (e instanceof org.flowable.cmmn.api.runtime.FlowableObjectNotFoundException) {\n        // deploy the case model or correct the key\n    } else {\n        throw e;\n    }\n}","preventionTips":["Check deployments for the key before starting cases","Catch FlowableObjectNotFoundException at case start and surface a deploy hint","Automate deployment of case models as part of environment setup"],"tags":["cmmn","case-definition","not-found","deployment"],"backgroundTag":"resource-not-found","analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}