I run activiti v5.18 I wanted to upgrade to flowable. So I bootstrapped new machines with flowable v6.3.1 and I imported the database from activiti. I ran proper migration sql scripts but I got into an issue with compatibility.
Found v5 process definitions that are the latest version. Enable the ‘flowable5CompatibilityEnabled’ property in the process engine configuration and make sure the flowable5-compatibility dependency is available on the classpath
My question is why it tries to run with v5 compatibility when I would like to run v6. Is there some way how to force it in application.properties?
When you have running process instances on V5 the v5 compatibility engine will complete these processes using the v5 engine logic. When you deploy new process definitions, they will be started with the v6 engine. And the idea is that when all v5 instances have been completed and all process definitions have been redeployed, then you don’t need the v5 compatibility engine anymore.
Stopping all running process instances is not enough. You also need to deploy all process definitions again to make them available for the Flowable 6 engine. So when upgrading from a v5 engine you always have to start it with the v5 compatibility module to at least deploy all process definitions again. After doing that, you should be able to run it without the v5 compatibility module when there are no running v5 instances.
What do you mean with stopping all running process instances exactly? Did you delete all these process instances? The process instances in the ACT_HI_PROCINST table are not relevant, it’s only there for historic information and audit purpose.
I’m sysadmin so I probably mix a linux process running on linux kernel and the process of Flowable. I don’t know Flowable too much. I’m just trying to upgrade it and run it under Tomcat.
Do you know how to enable the compatibility module when I don’t use XML based configuration but application.properties? The documentation about the migration (Open Source) doesn’t mention it. If I get it correctly, it has to be explicitly enabled + I need the compatibility libraries JARs ( flowable5-spring and flowable5-spring-compatibility).
Nope, I haven’t touched. I was just Googling around about the Flowable processes.
I fixed it in my way at the end. You need to build 2 JAR files yourself with a hardcoded configuration and a hacked condition. The “fixed” JARs are copied over into Tomcat into a directory with the flowable-rest and flowable-task apps.
enable backward compatibility in ./modules/flowable-engine/src/main/java/org/flowable/engine/impl/cfg/ProcessEngineConfigurationImpl.java by changing the line 866:
the wanted JAR was created in ./modules/flowable-engine/target/flowable-engine-6.4.0.jar
replace a original flowable-engine-6.4.0.jar file in /usr/local/lib/tomcat/webapps/flowable-rest/WEB-INF/lib/ and /usr/local/lib/tomcat/webapps/flowable-task/WEB-INF/lib/
flowable5-compatibility-6.4.0.jar
go to modules/flowable5-compatibility in the same .zip file
replace the line 42
if (flowable6Configuration instanceof StandaloneProcessEngineConfiguration) {
by
if (true) {
create a package by
mvn package -Dmaven.test.skip=true
the needed JAR is in ./target/flowable5-compatibility-6.4.0.jar
copy over this file into /usr/local/lib/tomcat/webapps/flowable-rest/WEB-INF/lib/ and /usr/local/lib/tomcat/webapps/flowable-task/WEB-INF/lib/
copy over libs/flowable5-engine-6.4.0.jar , libs/flowable5-compatibility-6.4.0.jar , libs/flowable5-spring-6.4.0.jar and libs/flowable5-spring-compatibility-6.4.0.jar into /usr/local/lib/tomcat/webapps/flowable-rest/WEB-INF/lib/ and /usr/local/lib/tomcat/webapps/flowable-task/WEB-INF/lib/
note: there is also a original flowable5-compatibility-6.4.0.jar that we rebuilt with the fix in the previous subsection