flowable/flowable-engine · error · FlowableException
transactionManager is required property for SpringAppEngineC
Error message
transactionManager is required property for SpringAppEngineConfiguration, use org.flowable.app.engine.AppEngineConfiguration otherwise
What it means
FlowableException thrown by SpringAppEngineConfiguration.createTransactionInterceptor when transactionManager is null. A Spring app engine requires a Spring PlatformTransactionManager to wire its SpringTransactionInterceptor; without it commands cannot run transactionally.
Source
Thrown at modules/flowable-app-engine-spring/src/main/java/org/flowable/app/spring/SpringAppEngineConfiguration.java:98
protected EngineConfigurator createDefaultEventRegistryEngineConfigurator() {
return new SpringEventRegistryConfigurator();
}
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 SpringAppEngineConfiguration, use " + AppEngineConfiguration.class.getName() + " otherwise");
}
return new SpringTransactionInterceptor(transactionManager);
}
@Override
public void initTransactionContextFactory() {
if (transactionContextFactory == null && transactionManager != null) {
transactionContextFactory = new SpringTransactionContextFactory(transactionManager, transactionSynchronizationAdapterOrder);
}
}
protected void autoDeployResources(AppEngine appEngine) {
if (deploymentResources != null && deploymentResources.length > 0) {
final AutoDeploymentStrategy<AppEngine> strategy = getAutoDeploymentStrategy(deploymentMode);
strategy.deployResources(getDeploymentName(), deploymentResources, appEngine);
}
}View on GitHub (pinned to d6d39ce1c6)
Solutions
- Set the transactionManager property on SpringAppEngineConfiguration to a Spring PlatformTransactionManager bean (e.g. DataSourceTransactionManager)
- Ensure the transactionManager bean is defined in the application context
- If you do not need Spring transactions, use org.flowable.app.engine.AppEngineConfiguration instead
Example fix
// before SpringAppEngineConfiguration cfg = new SpringAppEngineConfiguration(); cfg.setDataSource(dataSource); // transactionManager missing // after SpringAppEngineConfiguration cfg = new SpringAppEngineConfiguration(); cfg.setDataSource(dataSource); cfg.setTransactionManager(new DataSourceTransactionManager(dataSource));
Defensive patterns
Strategy: validation
Validate before calling
if (cfg instanceof SpringAppEngineConfiguration sac && sac.getTransactionManager() == null) {
throw new IllegalStateException("SpringAppEngineConfiguration requires a transactionManager");
} Try / catch
try { appEngine = cfg.buildAppEngine(); } catch (FlowableException e) { log.error("Engine init failed: {}", e.getMessage()); } Prevention
- Always pair SpringAppEngineConfiguration with a PlatformTransactionManager bean
- Use plain AppEngineConfiguration when Spring transaction management is not wanted
- Add the transactionManager property to engine config templates/checked-in defaults
When it happens
Trigger: Building a SpringAppEngineConfiguration without setting the transactionManager property, then initializing the engine.
Common situations: Forgetting the transactionManager bean/property in Spring XML or Java config, using the plain AppEngineConfiguration builder while expecting Spring-managed transactions, transactionManager bean defined but not injected.
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 SpringDmnEngineC
- no org.flowable.app.engine.AppEngine defined in the applicat
- transactionManager is required property for SpringCmmnEngine
- Expected dmnEngine configuration to be of type SpringDmnEngi
- couldn't initialize process engine from spring configuration
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/ef02569ec0cd835d.
Report an issue: GitHub.