In this tutorial, I will learn about the pros and cons of upgrading Umbraco CMS compared to starting from scratch and rebuilding everything. You will learn which approach is the best for your sanity 🙃, which is quicker and when you should consider using each approach. Like any good product, Umbraco releases updates to improve the product, cater for new trends and provide security updates. Keeping up with new latches and upgrades takes time. Time most of us do not have. This means it's easy to fall behind the curve. If you fall so far behind that you are several version numbers behind, this poses the question. What's the best way to upgrade?

One important consideration is your future roadmap. In technology, shit changes rapidly. Rewind to around 2010 where all Umbraco sites were written in web forms. Those were bleak and often frustrating times 🖤 Around 2017, MVC was introduced like a night in shining armour 🛡️🛡️🛡️ In 2021 I expect most Umbraco sites will be written using .NET Core. If your site was built in Umbraco 4 in web forms and you've now decided to upgrade, you have a difficult choice to make. If you find yourself in this situation and you're unsure of whether you should upgrade, or start from scratch, then read on.

Before I go into some practical tips I'll recount a few of my previous 'upgrade horror' stories. I think anyone who has been building and maintaining CMS systems for a long time will have their own tales of woe and misfortune. One client I worked with, wanted to upgrade from Umbraco v4 to v7. The site in question was pretty big and had numerous sub-sites underneath it. The site was not complex but it had a lot of content. As they only had one developer, they decided to try and upgrade Umbraco. As Umbraco 4 was pretty obsolete at the time, they wanted to upgrade to version 6 first as they thought it would be easier and then upgrade to version 7 afterwards. In this particular situation, however, over a year later and they hadn't made it to version 6. They had numerous plug-ins that were not compatible with version 6. They had embedded marcos within their rich-text areas that would not work in v6. The whole process sounded like a bit of a nightmare for them.

I could understand why they when this route. Sometimes upgrading and fixing what you have seems less effort than starting from scratch. If you have limited development resources and you also have to support current business needs at the same time, upgrading sounds sensible. It's easy to be an armchair architect after the fact, however, after upgrading they did not have a nice and clean codebase. They had a lot of legacy areas in the code. A lot of custom database hacks were required to get things to work. Thinking in the future, it is highly likely they will also encounter issues moving from v7 to v8. Long term it would have probably been better for them to start from scratch and import the content.

Another example in which I was more hands-on, was a website upgrade from Sitecore 7.8 to 8.1. Sounds simple enough? It took me about 4 months to achieve it. Upgrading Sitecore is a different beast compared to Umbraco (MUCH MUCH WORSE), which is why working with Umbraco is a lot nicer, however, the considerations around upgrading compared to rebvuild and the same. Some upgrades can be easy, some can be nightmares.

Should I Upgrade My Umbraco Website Or Start From Scratch

The purpose of the last section is to hopefully make you aware that upgrading isn't all smiles and magical unicorns 🦄🦄 If you encounter plug-in upgrade issues, database issues, or coding issues, it can take a lot more time upgrading compared to starting from scratch. So before you decide if you want to upgrade site, I suggest you run through this checklist and ask yourself these questions:

How big is the upgrade jump? Depending on how far behind the upgrade path your site is important. If you have a complex site that uses a lot of community packages that are not supported in the latest version, start from scratch is a good option. If you just need a perform a minor upgrade, e.g. v7.1 to v7.11 upgrading is the obvious choice. If your CMS is only one version different, e.g. Umbraco v6 to v7, I'd assume that your upgrade wouldn't be too painful. If you want to go from Umbraco v4 to v,7 however, I think this would warrant a discussion if starting from scratch would be better.

Is there an architecture change? Is your site is written using web forms and you want to jump to MVC? Is your site .NET and you want to upgrade to Umbraco V9 and get .NET 5? Want to use route-hijacking, or the Umbraco models builder everywhere? If starting from scratch gives you some competitive tech advantage go for that!

Is the code base high-quality? Code rot is a part of life. The code you wrote 4 years ago, which might have been considered good when you wrote it, might be considered bad now. With new packages, libraries, and framework constantly being released. Is the technology your site uses flagging? Are any frameworks at the end of life in terms of support? When you upgrade, you will inherit all these past mistakes.

Is the design changing? If your design is staying the same, you have a better argument for upgrading rather than starting again. If you want to change your design and the user journey, you'll likely have to update and change a number of document types and re-create all of the views within the site. If you need to upgrade and redesign, a re-build is likely easier.

How many third-party Umbraco Packages are used? Using community packages can be a good development accelerator when using Umbraco. Obviously, the less code you need to write the quicker and easier the build will be. Most community packages are managed by normal developers. The risk of using these packages is that they can stop being maintained. A developer can give up on a project and it becomes obsolete. It's very common to see a package that's only supported up to version v6 or v7 of Umbraco. If you've used that plug-in extensively throughout your website, you now have a refactoring nightmare. You will have to change, edit, or delete any reference to that package on your site. It's for these reasons, I tend to advise clients to steer away from relying too heavily on Umbraco packages unless it's something that is written by a company or multiple people.

These factors will hopefully give you a starting point to help you decide if you should upgrade, or bite the bullet and start from scratch. To recap, my general advice would be:

  1. Always stay up-to-date. It's a lot easier to do numerous smaller incremental changes compared to doing a big bang once every few years.

  2. If you need to make a big jump do not include time as a factor. As I've said, I've seen upgrades take months and in one extreme case over a year. If you have a bad code base, your design is changing and you use numerous now-defunct Umbraco packages throughout your site, an upgrade might sound quicker, however, once you go down the whack-a-mole route of big fixing it could take much much longer than you ever planned.

Happy Coding 🤘