{"record":{"id":"f792ede63e4d49b4","repo":"flowable/flowable-engine","slug":"could-not-find-case-model-with-case-definition-id","errorCode":null,"errorMessage":"Could not find case model with case definition id ","messagePattern":"Could not find case model with case definition id ","errorType":"exception","errorClass":"FlowableIllegalArgumentException","httpStatus":null,"severity":"error","filePath":"modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/cmd/CreateInjectedPlanItemInstanceCmd.java","lineNumber":49,"sourceCode":"/**\n * Creates a new dynamically injected plan item instance and adds it to the agenda for activation.\n *\n * @author Micha Kiener\n */\npublic class CreateInjectedPlanItemInstanceCmd implements Command<PlanItemInstance> {\n\n    protected final InjectedPlanItemInstanceBuilderImpl planItemInstanceBuilder;\n\n    public CreateInjectedPlanItemInstanceCmd(InjectedPlanItemInstanceBuilderImpl planItemInstanceBuilder) {\n        this.planItemInstanceBuilder = planItemInstanceBuilder;\n    }\n\n    @Override\n    public PlanItemInstance execute(CommandContext commandContext) {\n\n        Case caseModel = CaseDefinitionUtil.getCase(planItemInstanceBuilder.getCaseDefinitionId());\n        if (caseModel == null) {\n            throw new FlowableIllegalArgumentException(\"Could not find case model with case definition id \" + planItemInstanceBuilder.getCaseDefinitionId());\n        }\n\n        CaseElement caseElement = caseModel.getAllCaseElements().get(planItemInstanceBuilder.getElementId());\n        if (caseElement == null) {\n            throw new FlowableIllegalArgumentException(\"Could not find case element with id \" + planItemInstanceBuilder.getElementId());\n        }\n        if (!(caseElement instanceof PlanItem)) {\n            throw new FlowableIllegalArgumentException(\"The case element needs to be a plan item, but is a \" + caseElement.getClass().getName());\n        }\n\n        String runningCaseDefinitionId;\n        String caseInstanceId;\n        String tenantId;\n\n        PlanItemInstance stagePlanItemInstance = null;\n        if (planItemInstanceBuilder.injectInStage()) {\n            stagePlanItemInstance = getStageInstanceEntity(commandContext);\n            caseInstanceId = stagePlanItemInstance.getCaseInstanceId();","sourceCodeStart":31,"sourceCodeEnd":67,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/cmd/CreateInjectedPlanItemInstanceCmd.java#L31-L67","documentation":"Thrown by CreateInjectedPlanItemInstanceCmd when CaseDefinitionUtil.getCase(caseDefinitionId) returns null: the case definition id supplied to the PlanItemInstanceBuilder does not correspond to a deployed case model. The dynamic plan item injection needs the case model to resolve the element to create.","triggerScenarios":"Calling planItemInstanceBuilder.caseDefinitionId(id) with an id that is not a deployed CMMN case definition: stale id after redeployment, wrong id type (using case instance id or definition key instead of definition id), or deletion of the deployment.","commonSituations":"Caching a caseDefinitionId across deployments so it points to a deleted definition; confusing case definition key with id; multi-tenant deployments where the id exists under another tenant.","solutions":["Resolve the current definition id at call time via cmmnRepositoryService.createCaseDefinitionQuery().caseDefinitionKey(key).latestVersion().singleResult().","Verify the id exists: cmmnRepositoryService.getCaseDefinition(id) or getCaseModelWithDiagram before injecting.","Check tenant handling: use createCaseDefinitionQuery().caseDefinitionTenantId(tenant) to find the right deployment."],"exampleFix":"// before\nString defId = cachedDefinitionId; // may be stale\nplanItemInstanceBuilder.caseDefinitionId(defId);\n// after\nCaseDefinition def = cmmnRepositoryService.createCaseDefinitionQuery()\n    .caseDefinitionKey(\"myCase\").latestVersion().singleResult();\nplanItemInstanceBuilder.caseDefinitionId(def.getId());","handlingStrategy":"validation","validationCode":"CaseDefinition def = cmmnRepositoryService.createCaseDefinitionQuery()\n    .caseDefinitionId(candidateId).singleResult();\nif (def == null) {\n    def = cmmnRepositoryService.createCaseDefinitionQuery()\n        .caseDefinitionKey(key).latestVersion().singleResult();\n}\nplanItemInstanceBuilder.caseDefinitionId(def.getId());","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Resolve definition ids at runtime via latest-version queries, never hardcode them.","Distinguish definition key vs definition id vs case instance id.","Account for tenant isolation when looking up deployed definitions."],"tags":["cmmn","case-definition","invalid-argument","dynamic-plan-item"],"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-18T11:17:12.947Z"}