Follow this guide when upgrading your Cloud project to a new major version of Umbraco CMS.
Are you using custom packages or code on your Umbraco Cloud project?
Make sure any packages you use are compatible with the latest version of Umbraco. Additionally, confirm that your custom code works with the updated .NET version.
Breaking Changes
Be aware of any Breaking changes introduced in the latest version of Umbraco CMS to avoid issues during the upgrade.
Before upgrading your Umbraco Cloud project to the latest major version, you must consider the version your project is already on. This will impact the upgrade flow you will be following.
When upgrading from an STS version, you must start by upgrading to the closest Long-term Support (LTS) major. If the version you are upgrading to is an STS version, you can upgrade to that version, directly from the closest LTS. You can upgrade directly if there are no LTS versions between the current one and the one you are upgrading to.
Refer to the Long-term support and EOL article to learn which versions are STS.
Start by upgrading to the closest LTS. In this case, that is Umbraco 13. After that, you can upgrade directly from Umbraco 13 to Umbraco 15.
When upgrading from an LTS version, you must start by looking at the versions between yours and the one you are upgrading to. Is there another LTS version in that line, you need to upgrade to that version first.
Refer to the Long-term support and EOL article to learn which versions are LTS.
Skipping upgrades to STS versions, like 11 and 12, means you will not receive warnings about obsolete features. We recommend keeping the Breaking Changes documentation handy to avoid any surprises.
Between version 10 and 15, there is another LTS version: Umbraco 13. The first step is therefore to upgrade to Umbraco 13. After that, you can upgrade directly from Umbraco 13 to Umbraco 15.
Look for the "Upgrade from/to Umbraco xx" boxes. These boxes contain important information about any extra steps needed for a specific version.
Follow the requirements for local development.
An Umbraco Cloud project running the latest version of your current Umbraco CMS installation
The latest .NET version is installed locally.
At least 2 environments on your Cloud project.
A backup of your project database.
Directly from your environment. See the Database backups article,
Or clone down, restore the project, and back up the local database.
Go to the project in the Umbraco Cloud portal.
Navigate to Configuration -> Advanced.
Scroll down to the Runtime Settings section.
Ensure that the latest version of .NET is enabled for each environment on your Cloud project, by selecting it from the dropdown.
Clone down the Development environment.
Build and run the project locally.
Log in to the backoffice.
Restore content from your Cloud environment.
Open your project in Visual Studio - use the csproj
file in the /src/UmbracoProject
folder.
Right-click your project solution in Solution Explorer.
Select Properties.
Change the Target framework in the General section of the Application tab.
Choose the version you set on your Cloud environment in Step 1.
Go to Tools > NuGet Package Manager > Manage NuGet Packages for Solution.
Navigate to the Updates tab.
Select the version you are updated to, and follow the instructions:
The following packages are no longer needed on the Cloud platform:
Umbraco.Cloud.Cms.PublicAccess
Umbraco.Cloud.Identity.Cms
The references to these packages need to be deleted.
Open the .csproj
file.
Locate PackageReference
for the packages mentioned above.
Delete the references and save the file.
Update the following packages:
Umbraco.Forms.Deploy
Umbraco.Cms
Umbraco.Deploy.Cloud
Umbraco.Deploy.Contrib
Umbraco.Forms
Umbraco.Cloud.Cms
Umbraco.Cloud.StorageProviders.AzureBlob
Update the following packages:
Umbraco.Forms.Deploy
Umbraco.Cms
Umbraco.Deploy.Cloud
Umbraco.Deploy.Contrib
Umbraco.Forms
Umbraco.Cloud.Cms
Umbraco.Cloud.Identity.Cms
Umbraco.Cloud.Cms.PublicAccess
Umbraco.Cloud.StorageProviders.AzureBlob
Microsoft.Extensions.DependencyInjection.Abstractions
From Umbraco 13, the Umbraco.Deploy.Forms
package has been replaced with the Umbraco.Forms.Deploy
package.
Remove the Umbraco.Deploy.Forms
package.
Update the following packages:
Umbraco.Cms
Umbraco.Deploy.Cloud
Umbraco.Deploy.Contrib
Umbraco.Forms
Umbraco.Cloud.Cms
Umbraco.Cloud.Identity.Cms
Umbraco.Cloud.Cms.PublicAccess
Umbraco.Cloud.StorageProviders.AzureBlob
Microsoft.Extensions.DependencyInjection.Abstractions
Install the Umbraco.Forms.Deploy
package.
Update the following packages:
Umbraco.Deploy.Forms
Umbraco.Cms
Umbraco.Deploy.Cloud
Umbraco.Deploy.Contrib
Umbraco.Forms
Umbraco.Cloud.Cms
Umbraco.Cloud.Identity.Cms
Umbraco.Cloud.Cms.PublicAccess
Umbraco.Cloud.StorageProviders.AzureBlob
Microsoft.Extensions.DependencyInjection.Abstractions
If you have more projects in your solution or other packages, make sure that these are also updated to support the latest .NET.
Ensure the Unattended Upgrades feature is enabled.
Run the project locally.
Log in to the Umbraco backoffice to verify the upgrade has happened.
If you cannot login locally via Umbraco ID and URL shows /umbraco/authorizeupgrade?redir=
then this is because of the Unattended Upgrades setting. It must be set to true
and deployed to the environment before the upgrade.
Ensure that the project runs locally without any errors.
Push the changes to the Cloud environment. See the Deploying from local to your environments article.
Test that everything works with the upgrade on the Cloud environment.
We highly recommend that you go through everything in your Cloud environment. This can help you identify any potential errors after the upgrade, and ensure that you are not deploying any issues onto your production environment.
The next part is to deploy the upgrade through to the production environment.
For major upgrades that include content migrations, the process can be extensive. This is especially true for sites with a large amount of content. In these cases, it is recommended to:
Initiate a content freeze to prevent changes during the migration.
Rearrange your custom hostname(s) to minimize website downtime.
You can choose between two approaches based on your needs:
"With content freeze" - involves a more detailed upgrade process but helps reduce downtime on your live website.
"Without content freeze" - provides a more straightforward process that may result in longer downtime on your live website.
The following steps involve setting a content-freeze period on the project. It is recommended to coordinate this with your content editors before moving forward.
Delete any environments between your left-most (Development) and production environment.
Create a new environment from the production environment.
Initiate content-freeze.
Import content using either of the following approaches:
Restore content and media directly from the backoffice.
Use the Database Backup and Restore functionality in the Cloud Portal.
Follow Step 1 for the next environment in the line.
Deploy the upgrade from the left-most environment (Development).
Verify and test all functionality on the upgraded environment.
Remove your custom hostname(s) from the production environment.
Ensure the hostname(s) no longer point to the production environment.
Add the custom hostname(s) to the new environment (Staging).
Follow Step 1 for the production environment.
Deploy the upgrade to the production environment.
In case the upgrade is taking longer than expected, restore a backup of the Staging database on the production environment.
Cancel content-freeze.
Verify and test all functionality in the production environment.
Remove your custom hostname(s) from the Staging environment.
Ensure the hostname(s) no longer point to the Staging environment.
Add the custom hostname(s) to the production environment.
Deploy the upgrade to the next environment.
Verify and test all functionality on the upgraded environment.
Deploy the upgrade to the production environment.
In case the upgrade is taking longer than expected, restore a backup of the database on the production environment.
Verify and test all functionality in the production environment.