flowable/flowable-engine · error · FlowableException
CmmnEngineConfiguration is required
Error message
CmmnEngineConfiguration is required
What it means
The CmmnEngineConfigurator builds its CmmnEngine from a CmmnEngineConfiguration supplied beforehand. If no configuration was set on the configurator before the process engine bootstraps its configurators, buildEngine throws this FlowableException.
Source
Thrown at modules/flowable-cmmn-engine-configurator/src/main/java/org/flowable/cmmn/engine/configurator/CmmnEngineConfigurator.java:182
callbacks.put(CallbackTypes.PLAN_ITEM_CHILD_PROCESS, new ArrayList<>());
}
callbacks.get(CallbackTypes.PLAN_ITEM_CHILD_PROCESS).add(new ChildProcessInstanceStateChangeCallback(cmmnEngineConfiguration));
}
@Override
protected List<Class<? extends Entity>> getEntityInsertionOrder() {
return EntityDependencyOrder.INSERT_ORDER;
}
@Override
protected List<Class<? extends Entity>> getEntityDeletionOrder() {
return EntityDependencyOrder.DELETE_ORDER;
}
@Override
protected CmmnEngine buildEngine() {
if (cmmnEngineConfiguration == null) {
throw new FlowableException("CmmnEngineConfiguration is required");
}
return cmmnEngineConfiguration.buildCmmnEngine();
}
public CmmnEngineConfiguration getCmmnEngineConfiguration() {
return cmmnEngineConfiguration;
}
public CmmnEngineConfigurator setCmmnEngineConfiguration(CmmnEngineConfiguration cmmnEngineConfiguration) {
this.cmmnEngineConfiguration = cmmnEngineConfiguration;
return this;
}
}
View on GitHub (pinned to d6d39ce1c6)
Solutions
- Call cmmnEngineConfigurator.setCmmnEngineConfiguration(new CmmnEngineConfiguration()... ) before bootstrapping the process engine.
- If using Spring Boot, do not manually register the configurator and let flowable-spring-boot autoconfigure it.
- Verify configurator ordering so the CMMN configurator is initialized with its configuration present.
Example fix
// before engineConfigurator.getEngineConfigurators().add(new CmmnEngineConfigurator()); // after CmmnEngineConfigurator cmmnConfigurator = new CmmnEngineConfigurator(); cmmnConfigurator.setCmmnEngineConfiguration(CmmnEngineConfiguration.createDefaultCmmnEngineConfiguration()); engineConfiguration.getEngineConfigurators().add(cmmnConfigurator);
Defensive patterns
Strategy: validation
Validate before calling
CmmnEngineConfigurator c = new CmmnEngineConfigurator();
if (c.getCmmnEngineConfiguration() == null) {
c.setCmmnEngineConfiguration(CmmnEngineConfiguration.createDefaultCmmnEngineConfiguration());
}
processEngineConfiguration.setEngineConfigurators(List.of(c)); Prevention
- Never register CmmnEngineConfigurator without setCmmnEngineConfiguration
- Prefer Spring Boot auto-configuration over manual wiring
- Assert configurator completeness in an integration smoke test at startup
When it happens
Trigger: Adding a CmmnEngineConfigurator to a ProcessEngineConfiguration without calling setCmmnEngineConfiguration; programmatically invoking buildEngine/buildProcessEngine before configuring.
Common situations: Spring Boot auto-configuration bypassed with manual configurator registration; copying configurator setup from older Flowable versions where the configuration was created internally; partial initialization ordering.
Understand the failure class
Background: "X is required", "must be set", "cannot be empty": the missing-required-config error family, from Vertex AI project/location to WeChat keys — this error's family across 18 libraries.
Related errors
- Could not find or create ${privilegeName} privilege
- Expecting a SpringProcessEngineConfiguration for the Camel m
- Setting variable is not supported for read only delegate exe
- Setting transient variable is not supported for read only de
- Setting localized name is not supported for read only delega
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/946de015f2f70ecf.
Report an issue: GitHub.