Camunda Migration
This page describes the process of migrating a custom project, which uses Camunda BPM, to using CIB seven.
Migration script
To automate the renamings required when moving from Camunda to CIB seven, use the Migration Script, based on the OpenRewrite Maven plugin. It updates the versions and artifact names in your pom.xml files and the org.camunda imports in your Java code (see the version sections below for details).
Commit or back up your project before running the script, so you can review the changes it makes.
Run from the command line
Execute in the root directory of your project:
mvn -U org.openrewrite.maven:rewrite-maven-plugin:run -Drewrite.configLocation=https://cibseven.github.io/cibseven-migration/replace-camunda-with-cibseven.yml -Drewrite.activeRecipes=org.cibseven.ReplaceCamundaWithCIBSeven
Run via the pom.xml
Alternatively, add the plugin configuration to your pom.xml:
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.openrewrite.maven</groupId>
<artifactId>rewrite-maven-plugin</artifactId>
<version>5.44.0</version>
<configuration>
<configLocation>
https://cibseven.github.io/cibseven-migration/replace-camunda-with-cibseven.yml
</configLocation>
<activeRecipes>
<recipe>org.cibseven.ReplaceCamundaWithCIBSeven</recipe>
</activeRecipes>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
and run:
mvn rewrite:run
Customize the migration
Download replace-camunda-with-cibseven.yml into the root directory of your project, adjust the recipe to your needs, and point the plugin to the local file:
<configLocation>${project.basedir}/replace-camunda-with-cibseven.yml</configLocation>
Clean up
After the migration, you can delete the YAML file and remove the rewrite-maven-plugin section from your pom.xml.
Migration to CIB seven 2.2
Before the migration, please check your Camunda version: it should be Camunda 7.24.0 If the version of Camunda is less than 7.24.0 then update it to 7.24.0, first.
My Camunda version is less than 7.24.0!
For Camunda versions before 7.24.0, please do minor updates, before migrating to CIB seven, as described in Camunda version upgrade docs.
For migration from Camunda 7.24.0 to CIB seven 2.2.0 you can use the following Migration Script, based on OpenRewrite maven plugin. This script performs the following actions:
- Changes version in
pom.xmlfiles:7.24.0->2.2.0. - Changes artifacts names from
camunda-*tocibseven-*. - Changes namespaces inside imports, used in your custom Java code from
org.camundatoorg.cibseven.
Migration to CIB seven webclient
Among other things, CIB seven includes it own client: CIB seven webclient (however, the option of using the old Camunda web application remains available).
The CIB seven webclient uses JWT-based authentication and requires a special JWT secret, which must be stored securely and be accessible to both, the engine REST and the webclient middleware.
So, for migration to CIB seven webclient, you need to create file cibseven-webclient.properties on the classpath, ideally for both, the engine-REST and the webclient.
This configuration file should contain a jwtSecret property with the same value:
cibseven.webclient.authentication.jwtSecret=...
Place there your own 155-character alphanumeric secret.
Alternatively, the JWT secret can be specified via the environment variable CIBSEVEN_WEBCLIENT_AUTHENTICATION_JWTSECRET. In this case, the value specified in the environment variable takes precedence over the value from the cibseven-webclient.properties file.
Migration to CIB seven namespace
In some cases, processes created for Camunda may reference classes from the org.camunda namespace. For example:
- A process definition might include a script task that uses classes from the org.camunda namespace.
- A task can have an user variable of the camunda namespace.
All such objects are stored in the database and are not automatically renamed to the cibseven namespace during migration.
Impact post-migration:
If your processes utilize these objects, post-migration, attempting to access them may result in ClassNotFoundException.
You can search for the string pattern org.camunda.* inside the BPMN files to find the processes with the camunda namespace.
To ensure smooth operation post-migration, additional properties are available to facilitate the renaming of these objects from org.camunda namespace to org.cibseven upon the first access:
useCibSevenNamespaceInScriptingallows to handle org.camunda classes, used in a script, when the script is launched by a processuseCibSevenNamespaceInReflectionallows to convert serialized objects, stored in the database, from the camunda namespace to the cibseven namespace.
These properties are already included inside the configuration files for Tomcat (bpm_platform.xml), Wildfly (standalone.xml) and Run (production.yml) distributions of CIB seven 2.0 and higher, but the properties are disabled by default.
Enabling these properties ensures smooth access to objects and prevents class loading errors after migration.
Liquibase changelog migration
When migrating from Camunda 7.24.0 to CIB seven 2.2.0, the Liquibase changelog location changes from:
org/camunda/bpm/engine/db/liquibase/camunda-changelog.xml
to:
org/cibseven/bpm/engine/db/liquibase/camunda-changelog.xml
Liquibase identifies changesets by their author, ID, and changelog file path. Because the path changes, Liquibase treats the CIB seven changelog as a new changelog, even though the Camunda changesets it contains are identical to those of Camunda 7.24.0. Without additional steps, Liquibase may attempt to execute the historical changesets again.
To prevent this, we can suggest two possible workarounds: either rewrite the stored changelog path in the DATABASECHANGELOG table (Option A), or mark the existing history as already applied with changelog-sync-to-tag (Option B). Both tell Liquibase that the Camunda changesets have run, so only the CIB seven ones are executed.
Before migrating, ensure that the database schema has already been upgraded to Camunda 7.24.0.
Option A: Update DATABASECHANGELOG entries
First, configure Liquibase to use the CIB seven changelog at org/cibseven/bpm/engine/db/liquibase/camunda-changelog.xml. Depending on your installation, configure this through the Liquibase CLI, a liquibase.properties file, Spring Boot, or application-specific settings.
Then update the stored changelog path in the Liquibase history table:
UPDATE DATABASECHANGELOG
SET FILENAME = 'org/cibseven/bpm/engine/db/liquibase/camunda-changelog.xml'
WHERE FILENAME = 'org/camunda/bpm/engine/db/liquibase/camunda-changelog.xml';
After this one-time adjustment, Liquibase recognizes the existing migration history and continues with the CIB seven-specific migrations.
Option B: Use changelog-sync-to-tag
If you use the Liquibase CLI, set changelogFile and searchPath in your liquibase.properties to the CIB seven values. On Liquibase versions older than 4.9, use classpath instead of searchPath.
Then synchronize the history to the last Camunda tag:
liquibase changelog-sync-to-tag --tag=7.24.0
This command marks all changesets up to tag 7.24.0 as executed in DATABASECHANGELOG without running them. Then run the normal upgrade:
liquibase update
Use this option only when the database schema is already at Camunda 7.24.0. This is normally satisfied by the recommendation to upgrade to Camunda 7.24.0 before migrating to CIB seven 2.2.0.
Migration to CIB seven 2.1
The backend of CIB seven 2.1.0 is based on Camunda 7.24.0, so before the migration, please check your Camunda version: it should be Camunda 7.24.0. If the version of Camunda is less than 7.24.0 then update it to 7.24.0, first.
My Camunda version is less than 7.24.0!
For Camunda versions before 7.24.0, please do minor updates, before migrating to CIB seven, as described in Camunda version upgrade docs.
In the rest, the migration process from Camunda 7.24.0 to CIB seven 2.1.0 follows the same steps as described in the section: Migration to CIB seven 2.0.
Please note that the considerations outlined in the Authorization Configuration section are also actual to 2.1.0 and 2.1.1 versions.
Liquibase changelog migration
When migrating from Camunda 7.24.0 to CIB seven 2.1.0, the Liquibase changelog location changes from:
org/camunda/bpm/engine/db/liquibase/camunda-changelog.xml
to:
org/cibseven/bpm/engine/db/liquibase/camunda-changelog.xml
Liquibase identifies changesets by their author, ID, and changelog file path. Because the path changes, Liquibase treats the CIB seven changelog as a new changelog, even though its contents are identical to Camunda 7.24.0. Without additional steps, Liquibase may attempt to execute the historical changesets again.
To prevent this, we can suggest two possible workarounds: either rewrite the stored changelog path in the DATABASECHANGELOG table (Option A), or mark the existing history as already applied with changelog-sync-to-tag (Option B). Both tell Liquibase that the Camunda changesets have run, so only the CIB seven ones are executed.
Before migrating, ensure that the database schema has already been upgraded to Camunda 7.24.0.
Option A: Update DATABASECHANGELOG entries
First, configure Liquibase to use the CIB seven changelog at org/cibseven/bpm/engine/db/liquibase/camunda-changelog.xml. Depending on your installation, configure this through the Liquibase CLI, a liquibase.properties file, Spring Boot, or application-specific settings.
Then update the stored changelog path in the Liquibase history table:
UPDATE DATABASECHANGELOG
SET FILENAME = 'org/cibseven/bpm/engine/db/liquibase/camunda-changelog.xml'
WHERE FILENAME = 'org/camunda/bpm/engine/db/liquibase/camunda-changelog.xml';
After this one-time adjustment, Liquibase recognizes the existing migration history and continues with the CIB seven-specific migrations.
Option B: Use changelog-sync-to-tag
If you use the Liquibase CLI, set changelogFile and searchPath in your liquibase.properties to the CIB seven values. On Liquibase versions older than 4.9, use classpath instead of searchPath.
Then synchronize the history to the last Camunda tag:
liquibase changelog-sync-to-tag --tag=7.24.0
This command marks all changesets up to tag 7.24.0 as executed in DATABASECHANGELOG without running them. Then run the normal upgrade:
liquibase update
Use this option only when the database schema is already at Camunda 7.24.0. This is normally satisfied by the prerequisite to upgrade to Camunda 7.24.0 before migrating to CIB seven 2.1.0.
Migration to CIB seven 2.0
The backend of CIB seven 2.0.0 is based on Camunda 7.23.0, so before the migration, please check your Camunda version: it should be Camunda 7.23.0. If the version of Camunda is less than 7.23.0 then update it to 7.23.0, first.
My Camunda version is less than 7.23.0!
For Camunda versions before 7.23.0, please do minor updates, before migrating to CIB seven, as described in Camunda version upgrade docs.
For migration from Camunda 7.23.0 to CIB seven 2.0 you can use the following Migration Script, based on OpenRewrite maven plugin. This script performs the following actions:
- Changes version in
pom.xmlfiles:7.23.0->2.0.0. - Changes artifacts names from
camunda-*tocibseven-*. - Changes namespaces inside imports, used in your custom Java code from
org.camundatoorg.cibseven.
Migration to CIB seven webclient
Among other things, CIB seven 2.0.0 includes a new web client: CIB seven webclient (however, the option of using the old Camunda web application remains available).
The CIB seven webclient uses JWT-based authentication and requires a special JWT secret, which must be stored securely and be accessible to both, the engine REST and the webclient middleware.
So, for migration to CIB seven webclient, you need to create file cibseven-webclient.properties on the classpath, ideally for both, the engine-REST and the webclient.
This configuration file should contain a jwtSecret property with the same value:
cibseven.webclient.authentication.jwtSecret=...
Place there your own 155-character alphanumeric secret.
Alternatively, the JWT secret can be specified via the environment variable CIBSEVEN_WEBCLIENT_AUTHENTICATION_JWTSECRET. In this case, the value specified in the environment variable takes precedence over the value from the cibseven-webclient.properties file.
Authorization configuration
Important note: when upgrading to CIB seven version 2.0.4 or 2.0.5, verify the authorization settings in the engine configuration. If the authorization is enabled for the engine REST, ensure that the camunda.bpmn.authorization.enabled property is also added to the webclient configuration and is set to true.
Migration to CIB seven namespace
In some cases, processes created for Camunda may reference classes from the org.camunda namespace. For example:
- A process definition might include a script task that uses classes from the org.camunda namespace.
- A task can have an user variable of the camunda namespace.
All such objects are stored in the database and are not automatically renamed to the cibseven namespace during migration.
Impact post-migration:
If your processes utilize these objects, post-migration, attempting to access them may result in ClassNotFoundException.
You can search for the string pattern org.camunda.* inside the BPMN files to find the processes with the camunda namespace.
To ensure smooth operation post-migration, additional properties are available to facilitate the renaming of these objects from org.camunda namespace to org.cibseven upon the first access:
useCibSevenNamespaceInScriptingallows to handle org.camunda classes, used in a script, when the script is launched by a processuseCibSevenNamespaceInReflectionallows to convert serialized objects, stored in the database, from the camunda namespace to the cibseven namespace.
These properties are already included inside the configuration files for Tomcat (bpm_platform.xml), Wildfly (standalone.xml) and Run (production.yml) distributions of CIB seven 2.0 and higher, but the properties are disabled by default.
Enabling these properties ensures smooth access to objects and prevents class loading errors after migration.
Liquibase changelog migration
When migrating from Camunda 7.23.0 to CIB seven 2.0.0, the Liquibase changelog location changes from:
org/camunda/bpm/engine/db/liquibase/camunda-changelog.xml
to:
org/cibseven/bpm/engine/db/liquibase/camunda-changelog.xml
Liquibase identifies changesets by their author, ID, and changelog file path. Because the path changes, Liquibase treats the CIB seven changelog as a new changelog, even though its contents are identical to Camunda 7.23.0. Without additional steps, Liquibase may attempt to execute the historical changesets again.
To prevent this, we can suggest two possible workarounds: either rewrite the stored changelog path in the DATABASECHANGELOG table (Option A), or mark the existing history as already applied with changelog-sync-to-tag (Option B). Both tell Liquibase that the Camunda changesets have run, so only the CIB seven ones are executed.
Before migrating, ensure that the database schema has already been upgraded to Camunda 7.23.0.
Option A: Update DATABASECHANGELOG entries
First, configure Liquibase to use the CIB seven changelog at org/cibseven/bpm/engine/db/liquibase/camunda-changelog.xml. Depending on your installation, configure this through the Liquibase CLI, a liquibase.properties file, Spring Boot, or application-specific settings.
Then update the stored changelog path in the Liquibase history table:
UPDATE DATABASECHANGELOG
SET FILENAME = 'org/cibseven/bpm/engine/db/liquibase/camunda-changelog.xml'
WHERE FILENAME = 'org/camunda/bpm/engine/db/liquibase/camunda-changelog.xml';
After this one-time adjustment, Liquibase recognizes the existing migration history and continues with the CIB seven-specific migrations.
Option B: Use changelog-sync-to-tag
If you use the Liquibase CLI, set changelogFile and searchPath in your liquibase.properties to the CIB seven values. On Liquibase versions older than 4.9, use classpath instead of searchPath.
Then synchronize the history to the last Camunda tag:
liquibase changelog-sync-to-tag --tag=7.23.0
This command marks all changesets up to tag 7.23.0 as executed in DATABASECHANGELOG without running them. Then run the normal upgrade:
liquibase update
Use this option only when the database schema is already at Camunda 7.23.0. This is normally satisfied by the prerequisite to upgrade to Camunda 7.23.0 before migrating to CIB seven 2.0.0.
Migration to CIB seven 1.1
Don't panic and use OpenRewrite!
There are renamings done in this version. It is too boring to do it manually. Just use Migration Script we made for you!
CIB seven 1.1 has set of changes for versions, packages and artifacts naming. So you will need to update:
- Versions used (in
pom.xmlfiles):7.22.0->1.1.0. - Artifacts names are changes from
camunda-*tocibseven-*(for examplecamunda-bpm-spring-boot-starter-webappis called nowcibseven-bpm-spring-boot-starter-webapp). - Imports used in custom code should now use
org.cibseven.foo.barinstead oforg.camunda.foo.barpackages.
All these changes can be done, using our Migration Script, based on OpenRewrite maven plugin (see GitHub for details).
Migration to CIB seven 1.0
CIB seven 1.0 is a special version with minimal changes from Camunda. No source level changes were applied, no library dependencies were changed.
We expect migration to this version should be as easy as possible. Only two steps are essential:
Change Version to 7.22.0-cibseven
My Camunda version is less than 7.22!
For Camunda versions before 7.22 please do minor updates before migrating to CIB seven as described in Camunda version upgrade docs.
Update your pom.xml files using Camunda and change version used from 7.22.x (usually 7.22.0 for Community Edition) to 7.22.0-cibseven.
Setup CIB seven Maven Repository
We are not able to deliver artifacts for other projects to any Maven Central repository. Version 7.22.0-cibseven is available only at artifacts.cibseven.org - our public maven repository.
You can add this repository to pom.xml for current project or to settings.xml in $M2_HOME (usually $HOME/.m2) folder for current user:
<repositories>
<repository>
<id>mvn-cibseven-public</id>
<name>CIB seven Public Repository</name>
<url>https://artifacts.cibseven.org/repository/public/</url>
</repository>
</repositories>