Plug-ins in CRM 2011 – Useful points
Plug-in stages
- Pre validation
- Registered Plug-in run before the form is validated
- Useful if you want to implement business logic before the actual validation starts. i.e., Changes made in plug-in won’t be saved if the validation of the main system plugins complain because the changes are outside the database transaction.
- Ex – Some “delete” plug-ins. Deletion cascades happen prior to pre-operation, therefore if you need any information about the child records, the delete plugin must be pre-validation.
- Pre -operation
- After validation and before the values are saved to the database
- Post operation
- Plugin will run after the values have been inserted/changed on the database
Database Transactions in Plug-Ins
- Plug-ins may or may not execute within the database transaction
- You can check if the plug-in is executing in-transaction by reading the ‘IsInTransaction‘ property of IPluginExecutionContext
- Stages 20 and 40 are part of the database transaction while stage 10 and 50 may be part of the transaction
- If plugin throws an exception, every action done during the transaction will be rollback
Few more Points
- Whether a plug-in executes synchronously or asynchronously, there is a 2 minute time limit imposed on the execution of a (message) request.
- If the execution of your plug-in logic exceeds the time limit, a Timeout exception is thrown
- If a plug-in needs more processing time than the 2 minute time limit, consider using a workflow or other background process
- ‘Pre-operation’ operations that CRM will do will not be carried out in pre-validation stage.
- If you are deleting a record that has many-to-many relationship records with another entity; these relationship records will still be available in pre-validation stage, but not in pre-operation stage.
- “Target” entity (i.e., pluginContext.InputParameters[“Target”])
- It’s the entity on which plug-in registered
- It only contains “dirty” attributes. if you convert to early bound, the value of the unchanged attribute will be
null
Useful MSDN article
:)
Categories: CRM 2011, Plug-Ins
CRM 2011, Plug-in, pre validate, stage, Target, transaction
Can you elobarate with scenerios where Plugin stages triggered on what mode and respective messsages with simple example requesting
THANKS it helped me understand whats pre validation –
1) there are some pre operations performed by CRM before the core operation.
.i.e. deleting child records before deleting a parent in parent child relationship, when a parent is deleted.
2) in pre validation plugin we can write code to validate the pre operation and accordingly allow it or cancel it based on the validation error.