Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
The Sustainability Dashboard is designed to help users monitor and improve the environmental impact of their websites on Umbraco Cloud. The dashboard provides insights and metrics related to carbon footprint and sustainable practices, enabling organizations to align their digital presence with their sustainability goals.
Daily CO2 emission calculation: The dashboard is updated daily with new CO2 emission estimates.
Historical data: The dashboard tracks monthly and yearly CO2 emission estimates, allowing for trend analysis over time
Comparative analysis: Users can compare CO2 emissions across their projects to identify high-impact areas and improvement opportunities.
To estimate CO2 emissions from the infrastructure deployed to host Umbraco Cloud websites, we use Cloud Carbon Footprint (CCF). followed by dividing CO2 emissions among websites according to their shared resource usage.
In order to improve the estimate for websites that are running in shared pools we divide emissions based on metrics/usage coefficients.
In its current iteration the sustainability dashboard shows CO2 emissions emitted by backend compute infrastructure - Azure App Service. The dashboard does not show emissions generated by networking, frontend website impressions or emissions generated by the Umbraco Cloud Service.
The summarized algorithm currently in use is:
Cloud Carbon Footprint(CCF) provides a comprehensive methodology for estimating CO2 emissions in their documentation. We use CCF to calculate the Sum of environmental CO2 emissions.
For websites on shared infrastructure in Umbraco Cloud, we calculate a usage coefficient to improve the accuracy of CO2 emission estimates. This coefficient divides the CO2 emissions of the shared pool among the websites using it.
The usage coefficient for a website is based on metrics such as:
CPU
Memory usage
The usage coefficient for a database is based on DTUs used etc.
Website Resource Usage: For compute resources we evaluate metrics such as CPU, memory or disk, for storage resources DTUs and disk are considered. Total Pool Usage: The total resource usage of the shared pool of resources.
Log in to Umbraco Cloud: Use your credentials to log in to your Umbraco Cloud account.
Navigate to the Organization view
Navigate to the Dashboard: From the left menu, select Sustainability.
Monitor Regularly: Regularly check the Sustainability Dashboard to stay informed about your website's carbon footprint.
Implement Recommendations: Follow up to date sustainability best practices.
Optimize Resource Usage: Analyze websites resource usage and identify high-consumption areas to optimize resource usage
In this article you can find information about security on Umbraco Cloud.
All Umbraco Cloud websites use HTTPS by default. Both the default {projectName}.{region}.umbraco.io and custom domains are protected by periodically renewed certificates issued by Cloudflare. This service is offered as part of Umbraco Cloud for all plans.
Custom certificates can be used with all custom domains. Please refer to our Managing Custom Certificates documentation.
As of April 2020, we've deprecated support for TLS 1.0 & TLS 1.1.
TLS 1.2 is now the default supported TLS protocol going forward.
On the Security page for your cloud project, you can change the default settings for both TLS and HTTP.
Learn more about how this in the Manage Security article.
Umbraco Cloud Websites support the following TLS ciphers in this order:
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
TLS_DHE_RSA_WITH_AES_256_CBC_SHA
TLS_DHE_RSA_WITH_AES_128_CBC_SHA
The different Ciphers can be enabled or disabled on the security project settings page for your Cloud projects.
It's possible to enforce HSTS: HTTP Strict Transport Security by adding the headers to your website. This grants Umbraco Cloud Websites an A+ security rating on sslabs (March 2020).
You can add the header by modifying system.webServer/rewrite/outboundRules section in your web.config:
Alternatively this can be done in Startup.cs inside of the ConfigureServices method with the following C#:
This adds the "Strict-Transport-Security" header telling browsers how long the browser should not make any HTTP requests to this domain. In this example 63072000 seconds or 730 days is two years.
In order to integrate older external applications to access Umbraco Cloud Websites you might have to modify the TLS support in the .Net application.
For ASP.NET applications, inspect the <system.web><httpRuntime targetFramework>
element of web.config to find the version of the .NET Framework your application is using. .NET applications on .NET 4.7+ are using the OS specified TLS protocols. In Windows 8 & 10, Windows Server 2012 & 2016 TLS 1.2+ is used by default, therefore no actions necessary. .NET applications lower then 4.7 require updates to ensure they can communicate using TLS 1.2 by default.
More information specifically from Microsoft about .Net applications and Transport Layer Security (TLS) support can be found in Microsoft's official docs. For other application frameworks/languages we encourage to lookup their respective documentations.
Naked HTTP urls without HTTPS are supported but not used by default on Umbraco Cloud Websites. If you'd like to keep using HTTP, which we strongly discourage, you'll need to remove a web.config transform as specified in Rewrite rules on Umbraco Cloud
Umbraco Cloud supports both HTTP2 and HTTP3 protocols.
By default, all ports are closed to secure them against external attacks. This is done for all ports apart from 80 (HTTP) and 443 (HTTPS).
Some scanning tools will report some other ports open due to Cloudflare's default support on those ports. However, all traffic on those ports is managed by Umbraco Cloud and never reaches your project. You can read more about the Cloudflare Network Ports in the Cloudflare Documentation.
Umbraco Cloud offers a multitude of features allowing you to block access to different resources.
Basic Authentication allows access to the Backoffice & Frontend of Umbraco Cloud Websites for authenticated users only.
Basic authentication will not be available for projects running Umbraco 9. It is available for Umbraco Cloud version 10 (and newer) versions, however, the users are currently unable to exclude IP addresses for authentication using the allowlist feature.
IP based list allowing access to Frontend & Backoffice
IP based list allowing access to website database
On Umbraco Cloud sites, you will find an ARRAffinity cookie. This is not sent over HTTPS, and might to some, look like a security risk.
It is not a security risk. This cookie is set by the load balancer (LB) and only used by the LB to track which server your site is on. It is set by the software we use (Azure App Service) and only useful when your website is being scaled to multiple servers. In Umbraco Cloud we cannot scale your site to multiple servers so the cookie is effectively unused.
There is no vulnerable data in this cookie and manipulating or stealing this cookie can not lead to any security issues.
In the future, the cookie will be set to HttpOnly
on Umbraco Cloud to conform to best practices. This does not mean that there's anything wrong with the current way it is set.
For more information see the related GitHub issue.
You can block people and bots(e.g. a malicious scanning bot) from accessing your website by adding their IP addresses to a deny-list.
The following rule can be added to your web.config file in the system.webServer/rewrite/rules/
section.
For anyone using the 123.123.123.123 IP, this will result in them getting a 502 error. You can choose your own error.
Here you can find information about getting started working with Umbraco Cloud.
Umbraco Cloud is our hosting option for your favorite Umbraco CMS. Built on the Microsoft Azure Cloud and encompassing web standard approaches, Umbraco Cloud is familiar to Umbraco's new and old users. With Umbraco Cloud, there are no limits to what you can accomplish. Anything you can do with Umbraco and web technology you can do with Umbraco Cloud.
Umbraco Cloud offers shared hosting in 3 different plans:
Starter
Standard
Professional
You can learn more about quotas that are put in place to ensure the stability of your website.
The easiest way to get started with an Umbraco Cloud project is to take a 14-day free trial. The project is automatically created and you are ready to get started within a few minutes.
Since we set up the entire project, we recommend that you get to know your project before you start building.
To start working with and building your site, you can either work directly in the backoffice on the Cloud environment or you can clone down the project to your local machine.
To create a project in Umbraco Cloud Portal:
Log in to the Umbraco Cloud Portal with your credentials.
Click Create Project.
Select Umbraco Cloud from the list of projects.
Choose a Plan Selection as per your choice.
Choose the Umbraco version for your Project.
Enter the Project Name.
Choose a Region.
Choose a Project Owner.
Add a Technical Contact to your project.
Click Continue.
Verify that everything looks correct.
Check I have read and agree to the terms and conditions and the Data Processing Agreement.
Click Create Project.
When you create a:
Trial project for the first time - a unique project name will be generated for you.
Project from the Umbraco Cloud Portal - you will get to choose a name for the project.
To rename the project file and folder, see the Renaming the Project file and folder article.
An Umbraco Cloud project name is unique, which means if a project with the name you choose already exists, you will need to choose another name before you can create the project.
Once a project is created, you can view its overview in Umbraco Cloud Portal:
Log in to the Umbraco Cloud Portal with your credentials.
Select your Project from the Projects dashboard.
Click on Overview from the left side menu..
The Overview menu consists of:
Environments:
From the environment overview, you can see the environments you have for your project.
You can access your project's frontend, the backoffice, access kudu, or clone it to your local machine.
You can also add new environments from here.
Team:
From the Team Overview, you can see the following:
Who is a part of your project
What kind of access do they have on the project
Umbraco Backoffice User Groups
Add or remove users from the project
Pending invites
View and add technical contacts
Summary:
The summary page consists of the following:
Name - The name of the project.
Alias - The alias of the project.
Plan - The plan selected for the project. Available plans are Starter, Standard, or Professional.
Region - The region the project is hosted in.
Payment status - The payment status of the project.
Created by - The name and email of the project creator.
Creation date - The date the project was created.
Umbraco Cloud takes care of installation, infrastructure, and security. You will also get the tools to work with your project in the Cloud or locally. Local development starts with cloning the project down to your PC or Linux/macOS.
When you are ready to show your work to the world, Umbraco Cloud provides a safe deployment mechanism that lets you publish to the web. When you have changes or updates to your site, Umbraco Cloud follows the process of moving, testing, and deploying your changes to your public site.
Umbraco HQ offers a full-day training course covering best practices for developing with Umbraco Cloud. The course targets frontend and backend developers who currently work or plan to work with Umbraco Cloud.
Explore the Umbraco Cloud Developer Training Course to learn more about the topics covered and how it can enhance your Umbraco development skills.
On Umbraco Cloud it is possible to setup an Organization. An organization is handy if you are managing many projects for different customers. It is also handy if you need to manage permissions for multiple users (such as developers, content editors etc.).
With an organization, you get an overview of all projects and members that are part of it. You can also manage payment methods for projects, as well as many other functions outlined on this page.
In the following sections, we will go through the different options that are available to an Organization:
Are you interested in getting an organization, or need a project added to a different organization? Please reach out to the Support Team in the small chat box in your project overview.
In the Information section of the Organization, you can find all the details about your Organization. If there are any changes to your details, you can change them here.
In the Members section, you can view current members, pending invites, and see the Multi-Factor Authentication (MFA) status for the Members of your Organization. You can also set up different permissions for your Members, such as Read, Write, and Administrators for your organization by adjusting their Roles.
Members added to your organization can see different details about their organization based on the user group they are added to. Currently there are three different groups, Read, Write and Admin. Below you can see what each user group has access to under the organization they are a part of.
Organization Members with Admin Access can do the following in the organization:
Update the organization's information
Invite others to the organization
Invite Users to project under the organization
Edit organization team
See pending invitations
See organization information
See organization projects
See payment history
See subscriptions
See organization Members
See payment history
Handle Multi-Factor Authentication (MFA) for users
Handle payment methods
Change permissions for Members
Remove role from users
Organization members with Write Access can do the following in the organization:
See Organization information
See Organization Members
Invite to the organization
See pending invitations
Organization Members with Read Access can do the following in the organization:
See Organization information
See Organization Members
Being a Member of an organization does not give access to any projects under it. To get access to a project under an organization, you need to be invited to the project. This can be done by either someone who is already part of the project or an administrator in your organization.
When working in organizations on Umbraco Cloud, as a company, you can enforce a certain type of Multi-Factor Authentication (MFA) method for members.
Administrators of Organizations on Umbraco Cloud can enforce MFA for specific members of their organization.
To enforce a certain MFA for a member, follow these steps:
Go to the Organizations tab under your user on Umbraco Cloud.
Go to the Members tab under Organization.
Go to Multi-Factor Authentication.
Find the member that needs to have MFA enabled.
Click on the cogwheel and select the Enforced MFA Method from the drop-down list for the member.
Once it has been enabled, the next time the member logs in, they will be forced to setup the chosen Multi-Factor Authentication (MFA) method. It is possible for an administrator to reset the authenticator app settings for members of the organization.
In the Projects section, you can get an overview of all the Projects that have been created in your Organization.
It is possible to see the plan, project status, payment status, creation date, region, and number of environments for each of your projects.
As an administrator, you can invite members of your organization to the different projects under the organization.
In the Access Rights section, you can get a list of all the Access Rights your Members have to each Project in your Organization.
In the Payment Methods section, you can view the payment methods for your organization. From here, you can add or delete credit card details for your Organization. These payment options will be used, when you create new projects under your organization.
In the Payment History section, you can see the payment history for your organization.
In the Subscriptions section, you can see the current active subscriptions that are running under the Umbraco Cloud organization.
The Umbraco Cloud Portal helps you manage your Umbraco Cloud project. From here, you can view and manage all your Cloud projects in one place.
When you log in to the Umbraco Cloud Portal, the projects dashboard gives an overview of all your Umbraco Cloud projects. Here, you can view all the projects you've created or have been added to as a team member.
You can see the project's environments, usage for each project, and which plans it is on. You can also see whether it is a baseline or baseline-child project.
In the top-right corner of the Umbraco Cloud Portal, you will find:
Create New Project - Allows you to create more projects using the plan you wish and a project will be ready for you within a few minutes.
Notifications - You can also see notifications for your different projects. For example: if your project has been automatically updated or if an upgrade has failed.
Profile - Manage projects, subscriptions, pending invites, organization information, profile details, view release notes, and log out of the portal.
In the right-side corner of the Umbraco Cloud Portal, you can enable Show environments and Show usage of the project from the Settings option.
Collapse Groups allows you to collapse the groups on the project Dashboard. You can also expand the groups depending on the view you prefer.
To get a better overview of your projects, it is possible to sort your projects into Groups. This can be done by clicking the Edit Groups button on the top right side of the Umbraco Cloud Portal.
After clicking on Edit Groups, you can create new Groups to sort your project in and create a better overview for yourself.
Click Add Group to give the group a name and then drag and drop your projects into the group of your choice.
In the bottom-right corner of the Umbraco Cloud Portal, you'll find a chat bubble. This is where you can reach out to the Umbraco HQ Support Warriors, should you have any questions regarding your Umbraco Cloud projects.
With the Starter and Standard plan, you are only entitled to support regarding specific issues regarding the Cloud platform. If you are on a Professional plan, you are entitled to support through the chat regarding implementation and issues with the CMS. For more information on plans and pricing, see Umbraco Cloud plans.
When you click on the User Profile link, you will find the following options:
Projects
Manage Subscriptions
Pending Invites
Organizations
Profile
Release Notes
Logout
Managing your projects has been made even simpler with Umbraco Cloud. If you go to a particular project, you can get a quick overview of the environments in your project.
Project Name along with the options to Create environments, Invite User, or Settings section.
Environment name along with the option to Restart the environment, view Error Logs and Logs, Clone project, and access Power Tools (Kudu).
Links to View errors, View page (frontend), Go to backoffice, and the Environment history.
Option to view change details.
While managing the environments on your project, click on Create Environments to add and/or remove environments as needed. Read more about how the number of environments varies depending on the plan you are on, in the Project Overview article.
Aside from these features, it's also from the project view that changes are deployed from one Cloud environment to another. Find out more in the Cloud-to-Cloud article.
In the Settings section, you will find a lot more options to configure your project.
On Umbraco Cloud, you can receive an invitation from different projects. These project details are available in the Pending Invites tab. On the Pending Invites page, as a user, you will see the following details:
Project Name
Invited by
The expiration date of the invite
Invitation status
Options to approve, reject, or delete the invitations that have expired.
On Umbraco Cloud, it is possible to get an organization to manage your company's projects. The Organization Projects page displays an overview of all the projects created by you and members of your company. Find out more in the Organization article.
The organization page contains sections displaying information about:
Members
Projects
Access Rights
Payment Methods
Payment History
Subscriptions
The Profile consists of the following information:
Name: The name that is displayed on Umbraco Cloud.
Email: This email address is used for logging in to Umbraco Cloud and will receive email notifications from the Umbraco Cloud Portal.
It is not possible to change this email address at a later point.
* Telephone: The contact number of the user. * Edit profile: Allows you to update and ensure that your information is valid and up to date for your Umbraco Cloud profile. * Change Password: Change the password for your Umbraco Cloud account from here.
On the Umbraco Cloud portal, you can now find the link to the Release Notes in the Profile dropdown. Release notes are published every month and list the most relevant fixes and features added to the portal.
Each environment has an error log that appears only if you have any unread errors in that specific environment. You can view the errors by clicking on View errors in the environment menu.
Once you're there, you can manually mark each error as read which will move it from the "New" section to the "Read" section. Errors marked as read will be permanently deleted after 30 days.
During development, you can happen to gather a large number of errors which might cause the error page to load slowly. A fix for that would be to locally connect to the database for that specific environment and delete the errors. You can read more about connecting to the environment database locally in the section about Database on Umbraco Cloud.
Environment errors are stored in the UCErrorLog
table.
The query below will delete 90% of the errors. The query will always delete the oldest errors first. You can tweak the query to delete any percentage of errors by changing the number in the first row.
An environment on an Umbraco Cloud project can be defined as a workspace and is at the same time a Git repository. When you have more than one environment on your project, these environments will act as branches of the main repository.
Umbraco Cloud uses a deployment model that relies on Git and other core technology, which gives you the option to move both content and structure files from one environment to another. Learn more in the .
When you have multiple environments in your Umbraco Cloud project:
The Development environment is the first environment in the workflow.
This is the environment you are going to work with when building the structure of your website. This is also the environment you clone down when you want to work on your project locally.
The Development environment is included in the Standard and Professional plans on Umbraco Cloud. In the Starter plan, you have the option to add the Development environment.
The environment next in line in the workflow is the Staging environment.
This environment enables you to give your team members different workspaces - the developers can work with code in the Development environment while content editors can work with content in the Staging environment. All of this without affecting the actual public site.
The Staging environment is included in the Professional plan. In the Standard plan, you have the option to add the Staging environment.
Both the Development and the Staging environments are protected with basic authentication. This means that you must log in to see the frontend of these environments.
The final environment is the Live environment.
This is your live site - the site that's visible to the public. When you are in trial mode the Live environment will be protected by basic authentication - this will be removed as soon as you set up a subscription for the project.
The Live environment is included in the Standard and Professional plans on Umbraco Cloud.
For more information about the workflow on Umbraco Cloud, see the article. Below you will find a technical overview of the different parts that make up an environment on your Umbraco Cloud project:
Each environment on Umbraco Cloud has both a Git repository and a folder with your actual live site. The Git repository is what you clone down when you work with the project locally, and it's where your changes are pushed to.
The live site (/site/wwwroot/
) contains the files used to show your website to the world. When you push changes from your local machine, they are pushed to the Git repository (/site/repository/
), and when this finishes successfully the changes are copied into the live site.
All the team members you add through the Umbraco Cloud Portal will also be added as backoffice users in your environments. As with any other Umbraco CMS installation, you can also add users directly in the backoffice of your Umbraco Cloud environments. If you do this, the user will not have the option to deploy changes between the environments.
Each of your Umbraco Cloud environments has its own SQL Azure database. You have full access to the databases, and you can create custom tables as you'd expect from any other hosting provider.
Aside from viewing the files on your Umbraco Cloud environments when cloning down the project to your local machine, you also have access to what we call Power Tools - Kudu.
This is a dashboard that allows you to browse, view, and edit all the files in your Umbraco Cloud environment. We recommend using the tool only when you are following one of our guides in the Troubleshooting section.
Each of your Umbraco Cloud environments has a Git repository and therefore also a Git history. We've made a simplified view of this Git history in the Umbraco Cloud Portal - the Environment History.
In this view, you'll be able to see what file changes have been made in each environment.
Here we outline how to manually resolve a merge conflict after having updated the children for a Baseline project.
On a Baseline project you can click to “Manage updates here”, which enables you to push updates to your child projects from the Live environment of the Baseline project.
Select the child projects you want to upgrade, and click Update selected children. The overview will then change to show the progress and status for updating the various child projects.
The outcome of the update will result in one of three statuses:
Updated has completed
Error while updating from upstream
Encountered a merge conflict so abandoning update
A merge conflict is something you currently need to handle manually in order to push future updates to the child project, which encountered a merge conflict upon updating.
Note: Since the following documentation was outlined we've made quite a few improvements to the Baseline workflow. For the most part this documentation is still relevant and we are working on getting them updated with the latest details.
In order to resolve the conflict you need to go to the child site open up the SCM / Kudu site for the development environment. Click the “[link]” (see screenshot above) for the project (see screenshot above) and find clone url for the development site, which is similar to this: https://dev-my-website-alias.scm.umbraco.io/c565ead8-7a27-4696-9ab4-dad7eba2cd2c.git
and remove everything after the last slash, so you have a url that looks like this: https://dev-my-website-alias.scm.umbraco.io
You will be prompted to login to the SCM / Kudu site - use the credentials you normally use to login to the Umbraco Cloud portal. Now click “Debug console” from the top menu and select “CMD”. This will take you to a command line interface from where you need to navigate to the repository folder: site / repository
From here you need to merge the branch (upstream/master), which contains the updates which were fetched from the Baseline project. In the console enter: git merge upstream/master
This will result in an output showing the files, which contains conflicts that you need to resolve in order to fully merge the two branches:
In the above output two files are listed and we want to pick the ones that comes from the current project (the child) - in other words we want to keep our files, as these are content changes. We use the following commands to achieve that:
Note: If you wanted to select the files from the Baseline project instead of the ones from the current project, you should write “--theirs” instead of “--ours” in the command from above. “Ours” corresponds to the current project (the development site) and “Theirs” corresponds to the Baseline project.
Now you need to add the (modified) files to Git and finally commit the changes using the following commands:
The merge conflict has now been resolved, and you can update your local repository with the latest changes by pulling from the development site. Please note that the changes from the commit haven’t been deployed to the website yet, as we have only applied the changes to the Git repository. In order to deploy the recent changes to the website you can push your local changes to the development site or you can use the Kudu api to trigger a deployment. You can use the following command from the Kudu Debug Console to deploy the latest changes:
This is currently not possible on projects that run Umbraco 9 and above.
We are working on making it available for Umbraco Cloud projects using version 9 and above.
When you are doing your normal development process, you'd be updating the configuration files in your solution as usual. When you are working with a Baseline setup there are a few things to keep in mind.
When you are deploying updates from the Baseline project to the Child projects, all solvable merge conflicts on configuration files will be solved by using the setting on the Child project.
That also means that if a file has been changed in both the Baseline and in the Child project, the change from the Baseline won’t be applied to the Child. To have custom settings on the Child project, you should take advantage of the vendor-specific transform files.
On Umbraco Cloud, it is possible to create transform files that will be applied to certain environments by naming them like web.live.xdt.config
(see ). This should be used when a Child project needs different settings than the Baseline project.
It can be achieved by using a configuration file that is specific to the Child Project, naming it like child.web.live.xdt.config
. This file should only be in the Child projects repository, which can be achieved by creating the file locally and pushing it directly to the Child project. Read the article to learn more about how this is done.
Following this workflow will ensure that when the Child is updated from the Baseline, the settings won’t be overwritten.
This practice is especially important when the Baseline project gets major new functionality, like new code that is dependent on the configuration files or when upgrades are applied.
When you need a specific configuration on Child projects, you should always use config transforms. Making changes directly to the default config files on the Child project might prevent you from being able to push changes from your Baseline project in the future.
Here is a few examples of what could be transformed in the child sites.
The above could either be added to its config files or be split up into one config file per setting. Umbraco Cloud will run through all the config files for the project. i.e. in one file
child.web.live.xdt.config
or having multiple files
child-appsettings.web.live.xdt.config
child-iisrewrite.web.live.xdt.config
child-smtpsettings.web.live.xdt.config
Umbraco Cloud Projects are made of three major components: Environments, Team Members/Invite Users, and a Settings section.
The number of Environments in your project is dependent on which plan you are on:
With the Starter Plan, you have the option to add a Development environment.
With the Standard Plan, you get a Development and a Live environment with the option to add a Staging environment. You can add/remove environments as needed
With the Professional Plan, you get a Development, a Staging, and a Live environment - as with the Standard Plan you can add/remove environments as needed.
With the Enterprise Plan, you get a Development, a Staging, and a Live environment - as with the Professional Plan you can add/remove environments as needed.
A Baseline Child project is very similar to a Fork (forked repository) on GitHub where we create a clone of an existing project while maintaining a connection between the two projects. The connection exists between the Live environment of the existing project, the Baseline project, and the Development or Live environment - of the newly created project, the Child project.
Any project can act as a Baseline project.
The basic idea is that you have a project that contains all your standard Umbraco packages/components, maybe even configured with some default Document Types, which you want to use as a baseline for future projects. When you've made changes to your Baseline project, you can then push these changes out to all the Child projects with a click of a button.
To create a child project:
Click the Create New Project button.
Select Baseline Project.
Open the Choose baseline drop-down list and select the Cloud project, the new project should be based on.
Choose either Starter, Standard or Professional plan from the Plan Selection window.
Enter the Project Name in the Project Information window.
Any Umbraco Cloud project can be used as a Baseline project
Choose an Owner from the drop-down list.
Enter your Name, Email, and Telephone in the Technical Contact section.
Click Continue.
Review the entered information and select I have read and agree to the terms and conditions and the Data Processing Agreement.
Click Create Project.
It might take couple of minutes for the project to spin up before your environments are ready. When your environments are ready, you will see a green light next to the environment name.
Depending on the size of the project you've chosen as a Baseline project, it might take several minutes before the Child project is ready.
When you've created the Child project you can choose to restore content from your Baseline project:
Go to the Content section.
Right-click the top of the Content tree in the Umbraco backoffice.
Choose Workspace Restore.
The Baseline project should already be selected as the environment to restore from
Click Restore from Baseline
If you do not see the content, Reload the content tree once the restore is complete.
As with any Git repository-based development, it is not uncommon to have merge conflicts as the repositories begin to differ. Read this article for more on the merge strategy we use and how to approach resolving these conflicts.
In this article, you'll find a guide on how to upgrade your Child project with changes from your Baseline project.
When you are working with Baseline Child projects you might sometimes want to have an individual configuration for each project - this can be handled using config transforms.
In this article, we will look at how to break the connection between the baseline and one of its child projects.
Here you will find answers to the questions we most commonly hear from people who are wondering if Umbraco Cloud is the right fit for their project. The answers you will find here are of a more technical nature and are directed at developers.
If you are interested in more general information about the product, you should .
Yes, you can and test it for 14 days with no obligation to buy.
No. It's the same as the latest version of Umbraco that you can download.
Currently, we have benchmarked a "well-built" site with approximately 50,000 unique visitors per day (~1.5 million per month) that performs well. For business-critical, high-traffic sites, we recommend that you look into Umbraco Cloud Professional and Enterprise possibly in combination with a dedicated server.
Your site can't currently auto-scale, but it is something we’re investigating as a future feature. We do offer dedicated worker resources. .
Not currently.
Yes, you can. Umbraco Cloud uses the same Umbraco version that you can download and use on your own. If you decide that Umbraco Cloud is not right for you, you can take some actions alone. You can clone your site, restore your data locally, and delete your Umbraco Cloud project. We will be sad to see you go. But we understand there are some requirements we might be unable to fulfill. So we support and encourage you to choose the best solution for your specific site needs.
Umbraco Cloud relies on the underlying Azure infrastructure for content localization in Umbraco CMS. Find the available languages in the dropdown below.
All available Umbraco Cloud plans are utilizing P1V3 Azure App Service Plans as their underlying infrastructure. A P1V3 Azure App Service Plan offers in total
2 CPU Cores
8GB of RAM
250 GB Disk space
1,920 TCP connections
In our experience, there are only a few Cloud sites that have experienced these limitations and we're happy to work with people who have sites affected by these limitations.
If you have questions about how many resources your site is using, then please reach out to our friendly support team.
Yes, you can. Please note that Umbraco Cloud also uses Cloudflare for DNS, so you need to enroll your hostname as 'DNS Only' with a CNAME pointing to dns.umbraco.io
. Once you can see the hostname is marked with 'Protected' under the Project / Hostname subpage you can turn on 'Proxying' for the hostname in your Cloudflare account if you need to use specific Cloudflare features like Page Rules.
HTTP headers are bits of information that are passed along within every communication between (web) servers and (browser) clients. All HTTP requests to custom hostnames on Umbraco Cloud pass through Cloudflare.
HTTP requests headers can be useful for for example multilingual purposes to redirect users of certain languages to a specific URL. Here, the collection of visitor location headers below will be helpful. The values for these location headers are derived from the visitor's IP address.
cf-ipcity
: The visitor's city
cf-ipcontinent
: The visitor's continent
cf-iplatitude
: The visitor's latitude
cf-iplongitude
: The visitor's longitude
Note, the HTTP requests headers are available on all custom hostnames created through Umbraco Cloud. But not the default hostname for the Umbraco Cloud project such as project.euwest01.umbraco.io.
We upgrade when we're confident the release is solid.
We automatically upgrade Cloud projects to the latest patch and minor version of Umbraco CMS, Umbraco Forms, and Umbraco Deploy. When we make a new patch version, we first run it through our test suite, then test it on 10 test sites. When all that passes, we roll out the upgrade in batches of 100 to customer accounts.
When we roll out auto-upgrades to Umbraco Cloud projects the first thing that happens is a check of all environments on a project. This check will verify whether the environments are responding and do not return an HTTP status error. If the auto-upgrader encounters HTTP status errors on any of the environments during this check, the upgrade process is aborted. Your project will not receive the upgrade should this happen.
Another reason why your project wasn't auto-upgraded could be, that it failed the test we perform after applying the auto-upgrade. This test compares the state of an environment from before the upgrade with the state of the same environment after the upgrade. If they don't match, we take the appropriate measures to rollback the environment to its previous state. Then the upgrade is aborted of any remaining environments.
Other reasons why you didn't receive the auto-upgrade:
If you are doing a deployment at the time we tried to run the auto-upgrader on your project.
If your environments aren't running the same minor version. For example, if you are in the middle of upgrading to a new minor version, and one environment is running 7.6.x while another environment on the same project is running 7.7.x.
Pending commits won't stop the auto-upgrade.
Yes, that’s fine. In some cases, you may want to upgrade sooner than the scheduled service upgrade or you may have a site we couldn't upgrade automatically for one reason or another.
Do note, however, that you will need to step through the upgrade installer manually on each environment, including live. Our automated upgrader makes sure that visitors to your live site will not be prompted to log in to the upgrade installer.
You will have to assume that every time we upgrade your site, any file that comes with Umbraco by default will be overwritten. Generally, we only overwrite the files that have been changed in the newest release but there is no guarantee for that. So if you (for example) have customized the login page then you can assume it will be reverted on each upgrade.
Yes, we're happy for people to do penetration testing on the sites they have built on Cloud. We do ask you to please tell us about these tests beforehand so our support staff knows to look out for possible strange things happening on your site.
We are also happy to receive any test results you receive so that we can improve security in Umbraco where necessary.
It is strictly forbidden to attempt to do a denial of service attack on your Cloud sites.
The ability of Umbraco Cloud to support your website depends on different factors. This includes the number of visitors and the media storage your site requires.
These details alone do not fully determine whether Umbraco Cloud is the right fit for your needs.
Each website can have different performance requirements based on how it is built and configured. We recommend running a load test, to learn whether Umbraco Cloud can handle your specific website. This test simulates real-world traffic and can help you understand the computation power and resources your website will require.
We would like to talk to you beforehand about your test plan for a load test on your Cloud site.
Yes, in fact, Umbraco Cloud provides automatic Transport Layer Security (TLS)/HTTPS certificates for all hostnames added to an Umbraco Cloud Project's environment. Umbraco Cloud will automatically renew the certificates, which are issued by Cloudflare. By default, the certificates are valid for 90 days and are then automatically renewed for as long as the hostname is active on Umbraco Cloud.
Yes. Pro and Enterprise Plans can add custom certificates for each of their custom hostnames in order to override the certificates that are provided by Umbraco Cloud by default.
By default, Umbraco Cloud supports HTTP/2.
No this is not a security risk. This cookie is set by the load balancer (LB) and is only used by the LB to track which server your site is on. ARRAffinity cookie is a built-in feature of Azure App Service and is only useful when your website is being scaled to multiple servers. In Umbraco Cloud, we cannot scale your site to multiple servers so the cookie is effectively unused.
Yes. You can use any valid certificate on Umbraco Cloud.
Yes. On Cloud, you can add an IP filter of your choosing. There are a few things you need to pay attention to though. Umbraco Deploy will still need to be able to talk to the different environments in your Cloud website and you should still be able to use the site locally.
Yes, every site created after May 2nd, 2017 will have TDE enabled by default. For older sites, we can enable this by request.
No, you should not use a shared database for your team. Umbraco Cloud is made so that each team member can safely make any changes they need and then send them to your development environment on Cloud. Another developer can do the same and also send their changes to the dev to test. Once you're happy with all of the changes, each developer can pull down the changes from development and continue working on the next change.
Not only does this promote working in small increments it also prevents two problems:
Our deployment engine (Umbraco Deploy) is not made for this and your local site will quickly get out of sync with the changes both developers are making. Once you push your changes up to your Cloud instance you can expect to see errors and mismatches because changes have not been saved correctly.
Yes, you can make your Umbraco implementations as you're used to, including custom .NET assemblies.
Umbraco Cloud sites run on IIS 8.5 so most things you can normally do on IIS, you can do on Umbraco Cloud. We don't, however, offer support for custom components that have to be installed on the server itself. If you can ship it in the bin folder, it should generally work on Cloud.
If you have any experience with Azure Web Apps, Cloud works in the same way. So if you can make it run on Azure Web Apps, you can make it run on Umbraco Cloud.
Yes, an Umbraco Cloud project is similar to a normal Umbraco website where we give you multiple environments and deployment of code and content between these environments. You can run your site locally (via Git) which is the best way to add your own code (templates, cs files, packages, DLLs, and so forth).
Yes, you can create custom tables in the database. Find the connection strings to the databases on the different environments on the "Connection Details" page found in the "Settings" menu.
Note that custom database tables and data do not replicate automatically across Cloud environments. You might want to use Umbraco Migrations and our PetaPoco data layer to make the deployment of your custom data more automated.
Yes, it is! Websockets are enabled on all sites.
When you've deleted something (e.g. content, media, or schema) on one environment, the deletions will not be picked up on the next environment when you deploy.
This is intended behavior.
We will only delete the files and not the database entries, as this could potentially cause you to lose data on your Live/production environment.
Umbraco Cloud uses Azure App Service Plans for website hosting services. This is a typical platform used for hosting web applications and it offers all features necessary for running Umbraco websites.
Given that, packages that run in your local development environment, or on other hosting platforms, are likely to also be supported on Umbraco Cloud.
The only potential issue to be aware of is if your package stores custom data in the Umbraco database. Most packages don't do this, either purely adding functionality, or using existing Umbraco services for any data storage they require.
If a package does save data into a custom table within the Umbraco database, it will still operate as expected on Umbraco Cloud. However, unless the package developer has taken additional steps to support this, you won't be able to transfer the saved information between environments.
In some cases though, you may want to be able to transfer data prepared in a staging environment to production. Or conversely, to restore it into a local development environment for debugging purposes. The package may or may not be built to support this.
If you find you are unable to move information between the environments you should contact the package's developer to ask about plans for support. How a package developer can offer this feature is described in the following section.
As discussed in the section above, most packages will work fine in Umbraco Cloud without any modification.
Some packages save data into custom Umbraco database tables, and if so, it may be useful to be able to transfer that data between environments. If this is the case, then there is an extra step you should take to fully support usage of your package on Umbraco Cloud.
In order to support custom data transfer between environments, the package or solution developer needs to build an add-on to their package. This extends Umbraco Deploy with a "connector" that details of how the data for the package should be handled.
Specific care needs to be taken when developing the connector if the package stores references to content nodes, media items, or members in Umbraco.
There are two challenges here:
Your package is referring to an integer identifier, for example, a content item with the id 1023
. On the next environment that same content item exists but since the content is a bit different there, the id is 1039
instead. Umbraco Deploy needs to know how to connect the correct identifier.
Even if the identifier is correct in both environments your package might rely on the other item (the one you're referring to) to exist in the next environment. So if the content item you're referring to (1023
) does not exist in the environment where you're pushing the content you might see errors in your package.
Umbraco Deploy Contrib is included in all Cloud sites and we keep it upgraded to the latest version for every site.
The code in these projects should also help you understand the steps and how to build something similar for your own package.
If you need help with this, don't hesitate to reach out to us and we'll be happy to give you some tips.
Yes, you can choose between West Europe, East US, South UK, and East Australia regions.
You can choose a region from the Region drop-down list when creating a new project.
No. Baseline projects are bound to a region for now.
Yes. The US region is no different than normal Cloud other than its regional location. That means that the patch-upgrade functionality will work in whichever region you choose.
Not at the moment.
Baseline functionality is not supported in the US and UK regions at the moment. Other than that, all features are fully supported.
Yes. Once we have specific plans, we will announce them publicly.
The hostnames contain the region your project is hosted on. Currently, there are 3 options available when choosing a region for your Umbraco project:
West Europe (euwest01). For example, https://west-europe-project.euwest01.umbraco.io/
East US (useast01). For example, https://east-us-project.useast01.umbraco.io/
South UK (uksouth01). For example, https://south-uk-project.uksouth01.umbraco.io/
East Australia (aueast01). For example, <https://east-australia-project.aueast01.umbraco.io/>
By default, a 35-day point-in-time database restore is available for your projects. It is also possible to restore a .bacpac
file to your cloud environments.
Umbraco Cloud keeps 30 days of snapshots of the filesystem for disaster recovery purposes.
Umbraco Cloud keeps 35 days of snapshots of the Blob Storage container for disaster recovery purposes.
When a project has one or more Child Projects it will appear on the Project page and the user can click to get an overview of all the Child Projects based on the current project.
From this page, you will have an overview of all the Child Projects this Baseline project has. This is also where you go when you want to push upgrades from your Baseline Project to the Child Projects.
To do a minor or major upgrade of a Baseline project and its Child projects, the first task is to run the upgrade on the Baseline project itself.
Once the upgrade has been verified on the Baseline project, follow the guides outlined here to push the upgrade to the child projects.
We recommend setting up a Development environment on your Child projects before deploying the updates/upgrades.
That way you'll have an environment to test on and verify that everything has been deployed correctly.
Once you are happy with the Development environment, you can go ahead and deploy it to the Live environment as well.
If you've done any version-specific steps, when upgrading the baseline project, these also need to be done on the child projects before pushing the upgrade.
Go to the child projects you are upgrading.
Go to the Advanced Setting tab.
Update the .NET version to the corresponding one for the major version upgrading to.
Go to the Baseline Project.
Click on "Manage updates here".
Select the Child Projects you want to push your upgrades to - you can select as many or as few as you like.
Click Update all child projects or Update selected.
Click Confirm once the selection looks correct.
If the upgrade has been completed successfully, the Child Projects will be displayed under the Successful Updates/upgrades section.
Go to the Manage child projects page on the Baseline.
On this page, the Child projects will have an available upgrade.
Select the projects you want to upgrade.
Click the "Upgrade selected children" button.
First, any pending changes made on the Baseline will be deployed to the child site.
Once the changes have been deployed, the child site will be upgraded to the same version as the Baseline site.
All products (CMS, Deploy, and Forms) will be upgraded.
The upgrade itself will happen once you click the upgrade button. This will start by triggering the update, where all the files are updated on the children from the baseline.
Once the files are in place, we also run the upgrade process, making sure that the children are fully upgraded.
The reason for this is that the Child Projects config files will be merged by choosing the parent's config files first. That is to ensure that changes to config files, that have been made in the minor upgrade, will also be applied to the child projects.
If the upgrade of a Child project fails, or the Child project is left in a bad state, it is most likely because the Child project was unable to be merged properly.
When updating Child projects from a Baseline project, a configuration from the Child project will take precedence over the Baseline project configuration. This means that when the update from the baseline to the child runs, the configuration file sometimes won’t be changed.
If the flow isn't used, then the repository will be in a state where the code has been updated, but the configuration files haven’t been updated. The solution is to manually fix the configuration files on the child project. Do a comparison of the configuration files on the baseline and the child, and make sure that all changes have been added to the child’s configuration files.
Read more about this and team member roles in the article.
Learn more about how to connect to your Umbraco Cloud databases in the article.
In the article, you can read more about how to access the dashboard, and how we recommend using it.
If you prefer to use the Kudu REST API for triggering a deployment, you can find the details here:
To get a technical overview of your Cloud environments, see the article. For more information on how to add or remove environments, see the article.
Another major component of your Umbraco Cloud project is Team Members. When you add team members to a project, they will automatically be added as backoffice users in all the environments. Team members can be added as Admins, Writers, or Readers. Refer to the article to learn more about these roles.
In the Settings section, you can manage and configure your project to fit your needs. Learn more about the different settings in the article.
Log in to the .
Umbraco Cloud is best when used as the base for a new project. There is a specific way of working with Umbraco and Umbraco Cloud in order to take full advantage of the service. That’s not to say you can’t migrate an existing site, only that some changes may be required in order for your site to fully work with Umbraco Cloud. For more information .
To see quotas for the different plans on Umbraco Cloud see
We also have a limitation for hostnames on the different plans on Umbraco Cloud. You can see how many hostnames you can have on our
You can monitor your site's usage and performance via the '' and the '' pages on Umbraco Cloud. Inside the 'Usage' page you can view Bandwidth consumption and inside the 'Availability & Performance' page you can monitor CPU and Memory usage.
Generally, we recommend that you keep your DNS entry set to 'DNS Only' in your own Cloudflare account. This lets Umbraco Cloud handle the automatic Transport Layer Security (TLS)/HTTPS certificates for the hostnames you point to your Umbraco Cloud project. Check with our support team, via chat or using , before bringing in your own Cloudflare setup.
uc-ipcountry
: The visitor’s country. uc-ipcountry
header is a carbon copy of .
All supported versions of Umbraco CMS are available on Umbraco Cloud. See the page for more information.
You can find all the steps of the auto-upgrade process outlined in the article.
Please contact us using the chat button at the bottom right corner of the .
There are user-friendly tools available, such as , to help you conduct these simulations. This will give you a clearer picture of whether Umbraco Cloud can support your website effectively.
Please contact us using the chat button at the bottom right corner of the .
Haven't found an answer to your question? Many security-related questions are answered in the of the documentation.
Learn more about how to use your own certificates in the article.
You can learn much more about this in our .
It seems that you didn't set up the bindings for the specific domain where this warning is showing. Check the bindings by going to the site in by going to the "Manage hostnames" section for your site.
Learn more about this and how to set it up in our .
If you share a database between multiple developers, automatically kicks in. Without a proper load balancing setup, this means that often you will not see changes another team member has made, potentially overwriting their changes with your own changes.
You can read much more about these deletions in the article.
This may not be important if you don't have a need to do this. For example is typically used in a single environment, either staging or production. Even though it does save custom data, there's no requirement to move it between environments.
Umbraco Cloud uses the tool to for the purpose of transfer of Umbraco information between environments. This includes Umbraco "schema" (such as document types) as well as "content" (such as content or media).
Open-source examples of connectors can be found in the and the projects.
We have a dedicated documentation page discussing the process of .
Yes, you can move a project that was created on Umbraco Cloud in the EU region to another region. Navigate to the for more information.
You can read more about database backups and restores and how to perform these on Umbraco Cloud in the .
Follow the upgrade guides for and/or upgrade notes to upgrade your Baseline project.
When using the feature, the Baseline Child projects must be set up following our . This means that any changes to the Child project should be applied via a config transform file.
To fix this, it is important to follow the flow shown in . It prevents the child will update configuration files and will ensure the best flow between the baseline and the child.
Now that you've created a project, there are a few things you may want to do to make working with your project easier. As you get ready to launch your live site, there are some other considerations to consider as well.
Most of the set up can be accomplished by using the options from your project's Settings drop-down. Some of the setups apply to all your projects, so you'll make these updates from your Profile section.
Articles about configuring settings on your project, as well as managing members, domains, and certificates.
Articles about how to work locally with your Umbraco Cloud project.
In this article, we will look at some of the best practices and recommendations when you are working in teams on your Umbraco Cloud projects.
Always start by making a pull request from your project before you push anything back up to Cloud. This way you ensure that you do not accidentally overwrite the work that someone else in your team has worked with.
Umbraco Cloud is built on top of Git which means that you can create branches locally as either a feature or developer branch. You can then work on the project and test out the new features before merging it into the master branch. The branch can then be pushed up to your cloud environments.
We highly recommend that you use a Development environment when you are working in teams. With the Development environment, members of a team can work on their local version of the project. They can then push back up to the development environment to be tested and approved before being deployed to either the staging or the live environment.
When working in a bigger team with both developers and content editors, we highly recommend that you set up a Staging environment. This way the developers can continue developing in the Development environment, while the content editors can focus on creating delightful content in the Staging environment.
For a more in-depth example of how to work in teams on Umbraco Cloud projects, Our Gold Partner ProWorks have created an article about how they have set up a Team development workflow on Umbraco Cloud.
This article can serve as inspiration if you are an agency and are looking into setting up a bigger project where several people will be working on Umbraco Cloud.
Umbraco Cloud plans Starter, Standard, and Professional are running on shared infrastructure, referred to as pools. To ensure performance and prevent exhaustion of a given pool, each website is assigned a resource quota, depending on the plan, and resource usage is continuously monitored.
The shared resources used by the Umbraco Cloud websites are:
CPU
RAM/Memory
Disk space
TCP connections
Currently, all available Umbraco Cloud plans are utilizing P1V3 Azure App Service Plans as their underlying infrastructure. A P1V3 Azure App Service Plan offers in total
2 CPU Cores
8GB of RAM
250 GB of Disk space
1,920 TCP connections
To ensure stable performance of all websites hosted on Umbraco Cloud shared plans, soft and hard quotas were implemented. Quotas per site and the number of sites in the pool vary per Umbraco Cloud Plan.
Whenever a CPU or memory plan quota is met, the website will be restarted within a minute to ensure stable performance for all websites in the pool. Meeting a disk quota will result in errors whenever performing write operations to disk. No plan limits exist for TCP connections per site, besides the total amount of TCP connections available to all sites in the pool set at 1,920, attempting to open new TCP connections afterwards will result in errors.
Umbraco Cloud Starter plan
CPU - 20% (120 sec of CPU time for a 5-minute period)
Memory - 1500 MB (in private bytes)
Disk - 7800 MB
Umbraco Cloud Standard plan
CPU - 35% (210 sec of CPU time for a 5-minute period)
Memory - 1800 MB (in private bytes)
Disk - 9600 MB
Umbraco Cloud Professional plan
CPU - 50% (210 sec of CPU time for a 5-minute period)
Memory - 2000 MB (in private bytes)
Disk - 10400 MB
These are hard plan quotas that cannot be exceeded for more than a 5-minute interval. When a cloud environment surpasses the CPU or memory limits defined by the plan quota, the app service hosting the environment will automatically restart. If the app service experiences multiple restarts, we will relocate it to a dedicated environment. This ensures other tenants in the shared pool are not negatively impacted.
You can look at the pricing, plans, and features on the Umbraco Cloud Pricing page.
A guide to help you migrate your Umbraco CMS site to Umbraco Cloud.
One way to start your Umbraco Cloud journey is to migrate an existing Umbraco CMS project to the platform. There are some requirements that this project needs to meet as well as some specific steps to follow.
In this article, you can find all the information you need to migrate your existing Umbraco CMS project to Umbraco Cloud.
To properly migrate your Umbraco CMS project to Umbraco Cloud it is important to ensure that your project meets the requirements.
Each requirement outlined below is presented with recommended suggestions when a project does not meet the requirements.
Before initiating the migration, the project should be cleared of unnecessary files and data. This includes emptying recycle bins in the Umbraco backoffice and deleting temporary files in the project repository.
Follow the cleanup steps on the local environment/clone of the Umbraco CMS project.
Run the project.
Access the Umbraco Backoffice.
Empty the Recycle bin in the Content section.
Empty the Recycle bin in the Media section.
Stop the project.
Delete the following folders from the project directory:
umbraco/Data/TEMP
umbraco/Logs
The data from the Umbraco CMS project will be migrated to Umbraco Cloud by uploading a database .bacpac
file. The next steps will guide you through creating a .bacpac
file from the project database.
Creating a bacpac
file requires that the project use an SQL Server database. If the project is using an SQLite database a couple of different options are available:
Find an external tool to convert the SQLite database to SQL Server.
Migrate your content and data to Umbraco Cloud using Umbraco Deploy.
Use Microsoft SQL Server Management Studio or a similar tool to export a .bacpac
file of your project database.
Save the .bacpac
file on your machine.
When migrating a project to Umbraco Cloud it is important to do so with a clean project. Using a clean project ensures that no unknown factors can come into play during the migration.
You can create a new Umbraco Cloud project in one of the two ways:
Create an Umbraco Cloud Trial project.
The project will be free for 14 days, whereafter a subscription is required.
Create a new Umbraco Cloud project from the Umbraco Cloud Portal.
Follow the setup instructions detailed below.
Click Create project in the Umbraco Cloud Portal.
Choose Umbraco Cloud as the Type.
Choose a plan that enables you to add a Development environment.
Select the version that matches the project you want to migrate.
Give the project a name.
Choose from which Region the site should be hosted.
Select a project owner.
Ensure a Technical contact is added.
Click Continue.
Verify all the information is correct.
Check the "Terms and conditions" box.
Click Create Project.
Once the project is set up, add a Development environment. This will enable you to start over with the migration, should something go amiss.
Many processes happen in the background when a new Cloud environment is set up. It might take several minutes before the environments are ready to use.
With the Cloud project set up and ready, the migration can start in the next step.
The database is uploaded to the Umbraco Cloud project via the Umbraco Cloud Portal.
Follow the Upload Database and Restore Database sections in the Database Backups article to complete this step in the migration.
You will not be able to view the front end of the website yet, as the project files have yet to be migrated.
The Umbraco Cloud project is now ready for the next step where the two projects will be merged.
To continue the migration the next step is to clone down the Umbraco Cloud environment to merge it with the Umbraco CMS project.
Follow the steps outlined in the Working with a Local Clone article to clone down the Development environment of the Umbraco Cloud project.
Do not run the project after cloning it down.
In the following steps, the Umbraco CMS project will be merged into the Umbraco Cloud project.
Move the following files from the Umbraco CMS project into the cloned Cloud project:
View files in ~/Views
(.cshtml
)
Controllers and Models
CSS files and scripts in ~/wwwroot
Merge the relevant configuration files.
Use a tool like DiffMerge to identify which configurations to merge.
Do not merge the following configuration keys in appSettings.json
:
Umbraco:CMS:Global:
Id
Umbraco:CMS:Global:
UseHttps
Umbraco:CMS:Global:
NoNodesViewPath
ConnectionStrings:
umbracoDbDSN
ConnectionStrings:
umbracoDbDSN_ProviderName
Merge custom code in the Program.cs
file.
Open the appSettings.json
file.
Connect the Cloud clone to the Umbraco CMS project database by adding a new connection string:
Run the project locally.
All data, content, and configuration have been merged into the cloned Cloud environment.
There will be no images or media files in the project. These will be migrated later in the process.
The next step in the migration is to generate data files needed to synchronize with the Cloud project.
Access the backoffice of the local Cloud clone using Umbraco ID.
Navigate to the Deploy dashboard in the Settings section.
Locate the Export Schema to Data Files in the Deploy Operation section.
Click Export Schema to initiate the export.
Use the Deploy Status section at the top to determine when the export is complete.
Stop the project.
Add and commit the changes through Git.
Learn more about working with a local Cloud clone in the Deploying Changes article.
Push the migration to the Cloud environment.
All content, data, and configuration, except for the media files, have been migrated to the Cloud project.
The next step will be to add the media files to the Cloud project using Azure Blob Storage.
All media on Umbraco Cloud projects are stored in a dedicated Azure Blob Storage container.
Do you use Azure Blob Storage to store the media files that need to be migrated?
We recommend following the Copy blobs between Azure accounts guide in the official Microsoft Documentation.
Follow the guide in the Connect to Azure Storage Explorer article to access the Azure Blob Storage container connected to the Development environment.
Locate the media files for your Umbraco CMS project.
Copy the ~/wwwroot/media
folder into the Azure Storage Explorer.
Reload the front end and backoffice of the Umbraco Cloud project to verify that the images have been added correctly.
The Umbraco CMS project has now been migrated to an Umbraco Cloud project.
Verifying the migration by cloning the Development environment to your local machine is recommended.
This needs to be a new clone. The clone used throughout the migration steps can be deleted.
Follow the steps outlined in the Working with a Local Clone article to clone down, restore, and run the Development environment locally.
You might need to do a Workspace restore from the Media section in the Umbraco backoffice to restore the media files.
The Umbraco CMS project has now been migrated onto Umbraco Cloud.
Following this guide, the Umbraco CMS project has been migrated to the Umbraco Cloud Development environment. For the migration to be complete, it should be deployed to the Umbraco Cloud Live environment.
To publish the website to the web, attach a hostname to the Live environment.
Once you have added your custom hostnames to your Umbraco Cloud project, it's possible to configure certain transport security options for all or specific custom hostnames within your project. These security options all relate to the traffic that goes through your hostname from the origin (Umbraco Cloud) to the end-user - meaning the protocols and encryption used to transport your website and assets from the webserver to the browser.
Currently, these options are available:
HTTP/2 (default: on)
TLS 1.3 (default: off)
Minimum TLS Version (default: 1.2)
When a new custom hostname is added to a Project it will have the default settings applied. But you can change the defaults for your Project, so new custom hostnames will get the default settings you have chosen.
The first usable version of HTTP was created in 1997. Because it went through different stages of development, this first version of HTTP was called HTTP/1.1. This version is still in use on the web. In 2015, a new version of HTTP called HTTP/2 was created. HTTP/2 progressively enhances your website’s performance. When a browser supports HTTP/2, Umbraco Cloud will take full advantage of HTTP/2 performance benefits end to end. For older browsers or non-HTTPS requests, the traffic will fall back to HTTP/1.1. You don’t need to choose between better performance and backward compatibility, which is why HTTP/2 is enabled by default for all new custom hostnames added to a Umbraco Cloud project.
Transport Layer Security (TLS) TLS 1.3 is the newest, fastest, and most secure version of the TLS protocol. SSL/TLS is the protocol that encrypts communication between users and your website. When web traffic is encrypted with TLS, users will see the green padlock in their browser window. By turning on the TLS 1.3 option, traffic to and from your website will be served over the TLS 1.3 protocol when supported by clients. TLS 1.3 protocol has improved latency over older versions, has several new features, and is currently supported in both Chrome (starting with release 66), Firefox (starting with release 60), and in development for Safari and Edge browsers.
Minimum TLS Version only allows HTTPS connections from visitors that support the selected TLS protocol version or newer. This option relates to the TLS versions mentioned above and the current default, which is TLS 1.2. If you want your website traffic to only use TLS 1.3 you can change the minimum version. But be mindful of the implications that this might have (see browser support above). You don't need to change the minimum version to use TLS 1.3.
Access to the different options varies depending on the Umbraco Cloud plan your project is on. Currently, the features are available as follows:
Starter: HTTP/2
Standard: HTTP/2, TLS 1.3, Minimum TLS Version
Professional: HTTP/2, TLS 1.3, Minimum TLS Version
Click Security from the Settings dropdown on your Umbraco Cloud Project. The Security settings are scoped per environment, so if you have multiple environments and add your custom hostnames to different environments you can select the environment at the top of the page.
Aside from the environments, the Security page is divided into 'Default Settings' and 'Hostname Specific Settings'. Use the Default Settings to configure what should be applied to new and existing custom hostnames by default.
If you want to have different security options for different custom hostnames, then select the custom hostname under Hostname Specific Settings and adjust the options for that specific hostname. This might be useful if you want to test the different options on another custom hostname than your primary hostname.
On the security page, it's possible to enable or disable the different cipher suites for your project.
Enabling or disabling the different ciphers can be done under the minimum TLS version in the Ciphers drop-down:
Like the other Hostname Specific Settings, you can enable/disable specific ciphers for your custom hostname based on your needs.
When you create an Umbraco Cloud project, the project URLs are based on the name of your project.
Let's say you have a project named Snoopy
. The default hostnames will be:
Umbraco Cloud Portal - www.s1.umbraco.io/project/snoopy
Live site - snoopy.euwest01.umbraco.io
Development environment - dev-snoopy.euwest01.umbraco.io
Staging environment - stage-snoopy.euwest01.umbraco.io
The hostnames contain the region on which your project is hosted. Currently, there are four options available when choosing a region for your Umbraco project:
West Europe (euwest01),
East US (useast01),
South UK (uksouth01), and
Australian East (aueast01)
To access the backoffice, add /umbraco
at the end of the Live, Development, or Staging URL.
To add and manage your hostnames on Umbraco Cloud, follow the steps below:
Go to your project on Umbraco Cloud.
Go to Configuration in the side menu.
Click on Hostnames in the menu.
Click Add new hostname to add a new hostname.
Ensure that the hostname you are binding to your Umbraco Cloud environment has a DNS entry that resolves to the Umbraco Cloud service. The DNS settings can either use a CNAME or an A & AAAA record:
CNAME: Usually used for domains with "www
" in the URL.
This is recommended to use, if possible, as the record is not changed as often as A & AAAA IPs are. When setting up a CNAME it needs to point to dns.umbraco.io
.
A & AAAA records: Are usually used for the Apex domain (without "www
" in the URL).
It needs to be created at the root of your domain.
A-records to either or both IPv4 addresses:
162.159.140.127
172.66.0.125
AAAA records to either or both IPv6 addresses (to support IPv6 connectivity):
2606:4700:7::7d
2a06:98c1:58::7d
Once you have updated your DNS records, you must remove the hostname and re-add it from Umbraco Cloud to re-validate the certificate with Cloudflare.
Check with your DNS host or hostname registrar regarding configuration details for your Hostnames.
To specify the hostname for each root node using a multisite setup, follow these steps:
Go to the Backoffice of the project.
Right-click the root content node.
Select Culture and Hostnames.
Click Add New Domain in the Culture and Hostnames window.
Enter your Domain name and select the Language from the drop-down list.
Click Save.
Umbraco Cloud supports Internationalized Domain Names (IDN) allowing you to configure domain names including special characters.
When using an IDN direct access to the Umbraco backoffice from that domain is unavailable. If you have configured måneskin.dk
as a domain, you cannot access the backoffice using måneskin.dk/umbraco
. The backoffice will still be accessible using the default Cloud URL (maaneskin.euwest01.umbraco.io/umbraco
), or from other domain names that do not include special characters.
All hostnames added to an Umbraco Cloud project's environment will get a TLS (HTTPS) certificate added, by default. The certificate is issued by Cloudflare and valid for 90 days after which it will be automatically renewed. Everything around certificates and renewals is handled for you and you only need to ensure the DNS records are configured according to our recommendations above.
You will need to remove the old DNS entry before the Cloudflare service generates a new certificate for your Hostname.
Cloudflare is a popular DNS provider, which offers a variety of different services to improve performance and security. We also use it for DNS and Hostnames on Umbraco Cloud.
When adding a hostname to your project hosted on Umbraco Cloud, using your own Cloudflare account the process is slightly different.
Set Proxy Status to DNS Only when creating a CNAME or A-record for your hostname in Cloudflare.
Change Proxy Status to Proxied once your hostname is Protected on the Hostname page for your Cloud project. Also, make sure the website is accessible through the hostname.
The above is primarily relevant when you need to use specific Cloudflare services like Page Rules, Workers, and so on.
This is necessary because Google Trust Services is the Certificate Authority for the certificates issued on Umbraco Cloud.
CAA records can be set on the subdomain, but it's not something that is commonly used. If there’s a CAA record at, e.g., app.example.com, you’ll need to remove or update it. If you want to use wildcards and allow certificates for any subdomain, the CAA record should look like this:
The Certificate Authority (CA) used to issue certificates for all Umbraco Cloud sites' custom hostnames was changed on September 26, 2022. From October 31, 2022, certificate renewals for existing hostnames will also be updated to use the new CA.
On the Professional and Enterprise plans, you can manually add your certificate to your project and bind it to one of the configured hostnames.
If you need to use WAF in front of your Umbraco Cloud website this section will highlight some of the common configurations needed.
Configuration may vary depending on which WAF you are using, so you should always consult your vendor for best practices and recommendations.
In most cases, you need to ensure that the WAF and Umbraco Cloud are using the same certificate on the specific hostname. Custom certificates are a plan-specific feature on Umbraco Cloud, so make sure that you have access to upload certificates.
Make sure the hostname is pointing to Umbraco Cloud (dns.umbraco.io).
Certificate issued for the actual hostname. A custom certificate is required for a WAF hostname.
When configuring the hostname and certificate on Umbraco Cloud it will be necessary to validate the hostname using a TXT record. This is needed because in most cases the WAF will hide that the website is running on Umbraco Cloud. This means that the usual domain ownership verification cannot be performed. This same approach can also be used to configure a hostname before updating the DNS for the hostname.
Adding a hostname on a Cloud project is possible before a DNS change. It can take up to approx. 14 days before it's removed. That means that you have 14 days to add a TXT record in your DNS settings.
Reach out to support and they will assist you with the details needed to be in the TXT record. We will first be able to see what you need to add to the TXT record when you have added the hostname.
When that is added it should work immediately.
Learn more about best practices for working with rewrite rules on Umbraco Cloud projects.
Each Umbraco Cloud project can have multiple environments: Development, Staging, and Live depending on your Cloud project plan. Each environment has its own git repository that is hosted on Umbraco’s Cloud platform.
Umbraco Cloud repositories are only deployment repositories and should not be used as source code repositories.
Ideally, your Umbraco Cloud setup should look like this:
Source control is a way to control changes to files and directories. You can keep a record of changes and revert to specific versions of a file in the event you would like to back up to an earlier time. A source control repository is used as the single source of truth that has the latest version of your project source code with all the git branches.
There are different source code management tools that you can use such as GitHub, Git, GitLab, Apache Subversion (SVN), Mercurial, etc.
An example of how to use GitLab for setting up automatic deployments can be found on the online Umbraco Community magazine Skrift.io.
The external Git repository can be used to store the entire source code of your project. Additionally, the Umbraco Cloud project must have all your source code too. You can no longer store dll files in your Umbraco Cloud project.
You need to put your custom code in a different source control repository of your choice. You can use the source control repository to store the custom models, controllers, class libraries, CS code etc as the Umbraco Cloud Git repository can only store the dll files of your C# files.
We recommend creating a Cloud project with at least two environments: a Development environment and a Live environment. To work with a local copy of your site, you then clone down the Development environment using the Clone project option from the Cloud Portal and start building your website locally. This repository is different from your source control repository.
Once you're happy with the results or wish to see how your website has progressed, you push the changes back to the Development environment. If everything is working as expected you then deploy your changes to the Live environment.
Code Deployment Summary
In the above diagram, the Umbraco Git repository contains the source code of a class library CS project.
With this setup, once you commit your code in the Umbraco Cloud Git repository, your C# source code is built by Umbraco Cloud and then deployed to the wwwroot
folder.
Disadvantages of using an Umbraco Cloud Project repository as a source code repository
We only guarantee to maintain and keep the master
branch. If there are any other branches, they might be removed without any notification causing data loss.
You will need to commit your frontend artifacts as the build pipeline only builds dlls from your C# code.
Code Deployment Summary
In the above diagram, the external git repository contains the source code of a class library CS project, if you had a class library project that was used in your Cloud project.
With this setup, you commit your changes twice. Once to commit your code in your source control and the other commit to the Umbraco Cloud Git repository to deploy your website. Your source code is not hosted on Umbraco Cloud but only your cloned project will be in the Umbraco Cloud Git Repository. Your code is built and compiled into the cloned project and then pushed to Umbraco Cloud. Thus updating the site with your latest code changes.
Disadvantages of using an Umbraco Cloud Project repository as a source code repository
We only guarantee to maintain and keep the master
branch. If there are any other branches, they might be removed without any notification causing data loss.
You will always need to commit your dll files.
In this article you learn how to move a project from one region to another on Umbraco Cloud.
Creating a project on Umbraco Cloud, you can choose to host the project in different regions: East US, West EU, South UK, or East Australia.
In some cases, you might want to migrate your project(s) from one region to another. This article will outline the steps to do this.
The East US and West EU regions will be used as examples in this article.
Admin access and deployment rights on the project that is to be migrated.
A clone of both East US and West EU projects.
A local setup that can run an Umbraco instance. Learn more about this in the Requirements article.
If you want to migrate an Umbraco 8 project, you will need to upgrade to the latest supported Long-Term-Supported (LTS) version of Umbraco CMS.
The first step in this process is to create a new Umbraco Cloud project in the region you want to migrate your existing project to. In this case that will be the East US region.
This is done by selecting East US from the Region dropdown when creating the Cloud project.
The new project in the US region will run the latest version of Umbraco CMS, Umbraco Forms, and Umbraco Deploy. You will need to ensure that the project you are migrating is running the exact same version of each product before initiating the migration process.
Find more details on how to upgrade your project in the Upgrades documentation.
The following steps will guide you through the migration process.
Make sure that your projects are prepared for migration before continuing the process.
Go to Configuration > Backups on the West EU Cloud project.
Create a backup of the projects database.
Download the backup to your local machine.
Go to the East US project.
Go to Configuration > Backups.
Upload the database backup that you created in the previous step to the project.
Restore the backup to your environment
Optional: Create a backup of the environment before restoring the backup.
Run Export Schema from the Deploy Dashboard in the Settings section of the East US project.
Run Update Umbraco Schema from the Deploy Dashboard in the Settings section of the East US project.
Once you have restored the database to your environment, go to the backoffice of the project you are migrating to. In the backoffice, you should now see your content in the Content section, Document Types, and Data Types in the Settings section.
Taking a closer look at the templates, stylesheets, scripts and media, you will notice that it is not there. In the next step we will migrate those over to our new project
In this step, we will migrate our files and media items from our project in the EU region.
Clone down both the projects to your local machine.
Run the local East US project and restore the content.
Open both the project folders for West EU and East US.
Move the view files located in the view folder from West EU to the view folder in the East US project.
When prompted replace the existing files.
Move the CSS and Script files located in the wwwroot folder from the West EU folder to the wwwroot folder in the East US project.
Optional: Move files from App_Plugins if you have extended the Umbraco Backoffice
Move custom code (Models, Controllers and other relevant code) from the West EU to the East US project
Run the East US project locally.
Once you have started the project, it should show your content as it was on the West EU project. The only thing missing is the media items, as they have not been migrated yet. Before we can migrated our media items, we need to push the migrated files to the Cloud project.
In the following steps, we will push the migrated local East US project back up to the project on Cloud.
Follow the Deploying Changes article to push the Views, CSS and JavaScript files to the Cloud environment.
Follow the Transferring Content, Media, Members, and Formsarticle to transfer the media items to the cloud project.
Verify that all schemas, files, and content have been successfully deployed to your new US project after the transfer.
In the following steps, we will migrate the media items from the West EU blob storage container to the East US blob storage container.
Follow the guide in the Connect to Azure Storage Explorer article to access the Azure Blob Storage container connected to both the West EU and East US environment.
Locate the media files for the West EU Umbraco project.
Download the West EU media folder from the Azure Storage Explorer.
Go to the East US blob container.
Upload the West EU media folder to the East US blob container.
Reload the front end and backoffice of the East US project to verify that the images have been added correctly.
When the media folder has been moved to the migrated project the migration process is complete.
It is highly recommended to thoroughly go through everything on the migrated site to ensure that everything works as expected.
Following the steps above you have migrated your Umbraco project from one Cloud environment to another.
The following will need to be reconfigured on the new project after the initial migration:
All Team Members added through the Cloud Portal on the EU project also need to be invited to the migrated project
Hostnames, certificates, and other related settings must be re-added and reconfigured on the migrated project.
Once everything has been configured and set up you can safely delete the EU project which will also cancel the running subscription on the project.
If you need help or have any questions regarding this process, please contact our support using contact@umbraco.com.
Dedicated Resources is a feature on Umbraco Cloud that gives you the option to move your project to a dedicated server. You can choose between a number of dedicated options depending on the amount of resources you will need for your project.
In this article, you can read about how to move your Umbraco Cloud project to dedicated resources. You can also find information about what you need to be aware of before doing so.
Before you decide to move your Umbraco Cloud project, you need to consider a few things:
Umbraco Cloud offers dedicated resources for Starter, Standard, and Professional plans. You can choose among one dedicated option for projects on a Starter plan, two dedicated options for a Standard plan project, and three dedicated options for a Professional plan project.
Moving from a shared resource to a dedicated resource will change the outgoing IP of the project. If your solution has an external service that requires whitelisting the outgoing IP, we advise you to enable the static outbound IP feature for your project and share that static outbound IP address with the third party. The static outbound IP address will not change when moving from a shared resource to a dedicated resource. For more info on static lease visit the documentation for external services.
The first step in moving to a dedicated resource is to access your project in the project overview at Umbraco.io.
Find and select the project that you want to move to dedicated resources.
Select Dedicated Resources from the Management menu:
There are currently three dedicated options for you to choose from the Professional plan, two dedicated options from the Standard plan, and one dedicated option from the Starter plan. For each of the dedicated options, you will find its name, the memory and CPU cores, and the price per month.
By hitting the "Upgrade" button on your dedicated option of choice and confirming this, you will be redirected to the project page where you will be notified when the move to a dedicated resource has been completed.
Are you moving your Cloud project to a dedicated resource in the middle of the month? Dedicated resources are reserved on a per-month basis. The price of the dedicated resource will take effect from the next period of your subscription. The time from that date until the start of the next subscription period will be added to the next invoice.
Moving away from dedicated resources and back to a shared plan can be done from the Dedicated Resources page.
By hitting "Downgrade to shared" and confirming your choice, you will be redirected to the project page where you will be notified when the move back to a shared resource has been completed.
Your Cloud project is now back on a shared resource.
Wondering what happens when you move your environment to a dedicated server? Below you can find a list of the most frequently asked questions including answers.
You can choose to only move your live environment to the dedicated server.
All environments on the project moved to dedicated will share the resources of the dedicated server.
It will not be possible to work on the project while it is being moved to the dedicated server. The move takes a couple of minutes, and during that time the backoffice will not respond as usual.
All environments that have been selected to be moved, will be moved simultaneously.
There will always be an active live environment that continues to serve requests and be online during the move operation. When the moved live environment is ready and responding to requests, the hostnames will be switched to point to the moved environment.
If you have any other questions regarding dedicated resource, feel free to reach out to Umbraco Support.
In this article, we show how you can enable public access for your Umbraco Cloud project, so only people with whitelisted IPs can access your project.
Public access is by default available for projects created after the 10th of January 2023.
The Umbraco.Cloud.Cms.PublicAccess package can be installed to enable Public access for projects created before the 10th of January 2023.
The public access feature is available for all Umbraco Cloud projects on the standard plan or higher.
Public Access lets you deny access to your Umbraco Cloud project.
When enabled only team members on the project and users whose IPs have been allowed, can access the frontend of the project.
All environments on Umbraco Cloud projects can be protected by Public access. It requires you to enter your Cloud credentials in order to view the frontend.
Go to Public Access in the project settings tab
Enable Basic Authentication on the project
Once enabled Add IPs for users that need access to the project
Once Basic Authentication has been enabled, users not on the project or with IPs not added to the allowlist will be prompted to log in.
After adding hostnames to your project, it's possible to configure Content Delivery Network (CDN) Caching. This can be done for all or specific hostnames within your project.
These caching options all relate to the traffic that goes through your hostname from the origin (Umbraco Cloud) to the end-user i.e. the traffic of your website and assets from the webserver to the browser.
The options that are currently available are:
Enable Cache (default: On)
Cache TTL (default: 120 minutes)
Cache Everything (default: off)
When a new hostname is added to a Project, the default settings will be applied. However, you can change the default settings for your project, so that the new hostnames will get the settings you have chosen. This also means that if you enable caching in the default settings and add a new hostname, that caching will be enabled for that new hostname.
When Caching is enabled on your project it means that static assets like CSS and images are going to be cached in the Content Delivery Network (CDN) used by Umbraco Cloud. How assets are cached is up to you, as you can control it through 'cache-control headers'.
By default, Umbraco Cloud will enforce a minimum Time to Live (TTL) based on the Plan of your Umbraco Cloud Project, which means that assets cannot be cached for a shorter period than what your Plan allows. You can always choose a longer duration, especially, if you don't expect your assets to change.
These files types are cached as static assets through the CDN: '7z', 'csv', 'gif', 'midi', 'png', 'tif', 'zip', 'avi', 'doc', 'gz', 'mkv', 'ppt', 'tiff', 'zst', 'avif', 'docx', 'ico', 'mp3', 'pptx', 'ttf', 'apk', 'dmg', 'iso', 'mp4', 'ps', 'webm', 'bin', 'ejs', 'jar', 'ogg', 'rar', 'webp', 'bmp', 'eot', 'jpg', 'otf', 'svg', 'woff', 'bz2', 'eps', 'jpeg', 'pdf', 'svgz', 'woff2', 'class', 'exe', 'js', 'pict', 'swf', 'xls', 'css', 'flac', 'mid', 'pls', 'tar', 'xlsx'.
If you want to disable caching on certain types of static assets, you can use a 'no-cache' cache-control header, which will be respected by the caching strategy in the CDN. You can utilize an outbound rewrite rule to add such a cache-control header to the request.
The following example adds a cache-control header with 'no-cache' as the value when the requested Url contains a PDF file:
The webpage itself is not cached when CDN Caching is enabled.
When Cache Everything is enabled, everything including the webpage is cached in the CDN. So, in addition to static assets, the webpage will also be cached and served from the CDN instead of loading from the origin.
When a webpage is cached, it will be stripped of any cookies that are otherwise part of the request. If you use cookies as part of the website, be aware of the implications of using Cache Everything.
When using Cache Everything you should use a Cache TTL, which matches the Editor's expectations of when the webpage is refreshed with a new version loaded from the origin. As an example, choosing a Cache TTL of 2 hours means that the webpage will be served from the cache for 2 hours and then it will be refreshed with a copy from the origin. If Editors make changes every 30 minutes, they will have to wait at least two hours until they can see the changes on the website.
We recommend using Cache Everything with caution.
When assets are cached for a long time and you need to refresh them, you can choose to purge the CDN cache to remove everything from the cache and force a refresh. This can be useful after having deployed changes to JS and CSS files, which are cached in the CDN. If you have caching enabled, you can purge the cache in the Purge Cache section at the bottom of the page.
Cache purging is done per hostname and it can take up to 30 seconds before assets are completely gone from the CDN, as it's refreshed globally.
By default, all hostnames are selected, but you can choose to purge specific hostnames from the environments in your Umbraco Cloud project.
Purging the cache is a heavy operation, so there is a constraint on how many purge requests can be done within 24 hours. The 24 hours starts from the moment you Purge. So if you have 2 Purge requests available and Purge twice within an hour, then you can Purge again in 23 hours (for the first Purge request) and then again in 24 hours (for the second Purge request).
In the Purge Cache section, you can see how many Purge requests you have available and when.
The available number of Purge requests varies depending on your Cloud Plan. For more information, see the Plan specific features.
Access to the different options varies depending on the Umbraco Cloud Plan your project is on. Currently, the features available are as follows:
Starter:
Enable Cache
Cache TTL (see below for minimum TTL)
Standard:
Enable Cache
Cache TTL (see below for minimum TTL)
Cache Everything
Professional:
Enable Cache
Cache TTL (see below for minimum TTL)
Cache Everything
The minimum Cache TTL varies as follows:
Starter: 2 hours/120 minutes
Standard: 30 minutes
Professional: 2 minutes
The number of Cache Purge requests within 24 hours:
Starter: 2
Standard: 10
Professional: 20
From your Umbraco Cloud Project, click CDN Caching & Optimization from the Settings dropdown to configure the caching options. All settings are scoped per environment, so if you have multiple environments and add your hostnames to different environments you can select the environment at the top of the page.
Aside from environments, the CDN Caching & Optimization page is divided into two parts: Default Settings and Hostname Specific Settings.
Use the Default settings to configure default settings that should be applied to new and existing hostnames.
If you want to have different caching options for different hostnames, then select the hostname under Hostname-specific settings and adjust the options for that specific hostname. This might be useful if you want to test the different options on another hostname than your primary hostname.
When working with an Umbraco Cloud project, you can add or remove extra environments depending on the plan you are in:
For the Starter plan, you can add a Development environment for an additional price per month.
For the Standard plan, you get the Development environment for free and can add a Staging environment for an additional price per month.
For the Professional plan, you get the Development and Staging environment for free. Additionally, you can add and remove environments whenever you like without any additional cost.
Learn more about the additional prices on Umbraco Cloud.
Important: Before adding an environment, you should consider if you have any changes locally that are not on Live yet. If you do, you should make sure to push it as adding another environment will also push it into the deployment chain.
Important: After adding a Development environment, you need to do a fresh clone of the site. The local version you have will be set up to push directly to Live, a fresh clone will push to Development.
You can add environments from your project overview here:
To remove an environment, go to the environment you want to delete click on the three dots, and click delete:
There is a specific order that the environments are being added. You will need to have a Development environment before you can have a Staging environment.
Suppose you have both a Development and a Staging environment and need to remove the Development environment. In that case, you will first need to remove the Staging environment before you can remove the Development environment.
Once you have added or removed an environment, it will take a couple of minutes for Cloud to set it all up, and then you will be ready to use it.
When working with an Umbraco Cloud project, you can handle a lot of the project configuration directly in the Umbraco Cloud Portal. You can manage the following configurations from the left-side menu:
See an overview of your environments for your project as well as access the frontend, backend, or clone down the environment.
See who is added to your project, add new Team members, backoffice users and technical contacts, and pending invites.
You can view the Summary of your Umbraco Cloud project in the overview menu under Summary.
Manage the team members and user permissions on your project. You can also view the backoffice user groups for each team member, view pending project invites, and manage Technical contacts for your project.
On the project history page, you can see a history of activities that have happened on your projects.
You can see metrics related to the overall health and performance of the Azure app service hosting the live environment of your solution.
On your Umbraco Cloud project, it is possible to see the usage of Custom Domains, Media Storage, Content Nodes, and Bandwidth for the project. You can also check if it is using above or below the allowed amount for the plan that your project is on.
Find connection details to your Umbraco Cloud databases. You need to allow your IP to connect to the databases with your local machine.
We handle minor and patch upgrades for the Umbraco components used by Umbraco Cloud, so you don't have to. From the Automatic Upgrades page, you can control if you want to opt in or out of automatic minor upgrades.
New projects are opt-in by default.
Manage CDN Cache settings for your project. You can modify default settings, which apply to all hostnames added to the current Project. Alternatively, you can set up specific settings per hostname, if you want to have different settings for certain hostnames.
Binding hostnames to your Umbraco Cloud project is done from the Hostnames section in the Settings menu on the Umbraco Cloud Portal.
If you have your own custom certificate, you can upload and bind it to your custom hostnames. This can be done instead of using the TLS: Transport Layer Security (HTTPS) certificates provided by the Umbraco Cloud service.
It is possible to configure a deployment webhook on your environments on Umbraco Cloud projects. This will be triggered upon successful deployments, you can configure where you would like information about the deployment to be posted.
Manage Advanced settings for your project from the Settings menu:
Enable static outbound IP addresses for projects on a Standard, Professional, or Enterprise plan.
Enable IIS logging for each of your environments. The log files can be accessed through kudu in C:\home\LogFiles\http
. There is a rolling size limit on the log files of 100 MB. Once the limit is reached, the oldest log files will be overwritten by new ones.
Change .NET framework runtime for your Umbraco installation for each environment of your cloud project.
When enabling IIS logging, the site will have to restart. For more information about IIS logging, look at the Official Microsoft Documentation.
With this setting, it is possible to create a database backup of one or more of your cloud environments.
Public access is by default available for projects created after the 10th of January 2023.
The Umbraco.Cloud.Cms.PublicAccess package can be installed to enable Public access for projects created before the 10th of January 2023.
You can deny access to your project with the Public access setting.
Users who are not part of the project or whose IP has not been allowed will not be able to access the project.
You can disable/enable it with one click on the Public access page.
Access to manage Public access requires your project to be on the Standard plan or higher.
Manage transport security settings for your project. You can configure certain transport security options for all hostnames or specific hostnames within your project.
If your Umbraco Cloud project uses sensitive information such as API keys, encryption keys, and connection strings, it is recommended to store these as secrets.
You can upgrade your project to a Standard or a Professional plan, from the Settings menu, depending on your needs. The option is not available if you are already on the specific plan or if you are running in Trial mode.
You can rename your Umbraco Cloud project from the Management tab in the menu.
If you are working locally, you need to update the origin of your local git repository to point to the new clone URL. Alternatively, you can make a fresh local clone of the project, once you’ve changed your project name.
You can rename your project from the Rename Project section in the Settings menu on the Umbraco Cloud Portal. When you rename a project, the default hostnames and clone URLs assigned to the project are updated to match the new project name. You can also rename your project files and folders locally.
You can change your Umbraco Cloud project to run in a dedicated setup with additional computational resources compared to the shared setup. You can choose between the different dedicated options depending on the number of resources you will need for your project.
You can delete your Umbraco Cloud project from the Settings menu. Deleting your Umbraco Cloud project is permanent - all data, media, databases, configuration, setup, and domain bindings are removed in the process.
Deleting your Umbraco Cloud project will also cancel any subscriptions you have set up for the project.
This page describes how to set up your Visual Studio solution to work locally with an Umbraco 7 or 8 Cloud project.
This article is only relevant if you are working on a Umbraco Cloud project running Umbraco 7 or Umbraco 8 (legacy Umbraco).
if you are on a later version, follow the working locally article.
If you're writing a lot of custom code (or like Intellisense), we recommend the following setup:
A Visual Studio solution with a
Website Project for the Umbraco site (coming from the cloned git repository from the Umbraco Cloud Project), and
Class Library Project for the code that will be created for the Umbraco site - this can be MVC Controllers, WebApi Controllers, Surface Controllers or data access plus whatever else you might need to write code for.
Below is a screenshot of our recommendation on how the projects should be configured. We use the following naming conventions: *.Web
for the Umbraco website and *.Core
for the accompanying code.
Visual Studio 2017 v15.9.6 or later
Git and/or Git Credential Manager for Windows
Are you used to using a Git client like GitKraken or SourceTree? You still need to make sure that you have Git CLI installed. Git CLI is used by the UaaS.cmd tool to clone down your Cloud project.
Important: The UaaS.cmd tool is no longer supported by Umbraco HQ.
Manually creating and configuring a Visual Studio solution with the right projects can take a bit of time. We have made a little command line tool that will set the solution up for you.
Download the UaaS.cmd tool from umbra.co/uaas-cmd and place it in the folder you want the solution in.
Important: To use the UaaS.cmd tool you will need to have Visual Studio 2017 version 15.9.6 or any later version installed.
Important: Be aware if you run the Uaas.cmd tool as an administrator it will generate the files in your Windows/System folder.
This is a recommended setup. If you don't like the setup then you can play with it and make it your own. There's nothing magic about this setup. It is adding a few files to your Umbraco Cloud website to give you a flying start to begin working with Visual Studio.
What follows is a recommendation and not the only way to work with Visual Studio.
Before running the UaaS.cmd tool you will need the git clone URL for your Umbraco Cloud Project.
Go to the Project in the Portal
Copy the URL from "How to connect my machine"
Running the UaaS.cmd tool will download the latest Visual Studio generator (waasp.exe) and prompt you to enter the clone URL for your Project. Then enter the "Namespace", which will be the name of the Visual Studio solution and thus the namespace for the solution as well.
Does an error appear where the tool says: "Unable to connect to the remote server", but you can still add the clone Url? You then need to allow the UaaS.cmd through your firewall/antivirus.
If you haven't cloned the repository before, you will be asked to enter the username and password for the Umbraco Cloud Project. This also happens if you do not have a git credentials manager installed. In both cases, use the credentials you use to access the Portal and the Umbraco backoffice.
Once it's done running the tool will have created a Visual Studio solution file *.sln
and two Projects.
*.Web
contains the Umbraco site that was (git) cloned from your Project
*.Core
is a Class Library that you can use for your custom code, as mentioned above
Both projects are configured with the NuGet packages for Umbraco using the version that corresponds to the site cloned from Umbraco Cloud.
The result should look something like this within the folder where the UaaS.cmd tool ran:
You can now open the solution in Visual Studio and hit F5
to start the site directly from Visual Studio.
One thing to notice about this setup is that you will get two git repositories as well as two projects.
The site cloned from your Umbraco Cloud Project will be contained within a git repository that is connected to your Project on Umbraco Cloud. Whenever you want to deploy changes to your (remote) Umbraco Cloud site you should commit everything within the *.Web
folder. This is where the git repository for Umbraco Cloud is also located.
Going up one level to where the *.sln
file is located you will notice a .git
folder. This is the second git repository. You should use this repository for all the code you write as well as the solution and project files for Visual Studio.
Think of everything within the *.Web
folder as your deployment repository, and everything surrounding that folder as your source code repository. The Umbraco Cloud repository (within the *.Web
folder) will not (and should not) be committed to the other git repository.
Now that you've added your own touch to your site, you're ready to deploy to your Umbraco Cloud environment. The key thing to know is that your custom code from the *.Core
project will be built into a .dll
file in your *.Web
project. This .dll
file is what you need to push up to the Cloud repository.
Once you have everything your site will need committed you can follow the deployment workflow to complete the deployment.
As mentioned in the previous section, you will start with two projects in Visual Studio. A *.Web
project with the Umbraco site configured as a Website project, and a *.Core
project configured as a class library.
So what goes where?
Anything that is used within Umbraco, like plugins and configuration, should by default be placed in the *.Web
project. Here is a list of other elements that you want to place in the *.Web
project:
Website assets like CSS, JavaScript and related images
Views, Partial Views and Partial View Macros
Configuration (web.config
and all the Umbraco specific or related config files in ~/Config/
)
Usercontrol ascx-files
Plugins (typically located in App_Plugins
)
Meta data (the files that Umbraco Deploy uses in the folder ~/Data/Revision/
)
Media files will also be placed under the *.Web
folder. As Website projects show all files on disk by default you will be able to see these through Visual Studio. Media files from the /Media/
folder should not be committed to the git repository, but more on that in the next section.
We recommend placing all your code in the *.Core
project (instead of, for example, using App_Code for that). This includes, but is not limited to:
Controllers for MVC, Web Api
Controllers for Umbraco Plugins, Surface, API
Models and ViewModels
Data Access (the *.Core
project references Umbraco so you can use the Umbraco datalayer as needed)
Extensions methods
To use ModelsBuilder with IntelliSense in Visual Studio, you'll need to make some configuration changes to the web.config file of your *.Web
project. This is to ensure that the models produced by ModelsBuilder are stored in the right place for compilation.
Make sure ModelsBuilder.Enable is set to true (default): <add key="Umbraco.ModelsBuilder.Enable" value="true" />
Set the Mode to AppData
or LiveAppData
. This will ensure you can use ModelsBuilder with Visual Studio. So in your Web.config, you should to have: <add key="Umbraco.ModelsBuilder.ModelsMode" value="AppData" />
Create a directory called "Models" in your App_Code folder in the *.Web
directory of your site. Then add: <add key="Umbraco.ModelsBuilder.ModelsDirectory" value="~/App_Code/Models/" />
to Web.config.
This will make the models of your Document Types available with IntelliSense in Visual Studio. You can read more about configuring ModelsBuilder here.
Are using the Visual Studio Extension for ModelsBuilder and getting the error message Unauthorized when generating models? You'll need to use or create a backoffice user in your local installation. You then need to supply the credentials for this user in the Visual Studio options. This is necessary because the extension is not able to authenticate against Umbraco Id.
*.Core
projectIn order to use Umbraco's features in your *.Core
project, you have to add references to the DLLs in your *.Web/bin
.
You can do this by right-clicking on References and selecting Add Reference. Browse and select the DLLs you'd like to use and then hit OK. Don't forget to build.
When working with this solution setup it's important to remember that you are operating with two different git repositories:
One for your source code, and
One within the *.Web
folder for committing and deploying your changes to Umbraco Cloud.
The cloned git repository from Umbraco Cloud comes with its own .gitignore
so files that should not be committed are already handled.
All files that are required to run the Umbraco site should be committed to the git repository in the *.Web
folder. From there they can be deployed to Umbraco Cloud. This includes assemblies (*.dll
).
To ensure that your .dll
files are created in release mode, ensure that you switch to "Release" (instead of "Debug") mode when building the project.
It is recommend to build the project in release mode, before deploying the changes through Git.
For the *.Core
part of the solution as well as the solution file and default .gitignore
file you commit that to the source code repository. You should ideally set a remote for this git repository to your own git host like GitHub, BitBucket or Visual Studio Team Services.
These are the files and folders you typically want to commit in your own source code repository:
The project and code files in *.Core
The solution file *.sln
.gitignore
UaaSClone.cmd (used for re-establishing the *.Web
folder with the git repository from Umbraco Cloud)
When you are working in a team you will have additional people that will use this same setup. However, they will only clone your source code repository from your GitHub, Bitbucket, or Visual Studio Team Services account. They will, by default, not get the *.Web
folder and the Umbraco site, because that part is not contained within the source code repository.
To help to get up and running we added a UaaSClone.cmd
, which can be run after cloning the source code repository. Running this command line tool will clone the Umbraco Cloud repository to the right folder, and set up Visual Studio for them.
Some Umbraco packages are available on NuGet and you can install NuGet packages into the *.Web
project to add functionality to your site. Remember, this is a normal Visual Studio solution, so you can work with NuGet packages exactly like you're used to.
If you need to program something that depends on a NuGet package you should install that NuGet package in both projects.
Install it in *.Core
so you can write the code you need against the library you working with (obtained from NuGet)
Also install it in *.Web
so that the library files also end up in your website and your compiled code works there as well
This article explains how you can work with a local clone of your Umbraco Cloud project. The tutorial works with both Windows and Mac.
We recommend using the following tools to work with a local clone of your Umbraco Cloud project:
Git needs to be installed on your computer to clone down the project and push your changes up to Cloud.
We recommend using one of the following git-clients if you are new to Git:
In the root of your local project, there is a README file containing information about the project structure and the build process on Umbraco Cloud.
To clone an Umbraco Cloud project, follow these steps:
Open the project you wish to clone in the Umbraco Cloud Portal.
Click on the arrow next to the Development environment.
Select Clone project.
Copy the clone URL to copy the Development environment's git repository endpoint.
Use your favorite Git client to clone down the project. In this guide, we will use Git Bash.
Type the following command in the Git Bash terminal:
The <Git clone URL>
should be the URL you copied from the Cloud Development environment.
Press Enter.
Once the project has been cloned, you will get a folder with files for your Umbraco Cloud project. Now, you have a copy of your Umbraco Cloud Development environment that you can run locally.
With dotnet installed, run the following commands in a terminal application of your choice. You can also refer to the Readme
file in the project folder.
Navigate to the newly created project folder.
Run the following commands:
Build and run the project:
The terminal output will show the application starting up and will include localhost URLs which you can use to browse to your local Umbraco site.
We recommend setting up a developer certificate and running the website under HTTPS. If you haven't configured one already, run the following command:
The first time the project is run locally, you will see the Restore from Umbraco Cloud screen. If the environment you have cloned already contains Umbraco Deploy metadata files (such as Document Types, Templates, etc), these are automatically extracted with the option to restore content from the Cloud environment into the local installation.
Click Restore to restore your site's content if any. Wait until this process is completed as it also creates the local SQLite database for your site.
When working locally, we recommend using Visual Studio but you can use any other development tool of your choice.
Once the project has been cloned down, you will get a folder with files for your Umbraco Cloud project.
Navigate to src/UmbracoProject
. Here, you will find the files for your Umbraco installation.
Open the UmbracoProject.csproj
file in Visual Studio.
Build and run your solution in Visual Studio.
Working with Visual Studio, you will likely want a solution file, so you and your team can work with an Umbraco Cloud project and have the option to add additional projects.
If you want to add a solution file for your Cloud project, you can do it either:
Using the terminal of your choice, navigate to the root of the git repository of your Umbraco Cloud project and enter the following command:
Open the UmbracoProject.csproj
project in Visual Studio.
Click on the solution:
Save the solution file using the Save as option:
Provide a File name to create the solution file in the folder that you specified.
When creating a solution file, we recommend placing it at the root of the git repository.
When creating new projects alongside the default Umbraco project, we recommend adding the projects to the src
folder in the git repository.
If you want to add additional projects to your solution, you can do it either through the:
Run the following commands to add additional projects to your solution:
Open the UmbracoProject.csproj
project in Visual studio.
Click on the solution:
Right-click the solution and choose Add
-> New Project...
Add a class library using the latest .NET SDK to your project:
Once the Class library (.Core
) has been added, you can see the project(s) that have been added in Solution Explorer.
To rename your Umbraco Cloud project files and folder, do the following:
Navigate to the .umbraco
file at the root of the project and view the following:
The base
property provides the folder location which contains the application and the csproj
property is the name of the .csproj file.
Rename the UmbracoProject
directory and .csproj
file.
Update the .umbraco
file with the new name and any C# code namespaces reflecting the name of your project.
Additionally, if you prefer to organize your code, you can add additional Class Library projects that are referenced by the Umbraco application .csproj file.
For example: Rename UmbracoProject.csproj
to MyAwesomeProject.Web.csproj
and have one or more additional class library projects such as MyAwesomeProject.Code.csproj
It's a good idea to update the namespace used in the Program.cs
, Startup.cs
and _ViewImports.cshtml
files so the naming is consistent throughout your project structure. Once updated, you will need to clear out the bin
and obj
folders locally to avoid build errors. When you are done, commit the changes and push them to Cloud.
If you have already built and run the project locally using the original project file and folder, make an update in your local .git repository to reflect the change that has been made. When a Cloud project first runs, a git hook is created to trigger a schema update via Umbraco Deploy when changes are pulled from an upstream environment.
The file you'll need to update is post-merge
within .git/hooks/
in your cloned environment files. It can be opened with a text editor. You can either delete the file so it will be recreated with the new path or update it. The default contents are shown below and can be updated to reflect the new path to the umbraco/Deploy
folder.
Umbraco HQ offers a full-day training course covering best practices for developing with Umbraco Cloud. The course targets frontend and backend developers who currently work or plan to work with Umbraco Cloud.
The following changes in Certificate Authority (CA) used to issue certificates for all Umbraco Cloud sites' for new and existing custom hostnames.
Not sure if your Cloud project is using a CAA record or not?
You can use this to check whether a CAA record is configured on your hostname(s).
From September 26, 2022, certificates are issued using 'Google Trust Services' instead of 'DigiCert', and Certificate validity will be decreased from 1 year to 90 days.
From October 31, 2022, certificate renewals will no longer use 'DigiCert' as the issuing CA. The renewed certificate will instead be issued by 'Google Trust Services', and certificate validity will be decreased from 1 year to 90 days.
No action is required unless you set a Certificate Authority Authorization (CAA) record on your domain.
From October 31, 2022, Certificate renewals will no longer use 'DigiCert' as the issuing CA. This means that you need to update your CAA record to allow 'Google Trust Services' issuing certificates for your domain.
The CAA record should be changed from:
to
In this article, you can read about how you can upgrade your Umbraco Cloud plan and what you need to be aware of before you do so.
Before you decide to upgrade your Umbraco Cloud plan, you need to consider a few things:
Changing a plan for a project will change the outgoing IP of the project. If your solution has an external service that requires whitelisting the outgoing IP of the project, please visit the documentation for prior to the upgrade.
If you are on the Starter plan, you can either upgrade your plan to a Standard or a Professional plan.
On the Standard plan, you have the option to upgrade to a professional plan.
Before upgrading, make sure to check the and the features you get on the new plan.
The first step to upgrading your Umbraco Cloud plan is to access your project in the project overview at .
In the project overview, you can find all the projects that you have been invited to or have created.
From here you need to find the project that you want to upgrade the plan.
Under the project on the right side, you have a dropdown menu called settings:
In the menu, you can find a tab called "Upgrade plan".
Clicking on the tab will direct you to the overview of the plans that you can upgrade to.
From here you can see the different plans, the price per month, and the limitations between each of the plans.
If you are on a Starter plan you can upgrade to the Standard and the Professional plan.
If you are on the Standard plan you can upgrade to the Professional plan.
Follow the below steps to upgrade your plan:
Click on the Select Plan button to choose the plan you want to upgrade to.
[Optional] Choose to upgrade to a dedicated option in the next step.
Review the Summary to make sure that everything selected is correct in the last step.
Once you click the Upgrade Project button, the project will be upgraded to the new plan and if selected to a dedicated server.
The change in price will take effect from the next period of your subscription.
Are you changing the plan in the middle of the month? The time from that date until the start of the next subscription period will be added to the next invoice.
When upgrading or downgrading the plan, the ID of your project will be appended with a -1
. If there is already a -1
, it will be removed. If you use this ID anywhere, you might need to change the ID in that location.
If your project/website exceeds any of the usage limits, you will automatically get upgraded to a plan that fits your actual usage to ensure your website keeps running smoothly.
We will send an email to the project owner and the technical contact(s) of the project to let you know that this has happened. The upgrade to a new plan will be reflected in your next bill and will count from the day of the upgrade.
If you’d like to downgrade, this is possible if you make sure to lower your limit to fit the desired plan.
When you’ve lowered the required data usage, reach out to Umbraco Support and they’ll be able to help downgrade your plan. When downgrading to a lower plan, this will come to effect immediately, meaning that your usage limits will be reduced and any extra features related to your previous plan will be deactivated. You will pay for the old plan until the next scheduled bill.
This feature is only available for Umbraco Cloud projects on a Professional or Enterprise plan.
All projects on Starter, Standard, or Professional plans will automatically be assigned a Transport Layer Security (HTTPS) certificate.
See the full list of features in the on the Umbraco website.
To manually upload your certificate on the Umbraco Cloud Portal and assign it to one of the hostnames you've added:
Go to your project on the Umbraco Cloud portal.
Click Settings -> Certificates. The Manual Certificates window opens.
Your certificates need to be:
In .pfx
format.
Must use a password.
Cannot be expired.
Signature algorithm must be SHA256WithRSA, SHA1WithRSA or ECDSAWithSHA256
The .pfx
file can only contain one certificate. Each certificate can then be bound to a hostname you have already added to your site. Make sure you use the hostname you will bind the certificate to as the Common Name (CN) when generating the certificate.
Click Add New Certificate.
Select Choose file in the Certificate (.pfx file) field and upload your certificate from your local machine.
Enter the Password for your certificate.
Click Add.
Click Add new binding.
Choose your hostname from the Hostname dropdown.
Choose your newly uploaded certificate from the Certificate dropdown.
Click Add.
You've now successfully added your certificate to the Cloud project.
In some cases, you might want to switch from using your custom certificate to using the ones provided by the Umbraco Cloud service.
By removing your certificate from your Cloud project, the Umbraco Cloud service will automatically assign a new TLS (HTTPS) certificate to the hostname.
Did your manually uploaded security certificate expire?
You will need to remove the expired certificate for Umbraco Cloud to assign a new certificate to your hostname(s).
To make rewrite rules on Umbraco Cloud as seamless as possible, we've installed the IIS Rewrite Module on all our Umbraco Cloud servers.
You need to use to add rewrite rules.
If you are running Umbraco 8, the rewrite rule can be added directly to your project's web.config
.
The rewrite rules should be added to the <system.webServer><rewrite>
module in your project's web.config
file.
When you are doing rewrite rules on Umbraco Cloud there are a few important things to keep in mind:
Always make sure that you add a condition that negates the Umbraco Backoffice - /umbraco
, otherwise, you will not be able to do deployments to/from the environment
To be able to continue working locally with your Umbraco Cloud project, you also need to add a condition that negates localhost
Once you've assigned a hostname to your Live environment, you may want to "hide" the project's default URL (e.g. example.euwest01.umbraco.io) for different reasons. Perhaps for SEO or to make it clear to your users that the site can be accessed using only the primary hostname.
One approach for this is to add a new rewrite rule to the <system.webServer><rewrite><rules>
section in the web.config
file. For example, the following rule will redirect all requests for the project example.euwest01.umbraco.io URL to the example.com URL (using HTTPS and including the www.
prefix) and respond with a permanent redirect status.
This will not rewrite anything under the /umbraco
path so that you can still do content deployments. You don't have to give your editors the umbraco.io URL, and they won't see the umbraco.io URL if you give them the actual hostname. This rule will also not apply to your local copy of the site running on localhost
.
Once you've applied a certificate to your site, you can make sure that anybody visiting your site will always end up on HTTPS instead of the insecure HTTP.
To accomplish this, add a rewrite rule to the live environment's web.config
in the <system.webServer><rewrite><rules>
section.
For example, the following rule will redirect all requests for the site http://example.com URL to the secure https://example.com URL and respond with a permanent redirect status.
This redirect rule will not apply when the request is already going to the secure HTTPS URL. This redirect rule will also not apply to your local copy of the site running on localhost
.
It is possible to transform all of your URLs to use a trailing slash consistently for SEO.
To accomplish this, add a rewrite rule to the Live environment's web.config
in the <system.webServer><rewrite><rules>
section.
For example, the following rule will redirect all requests for https://example.com/page
to https://example.com/page/
, and respond with a permanent redirect status. This way you can ensure that you use the trailing slashes consistently on your site.
Take note of the negates in the rewrite rule.
Another example would be to redirect from non-www to www:
Adding the .azurewebsites.net
pattern is required for the deployment service and the content transfer between environments to continue to function.
Sometimes, you might experience an issue where a .azurewebsites.net
link will appear instead of the custom hostname. In this case, a restart will usually fix the issue, however, it is not ideal that this appears at all.
The following redirect is a way to amend the issue where the .azurewebsites.net
link appears instead of the hostname. It will redirect from the .azurewebsites.net
link to the hostname of the website, should this link be called instead.
The redirect for .azurewebsites.net
can be used on projects where only one custom hostname is configured.
If you're using the consider changing them to the new A & AAAA records above.
You can also check the DNS propagation using a site like .
Once you've assigned a Hostname to your Umbraco Cloud environment, you may want to hide the default umbraco.io
URL (e.g. snoopy.euwest01.umbraco.io). To do so, see the article.
CAA is a defined in RFC 6844 allowing domain owners to indicate which Certificate Authorities (CA) allow to issue certificates for them. If you use CAA records on your domain, you will either need to remove CAA entirely or add the following through your DNS provider:
No action is required unless you set a Certificate Authority Authorization (CAA) record on your domain. In that case you need to update the CAA record before renewal. Please follow the documentation.
Be on a that supports custom certificates.
or - for running the project on your local machine.
To run your Umbraco Cloud project locally, you will need to (if you do not have this already).
You can create content, add media, and create your custom code. When you're ready to deploy your changes make sure to have a look at the documentation.
If you have more than "a few" media items, see our recommendations for working with .
to learn more about the topics covered and how it can enhance your Umbraco development skills.
When you get upgraded to a new plan, you also get access to all the features that are included in this plan. .
If you have any questions regarding this, feel free to reach out to .
It is important to negate the path to files on your site because with the trailing slash added, your media will not show correctly after .
As we continue to gather insights from our users, there are some known limitations and considerations to be aware of.
Format Restrictions
The packaged artifact from your CI/CD pipeline must adhere to the Umbraco Cloud API's required format, which is a zip source file. This could necessitate changes to your existing build and packaging scripts.
Workflow considerations
To ensure smooth execution of the CI/CD Flow, it is recommended to make schema changes in the leftmost environment. Ideally, this means the local development environment. Schema changes include changes made to Document Types, Data Types, Templates, and the like. The intention behind this principle is to prevent conflicts that could potentially arise due to simultaneous modifications made in different environments.
Additional Build Step
The flow feature adds an extra build to the deployment process. As a result, it takes longer to post to Umbraco Cloud using Umbraco CI/CD Flow compared to standard deployments.
Conflict Management
Given the necessity to avoid changes in other environments, the lack of strict coordination among multiple teams or individuals working on the same project elevates the risk of conflicts.
Direct Commits to Umbraco Git Repos: Any commits made directly to the Umbraco-git-repos will cause the process to fail.
Remote Build/Test Options: It is currently not possible to skip the first build step before committing.
Incomplete API:
The list endpoint lacks filtering capabilities.
The promotion endpoint for transitioning from dev to stage to live is not fully functional yet.
Hotfix Deployments: Direct deployments to a specific environment are not supported at this time.
Lack of Predefined Tasks: There are no Umbraco-provided Azure DevOps tasks or GitHub Actions available.
No Webhooks: Currently, there's no webhook support for real-time feedback to the pipeline; polling is the only option.
Casing Conflicts: Be cautious of casing issues, such as having a README.md file created by Azure DevOps and a Readme.md
file from the default Umbraco Cloud, as this can cause conflicts in the cloud Git repository.
Documentation Alignment: We are in the process of updating our documentation to align with standard Umbraco guidelines.
Developer Experience: Plans are underway to create Umbraco-specific Azure DevOps tasks and GitHub Actions to enhance the developer experience.
All Media files for Umbraco Cloud projects are stored in Azure Blob Storage containers. Each environment has a separate container linked to it.
All media files on your Umbraco Cloud projects are stored using Azure Blob Storage. This means that the media files are not stored with the rest of your project files but in an external storage system.
To access the media files on your Umbraco Cloud project you can either:
Clone your Cloud environment to your local machine (Recommended)
Azure Blob Storage is an external storage system, that the Umbraco Cloud service uses to store all media files on Umbraco Cloud projects. To learn how you can connect to your Blob Storages, read the Azure Blob Storage article.
When you clone one of your Cloud environments to your local machine, you will need to run a content restore from the backoffice to get a copy of all the media files from the Azure Blob Storage container connected to that environment.
You can learn more about how this works in the Restoring content article.
When you add new media files to your project while working on a local clone, the files will automatically be added to the Azure Blob Storage container connected to the environment you deploy to.
Each environment on your Umbraco Cloud project has a separate Azure Blob Storage container. Each of your environments uses a storage container specific to that environment.
When you deploy between two environments on your Umbraco Cloud project the media files will be copied from one storage to the other, depending on which environment is being transferred to and from.
As an example, imagine that you are transferring new content changes from your Development environment to your Live environment. When you initiate the transfer, all media files from the Azure Blog Storage container connected to your Development environment will be copied and pasted into the container connected to your Live environment. Once all content changes have also been transferred, and the transfer is complete, your Media libraries on the two environments will now be in sync.
You will notice that there is a Media (wwwroot/media
) folder in your project files. This folder usually holds all media files associated with a Umbraco project. As your Umbraco Cloud environments are all configured with Azure Blob Storage, the media files are not in this media folder.
Instead, you will find a project.assets.json
file in the obj
folder. This file is used to connect the Media library on your Cloud environment to an Azure Blob Storage container.
In some cases, you might want to connect to your Azure Blob Storage container for the environments on your Umbraco Cloud project. This could be to clean up unwanted media files or to download the current contents of the library.
Instead of connecting to your Azure Blob Storage container using the following approach, you can clone your Cloud environment to your local machine and access the files from there.
You should only use the following approach when you do not have the option to clone down the environment to your local machine.
To do this, you need to know some details about the connection between the environment and the Azure Blob Storage containers. Below are the steps you need to follow, to locate the necessary variables:
Access Kudu on your Cloud environment.
Locate the Environment page in the top navigation.
Scroll to the section containing Environment variables.
There are 4 variables related to the Azure Blob Storage container in your environment:
APPSETTING_UMBRACO__CLOUD__STORAGE__AZUREBLOB__CONTAINERALIAS
APPSETTING_UMBRACO__CLOUD__STORAGE__AZUREBLOB__CONTAINERNAME
APPSETTING_UMBRACO__CLOUD__STORAGE__AZUREBLOB__ENDPOINT
APPSETTING_UMBRACO__CLOUD__STORAGE__AZUREBLOB__SHAREDACCESSSIGNATURE
Once you have the variables, use the "Connect to Azure Storage Explorer" guide to connect to your storage container.
If your Umbraco Cloud project uses sensitive information such as API keys, encryption keys, and connection strings, it is recommended to store these as secrets.
There are two ways to add secrets to your Cloud project, as an Environment Secrets or as a Shared Secrets.
Environment Secrets are intended to be utilized exclusively within a particular environment during the runtime of your Umbraco solution.
Shared Secrets are utilized across all environments and will be seamlessly integrated into any new environment you create. Shared Secrets are particularly well-suited for safeguarding credentials necessary for project development, such as access to private NuGet feeds.
Utilizing environment-specific secrets for private NuGet feeds will result in the unsuccessful creation of new environments due to the unknown status of the secret. In such instances, Shared Secrets should be used.
Typical secrets are Private Keys, 3rd-party API tokens, database passwords, or otherwise sensitive data that needs to be kept secret.
When the secrets have been added they will be exposed exclusively to the assigned environments.
It will be assigned as an environment variable at runtime using the assigned name for the secret.
It will then use a reference that only the managed identity of the environment has access to.
Starter Plans have a limit of 5 secrets per environment, whereas higher-tiered plans have no limit.
When adding a secret to your environment it will restart.
To add a secret to your environment follow these steps:
Go to your Umbraco Cloud project
Go to the settings section and go to Secret Management
Choose either shared or environment secrets
Choose the environment to add the secret and click Add secret
Add the Key and the Value in the fields and click Add secret
Save the key to the environment.
When you develop locally, you cannot access secrets that are stored in the key vault associated with a cloud environment.
We recommend that you use common methods for handling secrets locally, such as using app settings in the appsettings.development.json
.
The app setting should not be committed to the code repository or it needs to be ignored via a gitignore
file.
An example could be that you have a secret in a cloud environment with the key name "ApiKey",
You should specify this with a corresponding name in a configuration file such as appsettings.development.json
:
Secrets for cloud environments are stored in a key vault and loaded by the app service (using a key vault reference) as an environment variable.
This enables you to get the value at runtime as you normally would fetch an environment variable.
You can use the method, getting it from the System namespace in .NET as below:
_secretMessage = Environment.GetEnvironmentVariable("SecretMessage");
Secrets can also be used to override AppSettings defined in appsettings.json
files.
In order for this to work, when adding the secret, the Key value should be all the settings' names joined by double underscores.
For example, to change the Serilog's default options under Serilog:MinimumLevel:Default
, the Secret key would look like this:
Serilog__MinimumLevel__Default
The value defined in appsettings.json
file will be overwritten with the Cloud Secret's value.
When naming a secret, it is possible to use alphanumeric characters as well as '_' (underscore).
Some words are reserved and cannot be accepted:
COMMAND
HOME
PORT
REMOTE
DEBUGGING
VERSION
REGION_NAME
CONNECTIONSTRINGS__UMBRACODBDSN
The following prefixes are not accepted.
The list consists of:
UMBRACO_
WEBSITE_
SCM_
SDEPLOY_
DEPLOYMENT_
DOCKER_
CONTAINER_
DIAGNOSTICS_
APPSERVICEAPPLOGS_
WEBSITE_
DOTNET_
IDENTITY_
MSI_
WEBJOBS_
FUNCTIONS_
AzureWebJobsWP_
PHP_
FILE_
DATABASE_
WORDPRESS_
MACHINEKEY_
The following prefixes are allowed for Secrets on Umbraco Cloud:
Umbraco__CMS__Global__Smtp__
Umbraco__Forms__Security__FormsApiKey__
Umbraco__Forms__FieldTypes__Recaptcha__
Umbraco__CMS__Integrations__
Umbraco__CMS__DeliveryAPI__
UMBRACO__LICENSES__
It is also possible to use Secrets to save API keys, Passwords, and ReChaptcha for all our Umbraco products on Umbraco Cloud.
Do you have an existing or new secret that you want to add to a key vault that conflicts with the name restrictions?
Then please contact Umbraco support, then we will consider it as soon as possible.
A private NuGet feed is a package repository that is only accessible to a specific group of users, rather than being publicly available.
Private feeds are often used to host internal libraries or proprietary software within an organization.
NuGet is a package manager for the Microsoft development platform, including .NET
. It gives you the ability to add, remove, and update libraries and tools in Visual Studio projects.
In this tutorial, we'll be covering how to set up a private NuGet feed with Umbraco Cloud.
To follow along with this tutorial, you'll need the following tools:
A NuGet server such as MyGet
An Umbraco Cloud project on a standard plan or higher
The first part of this tutorial is to create and publish a NuGet package using Visual Studio.
To create and publish a NuGet package with Visual Studio, you will need to follow the Microsoft Documentation.
Once the first step is completed, we need to create our own MyGet feed.
To create the MyGet feed, follow the MyGet documentation.
When you create the MyGet feed, it needs to be created as private.
We will publish our NuGet package to your MyGet feed in the third step.
There are two ways to do so:
Go directly to your MyGet feed and upload the NuGet package.
Follow the Microsoft Documentation.
In the last step, we will add the private feed to our Umbraco cloud project.
To add the private feed to your Cloud project, follow the steps below:
Access the cloud Secrets Management.
Add your MyGet credentials as a Shared Secret.
Clone down your Umbraco Cloud project.
Open the project locally and build/spin up the site.
Go to your NuGet.config
file in the root of your project.
Add the below configuration to the file:
In the above code example, you can see that we are using the Key: "MYGET_PASSWORD
" that we created in the previous step. We did that by using the Cloud Secrets Management feature on Umbraco Cloud.
Push the changes to your Umbraco Cloud project.
Congratulations, you've successfully set up a private NuGet feed with Umbraco Cloud using the cloud secrets management feature!
You can now use this feed to host and manage your own internal libraries or proprietary software. If you want to learn more about NuGet and how to use it, check out the official NuGet documentation.
Azure Blob Storage is an external storage system, that the Umbraco Cloud service uses to store all media files on Umbraco Cloud projects.
This includes everything that is added to the Media library through the Umbraco backoffice, like images, PDFs, and other document formats.
In some cases, you might want to store other files in the Blob Storage than Media files.
Below are two articles describing how to connect to your environment Blob Storage, and upload files either through Azure Storage Explorer or programmatically.
You can learn more about Azure Blob Storage in the Microsoft Documentation.
When you are about to go live with your website on Umbraco Cloud, there are a few things you might want to consider beforehand.
Below are a few suggestions that you might want to look into:
While you get a lot of fantastic features with Umbraco Cloud, SMTP server is not something that is available. There are many reasons for setting up an SMTP service on your Cloud project. For example, if you are working with Umbraco Forms.
Working with Umbraco Forms, allows you to set up email workflows that enable you to send emails through Forms - This requires an SMTP service. Another great use of SMTP service is if you want to add users to your project's Backoffice. The service requires SMTP to send the invitation from the project to the new user. This also applies to sending emails to users who have requested a password reset.
When you create a project on Umbraco Cloud, the generated project URL is based on the project's name and that might not be the preferred URL for your website. Therefore, you have the option to add your hostname.
Before adding a hostname, you need to update your DNS host domain registrar DNS entries to resolve to umbraco.io
. We recommend setting a CNAME record for your site using the dns.umbraco.io
Umbraco Cloud DNS record. You can read more about how to do this under Manage Hostnames.
The last step before your website goes live and is accessible to the public is to deploy it to the Live environment. When everything has been tested in your development environment or locally, you are ready to deploy the site to your live environment and make it public.
If you would like to keep track of what goes on with your website after it has gone live, you can set up a Deployment Webhook. This is a great way to keep an eye on your project and it works great with Slack.
In Trial mode, by default, Public Access is disabled on all environments and cannot be enabled. As soon as a subscription is purchased, Public Access is enabled on the Live environment with the option to disable it again.
With Application Insight, you can collect telemetry about your cloud project, including web server telemetry, web page telemetry, and performance counters.
To install Application Insight on your Umbraco Cloud project read the Application Insights for ASP.NET Core applications article in the Microsoft documentation.
As projects on Umbraco Cloud are hosted on a shared infrastructure, the information that
you gather through Application Insight can be a misrepresentation.
Since several projects share the same resources Application Insight will gather information based on the overall resources used.
To gather accurate information using Application Insight, you must move your project to a dedicated server.
For more information about Application Insight, check out Microsoft's documentation on Application Insights
This section provides a step-by-step guide to setting up a CI/CD pipeline in Azure DevOps using the provided sample Bash or Powershell scripts.
Before setting up the pipeline in Azure DevOps, make sure that the following steps from the Configuring a CI/CD pipeline are done:
Pick a Cloud project
Activate CI/CD Flow
Next, you will need to define your pipeline in YAML and use it to interact with the Umbraco Cloud API.
The Umbraco CI/CD Team has created a sample pipeline for Azure DevOps.
The Scripts are provided as is. This means that the scripts will do the bare minimum for a pipeline that is utilizing the CI/CD flow.
You'll need to adapt and integrate the script into your own pipelines to gain the ability to do deployments to your Umbraco Cloud projects.
The sample includes YAML-files and custom Powershell and Bash scripts to interact with the Umbraco Cloud API.
You can get the samples for both Azure DevOps
and GitHub Actions
from the Github repository.
Please be aware that since this involves using your custom pipeline, any issues that arise will need to be resolved by you.
Go to your repositories in Azure DevOps and click on "Create a repository".
Create a new empty repository (don't add a README and don't add a .gitignore), and note down the clone URL.
Go to the Umbraco Cloud Portal and clone your cloud project down locally. This article describes how you can find the clone URL.
Now working locally remove the Git Remote called origin
, which currently points to Umbraco Cloud
Optionally rename branch master
to main
Add a new remote called origin and pointing to the Azure DevOps clone URL and push
Now we can move on to setting up a pipeline.
While working with the project on your local machine, follow these steps to prepare the pipeline, using the samples from the repository.
Download the provided sample scripts as ZIP from the GitHub repository. Click on "Code" and then choose "Download ZIP". Then unzip it and use those files for the next steps.
Select your preferred scripting language:
For a pipeline that uses Powershell scripts you will need the following files:
From the root folder
cloud.zipignore
From the powershell
folder
Get-LatestDeployment.ps1
Get-ChangesById.ps1
New-Deployment.ps1
Add-DeploymentPackage.ps1
Start-Deployment.ps1
Test-DeploymentStatus.ps1
From the powershell/azuredevops
folder
azure-release-pipeline.yml
cloud-sync.yml
cloud-deployment.yml
Do the following to prepare the pipeline:
Copy the cloud.zipignore
file to the root of your repository
Make a copy of the .gitignore
from your repository and call the copy cloud.gitignore
Both files should be in the root of your repository
In the bottom of the .gitignore
file add the line **/git-patch.diff
Also in the root, create a folder called devops
Copy the 3 YAML files from the powershell/azuredevops
folder into the devops
folder
Inside devops
create an additional folder called powershell
Copy the Powershell scripts from the powershell
folder to the powershell
folder
Note: If you have not changed the branch to main
, then in the azure-release-pipeline.yaml
file change the branch from main
to master.
Commit all changes, and push to Azure DevOps
For a pipeline that uses Bash scripts you will need the following files:
From the root folder
cloud.zipignore
From the bash
folder
get_latest_deployment.sh
get_changes_by_id.sh
create_deployment.sh
upload_package.sh
start_deployment.sh
get_deployment_status.sh
From the bash/azuredevops
folder
azure-release-pipeline.yml
cloud-sync.yml
cloud-deployment.yml
Do the following to prepare the pipeline:
Copy the cloud.zipignore
file to the root of your repository
Make a copy of the .gitignore
from your repository and call the copy cloud.gitignore
Both files should be in the root of your repository
In the bottom of the .gitignore
file add the line **/git-patch.diff
Also in the root, create a folder called devops
Copy the 3 YAML files from the bash/azuredevops
folder into the devops
folder
Inside devops
create an additional folder called scripts
Copy the Bash scripts from the bash
folder to the scripts
folder
Note: If you have not changed the branch to main
, then in the azure-release-pipeline.yaml
file change the branch from main
to master.
Commit all changes, and push to Azure DevOps
The pipeline needs to know which Umbraco Cloud project to deploy to. In order to do this you will need the Project ID
and the API Key
. This article describes how to get those values.
Now go to the repository in Azure and click on "Set up build".
On the next screen click on "Existing Azure Pipelines YAML file"
Select main
(or master
if you did not change the branch name) in Branch
Select /devops/azure-release-pipeline.yaml
in Path and continue
Now you are on the "Review your pipeline YAML" screen
Replace the ##Your project Id here##
with the Project Id you got from Umbraco Cloud Portal
Click on "Variables"
Add the variable umbracoCloudApiKey
with the value of the API Key you got from Umbraco Cloud Portal
It is recommended to handle the API Key
as a secret. This can be done by ticking the "Keep this value secret" checkbox.
You can customize the names for the variables as you like, however you then need to rename the affected variables in azure-release-pipeline.yaml
.
When you click on "Save and Run" your first deployment will be triggered. Which means that Azure DevOps is set up with all the needed information to be able to deploy your Cloud project back to Umbraco Cloud.
With everything set up, you may want to confirm that Umbraco Cloud reflects the changes you are sending via your pipeline.
While working on your project locally, add a new Document type.
Commit the change to main
branch (or master
if you did not change the branch name) and push to your repository.
The pipeline starts to run
Once the pipeline is done log into Backoffice on your left-most environment in Umbraco Cloud
Go to the Settings section and see that your new Document type has been deployed
The mentioned scripts are provided as a starting point. It is recommended that you familiarize yourself with the scripts and with documentation related to how to use Azure DevOps.
The scripts demonstrates the following:
How to sync your Azure DevOps repository with the left-most project environment in Umbraco Cloud
How to deploy changes to the left-most project environment in Umbraco Cloud
The azure-release-pipeline.yaml
is the main pipeline, and is the one that will be triggered on a push to main
branch. You can configure a different trigger behavior in this file.
You can add your Build and Test stage between the cloudSyncStage
and cloudDeploymentStage
stages. Keep in mind that you do not need to retain the dotnet build artifact for upload later. The cloudDeploymentStage
job will take care of packaging all your source code and upload to Umbraco Cloud.
The cloud-sync.yml
shows how you can sync your Azure DevOps repository with the left-most environment of your Cloud project. In this sample, it accepts any change from the API and applies and commits it back to the branch which triggered the pipeline. However the commit does not trigger the pipeline again.
If you don't want the pipeline to commit back to the triggering branch, this is where you need to change the pipeline.
The cloud-deployment.yml
shows how you can deploy your repository to the left-most environment of your Cloud project. The sample shows how to prepare for deployment, request the deployment and wait for cloud to finish.
There are a couple of things here to be aware of:
We are overwriting the .gitignore
file with cloud.gitignore
. This is a way to accommodate your gitignore-needs when working locally. For instance you might want to ignore frontend builds, but you want them build and published to cloud.
We have a special cloud.zipignore
file. This is a convenient way to tell the pipeline which files not to include when creating the zip package to send to cloud.
If you have frontend assets that needs to be built (using tools like npm/yarn or others), you should add the needed steps before Zip Source Code
. This is to ensure that the fresh frontend assets will be part of the package to be sent to Umbraco Cloud.
RestorePackagesWithLockFile
in your .csproj fileIf RestorePackagesWithLockFile
is used and set to true, you will experience that no changes will be made to the website. This happened even though the CI/CD deployments were completed successfully, and files were updated as expected in the Cloud repository.
The reason for this is that the KUDU deploy process fails. This process takes the newly committed files from the cloud repository and runs restore, build, and publish on the cloud environment.
To resolve this issue, remove the RestorePackagesWithLockFile
to allow the deployments to go through as expected.
The mechanism to determine changes since the last deployment is not able to do so when the left-most environment has changed. This happens when you either add or remove the development environment. The get diff endpoint responds with status 409 and the following json payload:
You will need to manually make sure that all latest changes on your left-most environment in cloud is also present in your local copy.
Once this is done you can run a new deployment, where you skip the cloud-sync step.
If you experience problems with your development environment not properly booting up after deployment, read the Unable to determine environment by its {environment-id} guide.
The sample pipelines are naively trying to apply any change coming from the generated patch file on cloud. This doesn't always work and you might see an error similar to the following:
The root cause is due to conflicts between your source and the code in the repository on Umbraco Cloud. This is usually due to one of two things:
Cloud project package(s) has been auto-upgraded, and that diff was already applied.
You and your team are not following the "left to right" deployment model.
In both cases you have to make sure that your repository is up too speed with any changes there are in the cloud environment. You will have to resolve potential conflicts manually.
Once that has been done, you should run a new deployment without the cloud-sync
step.
For Azure DevOps, see the Skip cloud-sync in Azure DevOps section.
Ensure your GitHub repository is up-to-date with any changes in your Umbraco Cloud environment.
Locate the main.yml file in the following directory: {projectname}.github\workflows on tour local project.
Open the main.yml file in a text editor and navigate to the “jobs” section.
Comment out the entire “cloud-sync” section and the “needs: cloud-sync” under “cloud-deployment”. An example is provided in the screenshot below.
Commit the changes, and push them to GitHub. This action will trigger a build and run the pipeline.
At this point, the pipeline should execute successfully and your changes will be pushed to Umbraco Cloud. If this is the case, proceed to the next step.
Uncomment the lines you previously commented out and make a new commit. Push these changes to GitHub.
Optional: Add "[skip ci]" to the last commit message, to avoid automatically triggering the pipeline
Your pipeline should now be functioning as expected.
For GitHub, see the Skip cloud-sync in GitHub section.
With a few clicks you can manually trigger a pipeline to run without the cloud-sync:
Ensure that your Azure DevOps repository is up to date with any changes in your Umbraco Cloud environment.
Find the pipeline in Azure DevOps.
Click on "Run Pipeline" in the top right corner.
Click on "Stages to run"
Uncheck the "Umbraco Cloud Sync" checkbox. Confirm on "Use selected stages".
Click on "Run" back in the "Run Pipeline" view.
As no changes were made to your pipeline, it will run as usual on next push to Azure DevOps.
We currently have a size limit set to 134217728 bytes or about ~128 MB.
Make sure that the package you are trying to upload does not contain anything unnecessary.
You can see an example of how you could zip your repository before uploading it, by referring to our Github or Azure Devops samples.
The service goes through all .csproj-files contained in the uploaded package, and compares that to the versions running in your left-most cloud environment. We do this to try to prevent you from downgrading the crucial Umbraco packages used by cloud.
The full error could look like this:
The error tells you which package to look for and which version is currently in your left-most cloud environment. The error also contains the problematic incoming .csproj-file and the version referenced by it.
If the incoming package references multiple packages with lower versions, the error will list each one.
We recommend aligning the package versions in your .csproj files with the higher version mentioned in the error for that package or a later version.
If you have orphaned csproj-files you should remove them or rename them. Orphaned would be backup .csproj files or files not referenced by any of the main project files nor referenced in a .sln file.
In some instances we see an issue where filename casing is causing an error.
Rename the Readme.md
file in the root of your repository to something different, the file can keep the markdown-extension. Commit the change to your repository and run the pipeline.
If you want you can change the filename back to Readme.md
after a successful CI/CD deployment.
In rare cases deployments fail, and the cloud infrastructure doesn't clean up correctly. This leaves behind an "updating" marker. The next time you try to deploy through your pipeline you will encounter an error.
In order to fix this issue, you need to use KUDU to remove the leftover marker file.
Access KUDU on the "left-most" environment
If you only have one environment you want the live environment
If you have more than one environment, you want the development environment
Navigate to site
> locks
folder In there, there should be a file named updating
Remove the updating
file.
Once the marker file is removed, run your pipeline again.
This happens when you use the CI/CD feature of Umbraco Cloud to deploy changes to your live environment, and later add a development environment. Your development environment will fail to boot up and will show the following error message:
This issue arises because the development environment is missing in the local umbraco-cloud.json file. To resolve this issue, follow these steps:
Navigate to Kudu in your Live environment
Select “Debug console” and choose “CMD”.
Find the umbraco-cloud.json file. Path to this file may vary depending on your setup, but the default location on cloud is C:\home\site\repository\src\UmbracoProject
Click ‘edit’ on the file and copy all its content. This content is consistent across environments, so it’s safe to do so.
Paste the copied content into the umbraco-cloud.json file in your local project and push the changes.
After completing these steps, your development environment should be correctly registered across all environments, allowing you to continue your work without any issues.
Umbraco CI/CD Flow is designed to facilitate the seamless integration of your existing CI/CD flow with Umbraco Cloud. The primary objective of this feature is to enable your automated workflows to deploy directly to Umbraco Cloud. This lets you leverage the best of both worlds: the robustness of your current CI/CD setup and the specialized hosting environment of Umbraco Cloud.
Umbraco Cloud continues to be a cornerstone in this setup, providing a cloud-based hosting solution specifically optimized for Umbraco CMS. With integration to your Continuous Integration and Continuous Deployment (CI/CD) pipeline, Umbraco CI/CD allows the inclusion of automated workflows. These automated workflows include building, testing, and deploying your Umbraco projects.
Explore the practical benefits of using Umbraco CI/CD Flow for your development and deployment needs. This solution aims to simplify your workflow, improve team collaboration, and reduce deployment time. Here are some key advantages to consider:
Seamless Integration with Existing CI/CD
Umbraco CI/CD Flow allows customers to connect their existing CI/CD pipelines to Umbraco Cloud, making the transition smoother and reducing the learning curve.
Enhanced CI/CD Features
The feature enables unique CI/CD features like PR-flows and automated tests, which are not natively available in Umbraco Cloud. This adds a layer of quality assurance and streamlines the development workflow.
Scalability and Flexibility
Umbraco CI/CD Flow allows for greater scalability and flexibility in your deployment process. You can adapt your existing CI/CD pipeline to handle larger projects or more complex workflows without having to overhaul your Umbraco Cloud setup.
Centralized Management
With Umbraco CI/CD Flow, you can centralize the management of your deployments, tests, and workflows. This makes it easier to monitor, troubleshoot, and optimize your processes, leading to more efficient and reliable deployments. Automating deployment minimizes the risc for human errors that could have a negative effect on the target environment.
Umbraco CI/CD Flow serves as a bridge between your existing CI/CD pipeline and Umbraco Cloud, enabling a more streamlined and automated deployment process. While it offers a number of advantages, there are also limitations that need to be considered. On the page 'Known Limitations and Considerations' you will find a detailed list of the pros and cons of using Umbraco CI/CD Flow.
The CI/CD process for Umbraco projects involves some key steps, from code development locally to deployment to Umbraco Cloud. The flow is generally as follows:
Code Development: Developers work on features or bug fixes in their local environments.
Customer code repository: Changes are committed and pushed to a version control system like Git in the customer's own repository.
Customer pipeline: The code is compiled and built. Tests can be run automatically in the associated pipeline to ensure code quality. Finally, the code is packaged into a zip file and prepared for deployment.
Umbraco Cloud API: The customer pipeline uploads the source packed as a zip file to Umbraco Cloud API.
Umbraco cloud repository: The deployments start which triggers the queueing of the build in Umbraco services. It then pushed the Umbraco Cloud repository to the left-most environment. And if a live environment, the website has been updated.
In a bit more detail the flow will look like this from a pipeline perspective.
To ensure you make the most of Umbraco CI/CD Flow, we suggest exploring the documentation further. Familiarizing yourself with the fundamentals is a good starting point, but delving deeper will enable you to fully harness its capabilities.
Here are three essential pages to get you started:
How to use the Umbraco Cloud API for CI/CD Flow: Gain a comprehensive understanding of how to interact with the Umbraco Cloud API for seamless deployments and management.
How To Configure A Sample CI/CD Pipeline: Follow our step-by-step guide to set up a sample pipeline, making your development and deployment process more efficient.
Known Limitations and Considerations: Familiarize yourself with the current limitations and considerations to ensure you're making the most out of Umbraco CI/CD Flow.
These resources will provide you with the knowledge and tools you need to successfully implement and optimize your use of Umbraco CI/CD Flow.
This section provides a step-by-step guide to setting up a CI/CD pipeline in GitHub Actions using the provided sample Bash or Powershell scripts.
Before setting up the pipeline in GitHub, make sure that the following steps from the Configuring a CI/CD pipeline are done:
Pick a Cloud project
Activate CI/CD Flow
Next, you will need to define your pipeline in YAML and use it to interact with the Umbraco Cloud API.
The Umbraco CI/CD Team has created a sample pipeline for Azure DevOps.
The Scripts are provided as is. This means that the scripts will do the bare minimum for a pipeline that is utilizing the CI/CD flow.
You'll need to adapt and integrate the script to fit your pipelines to gain the ability to do deployments to your Umbraco Cloud projects.
The sample includes YAML files and custom Powershell and Bash scripts to interact with the Umbraco Cloud API.
You can get the samples for both Azure DevOps
and GitHub Actions
from the Github repository.
Please be aware that since this involves using your custom pipeline, any issues that arise will need to be resolved by you.
Go to your repositories in GitHub and click on "New".
Create a new empty repository, and note down the clone URL.
Go to the Umbraco Cloud Portal and clone your cloud project down locally. This article describes how you can find the clone URL.
Now working locally remove the Git Remote called origin
, which points to Umbraco Cloud
Optionally rename branch master
to main
Add a new remote called origin and pointing to the GitHub clone URL and push
Now we can move on to setting up a pipeline.
The pipeline needs to know which Umbraco Cloud project to deploy to. In order to do this you will need the Project ID
and the API Key
. This article describes how to get those values.
Now go to the repository in GitHub, and click on the Settings section.
Expand secrets and variables in the left-hand menu titled Security
and click on Actions
.
Create a repository secret
called UMBRACO_CLOUD_API_KEY
with the API Key
value from the Umbraco Portal.
Create another repository secret
with the name PROJECT_ID
and the Project ID
value from the Umbraco Portal.
If you want to use other names for the secrets, you need to rename the secrets
variables in each of main.yml
's jobs.
Now Github is set up with the needed information to be able to run a deployment back to Umbraco Cloud.
Next up it setting up the actual pipeline.
The sample pipelines have a job called cloud-sync
. This job is responsible for checking for changes in your Umbraco Cloud project, fetching them, and applying them back to your repository. In order for this to work, you need to give the GITHUB_TOKEN
write permissions to the repository during workflow runs.
This is how you can grant these permissions:
Working in your repository on GitHub
, click on Settings
in the top right
In the left sidebar, click on Actions
and then on General
Scroll down to the Workflow permissions
sections
Select the Read and write permissions
Click save
While working with the project on your local machine, follow these steps to prepare the pipeline, using the samples from the repository.
Download the provided sample scripts as ZIP from the GitHub repository. Click on "Code" and then choose "Download ZIP". Then unzip it and use those files for the next steps.
Select your preferred scripting language:
For a pipeline that uses Powershell scripts you will need the following files:
From the root folder
cloud.zipignore
From the powershell
folder
Get-LatestDeployment.ps1
Get-ChangesById.ps1
New-Deployment.ps1
Add-DeploymentPackage.ps1
Start-Deployment.ps1
Test-DeploymentStatus.ps1
From the powershell/github
folder
main.yml
cloud-sync.yml
cloud-deployment.yml
Do the following to prepare the pipeline:
Copy the cloud.zipignore
file to the root of your repository
Make a copy of the .gitignore
from your repository and call the copy cloud.gitignore
Both files should be in the root of your repository
In the bottom of the .gitignore
file add the line **/git-patch.diff
Also in the root, create a folder called .github
Inside .github
create two additional folders
workflows
powershell
Copy the 3 YAML files from the github
folder into the workflows
folder
Copy the Powershell scripts from the powershell
folder to the powershell
folder
Note: If you have not changed the branch to main
, then in the main.yml
file change the branch from main
to master.
Commit the all changes, and push to GitHub
For a pipeline that uses Bash scripts you will need the following files:
From the root folder
cloud.zipignore
From the bash
folder
get_latest_deployment.sh
get_changes_by_id.sh
create_deployment.sh
upload_package.sh
start_deployment.sh
get_deployment_status.sh
From the bash/github
folder
main.yml
cloud-sync.yml
cloud-deployment.yml
Do the following to prepare the pipeline:
Copy the cloud.zipignore
file to the root of your repository
Make a copy of the .gitignore
from your repository and call the copy cloud.gitignore
Both files should be in the root of your repository
In the bottom of the .gitignore
file add the line **/git-patch.diff
Also in the root, create a folder called .github
Inside .github
create two additional folders
workflows
scripts
Copy the 3 YAML files from the github
folder into the workflows
folder
Copy the Bash scripts from the bash
folder to the scripts
folder
Note: If you have not changed the branch to main
, then in the main.yml
file change the branch from main
to master.
Commit the all changes, and push to GitHub
The push will start a new pipeline run.
With everything set up, you may want to confirm that Umbraco Cloud reflects the changes you are sending via your pipeline.
While working on you project locally, add a new Document type.
Commit the change to main
branch (or master
if you did not change the branch name) and push to your repository.
The pipeline starts to run
Once the pipeline is done log into Backoffice on your left-most environment in Umbraco Cloud
Go to the Settings section and see that your new Document type has been deployed
The mentioned scripts are provided as a starting point. It is recommended that you familiarize yourself with the scripts and with documentation related to how to use GitHub Actions.
The scripts demonstrates the following:
How to sync your GitHub repository with the left-most project environment in Umbraco Cloud
How to deploy changes to the left-most project environment in Umbraco Cloud
The main.yml
is the main pipeline, and is the one that will be triggered on a push to main
branch. You can configure a different trigger behavior in this file.
You can add your Build and Test jobs between the cloud-sync
and cloud-deployment
jobs. Keep in mind that you do not need to retain the dotnet build artifact for upload later. The cloud-deployment
job will take care of packaging all your source code and upload to Umbraco Cloud.
The cloud-sync.yml
shows how you can sync your Github repository with the left-most environment of your Cloud project. In this sample, it accepts any change from the API and applies and commits it back to the branch which triggered the pipeline. However the commit does not trigger the pipeline again.
If you don't want the pipeline to commit back to the triggering branch, this is where you need to change the pipeline.
The cloud-deployment.yml
show how you can deploy your repository to the left-most environment of your Cloud project. The sample shows how to prepare for deployment, request the deployment and wait for cloud to finish.
There are a couple of things here to be aware of:
We are overwriting the .gitignore
file with cloud.gitignore
. This is a way to accommodate your gitignore-needs when working locally. For instance you might want to ignore frontend builds, but you want them build and published to cloud.
We have a special cloud.zipignore
file. This is a convenient way to tell the pipeline which files not to include when creating the zip package to send to cloud.
If you have frontend assets that needs to be build (using tools like npm/yarn or others), you should add the needed steps before Zip Source Code
. This is to ensure that the fresh frontend assets will be part of the package to be sent to cloud.
An article explaining how Umbraco Users are working on Umbraco Cloud.
On Umbraco Cloud, users work in almost the same way as on a normal installation of Umbraco. However, there are a few more settings available for the backoffice users on Umbraco Cloud.
In this article, we will show how users work, as well as explain the different settings for users on Umbraco Cloud.
On Umbraco Cloud project we use Umbraco ID. Umbraco ID is a centralized login for all users on Umbraco Cloud, both team members and Umbraco Backoffice users. It is used when you log in to the Umbraco Cloud Portal, projects, as well as when you clone down a project to your local machine.
When working locally the initial login will go through Umbraco ID and the online login flow. After the initial login, you can set a password on your user or create a new login for the backoffice, which can be used for local logins.
There are two ways of adding a user to your backoffice on Umbraco Cloud.
You can add them as a team member) from the project portal on Umbraco Cloud.
By default, when added to the project as a team member, they will be added as users to the backoffice of all the environments as administrators.
Users can also be invited directly from the backoffice of your Umbraco Cloud project, from where you can give them different permissions.
Check out the Users article for an in-depth explanation about Umbraco users in general.
Users are environment-specific on Umbraco Cloud. This means that they will not be transferred over when doing a deployment to the next environment they will need to be added to the different environments on Umbraco Cloud.
As mentioned it is possible to invite new Users to your Umbraco Cloud project through the backoffice as you would on a normal installation of Umbraco.
To invite a User you need to do the following:
Go to the backoffice of your Umbraco Cloud project.
Go to the Users section in the backoffice.
Click on the Invite User button.
Enter the Name, Email, add a User Group to assign access and permissions, and enter a new Message for the invitation.
Once the User has been invited they will receive an invitation for the project.
If the invited person already has a user on Umbraco Cloud they will be able to see the invitation in the project portal under "Project Invites".
If the User being invited does not have a User on Umbraco Cloud, they will receive an email asking them to create one.
Once the User has been created, it is now possible for them to log in to the Umbraco Cloud portal.
From here they will be able to see a pending invitation to the project they have been invited to.
Once the invitation has been accepted, they can now access the project through the Umbraco Cloud portal and access their site from there.
On Umbraco Cloud, it is possible to control which users have access to transferring and restoring content and media on your Umbraco Cloud project.
This can be done when creating a new User Group or when editing an existing group.
You have the option to decide whether a specific User Group has permission to do a restore, partial restore, or queue content for transfer to the next environment.
It is also possible to get Granular control on a per-node basis so that you can disable restore and transfer for specific content on your site. This can help avoid mistakes and ensure that the proper workflows are followed.
There are two ways that you can set up these permissions:
Create a new User Group
Edit an existing one
To create a User Group, go to the Users section of the backoffice.
Click on "Groups" in the right corner, from here you are able to either create a new User Group or edit an existing one.
Click "Create group"
Scroll down and go to the "Content" heading in the "Default permissions" section. Here you can see three options:
Decide whether the users in the new User Group can restore items for the whole workspace, restore items for a tree, or partially restore items and click Save.
To edit an already existing User Group:
Go to the User Group you want to edit, e.g Editors or Writers.
Update the permissions and click Save.
It is also possible to set Granular permissions for a specific content node on your Cloud project.
You can set the permission when you are creating or editing an existing User Group.
Add the setting for Granular permission for your content nodes at the bottom of the User Group.
Click "Add".
Choose the content node which you want to set the Granular settings for.
Set permissions for restore, partial restore, and queueing content for transfer.
If you want to manually upload files to the Azure Blob Storage container provided to your Cloud environments, you can use "Microsoft Azure Storage Explorer" software.
This article provides the steps you need, to connect to your Azure Blob Storage containers using Azure Storage Explorer.
We strongly recommend that you add all the media items to your Cloud environments through the backoffice. Clone your environment to your local machine to manage the files of your media library.
Important: If you upload your media files manually using this method, they will not be available in the backoffice.
All media needs to be added through the Umbraco backoffice.
The first thing to sort out, if you want to connect to the Azure Blob Storage container of your environment is the credentials.
To find the connection details for your environment's Blob Storage, follow the steps below:
Go to your project on Umbraco Cloud.
Go to Configuration in the side menu.
Go to Connections.
Scroll down to Blob Storage Connection Details
Copy down the credentials needed for connecting to Azure Blob Storage.
The next step is to have Azure Storage Explorer installed on your local computer. Download the storage explorer, and run through the installer.
Let's use the information you have gathered, and connect Azure Storage Explorer to the Blob storage container:
Click the Open Connect Dialog button to get the Connect dialogue.
Select the Blob container in the first prompt.
Select Shared access signature URL (SAS) in the second prompt.
Input the information you have gathered earlier in the following format [Endpoint][ContainerName][SharedAccessSignature]
, in the URI field. See below for an example.
Ensure that the credentials are correctly set in the Connection Summary prompt.
Select Connect.
You are now connected to the blob storage for your environment and you can upload your files to Azure Blob Storage through the explorer.
Important: If you upload your media files manually using this method, they will not be available in the backoffice.
All media needs to be added through the Umbraco backoffice.
In many cases, you might want to send emails from your Umbraco Cloud project. It could be for inviting users to the Backoffice or as part of an Umbraco Forms Workflow. To do so, you will need to have a Simple Mail Transfer Protocol (SMTP) server and configure this in your appsettings.json
file.
SMTP server is not included with your Umbraco Cloud project. You will need to have your SMTP server set up elsewhere and then you need to configure this service with your Umbraco Cloud project.
There are a handful of reasons why configuring an SMTP service on your Umbraco Cloud project could come in handy or might even be necessary.
When you are working with Umbraco Forms, you have the option to set up email workflows. This enables you to create forms that send out emails. It could be a contact form where your customers can send emails directly to you.
To set up an email workflow to send out emails, you will need to configure the SMTP service. In some cases, you might also experience that you need to configure a SenderEmail for notifications.
Configure SenderEmail in the appsettings.json
file under Umbraco:CMS:Global:Smtp
. For more details, see the Send Email
section in the Workflow Types article.
Legacy Umbraco
If your Cloud project is running Umbraco 7 or 8, the SenderEmail is configured in the <notifications>
section of the web.config
file. Find more details on this in the Legacy Documentation.
There are two scenarios for Backoffice users where configuring an SMTP service is needed:
When you want to add a user to your project directly from the Backoffice. Doing this involves sending out an email to the new user. For this scenario, we've set up a fallback, which means that even though you haven't yet configured an SMTP service, an email will still be sent to the new user. Keep in mind that the fallback is only for this particular purpose; inviting users to join your project.
To set up the SMTP service for your Umbraco Cloud project if one of your Backoffice users has forgotten their password. To reset their password, they have to request a password reset which will be sent to them by mail. This will only work once you've configured an SMTP service.
By default, the option to request password resets for Backoffice Users is disabled on Umbraco Cloud projects. This is mainly to ensure that your Backoffice login stays in sync with your Umbraco ID.
You can reset your Umbraco ID password from the Umbraco Cloud login page. Find more details about Umbraco ID in the 'Users on Cloud' article.
Sparkpost - quick to set up and developer-friendly.
SendGrid - quick to set up.
MailGun - mainly for developers, as it is a bit more on the technical side.
Rapidmail - EU-based and GDPR compliant.
Set up the SMTP server.
Configure the service:
The SMTP is configured in the Umbraco:CMS:Global:Smtp
section in your appsettings.json
file.
To configure your SMTP service, enter the following details:
From: The default address emails will be sent from.
Host: IP address or hostname for your SMTP service.
Port: The port of the SMTP host.
SecureSocketOptions: Allows you to specify what security should be used for the connection sending the email.
Username: Your username for the SMTP service.
Password: The password you use to access your SMTP service.
The SMTP is configured in the system.net/mailSettings
section of the web.config
file.
To configure your SMTP service you will need the following details:
The host: IP address or hostname for your SMTP service.
The userName: Your username for the SMTP service.
The password: The password you use to access your SMTP service.
To make sure that your SMTP password is not visible in the appSettings.json
file, you can use the Secrets management feature to hide the setting by using the following key: UMBRACO__CMS__GLOBAL__SMTP__PASSWORD.
Once you've configured these settings for your SMTP service, you can send emails from your Umbraco Cloud project. For more information on SMTP configuration, see the Global Settings article.
You can test if you've configured your SMTP service correctly by running a Health Check from the Umbraco Backoffice.
The Umbraco Cloud API serves as a publicly accessible endpoint that customers can utilize to execute relevant tasks.
While its initial focus is on automating and managing deployments in Umbraco Cloud projects via the "Umbraco CI/CD Flow," future enhancements will broaden its capabilities to encompass a wider range of activities and options for Umbraco Cloud users.
For the scope of this discussion, we will concentrate solely on the endpoints associated with interactions within the Umbraco CI/CD Flow.
To integrate Umbraco Cloud into your CI/CD pipeline, you'll need to make API calls to the following endpoint https://api.cloud.umbraco.com
:
/$projectId/deployments
/$projectId/deployments/$deploymentId
/$projectId/deployments/$deploymentId/package
/$projectId/deployments/$latestCompletedDeploymentId/diff
You will find relevant examples using Curl
and Powershell
in the sections below.
To authenticate with the Umbraco Cloud API, you'll need your Project ID and API Key. These credentials can be found in your cloud project under the 'Settings' tab, and then navigating to the 'Advanced' page.
The two elements to be used for the authentication are:
Cloud Project ID: The ID of your Umbraco project.
CI/CD API Key: Your unique identifier.
By including the API key header in your HTTP requests, you ensure secure access to your Umbraco Cloud project's resources.
For enhanced security, it's crucial to store the provided API key in a secure location. Options include a variable group in Azure DevOps or using the Secrets feature in GitHub Actions. It's important to note that each API key is tightly coupled with a specific Umbraco Cloud project and can only be used for deployments related to that project.
To authenticate your requests, include the API key in a custom HTTP header named API key.
PowerShell is a command-line shell and scripting language commonly used for automating tasks and managing configurations. It offers a versatile set of cmdlets that allow you to interact with APIs, manipulate files, and much more. Within the context of the Umbraco Cloud API, PowerShell can be employed to authenticate your requests by incorporating your unique API key.
Curl (Client URL) is a command-line tool commonly used for making HTTP requests. It's a versatile utility that allows you to interact with APIs, download files, and more. In the context of Umbraco Cloud API, curl can be used to authenticate your requests by including your unique API key.
To authenticate your API requests using curl, you'll need to include your API key in a custom HTTP header named Umbraco-Cloud-Api-Key. Here's how typical Powershell and curl commands would look for this purpose:
The Create Deployment endpoint initiates a new deployment and returns a unique deploymentId
. This call serves as the initial step in the deployment process. It requires a projectId
specified in the URL path and a commit message included in the request body. Essentially, this establishes the metadata necessary for initiating the deployment process. If a deployment is already underway, initiating a new one will be possible but should be avoided.
To create a deployment, you'll need to make an HTTP POST request. The request body should contain a simple JSON object with the commit message:
In Powershell, the command to initiate a new deployment would be as follows
In curl, the command to initiate a new deployment would be as follows
Part of the returned response will be the actual deploymentId
. The response from the API should be an HTTP 201 Created response including a deploymentId
. This ID can be stored in the pipeline variables so it can be used in later steps.
To deploy content to the Umbraco Cloud repository, you need to perform an HTTP POST request to the Umbraco Cloud API. The deployment content should be packaged as a ZIP file, which must mirror the expected structure of the Umbraco Cloud repository. This ZIP file should include all relevant files such as project and solution files, and compiled frontend code. If your setup includes a frontend project with custom elements, the build artifacts from that project should also be included in the ZIP file, and placed in the appropriate directory within the repository structure.
The HTTP POST request should be made using the multipart/form-data
content type. The request URL should incorporate both the projectId
and deploymentId
obtained from the previous step in the API path.
The ZIP file must be structured the same way as described in the Readme.md
included in all cloud projects starting from Umbraco 9. This also means if you need to change the name and/or structure of the project, you should follow the guide in the same Readme.
By adhering to these guidelines, you ensure that the uploaded content is an exact match with what is expected in the Umbraco Cloud repository, facilitating a seamless deployment process.
The purpose of packaging your content into a ZIP file is to replace the existing content in the Umbraco Cloud repository upon unpackaging. This ensures that the repository is updated with the latest version of your project files.
Make sure your ZIP archive does not contain .git folder. If you're using the .zipignore
file, you can add the following line .git/*
to exclude it.
Umbraco Cloud environments are using git internally. This means you should be careful about the .gitignore file you add to the package. If you have “git ignored” build js assets locally, you need to handle this so that this is not being ignored in the cloud repository.
Note: If the .gitignore
file within the ZIP package does not exclude bin/ and obj/ directories, these will also be committed to the Umbraco Cloud repository.
Best Practice: If you have frontend assets your local repository's .gitignore file will most likely differ from the one intended for the Umbraco Cloud repository, it's advisable to create a separate .cloud_gitignore file. Include this file in the ZIP package and rename it to .gitignore before packaging. This ensures that only the necessary files and directories are uploaded and finally committed to the Umbraco Cloud repository.
In curl uploading the source file will be:
The response of this call will be the same deployment object (in JSON) as when creating a new deployment, but the deploymentState should now be 'Pending':
After the source file has been uploaded the deployment can be started. This will queue the deployment in the Umbraco Cloud services which will start the deployment as soon as possible. Starting the deployment is an HTTP PATCH request to the Umbraco Cloud API. projectId
and the deploymentId
from the previous step must be included in the path, and the deployment state set to 'Queued' in the request body.
In curl starting a deployment will be:
The response of this call will be the same deployment object (in JSON) as when creating a new deployment, but the deploymentState should now be 'Queued':
To monitor the status of a deployment—whether it's completed, successful, or otherwise — you can periodically query the 'Get Deployment Status' API. This API endpoint is an HTTP GET request to the Umbraco Cloud API, and it requires both the projectId
and the deploymentId
obtained from previous steps to be included in the path.
Deployments in Umbraco services can take varying amounts of time to complete. Therefore, it's advisable to poll this API at regular intervals to stay updated on the deployment's current state. For example, in a simple project, you might choose to poll the API every 15 seconds for a duration of 15 minutes. These figures are just a starting point; the optimal polling frequency and duration may differ for your specific pipeline. Based on initial experience, a 15-minute window generally suffices, but we welcome your feedback to fine-tune these parameters.
Using a curl command, polling for the deployment status would look like this:
The response from this API call will return the same deployment object in JSON format as you would receive from other API interactions. Ultimately, the deploymentState
field will indicate either 'Completed' or 'Failed'. Should the deployment fail, the 'ErrorMessage' field will provide additional details regarding the issue.
The endpoint lets you retrieve a list of completed deployments. It can only list deployments that has been run through the api.
The API allows you to filter and limit the number of returned deployments using query parameters:
Skip : optional, zero or positive integer
Take : optional, zero or positive integer
Includenulldeployments : optional, boolean, defaults to true
The "skip" and "take" parameters, while optional, are always required to be used together.
With includenulldeployments
set to true, you will get all completed deployments, including those that did not create any new changes in the cloud repository.
To fetch the list of deployments using a curl command, the syntax would be as follows:
The response from this API call will return an object containing a list of deployment objects. The deployment-objects are consistent with the structure used in other API responses. Deployments are listed in descending order based on their creation timestamp.
Sometimes updates are done directly on the Umbraco Cloud repository. We encourage you to not do any actual work there, but auto-upgrades and environment changes will affect the umbraco-cloud-git-repos. To keep track of such changes, you can use the 'Get Deployment Diff' API. This API endpoint will provide you with a git-patch file detailing the changes between a specific deployment and the current state of the repository. To make this API call, you'll need to include both the projectId
and the deploymentId
of the deployment you want to check for differences against. This is a standard HTTP GET request.
Using a curl command, fetching the potential differences would look like this:
The API response will vary based on whether or not there are changes to report. If no changes are detected, you'll receive an HTTP 204 No Content status. On the other hand, if there are changes, the API will return an HTTP 200 OK status along with a git-patch file as the content. This git-patch file can then be applied to your local repository to sync it with the changes.
Currently, the feature to transition from a development environment to staging or live, and from staging to live, is pending implementation. In the meantime, you can manage these transitions manually through the Umbraco Cloud Portal [link to relevant page in docs.umbraco.com, e.g. the section “Utilizing the Pipeline” of the new page “How To Configure A Sample CI|CD Pipeline”]..
When interacting with the Umbraco Cloud API, you may encounter various HTTP status codes that indicate the success or failure of your API request. Below is a table summarizing the possible status codes, their corresponding errors, and basic root causes to guide your troubleshooting:
Most errors have a response body that corresponds to this JSON, and the “detail” field will have a more complete error message.
In some cases, Umbraco Cloud might not be the only service you are working with. You might need to work with other services as well - this could be either internal or third-party services. In either case, it will be serviced externally to Umbraco Cloud.
When you are working with an external service that is behind a firewall and that service needs to communicate with your Umbraco Cloud project, you need to make sure the Umbraco Cloud Server IPs are allowed to bypass the firewall.
An example could be, that you're fetching some information from an external service that is behind a firewall. To give your Umbraco Cloud project access to the external service you need to add the IPs used by the Umbraco Cloud servers to an allow list (other services may refer to it as a "whitelist").
For projects on a Standard, Professional, and Enterprise plan you can enable static outbound IP addresses.
On the Advanced page of your project, you can turn on the static outbound IP address feature to ensure persistent communication. This opt-in feature can be switched on for Standard, Professional, and Enterprise Cloud projects.
The enabling of static outbound IP addresses will have the effect that port 25 will be blocked. Port 25 is the default port for SMTP relays and is commonly abused to send spam from compromised parties. Accordingly, this port is often blocked by ISPs and cloud providers such as Microsoft and Google. For SMTP submissions, we advise you to use port 587 or port 2525.
The static outbound IP ranges vary per region. Below are the values per region in a CIDR (Classless Inter-Domain Routing) notation. The expanded IP ranges can be calculated by using online tooling.
West Europe
UK South
US East
Australia East
If you need to use a CIDR (Classless Inter-Domain Routing) Range for the IPs: 40.113.173.32/28
For projects on a Starter plan, you can see the current dynamic outbound IP addresses. The IP addresses shown for starter projects are dynamic and are likely to change at some point due to either Azure or Umbraco optimizing hosting resources.
Learn how to configure a CI/CD pipeline in Azure DevOps and GitHub Actions Workflows using the sample scripts provided.
You'll find example shell scripts and pipeline configurations in the Sample scripts section, covering both Azure DevOps and GitHub Actions Workflows.
Samples are provided "AS IS" to get you started. Please familiarize yourself with them, and feel free to change them to fit your needs.
Umbraco Cloud repositories are not meant to be used as source code repositories. More details here.
Once you commit your code to Cloud the build pipeline converts your C# code to DLLs and deploys it on the respective environment.
In Umbraco Cloud only C# code is built, and all frontend artifacts need to be built and committed to the repository.
You can use Azure DevOps as an external repository and with the pipelines, it will automatically keep your Azure Devops source code repository in sync. The sync is done with the git repository of Umbraco Cloud of the development environment.
Before proceeding, you'll need an Umbraco Cloud project and a CI/CD pipeline. You will also need the required files to add to your pipeline for successful interaction with the Umbraco Cloud API.
Pick an Umbraco Cloud project, preferably with a development environment (but not a requirement)
Create a new Umbraco Cloud Project.
You can take a trial here
Create a new project in the Umbraco Cloud Portal
Use one of your existing projects.
Create a new or an existing CI/CD pipeline in Azure DevOps or GitHub Actions.
In this guide, deployments are targeted at the leftmost environment in your Umbraco Cloud setup. This means if you have a Development environment, it will be automatically selected for deployment. If no Development environment exists, the Live environment will be used.
To get started with API interactions, you'll need to obtain your Project ID and API key. If you haven't already enabled the CI/CD feature, follow these steps:
Navigate to the Umbraco Cloud Portal and select your project.
Go to Settings
-> Advanced
. This is where you can generate an API key and find your Project ID.
Click on "Activate CI/CD Flow" toggle to enable the feature.
The API key is tied to the specific project for which it is generated. Make sure to keep it secure in Azure or GitHub, as it will be used for all subsequent API interactions related to that project.
Below we have a couple of examples of how to set up a CI/CD Pipeline using either Azure DevOps or GitHub Actions.
Each guide describes:
How to set up a new repository in either GitHub or Azure DevOps
Get a copy of your Umbraco Cloud project into that repository
And finally how to configure a new pipeline using the provided samples
The sample pipelines are using either Bash-scripts or Powershell-scripts to facilitate communication with the Umbraco CI/CD API.
During the guides, you will have the option to choose between Powershell or Bash scripts. We recommend that you choose the scripting technology you feel most comfortable with.
Details the setup of a CI/CD pipeline using Azure DevOps.
Details the setup of a CI/CD pipeline using GitHub Actions.
One of the biggest benefits of having a Umbraco Cloud project is that you do not need to worry about the hosting. We handle it for you.
When we do maintenance on our Umbraco Cloud servers, we send out information to all our Umbraco Cloud customers. For us to reach out to the correct person, you need to add a Technical Contact to your project.
If you have more than one project on Umbraco Cloud, you will need to add a technical contact to each of the projects manually.
When you create a New Project, the user used to create the project will automatically be added as the technical contact. To update the technical contact or add more than one technical contact, do the following:
Go to the Project in the Umbraco Cloud Portal.
Go to Edit Team in the Overview menu tab.
Click Add Technical Contact in the Technical Contact section.
Enter the Name, Email, and Telephone Number in the Add New Technical Contact window.
Click Confirm.
In the Umbraco Cloud Settings menu, you can find a page called Usage.
On the Usage page, you will find an overview that displays your usage and evaluates it against the plan limitations of your project. On the page, you will also find the top 10 for the bandwidth usage of your project. This can give you important insight into where you can optimize resource management.
The overview shows the bandwidth of the project for the current month, the media storage size, and the number of custom domains added to the project. It is also possible to see the bandwidth history for the previous six months.
In this overview, you will find the usage limitations for your Umbraco Cloud project as well as the plan that the project is on.
The usage shown is for the Live environment of your project as it is the usage in this environment that is measured against the plan usage limits. For media storage, it is the size of all files in the blob storage including the cache that is considered.
You will find a couple of top 10 for the bandwidth in the project's live environment.
The first is displaying the 10 resources that are contributing the most to the total bandwidth of your project. Each resource is represented by its path together with the number of requests and its total contribution of bandwidth.
The second displays the top 10 HTTP Referrers causing the most bandwidth. A referer is an optional HTTP header field identifying the address of the web page from which the resource was requested. It is the bandwidth generated from these resource requests that counts in the monthly usage limit of the project.
Be aware that any third party services will also consume bandwidth. For example, an uptime service implementation can increase bandwidth usage as it pings the website more frequently.
It is also possible to see the top 50 media files on your live environment.
The list shows the name of the file, its path, size, and type (whether it is a jpeg or a png file).
You can see the Usage limits and prices for the different plans on Umbraco Cloud on our website or when upgrading your plan.
You can always upgrade your project to a higher plan if you have reached the limit of what you are allowed on your project. You can Upgrade the Plan from the Management tab on your project.
When one of the limits reaches 90%, you’ll see a warning banner in the portal and an email is sent to the project owner and the technical contact(s) of the project, notifying you that you’re getting close to your limit(s).
This article is about team members that are added via the Invite User button in the Umbraco Cloud Portal. If you are looking for more information about Users in the Backoffice, see Users. Users added through the backoffice do not have access to the Umbraco Cloud Portal.
Team members are users that you add to your project via the Invite User button in the Umbraco Cloud Portal. They are automatically added as users in the Backoffice of all environments for the project. These users can clone down the project locally and log in using the same credentials they use for Umbraco Cloud.
When adding a user, the default permission is Read for each environment. You can assign backoffice user groups to the user for each environment.
User Permissions for each environment can be set in the Edit Team page available from the Settings dropdown. User Permissions can be set per environment. For example, a user can have Write access on the Development environment and Read access on the Live environment.
Admin: Has access to everything on a project. An admin can delete a project and edit the team. An admin can deploy changes between environments in the Project Portal and has access to git, as well as the Power Tools Kudu.
Read: A team member with Read permissions can only view the project in the portal as well as the backoffices. They are not able to deploy or change anything on the project itself. They can clone down the project, but cannot push changes they have made locally. By default, they are added as an admin in the backoffice so they can make changes in the backoffice. If you want to change this, see Team Member Permissions in the Umbraco Backoffice below.
Write: A team member with Write permissions can do everything on a project except delete it and edit the team. A user with Write permissions can deploy changes between environments through the portal. They have access to the git repositories and can push local changes to the environment.
No Access: A team member with No access permissions cannot restart the environment, deploy changes between environments, check error logs or log files, or access Kudo in the Project Portal. They can view the project in the portal and access the backoffice.
You can view the user group memberships of the project’s backoffice users. Currently, you can manage the backoffice user groups of a user through the Umbraco backoffice. A backoffice user is only created once the user logs into the backoffice of the project for the first time.
You can see the details of your project invitation in the Member(s) who still needs to accept the project invitation section of the Edit Team page. You can view the team member's name, email, the expiration date of the invitation, the status of the invitation, copy the invitation link, resend the invitation, or delete the invitation.
For us to reach the correct person when sending out information about server maintenance, you need to add a technical contact to your Umbraco Cloud project.
The Availability & Performance page lets you see get an overview of your cloud projects' past and current health.
Leveraging Azure metrics data, the Availability & Performance page provides users with valuable insights into the availability and performance of their cloud project. This enables them to monitor and address any issues that may impact the user experience.
Under Availability & Performance, you'll find visualization and statistics for three sections:
Time range and granularity selector
Panel view
Chart and statistics view
The visualization and statistics can be seen for all your different environments.
More detailed visualization and tools intended for troubleshooting are to be added in the future and will be restricted to Standard and Professional project plans.
When entering the page, you'll see a default visualization of failed requests for the last 24 hours with a data point set for every fifth minute. You are able to change the time range to a predefined interval or define a specific start and end time. You can also select the granularity of the data points.
Initially, you will only be able to set the time granularity to “5 minutes”.
The panel selector consists of four tiles, each representing a specific segment of data. The four segments are failed request, App Performance, CPU Usage, and Memory Usage.
Each tile includes relevant statistics and potentially a warning or an error indicator in case there is something you might want to consider.
An error indicator is shown in the following situations:
Failed Requests: when one or more server errors have occurred in the selected time range.
CPU Usage: when the maximum CPU time has exceeded 100% of the plan quota in 5 minutes during the selected time range.
Memory Usage: when the maximum private time has exceeded 100% of the plan quota in 5 minutes during the selected time range.
A warning indicator is shown in the following situations:
Failed Requests: when one or more client errors (but no server errors) have occurred in the selected time range.
CPU Usage: when the maximum CPU time has exceeded 80% percent of the plan quota in a 5-minute period during the selected time range.
Memory Usage: when the maximum private time has exceeded 80% percent of the plan quota in a 5-minute period during the selected time range.
Errors and warnings for CPU Usage and Memory Usage are only shown for cloud projects on shared plans with a granularity of 5 minutes selected.
For each segment, there will be shown a chart and a set of related statistics. The charts also show platform and CMS events, making it convenient to see how different events impact performance.
The chart shows the breakdown of HTTP status codes for each data point with the selected granularity. Only responses indicating a client (4xx region) or server errors (5xx region) are shown.
In the statistics panel on the right, you will find the total instances of the status code in the time range.
The chart shows the average response time during the selected time range. All requests to the Umbraco solution in the time periods with the length of the selected granularity count to average response time.
The statistics panel shows the average, maximum, and minimum response for the shown data points.
The chart depicts the CPU time consumed by the application in the selected time range with time periods equalling the selected granularity.
Cloud projects using a shared resource and a granularity of 5 minutes, users will see the assigned CPU time in seconds and a comparison against the plan quota. In this case, the statistics panel shows the following:
The maximum CPU time
The average CPU time
The plan quota
The maximum and average percentage of the consumed CPU in a 5-minute period compared to the plan quota.
Cloud projects on dedicated options (or a shared plan with another granularity than 5 minutes), users will see the average assigned CPU time in seconds. Here the statistics panel will display the maximum, average, and minimum CPU time based on selected granularity.
The chart shows the memory usage in private bytes consumed by the application in the selected time range with time periods equalling the selected granularity.
Cloud projects on shared resources with a granularity of 5 minutes, will see the assigned private bytes in megabytes (MB) and a comparison against the plan quota.
For cloud projects with a dedicated option (or shared plans with another granularity than 5 minutes), users will see the average assigned private bytes in bytes. Here the statistics panel will display the maximum, average, and minimum allocation of private bytes based on selected granularity.
The charts are enhanced with platform events like restarts, automatic and manual upgrades, environment-to-environment deployments, and plan changes.
This information will help you in potential troubleshooting, make informed decisions, and ensure smooth project management.
By utilizing the Umbraco.Cloud.Cms
package we are tracking the hot and cold boots of your Umbraco environment on Cloud.
Learn more about the difference between Hot vs. Cold restarts.
The package is installed on all environments running Umbraco 10, 13, and 14 on Umbraco Cloud. The package will be part of new Cloud projects on upcoming versions of Umbraco CMS.
Only installations running in Umbraco Cloud are tracked. The following data is recorded:
Environment identifier
Timestamp
The Umbraco version
Boot mode, IE. "warm" or "cold" boot
The telemetry is not sent if you are running a cloned environment on your local machine.
You can disable Hot/Cold boots tracking on your Umbraco Cloud Project by adding Umbraco:Cloud:DisableBootTracking
and set to true in the appsettings.json
file.
It is also possible to remove the reference to the Umbraco.Cloud.Cms
package in the UmbracoProject.csproj.
Below you can read about the benefits the Availability & Performance page gives.
The page allows users to monitor the health of their cloud projects more effectively. By leveraging Azure metrics data, you can access critical information such as HTTPS status codes, response times, CPU time, and memory usage in private bytes.
The CPU and memory usage is particularly important to keep an eye on from time to time. This is to ensure the cloud project running on a shared that the plan quotas aren’t exceeded.
The page enables users to discover application issues that may impact the overall performance of their Umbraco Cloud projects. By analyzing Azure metrics data, you gain valuable insights into the performance of your app service, including response times and CPU/memory usage.
Real-time monitoring of HTTPS status codes helps you identify any errors or disruptions to your application's availability. This proactive approach allows you to respond swiftly, ensuring that your website or application remains accessible and responsive to users.
Umbraco Cloud provides a user-friendly interface for accessing and interpreting the "Availability and Performance" page. The interface presents Azure metrics data in a clear and understandable manner, making it easier for users to navigate and gain actionable insights. With intuitive SVG-based visualizations and highlighted statistics for the selected time range, you can monitor the health and performance of your cloud projects effortlessly.
The first version of the “Availability and Performance” feature released on May 26th, 2023 includes a basic visualization and a set of highlighted numbers for failed requests, application performance, CPU time, and memory usage.
More detailed information about each of these domains will be provided for each of the four domains in the future. While the visualization and basic numbers are accessible for any project plan, the detailed information and insight to be added will be exclusive to the upper cloud project plans
On the Project History page, you can view a list of high-level activities for your cloud project.
The Project History page shows details about the following changes to your project:
Project plan.
Transitions between shared and dedicated resources.
Adding or removing environments.
Deployments.
Product upgrades.
This is to provide you with better oversight and control over your project.
For each activity you can see the following information:
The type of activity
Information about the activity
Who the activity was started by
When the activity was started
When the activity ended
The status of the activity
To get a detailed view of each history type on your project, click the info icon on the far right of the history activity.
If you click on the info icon for an automatic update, you will be redirected to an Upgrade Details page. On this page, you can see details about how the upgrade went.
For activities like adding and removing environments, clicking on the info icon will show details of how the process went when adding/ removing the environment.
This article shows how you can enable Multi-Factor authentication when you log in to the Umbraco Cloud Portal or the Umbraco Backoffice.
On Umbraco Cloud, you can add Multi-Factor Authentication (MFA) for your Umbraco Cloud account.
It is also possible on the organizational level to enforce Multi-Factor Authentication for the members.
You can use Email, Phone, or an Authenticator App when logging in to the Umbraco Cloud Portal or the Umbraco Backoffice.
You will not be prompted to authenticate your backoffice login if you have already done it for the portal. This is because both logins use the same centralized login service.
MFA can be enabled when editing your Umbraco Cloud profile.
To enable MFA, follow these steps:
Go to your Profile on Umbraco Cloud.
Click Edit Profile in the Profile Settings section.
Select the desired Multifactor Authentication Method from the drop-down list.
Follow the steps shown below to enable MFA.
You will get an email with a code that you need to enter when logging in through the Umbraco Cloud portal or the backoffice.
You have the option to use an Authenticator App when logging in to the Umbraco Cloud Portal or the Umbraco Backoffice.
You can use the Microsoft Authenticator App for both iOS and Android or any other authenticator app of your choice.
In case you want to reset the authenticator app settings for your user, an administrator in your Umbraco Cloud organization can do this. It may be relevant if you want to use another authenticator app on your current phone or transfer the authentication process to another device.
You have the option to use your phone when you log in to the Umbraco Cloud portal or the Umbraco Backoffice. You can choose to receive a text message with a code or a call to log you in.
Before deactivating your old phone number, make sure to update the phone number used for your MFA. Changing the phone number used for MFA will require verification through the old number.
You can always disable MFA from your profile.
To disable MFA for your user, you will need to use the authentication method that you had enabled to disable it again.
If you had phone authentication enabled, it will then need to be used to disable it again.
The same is the case for email authentication.
Kudu is an open-source engine behind Git deployments to Azure. It gives us basic access to the file system through the command line or PowerShell, all from the comfort of a web browser. It also powers the way we deploy to Umbraco Cloud sites.
To access Kudu, you will have to be an admin on the project.
Kudu is available for each environment on your Umbraco Cloud project. You can find the link by clicking the environment name in the Umbraco Cloud portal. When you are prompted to log in, use your Umbraco Cloud credentials.
The power tools can be used for various things, we often refer to the tools in our troubleshooting guides.
Larger sites can often have more than 299 items in various folders and by default, you can only view 299 files/folders.
This number can be increased by doing the following:
Go to your Kudu site.
Open the browser developer tools (F12).
Type window.localStorage['maxViewItems'] = 999
in the Console where 999 will be the new limit. This can be set to anything you like.
Hit Enter.
Navigate back into the folder you want to view the files in.
You should now be able to view the folders/files up to the limit you've set it to.
If you refresh the page, the limit will go back to the standard 299.
Kudu is not a tool meant for adding and removing files on your project. This should always be done via Git (Local to Cloud) and the Deploy engine(Cloud to Cloud).
We recommend that you only use Kudu when you are following one of our guides.
When you clone down your Umbraco Cloud project to your local machine, you can see all the project files in the folder you specify when cloning down the project. Sometimes, you might also want to view the files you have on your Umbraco Cloud environments - perhaps to make sure that everything is in sync or if you suspect that a deployment or extraction hasn't gone as planned.
In Kudu, you can view your project files, if you navigate to CMD under the Debug console menu. Here you'll find a file structure. All your project files are under the /site
folder.
The three highlighted folders are used the most when visiting Kudu:
The deployments folder: This folder contains log files for the deployments and extractions that have been run on the environment.
The repository folder: This is your Git repository. You'll find a clone of your site's structure files in the/wwwroot
folder. Changes are pushed to and pulled from the /repository/
folder when working locally.
The wwwroot folder: This folder contains your site's structure files. These are the files used to run the site in the environment.
/wwwroot/
contains the files used to show your website to the world. When you push changes from your local machine, they are pushed to the Git repository (/repository/
), and when this finishes successfully the changes are copied into the live site.
In this article, you will be able to find information on the following:
How to manage your subscriptions.
How to download and pay invoices.
How to change your credit card for payments.
To manage your subscription on Umbraco Cloud, go to the menu in the top right corner and select "Organization".
You will see an overview of your organization on Umbraco Cloud. From here you can see the information about the organization.
To see the subscriptions running under your organization click on "Subscriptions" in the side menu
To change your payment method on Umbraco Cloud, go to your organization and select "Payment Methods" in the left side menu.
On this page, you can see the credit cards you have already added or you can add a new one.
Once a credit card has been added it will show up in a drop-down when creating new projects. You can also change the payment method for a specific project from here.
In some cases, you might need to change the credit card information on the Umbraco Cloud Organization.
Sometimes, it is not possible to remove a credit card from the organization right away. This is because it needs to be removed from the project first. To do this, you need to visit the payment section of the project which you can find through the following URL:
'https://www.s1.umbraco.io/project/{project-alias}/payment'.
On Umbraco Cloud, we are sending out one single invoice with all the projects that you are paying for via email every month.
You can view the invoices for your projects under your organization in the Payment History section. From here you can see the following for each invoice:
The payment number
The total amount paid
When the invoice was created
The due date
The status of the invoice
It is also possible to download the invoice. When downloading an invoice for a given month, the invoice will contain all the projects that you were paying for during the month.
A deployment model that relies on Git, Kudu, and Umbraco Deploy core technology to move your changes from one environment to another.
Umbraco Cloud uses a deployment model that relies on Git, Kudu, and Umbraco Deploy core technology to move your changes from one environment to another. Umbraco Cloud uses a classic "left to right" deployment model - changes are first made in the Development or local environment and then deployed to the Live environment.
If your project contains a Staging environment, deployments will be made from Development to Staging and then from Staging to Live.
Umbraco Cloud uses a two-part deployment approach where we keep metadata (Document types, templates, etc) and content (Content nodes and Media) as separate parts of deployment. To be able to distinguish between the two types of deployments, we use the term transfer for content and media deployments and the term deploy for metadata deployments. In summary:
Metadata such as Document Types, Templates, Forms, Views, and config files are stored in a Git repository and are deployed between environments using either a Git client or the Umbraco Cloud Portal.
Content and Media items are not stored in the Git repository. These need to be transferred directly from the Umbraco backoffice using the Queue for Transfer option. Once a content editor has all the items needed for a transfer, they will use the Deployment Dashboard in the Content section to transfer the items in the queue.
With this arrangement, you don't need to grant Umbraco Cloud portal access to your content editors. Instead, allow them access only to the required backoffice sections of your sites. This also allows developers to focus on deploying metadata that is stored in the site's Git repository and content editors to focus on transferring content that is stored as Umbraco data.
Learn more about the deployment approach in this video, which will also show you how to deploy metadata as well as how to transfer content and media. Below you'll find links to articles containing step-by-step guides for each approach.
To transfer content and media, the source environment and the target environment needs to have the same setup. They need to be in sync and have the same file structure. To achieve this you need to deploy your metadata changes to the target environment.
Moving your content and media between your environments is done through the Umbraco Backoffice. You can transfer content from one environment to another, e.g. from Local to your Development environment. You also have the option to restore content and media to your Local or Development environment from your Live or Staging environment.
Transferring and restoring content and media is the same whether you are working between Local and Cloud or you are working between two Cloud environments.
All configuration for Umbraco Deploy is held in the appSettings.json
file found at the root of your Umbraco website.
Some deployments can cause an Umbraco Cloud environment to restart. See the table below to learn which actions initiate an application restart.
From the Umbraco Cloud Portal, you can manually restart your environments.
You might notice a file in your cloud project called umbraco-cloud.json
. This file tells the deployment engine where to deploy to, it knows which environment you’re currently on (for example, local or staging) and chooses the next environment in the list to deploy to.
You are free to update the name
attribute in the umbraco-cloud.json
file to make it clear in the Workspaces dashboard where you’re deploying to. So if you want to name the Development environment to “Everything goes here” then you can do that and the name will be displayed on the dashboard when deploying to that environment.
Umbraco HQ offers a full-day training course covering best practices for developing with Umbraco Cloud. The course targets frontend and backend developers who currently work or plan to work with Umbraco Cloud.
When your are Working in your Development environment, changes made through the Backoffice are automatically detected and committed to the site's Git repository. This includes Umbraco-specific items like Document types and templates.
Changes made on your Cloud environments will show up in the Umbraco Cloud portal. You'll be able to see what files have been added/changed and who made the changes.
To deploy metadata changes from one Cloud environment to another, click the 'Deploy changes to ..' button on the environment where the changes have been made.
The deployment initiates, and you can see the process in the Overview of your project.
Once it's done, the changes will be deployed to the next Cloud environment. If you have more Cloud environments, follow the same procedure to deploy the changes up to your Live site.
When you deploy, for example, from your Development environment to your Live environment, changes are made to the Live environment. These changes will then be merged back into the Development environment.
Here are the auto-magical steps Umbraco Cloud goes through when you hit the "Deploy changes to .." button:
Before pushing your changes from the source environment, the engine running Umbraco Cloud - Umbraco Deploy - looks for changes in the repository on the target environment
If changes are found, Umbraco Deploy merges the changes from the target environment into the repository on the source environment.
After the merge, the changes from the source environment are pushed to the repository on the target environment.
Finally, the changes pushed to the target repository are extracted to the site, and you will now see your changes reflected in the Backoffice and on the Frontend.
If you have more than one Umbraco Cloud environment, we strongly recommend that you only make changes to metadata on the Development environment. Making changes directly on your Staging and/or Live environments can cause merge conflicts when you deploy from your Development environment.
If you are running Deploy 4+, we recommend you generate Umbraco Deploy Artifact (UDA) files from the Deploy Dashboard instead of KUDU. For more information, see the .
Sometimes our guides require you to generate UDA files for your project's metadata. Every time you create something in the backoffice on your Umbraco Cloud project, UDA files will be generated.
Generating UDA files manually ensures that you have everything you need to deploy successfully from one environment to another.
When you create something in the backoffice of your Umbraco Cloud project and hit save, a UDA file will be generated.
The UDA file contains metadata and detailed information about the type that was created.
Here's an example of what a UDA file looks like for a Blog Page:
This UDA file represents a Document Type with the name Blog. All dependencies for the document type are listed in the file and metadata like AllowedAtRoot
and Icon
.
UDA files are generated for the following types:
Data types
Data type containers
Dictionary items
Document types
Document type container
Languages
Macros
Media types
Member types
Relation types
Templates
Follow these steps to generate UDA files:
Access Kudu.
Navigate to CMD under the Debug console menu.
In the file structure, navigate to site/wwwroot/umbraco/Deploy
.
Type the following command in the CMD console: echo > deploy-export
The Deploy engine will generate UDA files for all the types in your project.
When it's done, you'll end up with a deploy-complete
marker.
How to restore content in Umbraco Deploy using the deployment dashboard
After deploying changes to the metadata, it's time to transfer your content and media. This is done from the Umbraco Backoffice.
Content and media transfers are flexible which means you have complete control over which content nodes and/or media items you want to transfer - all in one go, a few at a time, or a single node.
Transferring content will overwrite any existing nodes on the target environment. Content transfers will transfer the items that you select in the "source" environment to the "target" environment the same as it was in the "source". This means that if you have some content on the target environment already, this will be replaced by the new content from the source environment.
Important: Content and Media transfers will only work if you've deployed all changes to your metadata beforehand. Please refer to our documentation on how to deploy metadata from either or .
Let’s go through a content transfer step by step. Imagine you’ve finished working on new content for your project locally and you are ready to transfer the changes to your Cloud Development environment.
You want to transfer the whole site. You start from the Home
node and choose to transfer everything under it:
Right-click ... next to the Home
node in the Content tree.
Select Queue for transfer.
Alternatively, if you are in the Home page editor, you can go to the Actions dropdown and select Queue for transfer.
Choose if you want to include all items below the chosen page or only transfer the chosen node. Alternatively, right-click the Content tree and select Queue for transfer to transfer all your content at once.
Click Queue.
Select Open transfer queue. The Workspaces dashboard opens.
You will be able to see which items are currently ready to be transferred - this will include both content and media that you've queued for transfer.
Click Transfer to Development and monitor the progress of the transfer.
Once the transfer is completed, you will see a confirmation message stating that the transfer has succeeded.
Media items are transferred the same way as content:
Right-click the items in the Media section and select Queue for transfer. Alternatively, right-click the Media tree and select Queue for transfer to transfer all your media at once.
Click Queue.
Select Open transfer queue. The Workspaces dashboard opens.
Click Transfer to Development.
To be able to transfer Members and Member groups make sure that AllowMembersDeploymentOperations
is configured to transfer
and TransferMemberGroupsAsContent
is set to true
. This needs to be done in the appSettings.json
file
Once the settings have been configured Members can be transferred in the same ways as both content and media from the Members section:
Right-click on the Members or the Member Groups folder and choose Queue for transfer.
Click Queue.
Select Open transfer queue. The workspace dashboard opens.
Click Transfer to Development.
You'll need to ensure the TransferFormsAsContent
the setting is set to true
in the appsettings.json
file:
Once the setting has been added to the source and target environment, Forms can be transferred the same way as content and media:
Right-click the items in the Forms section and choose Queue for transfer. Alternatively, right-click the Forms tree and select Queue for transfer to transfer all your Forms at once.
Click Queue.
Select Open transfer queue. The Workspaces dashboard opens.
Click Transfer to Development.
This does not include entries submitted via the forms.
Deploy can be configured to allow for backoffice transfers of dictionary items instead of using files serialized to disk by setting TransferDictionaryAsContent
as true
.
When changing the values forTransferDictionaryAsContent
and TransferFormsAsContent
to true,
remove any .uda
files for Forms and Dictionary entities that have been serialized to disk. These will no longer be updated. By deleting them you avoid any risk of them being processed in the future and inadvertently reverting a form to an earlier state.
Sometimes a content transfer might not be possible. For example, if you add a new property to the HomePage Document type and you don’t have that property in the other Cloud environment, you’ll get an error with a hint on how to fix this.
On Umbraco Cloud, deletions are environment specific. To delete something entirely from your project, you need to delete it in all environments.
In this article, you can read about the correct way of deleting files, schema, and content from your Umbraco Cloud project.
When you have an Umbraco Cloud project, you might have couple of environments including a local clone of the project. Each of these environments have their own database. These databases store references to your content, media, and schema files, such as Document Types and Templates.
The databases are environment specific. During deployment across environments, Umbraco Cloud's engine compares schema files with database references using alias and GUID for accuracy. If something doesn't add up, for example, there is a mismatch between the database references and the files deployed, you will see an error. Learn more about this in the .
The workflow described above does not recognize deletions of content and schema from the database. You'll need to delete the content and/or schema on all your environments to fully complete the deletion.
The main reason we do not delete schema and content on deployments is that it could lead to an unrecoverable loss of data. Imagine you delete a Document Type in your Development environment. Then, push this deletion to your Live environment, where many content nodes depend on the deleted Document Type. When the deployments go through, all those content nodes would be instantly removed. There is no option to roll back because the Document Type they rely on no longer exists. To prevent such situations, manual deletion is necessary. You must actively decide on each environment for the process to occur.
Let's say you've deleted a Document Type on your Development environment. Now, you want to deploy this deletion to the Live environment, along with some other changes you've made.
Before you deploy the changes, the Development environment will show that the following changes are ready to be deployed:
Following the Activity log in the browser, you'll notice the UDA file for the Document Type gets deleted. Additionally, other files with changes are copied to the new environment.
Once the deployment is completed, you will notice the following:
The template is correctly updated
The Document Type you deleted on Development is still present in the backoffice on the Live environment
You might wonder why the Document Type that you have deleted, is still there. The reason is, that we only delete the associated UDA file and not the actual Document Type in the database.
To delete the Document Type from your entire project, you need to delete it from the backoffice of the other environments. When the Document Type has been deleted from the Backoffice of all the environments and no UDA file exists, you can consider it gone.
You should keep in mind that if you save your Document Type during the process, a UDA file is regenerated. This can recreate your deleted Document Type when deploying changes between environments.
Every file that's deleted, will also be deleted on the next environment when you deploy. However, there are some differences depending on what you have deleted.
Here's an overview of what happens when you deploy deletions to the next environment.
Deleted:
The associated .UDA
file
Not deleted:
The entry in the database
The item will still be visible in the backoffice
Deleted:
The associated .UDA
file
The associated .cshtml
file (the view file)
Not deleted:
The entry in the database
The template file will be empty, but still be visible in the backoffice
As these are only files, everything will be deleted in the next environment upon deployment.
Deletions of content and media won't be detected during deployments. You must manually delete them on each environment where removal is desired.
Deleted:
The associated .UDA
file
Not deleted:
The entry in the database
The language will still be visible in the Backoffice/Content dashboard (for multilingual content)
Deleting the language in the backoffice on the target environment will ensure the environments are in sync.
You can now configure a deployment webhook to be triggered upon successful deployments to any of your Umbraco Cloud environments. For example, when deploying from your local environment to your Cloud Development environment. Upon successful deployment, general information about the deployment will be posted in a JSON format to the specific URL you have configured.
There are many use cases for deployment webhooks such as providing a detailed audit trail. Here are some scenarios where Webhooks could be useful:
Any deployments to the Live site could be relevant for many parties in a company. Posting information about a deployment in internal communication channels like Slack is made possible using this feature.
Monitoring of the whole deployment cycle. A successful deployment might cause an error to show on the website! Integrating the webhook with other monitoring services, you could find out which deployment caused the issue.
Letting content editors know about particular deployments such as when a new Document Type was added. Will inform them that they can now use the new Document Type.
From the Umbraco Cloud Portal go to Settings -> Webhooks
Select the environment to register a webhook.
Fill in the Webhook URL to which the data about a deployment should be posted to. An absolute URL with HTTP/HTTPS schema is an acceptable input to the field - ex. https://exampleURL.com
Click Add Webhook.
General information about the deployment (to the configured environment) will be posted in JSON format to the URL (configured in the previous section).
The headers contain information about the payload in JSON format as well as a version of the payload.
Contents of the payload contain general information about the current deployment with links to the project in the Portal and the frontend of the environment. The final section lists deployed commits, including author, commit message, and changed files in the environment.
Configuration files can be transformed to match requirements on different Umbraco Cloud environments.
In this article, you will find examples of applying environment-specific configuration to your Umbraco Cloud project.
Common configuration files, like the web.config
and appSettings.json
files on your Umbraco Cloud project will be used as examples.
Config Transforms are a way to transform your config files without changing the actual config file.
To transform a config file, you need to create a new file in your project with the following naming convention: {config-file name}.{environment}.config
.
Legacy Umbraco
If your project is on Umbraco 7 and 8 the naming convention is the following: {config-file name}.{environment}.xdt.config.
Find more details on this in the .
If you want to do a transform on your Web.config
file for the Live environment of your project, the config transform you need to create will look like this:
Web.Production.config
The {environment}
part needs to be replaced with the target environment, for which there are currently 3 possibilities for each project:
Production
Staging
Development
This file needs to be created on a local clone of your project, as this will ensure that the file is added to the project repository.
When the file is deployed to the Live environment, the transforms will be applied to the Web.config
file in the Root
of your project. In the case that you also have a Development and/or Staging environment, the Web.Production.config
will only transform the Web.config
on the Live environment.
For each deployment, the Umbraco Cloud engine searches for all of the .{environment}.config
files in your site and apply the transforms.
Using config transforms to remove and/or add sections to config files is currently only possible for the Web.config
file.
When creating config transforms you need to follow these three rules:
Use the correct file-naming convention.
Place the transform file in the same folder as the file you want to transform.
Using the tool will let you test whether the transform file transforms your config files correctly. The tool can be used for all config files.
Rewrite rules are often something you only want to apply to your Live environment. To avoid the rewrites being applied to your Development and/or Staging environments, you can create a transform file to apply the rewrite rules to your Live environment only.
Here is an example of how that config transform would look:
The above snippet requires your project to have a web.config file with a matching structure, otherwise, the config transform (and subsequently, the deployment) might fail.
This config transform will add a <rule>
to <system.webServer><rewrite><rules>
. The xdt:Transform
attribute is used to tell the system what to transform. In this case, the value is Insert
, which means it will add the section if it's not already in the config file.
On Umbraco Cloud, projects come with an appsettings.json file for each of your different environments.
With this, you can add different environment-specific settings to your project.
To edit the appsettings.json files for the different environments, the Umbraco Cloud project needs to be cloned down to your local machine. Then the files can be edited using your code editor.
Once done editing the files, they will need to be pushed up to your Umbraco Cloud project to be added to the repository.
When the file is deployed to the next environment on Umbraco Cloud, the settings in the appsettings file will be applied to that environment. For example, the settings in the appsettings.Production.json will be applied to the Live environment of your project.
If you are running Deploy 4+, we recommend you run extractions from the Deploy Dashboard instead of KUDU. For more information, see the article.
When you deploy from one environment to another on your Umbraco Cloud project, the files from the Git repository are merged into the files used on the site. The Deploy engine then runs an extraction. This means that the files on the disk will be deserialized into the database in the Cloud environment.
Run an extraction following these steps:
Access Kudu.
Navigate to CMD under the Debug console menu.
In the file structure, navigate to site/wwwroot/umbraco/Deploy
.
When using Umbraco 7 or 8, you need to navigate to site/wwwroot/data
folder.
The /Deploy
folder contains:
Revision
folder containing all your project's UDA files.
deploy-marker
indicating the state of the latest extraction (deploy-complete
or deploy-failed
).
deploy.log
containing logs from the latest extraction.
While in this folder, type the following command in the CMD console: echo > deploy
. This will initiate extraction of the environment.
While the extraction is running, the deploy-marker will change its name to deploy-progress
.
The extraction will end in one of two possible outcomes:
deploy-complete
: The extraction succeeded and your environment is in good shape.
deploy-failed
: The extraction failed - open the file, to see the error message. The same error message will be shown on your environment in the Umbraco Cloud Portal.
Sometimes, you might encounter a deploy-marker called deploy
. This usually means that extraction cannot run and you need to restart your environment for the extraction to run.
Sometimes, you might also need to run this extraction locally. This can be done by following the above steps using Command Prompt (CMD) on your local machine and navigating to the /umbraco/data
folder in your local project folder.
Soon all remaining customers will be migrated to the new subscription and billing engine on Umbraco Cloud. Below you find the most frequently asked questions about migration.
The migration of Umbraco Cloud subscriptions from shop.umbraco.com to the new subscription and billing engine on Umbraco Cloud will start on September 4, 2023. The migration will be performed in batches in close collaboration with our payment provider to ensure the subscriptions are moved correctly.
The process will be handled automatically, no action is required on your end.
You can find documentation on how the new subscription and billing engine works in the and .
When we refer to the old shop (or old billing engine), we mean subscriptions handled on shop.umbraco.com. The new subscription and billing engine is integrated directly into the Umbraco Cloud portal.
The new shop exists within the Umbraco Cloud portal and can be found in the organization view.
The subscription will be connected to an organization on Umbraco Cloud.
You will only be charged once a month and can find information about invoices and credit cards under your organization.
Inviting other users or non-users to your organization in the Organization is possible under the Members item.
Invoices in the new shop are sent directly via email and you can download invoices in your organization, under Payment History.
If you need the old invoices, please reach out to .
The information can be changed in your Organization under the Information item.
When managing an Umbraco Cloud project with multiple environments, you might need to push a hotfix to your Live environment. There might be a possiblity that you have pending changes in other environments that are not ready for deployment.
Imagine you have two environments: Live and Development. You are currently working on some changes in your local clone of the Development environment. These changes will not be ready for the Live environment for couple of weeks. However, you now need to apply a minor change to your Live environment – a hotfix.
Typically, you would make the hotfix locally, push it to the Development environment, and then deploy it to Live. In this scenario, that process is not possible as you do not want to deploy the other pending changes you are still working on.
Following Umbraco Cloud's workflow, you should never make changes directly to the Live environment unless it is the only environment you have. For more information about environments on Umbraco Cloud, see the article.
It is possible to apply specific changes to your Live environment without breaking Umbraco Cloud workflow. Here are two approaches:
Clone the Development environment and use Git to push the selected changes to the Live environment. The advantage of using this approach is that your Git history is more accurate and you only work with one local repository. This method requires Git knowledge, but a Git client can simplify the process. You should only go with this guide if you feel comfortable working with Git.
Clone both your Development and Live environment to your local machine. Copy the updated files from the cloned Development environment to the cloned Live environment. Push the files to the Live environment on Umbraco Cloud. This allows you to test the changes on a cloned Live environment before pushing it to the Cloud.
In this article, you'll find a step-by-step guide on how to apply a hotfix to a Live environment by manually moving the changed, updated, and/or new files from one local clone to another.
A
In this tutorial GitKraken has been used, however, you can use any Git GUI you prefer.
You have an Umbraco Cloud project with two environments, Development and Live.
You have been working on building the site on a local clone of the Development environment, and now you want to send some but not all changes to the Live environment.
Three commits have been pushed from your local clone to the Development environment. Out of these three commits, you only need the changes from one of the commits in the Live environment.
Here are the steps to follow to apply selected changes to the Live environment without deploying from Development to Live.
For the sake of simplicity here's an explanation of the names I'll be using in this guide:
The cloned Development environment: Development repository
The cloned Live environment: Live repository
Clone down the Live environment.
The clone URL for the Live environment can be found in the Umbraco Cloud Portal:
Locate the files from the Development repository that you want to move to Live.
Check the commits in the Git history for the Development repository to verify which files you need.
The new files can be moved from the Development repository to the Live repository.
The same goes for changed files. You can also edit the files, and only move the code snippets you need on the Live environment.
Copy and paste the new and/or updated files from your Development repository to your Live repository.
You can now Stage and Commit these changes to the Live repository in Git.
One of the benefits of having the Live environment cloned down, is that you can test the new changes locally before sending them to the Live environment.
Run the Live repository through IIS
Go to the backoffice of your project
Navigate to the settings section
Go to the Deploy Dashboard in the Settings section
Run the Deploy operation Update Umbraco Schema From Data Files
The changes will now be reflected in the backoffice of your local Live environment.
Once you've checked that everything works locally, you are ready to push to the Live environment.
Push the committed changes to the Live environment using Git.
When changes are pushed directly to a Live environment and you have more than one environment, the changes are not automatically extracted to the site.
2. Run the Deploy operation Update Umbraco Schema From Data Files
from the Deploy Dashboard
You have now applied a hotfix to the Live environment.
Once you've applied the hotfix, we recommend that you delete the local clone of the Live environment. If you need to apply another hotfix at some point, clone the environment down again.
Make sure that the changes you push directly to your Live environment are also pushed to the Development environment. This will ensure that your environments are kept in sync.
This guide can also be used for applying a hotfix to a Staging environment.
In this article, you can learn about how Umbraco Forms is handled on Umbraco Cloud and read about the workflow and best practices.
Umbraco Forms is a package that is included with your Umbraco Cloud project. It gives you a nice integrated UI, where you can create Forms for your website. The package is built specifically for Umbraco and is maintained by Umbraco HQ.
Read more about the product in the documentation.
Forms are handled like content and media. This means that you can transfer your Forms between environments, using the same workflow you use for content and media.
Definitions for each specific Form, its fields, workflows, and prevalues are all stored in the Umbraco database.
Entries submitted are not transferred to the next environment, as they are environment-specific. If you need to move entries from one environment to another, you need to run an export/import script on the databases.
You can work with Forms in an environment of your choice. When you need to test or use your Forms in another environment you can:
Transfer the Forms to the next environment using Queue for transfer or
Restore the Forms on an environment lower in the workflow.
For more information on how to handle content transfer/restores on Umbraco Cloud, check out the following articles:
Whenever a new minor version of Umbraco Forms is ready, eg. 10.x or 11.x, you will get the option to apply the upgrade to your project. When your project is eligible to receive the new version, you will see an "Upgrade available!" label on your Development environment.
In this section, you can find information about version-specific changes that might affect the way Umbraco Forms works on your project.
In Umbraco Forms version 9.0.0+, it is only possible to store Form data in the database.
Prior to Umbraco 8.5.0, all forms data was saved as .json
files in the App_Data/UmbracoForms
directory in the file system.
As of Umbraco 8.5.0, you have the option to persist all Forms data directly in the database. This behavior defaults to all new sites created on Umbraco Cloud since September 2020. If your Cloud project was created before, you will need to upgrade the Umbraco Forms version. Additionally, apply a setting to perform the migration of the Umbraco Forms data.
To switch to persisting all definitions for Umbraco Forms data in the Umbraco database, follow these steps:
Make sure all environments are upgraded to at least Umbraco Forms version 8.5.2 and Deploy 3.5.0.
Make sure your Forms are in sync between all your Cloud environments.
Clone down your Development environment.
Restore content and Forms to the local clone.
Open the configuration file App_Plugins\UmbracoForms\UmbracoForms.config
from your local clone.
Add the following key in the <settings>
section and make sure the value is set to True
:
Save the file.
Spin up your local clone and verify that everything works as expected.
Now it is time to deploy the setting to your Cloud environments.
Follow the steps outlined below for each environment for the migration to run on each of them.
Access KUDU.
Navigate to site/wwwroot/App_Data
.
Delete the UmbracoForms
directory.
Push the updated setting to the environment.
To run the migration, restart the environment from the Cloud portal.
From the Umbraco Backoffice, Queue and transfer the Forms to the environment.
Repeat steps 1-5 for each of your Cloud environments.
Did you create your project before June 2018?
Then your Umbraco Forms data might still be handled as metadata.
You will need to follow the steps below to persist Umbraco Forms data in the Umbraco database.
Find and open Config\UmbracoDeploy.settings.config
on your local machine.
Update the transferFormsAsContent
value to true
:
Remove all existing data\revision\forms-form__*.uda
files, so it's not possible to accidentally revert to this state (removing UDA
files won't remove the actual form on deploy).
Push the change back to the Cloud environment.
If you have more than 1 Cloud environment, make sure to deploy the change through to all of them.
You are now able to queue your Forms for transfer between the Cloud environments, like content and media.
If you do not have the transferFormsAsContent
setting in the UmbracoDeploy.settings.config
file, you do not need to make any further changes.
Sometimes you might experience that you lose the tree in the Forms section in the backoffice after a deployment. To get the tree back, all you need to do is restart the environment from the Umbraco Cloud Portal.
In this article, you'll find a step-by-step guide on how to apply a hotfix to a Live environment using only Git.
GitKraken
You can use whichever Git client or command line interface you prefer.
If you've never worked with cherry-picking before, we recommend that you use a Git client with a UI that gives you a visual overview of your commits.
You have an Umbraco Cloud project with two environments, Development and Live.
You have been working on building the site on a local clone of the Development environment, and now you want to send some but not all changes to the Live environment.
A set of commits have been pushed from your local clone to the Development environment. Out of these commits, you only need the changes from two of the commits in the Live environment for now.
Here are the steps to follow to apply selected changes to the Live environment without deploying from Development to Live.
Open your local clone of the Development repository in GitKraken (or your preferred Git client).
Make sure that the changes you push directly to your Live environment are already pushed to the Development environment. This will ensure that your environments are kept in sync.
Choose the commit where you want to create a new branch.
This branch should be created in an earlier commit that is corresponding to the state of the Live environment (before the changes you've made locally have been committed).
With the new Hotfix branch checked out, it's now time to cherry-pick the commits you want to apply to the Live environment.
Right-click the commit you want and choose "Cherrypick commit".
You will be asked if you want to commit this directly to the new branch - Choose Yes.
Choose No if you want to create a new message for the commit.
You can cherrypick as many commit as you like.
Your Git history will now look something like this.
Before you push the newly created branch to Umbraco Cloud we need to change the remote destination. If you hit Push now, the branch would be pushed to the Development environment. You need to add the Live environment as a new remote.
Find the clone URL for the Live environment in the Umbraco Cloud Portal.
In GitKraken add a new remote, by clicking the + next to Remote.
Give the new remote a name - like Live, and add the clone URL for the Live environment to both Push URL and Pull URL - click Add Remote.
You will be prompted to authenticate - use your Umbraco Cloud credentials.
You will see that the history from the Live repository is visible in the Git history.
Next step; hit Push.
Choose to push to the newly added remote, and write master to make sure you are pushing to the master branch on the Live environment.
Hit Submit and the push will start.
When changes are pushed directly to a Live environment and you have more than one environment, the changes are not automatically extracted into the site.
You have now applied a hotfix to the Live environment. Make sure that you merge and remove the branch you've created on the Development repository before pushing it to the Development environment on Cloud. You can always create a new branch if you need to apply another hotfix to the Live environment.
This guide can also be used for applying a hotfix to a Staging environment.
The above describes the workflow in GitKraken. You can use a git client of your choice or Git terminal/command prompt if you are comfortable with that.
Status Code | Error | Basic Root Cause |
---|---|---|
Find general information about Kudu and how to access the tool in the article.
Action: | Application Restart? |
---|
to learn more about the topics covered and how it can enhance your Umbraco development skills.
It is important to be aware of how deletions work between environments. Some deletions are environment-specific and others are not. For more information see the .
Refer to our troubleshooting documentation about , if you should run into issues while deploying between your Umbraco Cloud environments.
Run an extraction, making sure you can get a deploy-complete
marker - see article.
Generating UDA files manually might sometimes end up giving you collision errors on your environments due to duplicates. This can be resolved by following our documentation.
Find general information about Kudu and how to access the tool in the article.
If you are seeing this type of issue when trying to transfer content, refer to the article, where you can read about how to resolve the issues.
Be aware that a misconfigured config transform may .
Follow the correct .
Before applying the config transform files to your environments, we recommend running a test using this tool: .
Find general information about Kudu and how to access the tool in the article.
The name of the organization can be changed by reaching out to .
Currency is based on the country that the Organization has put in. To change this reach out to .
For more information, see the article.
For more information, see the article.
When you are done with development on your Development environment, follow the normal workflow of . The hotfix which now exists in both environments should automatically be merged upon deployment.
Umbraco Forms is part of the . Whenever a new patch is ready for release, we will automatically apply it to your Cloud project. There will be a notification in the Umbraco Cloud Portal at least 5 days before we roll out new versions.
To avoid having the auto-upgrades overwrite any of your custom settings, we strongly encourage that you use when you need custom configuration. Additionally, use when you need to customize your forms.
If you want to upgrade to Umbraco 9 and are using Forms, you should first migrate the Forms to the database using Forms 8. See the article.
Find a guide on how to extract the files in the article.
When you are ready to build on your Development environment, follow the to deploy the changes to the Live environment.
400
BadRequest
Check the requested path, supplied headers and query-parameters
401
Unauthorized
Check the Project Id and Api Key
404
NotFound
Usually related to the supplied deploymentId in path not being found
409
Conflict
The state of the referenced deployment is not ready for the work you are requesting
500
InternalServerError
InternalServerError
Config file change | Yes |
Metadata deployment | No |
File change - Example: css-file | No |
Content and/or Media transfer | No |
The databases on your Umbraco Cloud environments are specific to their environment. This means that no matter what you have configured in the connectionstring
in your web.config
or appSettings.json
file, we overwrite the connectionstring to use the SQL Azure Server we provide.
When working with Umbraco Cloud, the way you work with databases might differ from what you're used to. One important aspect of Umbraco Cloud is that you always work isolated to avoid interfering with colleagues or a running website. This includes the database as well.
In this article you can read more about working with the Cloud Database.
This article will tell you all you need to know to work locally with your Cloud Database.
Here you can learn more about taking backups of your Cloud Database.
Explanation on how to work with an Umbraco Cloud database locally, connecting to your local database using Visual Studio and working with custom tables in the Cloud database
This article covers how you can connect to the database of your local project and how you can work with custom tables on Umbraco Cloud.
When cloning down your project to work locally you might want to have a look in your database every now and then.
Since Umbraco 10, SQL CE is no longer supported, instead, Umbraco now comes with SQLite out of the box.
When cloning down your Umbraco project and restoring its content, it will create a Umbraco.sqlite.db
file in ~/umbraco/Data/Umbraco.sqlite.db
.
To view your local SQLite database, you will need to use a program like DB Browser for SQLite or a Visual Studio extension like SQLite and SQL Server Compact Toolbox.
You can also configure your project to prefer SQL Server LocalDb when it's available on your local machine by enabling the Deploy PreferLocalDbConnectionString
setting.
To configure your database, you can add the connection string in the 'appsettings.json' file. For more information, see the Configure your database section in the Unattended Installs article.
Umbraco Cloud will ensure that your Umbraco-related data is always up to date, but it won't know anything about data in custom tables unless told. This is like any other host when it comes to non-Umbraco data.
However, you have full access to the SQL Azure databases running on Umbraco Cloud. You can create custom tables like you'd expect on any other hosting provider. The easiest way to do this is to connect using SQL Management Studio.
The recommended way of making sure custom tables are present is to use Migrations. This is to ensure that the tables will be created or altered when starting your site.
Migrations will ensure if you add environments to your Umbraco Cloud site, the tables in the newly created databases will automatically be created for you.
Check the Creating a Custom Database table for an example of how to create and use Migrations.
Learn how to manually upgrade your Umbraco Cloud project to the latest version of the Umbraco projects.
In some cases, you might need to upgrade your Umbraco Cloud project manually. It's very similar to how you would upgrade any other Umbraco project but includes a few extra and very important steps.
Umbraco Cloud project uses Umbraco Forms and Umbraco Deploy, which means there are also some dependencies you need to consider when upgrading your Umbraco Cloud project manually.
By default, all Umbraco Cloud projects are automatically upgraded when we release new patches (e.g. 8.8.1) to the Umbraco CMS as well as Umbraco Forms and Umbraco Deploy. When we release a new minor version (e.g 8.8) the upgrade is applied to the Umbraco Cloud engine, and not to the individual projects - the same goes for the release of new major versions (e.g. 10.0). For these minor and major versions, there will be an option on your Umbraco Cloud Development environment to apply the upgrade. The Umbraco Cloud engine will take care of the entire process, and you only need to make sure everything works after the upgrade has been applied.
We always recommend using the automatic and semi-automatic upgrade options provided to you as part of your Umbraco Cloud project. With that said, it's also possible to upgrade your Umbraco Cloud project manually - this can be done with both patches and minor and major versions.
A reason for doing a manual upgrade of your Cloud project could be if you want to test out new features and functionality on your local machine before they are applied to your Cloud environments.
When you are manually upgrading a Umbraco Cloud project it's important that you take into account the dependencies that exist between the products on Umbraco Cloud. To continue reaping the full benefits of Umbraco Cloud make sure to check for dependencies when you upgrade to a new minor or major version of Umbraco CMS.
When you are manually upgrading your Umbraco Cloud project and you need to upgrade two or more products, this is the order you need to follow:
Umbraco CMS
Umbraco Forms
Umbraco Deploy
Learn more about the product dependencies on Umbraco Cloud
Make sure to follow the steps carefully when upgrading your Umbraco Cloud project to the newest version of Umbraco CMS.
There are no Umbraco Cloud-related files to be aware of when upgrading Umbraco Forms. Therefore you can follow the general Umbraco Forms upgrade notes. When upgrading Umbraco Forms, be sure to also consult the version specific upgrade notes to learn about potential breaking changes and common pitfalls.
This document describes when & what product updates are rolled out on Umbraco Cloud
Umbraco CMS patch updates
Forms patch updates
Deploy
Internal Umbraco Cloud services (generally these updates will not affect running websites but in some cases, if they do we will notify Umbraco Cloud users via the status page)
When minor upgrades are available, you will need a Development environment on your project in order to get the new version. Read the Minor Upgrades article for more details.
The status page will include all important rollout information: https://status.umbraco.io/
We will release product updates only on Tuesday
The decision to roll out an upgrade will be made no later than the Thursday prior and the status page will be updated accordingly
A product upgrade will be rolled out if:
A fix needs to be shipped due to a critical issue in any product
A patch version of Umbraco Core is ready for release
A new version of Deploy is ready for release
A new version of Forms is ready for release
Umbraco Cloud reserves the right to roll out an emergency product fix to fix a critical issue at any time
Your project will not be auto-upgraded if your environments aren't running the same minor version. For example, when trying to upgrade a project to a new minor version where one environment is running 10.6.x and another is running 10.7.x.
Before a live upgrade is rolled out on Umbraco Cloud:
Write release notes and include special upgrade instructions and/or blog posts if necessary
Create a new version on the issue tracker
Take the build from AppVeyor and push to NuGet
Update our.umbraco.com release page
Update Umbraco Cloud’s site creation engine with the new version so that all new sites are built with the latest version
Run the auto-upgrader on Umbraco Cloud on a subset of test sites to verify there are no issues
Run the auto-upgrader on all Umbraco Cloud sites
This describes how a Umbraco Cloud project is auto-upgraded:
The upgrade payload will have been created for the specific product(s) being upgraded
The payload is a set of files (such as DLLs, and other ASP.NET website files)
The upgrader will verify that the home page of all the environments (dev/staging/live) is healthy, meaning they don’t return an HTTP status error. If all environments are ok, it will proceed.
The upgrader will take a snapshot of the Dev site’s home page including its HTTP status code result and its HTML contents.
The payload is deployed to the Dev site’s Git repository and committed with a tag for the product version being updated. This new Git repository commit will replace the Umbraco product assembly (DLL) files along with other product files such as files located in /umbraco, /umbraco_client folders
The normal Umbraco Cloud deployment process is invoked and the repository files are deployed to the website
The upgrader will automatically ensure the web.config version and the database version are updated so that the Installer/upgrade page is not shown
The upgrader will verify that the new HTTP status code returned from the Dev site’s home page is OK and will verify that the HTML contents of the home page match that of the snapshot originally taken.
If either of these tests fails we will be notified and Umbraco will take appropriate measures to roll back the site to its previous state
The failed upgrade is then tracked for reporting and the customer will be notified if necessary
When the Dev site is upgraded successfully, the upgrader will continue this same process for the next environment in the chain (that is Dev -> Staging -> Live) depending on the number of environments that exist for the project.
Changes for patches might appear on Development, even if they have already been applied to Live. The environments will not be synchronized during the upgrade process. This is because synchronization risks pushing other apparent changes from one environment to another. Those changes will need to be deployed. Once that has been done, the environments will be in sync again.
The upgrade process for patch and minor versions is the same for projects with child projects created off them. The difference is that we always upgrade the baseline as the first project, and afterward we upgrade the child projects. This ensures that any updates done from the baseline will also send the upgrade to the children.
It is important that developers understand what is considered a breaking change in Umbraco products. In most cases, an auto-upgrade will not have any breaking changes and we strive to ensure this is the case. However, in some rare cases, developers may be using Umbraco's internal code not intended for public consumption. In some releases, that code may change. It is important for developers to understand the risks of using Umbraco code that is not considered a breaking change when it is updated. This may directly affect a site that is auto-upgraded.
What is a breaking change is documented here: https://our.umbraco.com/documentation/development-guidelines/breaking-changes
No, it´s not possible to opt-out of product auto upgrades on Umbraco Cloud.
To support a site on Umbraco Cloud, all sites must run the latest versions of our products. That way, we know the sites are running in the most stable state.
We have gathered a list of frequently asked questions below that have something to do with troubleshooting on Umbraco Cloud. These are not covered by the other sections.
Probably not! In most cases including the custom files (and configuration) is enough for Umbraco Cloud to understand how to deploy your site. In some cases, namely where you’ve created a data type that serializes data or otherwise stores property data in a non-standard format, you’ll need to also create a corresponding value connector. Fortunately these are created using the samples here
Umbraco Cloud uses web sockets to communicate between your browser session and the remote environment.
For the following scenarios you may find that deployments (and other operations) do not complete successfully. At this time there is not a workaround to this requirement.
If your connection to the internet doesn’t support web sockets
You are behind a proxy server or firewall that blocks web sockets, or
If the web socket connection is in any other way not supported
This error usually mean that the user's account does not have the same user name and password on the environment you're deploying to. So when that user is deploying from development to staging they will get this error if they either don't exist on the staging environment or if their password is different between the dev and staging environment.
If an error occurs when you are using Umbraco Cloud there are several places that can take place and a lot of possible reasons for it.
Start by determining where this error is reported and what causes the error. The approach you need to follow to fix these errors is very different, so jump to the section that seems right to your issue below.
In some cases, you might not want to restore the entire content tree but only the parts that you need. Partial restore is a feature that allows for restoring specific parts of your content instead of restoring everything.
You can use Partial Restore on:
Empty environments - Requires Umbraco Deploy 3.3+.
This feature is only available with Umbraco Deploy 3.3+
In this scenario, you've cloned down your Cloud environment to your local machine or set up a new Cloud environment. In both cases, the new environment will have an empty Content section as well as an empty Media section.
This feature will also restore all dependencies of the selected content. For example, when you restore a content node that references media items as well as other content nodes, these will all be restored, including any parent nodes that these nodes depend on.
To partially restore the parts you need:
Go to the Content section of the Umbraco backoffice on your new environment (local or Cloud).
Right-click the Content tree or click the three dots and select Do something else.
Choose Partial Restore
Select the environment that you would like to restore the content from.
Click Select content to restore and a dialog with a preview of the content tree from the environment you selected opens.
Select the content node you would like to restore.
Enable Including all items below if you want to restore any child nodes below the selected node.
Click Restore.
Once the restore is completed, right-click the Content tree and select Reload.
If you select a content node deeper down the tree, all the parents above it, required for the node to exist, will be restored as well.
Partial Restores on empty environments are especially helpful when you have a large amount of content and media and do not necessarily need it all for the task you need to do. Instead of having to restore everything which could potentially take a long time, doing a partial restore can be used to shorten the waiting time by only restoring the parts you need. This will ensure that you can quickly get on your way with the task at hand.
It is also possible to use the Partial Restore feature in environments where you already have content in the Content tree.
Imagine that you are working with your Umbraco Cloud project locally. One of your content editors updates a section in the content tree on the Live environment. You would like to see how this updated content looks with the new code you are working on. To partially restore the updated content node, do the following:
Go to the Content section of your Umbraco backoffice.
Right-click the content node which you know contains updates.
Choose Partial Restore
Select the environment that you would like to restore the content from.
Enable Including all items below if you want to restore any child nodes below the selected node.
Click Restore.
Once the restore is completed, right-click the Content tree and select Reload.
Follow this guide when upgrading your Cloud project to a new major version of Umbraco CMS.
Are you using custom packages or code on your Umbraco Cloud project?
Make sure any packages you use are compatible with the latest version of Umbraco. Additionally, confirm that your custom code works with the updated .NET version.
Breaking Changes
Be aware of any Breaking changes introduced in the latest version of Umbraco CMS to avoid issues during the upgrade.
Before upgrading your Umbraco Cloud project to the latest major version, you must consider the version your project is already on. This will impact the upgrade flow you will be following.
When upgrading from an STS version, you must start by upgrading to the closest Long-term Support (LTS) major. If the version you are upgrading to is an STS version, you can upgrade to that version, directly from the closest LTS. You can upgrade directly if there are no LTS versions between the current one and the one you are upgrading to.
Refer to the Long-term support and EOL article to learn which versions are STS.
Start by upgrading to the closest LTS. In this case, that is Umbraco 13. After that, you can upgrade directly from Umbraco 13 to Umbraco 15.
When upgrading from an LTS version, you must start by looking at the versions between yours and the one you are upgrading to. Is there another LTS version in that line, you need to upgrade to that version first.
Refer to the Long-term support and EOL article to learn which versions are LTS.
Skipping upgrades to STS versions, like 11 and 12, means you will not receive warnings about obsolete features. We recommend keeping the Breaking Changes documentation handy to avoid any surprises.
Between version 10 and 15, there is another LTS version: Umbraco 13. The first step is therefore to upgrade to Umbraco 13. After that, you can upgrade directly from Umbraco 13 to Umbraco 15.
Look for the "Upgrade from/to Umbraco xx" boxes. These boxes contain important information about any extra steps needed for a specific version.
Follow the requirements for local development.
An Umbraco Cloud project running the latest version of your current Umbraco CMS installation
The latest .NET version is installed locally.
At least 2 environments on your Cloud project.
A backup of your project database.
Directly from your environment. See the Database backups article,
Or clone down, restore the project, and back up the local database.
Go to the project in the Umbraco Cloud portal.
Navigate to Configuration -> Advanced.
Scroll down to the Runtime Settings section.
Ensure that the latest version of .NET is enabled for each environment on your Cloud project, by selecting it from the dropdown.
Clone down the Development environment.
Build and run the project locally.
Log in to the backoffice.
Restore content from your Cloud environment.
Open your project in Visual Studio - use the csproj
file in the /src/UmbracoProject
folder.
Right-click your project solution in Solution Explorer.
Select Properties.
Change the Target framework in the General section of the Application tab.
Choose the version you set on your Cloud environment in Step 1.
Go to Tools > NuGet Package Manager > Manage NuGet Packages for Solution.
Navigate to the Updates tab.
Select the version you are updated to, and follow the instructions:
The following packages are no longer needed on the Cloud platform:
Umbraco.Cloud.Cms.PublicAccess
Umbraco.Cloud.Identity.Cms
The references to these packages need to be deleted.
Open the .csproj
file.
Locate PackageReference
for the packages mentioned above.
Delete the references and save the file.
Update the following packages:
Umbraco.Forms.Deploy
Umbraco.Cms
Umbraco.Deploy.Cloud
Umbraco.Deploy.Contrib
Umbraco.Forms
Umbraco.Cloud.Cms
Umbraco.Cloud.StorageProviders.AzureBlob
Update the following packages:
Umbraco.Forms.Deploy
Umbraco.Cms
Umbraco.Deploy.Cloud
Umbraco.Deploy.Contrib
Umbraco.Forms
Umbraco.Cloud.Cms
Umbraco.Cloud.Identity.Cms
Umbraco.Cloud.Cms.PublicAccess
Umbraco.Cloud.StorageProviders.AzureBlob
Microsoft.Extensions.DependencyInjection.Abstractions
From Umbraco 13, the Umbraco.Deploy.Forms
package has been replaced with the Umbraco.Forms.Deploy
package.
Remove the Umbraco.Deploy.Forms
package.
Update the following packages:
Umbraco.Cms
Umbraco.Deploy.Cloud
Umbraco.Deploy.Contrib
Umbraco.Forms
Umbraco.Cloud.Cms
Umbraco.Cloud.Identity.Cms
Umbraco.Cloud.Cms.PublicAccess
Umbraco.Cloud.StorageProviders.AzureBlob
Microsoft.Extensions.DependencyInjection.Abstractions
Install the Umbraco.Forms.Deploy
package.
Update the following packages:
Umbraco.Deploy.Forms
Umbraco.Cms
Umbraco.Deploy.Cloud
Umbraco.Deploy.Contrib
Umbraco.Forms
Umbraco.Cloud.Cms
Umbraco.Cloud.Identity.Cms
Umbraco.Cloud.Cms.PublicAccess
Umbraco.Cloud.StorageProviders.AzureBlob
Microsoft.Extensions.DependencyInjection.Abstractions
If you have more projects in your solution or other packages, make sure that these are also updated to support the latest .NET.
Ensure the Unattended Upgrades feature is enabled.
Run the project locally.
Log in to the Umbraco backoffice to verify the upgrade has happened.
If you cannot login locally via Umbraco ID and URL shows /umbraco/authorizeupgrade?redir=
then this is because of the Unattended Upgrades setting. It must be set to true
and deployed to the environment before the upgrade.
Ensure that the project runs locally without any errors.
Push the changes to the Cloud environment. See the Deploying from local to your environments article.
Test that everything works with the upgrade on the Cloud environment.
We highly recommend that you go through everything in your Cloud environment. This can help you identify any potential errors after the upgrade, and ensure that you are not deploying any issues onto your production environment.
The next part is to deploy the upgrade through to the production environment.
For major upgrades that include content migrations, the process can be extensive. This is especially true for sites with a large amount of content. In these cases, it is recommended to:
Initiate a content freeze to prevent changes during the migration.
Rearrange your custom hostname(s) to minimize website downtime.
You can choose between two approaches based on your needs:
"With content freeze" - involves a more detailed upgrade process but helps reduce downtime on your live website.
"Without content freeze" - provides a more straightforward process that may result in longer downtime on your live website.
The following steps involve setting a content-freeze period on the project. It is recommended to coordinate this with your content editors before moving forward.
Delete any environments between your left-most (Development) and production environment.
Create a new environment from the production environment.
Initiate content-freeze.
Import content using either of the following approaches:
Restore content and media directly from the backoffice.
Use the Database Backup and Restore functionality in the Cloud Portal.
Follow Step 1 for the next environment in the line.
Deploy the upgrade from the left-most environment (Development).
Verify and test all functionality on the upgraded environment.
Remove your custom hostname(s) from the production environment.
Ensure the hostname(s) no longer point to the production environment.
Add the custom hostname(s) to the new environment (Staging).
Follow Step 1 for the production environment.
Deploy the upgrade to the production environment.
In case the upgrade is taking longer than expected, restore a backup of the Staging database on the production environment.
Cancel content-freeze.
Verify and test all functionality in the production environment.
Remove your custom hostname(s) from the Staging environment.
Ensure the hostname(s) no longer point to the Staging environment.
Add the custom hostname(s) to the production environment.
Deploy the upgrade to the next environment.
Verify and test all functionality on the upgraded environment.
Deploy the upgrade to the production environment.
In case the upgrade is taking longer than expected, restore a backup of the database on the production environment.
Verify and test all functionality in the production environment.
Learn how to manually upgrade your Umbraco Cloud project to run the latest version of Umbraco CMS.
Projects on Cloud will either be automatically upgraded with patch releases or it can be done through the portal when new minors are available.
In rare cases, your project might not be on the latest patch or minor and you will need to upgrade the project manually.
This article will give you a step-by-step on how to manually upgrade your Umbraco Cloud project.
When upgrading a Umbraco Cloud project manually, the very first step is to either clone down your Cloud Development environment to your local machine or pull down the latest changes for your development environment.
Navigate to the /src/UmbracoProject/
folder to find the .csproj
file.
Make sure you can run your Cloud project locally and restore content and media. It's important that you check that everything works once the upgrade has been applied and for this, you need to have a clone locally that resembles the Cloud environment as much as possible.
If your Cloud project is running legacy Umbraco (version 7 or 8), you will need to follow an approach specific to those versions.
Find the steps you need in the Manual upgrades for legacy Umbraco section.
To get the latest version of Umbraco you will need to upgrade the site using NuGet.
NuGet installs the latest version of the package when you use the dotnet add package
command unless you specify a package version:
dotnet add package Umbraco.Cms --version <VERSION>
After you have added a package reference to your project by executing the dotnet add package Umbraco.Cms
command in the directory that contains your project file, run dotnet restore
to install the package.
Alternatively, you can update the CMS through the NuGet Package Manager
in Visual Studio:
When the command completes, open the .csproj
file to make sure the package reference was updated:
When you are done updating the NuGet packages as mentioned above, follow these steps to complete the upgrade and verify that everything is working as expected before you push the changes to your Umbraco Cloud project
Run the project locally
When the project spins up, you'll be prompted to log in to verify the upgrade
On the installation screen, you need to verify the upgrade:
Hit Continue - this will complete upgrading the database
The upgrade will finish up
When it's complete you will be sent to the Umbraco backoffice
Make sure that everything works on the local clone and that you can run the project without any errors.
Before you deploy the upgraded project to the Cloud, it's important that you check if there are any dependencies on the new Umbraco version.
If updates are available for Umbraco Forms or Umbraco Deploy then you can upgrade those locally as well, before moving on.
When you've upgraded everything locally, and made sure that everything runs without any errors, you are ready to deploy the upgrade to Umbraco Cloud.
Stage and commit all changes in Git
Push the changes to the Cloud environment
When everything is pushed, head on over to the Umbraco Cloud Portal
Access the backoffice of the Cloud environment you pushed the upgrade to - Development or Live
You will again be prompted to log in to complete the database upgrade
You will be sent to the backoffice once the upgrade is complete
Again it's important that you make sure everything runs without any errors before moving on to the next Cloud environment.
This article will provide detailed steps on how to migrate a Umbraco 7 Cloud project to Umbraco 8.
Taking your Umbraco CMS project from Umbraco 7 to 8 is called a migration as it requires that the data is migrated in the process. This article covers each step involved in this process.
Read the general article about Content migration to learn more about limitations and other things related to migrating your Umbraco site from 7 to 8.
You can find the full playlist here: Migrate an Umbraco Cloud project from 7 to 8
A Umbraco 7 Cloud project running the latest version of Umbraco 7.
Make sure Umbraco Forms data is not handled as content.
See Umbraco Forms on Cloud for more details on how to check the setting.
A clean Cloud project running the latest version of Umbraco 8 with at least 2 environments.
We strongly recommend having at least 2 environments on the Umbraco 8 project.
Should something fail during the migration, the Development environment can always be removed and re-added in order to start over on a clean slate.
Clone down the Umbraco 7 Cloud project.
Run the project locally and restore Content and Media.
Clone down the Development environment from the Umbraco 8 Cloud project.
We recommend setting up the Umbraco 8 Cloud portal locally in Visual Studio.
This can be done after cloning down the Cloud environment or by using the UaaS cloning tool.
To use the cloning tool, place it and run it in the local directory you want to clone the Cloud project into.
Install the ProWorks Umbraco 8 Migrations community package on the cloned Umbraco 8 site.
Copy ~/App_Data/Umbraco.sdf
or ~/App_Data/Umbraco.mdf
from the cloned Umbraco 7 project.
Paste the file into ~/App_Data
on the clone of the Umbraco 8 project.
Open web.config
from the Umbraco 8 project.
Locate the Umbraco.Core.ConfigurationStatus
key.
Replace the value with the version your Umbraco 7 project is running.
Run the Umbraco 8 project locally
Authorize the migration - Cloud credentials are used for this.
Click Continue to start the migration.
Log in to the backoffice and verify that everything is there once the migration is complete.
If your login does not work, try the following approach:
Copy the UsersMembershipProvider
attributes from your Umbraco 7 web.config
file to the Umbraco 8 web.config
file. Once you've done this, try to login again.
Below is an example of how the attribute can look:
Please be aware that this is only a content migration.
The database will be migrated, but updating view files, custom code, and implementation is a manual process.
See Step 3 of this guide, for more detail on this.
Before moving on to the next step, make sure that the Umbraco 8 project is no longer running.
The following files/folders need to be copied into the Umbraco 8 project:
~/Views
- do not overwrite the default Macro and Partial View Macro files, unless changes have been made to these.
~/Media
Any files/folders related to Stylesheets and JavaScripts.
Any custom files/folders the Umbraco 7 project uses, that aren't in the ~/Config
or ~/bin
.
~/App_Data/UmbracoForms
- in the case Umbraco Forms was used on the Umbraco 7 site.
Merge the configuration files carefully to ensure any custom settings are migrated while none of the default configurations for Umbraco 8 is overwritten.
Run the Umbraco 8 project locally
It will give you an error on the frontend as none of the Template files have been updated yet.
Open the command line tool in the ~/data
folder on the Umbraco 8 project.
Generate UDA files by running the following command: echo > deploy-export
.
Once a deploy-complete
marker is added to the ~/data
folder, it is done.
Check ~/data/revision
to ensure all the UDA files have been generated.
Run echo > deploy
in the ~/data
folder to make sure everything checks out with the UDA files that were generated.
Running the echo > deploy
command will generate a new marker. Move forward with the migration based on the marker:
deploy-failed
Something failed during the check
Run echo > deploy-clearsignatures
followed by echo > deploy
to clear up the error
deploy-complete
Everything checks out: Move on to the next step
Umbraco 8 is different from Umbraco 7 in many ways. This means that in this step, all custom code, controllers, and models need to be reviewed and rewritten for Umbraco 8.
One of the changes made, is how published content is rendered through Template files. Due to this, it will be necessary to update all Template files (.cshtml
) to reflect these changes.
Read more about these changes in the IPublishedContent section of the Documentation.
Template files need to inherit from Umbraco.Web.Mvc.UmbracoViewPage<ContentModels.HomePage>
instead of Umbraco.Web.Mvc.UmbracoTemplatePage<ContentModels.HomePage>
.
Template files need to use ContentModels = Umbraco.Web.PublishedModels
instead of ContentModels = Umbraco.Web.PublishedContentModels
.
@Model.Value("propertyAlias")
replaces @Umbraco.Field("propertyAlias")
.
@Model.PropertyAlias
replaces @Model.Content.PropertyAlias
.
@Model.Value<IPublishedContent>("propertyAlias")
replaces Model.Content.GetPropertyValue<IPublishedContent>("propertyAlias")
.
Depending on the size of the project and the amount of custom code and implementations, this step is going to require a lot of work.
Once the Umbraco 8 project runs without errors on the local setup, the next step is to deploy and test on the Cloud Development environment.
Push the migration and changes to the Umbraco Cloud Development environment
The deployment might take a bit longer than normal.
To track the process, keep an eye on the deploy markers in site/wwwroot/data
using KUDU.
Progress through the steps based on the deployment result:
deploy-failed
: Run echo > deploy-clearsignatures
followed by echo > deploy
to clear up the error.
deploy-complete
: The Development environment has been upgraded.
Transfer Content and Media from the local clone to the Development environment.
Test everything on the Development environment.
Deploy to the Live environment.
Once the migration is complete, and the Live environment is running without errors, the site is almost ready for launch.
Setup rewrites on the Umbraco 8 site.
Assign hostnames to the project.
Hostnames are unique, and can only be added to one Cloud project at a time.
How to Deploy changes between a local machine and an environment with Umbraco Deploy using either a Git GUI or CLI
In this article, you can learn more about deploying your code changes and metadata from a local instance to your Cloud environment.
Local changes in your Umbraco Cloud project are automatically detected and synced with your Git client for seamless collaboration.
There are two ways this can be done. You can push the changes using a Git GUI or your terminal. This guide will show how you can use both ways to deploy your local changes to Umbraco Cloud.
A clone of your Cloud project.
A Git GUI or a Terminal.
Created some Document Types and Data Types with corresponding .uda
files.
The files are located in the /umbraco/Deploy/Revision
folder.
Once you have created some Documents and Data types, follow the steps below to deploy your local changes using a Git GUI. The guide will use Fork as the Git GUI, however you can use your own preferred Git GUI.
Go to your Git GUI.
Check for local changes in your GUI.
Prepare changes, so they are ready to be committed.
Write a commit subject
Write a description of the commit.
Commit the files.
Push the files to your cloud project in the GUI.
The deployment will kick in and the new Documents and Data Types you have created locally are now automatically created on the remote environment.
After deploying changes locally to your Cloud environment, use the Umbraco Cloud portal's 'Deploy changes to ..' button for subsequent deployments to other environments. For more information, see the Deploying between Cloud Environments article.
To deploy your local changes from local to Umbraco Cloud using a terminal follow the steps below:
Navigate to your local projects folder using the cd YourProjectName
command in the terminal.
Check for pending changes in your project with git status
Add the pending changes with git add -
Commit the staged files using git commit -m "Adding updated schema changes"
Push the changes to Umbraco Cloud using git push
.
Do a git pull
if the push is rejected.
If you have to pull down, make sure to see if any of these commits contain changes to the schema (anything in umbraco/Deploy/Revision/
).
To validate your local site and ensure compatibility with the updated schema, use the Deploy Dashboard in the Settings section of the Umbraco backoffice.
Here, you can see the status of ongoing or completed deployment processes. The status will show whether an operation has been triggered and is in progress has been completed, or has failed.
The dashboard will show the status based on the marker files on the disk, eg. deploy-progress
. From the Deploy Dashboard, it is also possible to trigger different processes.
There are a few steps you need to do before you can work with your database. You will be ready to start working with the database at the end of the article.
Umbraco Cloud automatically overrides whatever is in the umbracoDbDsn
connection string in the web.config
or appSettings.json
when the site is running on Cloud.
Any connection string named umbracoDbDsn
will only be used when you run the site locally (cloned). In rare cases, you might need the database timeout increased on Cloud, for that, you'll need to reach out to support for assistance.
For security, your database on Umbraco Cloud is running behind a firewall. You'll need to open the firewall for the relevant IPs to connect to the database. This can be a single IP, a list of IPs, or even an IP range.
To open the firewall to a specific IP follow the steps below:
Go to your Umbraco Cloud Project.
Go to Configuration in the side menu on your project.
Click on Connections.
Click Add new IP address under SQL Azure firewall rules
Enter the IP that is allowed to access the database.
Give the IP a name as well. his gives an overview of who the different IPs that have been added belong to.
If you don't see the SQL Azure firewall, it's due to permissions and you'll need to contact the projects administrator.
The IP can also be added by clicking "Add now". It'll automatically add your current IP address and save the settings. It might take up to five minutes for the firewall to be open for your IP.
Once the firewall is open, it's time to fire up SQL Management Studio and connect to the database. Be aware that a database exists for each environment on Umbraco Cloud. Any changes you make to custom tables need to be done for each database.
To connect to the database using SQL Management Studio follow the steps below:
Go to SQL Connection Details in the Configuration menu on Umbraco Cloud.
Note down the Server name, Login, Password, and Database.
Go to SQL Management Studio.
Choose SQL Server Authentication as the authentication type In the Connect to Server dialog.
Add the Server name in the Connect to Server dialog
Add the Login in the Connect to Server dialog
Add the Password in the Connect to Server dialog
Click Options.
Add the name of the database in the Connect to Database dialog under Connection properties.
Click Connect.
Now that you've connected you can work with the databases on Umbraco Cloud, like you could on any other host. Remember to let Umbraco Cloud do the work when it comes to the Umbraco-related tables (Umbraco*
and CMS*
tables).
LocalDB is no longer supported in the latest major version of Umbraco. The documentation below is only relevant if you are on Umbraco 9 and below.
When you clone a site locally, Umbraco Cloud automatically creates a local database and populates it with data from your website running on the Cloud. If you don't specify database settings before the local site startup, it defaults to a SQL CE database in the umbraco/Data
folder. If you wish to use a local SQL Server instead, you can update the connection string in the web.config
or appSettings.json
file (from v9+). You need to do this before your site starts up the first time.
By default when Umbraco Cloud restores a local database it will be a Umbraco.sdf
file in the /App_Data
folder. However, the restore creates a Umbraco.mdf
file if LocalDB is installed and configured. To use LocalDB ensure applicationHost.config
it is configured with loadUserProfile="true"
and setProfileEnvironment="true"
.
Read about how to work with LocalDB and full IIS in the Microsoft documentation.
If you don´t see the lines in the applicationHost.config
, you can add them manually to the <applicationPools>
section.
Usually applicationHost.config
is located in this folder for IIS: C:\Windows\System32\inetsrv\config
and in one of these folders for IIS Express:
C:\Users\<user>\Documents\IISExpress\config\
If you're using Visual Studio 2015+ check this path: $(solutionDir)\.vs\config\applicationhost.config
In Visual Studio 2015+ you can also configure which applicationhost.config
file is used by altering the <UseGlobalApplicationHostFile>true|false</UseGlobalApplicationHostFile>
setting in the project file (eg: MyProject.csproj
). Source: Microsoft Developer Network (MSDN) forum.
Now that you are all set and ready you can continue to work with your database locally.
Sometimes you might need to have a backup of your Cloud database. This can be accomplished directly on Umbraco Cloud.
Read more about Umbraco Cloud's Backup and data retention policy in the FAQ.
On Umbraco Cloud, you can utilize our 35-day point-in-time recovery to create and download a bacpac
file from your project.
Only Project Administrators have access to the Backups page on Umbraco Cloud.
To create a backup follow the steps below:
Open your Cloud project.
Go to Backups in the Settings menu.
Click Create Backup.
Enter a description for your backup.
Choose the Environment from which you want to create the backup.
Choose the Date and Time for the backup to be created.
Click Create Backup.
When you click on the Create Backup button, the system will start creating a backup file in the form of a bacpac
file. Once the bacpac
file is created, you can download it by clicking on the download icon. If you want to delete any backups, click the delete icon next to the backup.
There might be times when you want to upload a database backup to Umbraco Cloud. You might need to restore your database to a certain point in time, or you might be migrating a project to Umbraco Cloud.
Follow the steps below to upload a .bacpac
file to your Umbraco Cloud project:
Go to your Umbraco Cloud project.
Go to the "Configuration" tab in the side menu.
Click on "Backup".
Click "Upload backup" under "Database Uploads to Umbraco Cloud".
Choose a .bacpac
file to upload to your project.
Write a description of the database you are uploading.
Click "Upload .bacpac".
Once the Database has been uploaded, restoring the backup to your environment is possible.
Once you have uploaded a backup, you might want to restore it to one of your environments. To restore a backup to an environment follow the steps below.
Click on the small watch on the right side.
Choose which environment to replace the database with the backup.
Optional: Create a Cloud Backup of the selected environment's database before restoring the backup.
Click "Restore backup"
Once you click "Restore backup" the database will be restored to your selected environment. Wait for it to finish and you will successfully have replaced your environment database with your backup.
Make sure to check your environment and see if everything works as expected and that the data from the backup is there.
Use the following steps:
Connect to your SQL Server using SQL Server Management Studio (SSMS).
Expand "Databases", right-click "Databases", then select "Import Data-tier Application...".
Proceed through the dialog, by browsing to the saved location of your bacpac
file, and then setting the options appropriate to your configuration
Complete the import dialog and the database will be restored.
If a bacpac
restore fails in SQL server, ensure the 'Contained Database Authentication' flag is set to true for resolution.
If it is not set the import will fail.
To Enable Contained Database Authentication, run the following SQL against your SQL server on the Master database.
For reference please see the Microsoft documentation on the topic.
In this guide, we show you how you can connect and work with your Cloud Database on Mac.
An Umbraco Cloud project
Whitelisted IP on Umbraco Cloud
Follow the steps below to connect and work with your Umbraco Cloud Database on a Mac.
Go to SQL Connection Details in the Configuration menu on Umbraco Cloud.
Note down the Server name, Login, Password, and Database.
Open Azure Data Studio.
Click "Create a connection" on the welcome page in Azure Data Studio.
Change the Authentication type to SQL Login and enter the following information in the Connection details dialog:
Add the Server name.
Add the Login.
Add the Password.
Add the Database.
Click Connect once the connection details have been filled out.
You have now connected to your database. You can work with the databases on Umbraco Cloud like you could on any other host. Remember to let Umbraco Cloud do the work when it comes to the Umbraco-related tables (Umbraco*
and CMS*
tables).
With the Deploy Dashboard, we have made it possible to get an overview of your Umbraco Deploy installation and perform Deploy operations.
In this article, we will show the different sections on the Deploy dashboard and how they can be used.
Here you can see whether the latest deployment has been completed or failed. You can see the version of Umbraco Deploy you are running, and the last time an operation was run.
With the Deploy operations, you can run different operations in Umbraco Deploy.
Below you can read what each operation will do when run through the dashboard.
Running this operation will update the Umbraco Schema based on the information in the .uda
files on disk.
Running this operation will extract the schema from Umbraco and output it to the .uda
files on disk.
Running this operation will clear the cached artifact signatures from the Umbraco environment. This should not be necessary, however, it may resolve reports of schema mismatches when transferring content that has been aligned.
This operation will set the cached artifact signatures for all entities within the Umbraco environment. Use this when signatures have been cleared and you want to ensure they are pre-generated before attempting a potentially longer restore or transfer operation.
Running this operation will download a zip file with all the Deploy artifacts representing the Umbraco schema in the form of .uda
files.
This operation is useful if you want to move to another Umbraco instance and migrate the data with you.
In the Configuration details, you can see how Umbraco Deploy has been configured on your environment. You get an overview of the Setting options, the current value(s), and notes help you understand each of the settings. Updates to the need to be applied in the appsettings.json
file.
The Schema Comparison table shows the schema information managed by Umbraco Deploy.
You can see a comparison between the information that is held in Umbraco and the information in the .uda
files on disk.
The table shows:
The name of the schema
The file name
Whether the file exists in Umbraco
Whether the file exists
Whether the file is up-to-date
You can also view details about a certain element by selecting "View Details".
This will show the difference between entities stored in Umbraco and the .uda
file stored on disk.
This article explains how Minor upgrades work in Umbraco Cloud.
When a new minor version is released, there are two ways to upgrade your project:
To enable automatic minor upgrades, follow these steps:
Go to your Umbraco Cloud project.
Navigate to Configuration -> Automatic Upgrades.
Enable Automatic Minor Upgrades.
With automatic upgrades enabled, all products on Umbraco Cloud will automatically be upgraded. This includes Umbraco CMS, Umbraco Forms, and Umbraco Deploy. Your project does not need to be running the latest minor version for automatic upgrades to work. The project will be upgraded to the latest minor version when it is released.
If you create a new project on Umbraco Cloud automatic upgrades are enabled by default.
For projects where automatic minor upgrades are enabled, having a Development environment is not compulsory. However, it is highly recommended to facilitate a smoother and more controlled upgrade experience. In cases where manual upgrades are necessary, a Development environment becomes essential.
A development environment is included in all Umbraco Cloud plans, except Starter. Find pricing details for Umbraco Cloud Starter plans on our website.
A manual upgrade involves a more hands-on approach, where the upgrade process is initiated and controlled by the user or development team. This allows for greater flexibility and oversight, enabling teams to test and adapt the upgrade to their specific needs and configurations. A manual upgrade provides an opportunity to thoroughly test the new version in a controlled environment before applying it to live production environments. This ensures compatibility and minimizes disruptions.
For more information about manual minor upgrades, see the Manual upgrade of Umbraco CMS article.
Umbraco Cloud supports performing minor upgrades to your projects automatically. The feature is available when a new minor version of Umbraco is released (for example 10.5.0 or 10.6.0).
The upgrade will resolve most issues it encounters, but some Umbraco configurations may need manual intervention. This is usually related to custom code that depends on APIs that have changed or been removed in the new minor version.
If anything fails during this process, you can reach out for support using the in-app chat in the bottom right corner. We will assist you through the upgrade process if any issues arise.
Symptoms and feedback are given from the upgrade process: Unable to run the Umbraco installer
The first step in the process, after having updated all the files, is to call the Umbraco install engine. This is done in order to get its database updated to support the new version. As this step is the first time the site gets requested after the updated files are run, it may fail. The reason is often code that is incompatible with the upgraded files.
It can be code that references APIs that have been deprecated, or code that has some strong references to specific versions. If the error is clear, it will be shown on the screen. It will be a typical ASP.NET error message also called a Yellow Screen of Death (YSOD). You should request the site, and check the error it shows. If the error isn't descriptive, then it is time to clone the repository to your local machine and fix the issue. The usual suspects would be:
The code you have running is referencing an API that has been changed, is being modified, is obsolete, or removed.
The web.config
had assembly bindings for a specific DLL version that doesn't exist anymore. During the upgrade process, we do update the references we are shipping, but there might be something missing.
Once you have the site running locally, you should push your changes to the repository. This will update the site, and it should now be in a running state.
The upgrade process left off when it needed three more steps. These three steps now need to be done manually.
Complete the installer
To complete the installer, you should visit the site: https://dev-YOURSITEALIAS.euwest01.umbraco.io
. This will show you the installer screen, where you should insert your backoffice credentials and follow the process. It will run through a few steps, and later Umbraco will be updated to the latest version.
Export the metadata files.
The second thing you need to do is to regenerate the metadata files used for transferring items like document types, data types, and media types. This is done by accessing the Power tools (Kudu) on the project, opening the cmd prompt, and browsing to the wwwroot/data folder. Once there, you need to enter echo > deploy-export
. This will generate the required files for the upgraded site to work with Umbraco Deploy.
The last thing to do is to go to the /site/locks
folder (still through Kudu) and rename the file called upgrading
to upgraded-minor
- rename the file by typing ren upgrading upgraded-minor
. This will indicate to Umbraco Cloud, that the development environment is now ready to deploy all its changes to the next environment.
Before deploying the upgrade to the next environment, you should verify that everything looks as expected on the development environment.
When you have content on your Cloud environment and you clone down your Umbraco Cloud project to your local machine, you will need to do an extra step, to see your content locally. You will also need to use the restore option when setting up new Umbraco Cloud environments.
The restore option comes in handy when you have content editors creating content on the Live or Staging environments. You will be able to restore and work with that content in your Development and local environments.
You can restore the content in the following ways:
The first time you run your project locally you will have the option to restore your content and media before going to the Umbraco Backoffice.
This will restore all the content nodes and any media dependencies.
When your site is done spinning up, click the green Restore button to restore all the content nodes and media files.
Wait till the process completes. This might take a while depending on the amount of content and media you have on your project.
When it's completed, select Open Umbraco to go to the Backoffice.
You will now see all your content and media in the Umbraco Backoffice.
Use this option when setting up new Cloud environments. The Workspace restore option restores all the entities (content, media, forms, datasources, and prevalue sources from Umbraco Forms) of a workspace via the Backoffice.
Log in to the Umbraco Backoffice in the environment you want to restore the content and media.
Click ... and select Do something else or Right-click the Content Tree in the Content section.
Choose Workspace Restore.
Select the environment from the Restore this workspace from dropdown.
To ensure the restore succeeds, make sure that your environments have the same metadata and structure files.
Click Restore from <environment_name> and wait till the process completes. This might take a while depending on the amount of content and media you have on your project.
Once the content restore is completed, you will get a notification with a timestamp. Click Okay to complete the process.
Right-click the Content tree and choose Reload to see your content in the tree.
If any of your content nodes depends on media items, these will also be restored in the process.
To see the media, go to the Media section and reload the tree.
The Tree restore option restores all the entities available for the selected tree in that section. It's available in the Content, Media, Members, Forms (root node of Forms, Datasources, and Prevalue sources), or Translation (Dictionary menu if configured) sections. Using Tree Restore, you can, for example, restore all your content only. This will restore any media that’s referenced in that content, but it won’t attempt to restore the full media library.
Log in to the Umbraco Backoffice in the environment you want to restore the tree.
Click ... and select Do something else or Right-click the Content Tree in the Content section.
Choose Tree Restore.
Select the environment from the Restore this tree from dropdown.
To ensure the restore succeeds, make sure that your environments have the same metadata and structure files.
Click Restore from <environment_name> and wait till the process completes. This might take a while depending on the amount of content and media you have on your project.
Once the content restore is completed, you will get a notification with a timestamp. Click Okay to complete the process.
Right-click the Content tree and choose Reload to see your content in the tree.
Using the Partial Restore option, you can restore only a single node from a tree (optionally with descendants) that you need to work with.
This article will provide steps on how to migrate a Cloud project from Umbraco 8 to Umbraco 10.
It is currently not possible to upgrade directly from Umbraco 8 to the latest version.
The recommended approach for upgrading from version 8 to the latest version is to use this guide to upgrade from Umbraco 8 to Umbraco 10 . Umbraco 10 contains the database migrations that must be upgraded from Umbraco 8. You can then use the Major Upgrades steps to upgrade from Umbraco 10 to the latest version.
Since the underlying framework going from Umbraco 8 to the latest version has changed, there is no direct upgrade path. That said, it is possible to re-use the database from your Umbraco 8 project on your new project in order to maintain the content.
It is not possible to migrate the custom code as the underlying web framework has been updated from ASP.NET to ASP.NET Core. All templates and custom code will need to be reimplemented.
You also need to make sure that the packages that you are using are available on the latest version.
A Umbraco 8 Cloud project running the latest version of Umbraco 8.
A clean Cloud project running the latest version of Umbraco with at least 2 environments.
A backup of your Umbraco 8 project database.
We strongly recommend having at least 2 environments on the new Umbraco project.
If your Umbraco 8 site is using Umbraco Forms, make sure to configure it to store data in the database, before beginning this tutorial Follow the guide for migrating Umbraco Forms data to the database.
Should something fail during the migration, the Development environment can be removed and re-added to start over on a clean slate.
If you use Umbraco Forms, make sure to have StoreUmbracoFormsInDbset
to True
before step 1.
Create a backup of the database from your Umbraco 8 project using the database backup guide.
Alternatively, you can clone the environment down and take a backup of the local Database after restoring. Make sure to restore both content and media from your Cloud environment after cloning it down.
Import the database backup into SQL Server Management Studio.
Clone down the Development environment from the new Cloud project.
Test the project and make sure to log in to the backoffice.
As you are cloning down a brand new Cloud project there is nothing the restore. Select the "Skip restore and open Umbraco" link when starting up the project locally to go directly to the backoffice.
Update the connection string in the new Cloud projects appsettings.json
file so that it connects to the Umbraco 8 database:
You can add the 'umbracoDbDSN_ProviderName' attribute to set the .NET Framework data provider name for the DataSource control's connection. For more information on the data providers included in the .Net Framework, see the Microsoft Documentation.
Enable Unattended Upgrades to authorize the database upgrade.
Run the new Cloud project locally and login to authorize the upgrade.
Select "Continue" when the upgrade wizard appears.
After it has finished upgrading, stop the site and disable the unattended upgrade.
Run the site and log in using Umbraco ID to verify if your project has been upgraded to the new version.
This is only content migration and the database will be migrated.
You need to manually upgrade the view files and custom code implementation. For more information, see Step 3 of this guide.
The following files/folders need to be copied from the Umbraco 8 folder into the new Cloud project folder:
~/Views
- Do not overwrite the default Macro and Partial View Macro files unless changes have been made to these.
Any files/folders related to Stylesheets and JavaScript.
~/Media
folder from v8 needs to be copied over into the wwwroot - media
folder:
Connect to Azure Storage Explorer from the v8 project
Download the media folder from Azure Storage Explorer
Add the downloaded media folder from v8 to the Azure Storage Explorer of the new project.
Migrate custom configuration from the Umbraco 8 configuration files (.config
) into the appsettings.json
file on the new Cloud project.
As of Umbraco version 9, the configuration no longer lives in the Web.Config
file and has been replaced by the appsettings.json
file.
Migrate Umbraco Forms data to the database, if relevant.
As of Umbraco Forms version 9, it is only possible to store Forms data in the database. If Umbraco Forms was used on the Umbraco 8 project, the files need to be migrated to the database.
Run the new Cloud project locally.
It will give you an error screen on the frontend as none of the Template files have been updated. Follow Step 3 to resolve the errors.
Go to the backoffice of the project.
Navigate to the Settings section and open the Deploy dashboard.
Click on Export Schema to Data Files
in the Deploy Operations section in order to generate the UDA files.
Once the operation is completed, the status will change to Last deployment operation completed
.
Check ~\umbraco\Deploy\Revision
folder to ensure all the UDA files have been generated.
Return to the Deploy dashboard.
Click on Update Umbraco Schema from Data Files
in the Deploy Operations section to make sure everything checks out with the UDA files that were generated.
The latest version of Umbraco is different from Umbraco 8 in many ways. With all the files and data migrated, it is now time to rewrite and re-implement all custom code and templates.
One of the changes is how published content is rendered through Template files. Due to this, it will be necessary to update all the Template files (.cshtml
) to reflect these changes.
Read more about these changes in the IPublishedContent section of the Umbraco CMS documentation.
Template files need to inherit from Umbraco.Cms.Web.Common.Views.UmbracoViewPage<ContentModels.HomePage>
instead of Umbraco.Web.Mvc.UmbracoViewPage<ContentModels.HomePage>
Template files need to use ContentModels = Umbraco.Cms.Web.Common.PublishedModels
instead of ContentModels = Umbraco.Web.PublishedModels
For more information on the correct namespaces or custom code, you can find the references in the API Documentation.
Depending on the extent of the project and the amount of custom code and implementations, this step is going to require a lot of work.
Once the new Cloud project runs without errors on the local setup, the next step is to deploy and test on the Cloud Development environment.
Push the migration and changes to the Umbraco Cloud Development environment.
The deployment might take a bit longer than normal as a lot of changes have been made.
Go to the backoffice of the Development environment once everything has been pushed.
Go to Settings and open the Deploy Dashboard.
Click on Export Schema to Data Files
in the Deploy Operations section.
The deployment will result in either of the two:
Last deployment operation failed
- something failed during the check.
Select Clear Signatures
from the Deploy Operations section.
Select Update Umbraco Schema
from the Deploy Operations section to clear up the error.
Last deployment operation completed
Everything checks out: The Development environment has been upgraded.
Transfer Content and Media from the local clone to the Development environment.
To transfer members make sure that the following Deploy settings are configured in the appsettings.json
: AllowMembersDeploymentOperations
and TransferMemberGroupsAsContent
.
Test everything in the Development environment.
Deploy to the Live environment.
Test everything in the Development environment until it runs without any errors.
Setup rewrites on the new Cloud project if relevant.
Assign hostnames to the project if relevant.
Hostnames are unique and can only be added to one Cloud project at a time.
Learn how to manually upgrade the Umbraco Deploy version used on your Umbraco Cloud project.
Deploy on Cloud will either be automatically upgraded with patch releases or it can be done through the portal when new minors are available.
In rare cases, Deploy might not be on the latest patch or minor and you will need to upgrade Deploy manually.
This article will give you a step-by-step on how to manually upgrade the deployment engine used on your Umbraco Cloud project.
When upgrading an Umbraco Cloud project manually, the very first step is to clone down your Cloud Development environment to your local machine.
Make sure you can run your Cloud project locally and restore content and media. It's important that you check that everything works once the upgrade has been applied and for this, you need to have a clone locally that resembles the Cloud environment as much as possible.
To get the latest version of Umbraco Deploy you will need to upgrade the site using NuGet. The main package to install is Umbraco.Deploy.Cloud. This has dependencies on other components of Umbraco Deploy that will be imported automatically.
If using Umbraco Forms in your installation, you should also update the Umbraco.Deploy.Forms package reference,
NuGet installs the latest version of the package when you use the dotnet add package command unless you specify a package version:
dotnet add package Umbraco.Deploy.Cloud --version <VERSION>
dotnet add package Umbraco.Deploy.Forms --version <VERSION>
After you have added a package reference to your project by executing the commands above in the directory that contains your project file, run dotnet restore
to install the packages.
You can also update the Umbraco Deploy through the NuGet Package Manager in Visual studio:
When the command completes, open the .csproj
file to make sure the package reference was updated:
Make sure that everything works on the local clone and that you can run the project without any errors.
When you've upgraded everything locally, and made sure that everything runs without any errors, you are ready to deploy the upgrade to Umbraco Cloud.
Stage and commit all changes in Git
Push the changes to the Cloud environment
When everything is pushed, head on over to the Umbraco Cloud Portal
Make sure everything runs without errors before deploying to the next Cloud environment
This article provides an overview of any version-specific steps that might be necessary when upgrading your Umbraco Cloud project to a new version.
As there might also be version-specific notes for the specific products involved in the upgrade it is recommend giving those a look as well.
Which version of Umbraco Forms and Umbraco Deploy you use on your Umbraco Cloud project is depended on the Umbraco CMS version used.
This article gives an overview of the dependencies between the products on Umbraco Cloud.
The products are:
Umbraco CMS
Umbraco Forms
Umbraco Deploy
In the table below, you can see which version of Umbraco Forms and Deploy you should be running on your Umbraco Cloud project. Those depend on which version of Umbraco CMS you are running.
Umbraco CMS | Umbraco Forms | Umbraco Deploy |
---|---|---|
You can access the different types of log files on Umbraco Cloud or through Kudu. You have access to different types of logs:
Umbraco logs
Deploy logs
Environment logs
Site Extension logs
IIS logs
Remember that the timestamps in all logs are in UTC so they might be a few or many hours off from the time your actual problem occurred.
Go to your project and click on the arrow next to the environment name.
Click Logs to view the log details.
To access logs through Kudu, see Power tools (Kudu) article.
Umbraco logs on Cloud work almost the same as on a normal installation, they are still found in the ~/site/wwwroot/umbraco/Logs/
folder. Umbraco Deploy also writes to the standard log files with events and errors. If there is an extraction error and you can't find any issues in your Umbraco log, try the Deploy log listed below.
It is possible that a deployment failed so it is not the active deployment at the moment, there could be valuable information in the logs of this deployment. You can find out what the last attempted deploy was by going to your Kudu URL and adding /api/deployments
to the URL (so for example https://stage-mysite.scm.s1.umbraco.io/api/deployments
. This will give you some JSON data and the first entry here is the newest attempted deployment. You can also find some information in ~/site/wwwroot/umbraco/Deploy
if there are for example extraction errors.
Whenever you push from local to staging or when you deploy using the Umbraco Cloud portal, you're deploying your site using Git. This works as follows: you commit changes to Git and push them to development, these changes is then stored in the site > repository
folder. Then the state of the newest commit gets copied into the wwwroot
folder, which is where your website lives.
When you're in Kudu, you can go up to the site
folder and then the deployments
folder. The active
file has the identifier of the currently active deployment in it. If you go into the folder that has the same name as that identifier you can see a few files: log.log
, manifest
and status.xml
.
status.xml
shows you detailed information of which commit was deployed to the wwwroot
folder
manifest
is used to track which files are in the currently active deployment so that additions, renames and deletions, can be detected for the next deploy (this is an internal file which you should not touch)
log.log
shows you the same output you will have seen when pushing your changes using Git, it will show you what happened during the push and if any errors occurred. This file is especially useful when trying to find errors for deploys using the portal (so from dev > live or from dev > staging > live). Even though the last line may end with "Deployment successful" it is possible that there were errors or suspicious messages before that so make sure to give them a read.
On Cloud environments, all errors are logged to a database table in the portal under each environment. If you leave too many unread log messages it can cause timeouts when you go to see your errors.
Since the errors are stored in your database, it is possible to clean them up. To do this, start by accessing the database for the environment where you want to run the cleanup.
If you want to delete logs from one of your environments' log viewers then you will have to connect to the environment DB and run the following query:
This will delete 90% of the oldest logs that are unread and leave you with 10% of the newest ones. It is up to you to decide how many % of logs you want to delete.
It is possible to enable IIS Logging on each of your Umbraco Cloud environments. There is a rolling size limit on the log files of 100 MB. This means that once the limit is reached, the oldest log files will be overwritten by new ones.
Do note that the IIS logging will be automatically turned off after 12 hours. It's not possible to have them enabled for longer at once due to possible performance degradation while the logging is enabled.
You can enable the logging from the Advanced menu found under Settings in the project overview for the project. The logs will be accessible from KUDU in C:\home\LogFiles\http
.
After enabling IIS logging for the environment, the site will have to restart.
Find more information about IIS Logging on the Official Microsoft Documentation.
IIS Logging is only available if your project is on a Professional plan.
See our Cloud Pricing plans for more details on various tiers.
Click the "Plug" Button (Open Connect Dialog):
Choose "Blob container or directory":
Choose "Anonymously" when prompted on how you will connect to the blob container.
8.0
8.x
3.x
8.1 <
8.x
4.x
9.0 <
9.x
9.x
10.0 <
10.x
10.x
11.0 <
11.x
11.x
Umbraco Cloud Portal offers a powerful baseline-child relationship between projects. A Baseline Child project is similar to a Fork (forked repository) on GitHub. We create a clone of an existing project while maintaining a connection between the two projects.
If, at some point, you wish to sever the connection between the baseline and one of its child projects, you can do so. This action is possible with admin privileges.
Kindly be aware that this action cannot be undone.
From this page, you can break the connection of all the Child Projects this Baseline project has.
To break reference between a baseline and child project:
Go to the Baseline project on the Cloud portal.
Click on Manage updates here.
A window with the consequences of the action is displayed.
Check all the boxes after reading and understanding the consequences mentioned.
Click Disconnect.
Click on the icon in the Manage child projects page.
There might be use cases, where you want to upload certain files to your Blob Storage programmatically rather than using Azure Storage Explorer.
In this article, we provide the steps to programmatically connect to your Umbraco Cloud Environments Azure Blob Storage containers and persist files programmatically.
These files within the folder will only be available on Azure Storage and are not publicly visible in Umbraco CMS. The only exception is that the files that can be shared publicly via the *.blob.core.windows.net
URL.
By the end of this article, you will have connected and uploaded a file to your Cloud Blob Storage.
You will need access to the Blob Storage credentials to authenticate and find the files created programmatically in the Azure Blob Storage.
An alternative to this guide is to use the Umbraco Storage Providers package or MediaFileManager.FileSystem
abstraction from the Custom File Systems (IFileSystem) article.
The first thing to do if you want to connect to the Azure Blob Storage container of your environment is the credentials.
To find the connection details for your environment's Blob Storage, follow the steps below:
Go to your project on Umbraco Cloud.
Go to Configuration in the side menu.
Go to Connections.
Scroll down to Blob Storage Connection Details
Copy the credentials needed for connecting to Azure Blob Storage.
Follow the steps below to get started connecting to Azure Blob Storage programmatically:
Clone down your Umbraco Cloud Project. You can find more information on how to clone a project in the Working Locally article.
Run your project.
Install Azure.Storage.Blobs
package on your project. You can do it either via NuGet Package Manager on Visual Studio or install it via NuGet.
Run the project to complete the installation of the package.
Add a new class called BlobStorageService
which serves as a service that has a method to connect to Blob Storage:
Add a new class called BlobStorageComposer
to inject the service:
Add a new class called BlobStorageController
which serves as the Surface Controller:
The controller is used to create a directory named FolderProgramatically
and a .txt
file in Azure Blob Storage.
In the above code, update the SASUrl
and containerName
values with your own from the Umbraco Cloud Settings. To find these values, refer to the instructions in the Connect to Azure Storage Explorer to upload files manually article.
You can also secure the values in Secrets Management in the project Settings on Umbraco Cloud so you do not store them in code. For more information, see the Secrets Management article.
Run the project.
Visit the {{yourProjectURL}}/umbraco/surface/BlobStorage/BlobUpdate
endpoint in the backoffice of your project to manually trigger the creation of the file to the Blob Storage.
Connect to your Blob Storage and there you will find the folder and file that has been created programmatically:
Now you have connected to your Blob Storage programmatically you can extend it to fit your needs in terms of what you need to upload to the blob container.
For more information on how to work with Azure Blob Storage, see the following articles from Microsoft: