Next big thing is to assess the various Upgrade Approaches available and choose the right fit for your project. Depends on your current Sitecore version you have variety of Upgrade Approaches to choose from:
Approach #1: Incremental Upgrades:
In this approach Sitecore provides Upgrade Packages to install, Db scripts to execute, Configuration Files to merge/overwrite, Dlls to add/overwrite and some additional setting to be done based on the version you are upgrading to. Every Sitecore Version/Update comes with a Upgrade Package and instruction document describing the step to upgrade to that version.
In the incremental approach you start from you current Sitecore Version and perform manual upgrades to every major version released, all the way to your targeted version. For an example if your current Sitecore version is 6.5 and you want to upgrade to Sitecore 8.0 Update 3. In this case you will perform an incremental manual upgrade to every major Version to Initial Update. On a high level following will be the major tasks you will performing iteratively for every intermediate version upgrade:
- Setup and configure your project with current Sitecore version. Make sure everything is up and you are not missing anything in your solution.
- Follow the upgrade guide and perform the upgrade to the next version.
- Once all steps are completed make sure your project is up and running on the version you just upgraded to.
- Make sure to take backups both solution and database
- Proceed with the next version upgrade.
Incremental Upgrade are time consuming, tedious and error prone. But still there are some scenarios where your should/must go with Incremental Upgrade like:
- Your current or targeted Sitecore version is not compatible with the Express Migration Tool.
- Your solution is highly customized (especially DB Schema) that it can break the express migration tools processing.
- Your current Sitecore version is already too close with the targeted version. For ex you are on Sitecore 8.1 Update 5 and want to upgrade to Update 7.
Approach #2: Express Migration Tool
For the easy and faster upgrades Sitecore recommends the Express Migration Tool which is a module built by Sitecore and available to download for free.
The Sitecore Express Migration Tool is designed to help you migrate directly from older versions of Sitecore to the latest version of Sitecore Experience Platform. The Sitecore instance that you are migrating to is called the target instance. The Express Migration Tool:
- Migrates one Sitecore instance at a time
- Compares your Sitecore instance with a clean version of the same product
- Copies all of the items and files that have been changed to the target instance
- Lets you migrate custom modules and the Web Forms for Marketers module
The Sitecore Express Migration Tool copies items and files from one Sitecore instance at a time. The tool supports the migration of remote servers. In a generic setup, the source instance, the target instance, and the Sitecore Express Migration Tool can be on
three different computers.
In a scaled setup, you must migrate each Sitecore instance separately. Depending on your Sitecore solution, the strategy that you use to migrate a distributed environment can vary. One instance of the Sitecore Express Migration Tool can migrate one instance of Sitecore at a time. Therefore, in a scaled environment you can run the tool once and configure the remaining servers. The specific settings can vary from server to server. The following example shows the migration of four servers in a distributed environment:
Image and Description Credits: Sitecore Express Migration Guide.
Use the Sitecore Express Migration Tool to:
- Migrate the content management server (CM 1) and configure the remaining content management servers
- Migrate the configuration and file system of these content management servers (CM N)
You do not have to migrate the Core database, the Master database, and the user accounts on this server because it uses the same databases as CM 1.
For the content delivery servers:
- Set up and configure the new content delivery servers. Use the Express Migration Tool 3.1 to help you migrate the configuration.
To move the data from the CM servers, you must modify the connection strings to point to the migrated databases.
Approach #3: Mixed Mode
In this mode we use both approaches. We use Express Migration Tool to reach at a certain Sitecore version and then perform Incremental/Manual upgrade to the targeted version or vice versa.
Today (10/17/2018) when I am penning this blog post the best example I can refer to: If you want to upgrade to the latest available version of Sitecore 9.
Reason begin the latest Express Migration Tool Version 3.1 is ONLY supporting Sitecore Experience Platform™ 9.0 rev. 171002 (Initial Release) as the targeted Sitecore Version. So if you want to migrate to the latest Sitecore Version which is Sitecore Experience Platform 9.0 rev. 180604 (9.0 Update-2), you can use Express Migration tool to migrate from your Sitecore version to 9.0 Initial Release. And then follow the Incremental/Manual upgrade approach to be on 9.0 Update 2.
Note: The Express Migration Tool 3.1 only supports the migration of a SQL-based setup of the source and target instances. Oracle database setup is not supported in this version of the tool.
Summary and Takeaways
To summarize, I would say choose the best suitable upgrade approach for your project. As it is entirely depend on the type and complexity of the project you are upgrading. But from my personal experience I would say:
You can use Express Migration tool to either migrate everything (Database, Files, Configs etc) from Source to target instance. OR use the tool to migrate just Databases and manually migrate your code base.
I have performed 5 Sitecore Upgrades will the date and 3 of them were done using Express Migration Tool just for DB migration and code base was migrated manually. For most of my upgrades I:
- Used the tool to migrate the Databases ONLY from Source Sitecore Version to Target Sitecore version
- Then manually migrated the solution to the latest .Net Framework, migrated the code files etc
- Compared, merged and overwrite and Configuration files
- Cleaned up the solution by manually removing old patches we received from Sitecore Support
- Resolve all the compile and run time errors to make you solution up and running on the targeted Sitecore version.
Hence from my experience I must say this is the most commonly used and appropriate way to upgrade Sitecore. But again IT DEPENDS. 🙂
Hope it helps.
Thanks for the wonderful blog.
Here I have one question related to the mixed mode approach for upgrading Sitecore 8.2 version to Sitecore 9 update 2 :
Here in mixed mode what are the benefits of using Express migration tool for Data Migration, as per Sitecore upgrade document we have to execute the below scripts in the DB for database upgrade. Is there any difference using Express migration tool or executing scripts in DB for upgrade or do we have to perform both steps.
“SXP90_BeforeInstall” (for reporing DB)
“CMS9.0_BeforeInstall” (for core, master and web DB)
“CMS90_db_core_BeforeInstall” (for core DB)
Also, did you used UpgradeInstallationWizard to upgrade the Sitecore package ?
Thank you for reaching out Mayank, glad that you find this blog useful.
Since you dint mention on 8.2 which update you are on. If it is latest, the best bet would be to follow incremental approach to upgrade from 8.2 to 9.0.2.Better you avoid using the Express Migration Tool in this case. Neither for DB nor for Code/Files migration. Reason being if you notice the latest Express Migration tool 3.1 only supports 9.0.0 as target Sitecore version then again you have to follow the manual steps to upgrade from 9.0.0 to 9.0.2 i.e. running the scripts and using the UpgradeInstallationWizard.
If you are on initial versions of 8.2, you can use the tool to migrate the DBs to 9.0.0 and upgrade your code base manually to 9.0.0. Once you are there use the manual instructions provided to upgrade to 9.0.2.
Yes I have used the UpgradeInstallationWizard many times.
If you have more question please feel free to either post your question on Sitecore Stack Exchange ( https://sitecore.stackexchange.com/ ) or join Sitecore Community Slack ( https://docs.google.com/forms/d/1bAVDgP5-FhFh8ohPchHtifq-rz7EBkuPojAzdEofJyo/viewform?edit_requested=true )
Thanks for the quick reply.
If i am using Sitecore 8.1 update 2 then what will be the best approach for it? If i will use the migration tool for database and do code migration using upgradewizard, do i have to still execute the DB scripts in database.
Also, i was planning to do upgrade with production Sitecore instance and prod DB copy and restore it in production server once upgraded activity completed successfully.
Now, one question came into my mind if by that time upgraded activity will be completed and there will be some content change, do i have to again go for Database migration or is there any other way to do it (when content freeze availability is very less)
Please let me know your valuable suggestion.