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

  1. Call cmmnEngineConfigurator.setCmmnEngineConfiguration(new CmmnEngineConfiguration()... ) before bootstrapping the process engine.
  2. If using Spring Boot, do not manually register the configurator and let flowable-spring-boot autoconfigure it.
  3. 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

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


AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11). Data as JSON: /api/errors/946de015f2f70ecf. Report an issue: GitHub.