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.AssemblyTypeInfoEPiServer.PlugIn.ICustomPlugInDataLoaderEPiServer.PlugIn.ICustomPlugInLoaderEPiServer.PlugIn.IPlugInDescriptorRepositoryEPiServer.PlugIn.PlugInDescriptorEPiServer.PlugIn.PlugInDescritorChangedEventArgsEPiServer.PlugIn.PlugInDescriptorRepositoryExtensionsEPiServer.PlugIn.PlugInExceptionEPiServer.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– MethodsSave,Load,LoadAll, and eventPlugInDescriptorSavedwere removed in favor of methods or events onEPiServer.PlugIn.IPlugInDescriptorRepository. MethodLoad(string typeName, string assemblyName, bool defaultEnabled)was removed. -
EPiServer.PlugIn.PlugInLocator– MethodsFindPlugInTypesandSearchwere removed in favor of methods onEPiServer.PlugIn.IPlugInDescriptorRepository.
PropertyDefinitionTypePlugInAttribute
EPiServer.PlugIn.PropertyDefinitionTypePlugInAttribute– No longer inherits fromEPiServer.PlugIn.PlugInAttribute, but rather fromEPiServer.DataAnnotations.PropertyDefinitionTypeAttribute. Certain properties were removed. UseEPiServer.DataAnnotations.PropertyDefinitionTypeAttributeinstead.- There is a
DataTypeproperty that must be used to specify the type of the property definition if the type directly inherits fromPropertyData. The registration of property definition type for types that areIPropertyBlockis 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 inheritsEPiServer.PlugIn.PlugInAttributebut ratherEPiServer.Scheduler.ScheduledJobAttribute. TheScheduledJobAttributeonly contains properties fromPlugInAttributethat are used for scheduled jobs.- When property
InitialTimeis not assigned, the job receives a randomized start time so jobs do not run simultaneously by default. - The default value of the
IntervalLengthproperty is now1.
ScheduledJob class changes
EPiServer.DataAbstraction.ScheduledJob– Custom constructors were removed. Use the default constructor.- Property
InstanceDatawas removed because it is no longer supported to persist binary serialized state. - Property
PingTimewas removed in favor ofEPiServer.Scheduler.SchedulerOptions.PingTime. - The
Nameproperty is assigned the type name of the scheduled job rather than the display name of the attribute.
IScheduledJobRepository
EPiServer.DataAbstraction.IScheduledJobRepository–Get(string, string, string)method ignores themethodargument because it is no longer used. AdditionalGetmethod 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.EventMessage–VerificationDataandSiteIdwere removed.
IEventMessageFactory
EPiServer.Events.IEventMessageFactory–Createno longer takes a parameter to add a checksum.
ChangeNotification
EPiServer.Events.ChangeNotification– Classes in the namespace were moved to a separateEPiServer.Events.ChangeNotificationpackage. Use theAddCmsChangeNotification()service registration method to reference the package and add services.
EventsServiceKnownTypeAttribute
- Register known parameters using
service.TryAddCmsEventsParameterType<T>()instead of theEPiServer.Events.EventsServiceKnownTypeAttributeattribute. - The class
EPiServer.Events.EventsServiceKnownTypesLookupwas replaced withEPiServer.Events.EventProviderOptions.ParameterTypes.
Event provider
EPiServer.Events.Providers.EventProvider.ValidateMessageIntegrity– Setting is no longer used by the event system.
Caching
-
EPiServer.Framework.Cache.ISynchronizedObjectInstanceCache–SynchronizationFailedStrategysetting is no longer applied to the cache. -
The
EPiServer.CacheManagerclass is obsolete. Use theEPiServer.Framework.Cache.ISynchronizedObjectInstanceCacheservice directly instead.
NoteSome third-party packages (such as older versions of
Gulla.Episerver.SqlStudio) referenceISynchronizedObjectInstanceCachein ways that are incompatible with CMS 13. Ensure you update these packages to CMS 13-compatible versions.
Updated 9 days ago
