Minimum Xperience by Kentico version
The minimum Xperience by Kentico version for new projects that can be deployed to the SaaS environment is 30.1.0. If you are using an earlier version, you need to update your project to the latest version before deploying it to the SaaS environment. Existing projects are not affected, but we recommend updating them to the latest version.
This page covers specialized SaaS deployment situations: deploying a large amount of data during initial deployments using custom restore and deploying emergency fixes. See Deploy to the SaaS environment for common deployment scenarios.
During initial deployments (e.g., when upgrading to Xperience by Kentico), you can use custom restore to deploy a large amount of data without being restricted by the 2 GB deployment package limit.
Custom restore enables you to transfer the database and storage files directly to the selected environment. It is required to upload both the database and storage files. Custom restore does not provide a way to deploy application libraries, so it needs to be used in combination with a deployment package.
During the process, you first upload the data to automatically created containers in Azure Storage that are separate from your SaaS environments. When you apply the custom restore, all existing data in the target environment's database and storage is overwritten with the uploaded data, and the target environment is unavailable while the restore itself runs.
The changes introduced by a custom restore are not propagated between environments with the deployment package. Transferring them to other environments requires a custom restore for each environment.
Only Tenant administrator and DevOps roles can manage custom restore sessions (create and close sessions, revoke access) and restore to all environments. Developers can restore to non-production environments (QA, UAT) and access the restore containers.
To perform a custom restore:
Back up your data.
Create a restore session. 2. Navigate to Data Management → Custom restore. 3. Select Create session.
Get access to restore containers.
Select Get access.
If you want to restrict access to the restore containers, specify an allowlist by entering an IP address or an IP address range and confirm with Get access. Otherwise, select Get access without entering any values.
Copy both SAS URLs (opens in a new tab) for the database and storage containers.
SAS URLs
You can't retrieve the same SAS URLs again. However, you can get new SAS URLs with Get access. The previously existing SAS URLs are still valid. To revoke all current SAS URLs, select Revoke access under Current session.
Within a session, the SAS URL pairs provide access to the same containers.
Upload the database.
You can use Azure Storage Explorer (opens in a new tab) to connect to the container:
Requirements:
db.bacpac.Upload storage files.
Connect to the storage container using the second SAS URL (as in the previous step).
Upload the files to be stored in Azure Blob Storage.
~/assets/contentitems is mapped to a container, its contents go under <container-name>/assets/contentitems/. If you're using the default configuration with the container named default, the structure would be default/assets/….The names of files and folders uploaded to the storage container must be fully in lowercase.
Restore to an environment.
Tenant administrator and DevOps roles can restore to any environment. Developers can restore only to non-production environments (QA, UAT).
Close the session.
Each session expires after a week. Once a session has expired, you can no longer upload data to the containers, but you can still restore the data you uploaded previously (up to 180 days from the session creation). Only one restore session can be open at a time.
Emergency deployments allow users in DevOps Engineer or Tenant Administrator roles to bypass the standard deployment flow and push critical fixes or version updates directly to environments other than QA.
The emergency deployment process is suitable for the following situations:
Handle deployments to Production with care
Do not use emergency deployments for fixes if you are not absolutely sure that you can deploy these changes to the PROD environment without first testing them on any other SaaS environment. If you have any environment other than QA and PROD available (e.g., UAT, STG), it is safer to deploy directly to this environment, test the fix, and then deploy to PROD from there.
Product versions across different environments
Keep in mind that downgrading a product version is not possible. Consider the following setup:
It is not currently possible to promote the package from the QA environment to the PROD environment. You need to first update the package in QA to an equal or newer version than PROD (30.2.0 or newer in this example).
Notes
-ZeroDowntimeSupportEnabled parameter if your application supports it to minimize deployment downtime.Notes
prod for Production or stg for Staging).# Due to a PowerShell issue, we recommended disabling the progress bar to boost the performance significantly.
# See https://github.com/PowerShell/PowerShell/issues/2138 for more information.
# Disable the progress bar
$ProgressPreference = 'SilentlyContinue'
# Upload the deployment package
$headers = @{ Authorization = "Bearer <PERSONAL_ACCESS_TOKEN_WITH_REQUIRED_PERMISSION>" }
Invoke-RestMethod -Uri https://xperience-portal.com/api/deployment/upload/<PROJECT_GUID>/prod -Method Post -InFile <FILE_PATH> -ContentType "application/zip" -Headers $headers
# Enable the progress bar
$ProgressPreference = 'Continue'Many private cloud projects use the AzureStorageProvider to map binary files to Azure Blob storage (opens in a new tab).
Xperience SaaS also uses Azure Blob storage, and those migrating from private cloud to SaaS must copy their files from their private storage container to that of the SaaS environment.
The container name in the destination SaaS storage must match what you have configured for SaaS storage mapping. Additionally, these configurations should map the same directories as the private cloud version, to ensure the same files reside in the container.
You can use tools like Azure Storage Explorer (opens in a new tab) and AzCopy (opens in a new tab) to directly copy your files between blobs without having to download them first. You'll need the following:
After the copy finishes, the binary files are in the SaaS environment’s Azure Blob storage and accessible to your deployed application.