Is a service that allows an existing originating or terminating session to be transfered to another device. The target device is the one that pulls the session. The service is experimental and has some constraints (see Pre requisites).
A subscriber with 2 registered devices (UE1 and UE2) under the same IMPU makes a call to another device B from UE1. Once the call between UE1 and B is established, the subscriber can use the registered UE2 to pull the call to that device. The user calls a special URI previously configured in the AS (see DetermineVoltePlanId). The AS will verify the called URI is a Session Transfer to Own Device URI service and pull the call to the UE2. The UE1 will be disconnected as soon as the session between UE2 and B is established.
The service also works for the terminating case, which means that the subscriber B receiving a call can also use another registered device (B') under the same IMPU to pull the call.
The service is composed of several features:
The interactions among the features are show below:
The DetermineVoltePlanId sets the session to mmtel and also checks if the request URI is for the STOD service.
The TrackSessionPreAnswer feature is used to process the session tracking information from session state.
The MMTelStodEnabled checks its profile to assert that the user is allowed to trigger the service and if allowed it will set the proper procedures to cause the session to be tracked and the MMTelStodBind feature will bind the session to an ACI name. It also creates an external tracking key for the session and adds it to the set in session state.
This ACI name will be reconstructed by the MMTelStodDetermineTargetSession feature on receiving a transfer INVITE and the MMTelStodTriggerAnchor will route the transfer INVITE to the existing session.
The MMTelStodProcessHandover intercepts the transfer INVITE and do the procedures to connect the existing called party to the new calling party.