Managing modifications to distributed workflows in Novulo: avoiding duplicates and conflicts

We exported a working sales workflow from the development environment and imported it into the acceptance environment. However, we need to make modifications to the workflow, such as changing expressions that refer to a call template based on an ID. This ID differs between the acceptance and development environments.

When attempting to make changes to the workflow, we receive the following message: “This workflow step is distributed. Modifications are not allowed.”
image

What is the reasoning behind not allowing modifications to a distributed, imported workflow in the acceptance environment? We are currently duplicating the workflow to make changes, but we are encountering duplicate key issues with every modification.

Ideally, we would prefer to work with a single workflow and avoid having multiple copies. How can we, for example, remove the distributed (imported) workflow and make changes only to the duplicated version?

Distributed workflows cannot be edited to prevent multiple copies and multiple “sources of truth”. You don’t want that because any changes you make in ACC will be overwritten when you import a new version from DEV.

First, chose the environment where you want to maintain your workflow. Then use this workflow as the “single source of truth”. It might even be beneficial to set up a whole new application only to store and distribute configuration in the long run. At Novulo we have set up “CONF” environments for this purpose for some customers.

By the way, you can always make a copy of a distributed workflow, then you can further edit this workflow and use it as the new “single source of truth”.

The fact that the workflow relies on an ID is fine if it stays in the same environment, but in your case the workflow step should retrieve the right call template based on its GUID. The GUID remains the same across applications when you import them from DEV as well, and they are unique.

So replace calltemplates:load(123456) with calltemplates:first({calltemplates, this, guid.equals("REPLACE WITH ACTUAL GUID")})

Thank you for the explanation, Joachim. Very helpfull. The only issue we encounter after duplicating the workflow is when we try to change the ID to a GUID, for example, we receive a “duplicate key” error. This prevents us from making changes to the duplicated version.

In the source environment (dev environment) you make the changes to the workflow to change from id to guid, not in the acc environment. You’d expect an acc envronment to be overwritten before every major production update, so it would not make sense to do the work there.

In your Dev environment, I do not see why you would duplicate the workflow for this change.

For the duplicate key error message I get worried that your original workflow maybe has orphaned parameters, that were copied. If you cannot resolve this with editing in the dev environment and sending a new dataset, you may require specified help that would be better suited in an SR.

2 Likes

Hi Helena, we will work for now and in the future from de DEV environment in combination with the actual guids in expressions. Thank you for the reply and solution.