TransferSubscriptions
TransferSubscriptions moves existing subscriptions from a previous session to a new one, so a reconnecting client keeps its MonitoredItems, queues and sequence numbers instead of rebuilding everything. Attempt it first on every reconnect; a successful transfer is reported as GoodSubscriptionTransferred, and only on failure should you recreate subscriptions from scratch.
What it saves
The round trips and server CPU of recreating thousands of monitored items, the value storm that recreation triggers, and the data gap itself - because the old subscription's unacknowledged notifications are still retained and can be recovered with Republish. On a fleet, the difference between transferring and recreating is the difference between a network blip and a server-wide load spike.
Preconditions
The subscription must still exist server-side, which means the outage must have been shorter than LifetimeCount times the revised publishing interval - so size that budget against your worst realistic outage. Servers also require the transfer to be requested by the same client application, and commonly enforce the same certificate and user identity, so a reconnect that changes credentials will not transfer.
The reconnect ladder
Open a new secure channel; re-activate the existing session on it if the session survived, otherwise create a new one. Call TransferSubscriptions with the subscription IDs you held. For each that returns GoodSubscriptionTransferred, examine AvailableSequenceNumbers and Republish anything you missed. Only for those that failed, recreate the subscription and its monitored items. Durable subscriptions, a 1.05-era feature, extend how long the server-side state survives.
Example
Reconnect order of operations
1 OpenSecureChannel new channel after the outage
2 ActivateSession (existing session) or CreateSession + ActivateSession
3 TransferSubscriptions([4, 5, 6],
sendInitialValues = true)
-> [4] GoodSubscriptionTransferred
-> [5] GoodSubscriptionTransferred
-> [6] BadSubscriptionIdInvalid lifetime expired - recreate this one only
4 Republish(4, missing sequence numbers) close the gap
5 CreateSubscription + CreateMonitoredItems for 6
6 Resume Publish requests
Step 3 is the one most clients skip, and it is the one that saves the server.
Defined in: Part 4 - Services, TransferSubscriptions and Republish; GoodSubscriptionTransferred is the success indication.
Last verified 7 September 2026 against OPC UA 1.05.07. OPC UA Connect is an educational resource and is not affiliated with the OPC Foundation.