Third Party Workflow Engine Migration to Camunda BPM

Currently we are using a third party workflow engine which is proprietary. We are replacing the third party engine with Camunda. However, we are facing difficulty as we need to migrate long-running process instances on the third party engine to Camunda during production release.

We’ve considering a few options, one option is to run both engines in parallel and let third party engine continues to handle the in-flight instances while Camunda starts to handle the new ones; another option is to take data migration approach

For the data migration, at high level, it seems we ought to use API to start a new process in Camunda and move the process instance to corresponding state. but specifically, what is considered to be the best practices in terms of migration?

By the way, we are using version 7.12, and Spring Boot.

Thank you so much for your help.

Jason

this would seem to me to be the safest option.

This is more or less correct but more specifically you can use the API to start a process from any symbol in the model, so it wouldn’t be too hard.

Thank you so much @Niall for your insight and quick response.

It’s good to know that we can start process in any activity in the workflow. I think it would be a cleaner solution than using createProcessInstanceModification(). My next question is how start process can help to handle the a symbol in a sub process? A concrete example would be very helpful.

Thank you

Jason

I’m not really sure what you mean by this - can you rephrase of give a specific use case?

Let’s say I have a main process, via call activity, the mail process connects to a sub process. And the sub process has a task called ‘subprocessTask’. I’d like to start process and land directly on ‘subprocessTask’ inside a supprocess.

Here is an illustration of the main process:

Thank you in advance.

Jason

Sure, if you created an instance which starts with a token on a call activity, it’ll create an instance of the called sup process.

Hi @Niall,
Thank you for your prompt reply. creating an instance of the sub process definitely can be done using the following:

runtimeService.createProcessInstanceByKey(key)
.startBeforeActivity(targetSubprocess)
.businessKey(businessKey)
.setVariables(payload)
.execute();

However, the goal is to move a user task IN the sub process. How can we effective do that? A sample would be greatly appreciated.

Thank you

Jason