Deep dive into MSCRM 2.0
One of the sessions at TechEd that I had really been looking forward to was the session on MSCRM 2.0. I was never too impressed with version 1.2, and I’ve been hoping that its shortcomings would be addressed in the new version. And I feel they pretty much were. All in all I was quite impressed with version 2, and I’m looking forward to getting a closer look at it.
User experience
It is still a web application, which is something I was never too happy about. They have done a lot to make the UI nicer, but I would still prefer it to be a “real” application with a Winforms UI. But compared to version 1.2 there has been major improvements. Working in the CRM, especially when off-line, is very Outlook-oriented, which I used to think was a bit unnecessary. But after having seen the demos at this session I’ve pretty much changed my mind. The CRM data is available as folders in Outlook, and working with it from there seemed surprisingly natural. When working in Outlook it is very easy to link an email to the CRM, which allows the whole correspondence relating to a certain issue or customer to be tracked in the CRM. The same works for the Outlook calendar as well. Both functions work both off-line and on-line. The synchronization between the local data and the server seems to work pretty seamlessly, and you can also set up the synchronization to only get data that is truly relevant to you (filtered by sales region, for example). There is also a light Outlook client available, that doesn’t support off-line use.In the Web UI there is a lot more contextual information and per-item contextual actions available to the user than before. The context-aware actions are also customizable, and it seems most of the UI structure can be modified as well. Each user has a customizable workspace, where the user can select what role they want to work in, which will affects what information they see in their workspace. Overall, it all looked pretty nice. It’s difficult to say how good the actual CRM functionality is in it, since the demo was a bit too brief (and also quite technically oriented) for me to be able to form an opinion on that.
Microsoft has (not surprisingly) decided to move away from using Crystal Reports for reporting, and have instead used SQL Server Reporting Services instead. This means that the Reporting Services features like scheduling etc. are available as well. They have also built Excel integration into the product, and they showed a demo where they transferred a sales pipeline to Excel as a Pivot table and analyzed them further using the familiar functionality in Excel. So that could be used for ad-hoc analysis. It did not become clear if you can transfer more complex data to Excel, or if you always have to work with just one entity. Security applies to the reports as well, so you can create a report that shows sales leads, and the reporting system will automatically make sure that users only see those sales leads they have a right to see (for example they might only see those that belong to their own department).
One thing that was mentioned but not shown was the ability to send alerts to users when certain conditions are met in the CRM.
Customizing and extending the CRM
Here were some of the most exiting changes in the new version. First of all, it is now possible to add custom entities (YES! FINALLY!). That makes the product much more of a possible enterprise-level product. The really nice thing about making your custom entities is that they will be treated just like any other entity. This implies they can use the same security model and such, but one of the more major positive points with this is that they can be made to work off line as well.
Creating new forms for your entities is of course also possible. You do that using a Web interface, and I am a bit sceptical regarding how user friendly it is. One new thing on the form side is that there is a new IFrame control you can use, which will allow you to plug in any web page in the CRM. You can pass parameters to the web page, which will allow you for example to show a page that actually sits in you ERP and show the payment statistics for a certain customer. Another new thing, which is quite a major improvement, is that all fields in the forms now have an eventing model (YES! FINALLY!). This way you can hook up your own logic to fields, to handle stuff like formatting and such. Basically they have tried to add UI hooks and customization points wherever possible, which should open up more possibilities for advanced customizations.
The architecture has been changed quite a bit from version 1.2. They now have a cleaner object model, which is also strongly typed, which should simplify development since errors can more easily be caught at design time instead of run time like before. They are also moving more towards a SOA model, where they try to expose all entities through Web Services. This also works automatically for custom entities you create yourself. There’s also metadata about the entities that can be queried through an API.
During the talk it was also mentioned that they have done significant performance improvements, so the business layer should be noticeably faster now.
The workflow components have been improved, events and entities can fire workflows and among other new features is also the ability to adapt the workflow by adding your own assemblies that implement workflow actions. Data returned by those actions can be utilized in the workflow to determine how the flow should proceed. Quite nice stuff. They showed a demo where they had a workflow that was fired whenever you created a new customer, and that workflow went ahead and created a SharePoint site for managing information relating to the customer.
System requirements from MSCRM 2.0
They didn’t really go into this, apart from saying that it requires Outlook XP and higher. I had been afraid they would require Outlook 2003, but luckily that was not the case. Exchange is also required, just as before. They have made the integration to Exchange cleaner and more efficient.
The synchronization requires MSDE to be installed on the laptop, and it uses the Cassini web server (familiar from VS2005) to run the application locally. This means that it uses the same code base on both the server and the client, which is a very nice feature.
This was the first time I saw Steve Ballmer live. Sure, I’ve seen those “Developers, Developers, Developers!” and “I LOOOOVE this company” videos, and I didn’t expect him to act like that all the time. He didn’t do anything spectacular this time, except for chanting “Invest, Invest, Invest” at one point, but that didn’t involve any dancing.

) .NET was the primary development environment for 43% of developers, compared to 35% for Java. When the Java guys see Visual Studio 2005 that number is going to drop considerably.
passed out to everyone attending the keynote.