From 69ab2e23e509d4a2dbec554fedc43d615c897c9c Mon Sep 17 00:00:00 2001 From: "Alina-Magdalena Tincas (Umbraco HQ)" Date: Wed, 29 May 2024 08:28:41 +0200 Subject: [PATCH 1/3] update missing v14 content from some articles --- 14/umbraco-cms/README.md | 86 +- .../fundamentals/backoffice/README.md | 112 +- 14/umbraco-cms/fundamentals/setup/README.md | 12 + .../fundamentals/setup/install/README.md | 10 - .../fundamentals/setup/upgrading/README.md | 167 +- .../upgrading/version-specific/README.md | 1339 ++++++++++++++++- 14/umbraco-cms/reference/security/README.md | 4 - 7 files changed, 1642 insertions(+), 88 deletions(-) diff --git a/14/umbraco-cms/README.md b/14/umbraco-cms/README.md index 5176c12b357..356b863b5c8 100644 --- a/14/umbraco-cms/README.md +++ b/14/umbraco-cms/README.md @@ -1,79 +1,37 @@ --- -description: This is the documentation for the next major of Umbraco, version 14. +description: Your main resource when building and managing an Umbraco CMS website. --- -# Umbraco 14 (RC) CMS Documentation - -{% hint style="danger" %} -This documentation is a work in progress and may undergo further revisions, updates, or amendments. The information contained herein is subject to change without notice. - -The new Backoffice for Umbraco CMS is scheduled for release along with Umbraco 14 in May 2024. -{% endhint %} - -### Getting started with the Umbraco 14 - -
Getting StartedAre you excited to discover the new Backoffice for Umbraco CMS? Head over to the Setup section to learn how to install and configure v14 Umbraco installation.setupDocumentations Icons_Umbraco_CMS_Install (1).png
Customizing the BackofficeWant to learn how to set up a package and implement the Backoffice extensions? Let's get started!customize-backofficeDocumentations Icons_Umbraco_CMS_Fundamentals_Backoffice (1) (2).png
TutorialsOur step-by-step guides will take you through creating a basic website, creating a custom dashboard todeep diving into the world of Property Editors. Don't wait, start exploring now.broken-referenceDocumentations Icons_Umbraco_CMS_Tutorials_the_Starter_Kit (1).png
- -### Recommended starting points - -1. [Install v14](fundamentals/setup/install/)-RC +# Umbraco CMS Documentation {% hint style="warning" %} -If you have previously installed the Nightly or pre-release feeds versions you must clear the cache to use the new versions. This can be done by running the following command: - -`dotnet nuget locals all --clear` - -Then restore your package with `dotnet restore` and run the solution again with `dotnet run`. +This documentation is a work in progress and may undergo further revisions, updates, or amendments. The information contained herein is subject to change without notice. {% endhint %} -2. [Setup your development Environment](extending/customize-backoffice/development-flow/) followed by [Vite package setup](extending/customize-backoffice/development-flow/vite-package-setup.md) -3. [Creating your first extension](tutorials/creating-a-basic-website/creating-your-first-template-and-content-node.md) -4. [Creating a custom dashboard](tutorials/creating-a-custom-dashboard/) -5. [Creating a property editor](tutorials/creating-a-property-editor/) -6. [Terminology](extending/customize-backoffice/#terminology) -7. [UI Documentation](extending/ui-documentation.md) -8. [Creating a backoffice API](tutorials/creating-a-backoffice-api/) +Umbraco CMS is a flexible and editor-friendly Content Management System (CMS) that allows you to create beautiful and modern websites. Use the latest version of .NET, integrate with your favorite services, and help your customers launch a website tailored to their specific needs. -{% hint style="info" %} -You can also find a list of other resources related to the new backoffice of Umbraco in the [Umbraco v14 "Bellissima" Resources](https://github.com/umbraco/Umbraco.Packages/tree/main/bellissima) article. -{% endhint %} +Learn more about Umbraco CMS and get an overview of the top features on [Umbraco.com](https://umbraco.com/products/umbraco-cms/). -### Breaking Changes +
FundamentalsLearn the basics of working with Umbraco CMS. How to install and setup your first site is also included in this section.rocket-hero.pngget-to-know-umbraco.md
Install Umbraco CMSReady to get started with Umbraco? Head over to the Setup section to learn how to install Umbraco CMS.docs-style-hero.pnginstall
TutorialsFind detailed step-by-step guides on everything from building a site from scratch to implementing a custom maintenance page.reversed-heart-hero.pngoverview.md
-Some breaking changes have been introduced in the Umbraco 14. You can find the list of breaking changes or other changes from v14 in the [Version Specific Upgrades](fundamentals/setup/upgrading/version-specific/) article. In the same article, you can find the breaking changes between each v14 version. +{% embed url="" %} +Watch this tutorial on how to get started building your first Umbraco CMS website. +{% endembed %} -You can also find a sneak peak of what is upcoming on v14 of the CMS in the [Umbraco Product Update Blog](https://umbraco.com/blog/umbraco-product-update-february-2024/#CMS). +The documentation for Umbraco CMS provides information for experienced Umbraco and .NET developers. It also offers guides and high-level articles for people starting out with the CMS. -### New and Updated articles +{% content-ref url="tutorials/creating-a-basic-website/" %} +[creating-a-basic-website](tutorials/creating-a-basic-website/) +{% endcontent-ref %} -Below you will find a list of new and updated articles for Umbraco 14. +{% content-ref url="reference/configuration/" %} +[configuration](reference/configuration/) +{% endcontent-ref %} -The list will be updated as more articles have been created and updated. +{% content-ref url="fundamentals/setup/requirements.md" %} +[requirements.md](fundamentals/setup/requirements.md) +{% endcontent-ref %} -* **FUNDAMENTALS**: - * **SETUP** - * [Installation](fundamentals/setup/install/) - * Upgrade your project - * [Version specific upgrades](fundamentals/setup/upgrading/version-specific/) - * **BACKOFFICE**: - * [Document Blueprints](fundamentals/backoffice/document-blueprints.md) (previously known as Content Templates) -* **EXTENDING** - * [Customize backoffice](extending/customize-backoffice/) - * [Backoffice setup](extending/backoffice-setup/) (new articles) - * [Dashboards](extending/dashboards.md) - * [Section & Trees](extending/section-trees/) - * [Property Editors](extending/property-editors/) - * [Language files & localization](extending/language-files/) - * [Workspaces](extending/workspaces/) - * [UI Documentation](extending/ui-documentation.md) -* **REFERENCE**: - * [Two-factor Authentication](reference/security/two-factor-authentication.md) - * [Management API](reference/management-api/) (new article) - * [Setup OAuth using Postman](reference/management-api/postman-setup-swagger.md) (new article) - * [Custom Swagger API](reference/custom-swagger-api.md) (new article) -* **TUTORIALS**: - * [Create your first extension](tutorials/creating-your-first-extension.md) (new article) - * [Creating a Custom Dashboard](tutorials/creating-a-custom-dashboard/) - * [Creating a Property Editor](tutorials/creating-a-property-editor/) - * [Creating a backoffice API](tutorials/creating-a-backoffice-api/) (new article) - * [Implementing Custom Error Pages](tutorials/custom-error-page.md) +{% content-ref url="reference/notifications/" %} +[notifications](reference/notifications/) +{% endcontent-ref %} diff --git a/14/umbraco-cms/fundamentals/backoffice/README.md b/14/umbraco-cms/fundamentals/backoffice/README.md index 535b74e84b1..901a79b2431 100644 --- a/14/umbraco-cms/fundamentals/backoffice/README.md +++ b/14/umbraco-cms/fundamentals/backoffice/README.md @@ -1,13 +1,121 @@ --- description: >- Learn more about the Umbraco backoffice which is the admin side of your - Umbraco website. + Umbraco website --- # Backoffice In this article you can learn more about the common terms and concepts that are used throughout the Umbraco backoffice. +## [Login screen](login.md) + +When you go to the backoffice for the first time, you're presented with the login screen. + +![Login screen](images/login-backoffice-login.png) + +[Read more about the login screen](login.md). + +## [Section](sections.md) + +A section in Umbraco is where you do specific tasks related to that section. For example Content, Settings and Users. You can navigate between the different sections of the backoffice by clicking the corresponding icon in the section menu. + +_The **Section menu** is the horizontal menu located on the top of the backoffice._ + +
+ +[Read more about the section menu](sections.md). + +## [Tree](../../extending/section-trees/) + +A tree is a hierarchical list of items related (and usually restricted) to a specific concept, like for example content or media. + +You can expand trees by clicking the down arrow ![](../../../../10/umbraco-cms/fundamentals/backoffice/images/expand-node.png) to the left of the node or by double-clicking the node. + +
+ +[Read more about the Tree](../../extending/section-trees/) + +## Node + +A node is an item in a tree. Media section items appear as nodes in the Media tree, while pages and content are displayed in the Content tree, and so on. + +## [Dashboards](../../extending/dashboards.md) + +A dashboard is the main view you are presented with when entering a section within the backoffice. It can be used to show valuable information to the users of the system. + +_Default dashboard in the content section_ + +
+ +[Read more about Dashboards](../../extending/dashboards.md) + +## Editor + +An editor is what you use to edit different items within the backoffice. There are editors specific to editing stylesheets, there are editors for editing Macros, and so forth. + +## [Content](../data/defining-content/) + +Content is what you find in the Content section. Each item in the tree is called a **content node**. Each content node in the content tree consists of different fields, and each of them is defined by a Document Type. + +[Read more about Content](../data/defining-content/) + +## Document Type + +Document Types define the types of content nodes that backoffice users can create in the content tree. Each Document Type contains different properties. Each property has a specific Data Type for example text or number. + +### Properties + +Every Document Type has properties. These are the fields that the content editor is allowed to edit for the content node. + +### [Data Type](../data/data-types/) + +Each Document Type property has a Data Type that defines the type of input of that property. Data Types reference a Property Editor and are configured in the Umbraco backoffice in the Settings section. A Data Type can be something basic (text string, number, true/false) or more complex (multi-node tree picker, image cropper, etc). + +[Read more about Data Types](../data/data-types/) + +### [Property Editors](property-editors/) + +A property editor is a view used by Data Types to insert content into Umbraco. An example of a property editor is the _Textarea_. It's possible to have many Textarea Data Types with different settings that all use the Textarea property editor. + +[Read more about Property Editors](property-editors/) + +## [Media](../data/creating-media/) + +Media items are used to store assets like images and video within the Media section and can be referenced from your content. + +[Read more about Media](../data/creating-media/) + +### Media Types + +Media Types are similar to Document Types in Umbraco, except they are specifically for media items in the Media section. + +Umbraco comes with 3 default Media Types: **File**, **Folder,** and **Image**. + +## [Members](../data/members.md) + +A member is someone who has access to signup, register, and login into your **public website** and is not to be confused with Users. + +[Read more about Members](../data/members.md) + +### Member Types + +Similar to a Document Type and a Media Type. You are able to define custom properties to store on a member such as Twitter username or website URL. + +## [Templates](../design/templates/) + +A Template is where you define the HTML markup of your website and also where you output the data from your content nodes. + +[Read more about Templates](../design/templates/) + +## Packages + +A package is the Umbraco term for an add-on or plugin used to extend the core functionalities in Umbraco. The packages can be found on the [Umbraco Marketplace](https://marketplace.umbraco.com/), and the can also be browsed directly in the backoffice of the Umbraco CMS. + +## Users + +A user is someone who has access to the **Umbraco backoffice** and is not to be confused with Members. When Umbraco has been installed a user will automatically be generated with the login (email) and password entered during installation. Users can be created, edited, and managed in the User section. + ## [Document Blueprint/Content templates](document-blueprints.md) -Content Templates provide a blueprint for content nodes based on an existing node. +Document Blueprint provide a blueprint for content nodes based on an existing node. diff --git a/14/umbraco-cms/fundamentals/setup/README.md b/14/umbraco-cms/fundamentals/setup/README.md index 964198fd0e1..c04f0fc4329 100644 --- a/14/umbraco-cms/fundamentals/setup/README.md +++ b/14/umbraco-cms/fundamentals/setup/README.md @@ -14,6 +14,18 @@ Defines the system requirements to run Umbraco. Umbraco installation steps and guidelines. +## [Upgrade your project](upgrading/README.md) + +Covers the steps to upgrade your copy of Umbraco to a newer version. + +## [Server setup](server-setup/README.md) + +Information about server setup for Umbraco including information about permissions and load balancing. + +## [Configuration](../../reference/configuration/README.md) + +How to configure your Umbraco installation. Includes information about all of Umbraco's configuration files and options. + ## [Installing Nightly Builds](install/installing-nightly-builds.md) How to install the latest nightly builds. diff --git a/14/umbraco-cms/fundamentals/setup/install/README.md b/14/umbraco-cms/fundamentals/setup/install/README.md index fe33df7e95e..f477aa53bc4 100644 --- a/14/umbraco-cms/fundamentals/setup/install/README.md +++ b/14/umbraco-cms/fundamentals/setup/install/README.md @@ -4,16 +4,6 @@ description: Instructions on installing Umbraco on various platforms using vario # Installation -{% hint style="warning" %} -This page is a work in progress. It will be updated as the software evolves. - -If you have previously installed the Nightly or pre-release feeds versions, you must clear the cache to use the new versions. This can be done by running the following command: - -`dotnet nuget locals all --clear` - -Then restore your package with `dotnet restore` and run the solution again with `dotnet run`. -{% endhint %} - ## Install Umbraco using CLI The fastest way to get the latest version of Umbraco up and running is using the command line (CLI). diff --git a/14/umbraco-cms/fundamentals/setup/upgrading/README.md b/14/umbraco-cms/fundamentals/setup/upgrading/README.md index ce44b8bea91..0dc42f9487b 100644 --- a/14/umbraco-cms/fundamentals/setup/upgrading/README.md +++ b/14/umbraco-cms/fundamentals/setup/upgrading/README.md @@ -2,10 +2,6 @@ description: This is the guide for upgrading existing installations in general. --- -{% hint style="warning" %} -This page is a work in progress. It will be updated as the software evolves. -{% endhint %} - # Upgrade your project In this article, you will find everything you need to upgrade your Umbraco CMS project. @@ -13,6 +9,9 @@ In this article, you will find everything you need to upgrade your Umbraco CMS p You will find instructions on how to upgrade to a new minor or major version as well as how to run upgrades unattended. * [Before you upgrade](./#before-you-upgrade) +* [Upgrade to a new Major](./#upgrade-to-a-new-major) +* [Upgrade to a new Minor](./#upgrade-to-a-new-minor) +* [Run an unattended upgrade](./#run-an-unattended-upgrade) ## Before you upgrade @@ -26,3 +25,163 @@ The following lists a few things to be aware of before initiating an upgrade of {% hint style="info" %} It is necessary to run the upgrade installer on each environment of your Umbraco site. This means that you need to repeat the steps below on each of your environments in order to complete the upgrade. {% endhint %} + +## Legacy Umbraco + +The steps outlined in this article apply to modern Umbraco from version 10 and later versions. + +Are you upgrading to a minor for Umbraco 6, 7, or 8 you can find the appropriate guide below: + +{% content-ref url="version-specific/minor-upgrades-for-umbraco-8.md" %} +[minor-upgrades-for-umbraco-8.md](version-specific/minor-upgrades-for-umbraco-8.md) +{% endcontent-ref %} + +{% content-ref url="version-specific/minor-upgrades-for-umbraco-7.md" %} +[minor-upgrades-for-umbraco-7.md](version-specific/minor-upgrades-for-umbraco-7.md) +{% endcontent-ref %} + +## Upgrade to a new Major + +You can upgrade to a new major of Umbraco CMS directly by using NuGet. + +{% hint style="warning" %} +Switching to a new major of Umbraco CMS also means switching to a new .NET version. You need to make sure that any packages used on your site are compatible with this version before upgrading. + +The package compatibility can be checked on the package's download page. Locate the **Project compatibility** area and select **View details** to check version-specific compatibility. +{% endhint %} + +### Choose the correct .NET version + +Use the table below to determine which .NET version to upgrade to when going through the steps below. + +| CMS version | .NET version | +| ----------- | ------------ | +| 13 | 8.0 | +| 12 | 7.0 | +| 11 | 7.0 | +| 10 | 6.0.5 | + +### Upgrade your project using Visual Studio + +It's recommended that you upgrade the site offline and test the upgrade fully before deploying it to the production environment. + +1. Stop your site in IIS to prevent any changes from being made while you are upgrading. +2. Open your Umbraco project in Visual Studio. +3. Right-click on the project name in the Solution Explorer and select **Properties**. +4. Select the **.NET** version from the **Target Framework** drop-down. +5. Go to **Tools** > **NuGet Package Manager** > **Manage NuGet Packages for Solution...** +6. Go to the **Installed** tab in the NuGet Package manager. +7. Upgrade **Umbraco.Cms**. + + a. Select the correct version from the **Version** drop-down. + + b. Click **Install** to upgrade your project. + +{% hint style="info" %} +If you have other packages installed such as Umbraco Forms, then before upgrading **Umbraco.CMS** you will need to upgrade the packages first. Consult the [version specific upgrade notes for Umbraco Forms](https://docs.umbraco.com/umbraco-forms/upgrading/version-specific) if relevant. +{% endhint %} + +8. Make sure that your connection string has `TrustServerCertificate=True` in order to complete the upgrade successfully: + +```csharp +"ConnectionStrings": { + "umbracoDbDSN": "Server=YourLocalSQLServerHere;Database=NameOfYourDatabaseHere;User Id=NameOfYourUserHere;Password=YourPasswordHere;TrustServerCertificate=True" +} +``` + +9. Restart your site in IIS, then build and run your project to finish the installation. + +{% hint style="info" %} +In Umbraco 13, we have moved to using the [Minimal Hosting Model](https://github.com/umbraco/Umbraco-CMS/pull/14656). + +If you have added custom code to the `startup.cs` file, we recommend moving the code into a Composer after upgrading. +{% endhint %} + +{% hint style="warning" %} +If your database experiences timeout issues after an upgrade, it might be due to [ASP.NET Core Module's](https://learn.microsoft.com/en-us/aspnet/core/test/troubleshoot-azure-iis?#default-startup-limits) 'startupTimeLimit' configuration. + +To fix the issue, try increasing the [`startupTimeLimit`](https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/web-config?) in the `web.config` file. Additionally, you can set the [`Connection Timeout`](https://learn.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlconnection.connectiontimeout?) value in the [`ConnectionString`](https://learn.microsoft.com/en-us/dotnet/api/microsoft.data.sqlclient.sqlconnection.connectionstring?) in the `appsettings.json` file. +{% endhint %} + +## Upgrade to a new Minor + +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 ` + +Add 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. + +{% hint style="warning" %} +For v9: If you are using SQL CE in your project you will need to run `dotnet add package Umbraco.Cms.SqlCe --version ` before running the `dotnet restore` command. +From v10, SQL CE has been replaced with SQLite so a `dotnet restore` should be sufficient. If this is not working then you will need to run `dotnet add package Umbraco.Cms.Persistence.Sqlite --version ` and then `dotnet restore`. +{% endhint %} + +When the command completes, open the **.csproj** file to make sure the package reference was updated: + +{% code title=".csproj" %} + +```xml + + + +``` + +{% endcode %} + +## Run an unattended upgrade + +When upgrading your Umbraco project, it is possible to enable the upgrade to run unattended. This means that you will not need to run through the installation wizard when upgrading. + +Below you will find the steps you need to take in order to upgrade your project unattended. + +{% hint style="info" %} +Are you running a load balanced setup with multiple servers and environments? + +Check out the section about [Unattended upgrades in a load balanced setup](./#unattended-upgrades-in-a-load-balanced-setup). +{% endhint %} + +### Enable the unattended upgrade feature + +1. Add the `Umbraco:Cms:Unattended:UpgradeUnattended` configuration key. +2. Set the value of the key to `true`. + +{% code title="appsettings.json" %} + +```json +{ + "Umbraco": { + "CMS": { + "Unattended": { + "UpgradeUnattended": true + } + } + } +} +``` + +{% endcode %} + +### Run the upgrade + +With the correct configuration applied, the project will be upgraded on the next boot. + +#### Boot order + +The Runtime level will use `Run` instead of `Upgrade` to allow the website to continue to boot up directly after the migration is run. This happens instead of initiating the otherwise required restart. + +{% hint style="info" %} +The upgrade is run after Composers but before Components and the `UmbracoApplicationStartingNotification`. This is because the migration requires services that are registered in Composers and Components require that Umbraco and the database are ready. +{% endhint %} + +### Unattended upgrades in a load balanced setup + +Follow the steps outlined below to use unattended upgrades in a load balanced setup. + +1. Upgrade Umbraco via NuGet ([see instructions above](./#upgrade-to-a-new-major)) +2. Deploy to all environments. +3. Set the `Umbraco:CMS:Unattended:UpgradeUnattended` configuration key to `true` for **the Main server only**. +4. Boot the Main server and the upgrade will run automatically. +5. Wait for the upgrade to complete. +6. Boot the Read-Only servers and make sure they do not show the “upgrade required” screen. diff --git a/14/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md b/14/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md index 68ee35c53ed..5f3b8ffe03a 100644 --- a/14/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md +++ b/14/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md @@ -7,10 +7,6 @@ description: >- # Version Specific Upgrades -{% hint style="warning" %} -This page is a work in progress. It will be updated as the software evolves. -{% endhint %} - ## Version Specific Upgrades Use the information below to learn about any potential breaking changes and common pitfalls when upgrading your Umbraco CMS project. @@ -263,3 +259,1338 @@ Official release of Beta, 6th March 2023. * [Backend (CMS) changes](https://github.com/umbraco/Umbraco-CMS/releases/tag/release-14.0.0-beta001) + +
+ +Umbraco 13 + +Below you can find the list of breaking changes introduced in Umbraco 13. + +* [Use ISO codes instead of language IDs for fallback languages and translations](https://github.com/umbraco/Umbraco-CMS/issues/13751) +* [Breaking changes for the Delivery API](https://github.com/umbraco/Umbraco-CMS/issues/14745) +* [V13: New login screen](https://github.com/umbraco/Umbraco-CMS/issues/14780) +* [Updated NuGet Dependencies](https://github.com/umbraco/Umbraco-CMS/issues/14795) +* [Fix \`JsonNetSerializer\` settings leaking into derived implementations](https://github.com/umbraco/Umbraco-CMS/issues/14814) +* [Add default property value converters for all value types](https://github.com/umbraco/Umbraco-CMS/issues/14869) +* [V13: Add config to limit concurrent logins](https://github.com/umbraco/Umbraco-CMS/issues/14989) +* [Updates and support for re-use of CMS logic in Deploy](https://github.com/umbraco/Umbraco-CMS/issues/14990) +* [Dont explicitly index nested property by default](https://github.com/umbraco/Umbraco-CMS/issues/15028) +* [Blocks in the Rich Text Editor](https://github.com/umbraco/Umbraco-CMS/issues/15029) +* [Fix FurthestAncestorOrSelfDynamicRootQueryStep and FurthestDescendantOrSelfDynamicRootQueryStep](https://github.com/umbraco/Umbraco-CMS/issues/15113) +* [Remove parameter value/return nullability in \`IImageSourceParser\`, \`ILocalLinkParser\` and \`IMacroParser\`](https://github.com/umbraco/Umbraco-CMS/issues/15130) +* [Update PackageMigrationsPlans collection to be Weighted and not Lazy](https://github.com/umbraco/Umbraco-CMS/issues/15138) +* [Move IContextCache parameter to base Deploy interfaces and add checksum to artifact dependency](https://github.com/umbraco/Umbraco-CMS/issues/15144) +* [V13: Update IWebHookService to proper casing](https://github.com/umbraco/Umbraco-CMS/issues/15169) +* [V13: Implement webhook as i entity](https://github.com/umbraco/Umbraco-CMS/issues/15267) +* [Change \`WebhookEventCollectionBuilder\` to set collection](https://github.com/umbraco/Umbraco-CMS/issues/15351) +* [V13: Log webhook firing exceptions when they happen](https://github.com/umbraco/Umbraco-CMS/issues/15393) +* [Remove date header from webhook request and use constants](https://github.com/umbraco/Umbraco-CMS/issues/15407) + +You can find more information about all breaking changes for v13.0.0 on [Our Umbraco](https://our.umbraco.com/download/releases/1300) website. + +**Note:** You need to be aware of some things if you are using EF Core, and have installed the `Microsoft.EntityFrameworkCore.Design 8.0.0` package: + +* This package has a transient dependency to `Microsoft.CodeAnalysis.Common` which clashes with the same transient dependency from `Umbraco.Cms 13.0.0`. This happens because `Microsoft.EntityFrameworkCore.Design 8.0.0` requires `Microsoft.CodeAnalysis.CSharp.Workspaces` in v4.5.0 or higher. +* If there are no other dependencies that need that package then it installs it in the lowest allowed version (4.5.0). That package then has a strict dependency on `Microsoft.CodeAnalysis.Common` version 4.5.0. The problem is `Umbraco.Cms` through its own transient dependencies that require the version of `Microsoft.CodeAnalysis.Common` to be >= 4.8.0. +* This can be fixed by installing `Microsoft.CodeAnalysis.CSharp.Workspaces` version 4.8.0 as a specific package instead of leaving it as a transient dependency. This is because it will then have a strict transient dependency on `Microsoft.CodeAnalysis.Common` version 4.8.0, which is the same that Umbraco has. + +
+ +
+ +Umbraco 12 + +Umbraco 12 does not include many binary breaking changes, but there are some. + +Most notable is a functional breaking change in Migrations, that from Umbraco 12. Each translation will be executed in its own transactions instead of all migrations in one big transaction. This change has been made to ease the support for Sqlite. + +**A type, enum, record, or struct visible outside the assembly is missing in the compared assembly when required to be present.** + +* PagedModel has moved namespace from Umbraco.New.Cms.Core.Models to Umbraco.Cms.Core.Models +* Umbraco.Cms.Infrastructure.Migrations.PostMigrations.ClearCsrfCookies is removed. The functionality can be archived by implementing a notification handler for the new UmbracoPlanExecutedNotification. +* Umbraco.Cms.Core.Cache.DistributedCacheBinder is now divided into separate files for each notification handler +* Umbraco.Cms.Infrastructure.Migrations.PostMigrations.DeleteLogViewerQueryFile was a no-op method removed. +* Umbraco.Cms.Infrastructure.Migrations.PostMigrations.RebuildPublishedSnapshot replaced with a RebuildCache flag on the MigrationBase + +**A member that is visible outside of the assembly is missing in the compared assembly when required to be present.** + +* Umbraco.Cms.Core.Migrations.IMigrationPlanExecutor.Execute(Umbraco.Cms.Infrastructure.Migrations.MigrationPlan,System.String) replaced with Umbraco.Cms.Core.Migrations.IMigrationPlanExecutor.ExecutePlan(Umbraco.Cms.Infrastructure.\* \* Migrations.MigrationPlan,System.String) that returns an rich object instead of a string +* Umbraco.Cms.Infrastructure.Migrations.IMigrationContext.AddPostMigration\`\`1 Removed and replaced with notification +* Umbraco.Cms.Infrastructure.Migrations.MigrationPlan.AddPostMigration\`\`1 +* Removed and replaced with notification +* Umbraco.Cms.Infrastructure.Migrations.MigrationPlan.get\_PostMigrationTypes removed. +* Umbraco.Cms.Infrastructure.Migrations.Upgrade.Upgrader.Execute(Umbraco.Cms.Core.Migrations.IMigrationPlanExecutor,Umbraco.Cms.Core.Scoping.IScopeProvider,Umbraco.Cms.Core.Services.IKeyValueService) was obsolete and is replaced by method taking a ICoreScopeProvider instead of a IScopeProvider + +**An abstract member was added to the right side of the comparison to an unsealed type.** + +* PublishedPropertyBase now requires inheritors to implement GetDeliveryApiValue(System.Boolean,System.String,System.String) + +**A member was added to an interface without a default implementation.** + +* Umbraco.Cms.Core.Events.IEventAggregator.Publish`2(System.Collections.Generic.IEnumerable{`0}) +* Umbraco.Cms.Core.Events.IEventAggregator.PublishAsync`2(System.Collections.Generic.IEnumerable{`0},System.Threading.CancellationToken) +* Umbraco.Cms.Core.Models.PublishedContent.IPublishedProperty.GetDeliveryApiValue(System.Boolean,System.String,System.String) +* Umbraco.Cms.Core.Models.PublishedContent.IPublishedPropertyType.ConvertInterToDeliveryApiObject(Umbraco.Cms.Core.Models.PublishedContent.IPublishedElement,Umbraco.Cms.Core.PropertyEditors.PropertyCacheLevel,System.Object,System.Boolean,System.Boolean) +* Umbraco.Cms.Core.Models.PublishedContent.IPublishedPropertyType.ConvertInterToDeliveryApiObject(Umbraco.Cms.Core.Models.PublishedContent.IPublishedElement,Umbraco.Cms.Core.PropertyEditors.PropertyCacheLevel,System.Object,System.Boolean) +* Umbraco.Cms.Core.Models.PublishedContent.IPublishedPropertyType.DeliveryApiCacheLevel +* Umbraco.Cms.Core.Scoping.ICoreScope.Locks +* Umbraco.Cms.Core.Migrations.IMigrationPlanExecutor.ExecutePlan(Umbraco.Cms.Infrastructure.Migrations.MigrationPlan,System.String) +* Umbraco.Cms.Infrastructure.Search.IUmbracoIndexingHandler.RemoveProtectedContent +* Umbraco.Cms.Infrastructure.Examine.IUmbracoIndex.SupportProtectedContent + +
+ +
+ +Umbraco 11 + +Most breaking changes are introduced due to **updated dependencies**. The breaking changes in .NET 7 and ASP.NET Core 7 are documented by [Microsoft](https://learn.microsoft.com/en-us/dotnet/core/compatibility/7.0). + +Besides the documented changes, we have also seen a few method signatures that are changed to support Nullable-Reference-Types. + +If you are using **TinyMCE** plugins or custom TinyMCE configuration you need to migrate to the latest version. Learn more about this in the [Rich Text Editor documentation](../../../backoffice/property-editors/built-in-umbraco-property-editors/rich-text-editor/). + +The breaking changes in TinyMCE are also documented in the official migration guides for [version 4 to 5](https://www.tiny.cloud/docs/migration-from-4x/) and from [version 5 to 6](https://www.tiny.cloud/docs/tinymce/6/migration-from-5x/). + +The breaking changes in Umbraco 11 are mainly the removal of classes, methods, and so on, marked as obsolete in Umbraco 9. + +A few methods and classes have also been moved and changed namespace. Decoupled dependencies are documented on the [Umbraco Announcements repository](https://github.com/umbraco/Announcements/issues/5). + +The full list of API-breaking changes can be found below. + +**Obsolete code removed** + +The following have been removed after having been obsoleted since Umbraco 9. + +**Umbraco.Extensions** + +```csharp +Umbraco.Extensions.ServiceCollectionExtensions.AddUnique(Microsoft.Extensions.DependencyInjection.IServiceCollection) + +Umbraco.Extensions.EnumExtensions.HasFlagAll(T, T) + +Umbraco.Extensions.FriendlyImageCropperTemplateExtensions.GetLocalCropUrl(Umbraco.Cms.Core.Models.MediaWithCrops, string, string?) +``` + +**Umbraco.Cms.Core** + +```csharp +Umbraco.Cms.Core.Constants.Conventions.Member.IsApproved +Umbraco.Cms.Core.Constants.Conventions.Member.IsApprovedLabel +Umbraco.Cms.Core.Constants.Conventions.Member.IsLockedOut +Umbraco.Cms.Core.Constants.Conventions.Member.IsLockedOutLabel +Umbraco.Cms.Core.Constants.Conventions.Member.LastLoginDate +Umbraco.Cms.Core.Constants.Conventions.Member.LastLoginDateLabel +Umbraco.Cms.Core.Constants.Conventions.Member.LastPasswordChangeDate +Umbraco.Cms.Core.Constants.Conventions.Member.LastPasswordChangeDateLabel +Umbraco.Cms.Core.Constants.Conventions.Member.LastLockoutDate +Umbraco.Cms.Core.Constants.Conventions.Member.LastLockoutDateLabel +Umbraco.Cms.Core.Constants.Conventions.Member.FailedPasswordAttempts +Umbraco.Cms.Core.Constants.Conventions.Member.FailedPasswordAttemptsLabel + +Umbraco.Cms.Core.WebAssets.IRuntimeMinifier.Reset() + +Umbraco.Cms.Core.Services.IExternalLoginService + +Umbraco.Cms.Core.Services.ExternalLoginService.ExternalLoginService( + Umbraco.Cms.Core.Scoping.ICoreScopeProvider, + Microsoft.Extensions.Logging.ILoggerFactory, + Umbraco.Cms.Core.Events.IEventMessagesFactory, + Umbraco.Cms.Core.Persistence.Repositories.IExternalLoginRepository) + +Umbraco.Cms.Core.Services.ExternalLoginService.GetExternalLogins(int) + +Umbraco.Cms.Core.Services.ExternalLoginService.GetExternalLoginTokens(int) + +Umbraco.Cms.Core.Services.ExternalLoginService.Save(int, + System.Collections.Generic.IEnumerable) + +Umbraco.Cms.Core.Services.ExternalLoginService.Save(int, + System.Collections.Generic.IEnumerable) + +Umbraco.Cms.Core.Services.ExternalLoginService.DeleteUserLogins(int) + +Umbraco.Cms.Core.Services.IMacroWithAliasService + +Umbraco.Cms.Core.Services.ITwoFactorLoginService2 + +Umbraco.Cms.Core.Services.LocalizedTextService.LocalizedTextService( + System.Collections.Generic.IDictionary>>, + Microsoft.Extensions.Logging.ILogger) + +Umbraco.Cms.Core.Services.ServiceContext.ServiceContext( + System.Lazy?, + System.Lazy?, + System.Lazy?, + System.Lazy?, + System.Lazy?, + System.Lazy?, + System.Lazy?, + System.Lazy?, + System.Lazy?, + System.Lazy?, + System.Lazy?, + System.Lazy?, + System.Lazy?, + System.Lazy?, + System.Lazy?, + System.Lazy?, + System.Lazy?, + System.Lazy?, + System.Lazy?, + System.Lazy?, + System.Lazy?, + System.Lazy?, + System.Lazy?, + System.Lazy?, + System.Lazy?, + System.Lazy?, + System.Lazy?) + +Umbraco.Cms.Core.Services.ServiceContext.CreatePartial( + Umbraco.Cms.Core.Services.IContentService?, + Umbraco.Cms.Core.Services.IMediaService?, + Umbraco.Cms.Core.Services.IContentTypeService?, + Umbraco.Cms.Core.Services.IMediaTypeService?, + Umbraco.Cms.Core.Services.IDataTypeService?, + Umbraco.Cms.Core.Services.IFileService?, + Umbraco.Cms.Core.Services.ILocalizationService?, + Umbraco.Cms.Core.Services.IPackagingService?, + Umbraco.Cms.Core.Services.IEntityService?, + Umbraco.Cms.Core.Services.IRelationService?, + Umbraco.Cms.Core.Services.IMemberGroupService?, + Umbraco.Cms.Core.Services.IMemberTypeService?, + Umbraco.Cms.Core.Services.IMemberService?, + Umbraco.Cms.Core.Services.IUserService?, + Umbraco.Cms.Core.Services.ITagService?, + Umbraco.Cms.Core.Services.INotificationService?, + Umbraco.Cms.Core.Services.ILocalizedTextService?, + Umbraco.Cms.Core.Services.IAuditService?, + Umbraco.Cms.Core.Services.IDomainService?, + Umbraco.Cms.Core.Services.IMacroService?, + Umbraco.Cms.Core.Services.IPublicAccessService?, + Umbraco.Cms.Core.Services.IExternalLoginService?, + Umbraco.Cms.Core.Services.IServerRegistrationService?, + Umbraco.Cms.Core.Services.IRedirectUrlService?, + Umbraco.Cms.Core.Services.IConsentService?, + Umbraco.Cms.Core.Services.IKeyValueService?, + Umbraco.Cms.Core.Services.IContentTypeBaseServiceProvider?) + +Umbraco.Cms.Core.Services.TwoFactorLoginService.TwoFactorLoginService( + Umbraco.Cms.Core.Persistence.Repositories.ITwoFactorLoginRepository, + Umbraco.Cms.Core.Scoping.ICoreScopeProvider, + System.Collections.Generic.IEnumerable, + Microsoft.Extensions.Options.IOptions, + Microsoft.Extensions.Options.IOptions) + +Umbraco.Cms.Core.Routing.DefaultUrlProvider.DefaultUrlProvider( + Microsoft.Extensions.Options.IOptionsMonitor, + Microsoft.Extensions.Logging.ILogger, + Umbraco.Cms.Core.Routing.ISiteDomainMapper, + Umbraco.Cms.Core.Web.IUmbracoContextAccessor, + Umbraco.Cms.Core.Routing.UriUtility) + +Umbraco.Cms.Core.Persistence.Repositories.IExternalLoginRepository + +Umbraco.Cms.Core.Persistence.Repositories.IMacroWithAliasRepository + +Umbraco.Cms.Core.Persistence.Repositories.IMemberRepository.SetLastLogin(string, System.DateTime) + +Umbraco.Cms.Core.Notifications.UmbracoApplicationComponentsInstallingNotification + +Umbraco.Cms.Core.Notifications.UmbracoApplicationMainDomAcquiredNotification + + +Umbraco.Cms.Core.Notifications.UmbracoApplicationStartingNotification.UmbracoApplicationStartingNotification(Umbraco.Cms.Core.RuntimeLevel) + +Umbraco.Cms.Core.Notifications.UmbracoApplicationStoppingNotification.UmbracoApplicationStoppingNotification() + +Umbraco.Cms.Core.Models.IContentTypeWithHistoryCleanup + +Umbraco.Cms.Core.Models.Language.Language(Umbraco.Cms.Core.Configuration.Models.GlobalSettings, string) + +Umbraco.Cms.Core.Models.RelationType.RelationType(string, string, bool, System.Nullable, System.Nullable) + +Umbraco.Cms.Core.Models.PublishedContent.PublishedContentType.PublishedContentType(int, string, + Umbraco.Cms.Core.Models.PublishedContent.PublishedItemType, + System.Collections.Generic.IEnumerable, + System.Collections.Generic.IEnumerable, + Umbraco.Cms.Core.Models.ContentVariation, + bool) + +Umbraco.Cms.Core.Models.PublishedContent.PublishedContentType.PublishedContentType(int, string, + Umbraco.Cms.Core.Models.PublishedContent.PublishedItemType, System.Collections.Generic.IEnumerable, + System.Func>, + Umbraco.Cms.Core.Models.ContentVariation, + bool) + +Umbraco.Cms.Core.Models.Mapping.ContentTypeMapDefinition.ContentTypeMapDefinition( + Umbraco.Cms.Core.Models.Mapping.CommonMapper, + Umbraco.Cms.Core.PropertyEditors.PropertyEditorCollection, + Umbraco.Cms.Core.Services.IDataTypeService, + Umbraco.Cms.Core.Services.IFileService, + Umbraco.Cms.Core.Services.IContentTypeService, + Umbraco.Cms.Core.Services.IMediaTypeService, + Umbraco.Cms.Core.Services.IMemberTypeService, + Microsoft.Extensions.Logging.ILoggerFactory, + Umbraco.Cms.Core.Strings.IShortStringHelper, + Microsoft.Extensions.Options.IOptions, + Umbraco.Cms.Core.Hosting.IHostingEnvironment) + +Umbraco.Cms.Core.Models.ContentEditing.UserGroupPermissionsSave.Validate(System.ComponentModel.DataAnnotations.ValidationContext) + +Umbraco.Cms.Core.Install.InstallSteps.TelemetryIdentifierStep.TelemetryIdentifierStep( + Microsoft.Extensions.Logging.ILogger, + Microsoft.Extensions.Options.IOptions, + Umbraco.Cms.Core.Configuration.IConfigManipulator) + +Umbraco.Cms.Core.IO.ViewHelper.ViewHelper(Umbraco.Cms.Core.IO.IFileSystem) + +Umbraco.Cms.Core.HealthChecks.Checks.Security.BaseHttpHeaderCheck.BaseHttpHeaderCheck( + Umbraco.Cms.Core.Hosting.IHostingEnvironment, + Umbraco.Cms.Core.Services.ILocalizedTextService, + string, + string, + string, + bool) + +Umbraco.Cms.Core.DependencyInjection.UmbracoBuilderExtensions.AddOEmbedProvider(Umbraco.Cms.Core.DependencyInjection.IUmbracoBuilder) + +Umbraco.Cms.Core.DependencyInjection.UmbracoBuilderExtensions.OEmbedProviders(Umbraco.Cms.Core.DependencyInjection.IUmbracoBuilder) + +Umbraco.Cms.Core.Configuration.Models.RequestHandlerSettings.CharCollection.get +Umbraco.Cms.Core.Configuration.Models.RequestHandlerSettings.CharCollection.set + +Umbraco.Cms.Core.Composing.IUserComposer + +Umbraco.Cms.Core.Security.BackOfficeUserStore.BackOfficeUserStore( + Umbraco.Cms.Core.Scoping.ICoreScopeProvider, + Umbraco.Cms.Core.Services.IUserService, + Umbraco.Cms.Core.Services.IEntityService, + Umbraco.Cms.Core.Services.IExternalLoginService, + Microsoft.Extensions.Options.IOptions, + Umbraco.Cms.Core.Mapping.IUmbracoMapper, + Umbraco.Cms.Core.Security.BackOfficeErrorDescriber, + Umbraco.Cms.Core.Cache.AppCaches) + +Umbraco.Cms.Core.Security.MemberUserStore.MemberUserStore( + Umbraco.Cms.Core.Services.IMemberService, + Umbraco.Cms.Core.Mapping.IUmbracoMapper, + Umbraco.Cms.Core.Scoping.ICoreScopeProvider, + Microsoft.AspNetCore.Identity.IdentityErrorDescriber, + Umbraco.Cms.Core.PublishedCache.IPublishedSnapshotAccessor, + Umbraco.Cms.Core.Services.IExternalLoginService) + +Umbraco.Cms.Core.Logging.Viewer.ILogViewer.GetLogLevel() + +Umbraco.Cms.Core.Logging.Viewer.SerilogLogViewerSourceBase.SerilogLogViewerSourceBase( + Umbraco.Cms.Core.Logging.Viewer.ILogViewerConfig, + Serilog.ILogger) + +Umbraco.Cms.Core.Logging.Viewer.SerilogLogViewerSourceBase.GetLogLevel() + +Umbraco.Cms.Core.Configuration.JsonConfigManipulator.JsonConfigManipulator(Microsoft.Extensions.Configuration.IConfiguration) +``` + +**Umbraco.Cms.Infrastructure** + +```csharp +Umbraco.Cms.Infrastructure.Persistence.Repositories.Implement.MemberRepository.SetLastLogin(string, System.DateTime) + +Umbraco.Cms.Infrastructure.Packaging.PackageMigrationBase.PackageMigrationBase( + Umbraco.Cms.Core.Services.IPackagingService, + Umbraco.Cms.Core.Services.IMediaService, + Umbraco.Cms.Core.IO.MediaFileManager, + Umbraco.Cms.Core.PropertyEditors.MediaUrlGeneratorCollection, + Umbraco.Cms.Core.Strings.IShortStringHelper, + Umbraco.Cms.Core.Services.IContentTypeBaseServiceProvider, + Umbraco.Cms.Infrastructure.Migrations.IMigrationContext) + +Umbraco.Cms.Infrastructure.Migrations.Install.DatabaseSchemaCreator.DatabaseSchemaCreator( + Umbraco.Cms.Infrastructure.Persistence.IUmbracoDatabase?, + Microsoft.Extensions.Logging.ILogger, + Microsoft.Extensions.Logging.ILoggerFactory, + Umbraco.Cms.Core.Configuration.IUmbracoVersion, + Umbraco.Cms.Core.Events.IEventAggregator) + +Umbraco.Cms.Infrastructure.Migrations.Install.DatabaseSchemaCreatorFactory.DatabaseSchemaCreatorFactory( + Microsoft.Extensions.Logging.ILogger, + Microsoft.Extensions.Logging.ILoggerFactory, + Umbraco.Cms.Core.Configuration.IUmbracoVersion, + Umbraco.Cms.Core.Events.IEventAggregator) + +Umbraco.Cms.Infrastructure.HostedServices.RecurringHostedServiceBase.RecurringHostedServiceBase( + System.TimeSpan, + System.TimeSpan) + +Umbraco.Cms.Infrastructure.HostedServices.ReportSiteTask.ReportSiteTask( + Microsoft.Extensions.Logging.ILogger, + Umbraco.Cms.Core.Configuration.IUmbracoVersion, + Microsoft.Extensions.Options.IOptions) +``` + +**Umbraco.Cms.Web** + +```csharp +Umbraco.Cms.Web.Common.Security.ConfigureIISServerOptions + +Umbraco.Cms.Web.Common.RuntimeMinification.SmidgeRuntimeMinifier.Reset() + +Umbraco.Cms.Web.Common.Middleware.UmbracoRequestMiddleware.UmbracoRequestMiddleware( + Microsoft.Extensions.Logging.ILogger, + Umbraco.Cms.Core.Web.IUmbracoContextFactory, + Umbraco.Cms.Core.Cache.IRequestCache, + Umbraco.Cms.Core.Events.IEventAggregator, + Umbraco.Cms.Core.Logging.IProfiler, + Umbraco.Cms.Core.Hosting.IHostingEnvironment, + Umbraco.Cms.Core.Routing.UmbracoRequestPaths, + Umbraco.Cms.Infrastructure.WebAssets.BackOfficeWebAssets, + Microsoft.Extensions.Options.IOptionsMonitor, + Umbraco.Cms.Core.Services.IRuntimeState, + Umbraco.Cms.Core.Models.PublishedContent.IVariationContextAccessor, + Umbraco.Cms.Core.PublishedCache.IDefaultCultureAccessor) + +Umbraco.Cms.Web.Website.Controllers.UmbLoginController.UmbLoginController( + Umbraco.Cms.Core.Web.IUmbracoContextAccessor, + Umbraco.Cms.Infrastructure.Persistence.IUmbracoDatabaseFactory, + Umbraco.Cms.Core.Services.ServiceContext, + Umbraco.Cms.Core.Cache.AppCaches, + Umbraco.Cms.Core.Logging.IProfilingLogger, + Umbraco.Cms.Core.Routing.IPublishedUrlProvider, + Umbraco.Cms.Web.Common.Security.IMemberSignInManager) + +Umbraco.Cms.Web.BackOffice.Trees.MemberTypeAndGroupTreeControllerBase.MemberTypeAndGroupTreeControllerBase( + Umbraco.Cms.Core.Services.ILocalizedTextService, + Umbraco.Cms.Core.UmbracoApiControllerTypeCollection, + Umbraco.Cms.Core.Trees.IMenuItemCollectionFactory, + Umbraco.Cms.Core.Events.IEventAggregator) + +Umbraco.Cms.Web.BackOffice.Controllers.CurrentUserController.CurrentUserController( + Umbraco.Cms.Core.IO.MediaFileManager, + Microsoft.Extensions.Options.IOptions, + Umbraco.Cms.Core.Hosting.IHostingEnvironment, + Umbraco.Cms.Core.Media.IImageUrlGenerator, + Umbraco.Cms.Core.Security.IBackOfficeSecurityAccessor, + Umbraco.Cms.Core.Services.IUserService, + Umbraco.Cms.Core.Mapping.IUmbracoMapper, + Umbraco.Cms.Core.Security.IBackOfficeUserManager, + Microsoft.Extensions.Logging.ILoggerFactory, + Umbraco.Cms.Core.Services.ILocalizedTextService, + Umbraco.Cms.Core.Cache.AppCaches, + Umbraco.Cms.Core.Strings.IShortStringHelper, + Umbraco.Cms.Web.Common.Security.IPasswordChanger) + +Umbraco.Cms.Web.BackOffice.Controllers.EntityController.GetUrlsByUdis(Umbraco.Cms.Core.Udi[], string?) + +Umbraco.Cms.Web.BackOffice.Controllers.HelpController.HelpController(Microsoft.Extensions.Logging.ILogger) + +Umbraco.Cms.Web.BackOffice.Controllers.LanguageController.LanguageController( + Umbraco.Cms.Core.Services.ILocalizationService, + Umbraco.Cms.Core.Mapping.IUmbracoMapper, + Microsoft.Extensions.Options.IOptionsSnapshot) + +Umbraco.Cms.Web.BackOffice.Controllers.LogViewerController.LogViewerController(Umbraco.Cms.Core.Logging.Viewer.ILogViewer) +Umbraco.Cms.Web.BackOffice.Controllers.LogViewerController.GetLogLevel() + +Umbraco.Cms.Web.BackOffice.Controllers.MediaController.GetPagedReferences(int, string, int, int) + +Umbraco.Cms.Web.BackOffice.Controllers.MemberTypeController.GetAllTypes() + +Umbraco.Cms.Web.BackOffice.Controllers.TemplateController.TemplateController( + Umbraco.Cms.Core.Services.IFileService, + Umbraco.Cms.Core.Mapping.IUmbracoMapper, + Umbraco.Cms.Core.Strings.IShortStringHelper) +``` + +**Umbraco.Cms.Tests** + +```csharp +Umbraco.Cms.Tests.Common.Testing.TestOptionAttributeBase.ScanAssemblies +``` + +**Code moved to new assemblies and namespaces** + +The following have been moved to new assemblies and their namespaces have been updated accordingly. + +**Umbraco.Extensions** + +```csharp +Umbraco.Extensions.NPocoDatabaseExtensions.ConfigureNPocoBulkExtensions() + +Umbraco.Extensions.UmbracoBuilderExtensions.AddUmbracoImageSharp(Umbraco.Cms.Core.DependencyInjection.IUmbracoBuilder) +``` + +**Umbraco.Cms.Web** + +```csharp +Umbraco.Cms.Web.Common.Media.ImageSharpImageUrlGenerator + +Umbraco.Cms.Web.Common.ImageProcessors.CropWebProcessor + +Umbraco.Cms.Web.Common.DependencyInjection.ConfigureImageSharpMiddlewareOptions +Umbraco.Cms.Web.Common.DependencyInjection.ConfigurePhysicalFileSystemCacheOptions +``` + +**Umbraco.Cms.Infrastructure** + +```csharp +Umbraco.Cms.Infrastructure.Persistence.LocalDb +Umbraco.Cms.Infrastructure.Persistence.FaultHandling.RetryPolicyFactory +Umbraco.Cms.Infrastructure.Persistence.FaultHandling.ThrottlingMode +Umbraco.Cms.Infrastructure.Persistence.FaultHandling.ThrottlingType +Umbraco.Cms.Infrastructure.Persistence.FaultHandling.ThrottledResourceType +Umbraco.Cms.Infrastructure.Persistence.FaultHandling.ThrottlingCondition +Umbraco.Cms.Infrastructure.Persistence.FaultHandling.Strategies.NetworkConnectivityErrorDetectionStrategy +Umbraco.Cms.Infrastructure.Persistence.FaultHandling.Strategies.SqlAzureTransientErrorDetectionStrategy +``` + +**New interface methods** + +A few interfaces have been merged, adding new members to the original interfaces. + +**Umbraco.Cms.Core** + +```csharp +Umbraco.Cms.Core.Services.IMacroService.GetAll(params string[]) + +Umbraco.Cms.Core.Persistence.Repositories.IMacroRepository.GetByAlias(string) +Umbraco.Cms.Core.Persistence.Repositories.IMacroRepository.GetAllByAlias(string[]) + +Umbraco.Cms.Core.Services.ITwoFactorLoginService.DisableWithCodeAsync(string, System.Guid, string) +Umbraco.Cms.Core.Services.ITwoFactorLoginService.ValidateAndSaveAsync(string, System.Guid, string, string) + +Umbraco.Cms.Core.Models.IContentType.HistoryCleanup + +Umbraco.Cms.Core.Media.IImageDimensionExtractor.SupportedImageFileTypes +``` + +**No-Operation methods removed** + +A method not doing anything for the last couple of major releases have been removed. + +**Umbraco.Cms.Core** + +```csharp +Umbraco.Cms.Core.Services.IMembershipMemberService.SetLastLogin(string, System.DateTime) +``` + +**Changes due to models made immutable** + +A single model have been made immutable, so the default constructor and the setters are not available anymore. + +**Umbraco.Cms.Infrastructure** + +```csharp +Umbraco.Cms.Infrastructure.PublishedCache.DataSource.ContentData.ContentData() +Umbraco.Cms.Infrastructure.PublishedCache.DataSource.ContentData.Name.set +Umbraco.Cms.Infrastructure.PublishedCache.DataSource.ContentData.UrlSegment.set +Umbraco.Cms.Infrastructure.PublishedCache.DataSource.ContentData.VersionId.set +Umbraco.Cms.Infrastructure.PublishedCache.DataSource.ContentData.VersionDate.set +Umbraco.Cms.Infrastructure.PublishedCache.DataSource.ContentData.WriterId.set +Umbraco.Cms.Infrastructure.PublishedCache.DataSource.ContentData.TemplateId.set +Umbraco.Cms.Infrastructure.PublishedCache.DataSource.ContentData.Published.set +Umbraco.Cms.Infrastructure.PublishedCache.DataSource.ContentData.Properties.set +Umbraco.Cms.Infrastructure.PublishedCache.DataSource.ContentData.CultureInfos.set +``` + +**Classes that does not inherit from base type anymore** + +The following classes now directly inherit from OEmbedProviderBase instead of EmbedProviderBase. + +**Umbraco.Cms.Core** + +```csharp +Umbraco.Cms.Core.Media.EmbedProviders.DailyMotion +Umbraco.Cms.Core.Media.EmbedProviders.Flickr +Umbraco.Cms.Core.Media.EmbedProviders.GettyImages +Umbraco.Cms.Core.Media.EmbedProviders.Giphy +Umbraco.Cms.Core.Media.EmbedProviders.Hulu +Umbraco.Cms.Core.Media.EmbedProviders.Issuu +Umbraco.Cms.Core.Media.EmbedProviders.Kickstarter +Umbraco.Cms.Core.Media.EmbedProviders.Slideshare +Umbraco.Cms.Core.Media.EmbedProviders.Soundcloud +Umbraco.Cms.Core.Media.EmbedProviders.Ted +Umbraco.Cms.Core.Media.EmbedProviders.Twitter +Umbraco.Cms.Core.Media.EmbedProviders.Vimeo +Umbraco.Cms.Core.Media.EmbedProviders.YouTube +``` + +
+ +
+ +Umbraco 10 + +[**Update 'diff' from 3.5.0 to 5.0.0**](https://github.com/umbraco/Umbraco-CMS/issues/12337) + +The `diff` library used in the Backoffice client has been updated and introduces a breaking change since the exposed global object has been renamed from `JsDiff` to `Diff`. + +[**Content Schedule performance**](https://github.com/umbraco/Umbraco-CMS/pull/11398) + +Removes mutable ContentSchedule property from `IContent/Content` to `read/write` content schedules. + +Use _IContentService.GetContentScheduleByContentId && IContentService.PersistContentSchedule_ or the optional _contentSchedule parameter_ on _IContentService.Save_ instead. + +[**Removed redundant event handling code**](https://github.com/umbraco/Umbraco-CMS/pull/11842) + +* Removed public methods: `PublishedSnapshotServiceEventHandler.Dispose`, `PublishedSnapshotServiceEventHandler.Dispose(bool)`, and `.PublishedSnapshotServiceEventHandler.Initialize`. +* Removed public `ctor`. + +[**Scope provider cleanup**](https://github.com/umbraco/Umbraco-CMS/pull/11859) + +* Some public classes in the `Cms.Core.Services` namespace have moved assembly from **`Umbraco.Cms.Infrastructure`** to **`Umbraco.Cms.Core`**. +* These same public classes have changed namespace from **`Umbraco.Cms.Core.Services.Implement`** to **`Umbraco.Cms.Core.Services`**. + +[**Update to NPoco5**](https://github.com/umbraco/Umbraco-CMS/pull/11880) + +NPoco types and interfaces are part of our public interface which means that this upgrade imposes breaking changes. + +[**SQLite support**](https://github.com/umbraco/Umbraco-CMS/pull/11922) + +* Removed support for Microsoft SQL Server Compact (SQL CE). +* Removed `ReadLock` and `WriteLock` methods from `ISqlSyntaxProvider` interface. Use `IDistributedLockingMechanism` (or IScope which delegates to `IDistributedLockingMechanism`) instead. +* Constants for SQL Server provider name moved+consolidated from `Core.Constants.DatabaseProviders` and `Core.Constants.-DbProviderNames` to `Umbraco.Cms.Persistence.SqlServer.Constants` +* Some SQL Server related services moved from the `Umbraco.Infrastructure` project to the new `Umbraco.Cms.Persistence`. +* SqlServer project with altered namespaces e.g. `SqlServerSyntaxProvider`, `SqlServerBulkSqlInsertProvider`, `SqlServerDatabaseCreator`. + +**Added the following methods/properties to ISqlSyntaxProvider. These must be implemented in any downstream implementation e.g:** + +* `ISqlSyntaxProvider.HandleCreateTable(IDatabase,TableDefinition,Boolean)` +* `ISqlSyntaxProvider.GetFieldNameForUpdate()` +* `ISqlSyntaxProvider.GetColumn(DatabaseType,String,String,String,String,Boolean)` +* `ISqlSyntaxProvider.InsertForUpdateHint(Sql)` +* `ISqlSyntaxProvider.AppendForUpdateHint(Sql)` +* `ISqlSyntaxProvider.LeftJoinWithNestedJoin(Sql,Func,String)` + +[**Update to ImageSharp v2**](https://github.com/umbraco/Umbraco-CMS/pull/12185) + +**Update dependency versions**: + +* `SixLabors.ImageSharp` from 1.0.4 to 2.1.1 +* `SixLabors.ImageSharp.Web` from 1.0.5 to 2.0.0 + +Renamed the `CachedNameLength` property to `CacheHashLength` on **ImagingCacheSettings**. + +Moved **ImageSharpImageUrlGenerator** from project `Umbraco.Infrastructure` to `Umbraco.Web.Common` and updated the corresponding namespace and DI registration (from `AddCoreInitialServices()` to `AddUmbracoImageSharp()`); + +Moved **ImageSharp** configuration from the `AddUmbracoImageSharp()` extension method into separate `IConfigureOptions<>` implementations: + +* The middleware is configured in ConfigureImageSharpMiddlewareOptions (which also replaces ImageSharpConfigurationOptions that previously only set the default ImageSharp configuration); +* The default physical cache is configured in ConfigurePhysicalFileSystemCacheOptions. + +[**Migrate Member properties to columns on the Member table**](https://github.com/umbraco/Umbraco-CMS/pull/12205) + +This is breaking because it is no longer possible to access the properties listed below through the _IMember.Properties_ collection. You must now access them through their specific properties that is _IMember.IsLockedOut_. + +* `umbracoMemberFailedPasswordAttempts` +* `umbracoMemberApproved` +* `umbracoMemberLockedOut` +* `umbracoMemberLastLockoutDate` +* `umbracoMemberLastLogin` +* `umbracoMemberLastPasswordChangeDate` + +Additionally, when previously you resolved a Member as published content, all the default properties would be there twice. For instance, `IsLockedOut` would be there both as a property with the alias `umbracoMemberLockedOut` and with the alias `IsLockedOut`. Now it'll only be there once, with the alias being the name of the property, so `IsLockedOut` in this instance. + +Lastly the nullable dates on a user, i.e. `LastLoginLate` will now be null instead of `DateTime.MinValue` when getting a user with the UserService. + +[**Update examine to version 3**](https://github.com/umbraco/Umbraco-CMS/pull/12307) + +**Examine 3 breaking changes:** + +* `ValueSet` immutable. +* `ValueSetValidationResult` is renamed to `ValueSetValidationStatus` and `ValueSetValidationResult` is now a type. + +[**Async support for content finders**](https://github.com/umbraco/Umbraco-CMS/pull/12340) + +```CSharp +bool TryFindContent(IPublishedRequestBuilder request); +``` + +Has changed to: + +```CSharp +Task TryFindContent(IPublishedRequestBuilder request); +``` + +[**Improve redirect Content finder scalability**](https://github.com/umbraco/Umbraco-CMS/pull/12341) + +* Added more methods to `IRedirectUrlRepository` and `IRedirectUrlService.cs`. + +[**Fix Block List settings exception and optimize PVCs**](https://github.com/umbraco/Umbraco-CMS/pull/12342) + +* Added a new method on `IPublishedModelFactory`: Type `GetModelType(string? alias)`; +* The generic types of a `BlockListItem`instance in the`BlockListModel`returned by`BlockListPropertyValueConverter`is now determined by calling this new method, which can be different and cause a`ModelBindingException\` in your views. + +[**Async tree search**](https://github.com/umbraco/Umbraco-CMS/pull/12344) + +```CSharp +IEnumerable Search(string query, int pageSize, long pageIndex, out long totalFound, string? searchFrom += null) +``` + +Has changed to: + +```CSharp +Task SearchAsync(string query, int pageSize, long pageIndex, string? searchFrom = null); +``` + +[**Moved StackQueue to correct namespace**](https://github.com/umbraco/Umbraco-CMS/pull/12347) + +StackQueue has been moved from `Umbraco.Core.Collections` to the `Umbraco.Cms.Core.Collections` namespace. + +**Globalsetting SqlWriteLockTimeOut has been removed** + +This setting has been superseded by `DistributedLockingWriteLockDefaultTimeout`. + +**GlobalSetting UmbracoPath cannot be configured** + +It is no longer possible to rename the `/Umbraco` folder path using configuration. The property still exists but is hardcoded to `/Umbraco` and will be removed in Umbraco 12, planned for release in June 2023. + +
+ +## Release notes + +You can find a list of all the released Umbraco versions on [Our Umbraco](https://our.umbraco.com/download/releases/) website. When you visit Our Umbraco website, click on the version number to view the changes made in that specific version. + +## Find your upgrade path + +Are you looking to upgrade an Umbraco Cloud project from 9 to 10? Follow the guide made for [Upgrading your project from Umbraco 9 to 10](https://docs.umbraco.com/umbraco-cloud/product-upgrades/major-upgrades) instead, as it requires a few steps specific to Umbraco Cloud. + +
+ +10.latest to the latest Umbraco version + +It might be necessary to delete all of the `bin` and `obj` directories in each of the projects of your solution. It has been observed that Visual Studio's "Clean Solution" option is sometimes not enough. + +You can upgrade from Umbraco 10 to the latest version directly. If you choose to skip upgrading to versions 11 and 12, you will no longer receive warning messages for obsolete features. However, if you do skip these versions, any breaking changes will no longer compile. + +It is recommended to upgrade to the closest [Long-term Support (LTS) major](https://umbraco.com/products/knowledge-center/long-term-support-and-end-of-life/) version before upgrading to the latest version. For Umbraco 10, the closest long-term support version is Umbraco 13 so a direct upgrade is possible. + +
+ +
+ +9.latest to 10 + +**Important**: .NET version 6.0.5 is the minimum required version for Umbraco 10 to be able to run. You can check with `dotnet --list-sdks` what your latest installed Software Development Kit (SDK) version is. The latest SDK version 6.0.301 includes .NET 6.0.6, while SDK version 6.0.300 includes .NET 6.0.5. + +Watch the ['Upgrading from Umbraco 9 to Umbraco 10 video tutorial'](https://www.youtube.com/watch?v=075H\_ekJBKI\&ab\_channel=UmbracoLearningBase) for a complete walk-through of all the steps. + +The upgrade path between Umbraco 9 and Umbraco 10 can be done directly by upgrading your project using NuGet. You will need to ensure the packages you are using are available in Umbraco 10. + +**SQL CE is no longer a supported database engine** + +There is no official migration path from SQL CE to another database engine. + +The following options may suit your needs: + +* Follow a community guide to migrate from a SQL CE database to SQL Server, like the [article by Jan Reilink](https://www.saotn.org/convert-sqlce-database-to-sql-server/) +* Setup a new database for v10 and use [uSync](https://jumoo.co.uk/usync/) to transfer document types and content across. +* Setup a new database for v10 and use a premium tool such as [redgate SQL Data Compare](https://www.red-gate.com/products/sql-development/sql-data-compare/) to copy database contents across. +* Setup a new database for v10 and use a premium tool such as [Umbraco Deploy](https://umbraco.com/products/umbraco-deploy) to transfer document types and content across. + +**Steps to upgrade using Visual Studio** + +It's recommended that you upgrade the site offline, and test the upgrade fully before deploying it to the production environment. + +1. Stop your site in IIS to prevent any changes being made to the database or filesystem while you are upgrading. +2. Open your Umbraco 9 project in Visual Studio. +3. Right-click on the project name in the Solution Explorer and select **Properties**. +4. Select **.NET 6.0** from the **Target Framework** drop-down. +5. Go to **Tools** > **NuGet Package Manager** > **Manage NuGet Packages for Solution...** +6. Go to the **Installed** tab in the NuGet Package manager. +7. Choose **Umbraco.Cms**. +8. Select **10.0.0** from the **Version** drop-down and click **Install** to upgrade your project to version 10. +9. Update `Program.cs` to the following: + +```csharp +public class Program +{ + public static void Main(string[] args) + => CreateHostBuilder(args) + .Build() + .Run(); + + // The calls to `ConfigureUmbracoDefaults` and `webBuilder.UseStaticWebAssets()` are new. + public static IHostBuilder CreateHostBuilder(string[] args) => + Host.CreateDefaultBuilder(args) + .ConfigureUmbracoDefaults() + .ConfigureWebHostDefaults(webBuilder => + { + webBuilder.UseStaticWebAssets(); + webBuilder.UseStartup(); + }); +} +``` + +10. Remove the following files and folders: + * `/wwwroot/umbraco` + * `/umbraco/PartialViewMacros` + * `/umbraco/UmbracoBackOffice` + * `/umbraco/UmbracoInstall` + * `/umbraco/UmbracoWebsite` + * `/umbraco/config/lang` + * `/umbraco/config/appsettings-schema.json` +11. If using Umbraco Forms, update your files and folders according to the [Upgrading - version specific](https://docs.umbraco.com/umbraco-forms/installation/version-specific) for version 10 article. +12. Restart your site in IIS, build and run your project to finish the installation of Umbraco 10. + +To re-enable the appsettings IntelliSense, you must update your schema reference in the `appsettings.json` file and any other `appsettings.{Environment}.json` files from: + +```json +"$schema": "./umbraco/config/appsettings-schema.json", +``` + +To: + +```json +"$schema": "./appsettings-schema.json", +``` + +To upgrade to Umbraco 10, your database needs to be at least on Umbraco 8.18. + +**Upgrade of any publicly hosted environment** + +When the upgrade is completed and tested, and prior to deploying to any publicly accessible environment, you should consider the following: + +1. Ensure you have backups for both the database and the file system. +2. Stop the site so it is not accessible during the upgrade process. +3. Delete the relevant folders from the filesystem prior to deploying: + * `/wwwroot/umbraco` + * `/umbraco/PartialViewMacros` + * `/umbraco/UmbracoBackOffice` + * `/umbraco/UmbracoInstall` + * `/umbraco/UmbracoWebsite` + * `/umbraco/config/lang` + * `/umbraco/config/appsettings-schema.json` +4. If you are using Umbraco Forms, update your files and folders according to the [Upgrading - version specific](https://docs.umbraco.com/umbraco-forms/installation/version-specific) for version 10 article. +5. Deploy the site how you normally would to your public facing environment. +6. Start the site. At this point it will launch and upgrade the database, after which the site should become accessible and your upgrade is complete. +7. Check the logs for any errors which may have occurred during the upgrade process. + +
+ +
+ +8.latest to 9 + +There is no direct upgrade path from Umbraco 8 to Umbraco 9. It is however possible to migrate from Umbraco 8 sites to Umbraco 9 sites. + +You can reuse your content by restoring your Umbraco 8 database into a new database used for an Umbraco 9 site. + +You need to ensure the packages you are using are available in Umbraco 9, and you will need to reimplement your custom code and templates. + +The direct upgrade path is not possible because the codebase has been fundamentally updated in Umbraco 9. The underlying web framework has been updated from ASP.NET to ASP.NET Core. + +It is not possible to take this step while maintaining full compatibility with Umbraco 8. + +
+ +
+ +8.0.0 to 8.1.0 + +There are a few breaking changes from 8.0.x to 8.1.0. Make sure to check the [full list](https://github.com/umbraco/Umbraco-CMS/issues?q=is%3Aissue+label%3Arelease%2F8.1.0+is%3Aclosed+label%3Acategory%2Fbreaking). + +**IPublishedContent breaking changes in 8.1.0** + +Due to the [changes in `IPublishedContent`](https://github.com/umbraco/Umbraco-CMS/issues/5170) there are a few steps you will need to take, to make sure that your site works. + +The `IPublishedContent` interface is central to Umbraco, as it represents published content and media items at the rendering layer level. This could be in controllers or views. In other words, it is the interface that is used everywhere when building sites. + +The introduction of multilingual support in version 8 required changes to the interface. For instance, a property value could be obtained with `GetPropertyValue(alias)` in version 7. Version 8 requires a new parameter for culture, and the call thus became `Value(alias, culture)`. + +In the excitement of the version 8 release, we assumed that `IPublishedContent` was "done". By our tests, everything was looking good. However, feedback from early testers showed that the interface was in some places odd or inconsistent or had issues. + +Fixing the bugs is a requirement. Some of the required bug fixes could not be achieved without introducing some breaking changes. + +At that point, we decided to give `IPublishedContent` some love. We fixed the bugs and made it clean, friendly, discoverable, and predictable for the entire life of version 8. + +Breaking changes to such a central interface is not something we take lightly. Even though they do not impact the "concepts" nor require heavy refactoring, they may demand an amount of small fixes here and there. + +The general idea underlying these changes is that: + +* The proper way to retrieve "something" from an `IPublishedContent` instance is always through a method, for example: `Children()`. And, when that method can be multilingual, the method accepts a `culture` parameter, which can be left `null` to get the "current" culture value. +* To reduce the amount of breaking changes, and to simplify things for non-multilingual sites, existing properties such as `document.Name` and `document.Children` (and others) still exist, and return the value for the current culture. In other words, these properties are now implemented as `document.Name => document.Name()` or `document.Children => document.Children()`. + +The rest of this document presents each change in details. + +**More interfaces** + +It was possible to mock and test the `IPublishedContent` interface in version 7. It has been improved in version 8, but it still relies on concrete `PublishedContentType` and `PublishedPropertyType` classes to represent the content types, which complicates things. + +In version 8.1, these two classes are abstracted as `IPublishedContentType` and `IPublishedPropertyType`, thus making `IPublishedContent` easier to mock and test. + +**CHANGE**: This impacts every method accepting or returning a content type. For instance, the signature of most `IPropertyValueConverter` methods changes. References to `PublishedContentType` must be replaced with references to `IPublishedContentType`. + +The following `IPublishedContent` members change: + +**Name** + +The `document.Name` property is complemented by the `document.Name(string culture = null)` extension method. The property returns the name for the current culture. The `document.GetCulture(...).Name` syntax is removed. + +**CHANGE**: Calls to `document.GetCulture(culture).Name` must be replaced with `document.Name(culture)`. + +**UrlSegment** + +The `document.UrlSegment` property is complemented by the `document.UrlSegment(string culture = null)` extension method. The property returns the Url segment for the current culture. The `document.GetCulture(...).UrlSegment` syntax is removed. + +**CHANGE**: Calls to `document.GetCulture(culture).UrlSegment` must be replaced with `document.UrlSegment(culture)`. + +**Culture** + +The `document.GetCulture()` method is removed. The proper way to get a culture date is `document.CultureDate(string culture = null)`. The `document.Cultures` property now returns the invariant culture, for invariant documents. + +**CHANGE**: Calls to `document.GetCulture(culture).Date` must be replaced with `document.CultureDate(culture)`. Calls to `document.Cultures` must take into account the invariant culture. + +**Children** + +The `document.Children` property is complemented by the `document.Children(string culture = null)` extension method which, when a culture is specified always return children available for the specified culture. The property returns the children available for the current culture. + +A new `document.ChildrenForAllCultures` property is introduced, which returns _all_ children, regardless of whether they are available for a culture or not. + +**CHANGE**: Calls to `document.Children` may have to be replaced by `document.ChildrenForAllCultures` depending on if the 8.0.x usage of this was relying on it returning unfiltered/all children regardless of the current routed culture. + +**Url** + +The `document.Url` property is complemented by the `document.Url(string culture = null, UrlMode mode = UrlMode.Auto)` extension method. The `document.GetUrl(...)` and `document.UrlAbsolute()` methods are removed. The `UrlProviderMode` enumeration is renamed `UrlMode`. + +**CHANGE**: Calls to `document.GetUrl(...)` must be replaced with `document.Url(...)`. Calls to `document.UrlAbsolute()` must be replaced with `document.Url(mode: UrlMode.Absolute)`. + +**UmbracoContext** + +Due to the `UrlProviderMode` enumeration being renamed `UrlMode`, the signature of some overloads of the `Url(...)` method has changed. Methods that do not have a mode parameter remain unchanged. + +**CHANGE**: Code such as `context.Url(1234, UrlProviderMode.Absolute)` must become `context.Url(1234, UrlMode.Absolute)`. + +The `UmbracoContext` class gives access to the rendering layer, which is more than a "cache". To reflect this, its `ContentCache` and `MediaCache` properties are renamed `Content` and `Media`. However, the old properties remain as obsolete properties. + +**CHANGE**: None required in 8.1, but code such as `context.ContentCache.GetById(1234)` should eventually be converted to `context.Content.GetById(1234)` as the obsolete properties may be removed in a further release. + +**GetCulture** + +Version 7 had a `document.GetCulture()` method that was deriving a culture from domains configured in the tree. Somehow, that method was lost during version 8 development (issue [#5269](https://github.com/umbraco/Umbraco-CMS/issues/5269)). + +Because that method is useful, especially when building traditional, non-multilingual sites, it has been re-introduced in version 8.1 as `document.GetCultureFromDomains()`. + +**CHANGE**: None. + +**DomainHelper** + +`DomainHelper` has been replaced with a static `DomainUtilities` class. + +**CHANGE**: It is rare that `DomainHelper` is used in code since it only contains one public method but if developers are using this, it can no longer be injected since it's now a static class called `DomainUtilities`. + +**Models Builder** + +If you're using ModelsBuilder in `dll` mode you need to delete the dlls before upgrading. Otherwise, they're going to be wrong and cause your whole site to throw errors. + +If you're using ModelsBuilder in `AppData` mode and you have your generated models in your solution you need to update them after upgrading. `PublishedContentType` will need to be replaced with `IPublishedContentType`. If you have an implementation of the `PropertyValueConverter` class, you need to replace all references to `PublishedPropertyType` with `IPublishedPropertyType` within that class. Only after you do that will your solution build again. + +**AutoMapper** + +Umbraco 8.1 replaces AutoMapper with [UmbracoMapper](../../../../reference/mapping.md). This in itself will not break anything on your site. If you have used AutoMapper in your own code you will have to either include the package yourself or switch your implementation to use UmbracoMapper. + +**Follow the** [**upgrade guide for Umbraco 8**](minor-upgrades-for-umbraco-8.md) **to complete the upgrade** + +
+ +
+ +7.latest to 8.0.0 + +There is no direct upgrade path from Umbraco 7 to Umbraco 8. It is however possible to migrate content from Umbraco 7 sites to Umbraco 8 sites. We have added content migrations in Umbraco 8.1.0 enabling you to migrate your content from Umbraco 7 to Umbraco 8. + +It is not possible to upgrade an Umbraco 7 site to Umbraco 8 because the codebase has been fundamentally updated in Umbraco 8. A lot of outdated code and technology has been removed and instead new, faster, and more secure technology has been implemented. + +In Umbraco 8 we have added improvements and updated dependencies. We have also done a thorough clean-up to make it simpler for you to work with and extend your Umbraco project. + +[**Migrate your content to Umbraco 8**](migrate-content-to-umbraco-8.md) + +
+ +
+ +7.6.3 to 7.7.0 + +Version 7.7.0 introduces User Groups, better user management, and security facilities. This means that anything to do with "User Types" no longer exists including APIs that work with User Types. If your code or any package's code refers to "User Type" APIs, you need to make changes to your code. In many cases, we've added backward compatibility for these scenarios and obsoleted APIs that should no longer be used. + +We are now by default using the e-mail address and not the username for the credentials. When trying to login to the backoffice you need to use the e-mail address as opposed to the username. If you do an upgrade from an older version and would like to keep using the username, change the `true` setting to **false**. + +For a full list of breaking changes see: [the list on the issue tracker](https://issues.umbraco.org/issues/?q=\&project=U4\&tagValue=\&release=7.7.0\&issueType=\&search=search) + +Version 7.7.2 no longer ships with the `CookComputing.XmlRpcV2` assembly. If you reference this assembly or have a package that requires this assembly, you need to copy it back into your website. + +This version also ships with far fewer client files that were only relevant for older versions of Umbraco (i.e. < 7.0.0). There might be some packages that were referencing these old client files. If you see missing image references you may need to contact the vendor of the package in question to update their references. + +Follow the [**upgrade guide for Umbraco 7**](minor-upgrades-for-umbraco-7.md) to complete the upgrade. + +
+ +
+ +7.6.0 to 7.6.3 + +In short: + +In Umbraco version 7.6.2 we made a mistake in the Property Value Converts (PVCs). This was corrected 2 days later in version 7.6.3. If you were having problems with querying the following Data Types on the frontend, make sure to upgrade to 7.6.3: + +* Multi Node Tree Picker +* Related Links +* Member Picker + +Depending on whether you tried to fix the problem with those, you will need to fix them after you upgrade to 7.6.3. + +**Property Value Converters (PVC)** + +Umbraco stores data for Data Types in different ways. For a lot of pickers it will store `1072` or `1083,1283`. These numbers refer to the identifier of the item in Umbraco. In the past, when building your templates, you would manually have to take that value and find the content item it belongs to. Then you would be able to get the data you wanted from there. An example of that is shown below: + +```csharp +@{ + IPublishedContent contactPage; + var contactPageId = Model.Content.GetPropertyValue("contactPagePicker"); + if (contactPageId > 0) + { + contactPage = Umbraco.TypedContent(contactPageId); + } +} + +

+ @contactPage.Name +

+``` + +In Umbraco 7.6.0, this is what you would do instead: + +```html +

+ @Model.ContactPagePicker.Name +

+``` + +This is possible using Models Builder and through the inclusion of [core property value converters](https://our.umbraco.com/projects/developer-tools/umbraco-core-property-value-converters/), a package by community member Jeavon Leopold. + +To not break everybody's sites (the results of queries are different when PVCs are enabled), we disabled these PVCs by default. + +Umbraco 7.6.0 also came with new pickers that store their data as a [UDI (Umbraco Identifier)](https://our.umbraco.com/Documentation/Reference/Querying/Udi). We wanted to simplify the use of these new pickers and by default we wanted PVC's to always be enabled for those pickers. + +We noticed that some new pickers also got their PVC's disabled when the configuration setting was set to false (`false`). + +To make everything consistent, we made sure that the UDI pickers would always use PVC's in 7.6.2, this however reversed the behavior. So when PVC's were enabled, the property would not be converted and when PVC's were disabled, the property would be converted after all. This is the exact opposite behavior of 7.6.2. + +So we have fixed this now in 7.6.3. + +This issue only affects: + +* Multi Node Tree Picker +* Related Links +* Member Picker + +Have you already upgraded to 7.6.2 and fixed queries for those three Data Types? Then you have to do that again in version 7.6.3. + +Follow the [**upgrade guide for Umbraco 7**](minor-upgrades-for-umbraco-7.md) to complete the upgrade. + +
+ +
+ +7.4.0 to 7.6.0 + +Find a list of all the breaking changes below and [a list of the items is also available on the tracker](http://issues.umbraco.org/issues/U4?q=Due+in+version%3A+7.6.0+Backwards+compatible%3F%3A+No+) + +The three most important things to note are: + +1. In web.config do not change `useLegacyEncoding` to `false` if it is currently set to `true` - changing the password encoding will cause you not being able to log in any more. +2. In umbracoSettings.config leave `EnablePropertyValueConverters` set to `false` - this will help your existing content queries to still work. +3. In tinyMceConfig.config make sure to remove `umbracolink` so that the rich text editor works as it should. + +**Breaking Changes** + +**Dependencies** + +**UrlRewriting.Net (**[**U4-9004**](https://issues.umbraco.org/issue/U4-9004)**)** + +`UrlRewriting` was old, leaking memory, and slowing down website startup when dealing with more than a few rules. It's entirely replaced by the [IIS Url Rewrite](https://www.iis.net/downloads/microsoft/url-rewrite) extension. + +**Json.Net (**[**U4-9499**](https://issues.umbraco.org/issue/U4-9499)**)** + +Json.Net has been updated to version 10.0.0 to benefit from improvements in features, fixes, and performances (see [release notes](https://github.com/JamesNK/Newtonsoft.Json/releases)). This might be a breaking change for people relying on one of the changed functionality. + +**Log4net (**[**U4-1324**](https://issues.umbraco.org/issue/U4-1324)**)** + +Umbraco has used a custom build of an old (1.2.11) version of log4net that supported Medium Trust. However, Umbraco itself does not support Medium Trust anymore, and therefore log4net has been upgraded to the standard, latest build of log4net 2.0.8. + +**ImageProcessor (**[**U4-8963**](https://issues.umbraco.org/issue/U4-8963)**)** + +An optional parameter has been added to the `GetCropUrl` method in order to support the background color parameter. This breaks the method signature and therefore might require a recompile of user's code. + +**HtmlAgilityPack (**[**U4-9655**](https://issues.umbraco.org/issue/U4-9655)**)** + +The HtmlAgilityPack has been upgraded to version 1.4.9.5. The Umbraco upgrade process should take care of setting up the binding redirects appropriately. + +**Core** + +**Membership Provider Encoding (**[**U4-6566**](https://issues.umbraco.org/issue/U4-6566)**)** + +The Membership Provider `useLegacyEncoding` setting is now `false` by default, as the legacy password encoding has weaknesses. + +This change only impacts new installs (no change for upgrades). + +**Property Value Converters (**[**U4-7318**](https://issues.umbraco.org/issue/U4-7318)**)** + +A large amount of property value converters contributed by the community have been merged in and are now the default value converters. These converters change the object types returned by `GetPropertyValue` for more convenient types. + +Instead of returning comma-separated string values like it did before, the `SliderValueConverter` now returns a `decimal` or a `Range` value that can be used directly in views. + +This change only impacts new installs (no change for upgrades). + +The new property value converters are controlled by an `umbracoSettings.config` setting. In the section `settings/content`, setting `EnablePropertyValueConverters` needs to be present and `true` to activate them. + +**Database (**[**U4-9201**](https://issues.umbraco.org/issue/U4-9201)**)** + +Umbraco has been using a PetaPoco-managed `UmbracoDatabase` instance since version 7 came out. We realized that some of our legacy code still bypassed that mechanism and used parallel, out-of-band database connections, causing issues with transactions. + +The legacy code has been refactored to rely on the `UmbracoDatabase` instance. However, because that database is disposed of during `EndRequest`, the code that ran after it has been disposed may not work anymore. This should then be updated to use either an `HttpModule` event that occurs before `EndRequest` or the new `UmbracoModule.EndRequest` event. + +More details are available on [issue 146](https://github.com/kipusoep/UrlTracker/issues/146) on the 301 Redirect Tracker GitHub issue tracker. + +**Scopes (**[**U4-9406**](https://issues.umbraco.org/issue/U4-9406)**)** + +Version 7.6 introduces the notion of _scopes_, which allow for wrapping multiple service-level operations in one single transaction. The scopes API is partially public. Scopes are not meant for public use at this stage and we need a few more releases to ensure that the APIs are stable. + +Scopes _should not_ change how Umbraco functions. + +Introducing scopes means that some public APIs signatures are changing. Most of these changes target internal and/or non-breaking APIs (as per our [guidelines](https://our.umbraco.com/Documentation/Development-Guidelines/breaking-changes)). This should therefore have no impact on sites but may break unit tests. + +**Property Editors storing UDI instead of ID (**[**U4-9310**](https://issues.umbraco.org/issue/U4-9310)**)** + +The property editors for pickers for content, media, members, and related links have been updated to store UDI instead of the node ID. Pickers in sites being upgraded have been marked as obsolete but will continue to work as they always did. + +New sites will have the obsolete pickers filtered out from the list of available property editors, but they can be enabled by a configuration flag. + +**Rich Text Editor (RTE) Images attributes (**[**U4-6228**](https://issues.umbraco.org/issue/U4-6228)**,** [**U4-6595**](http://issues.umbraco.org/issue/U4-6595)**)** + +For a long time, we had a `rel` attribute on an `` tag when inserted into the RTE. This is invalid HTML markup. We worked around this by stripping this attribute using a Property Editor Value converter. Some developers relied on this attribute so we didn't change it to a "data-id" attribute which would have been valid. In 7.6 we are not storing integer IDs in these attributes. Instead of storing UDI values so with this change we no longer use `rel` or `data-id` and instead there will be a "data-udi" attribute. This change should affect only a small amount of people that were previously relying on the values from the "rel" attribute. + +**Others** + +We are shipping with SignalR in the core at version 2.2.1. If you already have SignalR installed into your app and are using an older version there may be conflicts. + +The creation and editing of WebForms templates will no longer be supported as for version 7.6.0. + +**Upgrading via NuGet** + +This is an important one and there was no perfect solution to this. We have removed the UrlRewriting dependency and no longer ship with it. However, if you are using it we didn't want to have NuGet delete all of your rewrites. The good news is that if you are using it, the NuGet upgrade will not delete your rewrite file and everything should continue to work. + +However, if you are not using it, **you will get an error after upgrading. Here's how to fix it:** + +Since you aren't using UrlRewriting you will have probably never edited the UrlRewriting file. In this case, NuGet will detect that and remove it. However you will need to manually remove these UrlRewriting references from your `web.config`: + +```xml +
+``` + +and + +```xml + +``` + +Remove the following `httpModules` from your `web.config`: + +```xml + + + + ... + + +``` + +and + +```xml + + + + + ... + + +``` + +**Forms** + +Umbraco Forms 6.0.0 has been released to be compatible with Umbraco 7.6. It is a new major version release of Forms primarily due to the strict dependency on 7.6+. If you are using Forms, you will need to update it to version 6.0.0 + +There are [**important Forms upgrade documentation that you will need to read.**](https://docs.umbraco.com/umbraco-forms/installation/version-specific.md#version-4-to-version-6). + +**Courier** + +Umbraco Courier 3.1.0 has been released to be compatible with Umbraco 7.6. If you are using Courier, you will need to update it to version 3.1.0. + +**Follow the** [**upgrade guide for Umbraco 7**](minor-upgrades-for-umbraco-7.md) **to complete the upgrade** + +
+ +
+ +7.3.0 to 7.4.0 + +For manual upgrades: + +* Copy the new folder `~/App_Plugins/ModelsBuilder` into the site +* Do not forget to merge `~/Config/trees.config` and `~/Config/Dashboard.config` - they contain new and updated entries that are required to be there + * If you forget `trees.config` you will either not be able to browse the Developer section or you will be logged out immediately when trying to go to the developer section +* You may experience an error saying `Invalid object name 'umbracoUser'` - this can be fixed by [clearing your cookies on localhost](http://issues.umbraco.org/issue/U4-8031) + +Follow the [**upgrade guide for Umbraco 7**](minor-upgrades-for-umbraco-7.md) to complete the upgrade. + +
+ +
+ +7.2.0 to 7.3.0 + +Make sure to manually clear your cookies after updating all the files, otherwise you might an error relating to `Umbraco.Core.Security.UmbracoBackOfficeIdentity.AddUserDataClaims()`. The error looks like: `Value cannot be null. Parameter name: value`. + +NuGet will do the following for you. If you're upgrading manually make sure to also: + +* Delete `bin/Microsoft.Web.Helpers.dll` +* Delete `bin/Microsoft.Web.Mvc.FixedDisplayModes.dll` +* Delete `bin/System.Net.Http.dll` +* Delete `bin/System.Net.Http.*.dll` (all dll files starting with `System.Net.Http`) **except** for `System.Net.Http.Formatting.dll` +* Delete `bin/umbraco.XmlSerializers.dll` +* Add this in the `appSetting` section of your `web.config` file: `` + +Other considerations: + +* WebApi has been updated, normally you don’t have to do anything unless you have custom webapi configuration: + * See this article if you are using `WebApiConfig.Register`: [https://www.asp.net/mvc/overview/releases/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and-web-api-2](https://www.asp.net/mvc/overview/releases/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and-web-api-2) + * You need to update your `web.config` file to have the correct WebApi version references - this should be done by doing a compare/merge of your `~/web.config` file with the `~/web.config` file in the release +* MVC has been updated to MVC5 + * You need to update your `web.config` file to have the correct MVC version references - this should be done by doing a compare/merge of your `~/web.config` file with the `~/web.config` file in the release + * The upgrader will take care of updating all other web.config’s (in all other folders, for example, the `Views` and `App_Plugins` folders) to have the correct settings + * For general ASP.NET MVC 5 upgrade details see: [https://www.asp.net/mvc/overview/releases/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and-web-api-2](https://www.asp.net/mvc/overview/releases/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and-web-api-2) +* It is not required that you merge the changes for the Examine index paths in the ExamineIndex.config file. However, if you do, your indexes will be rebuilt on startup because Examine will detect that they don’t exist at the new location. +* It's highly recommended to clear the browser cache - the ClientDependency version is automatically bumped during installation which should force the browser cache to refresh, however in some edge cases this might not be enough. + +Follow the [**upgrade guide for Umbraco 7**](minor-upgrades-for-umbraco-7.md) to complete the upgrade. + +
+ +
+ +7.1.0 to 7.2.0 + +* Copy in the `/Views/Partials/Grid` (contains Grid rendering views). + +Follow the [**upgrade guide for Umbraco 7**](minor-upgrades-for-umbraco-7.md) to complete the upgrade. + +
+ +
+ +7.0.2 to 7.1.0 + +* Remove the `/Install` folder. + +Follow the [**upgrade guide for Umbraco 7**](minor-upgrades-for-umbraco-7.md) to complete the upgrade. + +
+ +
+ +7.0.1 to 7.0.2 + +* There was an update to the `/umbraco/config/create/ui.xml` which needs to be manually updated. The original element had this text: + +```xml + +
User
+ /create/simple.ascx + + + + +
+``` + +* The `usercontrol` value has changed to: `/create/user.ascx`. This is a required change otherwise creating a new user will not work. +* There is a breaking change to be aware of, full details can be found [here](https://umbraco.com/blog/heads-up-breaking-change-coming-in-702-and-62/). + +Follow the [**upgrade guide for Umbraco 7**](minor-upgrades-for-umbraco-7.md) to complete the upgrade. + +
+ +
+ +7.0.0 to 7.0.1 + +* Remove all uGoLive dlls from `/bin` + * These are not compatible with V7 +* Move `appSettings/connectionStrings` back to `web.config` + * If you are on 7.0.0 you should migrate these settings into the web.config instead of having them in separate files in `/config/` + * The keys in `config/AppSettings.config` need to be moved back to the web.config `` section and similarly, the `config/ConnectionStrings.config` holds the Umbraco database connections in v7.0.0 and they should be moved back to the web.config `` section. + * `/config/AppSettings.config` and `/config/ConnectionString.config` can be removed after the contents have been moved back to `web.config`. +* Delete all files in `~/App_Data/TEMP/Razor/` + * Related to issues with razor macros + +Follow the [**upgrade guide for Umbraco 7**](minor-upgrades-for-umbraco-7.md) to complete the upgrade. + +
+ +
+ +6.latest to 7 + +Read and follow [the full v7 upgrade guide](minor-upgrades-for-umbraco-7.md) + +
+ +
+ +4.latest to 6 + +* If your site was ever a version between 4.10.0 and 4.11.4 and you have upgraded to 6.0.0 install the [fixup package](https://our.umbraco.com/projects/developer-tools/path-fixup) and run it after the upgrade process is finished. +* The DocType Mixins package is **not** compatible with v6+ and will cause problems in your Document Types. + +
+ +
+ +Version 4 + +**Version 4.10.x to 4.11.x** + +* If your site was ever a version between 4.10.0 and 4.11.4 install the [fixup package](https://our.umbraco.com/projects/developer-tools/path-fixup) and run it after the upgrade process is finished. + +**Version 4.8.0 to 4.10.0** + +* Delete the `bin/umbraco.linq.core.dll` file +* Copy the new files and folders from the zip file into your site's folder + * `/App_Plugins` + * `/Views` + * `Global.asax` +* Remove the `Config/formHandlers.config` file + +**Version 4.7.2 to 4.8.0** + +* Delete the `bin/App_Browsers.dll` file +* Delete the `bin/App_global.asax.dll` file +* Delete the `bin/Fizzler.Systems.HtmlAgilityPack.dll` file +* For people using uComponents 3.1.2 or below, 4.8.0 breaks support for it. Either upgrade to a newer version beforehand or follow the workaround [posted here](https://our.umbraco.com/projects/backoffice-extensions/ucomponents/questionssuggestions/33021-Upgrading-to-Umbraco-48-breaks-support-for-uComponents) + +**Version 4.7.1.1 to 4.7.2** + +* Delete the `bin/umbraco.MacroEngines.Legacy.dll` file + +**Version 4.6.1 to 4.7.1.1** + +* Delete `bin/Iron*.dll` (all dll files starting with "Iron") +* Delete `bin/RazorEngine*.dll` (all dll files starting with "RazorEngine") +* Delete `bin/umbraco.MacroEngines.Legacy.dll` +* Delete `bin/Microsoft.Scripting.Debugging.dll` +* Delete `bin/Microsoft.Dynamic.dll` + +
diff --git a/14/umbraco-cms/reference/security/README.md b/14/umbraco-cms/reference/security/README.md index 5da7beb8b2a..6b63681a13e 100644 --- a/14/umbraco-cms/reference/security/README.md +++ b/14/umbraco-cms/reference/security/README.md @@ -4,10 +4,6 @@ description: >- options and configuring how authentication & authorization works in Umbraco --- -{% hint style="warning" %} -This page is a work in progress. It will be updated as the software evolves. -{% endhint %} - # Security In this article, you will find everything you need regarding security within Umbraco. From 619bbad77e37f548f2cda2ee139f6b6027c149f1 Mon Sep 17 00:00:00 2001 From: "Alina-Magdalena Tincas (Umbraco HQ)" Date: Wed, 29 May 2024 08:32:43 +0200 Subject: [PATCH 2/3] adding v14 to the list --- 14/umbraco-cms/fundamentals/setup/upgrading/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/14/umbraco-cms/fundamentals/setup/upgrading/README.md b/14/umbraco-cms/fundamentals/setup/upgrading/README.md index 0dc42f9487b..048702a163f 100644 --- a/14/umbraco-cms/fundamentals/setup/upgrading/README.md +++ b/14/umbraco-cms/fundamentals/setup/upgrading/README.md @@ -56,6 +56,7 @@ Use the table below to determine which .NET version to upgrade to when going thr | CMS version | .NET version | | ----------- | ------------ | +| 14 | 8.0 | | 13 | 8.0 | | 12 | 7.0 | | 11 | 7.0 | From 5fd58876419b920e6df1ecc5947b21e5c03941b4 Mon Sep 17 00:00:00 2001 From: "Alina-Magdalena Tincas (Umbraco HQ)" Date: Wed, 29 May 2024 08:40:43 +0200 Subject: [PATCH 3/3] add warning notes for all docs --- 14/umbraco-deploy/README.md | 6 +++++- 14/umbraco-forms/README.md | 6 +++++- 14/umbraco-ui-builder/README.md | 4 ++++ 14/umbraco-workflow/README.md | 6 +++++- 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/14/umbraco-deploy/README.md b/14/umbraco-deploy/README.md index 444e868e5d6..8e916c2d0c7 100644 --- a/14/umbraco-deploy/README.md +++ b/14/umbraco-deploy/README.md @@ -4,11 +4,15 @@ description: Documentation on how to work with Umbraco Deploy. # What is Umbraco Deploy? +{% hint style="warning" %} +This documentation is a work in progress and may undergo further revisions, updates, or amendments. The information contained herein is subject to change without notice. +{% endhint %} + Umbraco Deploy is a deployment tool that helps you with the process of transferring code and data between multiple environments. Deploy can be configured for many different setups and is great for both small setups as well as large and more complex infrastructures.
Set up Umbraco DeployLearn how you can set up Umbraco Deploy on new and existing Umbraco projects.update.pnginstallation/install-configure.md
Deployment workflow inLearn about how the Deployment workflow in Umbraco Deploy work.lightbulb.pngdeployment-workflow
UpgradingLearn how you can upgrade Umbraco Deploy.code_cursor.pngupgrades
-{% embed url="https://www.youtube-nocookie.com/embed/Fqfc-UL4q5U" %} +{% embed url="" %} Umbraco Deploy Overview {% endembed %} diff --git a/14/umbraco-forms/README.md b/14/umbraco-forms/README.md index 7d1e75d2605..480ee228ee5 100644 --- a/14/umbraco-forms/README.md +++ b/14/umbraco-forms/README.md @@ -6,13 +6,17 @@ description: >- # Umbraco Forms Documentation +{% hint style="warning" %} +This documentation is a work in progress and may undergo further revisions, updates, or amendments. The information contained herein is subject to change without notice. +{% endhint %} + Umbraco Forms is a tool that lets you build forms of all shapes and sizes and put them on your Umbraco websites. Build forms using a long list of elements like multiple choice, dropdowns, text areas and checkboxes. Choose between a series of different workflow and control what happens once a form has been submitted. [Purchase Umbraco Forms](https://umbraco.com/products/umbraco-forms/) or sign up for an [Umbraco Cloud](https://try.umbraco.com/) project where Umbraco Forms is part of the package.
Installing Umbraco FormsInstall Umbraco Forms in a few steps.install.md_packageBlog_post_for_com_900x400px.png
Creating a FormCreate new Forms and add them to your Umbraco site in minutes.creating-a-formBlog_post_for_com_900x400px_1_8_7_.png
Preparing your FrontendEnsure you have the necessary client dependencies before adding a Form to your site.prepping-frontend.mdUmbraco 9.3RC- Blog_post_for_com_900x400px_1@2x-80.jpg
-{% embed url="https://www.youtube-nocookie.com/embed/3Aojbp_1MPc" %} +{% embed url="" %} ## Quick Links diff --git a/14/umbraco-ui-builder/README.md b/14/umbraco-ui-builder/README.md index fc13e9cb26e..e3b121dec7d 100644 --- a/14/umbraco-ui-builder/README.md +++ b/14/umbraco-ui-builder/README.md @@ -4,6 +4,10 @@ description: Documentation for Umbraco UI Builder, the backoffice UI builder for # Umbraco UI Builder Documentation +{% hint style="warning" %} +This documentation is a work in progress and may undergo further revisions, updates, or amendments. The information contained herein is subject to change without notice. +{% endhint %} + Umbraco UI Builder is the Umbraco v10+ backoffice UI builder for custom data structures configured via a fluent API. ![Example Umbraco UI Builder UI](images/comments_listview.png) diff --git a/14/umbraco-workflow/README.md b/14/umbraco-workflow/README.md index 78abc1f0795..a95cc4e6eba 100644 --- a/14/umbraco-workflow/README.md +++ b/14/umbraco-workflow/README.md @@ -5,13 +5,17 @@ description: Documentation on how to work with Umbraco Workflow in just a few st # Umbraco Workflow Documentation +{% hint style="warning" %} +This documentation is a work in progress and may undergo further revisions, updates, or amendments. The information contained herein is subject to change without notice. +{% endhint %} + Umbraco Workflow allows the creation of multi-stage approval workflows when writing and publishing content. Umbraco Workflow extends Umbraco's out-of-the-box publishing model with multi-stage and configurable approval workflows. A workflow process comprises multiple steps and multiple users assigned to the group responsible for providing approval at each step. [Learn more or purchase Umbraco Workflow to get all the features and support.](https://umbraco.com/products/umbraco-workflow/)
Installing Umbraco WorkflowInstall Umbraco Workflow in a few steps./installation/installing-workflow.mdumbraco-workflow-1.png
Content Approval Workflows for UmbracoAllows you to design the approval process to fit your organizationapproval-groups.mdCommunity.png
Workflow Section OverviewApproving, rejecting, content reviews, and scheduling workflows are natural additions to the existing toolbox.workflow-section-dashboard.mdDocumentation_blogpost_styleguide_b (1) (1).png
-{% embed url="https://www.youtube-nocookie.com/embed/jFWYZUiQPv8" %} +{% embed url="" %} Umbraco Workflow Overview {% endembed %}