As described here, I’m investigating what kind of problems to expect when we migrate a website from 5.2 to 5.3. As I got some time left today, I’ve decided to continue work on the project.
First I’ve investigated how the Migration module worked. This summary stood on SDN:
Data Migration module allows transferring data from the former versions of Sitecore to later Sitecore releases (see the Supported Sitecore Versions section). The module does not convert the databases; it extracts all the data and puts it into the new database.
The module requires two Sitecore installations working simultaneously – the source installation and the target installation. Please refer to the Module Architecture section for more information on how the module works.
The way the module works internally is described pretty simple to:
Data is transferred from the source Sitecore installation to the target installation via a web service. The web service is supplied with a special service package which is installed on the source installation. This service provides a kind of portal for data transfer.
That’s pretty clear enough. The other information described I’ve to install something on the original and the new environment. They have to work together. It would be good to use 2 machines outside a production environment to do the first tests. It can be done on 1 machine, but make sure you aren’t abusing other users(such as other developers or testers) with your huge amount of datatransfer, database and resource usage.
Rebuild of the code:
Figured out that the following order is one of the best ways to perform the upgrade. There are some really clear test moments. Before you read this, read carefully to the end of all lines, so you don’t mix up some steps, even ignore the stop here’s…
- Don’t mix up your head! Don’t refactor, change your code to XSLT, etc. You’re not building a framework buddy, you’re upgrading that’s worst enough! 😉
- Build against new Sitecore.Kernel. There are some little API changes, some may brake the code. Don’t go and change heavy code stuff. The maximum of lines you’re allowed to change is 2 at once. When other functionality is broken, comment it out and add a ‘FIXME’ as a comment.
- Locate Media Library usage. No code should be broken, but mark them again for fixing.
- Migrate config-values to Site Specific Configurations or the way you want to setup your config values.
- This is the moment you’ve to focus on your content. Stop here until your test-content-migration with production data is ready.
- Resume when your content is proper migrated(will come back later on that). It’s time to test some general functionality. What’s good what’s bad? List ‘m and make sure which are already marked in code with FIXME’s. Make sure that collaboration such as Sharepoint connectors, LDAP’s, custom data-adapters, etc, aren’t migrated yet. But do count those as problems.
- The FIXME’s are mostly not that bad to solve. Walk trough the list and apply changes. Stop with a single one when it takes more then 15 minutes to resolve it. You have do re-look later. After that, fix the stuff and update your buglist(should be at maximum 25% of what it was).
- Integrate and activate modules one by one. Do the same for custom adapters. Do the same as the other fixes, when it does take more then 15 minutes to make it build or fix it, leave it for later. List the issues you’ve got.
- Retest everything, especially the issues which are on the list. Is everything still an issue?
- Now take a look at your issuelist. Those are the real migration issues. Predict how much time the issues will take. Group similar. Check release notes of the modules and Sitecore. Ask for help on the Sitecore forum.
- Retest everything. You should be ready now.
Although these 11 steps seem to be enormous, I can tell you, migrating to 5.3 isn’t a hell at all. I didn’t need to rewrite any code to get everything building. I also only had to change Media Library code on 5 places. Migrating my configuration values seems to be a piece of cake, haven’t been able to do that.
Tomorrow it’s up to the content and after that the LDAP module, dtSearch and the Forum module. When finished, it might be good to write something about deployment. But should not rush as I don’t know what the day of tomorrow brings to the small city of Zaltbommel in the Netherlands.