Upgrading Sitecore is easy! Upgrading custom developed code in the Sitecore can be more challenging.
Sitecore is well known for being "easy to upgrade". This is absolutely true for its base code. Sitecore comes with 2 packages for upgrading - 1 for Database and 1 for Code. Using the built-in wizards, you can perform changes to the configuration files and *presto* you are ready to go with a new version.
Easy enough. Especially if you did not build custom external components.

Upgrading Sitecore with Custom Developed Code

But what if you have used customizations and have built custom external components? How does this change your upgrade approach? There are a couple different upgrade approaches you can take to identify code deltas, which is critically important to facilitating a successful Sitecore upgrade.

At 1ClickFactory, we have tried two different upgrade approaches when upgrading large Sitecore solutions:
1. Removing custom code -> Upgrading Sitecore -> Applying custom code
2. Isolating custom code -> Automating Sitecore upgrades through wizard -> Fixing post upgrade bugs
Using either approach, all solutions ended up with the desired Sitecore version, but the paths to achieve it varied.
We noticed some interesting patterns emerging when reviewing the upgraded work. While we used different methods, what we were really interested in, were deltas from the standard Sitecore code.

Quickly Identifying Standard Sitecore Code Deltas

How can you identify deltas quickly? We used the following formula:
Git + a clean Sitecore version + the solution we desired to upgrade
With a couple of PowerShell scripts, we could see the custom code challenges that awaited us.

How to Use Sitecore Code Deltas

Why do we spend time upfront identifying Sitecore Code Deltas? These deltas help us accomplishing the following:
1. Scope the upgrade project and provide an accurate fixed price,
2. Identify key challenges in the upgrade project to anticipate and plan for those.
In reality, those are the keystones in any upgrade process. To be successful, you want the current version to be as close to the original as possible.
Therefore, before you run the first upgrade script, you should clean up your customer’s solution. Your team can do it or the team doing the upgrade can do it.
In-depth know-how of the specifics of the customer’s Sitecore solution is extremely important. It can be the difference between making the right decision, the first time, which can speed-up the upgrade delivery process, and the wrong decision, which would increase scope of the upgrade project.

How to deal with different Sitecore upgrade challenges

1. Upgrading Sitecore on upgraded versions
In most cases, you end up upgrading the solution, which has been already upgraded to an earlier Sitecore version. This often creates additional noise, making it harder to spot missing elements and easier to miss changes that need to be made to become compatible with the most recent version. This occurs most often with Sitecore JavaScript files. Then you have to clearly decipher between recognizing a custom change or a Sitecore change? One tool that can aid you in identifying the origin of the original customization is Git. Git and a 3-way compare tool will display the differences between (1) original, (2) upgraded original, and (3) current. This takes the guess work out of where the change originated so you can make the best decision, whether to modify, remove much of changes or just discard.

2. Upgrading Sitecore Modules
When upgrading Sitecore Modules, we recommend separating data records for Sitecore modules (WFFM, ExM, ...). While keeping historical data usable when migrating 1 or 2 major versions, it becomes both tricky and challenging to keep these data records from cluttering.
To preserve the historical data, without causing undue challenges moving forward, we suggest separating these data records for historical purposes, but not adding it to your new marketing automations moving forward. Sometimes the best solution is to leave the existing items as is, not removing modules or updating, as this can be the cleanest solution to move forward with.

3. Upgrading Search in Sitecore
Search in Sitecore took different shapes as the product evolved. Compared to an incremental version upgrade, search re-implementation can significantly reduce upgraded time and complexity when the base version and the desired versions are known.
If the customer has a great dependency on search and indexes, there are alternate upgrade approach:
1. Create a substitute code for the solution, not to break and upgrade it without search implementation.
2. When upgrade is complete, go back to the latest search suggestions and reimplement it.
If you are thinking, re-implementation, yes, you are right. For the most part, this is in most cases a re-implementation.

Get the Sitecore Upgrade Service

Sitecore Upgrade Kick-off workshop
Through our experience working on Sitecore Upgrades at 1ClickFactory, we have added quite a few automations to 1Clickfactory Sitecore upgrade engine. To provide an even more complete picture of the upgrade solution, we always perform a Sitecore Upgrade Kick-off Workshop to align on outcomes and discuss challenges we see ahead. We highly recommend it, as it serves both developers and business-as-a-platform to review the existing solution and kick-start innovative ideas.

Sitecore Upgrade Testing

Quality assurance for every upgrade is critically important. To ensure it, we use a mix of different automation tools, as well as experienced engineers and are always open for new suggestions on how we can improve it. We noticed that automatic crawlers spot smaller presentation bugs, while automated page previews through Content Editor and/or Experience Editor do a decent job in catching up Sitecore errors. Partner testing in the Partner environment with real-life content usually can catch all the rest.
While there are some challenges in upgrading Sitecore solutions with custom components, as explained above, these can be overcome. That is why, at 1ClickFactory we fix price such projects, making it less risky for you to add this additional value to your customer sites.

Special thanks to Vilius Vaicekauskas for contributing to this blog post.

To learn more about our Sitecore Upgrade Services, please email us at services@1Clickfactory.com