Migrate a Sitefinity CMS project

Supported versions of Sitefinity CMS

A new project in Sitefinity Cloud is always provisioned with the latest officially supported Sitefinity CMS version.
Projects that have already been created in Sitefinity Cloud are subject to an upgrade cycle, so that they can benefit from the latest product functionality and security updates. For more information about upgrading a Sitefinity Cloud project, see to Upgrade the project.

Procedure

Existing Sitefinity CMS projects, hosted on-premises can be migrated to Sitefinity Cloud. To do this, you should complete the following steps:

1. Upgrade to latest officially supported version

You must first upgrade the project to the latest officially supported version of Sitefinity CMS. 
For more information about upgrading Sitefinity CMS, see Upgrade procedure.

2. Turn on Auto storage mode for configurations

For more information, see Auto-storage mode of configurations

3. Enable Multisite

In Sitefinity Cloud, all the projects must use multisite. You must have the Multisite module activated.

NOTE: Sitefinity 13.1 unifies single-site and multi-site modes and allows you to seamlessly manage transitions from single-site to multi-site, without changes in the end-user experience. 
For more information, see Multisite implementation changes in Sitefinity CMS 13.1.

NOTE: In case you need to combine more than one Sitefinity single-site projects in one multisite project, see Migrate a single site to multisite with SiteSync

4. Migrate search service to Azure Search

Default search provider in Sitefinity Cloud is Azure Search. It is automatically configured when your project is part of Sitefinity Cloud. 

Because there are some specifics for Lucene search, before moving to the cloud, you can configure and test your project using procedure Setup Sitefinity CMS to use Azure Search.

5. Install Sitefinity Cloud NuGet package

Install Progress.Sitefinity.Cloud NuGet package in your project.

This will automatically install all dependencies.

6. Add Azure AD authentication support

  1. Modify your web.config file in the following way:
  2. To enable integrated Azure B2B login, add the following configuration in ~/AppData/Sitefinity/Configuration/AuthenticationConfig.config:

7. Use transformations for different environments

If your project uses different configurations per environment, Sitefinity Cloud supports this setup. The transformations are automatically applied during the Continuous delivery process. 

To update your project for that, use procedure Manage configurations in Continuous delivery pipeline.
You can use one of the approaches described in procedure Use different website configurations for different environments.

8. Add the configurations required for Sitefinity Cloud

  1. In the AppData/Sitefinity/Configuration/SystemConfig.config file, configure the output cache profiles in the following way:
  2. Configure the required healthchecks in AppData/Sitefinity/Configuration/SystemConfig.config file:
  3. To enable the crawlers to be able to crawl the site, add the following in the web.Production.config file:

9. Configure the Webhook module

Sitefinity Webhook module is used in Sitefinity Cloud for invalidating CDN cache.

  1. In Sitefinity CMS backend, navigate to Administration » Modules & Services and enable the Webhook module.
  2. Click Administration » Settings » Advanced » Webhook » Webhook events.
  3. Add Telerik.Sitefinity.Web.OutputCache.IOutputCacheInvalidationEvent and save your changes.

For more information, see Webhook.

10. Configure the WebSecurity Module

Add the following configuration:

  1. In Sitefinity CMS backend, navigate to Administration » Modules & Services and enable the WebSecurity module.
  2. Ensure the following configuration is in place:
    <webSecurityConfig xmlns:config="urn:telerik:sitefinity:configuration" xmlns:type="urn:telerik:sitefinity:configuration:type">
    <httpSecurityHeaders>
    <responseHeaders>
    <add value="default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.googleapis.com *.gstatic.com  www.google.com *.google-analytics.com apis.google.com connect.facebook.net ajax.aspnetcdn.com https://www.youtube.com/iframe_api platform.twitter.com https://syndication.twitter.com/ https://s.ytimg.com https://publish.twitter.com *.twimg.com platform.linkedin.com http://platform.stumbleupon.com/1/widgets.js https://cdn.insight.sitefinity.com https://dec.azureedge.net/ munchkin.marketo.net *.eloqua.com js.hs-scripts.com js.hs-analytics.net *.en25.com cdn.ampproject.org *.msecnd.net; style-src 'self' 'unsafe-inline' *.googleapis.com *.gstatic.com netdna.bootstrapcdn.com kendo.cdn.telerik.com www.google.com https://cdn.insight.sitefinity.com https://dec.azureedge.net platform.twitter.com/css/ *.twimg.com; font-src 'self' fonts.gstatic.com kendo.cdn.telerik.com netdna.bootstrapcdn.com data:; img-src 'self' *.azureedge.net *.gstatic.com *.googleapis.com *.google-analytics.com platform.tumblr.com web.facebook.com www.facebook.com https://delicious.com www.redditstatic.com www.linkedin.com https://syndication.twitter.com https://static.licdn.com/scds/common/u/images/apps/connect/sprites/sprite_connect_v14.png https://dec.azureedge.net https://*.insight.sitefinity.com https://*.dec.sitefinity.com pbs.twimg.com platform.twitter.com/css/ *.twimg.com data: blob: *.eloqua.com track.hubspot.com; media-src 'self' *.azureedge.net data: blob:; child-src 'self' https://platform.twitter.com/ https://syndication.twitter.com/ https://www.youtube.com/ https://player.vimeo.com/ https://w.soundcloud.com/ apis.google.com accounts.google.com staticxx.facebook.com www.facebook.com web.facebook.com badge.stumbleupon.com; connect-src 'self' accounts.google.com https://*.insight.sitefinity.com https://*.dec.sitefinity.com *.mktoresp.com *.visualstudio.com;" name="Content-Security-Policy" config:flags="1" />
    </responseHeaders>
    </httpSecurityHeaders>
    <redirectValidation trustedLocations="https://login.microsoftonline.com" />
    <cookiesProtector enable="False" />
    </webSecurityConfig>
  3. Ensure all the needed scripts used in your project are not blocked in the WebSecurity Module configuration.

11. Verify the deployment package

In a Continuous Delivery pipeline, the package deployed to an environment is always built by the same process for each deployment. 

To check the package that will be deployed in Sitefinity Cloud, run the following MSBuild command locally, in the Developer Command prompt of Visual Studio:

C:\MySolutionFolder>msbuild MySolution.sln /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true  /p:AutoParameterizationWebConfigConnectionStrings=False /p:TransformWebConfigEnabled=False /p:MarkWebConfigAssistFilesAsExclude=false /p:PackageTempRootDir="" /p:PackageLocation="C:\BuildPackageFolder" 

NOTE: If you do not see some files in the output package, make sure the necessary files are included in your project

12. Ensure that the project uses relative URLs

When you build a URL in your code, make sure that it uses a relative path and not an absolute one, because it may lead to rendering wrong domain on the site.

Supported Connectors and Add-ons

Sitefinity Cloud projects support all connectors and add-ons that can be purchased with Sitefinity CMS. For more information, see Sitefinity Cloud Tiers.

Was this article helpful?