Inside Microsoft CRM


Just getting started

So this is something I've wanted to do for a long time. As one of the founding team members behind Microsoft CRM I've had an interesting viewpoint into the development process and the product itself. I've been reading the CRM public newsgroup since its start and have really noticed a number of places where we could have done better (and, by the way, we do know about a lot of the issues and are trying to address them in upcoming releases, but we had to get this thing out the door).

Sure, the product has some issues, but overall it's pretty cool. I'm not going to play it up all the time, there are just too many holes that need to be patched. But for a V1 product with a small team building on untried technology I think we did a pretty damned good job.

I suppose I should give a little background on myself so people might think I know what I'm talking about. I was over in Carpoint when the DP team spun off to create a productize version of DP5.0 called MerchantPoint (we liked to point at things in those days). The only relevance to CRM I supposed was that I was responsible for taking the MP v1 code and making it work for one of our larger automotive partners. What a pain in the ass that was.

When the company finally decided to get serious about CRM the MP team was completely spun out of MSN and was sent over to bCentral. I went with as a software architect and vowed to dump the entire code base and start from scratch. ...and that's what we did. MS-CRM was designed from the ground-up to follow a web service model and to be hosted on bCentral (along with any other ASP willing pay for the honor of running the platform).

Depending on my mood I might go into the culture clash that happened when, what was then known as ClearLead and bCentral Customer Manager merged with a small team from Office-land called SBCM...

Well, as many people know, MS-CRM doesn't really work all that well in a hosted environment. There are a number of reasons, but the biggest one was that during the MBS acquisition days (GPSI and Navision) MS-CRM got a reset and we decided it would be an on-premise solution. So, here we are building a product that was originally designed for data centers - hence the heavy MSFT stack and prerequisities - but tweaking bits here and there to run on a smaller scale. Oh yeah, and by smaller we actually meant to make both the web-based client and the Outlook-based client use not only the same code but the same binaries. It's some of those tweaks that are so painful to get around today (Security descriptors in the database... seemed like a brilliant idea at the time, and if we could have made it really performant and transparent it would have been great, but...)

Well, anyway, welcome to what might be an interesting combination of history, lessons learned, and an insider's look at Microsoft CRM (and yes, I'll try to address some of those issues like removing attributes from shipped entities).