As confirmed at the Umbraco Gold Partner Conference we attended, Umbraco CMS will be aligning its updates to Microsoft .NET. This is great news, as now Umbraco’s security, framework and features will closely align to the most current Microsoft releases. This also ensures future Umbraco updates become more regular and more straightforward.
Many organisations on older versions of Umbraco are now looking to upgrade to the latest version to ensure they align to the new, more regular, and less time-consuming upgrade cadence. This is certainly something everyone on an earlier version of Umbraco should explore now. It really is a case of the longer you leave it, the harder it will become!
Upgrading from Umbraco 8 to Umbraco 10.
One of our most successful products, Codiance Higher, is built on Umbraco. We recently upgraded one of our partners, the University of Bedfordshire from version 8 to version 10.
A large part of moving from Umbraco 8 to Umbraco 10 is moving from .NET 4 to .NET 6. We’ll get slightly technical for a moment, though in essence we’re looking at a meaningful performance jump – that’s for marketing teams, content editors, ICT, website visitors… everyone!
One of the biggest performance updates in .NET 6 is the shift to asynchronous processes. .NET 6 (and more specifically ASP.NET Core 6) is built to be asynchronous from the ground up. As the name suggests, and without going too far down this rabbit hole, this allows for more processes to be carried out at the same time. Ie; whilst looking up information within a database, other processes can be carried out. Millions of micro-moments of additional bandwidth that amount to a meaningful jump in performance for everyone.
As the existing code for rendering views on web properties was not asynchronous, we’d strongly advise anyone upgrading from Umbraco 9 or earlier to work with a team already experienced in the upgrade processes. Any missed non-asynchronous code will result in a broken service!
Why upgrade Umbraco?
The most compelling reason to upgrade is ensuring the long-term support of the framework that Umbraco is built upon. We talk a bit more about the benefits in this article. Some of the key advantages are as follows:
More content features and design options
The new version of Umbraco has a greater ability to personalise the design of each page. In particular, the new Block Grid allows for greater flexibility whilst remaining simple to use and work with. Essentially, your content can look even richer without any added complexity to the end user.
A more secure logon process and system
It’s now possible to move your intranet to a more secure logon model, using external providers such as Azure Active Directory (as used in this instance) or Google, OpenIDConnect, Facebook etc...
Firstly, this makes logging on more streamlined with a single sign-on. So, once you’re signed into Azure, you don’t then need to sign in again for other applications. In the case of the University of Bedfordshire, Azure Active Directory allows for two factor authentication and ensures only those with the organisation’s credentials can access the platform. This in turn gives more control to the organisation’s ICT department.
Meaningful performance improvements
Beyond asynchronous processing, there are many far-reaching performance improvements with Umbraco 10: faster threading, more efficient networking, and major efficiency gains with swifter just in time compiling. All these changes have had an appreciable impact on performance.
It’s in the detail: identifying every bit of asynchronous code.
Upgrading from Umbraco 9 or earlier requires an additional level of expertise, patience, and time. It’s certainly manageable for a competent development team. It is, however, essential you know where to focus your efforts.
Many of our clients will operate multiple servers to ensure global geographic performance and to minimise downtime. With the upgrade to .NET 6 and its new Data Protection features, you need to implement additional features to ensure your web properties fully function.
A common issue would be search features not working. Ie, you sign in via one server and search via a second server (all done without the end user being aware). Without the correct implementation of Microsoft Data Protection, that second server wouldn’t recognise you as being logged in. From that user’s perspective, the search function would simply look broken. This is an area that can easily soak up development time if not addressed by an experienced team.
How we made the process simple and non-disruptive
This is the part that all our clients care the most about. How do we minimise disruption and have an effective upgrade process? For the University of Bedfordshire, beds.ac.uk is the connecting tissue between students, faculty and the university. It’s essential there’s minimal disruption and no downtime. There were three aspects that made the upgrade process straightforward and non-disruptive:
The team at Codiance did a brilliant job. This was easily one of the smoothest and least disruptive upgrades I’ve been involved with. Kudos to the team!
Peter Simpson-Leek, Digital Manager, University of Bedfordshire
1. Careful management of cutover
Cutover is the process of switching from one service to the newer one. In essence, we provisioned new Azure servers for Umbraco 10 to avoid any downtime. We then had an overlap of both servers running at the same time.
On paper this sounds straightforward enough, though with the new requirements of .NET 6, this required careful management and previous experience.
2. Maintaining a familiar back office
Despite the code for Umbraco 10 being entirely new, Umbraco have done a great job of ensuring the back office looks and feels the same. This avoids any steep learning curve with the switchover.
However we also had to ensure that every app worked and that the additional bespoke features that we added fully functioned on .NET 6 and Umbraco 10.
3. A close testing partnership and framework with end users
As with any complex organisation, it’s not enough to write a testing plan in isolation. We worked closely (in this instance) with the University of Bedfordshire to build a thorough testing plan that considered their specific workflows and behaviours.
The university was able to test things that we wouldn’t have considered. We in turn were able to build a systematic testing framework designed with their behaviours at the centre.
Things to look out for
No upgrade or migration is pain-free. We have a team of engineers well-versed in .NET and Umbraco. We’re both an Umbraco Gold Partner and Microsoft .NET experts. We’d recommend either getting in touch or working with another team of developers with similar expertise and experience. Here are a few things you should look out for during your upgrade:
There are pieces of functionality related to submitting data that were removed entirely in .NET 6; we had to find a way to replicate these. As an example, we had created customer search forms that needed to be fully rebuilt to align to Umbraco 10 and .NET 6.
Umbraco Forms has changed substantially in the newer version. The Form structure (as well as submissions) is now saved as a database rather than a file. This simplifies management of data, particularly if you’re using multiple servers. There’s no change from an end user perspective, however you must consider the setup of your infrastructure to gain all the benefits associated with .NET 6.
As briefly covered earlier, .NET 6 requires special configuration in a multi-server environment where requests from the same user may be directed to multiple machines (we discuss load balancing in some detail in this article).
Some workarounds focus on ‘sticky cookies’. This isn’t a good idea – it essentially defeats the purpose of the load balancer! Please get in touch to discuss a fix for your specific need.
So was it worth it? Yes absolutely. Feedback from the University of Bedfordshire has been very positive. It’s the smoothest upgrade they’ve done!
We hope this has been useful to you. If now is the right time for you to upgrade, please get in touch to see how we can help!