Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
169 changes: 165 additions & 4 deletions 17/umbraco-cms/fundamentals/setup/upgrading/version-specific/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,167 @@ Use the [general upgrade guide](../) to complete the upgrade of your project.

<details>

<summary>Umbraco 17</summary>

**System dates are updated to UTC**

In earlier versions of Umbraco, system dates have been primarily persisted as server time without timezone information, with some stored as UTC. With Umbraco 17, system dates are now always stored in UTC.

To ensure that existing stored system dates align, a migration will run when upgrading to Umbraco 17.

The migration consists of:
- Determining the current timezone for the server.
- If a time zone is detected and it is not already UTC, database queries will update all system dates previously stored as server time to UTC.

There is configuration available to customize this migration.

Adding the following configuration setting will disable the migration from running.

```json
"Umbraco": {
"CMS": {
"SystemDateMigration": {
"Enabled": false
}
}
}
```

You can also explicitly define the timezone for your server. If this is provided as the standard English name of the timezone, it will be used over the detected one.

```json
"Umbraco": {
"CMS": {
"SystemDateMigration": {
"LocalServerTimeZone": "Eastern Standard Time"
}
}
}
```

Progress of the migration is written to the Umbraco log file.

For more details on this update see the following PRs: [#19705](https://github.com/umbraco/Umbraco-CMS/pull/19705), [#19798](https://github.com/umbraco/Umbraco-CMS/pull/19798), and [#20112](https://github.com/umbraco/Umbraco-CMS/pull/20112).

**InMemoryAuto models builder and razor runtime compilation has moved into its own package**

InMemoryAuto models builder has been moved into a new package `Umbraco.Cms.DevelopmentMode.Backoffice` along with the reference to `Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation` and associated code.

This change has been made due to the [obsoletion of Razor run-time compilation in .NET](https://learn.microsoft.com/en-us/dotnet/core/compatibility/aspnet-core/10/razor-runtime-compilation-obsolete). InMemoryAuto depends on Razor run-time compilation, and Razor run-time compilation is not compatible with hot reload. This means that as long as InMemoryAuto exists in the codebase, we cannot enable hot reload. To enable working towards hot reload being the default developer experience, we have moved InMemoryAuto into its own package.

If you use InMemoryAuto models builder, or rely Razor runtime compilation in editing templates via the backoffice, you need to reference the `Umbraco.Cms.DevelopmentMode.Backoffice` package.

If you use the RoslynCompiler class in Umbraco, you need to reference the `Umbraco.Cms.DevelopmentMode.Backoffice` package and update your namespace usings.

If you use the `ModelsMode` enum or its extension methods, you instead need to use the strings in `Constants.ModelsBuilder.ModelsModes`.

For new projects, this reference is added automatically if the `--models-mode`, is set to the default of InMemoryAuto, otherwise it won't.

For more details on this update see the following PR: [#20187](https://github.com/umbraco/Umbraco-CMS/pull/20187).

**Date Picker Property Editor Kind**

The existing date picker that returns a `DateTime` object has been updated to provide one with a `Kind` of `Unspecified`. Previously, it was `UTc`, but this was incorrect because Umbraco cannot determine the intended use of a particular date picker. This update makes that explicit.

For more details on this update see the following PR: [#19727](https://github.com/umbraco/Umbraco-CMS/pull/19727).

**Color Picker Property Editor**

The color picker property editor used for the built-in approved color Data Type will now always make available a `PickedColor` object. Previously this was only output when labels were configured on the Data Type. Without labels the previous behavior was to expose a `string`.

For more details on this update see the following PR: [#19430](https://github.com/umbraco/Umbraco-CMS/pull/19430).

**Segmented Content Fallback**

The template and delivery API output segmented properties will perform an explicit fallback to the default segment, if they do not have a value.

In earlier versions, if you created a segmented version of a document, you had to complete every property. This made segments an editorial burden unless the behavior was customized. With the new behavior, segmented content now only needs to have the properties that require a segmented value completed.

For more details on this update see the following PR: [#20309](https://github.com/umbraco/Umbraco-CMS/pull/20309).

**Removal of Extension Methods**

Extension and public helper methods, unused in Umbraco and obsolete in previous versions, have been removed.

These are:

- `GetAssemblyFile`
- `ToSingleItemCollection`
- `GenerateDataTable`, `CreateTableData`, `AddRowData`, `ChildrenAsTable`, `ChildrenAsTable` all related to `DataTable`
- `RetryUntilSuccessOrTimeout`
- `RetryUntilSuccessOrMaxAttempts`
- `HasFlagAny`
- `Deconstruct`
- `AsEnumerable`, `ContainsKey` and `GetValue` extending `NameValueCollection`
- `DisposeIfDisposable`
- `SafeCast`
- `ToDictionary` on `object`
- `SanitizeThreadCulture`

For more details on this update see the following PR: [#17051](https://github.com/umbraco/Umbraco-CMS/pull/17051).

**Tiptap external extensions package**

The import namespace `@umbraco-cms/backoffice/external/tiptap` has been removed, replaced with `@umbraco-cms/backoffice/tiptap`.

This means backoffice extension code must be updated from:

```Typescript
import { Editor } from '@umbraco-cms/backoffice/external/tiptap';
```

To:

```Typescript
import { Editor } from '@umbraco-cms/backoffice/tiptap';
```

For more details on this update see the following PR: [#20256](https://github.com/umbraco/Umbraco-CMS/pull/20256).

**Client-side user related entities**

The following components have been moved from `user` to `current-user` and exported.

- `UmbCurrentUserAllowMfaActionCondition`
- `UmbCurrentUserConfigRepository`
- `UmbCurrentUserConfigStore`
- `UMB_CURRENT_USER_CONFIG_STORE_CONTEXT`

They should now be imported from `@umbraco-cms/backoffice/current-user`.

For more details on this update see the following PR: [#20125](https://github.com/umbraco/Umbraco-CMS/pull/20125).

**URL provider updates**

URL providers are now responsible for generating content preview URLs. To achieve this, the `IUrlProvider` interface has been extended with the `GetPreviewUrlAsync()` method.

The `IUrlProvider` interface must also provide a system-wide unique `Alias`.

Lastly, the `UrlInfo` class has been revamped to support this setup.

For more details on this update see the following PR: [#20021](https://github.com/umbraco/Umbraco-CMS/pull/20021).

See also this announcement: [#27](https://github.com/umbraco/Announcements/issues/27).

**Updated dependencies**

As is usual for a major upgrade, Umbraco’s dependencies have been updated to their latest compatible versions.

NPoco was updated by a major version from 5.7.1 to 6.1.0. There were some changes to Umbraco code necessary after this update, so customer projects or packages that use NPoco directly may also require some change.

The other specific dependency updates made for Umbraco 17 for server and client-side libraries can be found in these PRs:

- [#20385](https://github.com/umbraco/Umbraco-CMS/pull/20385)
- [#20184](https://github.com/umbraco/Umbraco-CMS/pull/20184)

**Other breaking changes**

The full details of breaking changes can be found from [this list of labelled PRs](https://github.com/umbraco/Umbraco-CMS/pulls?q=is:pr+label:category/breaking+is:closed+label:release/17.0.0).

</details>

<details>

<summary>Umbraco 16</summary>

**TinyMCE is removed**
Expand Down Expand Up @@ -115,7 +276,7 @@ Below you can find the list of breaking changes introduced in Umbraco 14 CMS.

* [**AngularJS removed: A new backoffice built with Web Components, Lit, and fueled by the Umbraco UI Library**](https://github.com/umbraco/Umbraco.CMS.Backoffice)

This is by far the most impactful update of Umbraco in years. We’ve fundamentally changed the way you extend Umbraco. If you are experienced in developing Web Components you can now use your preferred framework for this. If you are unsure how to proceed, you can implement it with Typescript and the Lit library like we’ve done. In this case, please start with this article on how to [customize the Backoffice](https://docs.umbraco.com/umbraco-cms/customizing/overview).
This is by far the most impactful update of Umbraco in years. We’ve fundamentally changed the way you extend Umbraco. If you are experienced in developing Web Components you can now use your preferred framework for this. If you are unsure how to proceed, you can implement it with TypeScript and the Lit library like we’ve done. In this case, please start with this article on how to [customize the Backoffice](https://docs.umbraco.com/umbraco-cms/customizing/overview).

The new Backoffice (Bellissima) is entirely built on the Umbraco UI Library. This means that you might experience some of your components not being rendered on the page because the name has been changed. You should be able to find equivalents to what you were used to. For example, the `umb-button` is now called `uui-button`, and `umb-box` is now `uui-box`. When extending the Backoffice, we encourage you to use our [Umbraco UI Library](https://uui.umbraco.com/) to ensure the same look and feel in your extensions. The UI Library is Open Source and [hosted on GitHub](https://github.com/umbraco/Umbraco.UI), so feel free to contribute with new components or raise issues or discussions.

Expand Down Expand Up @@ -1101,7 +1262,7 @@ Remove `u.UseInstallerEndpoints();` from the `program.cs` file to avoid issues w

**Update code using Angular JS**

Angular JS has been removed in Umbraco 14. If you have extended your Umbraco project using Angular JS, it must be updated. for more information read the [Customize Backoffice](../../../../customizing/extend-and-customize-editing-experience.md) documentation.
Angular JS has been removed in Umbraco 14. If you have extended your Umbraco project using Angular JS, it must be updated. for more information read the [Customize Backoffice](../../../../extending/build-on-umbraco-functionality.md) documentation.

**Deprecated property editors**

Expand Down Expand Up @@ -1440,7 +1601,7 @@ This is possible using Models Builder and through the inclusion of [core propert

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.
Umbraco 7.6.0 also came with new pickers that store their data as a [UDI (Umbraco Identifier)](https://docs.umbraco.com/umbraco-cms/reference/querying/udi-identifiers). 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 (`<EnablePropertyValueConverters>false</EnablePropertyValueConverters>`).

Expand Down Expand Up @@ -1591,7 +1752,7 @@ and

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).
There are [**important Forms upgrade documentation that you will need to read.**](https://github.com/umbraco/UmbracoDocs/blob/umbraco-eol-versions/11/umbraco-forms/installation/version-specific.md).

**Courier**

Expand Down