HomeDev GuideRecipesAPI Reference
Dev GuideAPI ReferenceUser GuideGitHubNuGetDev CommunityOptimizely AcademySubmit a ticketLog In
Dev Guide

Scheduling, plugins, and events breaking changes

Breaking changes to the plugin system, scheduled jobs, event system, and caching in CMS 13.

This article covers plugin system, scheduled job, event system, and caching breaking changes in CMS 13.

Plugin system removal

The EPiServer.PlugIn system is no longer supported. The associated stored procedures and database tables have also been removed. The following types are obsolete:

  • EPiServer.PlugIn.AssemblyTypeInfo
  • EPiServer.PlugIn.ICustomPlugInDataLoader
  • EPiServer.PlugIn.ICustomPlugInLoader
  • EPiServer.PlugIn.IPlugInDescriptorRepository
  • EPiServer.PlugIn.PlugInDescriptor
  • EPiServer.PlugIn.PlugInDescritorChangedEventArgs
  • EPiServer.PlugIn.PlugInDescriptorRepositoryExtensions
  • EPiServer.PlugIn.PlugInException
  • EPiServer.PlugIn.PlugInLocator

Removed plugin types

  • EPiServer.PlugIn.PagePlugInAttribute – Removed because WebForms is no longer supported.
  • EPiServer.PlugIn.PlugInPropertyAttribute – Removed because WebForms is no longer supported.
  • EPiServer.PlugIn.PlugInSettings – Removed since storing settings for plugins is no longer supported. Use custom storage if needed.

Plugin descriptor changes

  • EPiServer.PlugIn.PlugInDescriptor – Methods Save, Load, LoadAll, and event PlugInDescriptorSaved were removed in favor of methods or events on EPiServer.PlugIn.IPlugInDescriptorRepository. Method Load(string typeName, string assemblyName, bool defaultEnabled) was removed.

  • EPiServer.PlugIn.PlugInLocator – Methods FindPlugInTypes and Search were removed in favor of methods on EPiServer.PlugIn.IPlugInDescriptorRepository.

PropertyDefinitionTypePlugInAttribute

  • EPiServer.PlugIn.PropertyDefinitionTypePlugInAttribute – No longer inherits from EPiServer.PlugIn.PlugInAttribute, but rather from EPiServer.DataAnnotations.PropertyDefinitionTypeAttribute. Certain properties were removed. Use EPiServer.DataAnnotations.PropertyDefinitionTypeAttribute instead.
  • There is a DataType property that must be used to specify the type of the property definition if the type directly inherits from PropertyData. The registration of property definition type for types that are IPropertyBlock is not supported.

Scheduled jobs

All jobs must inherit ScheduledJobBase

All scheduled jobs are required to inherit from ScheduledJobBase. Custom methods are no longer supported.

  • EPiServer.DataAbstraction.ScheduledMethod – Scheduled jobs with custom methods are no longer supported.

ScheduledPlugInAttribute changes

  • EPiServer.PlugIn.ScheduledPlugInAttribute – Attribute no longer inherits EPiServer.PlugIn.PlugInAttribute but rather EPiServer.Scheduler.ScheduledJobAttribute. The ScheduledJobAttribute only contains properties from PlugInAttribute that are used for scheduled jobs.
  • When property InitialTime is not assigned, the job receives a randomized start time so jobs do not run simultaneously by default.
  • The default value of the IntervalLength property is now 1.

ScheduledJob class changes

  • EPiServer.DataAbstraction.ScheduledJob – Custom constructors were removed. Use the default constructor.
  • Property InstanceData was removed because it is no longer supported to persist binary serialized state.
  • Property PingTime was removed in favor of EPiServer.Scheduler.SchedulerOptions.PingTime.
  • The Name property is assigned the type name of the scheduled job rather than the display name of the attribute.

IScheduledJobRepository

  • EPiServer.DataAbstraction.IScheduledJobRepositoryGet(string, string, string) method ignores the method argument because it is no longer used. Additional Get method overloads were added.

Orphaned scheduled jobs

After removing third-party packages that registered scheduled jobs (such as EpiServer.Find, EPiServer.Forms, Geta.NotFoundHandler, Geta.Sitemaps), orphaned job registrations may remain in the database. These produce warnings at startup but are not blocking. They can be deleted within the admin UI under Settings > Scheduled Jobs.

EPiServer.Events

Event security model change

The event provider is now responsible for message security and integrity. CMS receives any event that the provider accepts (such as Azure Service Bus or other provider). In earlier versions, CMS used a checksum and site identifier to verify messages from unsecure, shared event providers like "WCF over UDP." If a custom provider still requires this capability, implement it in the provider.

EventMessage

  • EPiServer.Events.EventMessageVerificationData and SiteId were removed.

IEventMessageFactory

  • EPiServer.Events.IEventMessageFactoryCreate no longer takes a parameter to add a checksum.

ChangeNotification

  • EPiServer.Events.ChangeNotification – Classes in the namespace were moved to a separate EPiServer.Events.ChangeNotification package. Use the AddCmsChangeNotification() service registration method to reference the package and add services.

EventsServiceKnownTypeAttribute

  • Register known parameters using service.TryAddCmsEventsParameterType<T>() instead of the EPiServer.Events.EventsServiceKnownTypeAttribute attribute.
  • The class EPiServer.Events.EventsServiceKnownTypesLookup was replaced with EPiServer.Events.EventProviderOptions.ParameterTypes.

Event provider

  • EPiServer.Events.Providers.EventProvider.ValidateMessageIntegrity – Setting is no longer used by the event system.

Caching

  • EPiServer.Framework.Cache.ISynchronizedObjectInstanceCacheSynchronizationFailedStrategy setting is no longer applied to the cache.

  • The EPiServer.CacheManager class is obsolete. Use the EPiServer.Framework.Cache.ISynchronizedObjectInstanceCache service directly instead.

📘

Note

Some third-party packages (such as older versions of Gulla.Episerver.SqlStudio) reference ISynchronizedObjectInstanceCache in ways that are incompatible with CMS 13. Ensure you update these packages to CMS 13-compatible versions.