Greenfield Camunda 7 project futureproof towards Camunda 8 - How to replace CDI expression business logic

Hi all,

I am starting a new project right now and I would like it to be as futureproof as possible towards future migration to Camunda 8. I discovered this recommendation (Deciding about your Camunda 7 stack) in the docs and I can say I really like the concept. However I am missing a substitution to one core feature I have been using since the beginning and that is the ability to call expressions on CDI injected beans to handle some business logic.

To be specific I usually implement custom business logic for usertask assignment. This business logic takes into account several parameters decided using data loaded form database. For example working hours, worker substitutions, task id, process instance history.

<userTask id="task" name="Task" camunda:assignee="#{assignmentManager.getAssignee(execution)}" />

But with the recommended approach I do not see a way how to reproduce this.

The only approach which would be compatible with the paradigm of this approach would be to always call a service task first which decides the assignee using External task and then call the User task itself. But I don’t like this approach because it would make the process definition harder to read and I see the readability of the models crucial in order to be able to discuss it with the business users :disappointed_relieved: and that is one of the biggest advantages of using Camunda in the first place.


Other approaches which came to my mind always needed either custom extension to process engine (which seems as NO NO in the paradign) or a container managed installation with a service deployed alongside Camunda.

Could you someone please advice whether I am missing something and my head is stuck with the old paradigm or point me in a direction which could lead to a solution (I know I can always switch back to embedded engine but that does not seem to be futureproof enough).



Hello @Adam_Klima ,

the problem you describe is one thing we are facing quite often I would say: Missing listeners (in Saas). If you would use zeebe as self-managed engine, you could use the event stream (exporter - > Elastic Search by default) to trigger calculations and do custom stuff.
The service task before a user task is a workaround that happens if urgently required but I also do not like the idea as well :stuck_out_tongue:
I am sure there is something in the bushes for Camunda 8 Saas, so I would advise you to proceed with what you are currently doing.

I hope this helps


Thanks for the reply. I will keep doing what I am doing right now and keep an eye on the news in Camunda 8 new versions.

1 Like