This article provides a quick-reference map of API replacements when upgrading from CMS 12 to CMS 13. Use it alongside the detailed breaking changes articles to locate the CMS 13 equivalent for each deprecated or removed API.
| CMS 12 | CMS 13 | Notes |
|---|
PageReference | ContentReference | Throughout all usages |
BlockTypeRepository | IContentTypeRepository | Non-generic |
PageTypeRepository | IContentTypeRepository | Non-generic |
IContentTypeRepository<T> | IContentTypeRepository | Non-generic |
ContentCoreData | ContentNode | Direct replacement |
IContentCoreDataLoader | IContentNodeLoader | Direct replacement |
IContentGroup | IPersonalizedGroup | Direct replacement |
ISecuredFragmentMarkupGenerator | IPersonalizedFragmentMarkupGenerator | Direct replacement |
IRoleSecurityDescriptor | IEnumerable<string> | For role identities |
DynamicProperty | (removed) | Feature removed entirely |
PlugInAttribute | (removed) | Plugin system removed |
ScheduledPlugInAttribute | ScheduledJobAttribute | From EPiServer.Scheduler |
DojoWidgetAttribute | CriterionPropertyEditor | Visitor group criteria |
ISiteDefinitionResolver | IApplicationResolver | Application model |
ISiteDefinitionRepository | IApplicationRepository | Application model |
SiteDefinition | Application | Type name only. SiteDefinition.Current requires DI refactoring. |
VirtualPathResolver | VirtualPathUtilityEx | Public static class; same namespace EPiServer.Web |
| CMS 12 | CMS 13 | Notes |
|---|
ContentArea.FilteredItems | ContentArea.Items | Or use IContentAreaItemsRenderingFilter |
IContentAreaLoader.Get() | IContentAreaLoader.LoadContent() | Direct replacement |
XhtmlString.ToHtmlString(IPrincipal) | XhtmlString.ToHtmlString() | Parameter removed |
PropertyString.PublicString | PropertyString.String | Now public |
PropertyLongString.PublicLongString | PropertyLongString.LongString | Now public |
PropertyUrl.String | PropertyUrl.LongString | Base class changed |
PropertyDefinition.Searchable | PropertyDefinition.IndexingType | Direct replacement |
PropertyData.Clear() (override) | PropertyData.ClearImplementation() | Direct replacement |
PrincipalInfo.HasEditAccess() | user.IsInRole(Roles.CmsEditors) | Direct replacement |
PrincipalInfo.IsPermitted() | PermissionService.IsPermitted() | Direct replacement |
SoftLink.LinkStatus | SoftLink.HttpStatusCode | Direct replacement |
SaveAction.None | SaveAction.Default | Direct replacement |
SaveAction.DelayedPublish | SaveAction.Schedule | Direct replacement |
RenderSettings.CustomTag | RenderSettings.CustomTagName | Direct replacement |
RenderSettings.ChildrenCustomTag | RenderSettings.ChildrenCustomTagName | Direct replacement |
VirtualPathResolver.Instance.Method() | VirtualPathUtilityEx.Method() | Static class, no .Instance |
SiteDefinition.Current.StartPage | IApplicationResolver.GetByContext()?.EntryPoint | Inject IApplicationResolver and call GetByContext() for IRoutableApplication |
SiteDefinition.Current.RootPage | ContentReference.RootPage | Direct replacement |
UIPathResolver.Instance | Inject UIPathResolver | Use service container |
ConstructorParameterResolver.Instance | Inject from service container | Use service container |
PropertyData.Locate | Inject services via constructor | |
Html.CreatePlatformNavigationMenu() | <platform-navigation /> | Tag helper |
| CMS 12 | CMS 13 |
|---|
IContentRouteEvents.CreatingVirtualPath | IContentUrlGeneratorEvents.GeneratingUrl |
IContentRouteEvents.CreatedVirtualPath | IContentUrlGeneratorEvents.GeneratedUrl |
IContentRouteEvents.RoutingContent | IContentUrlResolverEvents.ResolvingUrl |
IContentRouteEvents.RoutedContent | IContentUrlResolverEvents.ResolvedUrl |
| CMS 12 Namespace | CMS 13 Namespace | Affected Methods |
|---|
Microsoft.Extensions.DependencyInjection | EPiServer.DependencyInjection | AddCmsCore(), AddCmsData(), AddCmsFramework(), AddTinyMce(), AddAdmin(), AddCmsUI(), AddCmsShell(), AddCmsShellUI(), AddCmsBlobs(), AddCmsCache(), AddCmsGeolocation(), AddCmsChangeNotification(), AddCmsLinkAnalyzer() |
The following packages require an explicit PackageReference in CMS 13. They were transitive dependencies in CMS 12.
| Namespace in Code | Required Package | Notes |
|---|
EPiServer.Cms.UI.AspNetIdentity | EPiServer.CMS.UI.AspNetIdentity | Was transitive in CMS 12 |
EPiServer.Cms.UI.VisitorGroups | EPiServer.CMS.UI.VisitorGroups | No longer included by EPiServer.Cms metapackage. Call AddVisitorGroupsMvc() and AddVisitorGroupsUI(). |
EPiServer.Personalization | EPiServer.Geolocation | Call AddCmsGeolocation() |
EPiServer.Events.ChangeNotification | EPiServer.Events.ChangeNotification | Call AddCmsChangeNotification() |
EPiServer.Framework.Blobs | EPiServer.Blobs | Call AddCmsBlobs() |
EPiServer.Framework.Cache | EPiServer.Cache | Call AddCmsCache() |
The following APIs are removed in CMS 13 with no direct replacement.
| CMS 12 | Notes |
|---|
EPiServer.Shell.Telemetry and TelemetryOptions | Entirely removed in CMS 13 |
SearchProvidersManager | Made internal |
SiteDefinition.Current.StartPage | Static singleton removed. Inject IApplicationResolver via constructor, call GetByContext() for IRoutableApplication, and use .EntryPoint. |