flowable/flowable-engine · error · FlowableException
transactionManager is required property for SpringEventRegis
Error message
transactionManager is required property for SpringEventRegistryEngineConfiguration, use org.flowable.eventregistry.impl.cfg.StandaloneEventRegistryEngineConfiguration otherwise
What it means
SpringEventRegistryEngineConfiguration.createTransactionInterceptor() requires a Spring PlatformTransactionManager to build a SpringTransactionInterceptor. When transactionManager is null it throws, telling the user to either set the property or use the standalone (non-Spring) configuration class, which does not need a transaction manager.
Source
Thrown at modules/flowable-event-registry-spring/src/main/java/org/flowable/eventregistry/spring/SpringEventRegistryEngineConfiguration.java:100
beans = new SpringBeanFactoryProxyMap(applicationContext);
}
}
public void setTransactionSynchronizationAdapterOrder(Integer transactionSynchronizationAdapterOrder) {
this.transactionSynchronizationAdapterOrder = transactionSynchronizationAdapterOrder;
}
@Override
public void initDefaultCommandConfig() {
if (defaultCommandConfig == null) {
defaultCommandConfig = new CommandConfig().setContextReusePossible(true);
}
}
@Override
public CommandInterceptor createTransactionInterceptor() {
if (transactionManager == null) {
throw new FlowableException("transactionManager is required property for SpringEventRegistryEngineConfiguration, use " + StandaloneEventRegistryEngineConfiguration.class.getName() + " otherwise");
}
return new SpringTransactionInterceptor(transactionManager);
}
@Override
public void initTransactionContextFactory() {
if (transactionContextFactory == null && transactionManager != null) {
transactionContextFactory = new SpringTransactionContextFactory(transactionManager, transactionSynchronizationAdapterOrder);
}
}
protected void autoDeployResources(EventRegistryEngine eventRegistryEngine) {
if (deploymentResources != null && deploymentResources.length > 0) {
final AutoDeploymentStrategy<EventRegistryEngine> strategy = getAutoDeploymentStrategy(deploymentMode);
strategy.deployResources(deploymentName, deploymentResources, eventRegistryEngine);
}
}View on GitHub (pinned to d6d39ce1c6)
Solutions
- Set the transactionManager property on the configuration to your Spring PlatformTransactionManager bean.
- If you are not running inside Spring, switch to org.flowable.eventregistry.impl.cfg.StandaloneEventRegistryEngineConfiguration.
- Ensure the referenced transaction manager bean itself is defined (e.g. DataSourceTransactionManager) and not null at build time.
Example fix
// before SpringEventRegistryEngineConfiguration cfg = new SpringEventRegistryEngineConfiguration(); cfg.setDataSource(dataSource); // after SpringEventRegistryEngineConfiguration cfg = new SpringEventRegistryEngineConfiguration(); cfg.setDataSource(dataSource); cfg.setTransactionManager(transactionManager);
Defensive patterns
Strategy: validation
Validate before calling
if (cfg instanceof SpringEventRegistryEngineConfiguration springCfg && springCfg.getTransactionManager() == null) {
throw new IllegalArgumentException("Set transactionManager or use StandaloneEventRegistryEngineConfiguration");
} Prevention
- Always wire transactionManager in Spring XML templates for SpringEventRegistryEngineConfiguration.
- Use StandaloneEventRegistryEngineConfiguration outside Spring-managed transactions.
- Add a startup smoke test that builds the engine configuration.
When it happens
Trigger: Building an engine from a SpringEventRegistryEngineConfiguration whose transactionManager property was never set (or was set to null) and whose configuration reaches command-interceptor creation (e.g. buildEngine).
Common situations: Forgetting the <property name="transactionManager" ref="..."/> in Spring XML; constructing the configuration programmatically without setTransactionManager; using SpringEventRegistryEngineConfiguration in a non-Spring app where StandaloneEventRegistryEngineConfiguration was intended.
Understand the failure class
Background: "is required", "must be set", "missing required field": configuration validation errors across open-source libraries — this error's family across 36 libraries.
Related errors
- transactionManager is required property for SpringAppEngineC
- transactionManager is required property for SpringDmnEngineC
- no org.flowable.eventregistry.api.EventRegistryEngine define
- no org.flowable.app.engine.AppEngine defined in the applicat
- couldn't initialize app engine from spring configuration res
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/dcddb882037b38c5.
Report an issue: GitHub.