flowable/flowable-engine · critical · FlowableException
EventRegistryEngineConfiguration is required
Error message
EventRegistryEngineConfiguration is required
What it means
EventRegistryEngineConfigurator.buildEngine builds the Event Registry engine during the process engine bootstrap. It throws FlowableException when eventEngineConfiguration was never set on the configurator, because the configurator cannot construct the engine without it. This is a startup-time configuration invariant check.
Source
Thrown at modules/flowable-event-registry-configurator/src/main/java/org/flowable/eventregistry/impl/configurator/EventRegistryEngineConfigurator.java:84
protected void initialiseEventRegistryEngineConfiguration(EventRegistryEngineConfiguration eventRegistryEngineConfiguration) {
// meant to be overridden
}
@Override
protected List<Class<? extends Entity>> getEntityInsertionOrder() {
return EntityDependencyOrder.INSERT_ORDER;
}
@Override
protected List<Class<? extends Entity>> getEntityDeletionOrder() {
return EntityDependencyOrder.DELETE_ORDER;
}
@Override
protected EventRegistryEngine buildEngine() {
if (eventEngineConfiguration == null) {
throw new FlowableException("EventRegistryEngineConfiguration is required");
}
return eventEngineConfiguration.buildEventRegistryEngine();
}
public EventRegistryEngineConfiguration getEventEngineConfiguration() {
return eventEngineConfiguration;
}
public EventRegistryEngineConfigurator setEventEngineConfiguration(EventRegistryEngineConfiguration eventEngineConfiguration) {
this.eventEngineConfiguration = eventEngineConfiguration;
return this;
}
public EventRegistryEngine getEventRegistryEngine() {
return buildEngine;
}
View on GitHub (pinned to d6d39ce1c6)
Solutions
- Create an EventRegistryEngineConfiguration and call configurator.setEventEngineConfiguration(eventRegistryEngineConfiguration) before the engine builds.
- In Spring, ensure the EventRegistryEngineConfiguration bean exists and is injected into the configurator.
- Check the order/registration of configurators so the event registry configuration is initialized before buildEngine runs.
Example fix
// before EventRegistryEngineConfigurator configurator = new EventRegistryEngineConfigurator(); processEngineConfiguration.addConfigurator(configurator); // after EventRegistryEngineConfiguration eventConfig = new EventRegistryEngineConfiguration(); EventRegistryEngineConfigurator configurator = new EventRegistryEngineConfigurator(); configurator.setEventEngineConfiguration(eventConfig); processEngineConfiguration.addConfigurator(configurator);
Defensive patterns
Strategy: validation
Validate before calling
EventRegistryEngineConfigurator configurator = new EventRegistryEngineConfigurator();
if (configurator.getEventEngineConfiguration() == null) {
configurator.setEventEngineConfiguration(new EventRegistryEngineConfiguration());
}
processEngineConfiguration.addConfigurator(configurator); Type guard
boolean isConfiguratorReady(EventRegistryEngineConfigurator c) { return c.getEventEngineConfiguration() != null; } Try / catch
try {
processEngine = processEngineConfiguration.buildProcessEngine();
} catch (FlowableException e) {
if (e.getMessage() != null && e.getMessage().contains("EventRegistryEngineConfiguration is required")) {
LOG.error("Set the event engine configuration on the configurator before building the engine");
}
throw e;
} Prevention
- Always pair EventRegistryEngineConfigurator with an EventRegistryEngineConfiguration instance.
- When using Spring, inject the configuration bean into the configurator.
- Smoke-test engine bootstrapping in CI to catch missing configurator wiring early.
When it happens
Trigger: Registering EventRegistryEngineConfigurator in an EngineConfigurationConfigurer / process engine configuration without calling setEventEngineConfiguration(...), then booting the engine.
Common situations: Custom process engine setup code that adds the configurator but forgets the configuration bean, Spring wiring where the EventRegistryEngineConfiguration bean was not injected, or copying configurator boilerplate from another engine (e.g. CMMN) without adapting it.
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
- Failed to create property source
- Could not find an implementation of the org.flowable.cdi.spi
- no " + CmmnEngine.class.getName() + " defined in the applica
- DmnEngineConfiguration is required
- couldn't initialize dmn engine from spring configuration res
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/f83359d298e5344c.
Report an issue: GitHub.