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.

Release note for the next release: Activation lifecycle counters, latency histograms, and population gauges now include grain_type, using the canonical GrainId.Type.ToString() identity. orleans-grains migrates from the type key containing a CLR implementation name to grain_type containing that canonical identity. Explicitly named grains and constructed generic grains can therefore have different values as well as a different key.

Update dashboard groupings, filters, recording rules, and OpenTelemetry views to retain grain_type. For a mixed-version rollout, use the emitting service version to select the old or new schema. Map old CLR names to canonical names using the deployment’s grain-type registrations before combining series. Count each emitter’s series once in combined views.

Activation gauges now emit a snapshot for each cached type, including zero after the last activation leaves. Obtain cluster totals by summing the latest fresh observation from each silo and type. Preserve emitter identity through export and configure stale-series expiry in the backend. Lifecycle counters retain additive event semantics: summing their per-type increases over the same interval recovers total event volume.

The shutdown counter retains its historical additional event for each nonempty collection batch with only via=collection; individual shutdown events carry their activation’s canonical type. Include both typed and untyped contributions when aggregating total shutdown events. The collection-scan counter retains scan-level measurements. orleans-system-targets retains its type key, and management grain statistics retain CLR display names with per-silo accounting.

See the metrics catalog for units, lifecycle outcomes, population scopes, and aggregation.

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: