Upgrade

Overview

The upgrade process is an important component of any complex system. That is why one of the goals in Sitefinity Cloud is to make the upgrade process as seamless as possible, without compromising on customization. 

You can upgrade your project in two ways:

  • Automated upgrade
    Use the automated upgrades that are provided with Sitefinity Cloud out-of-the-box and are executed with each new Sitefinity release.
  • Manual upgrade
    Upgrade the project whenever required, by following the upgrade steps manually.

Automated upgrades

With every Sitefinity Cloud setup, there is an automated process that upgrades the website for free. This process is executed every time there is a new Sitefinity version released. Following are the steps of the automated upgrade process:

  1. The Sitefinity NuGet packages for all projects in the website solution are upgraded to the latest version in a dedicated upgrade branch.
  2. (Optional) ASP.NET Core Renderer NuGet packages are upgraded to the latest corresponding version of Sitefinity in a dedicated upgrade branch.
  3. (Optional) A build operation is executed after the ASP.NET Core Renderer upgrade and a pull request is created to the main branch.
  4. A build operation for the Sitefinity application is executed after the upgrade.
  5. The upgraded project is deployed to a temporary upgrade environment and a runtime upgrade is executed using a copy of the Staging database (the database of which environment is used can be customized upon request).
  6. The upgrade changes are pushed in an upgrade branch and a pull request is created to the main branch.
  7. An email is sent to notify you that the website has been upgraded in a separate branch and you can review the changes in a pull request.
    It is up to your decision to accept and merge the changes.

    IMPORTANT: If you have made any customization in Sitefinity application that requires fixing API breaking changes in your code, this is not handled by the automated upgrade. You can fix any breaking changes in the upgrade branch and then proceed with the runtime upgrade - start the application and wait for the Sitefinity upgrade to pass - on your local development environment. This way, the configuration files are also updated and afterwards you can merge the pull request to the main branch. 

  8. Review the changes for Sitefinity application and merge the upgrade branch to the main branch.
  9. (Optional) Review the changes for the ASP.NET Core Renderer application and merge the upgrade branch to the main branch.
  10. After deployment to the non-production environment(s), test the website to make sure it functions as expected.
  11. Promote to Production.
    For more information, see Promote your code to the Production environment section in Deploy code changes.

IMPORTANT: If you are using the ASP.NET Core Renderer add-on, you have to deploy the changes to the Sitefinity application first for each environment, before you deploy the ASP.NET Core Renderer application on that same environment.

Premium automated upgrades

The Premium offering adds on top of the free automated upgrades. This option is best suited for customers who want to entirely offload Sitefinity upgrades to Progress. This option includes:

  • Additional Upgrade environment where the customer can test the upgraded project without interfering with the existing CD process. This allows for development to continue on the application with the old version of Sitefinity, while the upgraded version is still tested in a separate environment.
  • Progress Professional Services fixing custom code breaking changes after each upgrade.

Manual upgrade

Follow the steps outlined below to perform the upgrade manually:

  1. (Optional) Upgrade the ASP.NET Core Renderer application NuGet packages on a dedicated upgrade branch.
  2. (Optional) Build the ASP.NET Core Renderer solution and resolve any breaking changes.
  3. Restore the production DB on your local machine.
    For more information, see Import a database from a BACPAC file in your local development environment section in Backup and restore the database.
  4. Upgrade Sitefinity application NuGet packages on a dedicated upgrade branch.
  5. Build the solution and resolve any breaking changes.
    For more information, see API Changes in Sitefinity CMS.
  6. Change the connection string in the web.config to point to your local SQL server and DB.
  7. Run the application and wait for the Sitefinity runtime upgrade to pass.
  8. Commit changes and push the upgrade branch of the Sitefinity application.
    For more information, see Commit your changes and sync them to Sitefinity Cloud section in Deploy code changes.
  9. Merge the upgrade branch to the main branch of the Sitefinity application.
    For more information, see Create a pull request to push your code to the main/master branch section in Deploy code changes.
  10. (Optional) Commit changes and push the upgrade branch of the ASP.NET Core Renderer application.
  11. (Optional) Merge the upgrade branch to the main branch of the ASP.NET Core Renderer application.
  12. After deployment to the non-production environment(s), test the website to make sure it functions as expected.
  13. Promote to Production.
    For more information, see Promote your code to the Production environment section in Deploy code changes.

IMPORTANT: If you are using the ASP.NET Core Renderer add-on, you have to deploy the changes to the Sitefinity application first for each environment, before you deploy the ASP.NET Core Renderer application on that same environment. 

Sitefinity Cloud has been designed to ensure high availability and maximum uptime of your website. During the upgrade process, the production website will remain functional and accessible to visitors. Content editing also remains uninterrupted.

NOTE: In case the website does not start after the upgrade on Production, an automated rollback process will be triggered.

Backward compatibility between Sitefinity CMS and ASP.NET Core Renderer

When working with a three-tier application architecture, promoting each of the tiers to the next environment must happen seamlessly and with zero downtime.

For example, the changes made to the database layer must be backward compatible with the previous version of the Sitefinity CMS application, so that the two versions of the application continue to work with the new database model.

The same is valid for the second tier - the Sitefinity CMS application, where the publicly facing APIs must be backward compatible against the third tier – the ASP.NET Core Renderer application.
For this purpose, Sitefinity CMS is backward compatible with several ASP.NET Core Renderer versions back. This enables seamless upgrades with zero downtime.

For more information, see Sitefinity CMS documentation » Three-tier architecture.

Was this article helpful?