Hi, from an xRM perspective, one of the most important, missing features from the SDK is the ability to begin a transaction, put several insert/updates/deletes/SetState/whathever in it, then commit / rollback explicitly.
When you use Microsoft Dynamics as xRM, developing any kind of custom app on it, often you need to perform several operations through a custom UI (such as updating or creating several records providing progress feedback to the user) that must be consistent. If you are creating 100 records, and the 97th one fails for wathever reason, often you need to rollback all the changes made by the previous data...
Currently this is not possible, unless using some sort of compensating BL that won't work if the cause of the error is a network issue. In this case, data already in MSCRM will be in an inconsistent state, and must be recovered manually.
The only way, right now, to be sure that an all-or-none pattern is applied is to put the "maxi-operation" within a plugin, but it has some side effects: 1- if the plugin is synchronous, and it must execute many operations, it causes a server side timeout (and you can't do a thing about it) 2- no user feedback is provided until the whole operation is completed. The system looks like frozen, and the user is scaried 3- it locks database tables, so no-one else can execute writes in parallel.
It's a pain for ISVs that cannot grant the reliability of their own solutions out of the box... and it's a problem that custom dev faced and solved two decades ago 🙂
Having some sort of MSDTC working against MSCRM will be a biggest enhancement for the whole xRM platform. It will allow us to extend CRM in ways no one can predict, without the headache due to inconsistency and error management.
I think this really will be the killer feature that can allow MSCRM to become the best of breed of the xRM platforms.