Migration from Camunda 7.23.0 to EximeeBPMS 1.0.0

Eximee Team
Published 23 Apr, 2025

EximeeBPMS is a fork of Camunda 7 that is fully compatible with Camunda 7.23.0 and allows secure migration of projects while preserving their logic and structure.
Migrating from Camunda to EximeeBPMS is a straightforward and well-documented process that you can easily perform yourself. In this article, we’ll show you step by step how to migrate from Camunda 7.23.0 to EximeeBPMS 1.0.0 using a dedicated migration tool and the official rewrite-maven-plugin. All this will be demonstrated using a concrete example, complete with full documentation and comments from the Consdata team – the creators of EximeeBPMS.

Preparing for Migration

Before proceeding with the following steps, make sure that your current Camunda version has been updated to 7.23.0. Performing the migration on an older version may result in system failures.

Migration of a Sample Project

Before performing the migration on your target project, it’s highly recommended that you familiarize yourself with the process using a sample repository prepared by the EximeeBPMS team. This is a safe way to understand how the automatic code transformation works before applying it in your production environment.

1. Review the OpenRewrite documentation

The first step is to learn about the tool that’s responsible for the entire transformation process – we’re talking about OpenRewrite.

OpenRewrite is an automated code refactoring framework that allows you to change the structure of Maven repositories without having to manually modify multiple files.

The entire mechanism is based on recipes – pre-built scripts that modify source code and configuration files.

This allows you to migrate from Camunda to EximeeBPMS with a single command. But before we work on your target project, let’s have a look at the migration of a sample project.

2. Learn how the rewrite-maven-plugin works using the sample project

a. Clone the repository 

First, clone the official migration repository:

bash
------------------------------------------------------------------

git clone git@github.com:EximeeBPMS/eximeebpms-migration.git

It contains everything you’ll need to perform your first migration.

b. Review the dependencies in the main pom.xml file of the project

Let’s take a look at the initial state. Here’s a fragment of the original pom.xml file in the sample project:

pom.xml
------------------------------------------------------------------

<properties>
    <camunda.version>7.23.0</camunda.version>
</properties>

<!-- ... -->
<dependencies>
    <dependency>
        <groupId>org.camunda.bpm</groupId>
        <artifactId>camunda-engine</artifactId>
    </dependency>
    <dependency>
        <groupId>org.camunda.bpm</groupId>
        <artifactId>camunda-engine-spring</artifactId>
    </dependency>
    <!-- ... -->
</dependencies>

This file contains the classic Camunda dependencies, which are automatically converted to their EximeeBPMS equivalents.

c. Explore the packages used in the sample project

 
CalculateInterestService.java
------------------------------------------------------------------

package org.example.bpm.getstarted.loanapproval;
 
import org.camunda.bpm.engine.delegate.DelegateExecution;
import org.camunda.bpm.engine.delegate.JavaDelegate;
 
public class CalculateInterestService implements JavaDelegate {
    public void execute(DelegateExecution delegate) {
        System.out.println("Spring Bean invoked");
    }
}

 

d. Review the migration configuration file

 
replace-camunda-with-eximeebpms.yml
------------------------------------------------------------------

type: specs.openrewrite.org/v1beta/recipe
name: org.eximeebpms.ReplaceCamundaWithEximeeBPMS
displayName: Replace "Camunda" with "EximeeBPMS" in package names and imports
recipeList:
 
  - org.openrewrite.maven.RenamePropertyKey:
      oldKey: camunda.version
      newKey: eximeebpms.version
  - org.openrewrite.maven.ChangePropertyValue:
      key: eximeebpms.version
      newValue: 1.0.0
 
  - org.openrewrite.maven.RenamePropertyKey:
      oldKey: version.camunda
      newKey: version.eximeebpms
  - org.openrewrite.maven.ChangePropertyValue:
      key: version.eximeebpms
      newValue: 1.0.0
 
...
  - org.openrewrite.java.ChangePackage:
      oldPackageName: "org.camunda"
      newPackageName: "org.eximeebpms"
      recursive: true
  - org.openrewrite.java.ChangeType:
      oldFullyQualifiedTypeName: "org.camunda"
      newFullyQualifiedTypeName: "org.eximeebpms"
      recursive: true

This configuration file replaces Camunda-related package names and versions with those used in EximeeBPMS. It is used by the rewrite-maven-plugin.

Perform a test migration

After becoming familiar with the plugin, its configuration, and the structure of the sample project, you can run the migration script using the following command:

bash
------------------------------------------------------------------

mvn rewrite:run

 

Changing dependencies in pom.xml

As a result, the dependencies in the pom.xml file and the packages used in the project should be updated, e.g.:

pom.xml
------------------------------------------------------------------


<properties>
    <eximeebpms.version>1.0.0</eximeebpms.version>
</properties>

<!-- ... -->

<dependencies>
    <dependency>
        <groupId>org.eximeebpms.bpm</groupId>
        <artifactId>eximeebpms-engine</artifactId>
    </dependency>
    <dependency>
        <groupId>org.eximeebpms.bpm</groupId>
        <artifactId>eximeebpms-engine-spring</artifactId>
    </dependency>
    <!-- ... -->
</dependencies>

camunda.version has changed to eximeebpms.version, and all org.camunda.bpm artifacts have been replaced by org.eximeebpms.bpm.

Note

If you declare a different version name in the <properties></properties>, section, you must reflect this in the recipe file (yaml).

For example, if you declare the Camunda version using the tags:

<camunda.version>7.23.0</camunda.version>

or

<version.camunda>7.23.0</version.camunda>

you must include it in the file mentioned above.

CalculateInterestService.java
------------------------------------------------------------------


package org.example.bpm.getstarted.loanapproval;
 
import org.eximeebpms.bpm.engine.delegate.DelegateExecution;
import org.eximeebpms.bpm.engine.delegate.JavaDelegate;
 
public class CalculateInterestService implements JavaDelegate {
    public void execute(DelegateExecution delegate) {
        System.out.println("Spring Bean invoked");
    }
}

By performing the migration on a test project, you’ll be confident that the process is working correctly. In the next step, we’ll show you how to perform the same actions on your target project.

Migration of the Target Project

After you’ve tested the migration on the sample project, it’s time to migrate your actual project. The good news is that the process is exactly the same as in the trial version. The only difference is that now you are migrating the data, code, and dependencies that you use every day in your system.

Below you’ll find detailed instructions that will walk you step-by-step through the entire process.

To perform the migration, you’ll need:

  • Locate the main pom.xml file in your project
  • Add the following plugins in the section
rewrite-maven-plugin
------------------------------------------------------------------


<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.3.2</version>
            </plugin>
            <plugin>
                <groupId>org.openrewrite.maven</groupId>
                <artifactId>rewrite-maven-plugin</artifactId>
                <version>6.3.2</version>
                <configuration>
                    <configLocation>
                        ${maven.multiModuleProjectDirectory}/replace-camunda-with-eximeebpms.yml
                    </configLocation>
                    <activeRecipes>
                        <recipe>org.eximeebpms.ReplaceCamundaWithEximeeBPMS</recipe>
                    </activeRecipes>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

bash
-----------------------------------------------------------------

mvn rewrite:run
  • Verify by building the project and running the platform:
bash 
------------------------------------------------------------------

mvn clean install

Performing the migration activities according to the instructions we provide will ensure a safe and effective transition of your target project to the new platform.

Deviating from these guidelines may result in errors and problems maintaining full compatibility in your project. Therefore, it is important to follow the instructions closely throughout the migration process.

What’s next?

While migrating to a new tool may seem like a big change, with a well-prepared environment and clear guidance, it is simply the next step in the evolution of your system.

Need additional help with the migration or want to automate the process for multiple projects at once? Talk to us – as the creators of EximeeBPMS, we’ll be happy to help you get through this phase smoothly and safely.

Authors

Eximee Team