Plug-in or Workflow?
With the CRM 4.0 enhancements to the plug-in and workflow engine as well as the introduction of the web based workflow designer I've seen many CRM developers asking the same question: When should I use workflow vs. plug-ins? The answer is “depends”; the right approach is determined by the characteristics of the task that you are trying to accomplish. The following matrix gives you my take on this:
Requirement |
Plug-in |
Workflow |
Needs a synchronous action to happen before or after an event occurs |
x |
|
The same piece of logic will be executed for different events and possibly on different entities |
x |
x |
The logic needs to be executed while offline |
x |
|
Needs elevation of privileges (impersonation) |
x |
|
Needs to execute on events other than assign, create, update, setstate |
x |
|
The process/logic may take a long time to complete or will be a persistent process (multiple long running steps) |
x |
|
Needs an asynchronous action |
x |
x |
End users will need to modify the process logic |
x |
|
Child sub processes will be triggered |
x |
It may also be the case that a combination of both approaches is required; a plug-in can trigger a workflow and a vice versa. From the above matrix the most decisive factor is whether you need a synchronous action or not; if you do, plug-ins are the way to go, if you don’t then other factors need to be pondered.