Deploy to production

You have successfully created, configured, and updated your project in Kentico SaaS. So far, we have only discussed the QA environment. Now let’s deploy your solution into PROD in Xperience portal.

Staging

The QA and UAT deployment environments are intended to ensure all the functionality, features, and key branding assets (e.g., logos) are present in your SaaS application. They do not provide sufficient performance, availability, and backup policies for projects with larger content editing teams.

Kentico provides an option to add a Staging (STG) environment to your service plan for this purpose. If your plan does not include the STG environment, the editors should prepare content in PROD.

See our documentation for information about deployment best practices and staging best practices.

Deploy from QA to PROD

While uploading a deployment package to the PROD environment directly in the Xperience Portal is possible, this feature is reserved for emergency fixes and special cases only.

Typically, we recommend you deploy to PROD from QA or UAT, optionally through STG, depending on your license tier.

When your solution is ready to move into the staging or production environment, the process is very straightforward.

To start, visit your Xperience Portal and ensure you are working under the correct project.

On the Deployments page, under the QA environment, open the Deploy to dropdown and select the environment you want to deploy to.

Deploying from QA to STG or PROD in Xperience Portal

The screenshot above shows the Deployments page for a Level 1 license with staging enabled.

Our example uses a Level 1 license without staging, so we will deploy straight from QA to PROD. If you had an additional STG environment, you would first deploy QA → STG, then STG → PROD. For all of these, the process looks very similar.

After choosing your deployment environment from the dropdown, you’ll see a pop-up warning that the application will be temporarily shut down for the duration of the deployment.

For production scenarios, you can enable zero-downtime deployments by ensuring your code supports read-only mode and using the -ZeroDowntimeSupportEnabled parameter when you initially create the deployment package.

Click Start deployment.

Just like in QA before, the portal queues your deployment before changing its status to In progress.

You may not see your queued deployment immediately. If you clicked Start deployment and the system navigated you back to the Deployments page, but you’re not seeing your deployment queued or in progress, do NOT click Deploy to → PROD again. Instead, try waiting for a minute or refreshing the page.

Otherwise, you may end up with several identical deployments queued, unnecessarily taking up resources.

You can watch the status and time elapsed on the Deployments page.

The above process applies if your deployment package is smaller than 2 GB. If it exceeds 2 GB, you need to use the custom restore feature instead to upload your data into each environment.

Check your progress

Once the PROD deployment finishes, just like before, you can see it in the Deployment history section with status and other information, and the option to download logs.

Successful PROD deployment in Deployment history

In the PROD section of the Dashboard, you can also see the new deployment info and a link to the Xperience Administration in PROD (using the system domain). If you click the link, you should be able to sign in to and browse your solution’s administration in the cloud production environment.

During the channels configuration step, we created default channels and domains for all of your environments, so now you should also be able to see your PROD live site through your production website channel default domain:

Set up custom domains - optional

Xperience Portal allows you to set up custom domains for the PROD environment.

System domains

Under Channels and domains → System domains, you can see system domains for all your environments:

  • Administration (append /admin to the domain to visit the Xperience administration for the environment)
  • Email sending
  • Email service

You cannot rename any of these domains, but you can add another domain as an alias for Email sending and Email service in PROD by clicking the green swap icon. If you have an existing valid domain you can use, feel free to give it a shot.

System domains for PROD

Channel domains

Under Channels and domains → Channels, you can define custom domains for each channel. Click the green globe icon on your Dancing Goat Website channel and select Add domain to open the wizard.

The wizard first asks you to choose a method:

  • Standard (recommended) – the simplest flow. Use it for a new site, or whenever a brief interruption is acceptable (the site can be down for roughly 30 minutes while the SSL certificate is issued).
  • Pre-validation (minimal downtime) – validates DNS twice so you can move an already-live site onto the custom domain without an outage.

Shows the two available of domain creation mentioned above

Notice that custom domains can only be added for production environments - PROD or STG; in our example (a Level 1 license without staging), only PROD is available.

The steps for both methods are broadly the same, Standard runs as a three-screen wizard, the Pre-validation method adds the extra pre-validation and final-switch checks that let you move an already-live site onto the custom domain with minimal downtime.

In general the “happy path” looks like this:

  1. Add domain - choose the method and environment, enter your domain name, and continue. Xperience Portal displays the exact DNS records you need to create.
  2. Configure DNS - copy the records to your DNS provider. For provider-specific steps (Azure, Cloudflare, Route 53, and others), see Configure DNS records for custom domains. Remember to wait a few minutes till your DNS configuration propagates before moving to the next step.
  3. Validate - back in Xperience Portal, confirm your records. The Portal validates them (DNS propagation can take up to 15 minutes) and automatically issues an auto-renewing SSL/TLS certificate once validation succeeds.
  4. Launch – once the domain is Active, select Set as main domain, then Apply changes in the information ribbon to restart the application and serve your site on the custom domain.

The following video shows using the Standard method.

If validation fails, the Portal lists the exact records that don’t match (showing expected vs. actual values) and offers a How to configure DNS records? button that opens our Configure DNS records for custom domains documentation directly. Correct the records with your provider, then click Validate again – see revalidate a custom domain.

Showing a status in Xperience Portal when a validation of certain DNS records failed

Track your DNS validation progress through the domain’s status. Tracking domain status in the Domains dashboard

For email channels, the flow is the same, with one extra choice: you select a Domain kind – an email sending domain or a service domain. When a new custom sending or service domain reaches Active, it replaces the previous default domain of that kind.

Continue learning

When you’re ready, move on to the next page: Where to go from here