Skip to content

Orleans migration guides

Use the guide that matches the Orleans major version currently deployed in production.

Starting versionRecommended pathGuide
Orleans 9.xUpdate to the latest 9.x patch, then upgrade to Orleans 10.xUpgrade Orleans 9.x to 10.x
Orleans 8.xUpdate to Orleans 8.2, validate Orleans 9.2, then upgrade to Orleans 10.xUpgrade Orleans 8.x to 10.x
Orleans 7.xUpdate to the latest 7.2 patch, then validate each supported major-version checkpointUpgrade Orleans 7.x to 10.x
Orleans 3.x or earlierMigrate to Orleans 7 in a separate cluster before continuing sequentiallyArchived Orleans 3.x to 7.x notes

Before changing packages, record the following compatibility contract:

  • The Orleans, .NET, provider, and database versions currently deployed.
  • The grain interface and serialized type assemblies used by every silo and client.
  • Stable serializer member IDs and type aliases for data in grain storage, streams, reminders, and queued messages.
  • The clustering, persistence, reminder, stream, and grain-directory providers and their schema versions.
  • Explicit values for behavior-sensitive options, including request cancellation, placement, grain directory caching, and timer interleaving.
  • A backup or recovery point for durable state and provider metadata.

See Upgrade deployment and rollback before choosing a deployment strategy.

POCO grains remain supported. A grain that doesn’t inherit from Grain implements IGrainBase and receives its IGrainContext through dependency injection. This also enables grain extension methods such as timers, reminders, streaming, deactivation, and migration.

Keep all Microsoft.Orleans.* packages on the same 10.x patch. For solutions that use NuGet Central Package Management, declare the versions in Directory.Packages.props and omit versions from project-level PackageReference items. Don’t copy old provider dependency versions from migration examples; select a current version that is supported by your target runtime and provider.

For related guidance, see: