{"record":{"id":"7b77de3dfaee639e","repo":"flowable/flowable-engine","slug":"must-specify-a-case-instance-id-to-migrate-7b77de","errorCode":null,"errorMessage":"Must specify a case instance id to migrate","messagePattern":"Must specify a case instance id to migrate","errorType":"validation","errorClass":"FlowableException","httpStatus":null,"severity":"error","filePath":"modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/cmd/CaseInstanceMigrationValidationCmd.java","lineNumber":42,"sourceCode":"/**\n * @author Valentin Zickner\n */\npublic class CaseInstanceMigrationValidationCmd implements Command<CaseInstanceMigrationValidationResult> {\n\n    protected CmmnEngineConfiguration cmmnEngineConfiguration;\n    \n    protected String caseInstanceId;\n    protected String caseDefinitionId;\n    protected String caseDefinitionKey;\n    protected int caseDefinitionVersion;\n    protected String caseDefinitionTenantId;\n    protected CaseInstanceMigrationDocument caseInstanceMigrationDocument;\n\n    public CaseInstanceMigrationValidationCmd(String caseInstanceId, CaseInstanceMigrationDocument caseInstanceMigrationDocument,\n            CmmnEngineConfiguration cmmnEngineConfiguration) {\n        \n        if (caseInstanceId == null) {\n            throw new FlowableException(\"Must specify a case instance id to migrate\");\n        }\n        if (caseInstanceMigrationDocument == null) {\n            throw new FlowableException(\"Must specify a case instance migration document to migrate\");\n        }\n        this.caseInstanceId = caseInstanceId;\n        this.caseInstanceMigrationDocument = caseInstanceMigrationDocument;\n        this.cmmnEngineConfiguration = cmmnEngineConfiguration;\n    }\n\n    public CaseInstanceMigrationValidationCmd(CaseInstanceMigrationDocument caseInstanceMigrationDocument, String caseDefinitionId,\n            CmmnEngineConfiguration cmmnEngineConfiguration) {\n        \n        if (caseDefinitionId == null) {\n            throw new FlowableException(\"Must specify a case definition id to migrate\");\n        }\n        if (caseInstanceMigrationDocument == null) {\n            throw new FlowableException(\"Must specify a case instance migration document to migrate\");\n        }","sourceCodeStart":24,"sourceCodeEnd":60,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/cmd/CaseInstanceMigrationValidationCmd.java#L24-L60","documentation":"Thrown by the CaseInstanceMigrationValidationCmd constructor when caseInstanceId is null. This command validates (without executing) whether a specific case instance can be migrated per the given document, so the instance id is mandatory.","triggerScenarios":"Calling createCaseInstanceMigrationBuilder().validateMigration(null, document) or constructing CaseInstanceMigrationValidationCmd(null, doc, config) directly.","commonSituations":"A case instance id variable read from user input or a request payload that was missing; passing the wrong variable (null after a lookup that found nothing).","solutions":["Pass the actual case instance id: validateMigration(caseInstanceId, migrationDocument).","Verify the instance exists via CmmnRuntimeService.createCaseInstanceQuery().caseInstanceId(id).singleResult() before validating.","Null-check the id variable at the caller; an earlier lookup returning null usually means the instance does not exist."],"exampleFix":"// before\nbuilder.validateMigration(caseInstanceId, doc); // caseInstanceId == null\n// after\nif (caseInstanceId != null) {\n    builder.validateMigration(caseInstanceId, doc);\n}","handlingStrategy":"validation","validationCode":"if (caseInstanceId == null) {\n    throw new IllegalArgumentException(\"case instance id required for migration validation\");\n}\nif (cmmnRuntimeService.createCaseInstanceQuery().caseInstanceId(caseInstanceId).count() == 0) {\n    throw new IllegalArgumentException(\"case instance does not exist: \" + caseInstanceId);\n}","typeGuard":null,"tryCatchPattern":"try {\n    builder.validateMigration(caseInstanceId, doc);\n} catch (FlowableException e) {\n    if (e.getMessage().contains(\"Must specify a case instance id\")) {\n        // instance id missing; surface a 4xx-style error to the caller\n    }\n}","preventionTips":["Check that a case-instance lookup returned non-null before using its id.","Reject requests with missing instance ids at the API boundary.","Keep instance id and document construction adjacent so neither is forgotten."],"tags":["cmmn","case-migration","validation","null-argument"],"backgroundTag":"null-argument","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"}