Microsoft CRM woes
I have wasted the entire day trying to troubleshoot some idiotic issues with MS CRM.
Allow me to reiterate my previous statements on Microsoft CRM. It is an application built on feet of clay, marketed as a development platform and undeserving of consideration as anything but a vanilla install.
Highlights of the CRM:
- Trying to update an entity via web service call. You get a "platform error" message. You have no input why this is not working working. Fast forward a day, turn out a PreUpdate callout is throwing an exception, which the CRM just swallows and abort.
- Trying to update an entity via web service call. The call completes successfully, but the update is never made. Fast forward a day or two, turn out a PostUpdate callout is throwing an exception, which the CRM will swallow, appear to continue and discard the supposedly saved data.
- Changing the type of a field in the entity will ensure that you cannot do an import/export from that entity ever again. You have to do a reinstall.
Yuck!
Comments
Quick question for you, Oren: Are you working against CRM v3 or v4?
I'm curious because my company is about to begin an integration effort against v4 and I am somewhat hoping that your troubles are against v3 and that v4 might resolve some of them. ;)
v3,
I had a look at v4, and that is not significantly improved in any way that matters.
It is still a very bad dev platfrom.
Avoid it as much as you can
Sorry to hear about your troubles. I don't have any Callout code in front of me or the 3.x SDK reference handy, but on pre callouts the return value is an enum that determines the action on exception. Setting this to the appropriate value should bubble up an error message (set in a ref param to the pre callout) to the user. Getting the exception in a Post callout is trickier, but if memory serves, unhandled exceptions in pre or post callouts did find their way to the Event Log. Oh! Don't forget to set the appropriate on error action in the Callout config file (again my memory is useless--see the SDK reference). That setting might cause exceptional conditions to get swallowed as you describe. Also, you can use the CRM Diag tool (http://blogs.msdn.com/benlec/pages/microsoft-crm-support-tools-download-page.aspx) to easily turn on tracing, which will give you reams of visibility into what's going on.
If you have debug permission on the CRM server executing the code you can attach the debugger and and step through callouts. If you don't, you probably want to get familiar with Stunnware's debugging proxy generator (http://www.stunnware.com/crm2/topic.aspx?id=LocalCalloutDebugging).
Lastly, if it turns out I'm full of it on the exception bits, please forgive my memory. I haven't touched CRM for over a month and I am wired to be incapable of remembering the details. But I honestly don't remember having trouble tracking exceptions once I got the hang of it.
Feel free to e-mail me if you want to talk specifics about any of the above.
Rex
Rex,
I am well aware of all those options. But they all end up being very awkward steps to a very simple problem, bubble up the error.
Error handling is a core and critical part of any application.
You are NOT allowed to make it any harder than it absolutely has to be.
MS CRM makes it a LOT harder.
Its been interesting reading your comments about MS CRM, we were thinking of evaluaitng it and things like salesforce but now I'm glad that we didn't go too far with it!
Pah - welcome to Hell ... SharePoint also is great at swallowing errors and exceptions, and never letting anyone or anything know that it did ...
I suspect that the teams that did MOSS and CRM worked closely together and never understood what exceptions are and why error handling is so intrinsic to any well designed applciation, let alone one on which developers are expected to base their code!
Thank you, Avende! Do you have any alternative to recommend? My company is about to use it as well. I think it will be a lot of effort to create an application with similar features.
I would recommend ACT! for small to medium size CRM requirements - agree with preceding comments RE MS-CRM - whilst highly customisable, I consider it uneconomic for all but the most substantial, high volume, vertical requirements.
Personally delivered a MS-CRM instance integrated with SharePoint and I wouldn't relish the prospect of having to do likewise again - in development terms it went out with the Ark - javascript for front-ending an app? Not Nice. You'd arguably be better off/get a cleaner result using Visual Studio and writing your own app from scratch once you take into account the masses of stuff you mandatorily have to work around in order to get MS-CRM to accomplish anything. Not a well thought out piece of software.
Comment preview