CRM 2011 Plugins:
Welcome to transactions !
One of the thing about CRM 4.0 plugins is the inability to automatically rollback actions
when an exception occurs during a business process.
To illustrate this,
imagine a plugin which creates a contract, then a line of contract. If the code
throws an exception during the creation of the contract line, you need to take
care yourself of deleting the contract that have been created: of course, you
need the contract AND the contract line, not just the contract.
In CRM 2011, you can
now register your plugin in new stage (see below). That means that you can
register your plugin in a transaction (if using stage 20 and 40) and whenever
you plugin throws an exception, every action done during the transaction will
be rollback. In our previous example, that means tha the contract will be
deleted automatically by the application.
Event
|
Stage Name
|
Stage Number
|
Description
|
Pre-Event
|
Pre-validation
|
10
|
Stage in the
pipeline for plug-ins that are to execute before the main system operation.
Plug-ins registered in this stage may execute outside the database
transaction.
|
Pre-Event
|
Pre-operation
|
20
|
Stage in the
pipeline for plug-ins that are to execute before the main system operation.
Plug-ins registered in this stage are executed within the database
transaction.
|
Post-Event
|
Post-operation
|
40
|
Stage in the
pipeline for plug-ins which are to execute after the main operation. Plug-ins
registered in this stage are executed within the database transaction.
|
Post-Event
|
Post-operation
|
50
|
Stage in the
pipeline for plug-ins which are to execute after the main operation. Plug-ins
registered in this stage may execute outside the database transaction. This
stage only supports Microsoft Dynamics CRM 4.0 based plug-ins
|
Transactional features in Crm 2011
One of the very handy
features in Crm 2011 is the fact that plugins now execute within the
transaction, not outside it anymore. This means that if an error occurs within
a plugin that fires on Create of a record, the actions done by the code gets
rolled back AND the actual record created to trigger this event is also rolled
back. So no more duplicate records if a plugin fails and the user, thinking
that the record did not create, resaves the record.
No comments:
Post a Comment