Skip to content

Migrations: Run unattended upgrades in background, add liveness/readiness health probes (closes #21987)#22020

Merged
AndyButland merged 15 commits intomainfrom
v17/improvement/run-unattended-upgrades-in-background
Mar 10, 2026
Merged

Migrations: Run unattended upgrades in background, add liveness/readiness health probes (closes #21987)#22020
AndyButland merged 15 commits intomainfrom
v17/improvement/run-unattended-upgrades-in-background

Conversation

@AndyButland
Copy link
Copy Markdown
Contributor

@AndyButland AndyButland commented Mar 5, 2026

Description

This PR looks to address the proposal outlined in #21987.

When UpgradeUnattended: true is configured and database migrations are needed, migrations previously ran synchronously inside BootUmbracoAsync() — before the HTTP server bound any port. This could cause the hosting platform to consider the web application down and kill the process. IIS for example has a default 120-second start-up timeout. For most migrations this is plenty, but there are some, in particular going to some majors, that will take longer than this on large websites.

This PR moves migration execution into a BackgroundService so BootUmbracoAsync() returns quickly, The web server will start accepting connections immediately, and the application can serve health probe responses and maintenance pages while migrations run in the background.

Changes

New runtime states

A new value added to RuntimeLevel: Upgrading — unattended upgrade is running in the background; HTTP server is up

Background migration service (UnattendedUpgradeBackgroundService)

This is a new BackgroundService that takes over the migration sequence previously handled inline during start up when UpgradeUnattended: true. It replicates the full notification sequence (premigrations → post-premigrations → unattended upgrade) that we had before, then initialises components and fires the application-started lifetime events.

Health probes

Two new endpoints, available in every hosting configuration (registered in Umbraco.Web.Common):

Endpoint Behaviour
GET /umbraco/api/health/live Always 200 if the process is responding — no checks run
GET /umbraco/api/health/ready 200 when RuntimeLevel.Run; 503 Degraded otherwise

Both are anonymous and bypass the maintenance-page reroute.

HTTP behaviour during Upgrading

Surface Behaviour
Website (front-end) Returns HTTP 503 with the new Upgrading.cshtml view (configurable via Umbraco:CMS:Global:UpgradingViewPath)
Surface controllers Returns 503 with the new Upgrading.cshtml view
Backoffice Returns screen indicating that an upgrade is in progress
Management API Returns JSON ProblemDetails HTTP 503
Delivery API Returns JSON ProblemDetails HTTP 503

Testing

Automated

Various unit tests have been added to verify both the new behaviour and fix coverage gaps for files changed in existing behaviour.

Manual

Preparation

A slow migration is useful for holding the application in Upgrading long enough to verify each surface. Create a temporary migration:

internal sealed class SlowTestMigration : AsyncMigrationBase
{
    public SlowTestMigration(IMigrationContext context) : base(context) { }

    protected override async Task MigrateAsync()
    {
        Logger.LogInformation("SlowTestMigration: starting 60-second delay...");
        await Task.Delay(TimeSpan.FromSeconds(60));
        Logger.LogInformation("SlowTestMigration: delay complete.");
    }
}

Register it in UmbracoPlan.cs after the last migration:

To<SlowTestMigration>("{A1B2C3D4-E5F6-7890-ABCD-EF1234567890}");

Set UpgradeUnattended: true in appsettings.json:

"Umbraco": {
  "CMS": {
    "Unattended": {
      "UpgradeUnattended": true
    }
  }
}

Test: Unattended upgrade

Start the application. Within the first 60 seconds (while the migration is running):

  • GET /umbraco/api/health/live200 Healthy
  • GET /umbraco/api/health/ready503 Degraded (body contains "Umbraco is not yet ready")
  • GET / (or any front-end page) → 503 with Upgrading.cshtml content (see screenshot below)
  • GET /umbraco (backoffice) → custom backoffice page for maintenance (see screenshot below)
  • GET /umbraco/management/api/v1/manifest/manifest/public503 JSON ProblemDetails ("The application is currently being upgraded")
  • GET /umbraco/delivery/api/v1/content503 JSON ProblemDetails
  • Any surface controller endpoint → 503 with Upgrading.cshtml content

After the 60-second delay completes:

  • GET /umbraco/api/health/ready200 Healthy
  • GET / → normal front-end content
  • GET /umbraco → backoffice loads normally
  • GET /umbraco/management/api/v1/manifest/manifest/public → normal JSON response
Screenshots
image image

Test: Attended upgrade path unchanged

Set UpgradeUnattended: false. Roll back the migration using the following SQL:

update umbracoKeyValue
set value = '{B8C9D0E1-F2A3-4B5C-8D7E-9F0A1B2C3D4E}'
where [key] = 'Umbraco.Core.Upgrader.State+Umbraco.Core'

Start the application.

  • Backoffice shows the upgrade screen at /umbraco as before
  • No regressions in attended upgrade behaviour

Test: Custom upgrading view

Add to appsettings.json:

"Umbraco": {
  "CMS": {
    "Global": {
      "UpgradingViewPath": "~/Views/MyUpgrading.cshtml"
    }
  }
}

Create Views/MyUpgrading.cshtml with custom content.

Again set UpgradeUnattended: true and roll back the migration.

Start the application.

Documentation

We should document the new healthchecks.

Copilot AI review requested due to automatic review settings March 5, 2026 12:20
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR moves unattended Umbraco upgrade migrations from synchronous startup execution (which caused IIS ANCM/Kubernetes timeout issues) to a BackgroundService, allowing the HTTP server to start immediately and respond to health probes during migration.

Changes:

  • Adds two new RuntimeLevel values (Upgrading, UpgradeFailed) and a new UnattendedUpgradeBackgroundService that runs migrations after HTTP server startup
  • Adds liveness (/umbraco/api/health/live) and readiness (/umbraco/api/health/ready) endpoints via ASP.NET Core health checks
  • Updates MaintenanceModeActionFilterAttribute, BootFailedMiddleware, routing, and controller base classes to handle the new Upgrading/UpgradeFailed states

Reviewed changes

Copilot reviewed 33 out of 33 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
src/Umbraco.Core/RuntimeLevel.cs Adds Upgrading=4 and UpgradeFailed=5 enum values
src/Umbraco.Infrastructure/Runtime/RuntimeState.cs Sets Upgrading instead of Run when unattended upgrades are pending
src/Umbraco.Infrastructure/Runtime/CoreRuntime.cs Returns early for Upgrading state (background service takes over)
src/Umbraco.Infrastructure/Install/UnattendedUpgradeBackgroundService.cs New background service running migration sequence
src/Umbraco.Core/Extensions/RuntimeStateExtensions.cs Allows Upgrading level in RunUnattendedBootLogic()
src/Umbraco.Core/Configuration/Models/GlobalSettings.cs Adds UpgradingViewPath setting
src/Umbraco.Web.Common/ActionsResults/MaintenanceResult.cs Accepts optional view path parameter
src/Umbraco.Web.Common/Controllers/MaintenanceModeActionFilterAttribute.cs Handles Upgrading; made public; returns JSON ProblemDetails for API controllers
src/Umbraco.Web.Common/Middleware/BootFailedMiddleware.cs Handles UpgradeFailed with static 503 page
src/Umbraco.Web.Common/HealthChecks/UmbracoReadinessHealthCheck.cs New ASP.NET Core readiness check
src/Umbraco.Web.Common/Extensions/ApplicationBuilderExtensions.cs Registers health probe endpoints; adds BootFailedMiddleware to normal boot path
src/Umbraco.Web.Common/DependencyInjection/UmbracoBuilderExtensions.cs Registers UmbracoReadinessHealthCheck
src/Umbraco.Web.Website/Routing/EagerMatcherPolicy.cs Routes Upgrading to maintenance page
src/Umbraco.Web.Website/Routing/UmbracoRouteValueTransformer.cs Early return for Upgrading state
src/Umbraco.Web.Website/Routing/FrontEndRoutes.cs Includes Upgrading in route creation check
src/Umbraco.Web.Website/Controllers/SurfaceController.cs Adds [MaintenanceModeActionFilter]
src/Umbraco.Cms.Api.Management/Controllers/ManagementApiControllerBase.cs Adds [MaintenanceModeActionFilter]
src/Umbraco.Cms.Api.Delivery/Controllers/DeliveryApiControllerBase.cs Adds [MaintenanceModeActionFilter]
src/Umbraco.Cms.Api.Management/Routing/BackOfficeAreaRoutes.cs Includes Upgrading in route creation
src/Umbraco.Cms.Api.Management/Routing/PreviewRoutes.cs Includes Upgrading in route creation
src/Umbraco.Infrastructure/Persistence/Repositories/Implement/UserRepository.cs Includes Upgrading in upgrade-state checks
src/Umbraco.Infrastructure/Persistence/Repositories/Implement/AuditEntryRepository.cs Includes Upgrading in upgrade-state check
src/Umbraco.Infrastructure/Security/BackOfficeUserStore.cs Includes Upgrading in upgrade-state check
src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.CoreServices.cs Registers UnattendedUpgradeBackgroundService as hosted service
src/Umbraco.Infrastructure/Runtime/RuntimeState.cs Sets Upgrading for unattended upgrade/package migration cases
src/Umbraco.Web.UI.Client/src/packages/core/backend-api/types.gen.ts Adds UPGRADING/UPGRADE_FAILED to frontend enum
src/Umbraco.Web.UI.Client/src/apps/app/app.element.ts Handles Upgrading state in frontend app
src/Umbraco.Cms.Api.Management/OpenApi.json Adds new enum values to OpenAPI spec
src/Umbraco.Cms.StaticAssets/umbraco/UmbracoWebsite/Upgrading.cshtml New maintenance view for upgrading state
Test files New unit tests for new components and behavior

@AndyButland AndyButland changed the title Improvement: Run unattended upgrades in background, add liveness/readiness health probes Migrations: Run unattended upgrades in background, add liveness/readiness health probes (closes #21987) Mar 5, 2026
@AndyButland AndyButland added the status/needs-docs Requires new or updated documentation label Mar 5, 2026
Copy link
Copy Markdown
Contributor

@Migaroez Migaroez left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Backend LGTM, added small comment on the tests.

Copy link
Copy Markdown
Contributor

@Migaroez Migaroez left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, fine to merge in as soon as we get a front end look at the small change and the backoffice tests pass

Copy link
Copy Markdown
Contributor

@iOvergaard iOvergaard left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From a FE perspective, this looks good so far, just two minor things.

AndyButland and others added 2 commits March 10, 2026 10:09
Co-authored-by: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
Copy link
Copy Markdown
Contributor

@iOvergaard iOvergaard left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FE - LGTM

@AndyButland
Copy link
Copy Markdown
Contributor Author

Docs PR is here: umbraco/UmbracoDocs#7880

@AndyButland AndyButland merged commit f3a369a into main Mar 10, 2026
26 of 29 checks passed
@AndyButland AndyButland deleted the v17/improvement/run-unattended-upgrades-in-background branch March 10, 2026 10:28
warrenbuckley pushed a commit to warrenbuckley/Umbraco.Community.ContentLock that referenced this pull request Mar 27, 2026
…erver health check

Umbraco 17.3.0-rc3 (PR umbraco/Umbraco-CMS#22020) adds two new health probes:
  GET /umbraco/api/health/live  — 200 as soon as the process is alive
  GET /umbraco/api/health/ready — 503 while migrations run, 200 when RuntimeLevel.Run

Also in rc3: unattended upgrades now run in the background, so Kestrel starts
immediately rather than blocking until all migrations complete. This means the
old health check URL (/umbraco → 301) became unreliable — it returned a redirect
the moment Kestrel started, before Umbraco was actually ready to serve requests,
causing Playwright to start auth setup too early.

Changes:
- Upgrade ContentLock.Website Umbraco.Cms + DevelopmentMode.Backoffice → 17.3.0-rc3
- Change webServer.url to http://localhost:5000/umbraco/api/health/ready
  The readiness probe is reachable over plain HTTP (no TLS redirect — verified
  locally), so Node's built-in TCP poller can poll it without cert issues.
  Playwright now waits for HTTP 200 (fully booted) rather than a 301 redirect
  (Kestrel up but Umbraco still initialising).

https://claude.ai/code/session_01TE3DeW77nKYKTnYPDKJCxS
alexsee added a commit to alexsee/umbraco-container that referenced this pull request Apr 9, 2026
Updated
[Umbraco.Cms.Persistence.Sqlite](https://github.com/umbraco/Umbraco-CMS)
from 17.2.2 to 17.3.0.

<details>
<summary>Release notes</summary>

_Sourced from [Umbraco.Cms.Persistence.Sqlite's
releases](https://github.com/umbraco/Umbraco-CMS/releases)._

## 17.3.0

## Upgrade Notes

In 17.3 we have upgraded our dependency on `MailKit` to 4.15.1. This is
a minor version update, but we found a few changes we had to make in
core to accommodate changes to nullability constraints. Unless using
methods of this library, or it's transitive dependency `MimeKit`, it's
unlikely projects will be affected. The update is necessary though, as
the version we previously depended on now has a security vulnerability
raised against it.

We have made a change to how we handle redirects which brings a
significant performance improvement for publish time on large sites,
when documents with many descendent nodes are published. If you have
custom URL providers you should review this change, as there are some
[very rare
cases](umbraco/Umbraco-CMS#22091 (comment))
where you'll need to adjust to ensure descendent redirects are correctly
handled.

Note also that we now auto-generate HMAC secret key for new installs.
This has been applied to make Umbraco more secure by default, but it's
not been forced for upgrades.

## What's Changed Since 17.3.0-rc3

**Full Changelog**:
umbraco/Umbraco-CMS@release-17.3.0-rc3...release-17.3.0

## What's Changed Since 17.3.0-rc2

### 📦 Dependencies

* Dependencies: Update Microsoft packages to latest patch and fix
HybridCache ParseFault with Redis by @​AndyButland in
umbraco/Umbraco-CMS#22278

### 🐛 Bug Fixes

* Examine: Fix DocumentUrlService not initialized during Examine
indexing after package upgrade by @​AndyButland in
umbraco/Umbraco-CMS#22243
* Unattended Upgrades: Rebuild routing caches after background
migrations to fix unrouteable document URLs by @​AndyButland in
umbraco/Umbraco-CMS#22269
* Migrations: Fix NPoco auto-select breaking re-trust FK migration by
@​AndyButland in umbraco/Umbraco-CMS#22270

**Full Changelog**:
umbraco/Umbraco-CMS@release-17.3.0-rc2...release-17.3.0-rc3

## What's Changed Since 17.3.0-rc1

### 🐛 Bug Fixes
* Migrations: Fix re-trust constraints migration targeting non-Umbraco
tables and transaction failure (closes #​22227) by @​AndyButland in
umbraco/Umbraco-CMS#22229
* Distributed Locking: Add ROWLOCK hint to prevent cross-row contention
on umbracoLock table (closes #​22113) by @​AndyButland in
umbraco/Umbraco-CMS#22126
* Application URLs: Prevent back office hosts being overwritten in a
shared database setup (closes #​16741) by @​matthewcare in
umbraco/Umbraco-CMS#22160
* Migrations: Fix property detection for invariant content types with
culture-varying compositions (closes #​22159) by @​AndyButland in
umbraco/Umbraco-CMS#22167
* Migrations: Fix package migrations not running after fresh install
with packages (closes #​22202) by @​AndyButland in
umbraco/Umbraco-CMS#22204

**Full Changelog**:
umbraco/Umbraco-CMS@release-17.3.0-rc...release-17.3.0-rc2

## What's Changed Since the Previous Version (17.2.2)

### 🙌 Notable Changes
* Templates: Add optional Central Package Management support to
UmbracoProject and UmbracoExtension templates by @​NguyenThuyLan in
umbraco/Umbraco-CMS#21641
* Service registration: Allow running Umbraco with different
combinations of backoffice, website and delivery API (closes #​21622) by
@​AndyButland in umbraco/Umbraco-CMS#21630
* Imaging Configuration: Auto-generate HMAC secret key for new installs
by @​AndyButland in umbraco/Umbraco-CMS#21976
* Migrations: Run unattended upgrades in background, add
liveness/readiness health probes (closes #​21987) by @​AndyButland in
umbraco/Umbraco-CMS#22020

### 💥 Breaking Changes
* Dependencies: Update MailKit to 4.15.1 by @​AndyButland in
umbraco/Umbraco-CMS#22028

### 📦 Dependencies
* Bump lodash from 4.17.21 to 4.17.23 in
/tests/Umbraco.Tests.AcceptanceTest in the npm_and_yarn group across 1
directory by @​dependabot[bot] in
umbraco/Umbraco-CMS#21519
 ... (truncated)

## 17.3.0-rc3

## Upgrade Notes

In 17.3 we have upgraded our dependency on `MailKit` to 4.15.1. This is
a minor version update, but we found a few changes we had to make in
core to accommodate changes to nullability constraints. Unless using
methods of this library, or it's transitive dependency `MimeKit`, it's
unlikely projects will be affected. The update is necessary though, as
the version we previously depended on now has a security vulnerability
raised against it.

We have made a change to how we handle redirects which brings a
significant performance improvement for publish time on large sites,
when documents with many descendent nodes are published. If you have
custom URL providers you should review this change, as there are some
[very rare
cases](umbraco/Umbraco-CMS#22091 (comment))
where you'll need to adjust to ensure descendent redirects are correctly
handled.

Note also that we now auto-generate HMAC secret key for new installs.
This has been applied to make Umbraco more secure by default, but it's
not been forced for upgrades.

## What's Changed Since 17.3.0-rc2

### 📦 Dependencies

* Dependencies: Update Microsoft packages to latest patch and fix
HybridCache ParseFault with Redis by @​AndyButland in
umbraco/Umbraco-CMS#22278

### 🐛 Bug Fixes

* Examine: Fix DocumentUrlService not initialized during Examine
indexing after package upgrade by @​AndyButland in
umbraco/Umbraco-CMS#22243
* Unattended Upgrades: Rebuild routing caches after background
migrations to fix unrouteable document URLs by @​AndyButland in
umbraco/Umbraco-CMS#22269
* Migrations: Fix NPoco auto-select breaking re-trust FK migration by
@​AndyButland in umbraco/Umbraco-CMS#22270

**Full Changelog**:
umbraco/Umbraco-CMS@release-17.3.0-rc2...release-17.3.0-rc3

## What's Changed Since 17.3.0-rc1

### 🐛 Bug Fixes
* Migrations: Fix re-trust constraints migration targeting non-Umbraco
tables and transaction failure (closes #​22227) by @​AndyButland in
umbraco/Umbraco-CMS#22229
* Distributed Locking: Add ROWLOCK hint to prevent cross-row contention
on umbracoLock table (closes #​22113) by @​AndyButland in
umbraco/Umbraco-CMS#22126
* Application URLs: Prevent back office hosts being overwritten in a
shared database setup (closes #​16741) by @​matthewcare in
umbraco/Umbraco-CMS#22160
* Migrations: Fix property detection for invariant content types with
culture-varying compositions (closes #​22159) by @​AndyButland in
umbraco/Umbraco-CMS#22167
* Migrations: Fix package migrations not running after fresh install
with packages (closes #​22202) by @​AndyButland in
umbraco/Umbraco-CMS#22204

**Full Changelog**:
umbraco/Umbraco-CMS@release-17.3.0-rc...release-17.3.0-rc2

## What's Changed Since the Previous Version (17.2.2)

### 🙌 Notable Changes
* Templates: Add optional Central Package Management support to
UmbracoProject and UmbracoExtension templates by @​NguyenThuyLan in
umbraco/Umbraco-CMS#21641
* Service registration: Allow running Umbraco with different
combinations of backoffice, website and delivery API (closes #​21622) by
@​AndyButland in umbraco/Umbraco-CMS#21630
* Imaging Configuration: Auto-generate HMAC secret key for new installs
by @​AndyButland in umbraco/Umbraco-CMS#21976
* Migrations: Run unattended upgrades in background, add
liveness/readiness health probes (closes #​21987) by @​AndyButland in
umbraco/Umbraco-CMS#22020

### 💥 Breaking Changes
* Dependencies: Update MailKit to 4.15.1 by @​AndyButland in
umbraco/Umbraco-CMS#22028

### 📦 Dependencies
* Bump lodash from 4.17.21 to 4.17.23 in
/tests/Umbraco.Tests.AcceptanceTest in the npm_and_yarn group across 1
directory by @​dependabot[bot] in
umbraco/Umbraco-CMS#21519
* Bump the npm_and_yarn group across 2 directories with 2 updates by
@​dependabot[bot] in umbraco/Umbraco-CMS#21754
* Bump qs from 6.14.1 to 6.14.2 in /src/Umbraco.Web.UI.Client in the
npm_and_yarn group across 1 directory by @​dependabot[bot] in
umbraco/Umbraco-CMS#21755
* Dependencies: Bumps @​umbraco-ui/uui from 1.17.0 to 1.17.1 by
@​iOvergaard in umbraco/Umbraco-CMS#22029
* Dependencies: Updates @​umbraco-ui/uui to 1.17.2 to fix multiple
folder drag-and-drop failing (closes #​21837) by @​iOvergaard in
umbraco/Umbraco-CMS#21886
 ... (truncated)

## 17.3.0-rc2

## Upgrade Notes

In 17.3 we have upgraded our dependency on `MailKit` to 4.15.1. This is
a minor version update, but we found a few changes we had to make in
core to accommodate changes to nullability constraints. Unless using
methods of this library, or it's transitive dependency `MimeKit`, it's
unlikely projects will be affected. The update is necessary though, as
the version we previously depended on now has a security vulnerability
raised against it.

We have made a change to how we handle redirects which brings a
significant performance improvement for publish time on large sites,
when documents with many descendent nodes are published. If you have
custom URL providers you should review this change, as there are some
[very rare
cases](umbraco/Umbraco-CMS#22091 (comment))
where you'll need to adjust to ensure descendent redirects are correctly
handled.

Note also that we now auto-generate HMAC secret key for new installs.
This has been applied to make Umbraco more secure by default, but it's
not been forced for upgrades.

## What's Changed Since 17.3.0-rc1

### 🐛 Bug Fixes
* Migrations: Fix re-trust constraints migration targeting non-Umbraco
tables and transaction failure (closes #​22227) by @​AndyButland in
umbraco/Umbraco-CMS#22229
* Distributed Locking: Add ROWLOCK hint to prevent cross-row contention
on umbracoLock table (closes #​22113) by @​AndyButland in
umbraco/Umbraco-CMS#22126
* Application URLs: Prevent back office hosts being overwritten in a
shared database setup (closes #​16741) by @​matthewcare in
umbraco/Umbraco-CMS#22160
* Migrations: Fix property detection for invariant content types with
culture-varying compositions (closes #​22159) by @​AndyButland in
umbraco/Umbraco-CMS#22167
* Migrations: Fix package migrations not running after fresh install
with packages (closes #​22202) by @​AndyButland in
umbraco/Umbraco-CMS#22204

**Full Changelog**:
umbraco/Umbraco-CMS@release-17.3.0-rc...release-17.3.0-rc2

## What's Changed Since the Previous Version (17.2.2)

### 🙌 Notable Changes
* Templates: Add optional Central Package Management support to
UmbracoProject and UmbracoExtension templates by @​NguyenThuyLan in
umbraco/Umbraco-CMS#21641
* Service registration: Allow running Umbraco with different
combinations of backoffice, website and delivery API (closes #​21622) by
@​AndyButland in umbraco/Umbraco-CMS#21630
* Imaging Configuration: Auto-generate HMAC secret key for new installs
by @​AndyButland in umbraco/Umbraco-CMS#21976
* Migrations: Run unattended upgrades in background, add
liveness/readiness health probes (closes #​21987) by @​AndyButland in
umbraco/Umbraco-CMS#22020

### 💥 Breaking Changes
* Dependencies: Update MailKit to 4.15.1 by @​AndyButland in
umbraco/Umbraco-CMS#22028

### 📦 Dependencies
* Bump lodash from 4.17.21 to 4.17.23 in
/tests/Umbraco.Tests.AcceptanceTest in the npm_and_yarn group across 1
directory by @​dependabot[bot] in
umbraco/Umbraco-CMS#21519
* Bump the npm_and_yarn group across 2 directories with 2 updates by
@​dependabot[bot] in umbraco/Umbraco-CMS#21754
* Bump qs from 6.14.1 to 6.14.2 in /src/Umbraco.Web.UI.Client in the
npm_and_yarn group across 1 directory by @​dependabot[bot] in
umbraco/Umbraco-CMS#21755
* Dependencies: Bumps @​umbraco-ui/uui from 1.17.0 to 1.17.1 by
@​iOvergaard in umbraco/Umbraco-CMS#22029
* Dependencies: Updates @​umbraco-ui/uui to 1.17.2 to fix multiple
folder drag-and-drop failing (closes #​21837) by @​iOvergaard in
umbraco/Umbraco-CMS#21886
* Backoffice: Update vite from 7.1.11 to 7.3.1 by @​iOvergaard in
umbraco/Umbraco-CMS#22065
* Dependencies: Update server-side dependencies to latest patch or minor
releases by @​AndyButland in
umbraco/Umbraco-CMS#21860

### 🚤 Performance
* Performance: Implement key-based caching for data type and template
repositories by @​AndyButland in
umbraco/Umbraco-CMS#21280
* Management API: Optimize collection view performance by eliminating
N+1 patterns by @​AndyButland in
umbraco/Umbraco-CMS#21684
* Performance: Optimize handling of content type updates by @​kjac in
umbraco/Umbraco-CMS#21910
* Backoffice Performance: Add inflight request deduplication to item
data request managers by @​madsrasmussen in
umbraco/Umbraco-CMS#21767
* URL and Alias Caches: Optimize for invariant documents by
@​AndyButland in umbraco/Umbraco-CMS#21558
* Custom Views: Prevent re-rendering Block Views and Properties by
@​rickbutterfield in umbraco/Umbraco-CMS#21186
* Core: Minimize await to a single JS cycle (refactor #​21186) by
@​nielslyngsoe in umbraco/Umbraco-CMS#22074
* Auth: Skip /token refresh when access token is still valid by
@​iOvergaard in umbraco/Umbraco-CMS#22087
* Memory Management: Dispose `IDisposable` resources correctly in four
internal classes by @​AndyButland in
umbraco/Umbraco-CMS#22014
* Redirect Tracking: Fix segment change detection and optimise
descendant traversal (closes #​22082) by @​AndyButland in
umbraco/Umbraco-CMS#22091
 ... (truncated)

## 17.3.0-rc

## Upgrade Notes

In 17.3 we have upgraded our dependency on `MailKit` to 4.15.1. This is
a minor version update, but we found a few changes we had to make in
core to accommodate changes to nullability constraints. Unless using
methods of this library, or it's transitive dependency `MimeKit`, it's
unlikely projects will be affected. The update is necessary though, as
the version we previously depended on now has a security vulnerability
raised against it.

We have made a change to how we handle redirects which brings a
significant performance improvement for publish time on large sites,
when documents with many descendent nodes are published. If you have
custom URL providers you should review this change, as there are some
[very rare
cases](umbraco/Umbraco-CMS#22091 (comment))
where you'll need to adjust to ensure descendent redirects are correctly
handled.

Note also that we now auto-generate HMAC secret key for new installs.
This has been applied to make Umbraco more secure by default, but it's
not been forced for upgrades.

## What's Changed

### 🙌 Notable Changes
* Templates: Add optional Central Package Management support to
UmbracoProject and UmbracoExtension templates by @​NguyenThuyLan in
umbraco/Umbraco-CMS#21641
* Service registration: Allow running Umbraco with different
combinations of backoffice, website and delivery API (closes #​21622) by
@​AndyButland in umbraco/Umbraco-CMS#21630
* Imaging Configuration: Auto-generate HMAC secret key for new installs
by @​AndyButland in umbraco/Umbraco-CMS#21976
* Migrations: Run unattended upgrades in background, add
liveness/readiness health probes (closes #​21987) by @​AndyButland in
umbraco/Umbraco-CMS#22020

### 💥 Breaking Changes
* Dependencies: Update MailKit to 4.15.1 by @​AndyButland in
umbraco/Umbraco-CMS#22028

### 📦 Dependencies
* Bump lodash from 4.17.21 to 4.17.23 in
/tests/Umbraco.Tests.AcceptanceTest in the npm_and_yarn group across 1
directory by @​dependabot[bot] in
umbraco/Umbraco-CMS#21519
* Bump the npm_and_yarn group across 2 directories with 2 updates by
@​dependabot[bot] in umbraco/Umbraco-CMS#21754
* Bump qs from 6.14.1 to 6.14.2 in /src/Umbraco.Web.UI.Client in the
npm_and_yarn group across 1 directory by @​dependabot[bot] in
umbraco/Umbraco-CMS#21755
* Dependencies: Bumps @​umbraco-ui/uui from 1.17.0 to 1.17.1 by
@​iOvergaard in umbraco/Umbraco-CMS#22029
* Dependencies: Updates @​umbraco-ui/uui to 1.17.2 to fix multiple
folder drag-and-drop failing (closes #​21837) by @​iOvergaard in
umbraco/Umbraco-CMS#21886
* Backoffice: Update vite from 7.1.11 to 7.3.1 by @​iOvergaard in
umbraco/Umbraco-CMS#22065
* Dependencies: Update server-side dependencies to latest patch or minor
releases by @​AndyButland in
umbraco/Umbraco-CMS#21860

### 🚤 Performance
* Performance: Implement key-based caching for data type and template
repositories by @​AndyButland in
umbraco/Umbraco-CMS#21280
* Management API: Optimize collection view performance by eliminating
N+1 patterns by @​AndyButland in
umbraco/Umbraco-CMS#21684
* Performance: Optimize handling of content type updates by @​kjac in
umbraco/Umbraco-CMS#21910
* Backoffice Performance: Add inflight request deduplication to item
data request managers by @​madsrasmussen in
umbraco/Umbraco-CMS#21767
* URL and Alias Caches: Optimize for invariant documents by
@​AndyButland in umbraco/Umbraco-CMS#21558
* Custom Views: Prevent re-rendering Block Views and Properties by
@​rickbutterfield in umbraco/Umbraco-CMS#21186
* Core: Minimize await to a single JS cycle (refactor #​21186) by
@​nielslyngsoe in umbraco/Umbraco-CMS#22074
* Auth: Skip /token refresh when access token is still valid by
@​iOvergaard in umbraco/Umbraco-CMS#22087
* Memory Management: Dispose `IDisposable` resources correctly in four
internal classes by @​AndyButland in
umbraco/Umbraco-CMS#22014
* Redirect Tracking: Fix segment change detection and optimise
descendant traversal (closes #​22082) by @​AndyButland in
umbraco/Umbraco-CMS#22091


### 🌈 Accessibility Improvements
* Entity Actions: Adds a descriptive title to the first action so you
know what it does by @​iOvergaard in
umbraco/Umbraco-CMS#21739
* Search field: Added aria-label and name to search input for
accessibility (closes #​21938) by @​andreaslborg in
umbraco/Umbraco-CMS#21962
* List view: Added labels entity bulk action buttons by @​andreaslborg
in umbraco/Umbraco-CMS#21964
* Accessibility: Add title attributes to buttons in block list entry and
property editor UI by @​manutdkid77 in
umbraco/Umbraco-CMS#21842
* Accessibility: Add tooltips to block grid entry actions by
@​manutdkid77 in umbraco/Umbraco-CMS#21958
* Accessibility: Added `title` attribute for icon in content types by
@​TechPdo in umbraco/Umbraco-CMS#21956

### 🚀 New Features
 ... (truncated)

Commits viewable in [compare
view](umbraco/Umbraco-CMS@release-17.2.2...release-17.3.0).
</details>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Umbraco.Cms.Persistence.Sqlite&package-manager=nuget&previous-version=17.2.2&new-version=17.3.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alexander Seeliger <alexsee@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

category/notable release/17.3.0 status/needs-docs Requires new or updated documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants