Upgrade from v5 to v6 - compatibility tag

Hi,

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?

Hi,

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.

Best regards,

Tijs

I stopped all running processes. I’m running completely new instance where flowable can’t even start at the moment.

I made a dump of database on a running stack with activiti v5.18. Isn’t the issue caused by this? It seems that activiti/flowable keeps an information about running processes in a database (https://stackoverflow.com/a/50757974/1751337).

I looked into the table mentioned on stackoverflow but it shows 90k+ processes without END_TIME_ specified:

mysql> select count() from ACT_HI_PROCINST where END_TIME_ is not null;
±---------+
| count(
) |
±---------+
| 94258 |
±---------+

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.

Best regards,

Tijs

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 (https://flowable.org/docs/userguide/migration.html) 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.

Hi,

We tried adding these properties to the application.properties file:

flowable.flowable.flowable5CompatibilityEnabled=true

and

flowable.flowable5-compatibility-enabled=true

and

backwardcompatibility.enable-flowable5-compatibility=true

Without success.

Can you tell me where we can configure this in flowable 6?
We are unable to find the (old) flowable-custom-contect.xml

If we know where we can configure this, we would be happy to update the migration docs.

Thanks in advance,

Cheers,
Spille

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.

flowable-engine-6.4.0.jar

to this

     protected boolean flowable5CompatibilityEnabled = true;
  • create packages by

    mvn package -Dmaven.test.skip=true
    
  • 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/

other necessary compatibility JARs

  • download flowable and unzip it https://github.com/flowable/flowable-engine/releases/download/flowable-6.4.0/flowable-6.4.0.zip
  • 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

There is a slightly easier way to do this :slight_smile:.

Have a look at my comment in Database migration from activiti to flowable.