{"record":{"id":"c91a741e81c930e4","repo":"flowable/flowable-engine","slug":"could-not-find-case-element-with-id","errorCode":null,"errorMessage":"Could not find case element with id ","messagePattern":"Could not find case element with 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":54,"sourceCode":"public 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();\n            tenantId = stagePlanItemInstance.getTenantId();\n            runningCaseDefinitionId = stagePlanItemInstance.getCaseDefinitionId();\n        } else if (planItemInstanceBuilder.injectInCase()) {\n            CaseInstance caseInstance = getCaseInstanceEntity(commandContext);\n            caseInstanceId = caseInstance.getId();","sourceCodeStart":36,"sourceCodeEnd":72,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/cmd/CreateInjectedPlanItemInstanceCmd.java#L36-L72","documentation":"Thrown when the case model was found but its allCaseElements map has no entry for the builder's elementId. The elementId passed to the PlanItemInstanceBuilder must match a case element (plan item / stage / milestone id) declared in the case definition; an unknown id cannot be instantiated.","triggerScenarios":"Calling planItemInstanceBuilder.elementId(id) with an id that does not exist in the referenced case definition: typo, id from a different case model version, or using a task id / plan item instance id instead of the model element id.","commonSituations":"Hardcoding element ids that changed when the CMMN XML was edited; looking up ids from a newer/older version of the case definition; confusing runtime plan item instance ids with static model element ids.","solutions":["Read the element id from the case model at runtime: cmmnRepositoryService.getCmmnModel(caseDefinitionId) and inspect its plan items instead of hardcoding.","Confirm the elementId exists in the same case definition version you pass as caseDefinitionId.","Fix the CMMN XML so the dynamic plan item references an existing planItem id in the stage."],"exampleFix":"// before\nplanItemInstanceBuilder.elementId(\"dynamicTask\"); // may not exist in deployed model\n// after\nCase caseModel = cmmnRepositoryService.getCmmnModel(caseDefinitionId).getCases().get(0);\nif (!caseModel.getAllCaseElements().containsKey(\"dynamicTask\")) {\n    throw new IllegalStateException(\"element dynamicTask missing from case definition\");\n}\nplanItemInstanceBuilder.elementId(\"dynamicTask\");","handlingStrategy":"validation","validationCode":"Case caseModel = cmmnRepositoryService.getCmmnModel(caseDefinitionId).getCases().get(0);\nif (!caseModel.getAllCaseElements().containsKey(elementId)) {\n    throw new IllegalArgumentException(\"elementId \" + elementId + \" not in case definition \" + caseDefinitionId);\n}\nplanItemInstanceBuilder.elementId(elementId);","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Derive element ids from the deployed CmmnModel rather than hardcoding XML ids.","Re-validate element ids whenever the case definition version changes."],"tags":["cmmn","element-id","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"}