---
title: Scheduling, plugins, and events breaking changes
slug: cms-13/docs/scheduling-plugins-and-events-breaking-changes
docTags: 
createdAt: 2026-07-30T20:22:10.345Z
---

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 because 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.IScheduledJobRepository` – `Get(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.EventMessage` – `VerificationData` and `SiteId` were removed.

### IEventMessageFactory

- `EPiServer.Events.IEventMessageFactory` – `Create` 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.ISynchronizedObjectInstanceCache` – `SynchronizationFailedStrategy` setting is no longer applied to the cache.
- The `EPiServer.CacheManager` class is obsolete. Use the `EPiServer.Framework.Cache.ISynchronizedObjectInstanceCache` service directly instead.

:::hint{type="info"}
**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.
:::
