Continuous updates and multiple yearly releases is the beauty of Sitecore which makes Sitecore more powerful, extendable and useful for everyone. But regular update introduce the need for upgrade the version which we are currently using as Upgrading is inevitable.
Based on my Upgrade experiences, thought of penning some tips which can help you to have a smooth upgrade than it might otherwise.
In this blog post lets talk about Planning and Estimating the Sitecore Upgrade considering various factors. For execution and post upgrade steps, I will be penning another post.
Upgrade Planning Tip #1: Assess the current implementation, consider customization and modules
Most important part to plan and execute an upgrade is to assess the current system, list out all the current customization in place along with the Modules which we are using with Sitecore i.e. WFFM, ECM etc. These factors badly impact the upgrade execution and timeline.
We should thoroughly assess the current customization which are in place and plan to upgrade the additional module which are being used. There are possibilities that the customization may need code remediation or revamping once you upgrade from x version to y version of Sitecore. Best example is Lucene versions, upgrading from Sitecore 6 to 7 have major changes in Sitecore Lucene version which results as most of the Lucene syntax are not supported in the upper version. Hence we face multiple problems in Search module which need code remediation to have Luence implementation according to the latest syntax.
Thus assessing the current system and planning accordingly plays a major role in Site upgrade.
Upgrade Planning Tip #2: Setting up the expectations
When upgrading to x version of Sitecore we must be clear on the expectation with the target version features and functionalities. For ex. if we are upgrading to version 7.5 or higher we need to decide that whether we will using xDB or not, if yes are we planning to use a Fresh Mongo DB Instance or historical analytic data conversion will be needed. Cause setting up these expectations will help us in planning and estimating the upgrade in better way.
Upgrade Planning Tip#3: Deciding the target Sitecore version and upgrade path
We must be clear enough on deciding that to which exact Sitecore Version and Release we want to upgrade. It is always recommended to not to opt for latest version and release in the market but to opt for Latest -1. This varies from client to client but the idea behind this is, for the most latest release we are not sure about the existing bugs and issues. Whereas the Latest -1 have the old bug fixes and is more robust than the latest one. For example if you want to upgrade it to version 8.1, look for the latest update available, if its Update 4 which is recently released than go for Sitecore 8.1 Update 3 as a target version for upgrade.
Once the target version is decided, we can plan for the upgrade path as Sitecore Upgrade are incremental. From x version to y version, we need to upgrade the platform on all the major intermediate versions. For ex. if you are planning to upgrade from version 7.2 to 8.1, the path would be 7.2 -> 7.5 Initial Release -> 8.0 Initial Release -> 8.1 Initial Release -> 8.1 <<<Desired Update>>>
Upgrade Planning Tip#4: Upgrade Approach
This involves deciding that how you will be upgrading all the environments from Dev to Prod. There are multiple approach to plan for an Upgrade on various environments:
1. Infrastructure Uplift:
Most of the Sitecore Upgrade involves infrastructure upgrade which needs Hardware and platform upgrade along with Sitecore Version upgrades. In this approach we setup entirely new servers or VM with improved configurations compared to the current one. Hence we run the upgrade process on the new environment setup from Dev to Prod with temporary URLs to access those, once upgraded we switch the URLs between new and old environments and sunset the old environment. This helps us to upgrade both Hardware and Sitecore at the same time.
2. Parallel Instance Approach:
If there is no need to uplift the current infrastructure but Sitecore, we can opt for Parallel Instance Upgrade Model. In this approach we will be using the same environment but a separate IIS instance of the website. Each environment will have two website running, one with the current version and another on which we will be running the upgrade. Both will have their own dedicated databases, indexes, logs etc. Once the parallel instance is upgraded to latest version we can swap the URL and plan to sunset the old Sitecore version on the environment. This will helps us to minimize the downtime on production and other upper environments.
Upgrade Planning Tip#5: Client Specific Upgrade Guidelines
Every client have their own flavor of Sitecore implementation hence upgrade strategy will be unique for every client. It would be great if you can compile a client specific upgrade guideline which include all the topics mentioned above starting from current assessment to upgrade approach. Detail out all the complexities and risks which you can sense during the assessment. The guide must clearly depicts each step to be taken during the entire upgrade process.
Once the guide is ready, get it reviewed by various departments at client side which included Development, Support, Security, Licensing and other. Everyone should be on the same page and agrees to the Upgrade Plan.
Always remember a better planning leads to a smooth execution. In my next blog post I will be penning about Execution Tips and Tricks for Sitecore Upgrade.
Regarding Upgrade Planning, if you have any queries/concerns, please feel free to ask/comment on the blog post.
Hope this helps.