{"record":{"id":"e696d19e322eb7d2","repo":"flowable/flowable-engine","slug":"unsupported-transaction-propagation","errorCode":null,"errorMessage":"Unsupported transaction propagation: ","messagePattern":"Unsupported transaction propagation: ","errorType":"exception","errorClass":"FlowableIllegalArgumentException","httpStatus":null,"severity":"error","filePath":"modules/flowable-spring-common/src/main/java/org/flowable/common/spring/SpringTransactionInterceptor.java","lineNumber":72,"sourceCode":"        } else {\n            TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager);\n            transactionTemplate.setPropagationBehavior(transactionPropagation);\n            return transactionTemplate.execute(status -> next.execute(config, command, commandExecutor));\n\n        }\n\n    }\n\n    private int getPropagation(CommandConfig config) {\n        switch (config.getTransactionPropagation()) {\n        case NOT_SUPPORTED:\n            return TransactionTemplate.PROPAGATION_NOT_SUPPORTED;\n        case REQUIRED:\n            return TransactionTemplate.PROPAGATION_REQUIRED;\n        case REQUIRES_NEW:\n            return TransactionTemplate.PROPAGATION_REQUIRES_NEW;\n        default:\n            throw new FlowableIllegalArgumentException(\"Unsupported transaction propagation: \" + config.getTransactionPropagation());\n        }\n    }\n}","sourceCodeStart":54,"sourceCodeEnd":75,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-spring-common/src/main/java/org/flowable/common/spring/SpringTransactionInterceptor.java#L54-L75","documentation":"SpringTransactionInterceptor.getPropagation maps Flowable's CommandContext transaction propagation enums onto Spring TransactionTemplate constants. Any propagation value other than NOT_SUPPORTED, REQUIRED, or REQUIRES_NEW hits the default branch and throws FlowableIllegalArgumentException. This means the engine configuration carries a propagation value the Spring interceptor cannot translate.","triggerScenarios":"SpringProcessEngineConfiguration (or other Spring engine configuration) is given a transaction propagation value not in {NOT_SUPPORTED, REQUIRED, REQUIRES_NEW} and a command executes (execute) or transactionPropagation is queried.","commonSituations":"Setting propagation programmatically from a config property string that parses to MANDATORY/SUPPORTS/NEVER; version upgrades introducing new enum values not supported by the Spring interceptor; copy-pasting non-Spring (standalone) engine config into a Spring setup.","solutions":["Set transaction propagation to one of NOT_SUPPORTED, REQUIRED, or REQUIRES_NEW on the engine configuration","If MANDATORY/SUPPORTS/NEVER semantics are needed, use a non-Spring transaction context factory or a custom interceptor that maps them","Review config properties (e.g. flowable.* propagation settings) for invalid values","Check for version mismatches where the config class offers propagations the interceptor lacks"],"exampleFix":"// before\nprocessEngineConfiguration.setTransactionPropagation(Propagation.MANDATORY);\n// after\nprocessEngineConfiguration.setTransactionPropagation(Propagation.REQUIRED);","handlingStrategy":"validation","validationCode":"Propagation p = config.getTransactionPropagation();\nif (p != Propagation.NOT_SUPPORTED && p != Propagation.REQUIRED && p != Propagation.REQUIRES_NEW) {\n    throw new IllegalArgumentException(\"Unsupported propagation for Spring: \" + p);\n}","typeGuard":"boolean springSupported(Propagation p) { return p == Propagation.NOT_SUPPORTED || p == Propagation.REQUIRED || p == Propagation.REQUIRES_NEW; }","tryCatchPattern":"try { txInterceptor.execute(command); } catch (FlowableIllegalArgumentException e) { /* log invalid propagation config and correct it */ }","preventionTips":["Only set NOT_SUPPORTED, REQUIRED, or REQUIRES_NEW in Spring setups","Validate config property strings against the supported enum before applying","Recheck propagation settings after engine version upgrades","Document allowed propagation values in your config schema"],"tags":["transactions","spring","configuration"],"backgroundTag":"unsupported-enum-value","analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-18T11:17:12.947Z"}