When I evaluate a CRM environment that has been in use for several years, it is very common to see many active workflows for the same entities. For example, in this case there are multiple workflows for the appointment entity.
The problem with this design is that with so many workflows triggered on create or status change of appointment, every time an appointment is created or updated, 20-30 processes are fired. If multiple appointments are created or updated simultaneously, this can cause a major performance impact on CRM, and potentially overload the Asynchronous Processing Service.
A better design is to group related processes together into the same workflow. For example, say you have two processes that run when appointments are completed–one for the Annual Review type of appointment, the other for the Tier 1 Account Review process. Instead of having two separate workflows, each with a check condition step, do one workflow with two conditional branches.
When should you consolidate?
- Same entity
- Same triggering events
Note–the CRM workflow designer tends to slow down when it has around twenty or more steps. This is one reason why you may have to split to more than one workflow process for similar processes.
In the case mentioned above, I was able to go from 50 workflows to 15.
good article, I think you can or could have a max of 6 nested if statements
there is no limit to how many nested statements you can have. Only the practical limit that the workflow designer gets really slow when you get a lot of them. I’ve had workflows with 10+ conditional branches with no issue.