flowable/flowable-engine · error · FlowableException
Must specify a case instance id to migrate
Error message
Must specify a case instance id to migrate
What it means
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.
Source
Thrown at modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/cmd/CaseInstanceMigrationValidationCmd.java:42
/**
* @author Valentin Zickner
*/
public class CaseInstanceMigrationValidationCmd implements Command<CaseInstanceMigrationValidationResult> {
protected CmmnEngineConfiguration cmmnEngineConfiguration;
protected String caseInstanceId;
protected String caseDefinitionId;
protected String caseDefinitionKey;
protected int caseDefinitionVersion;
protected String caseDefinitionTenantId;
protected CaseInstanceMigrationDocument caseInstanceMigrationDocument;
public CaseInstanceMigrationValidationCmd(String caseInstanceId, CaseInstanceMigrationDocument caseInstanceMigrationDocument,
CmmnEngineConfiguration cmmnEngineConfiguration) {
if (caseInstanceId == null) {
throw new FlowableException("Must specify a case instance id to migrate");
}
if (caseInstanceMigrationDocument == null) {
throw new FlowableException("Must specify a case instance migration document to migrate");
}
this.caseInstanceId = caseInstanceId;
this.caseInstanceMigrationDocument = caseInstanceMigrationDocument;
this.cmmnEngineConfiguration = cmmnEngineConfiguration;
}
public CaseInstanceMigrationValidationCmd(CaseInstanceMigrationDocument caseInstanceMigrationDocument, String caseDefinitionId,
CmmnEngineConfiguration cmmnEngineConfiguration) {
if (caseDefinitionId == null) {
throw new FlowableException("Must specify a case definition id to migrate");
}
if (caseInstanceMigrationDocument == null) {
throw new FlowableException("Must specify a case instance migration document to migrate");
}View on GitHub (pinned to d6d39ce1c6)
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.
Example fix
// before
builder.validateMigration(caseInstanceId, doc); // caseInstanceId == null
// after
if (caseInstanceId != null) {
builder.validateMigration(caseInstanceId, doc);
} Defensive patterns
Strategy: validation
Validate before calling
if (caseInstanceId == null) {
throw new IllegalArgumentException("case instance id required for migration validation");
}
if (cmmnRuntimeService.createCaseInstanceQuery().caseInstanceId(caseInstanceId).count() == 0) {
throw new IllegalArgumentException("case instance does not exist: " + caseInstanceId);
} Try / catch
try {
builder.validateMigration(caseInstanceId, doc);
} catch (FlowableException e) {
if (e.getMessage().contains("Must specify a case instance id")) {
// instance id missing; surface a 4xx-style error to the caller
}
} Prevention
- 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.
When it happens
Trigger: Calling createCaseInstanceMigrationBuilder().validateMigration(null, document) or constructing CaseInstanceMigrationValidationCmd(null, doc, config) directly.
Common situations: 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).
Related errors
- Must specify a case instance migration document to migrate
- Must specify a case definition id to migrate
- Must specify a case definition tenant id to migrate
- Cannot migrate case(es), not enough information
- Must specify a case definition tenant id to migrate
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/7b77de3dfaee639e.
Report an issue: GitHub.