Links

Version Specific Upgrades

This document covers specific upgrade steps if a version requires them. Most versions do not require specific upgrade steps. In most cases, you will be able to upgrade directly from your current versi
Use the information below to learn about any potential breaking changes and common pitfalls when upgrading your Umbraco CMS project.
If any specific steps are involved with upgrading to a specific version they will be listed below.
Use the general upgrade guide to complete the upgrade of your project.

Breaking changes

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.Publish2(System.Collections.Generic.IEnumerable{0})
  • Umbraco.Cms.Core.Events.IEventAggregator.PublishAsync2(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.
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.
The breaking changes in TinyMCE are also documented in the official migration guides for version 4 to 5 and from version 5 to 6.
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.
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
Umbraco.Extensions.ServiceCollectionExtensions.AddUnique<TImplementing>(Microsoft.Extensions.DependencyInjection.IServiceCollection)
Umbraco.Extensions.EnumExtensions.HasFlagAll<T>(T, T)
Umbraco.Extensions.FriendlyImageCropperTemplateExtensions.GetLocalCropUrl(Umbraco.Cms.Core.Models.MediaWithCrops, string, string?)
Umbraco.Cms.Core
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.Security.IExternalLogin>)
Umbraco.Cms.Core.Services.ExternalLoginService.Save(int,
System.Collections.Generic.IEnumerable<Umbraco.Cms.Core.Security.IExternalLoginToken>)
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<System.Globalization.CultureInfo, System.Collections.Generic.IDictionary<string, System.Collections.Generic.IDictionary<string, string>>>,
Microsoft.Extensions.Logging.ILogger<Umbraco.Cms.Core.Services.LocalizedTextService>)
Umbraco.Cms.Core.Services.ServiceContext.ServiceContext(
System.Lazy<Umbraco.Cms.Core.Services.IPublicAccessService>?,
System.Lazy<Umbraco.Cms.Core.Services.IDomainService>?,
System.Lazy<Umbraco.Cms.Core.Services.IAuditService>?,
System.Lazy<Umbraco.Cms.Core.Services.ILocalizedTextService>?,
System.Lazy<Umbraco.Cms.Core.Services.ITagService>?,
System.Lazy<Umbraco.Cms.Core.Services.IContentService>?,
System.Lazy<Umbraco.Cms.Core.Services.IUserService>?,
System.Lazy<Umbraco.Cms.Core.Services.IMemberService>?,
System.Lazy<Umbraco.Cms.Core.Services.IMediaService>?,
System.Lazy<Umbraco.Cms.Core.Services.IContentTypeService>?,
System.Lazy<Umbraco.Cms.Core.Services.IMediaTypeService>?,
System.Lazy<Umbraco.Cms.Core.Services.IDataTypeService>?,
System.Lazy<Umbraco.Cms.Core.Services.IFileService>?,
System.Lazy<Umbraco.Cms.Core.Services.ILocalizationService>?,
System.Lazy<Umbraco.Cms.Core.Services.IPackagingService>?,
System.Lazy<Umbraco.Cms.Core.Services.IServerRegistrationService>?,
System.Lazy<Umbraco.Cms.Core.Services.IEntityService>?,
System.Lazy<Umbraco.Cms.Core.Services.IRelationService>?,
System.Lazy<Umbraco.Cms.Core.Services.IMacroService>?,
System.Lazy<Umbraco.Cms.Core.Services.IMemberTypeService>?,
System.Lazy<Umbraco.Cms.Core.Services.IMemberGroupService>?,
System.Lazy<Umbraco.Cms.Core.Services.INotificationService>?,
System.Lazy<Umbraco.Cms.Core.Services.IExternalLoginService>?,
System.Lazy<Umbraco.Cms.Core.Services.IRedirectUrlService>?,
System.Lazy<Umbraco.Cms.Core.Services.IConsentService>?,
System.Lazy<Umbraco.Cms.Core.Services.IKeyValueService>?,
System.Lazy<Umbraco.Cms.Core.Services.IContentTypeBaseServiceProvider>?)
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<Umbraco.Cms.Core.Security.ITwoFactorProvider>,
Microsoft.Extensions.Options.IOptions<Microsoft.AspNetCore.Identity.IdentityOptions>,
Microsoft.Extensions.Options.IOptions<Umbraco.Cms.Core.Security.BackOfficeIdentityOptions>)
Umbraco.Cms.Core.Routing.DefaultUrlProvider.DefaultUrlProvider(
Microsoft.Extensions.Options.IOptionsMonitor<Umbraco.Cms.Core.Configuration.Models.RequestHandlerSettings>,
Microsoft.Extensions.Logging.ILogger<Umbraco.Cms.Core.Routing.DefaultUrlProvider>,
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.Guid>, System.Nullable<System.Guid>)
Umbraco.Cms.Core.Models.PublishedContent.PublishedContentType.PublishedContentType(int, string,
Umbraco.Cms.Core.Models.PublishedContent.PublishedItemType,
System.Collections.Generic.IEnumerable<string>,
System.Collections.Generic.IEnumerable<Umbraco.Cms.Core.Models.PublishedContent.PublishedPropertyType>,
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<string>,
System.Func<Umbraco.Cms.Core.Models.PublishedContent.IPublishedContentType,
System.Collections.Generic.IEnumerable<Umbraco.Cms.Core.Models.PublishedContent.IPublishedPropertyType>>,
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.Configuration.Models.GlobalSettings>,
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<Umbraco.Cms.Core.Install.InstallSteps.TelemetryIdentifierStep>,
Microsoft.Extensions.Options.IOptions<Umbraco.Cms.Core.Configuration.Models.GlobalSettings>,
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<T>(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.Configuration.Models.GlobalSettings>,
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
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<Umbraco.Cms.Infrastructure.Migrations.Install.DatabaseSchemaCreator>,
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<Umbraco.Cms.Infrastructure.Migrations.Install.DatabaseSchemaCreator>,
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.Infrastructure.HostedServices.ReportSiteTask>,
Umbraco.Cms.Core.Configuration.IUmbracoVersion,
Microsoft.Extensions.Options.IOptions<Umbraco.Cms.Core.Configuration.Models.GlobalSettings>)
Umbraco.Cms.Web
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.Web.Common.Middleware.UmbracoRequestMiddleware>,
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<Smidge.Options.SmidgeOptions>,
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.Configuration.Models.ContentSettings>,
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.Core.Security.BackOfficeIdentityUser>)
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.HelpController>)
Umbraco.Cms.Web.BackOffice.Controllers.LanguageController.LanguageController(
Umbraco.Cms.Core.Services.ILocalizationService,
Umbraco.Cms.Core.Mapping.IUmbracoMapper,
Microsoft.Extensions.Options.IOptionsSnapshot<Umbraco.Cms.Core.Configuration.Models.GlobalSettings>)
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
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
Umbraco.Extensions.NPocoDatabaseExtensions.ConfigureNPocoBulkExtensions()
Umbraco.Extensions.UmbracoBuilderExtensions.AddUmbracoImageSharp(Umbraco.Cms.Core.DependencyInjection.IUmbracoBuilder)
Umbraco.Cms.Web
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
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
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
Umbraco.Cms.Core.Services.IMembershipMemberService<T>.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
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
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
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.
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 public methods: PublishedSnapshotServiceEventHandler.Dispose, PublishedSnapshotServiceEventHandler.Dispose(bool), and .PublishedSnapshotServiceEventHandler.Initialize.
  • Removed public ctor.
  • 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.
NPoco types and interfaces are part of our public interface which means that this upgrade imposes breaking changes.