Okay, so I’ll just start off with the disclaimer: None of what is mentioned in this blog post is officially supported by Sitecore. Sitecore has official upgrade documentation that you should follow if you’re looking to go the supported path.
With that over, I should also mention that this “quick” upgrade strategy is not new… Many Sitecore folks have successfully performed it in the past with previous versions of Sitecore. In this post, I’m going to detail the steps that are required if you’re moving from Sitecore 8 to Sitecore 9.
At a high level, here’s what we’re doing. A lot of steps are the same if you’ve done this before with previous versions of Sitecore.
- We start with a copy of the existing Sitecore 8 environment.
- Upgrade the databases in the Sitecore 8 environment to Sitecore 9.
- Install a fresh version of Sitecore 9.
- Replace the databases in the fresh Sitecore 9 instance with those you upgraded to Sitecore 9.
- Publish your code to the new Sitecore 9 instance.
- Migrate your xDB data from Sitecore 8 to the new Sitecore 9 instance.
And now for the details…
Make a Copy of your Sitecore 8 Environment
This goes without saying… You are going to essentially invalidate the Sitecore 8 environment with some of the next steps, so let’s not do it in an environment that is in use.
Upgrade the Sitecore Databases
The next step is to upgrade the databases from Sitecore 8 to Sitecore 9. Note that I was performing this upgrade to Sitecore 9.0.1, so the documentation I followed was for this particular version.
- Follow the steps in Chapter 3 of the upgrade guide. I skipped section 3.1.5 because I was upgrading from Sitecore 8. I also skipped section 3.1.7, because I was planning to move everything to a fresh Sitecore 9 instance (you’ll see that later in this post).
- Follow the steps in Chapter 4 of the upgrade guide. This is essentially the step that installs the upgrade package on top of your Sitecore 8 instance to get the databases upgraded to Sitecore 9. Some additional notes:
- I had to first install the version of the Sitecore Update Installation Wizard that is specified in the upgrade guide. Don’t forget this step.
- Pay attention to the config file analysis when you run the installation wizard. If you made custom changes to Sitecore’s configurations, you’ll need to note them and make them appropriately in your fresh Sitecore 9 instance. If you’ve been leveraging patch files for your configuration changes, there’s hopefully nothing for you to worry about.
After this, your Sitecore 8 instance should have the databases ready for Sitecore 9. Let’s keep going…
Install a Fresh Version of Sitecore 9
There are many resources online on how to do this. Kam Figy has a good post on how to get up and running quickly with Sitecore 9. We’ve been using SIF (Sitecore Installation Framework) for a while, so I stuck to what I know. Note: I encountered an issue with Chilkat .NET libraries and then realized that I had not installed the Microsoft Visual C++ 2015 Redistributable. Don’t forget that step.
The next steps assume that your Sitecore 9 instance is installed and working correctly.
Replace the Sitecore 9 Databases
After Sitecore 9 is installed and working, the next step is to modify the ConnectionStrings.config file in your Sitecore 9 instance and point the core, master, and web database connection strings to your newly upgraded core, master, and web databases from a couple of steps ago.
If you try to hit the Sitecore 9 website at this time, you’ll likely encounter some compilation errors that say that it can’t find the appropriate layout or rendering. That’s a good thing… Basically, your database is up to date, but it’s referencing code that you haven’t yet deployed, which brings us to the next and almost final step.
Deploy Code to Sitecore 9
In Visual Studio, publish your code to the new Sitecore 9 instance. Because there are fewer breaking changes between Sitecore 8 and 9, you should hopefully be fine. However, if you still encounter errors when you hit the site (I certainly did), you’ll have to debug and figure out what needs to be changed in order to get the website working.
Here are the gotchas we encountered in this step:
- We were using Lucene with our Sitecore 8 installation, and had defined custom fields and calculated fields for our indexes. We had to modify these configurations so that they used the Solr provider instead. There is sufficient documentation online to help with this transition.
- We had used our own customized version of Dynamic Placeholders with Sitecore 8. This code had been transferred over, but was not being called because Sitecore 9 now comes with Dynamic Placeholders out-of-the-box. You have a couple of options here:
- Change your Dynamic Placeholder code so that it uses a different name than “DynamicPlaceholder”. Then, change all of your code references so that they use the new name. Of course, this option means that you won’t be leveraging Sitecore 9’s Dynamic Placeholders and will continue to use the custom Dynamic Placeholder code.
- Remove your old Dynamic Placeholder code and let Sitecore 9 do its thing. You’ll have to make some changes to the format of your placeholders if you choose this option, but it’s not too hard. Richard Seal has a good blog post on how to accomplish this.
- We had a preview publishing target that was not displaying the content correctly. There were some errors in the logs about an index missing for that publishing target. I’ll create a separate blog post about this, but, essentially, Sitecore 8 allowed you to have a preview site without an index. This is not the case with Sitecore 9 and so I had to create one.
Once everything is done, you’ll have successfully upgraded your site to Sitecore 9!
Migrate xDB Data
If your previous Sitecore 8 installation was leveraging xDB, you’ll likely need to migrate that data to Sitecore 9. You’ll need to download the xDB Data Migration Tool along with instructions. Chapter 11 of the upgrade guide provides you information on how you can get that done.