{"record":{"id":"976b3e9764633318","repo":"flowable/flowable-engine","slug":"deployment-deploymentid-didn-t-put-case-defini","errorCode":null,"errorMessage":"deployment '<deploymentId>' didn't put case definition '<caseDefinitionId>' in the cache","messagePattern":"deployment '<deploymentId>' didn't put case definition '<caseDefinitionId>' in the cache","errorType":"exception","errorClass":"FlowableException","httpStatus":null,"severity":"error","filePath":"modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/deployer/CmmnDeploymentManager.java","lineNumber":118,"sourceCode":"        }\n        caseDefinition = resolveCaseDefinition(caseDefinition).getCaseDefinition();\n        return caseDefinition;\n    }\n\n    public CaseDefinitionCacheEntry resolveCaseDefinition(CaseDefinition caseDefinition) {\n        String caseDefinitionId = caseDefinition.getId();\n        String deploymentId = caseDefinition.getDeploymentId();\n\n        CaseDefinitionCacheEntry cachedCaseDefinition = caseDefinitionCache.get(caseDefinitionId);\n\n        if (cachedCaseDefinition == null) {\n            CmmnDeploymentEntity deployment = deploymentEntityManager.findById(deploymentId);\n            deployment.setNew(false);\n            deploy(deployment, null);\n            cachedCaseDefinition = deployment.getCaseDefinitionCacheEntry(caseDefinitionId);\n\n            if (cachedCaseDefinition == null) {\n                throw new FlowableException(\"deployment '\" + deploymentId + \"' didn't put case definition '\" + caseDefinitionId + \"' in the cache\");\n            }\n        }\n        return cachedCaseDefinition;\n    }\n    \n    public void removeDeployment(String deploymentId) {\n        removeDeployment(deploymentId, true);\n    }\n    \n    public void removeDeployment(String deploymentId, boolean cascade) {\n        CmmnDeploymentEntity deployment = deploymentEntityManager.findById(deploymentId);\n        if (deployment == null) {\n            throw new FlowableObjectNotFoundException(\"Could not find a deployment with id '\" + deploymentId + \"'.\", CmmnDeploymentEntity.class);\n        }\n        \n        List<EngineDeployer> engineUnDeployers = new ArrayList<>(deployers);\n        engineUnDeployers.sort(Comparator.comparingInt(EngineDeployer::getUndeployOrder));\n","sourceCodeStart":100,"sourceCodeEnd":136,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/deployer/CmmnDeploymentManager.java#L100-L136","documentation":"resolveCaseDefinition cannot find the definition in cache, reloads its deployment from the database and redeploys it to repopulate the cache. If after redeploying, the deployment still did not register the requested case definition in the cache, it throws FlowableException — an internal invariant violation indicating inconsistent deployment data (e.g. the case definition row points to a deployment whose resources no longer produce it).","triggerScenarios":"A case definition row in the DB whose parent deployment's resources are missing/corrupt (partially deleted database, manual row manipulation, restore from backup mismatch) so re-deployment parses nothing matching caseDefinitionId.","commonSituations":"Restored or manually pruned ACT_CMMN_* tables where FK relationships broke; upgrading Flowable versions against an old schema; deleting resources from ACT_GE_BYTEARRAY directly.","solutions":["Check DB consistency: ensure the case definition's DEPLOYMENT_ID points to a deployment whose byte arrays for the resource still exist","Re-run the Flowable schema tooling / restore a consistent database backup","Redeploy the case model fresh and update references to the new definition id"],"exampleFix":"// before (DB rows manually copied without ACT_GE_BYTEARRAY content)\n-- deployment exists but no .cmmn resource bytes -> cache repopulation fails\n// after\nrepositoryService.createDeployment().addClasspathResource(\"credit.cmmn\").deploy();\n// and use the new definition id returned by the deployment","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try { def = resolveDefinition(id); } catch (FlowableException e) { if (e.getMessage().contains(\"didn't put case definition\")) { triggerConsistencyAlarm(); } }","preventionTips":["Never hand-edit or partially prune ACT_CMMN_* / ACT_GE_BYTEARRAY tables","Use supported Flowable schema upgrade tooling between versions"],"tags":["internal-error","cache","database-consistency","deployment"],"backgroundTag":"internal-invariant-violation","analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}