Best Practice: Process Definition multiple versions

Hi,

We have processes that have wait moments so sometimes they run for a month. We regularly improve our process definition, or add functionality. Every time we do, a new version of de definition is added, and it makes looking at the cockpit and see how everything goes a bit harder. I was wondering if there are any best practices.

The options as we see them:

#1. Migrate the running processes and delete the old version of the process. So far, this is the way we did it. It works, only when looking at history (with the REST API), completed processes have no definition anymore (null value). This is not a disaster, but not very pretty. And maybe a risk in the future when we have to backtrack what happened.

#2. The same as above, but suspend the process definition after migrating. We have not tried this, but I assume this might be a good solution. Any comments?

#3. Just let the processes run in their version of the definition, and perhaps delete of suspend the process after all instances are finished.

#4. … any other strategies

Any insight, best practices or comments are appreciated.

Kind Regards

All approaches you list sound reasonable. I would probably not go for #1 for the reasons you mention with respect to history. On the question whether you should migrate or not (#2 vs #3), I would go for migration whenever possible. Then your processes always run on the latest version (i.e. also benefit from model improvements) and as you said, you have all process instances in a single view. So I would probably go for #2 and opt for #3 if instances cannot be easily migrated. If you require the history only for a certain amount of time (and for example use history cleanup for that), then you could also delete process definitions once all history entries have been purged.