HomeDev GuideAPI Reference
Dev GuideAPI ReferenceUser GuideGitHubNuGetDev CommunityDoc feedbackLog In
GitHubNuGetDev CommunityDoc feedback


Describes how to move your solution from your local development environment, to a production-like environment in the cloud, or on-premises.

The typical setup for developing an Optimizely site is to use CLI tools to create a site and a database. The site can then be executed locally and debugged directly from the local IDE (for example Visual Studio), to make it easy for developers to build and test sites.

Deployment scenarios

During development, you will eventually want to deploy your solution to a production-like environment, to verify that everything works. In reality, you normally plan already from start how the website will be deployed, maintained, and hosted. Cloud-based options are great for optimizing resource usage. Depending on the choice for hosting and maintenance for the site, specific development considerations may apply. See Planning deployments.

Some common deployment scenarios include:

  • Cloud-based – Deploy to Azure Web Apps.
  • Cloud-based managed service – Deploy to Optimizely Digital Experience Platform (DXP).
  • Containerized hosting – Deploy to Kubernetes, for example.
  • Non-cloud – Deploy to Microsoft IIS and Windows Server.

Deploying to Azure Web Apps

In this scenario you deploy your site to an environment based on Microsoft Azure cloud components. Prior to deploying your site, you need to create and configure the various Azure components needed, including a Web App, an SQL Database, a Service Bus, and a BLOB storage.

See Deploying to Azure Web Apps.

Deploying to Optimizely DXP

Cloud-based solutions are powerful when scaling for site availability. However, managing the required components can be quite challenging. With Optimizely Digital Experience Platform (DXP), you let Optimizely manage the cloud components for you. You can choose to either deploy yourself through the Optimizely self-deployment portal, or let Optimizely do the deployment.

Deploying to a containerized hosting

When the application is to be hosted as a container the application must then be first built as a container image. See Creating a Docker file for a CMS application for an example on how to build aN Optimizely Content Management System (CMS) application in a docker image. The built image is then typically deployed to a container registry (for example Azure Container Registry) that can be accessed from the container orchestrator. Deploying to Azure Web Apps describes how an Azure Web app can be setup from a docker image.

Deploying to Microsoft Windows Server

You can also run your site "non-cloud" using Microsoft IIS and Windows/SQL Server. As a first step when moving towards a production-like environment, you can set up a local environment with IIS and deploy to that, to get an understanding of how it works. Moving to a full version of IIS also requires enabling of some features.

When deploying, you create the artifacts for the site, the database, and the application data, and then use XCOPY to move the files to the target server. See Deploying to Windows servers.

Creating an empty database

There is a CLI tool EPiServer.Net.Cli that can be installed and then used to create or update CMS databases.



To transfer content between CMS applications/databases you can use Optimizely's export/import feature. This lets you define which items you want to export to an export file. Data from the export file can then be imported to another application/database. See Exporting and importing data.

You can also let the application create the database schema directly on a remote server, given that DataAccessOption.CreateDatabaseSchema is true (which is the default value):

  1. Create an empty database on the SQL Server.
  2. Configure your connection string for your application (for example in appSettings.json) to point to your empty database.
  3. Start your application

Related topics

What’s Next