I had my first crack at a CRM 4.0 to CRM 2011 upgrade, testing with a recent customer database that included examples of most CRM 4.0 customisation scenarios.
The end result? In a word: Good!
Here’s the process I went through:
- Built a CRM 2011 environment.
- Restored a SQL backup of my CRM 4.0 database onto my SQL Server.
- Ran the Import Organisation function in CRM 2011’s deployment manager.
- Went downstairs and had a cookie and a cola.
- Came back upstairs and found I had a wee problem, the import had issue with a field length I had changed on the Account entity. A quick post to the CRM 2011 beta forum and a little while later I had the answer (I was hitting a known bug that had been fixed but not yet released and a workaround was given).
- I restored my SQL database again, ran a quick SQL update to fix my issue, and then ran the import again.
- Thought about getting another cookie but multi-tasked for a bit instead.
- Import complete.
So what did I end up with?
I had a working 2011 system. My plugins fired, my workflows ran, my existing waiting workflows continued to wait, my jscript worked, even my associated views in my iframes still worked (kind of). Most surprising our interface still works. That, I thought would require at least a little bit of adjustment.
Jscript is managed in web resource libraries in 2011 so the upgrade process creates one library per entity and places your OnLoad, OnSave and OnChange code into functions and replaces those event handlers on the form with calls to these functions. Similarly your custom entity icons are uploaded as web resources and reference from there.
The bits that needed a bit of tweaking were:
- My custom button ISV entry has been migrated forward and still displays but could be presented much better, so a little tweaking of the ribbon xml will be required.
- I was hiding tabs using Jscript and that no longer worked. That was an unsupported customisation though so Microsoft were in their rights to break that. In 2011 I can simply tick an option to hide the tabs now so I can do that and remove my jscript.
- My associated views rendered in iframes appear ok but the ribbon control does not pick up the context of those entities when I click in them so I can’t add new records into those grids or work with the data that displays. Again, I was in unsupported waters and again this sort of layout is now supported out of the box with point and click.
Overall, if I was a user of the system I could have started using the system immediately without any post upgrade correction and I imagine that was the objective Microsoft set themselves, and were obliged to deliver especially for their CRM Online customer base.
My preference though would be to do a fair bit of tidy up (especially within the jscript libraries) and also run a review of the screen designs with my customer to make sure we leverage all the cool new features of 2011 and deliver the optimal user experience to our users. I think the process I would follow would be along these lines:
- Import CRM 4 Organisation
- Adjust any ISV config customisations
- Tidy up Jscript library structure
- Remove obsolete / broken jscript functions
- Run jscript functions through converter
- Remove any associated view iframes and replace with Sub Grids
- Tidy up forms (hide unwanted tabs, set default tab expand/collapse option)
- Adjust the sitemap to bring in new 2011 menu items
- Edit custom security roles (add permissions to new entities)
- Configure charts, dashboards, field level security, multi-forms, audit, filtered lookups, etc
I would need to give some consideration to how I complete these tasks in a test environment and then apply the changes to the database when I run the live upgrade. The export/import solution functions will be of use here.
I would also prefer to have the customisations loaded as a managed solution, and actually would probably prefer the customisations broken down into a number of managed solutions. I believe there is a means of doing this but I haven’t tried yet.
And, I would also like my web resources extracted from CRM and placed in a folder structure locally where I can place them under source control, make changes, and then upload updated files back into CRM. The SDK has a tool that helps here.