One of the main tasks in web maintenance support is to keep the site/app updated to ensure any operational and/or security issues are regularly fixed, new features are introduced to improve usability and performance, and compatibility is maintained alongside any other related technologies and the changes taking place within them.
For the Umbraco CMS development agency, this is one of the main challenges, as the way it evolves through the work of their core team and the wider contributions of the Umbraco users’ community, means that the impact of change usually goes beyond regular performance and security tweaks and therefore requires careful planning. This becomes evident when reviewing the actions required to complete upgrades between major versions of Umbraco.
This is somewhat easier to do on other CMS platforms such as WordPress, which is based on PHP and which has retained similar coding patterns through its different iterations. For Umbraco, however, the journey has taken them from WebForms to MVC and now .NET Core, meaning that upgrades regularly involve re-coding using different architectures and patterns.
In our experience, the flexibility that Umbraco provides for implementing business ideas into websites, more than compensates for the effort required to keep it up to date, and it remains one of the most extensible platforms available for web developers. It is open-source and combined with the latest version, it might soon become a truly platform-agnostic content editing solution.
Our Experience with Umbraco Upgrades
- V4: Zebedee started implementing Umbraco sites back in 2010, using Web Forms, and we have been involved in projects of all sizes based upon this system. This often required us to upgrade from V4.1 to the last V4 release, V4.11. and used to be a rather haphazard process, as some breaking changes could only be discovered after implementation. This meant that we had to take a very cautious and structured approach to what we did and how we did it.
- V6: Like every other web design agency, we skipped the flawed V5 version and started using V6 as soon as there was a stable version available. However, it wasn’t felt at the time, that there was an overwhelming case for upgrading all our clients from V4 as the interface was very similar, so although our experience with V6 upgrades was more limited, it was certainly more robust than our experience with V4.
- V7: Then came V7, with a new UI and MVC. This was the version where we felt the extensibility potential of Umbraco was fully realised and it therefore became an essential upgrade which we recommended to all our Umbraco-based clients. However, that said, it should be mentioned that this was hampered in some cases by the cost of refactoring custom codes and templates, which had been changed from Web Forms and user controls with code-behind to views with models and controllers. Also, the process had to be carefully staged to prevent any data loss caused by the changes in content pickers and the introduction of Unique Identifiers.
- V8: This is the current Umbraco version and, overall, the upgrade process from V7 has matured enough to be straightforward, with lots of support documentation to use as a reference. However, there is still the need to refactor a significant amount of code due to breaking changes resulting from the general Umbraco codebase spring-cleaning. Whilst this is labour intensive, which means it goes beyond routine maintenance, the good news is that once the code is ready and tested, deployments can be completed swiftly as it’s just a matter of updating the database and releasing the updated code. This will result in sufficient performance and code improvements to make it worth the investment.
- V9: This will be the new Umbraco from Autumn 2021 onwards and it makes sense to start planning for it, although, as with most Umbraco versions, it’s essential to wait at least for version x.1 before implementing it in Production. We will be testing the upgrade process soon, but we caught glimpses of it during Codegarden 21 sessions and it seems to be following the same upgrade process as V7->V8 (database update) with a refactoring of site code/templates required. This time, however, the change also requires rebuilding sites using .NET Core, so it’s a more significant process than with previous versions. With V9, there is also the tantalising opportunity to use development and hosting environments outside the Microsoft ecosystem which in turn might affect how upgrades are implemented and what they cover.
- V10: Also, during Codegarden, we learned that V10 will be released at some point during 2022, which again means preparing resources and time for a process that might be potentially challenging, as Umbraco consolidates its alignment with the evolution of the .NET platform.
Upgrading Umbraco process
The upgrading process has been evolving, in line with the codebase, and has gone from the need to manually replace assemblies and key folders to a more-or-less automated process based on NuGet packages, except for the changes between major versions which require upgrading the content database over a fresh Umbraco install, followed up by a rebuilding of templates and custom code. One key element which has remained from the early days, has been the use of file-comparison tools such as WinMerge to ensure the correct settings are preserved from version to version.
Other essential guidelines for Umbraco upgrades include the following tips:
- Never upgrade a production site without testing it first on a DEV instance (and in some corporate environments, also get it signed off on a UAT instance). For a production upgrade you can use Azure Deployment Slots to ensure the upgrade screen is not triggered by visitors’ requests. Or you can use the workflow provided by Umbraco Cloud.
- Always make a full back-up before upgrading – do not assume the process will be straightforward and without glitches.
- Additional planning will be required on sites that use Umbraco members, eCommerce features or load balancing, to ensure synchronisation issues are prevented.
- Unless it involves a security advisory, always wait before upgrading and keep checking Our Umbraco forum and the Issue Tracker on GitHub for any bugs reported by early adopters on the version you are targeting.
- Always first read the general upgrade guidance and the version specific upgrade guidance from Umbraco.
- When moving from a pre-historic V4 site, we recommend this classic guide (although bear in mind that your carefully crafted master pages and user controls will have to go).
- V7 to V8 migrations are more likely to succeed when using the ProWorks tools – make sure you read about them
- If unsure, practise first with blank sites with the starter pack, which can be downloaded back to V4.
- For a while, some sites have been developed based on a “headless” architecture which separates completely the hosting of CMS and public facing instances. When applied to Umbraco, this might simplify the upgrade process, as it reduces the impact over templates and custom code. We have recently used this configuration on projects for The Share Foundation and Royal Holloway, University of London and can confirm it certainly mitigated the stress over any potential loss of critical features.
We hope this guide helps, but we are always available to advise or implement upgrades on any Umbraco project. Contact us and we’ll be happy to discuss the most efficient upgrade path for you.