What it does

MMTel Communications Diversion (CDIV) is a service that redirects incoming calls according to rules set by the network operator and/or the subscriber. Each of these rules specifies the particular condition or conditions that should trigger it, and the destination to forward to when the rule is triggered. The rules are subscriber specific and are therefore configured in the HSS rather than the Rhino VoLTE TAS.

Forwarding rules

Each forwarding rule must correspond to one of five different types of forwarding. Each forwarding type is triggered under different circumstances. The types are:

Table 1. Forwarding types
Name Acronym Trigger Condition

Communication Forwarding Unconditional


Triggers immediately upon receipt of an incoming call.

Communication Forwarding on Busy user


Receipt of a 486 Busy Here SIP response from the called party.

Communication Forwarding on no Reply


A 180 Ringing response followed by a 408 Request Timeout response, or the no reply timer expiring after receiving a 180 Ringing response.

Communication Forwarding on Subscriber Not Reachable


Receipt of a SIP response with any of these status codes: 500 Internal Server Error, 503 Service Unavailable, 408 Request Timeout, or another code configured in additional-not-reachable-status-codes. Normally these responses must be received before a 180 Ringing response to trigger CFNRc, but this can be configured in the allow-not-reachable-during-alerting field (except for 408 Request Timeout response, which always triggers CFNR after a 180 Ringing response).

Communication Forwarding on Not Logged-in


Receipt of an incoming call when the called party is not currently registered on the network.

Additional conditions

In addition to the basic types above, additional conditions can be placed on forwarding rules:

Table 2. Additional forwarding conditions
Name Description

Makes a forwarding rule conditional on the specific media types appearing in the SDP for the call.


Makes a forwarding rule conditional on the date and time the call is received.

Forwarding action

In addition to its conditions, each forwarding rule should have a forward-to action. This action contains a number of parameters that detail how to handle forwarding when the rule’s conditions are met. The supported fields are:

Table 3. Supported forward-to parameters
Name Description

The URI to forward to.


Determines whether to send a 181 Call is Being Forwarded response to the calling party.


Determines whether the identity of the forward-to target should be revealed to the calling party.


Determines whether the identity of the original called party should be revealed to the calling party.


Determines whether the identity of the original called party should be revealed to the forward-to target.

Communication Deflection

Communication Deflection (CD) is another type of MMTel call forwarding that, unlike the others, is not triggered through forwarding rules. Instead it is triggered by receipt of a 302 Moved Temporarily SIP response from the called party. For this type of forwarding, the response itself contains the destination to forward to.

No reply timer

As described above, CFNR is triggered after a 180 Ringing response, either by a 408 Request Timeout response or by the no reply timer expiring. The no reply timer is started on receipt of the 180 Ringing response, and expires after a period of time derived from either:

  • the communication-forwarding-on-no-reply-timer setting in subscriber HSS configuration (this option takes priority) or

  • the period of time specified in global configuration in the no-reply-timeout-seconds field.

Forwarding limits

The number of times that a single call can be forwarded can be limited with the max-diversions field.

If the limit is reached, there are several options for how to handle the call. This is configured in the max-diversion-action field. The options are:

Table 4. Options for handling too many forwarding attempts
Option Behaviour

Terminates the call.


Makes a final attempt to forward the call to the destination given in the max-diversion-fixed-destination field.


Makes a final attempt to forward the call to the subscriber’s specified voicemail server. This option requires that the subscriber’s voicemail server URI has been set in their Metaswitch-TAS-Services document in the HSS.

It is also possible to specify a list of known URIs in the diversion-limit-exempt-uris field that can be forwarded to, even when the forwarding limit is reached.

Interactions with other services

Call barring

The MMTel call barring service always takes precedence over call forwarding. If an incoming call is barred, the call will be terminated without forwarding.

Voicemail forwarding

Voicemail forwarding is closely related to the MMTel call forwarding service. There are certain situations that can trigger either service, for example, if the called party is already on a call. In such cases MMTel call forwarding takes precedence, and will evaluate the provisioned forwarding rules for the called party. Voicemail forwarding will be triggered if there are no forwarding rules that result in the call being forwarded.

Warning There are certain situations where the MMTel call forwarding service may be suppressed, for example, when routing to a CS network where MSC is expected to handle call forwarding. In these situations the Voicemail Forwarding service will also be suppressed.

Terminating Access Domain Selection (T-ADS)

If T-ADS attempts to connect the call over the circuit switched (CS) network and the attempt fails, it is possible that call forwarding could be triggered twice. The first time for call forwarding behavior in the CS core network, the second time for MMTel call forwarding.

For this reason it is possible to disable MMTel call forwarding for calls that are terminating in a CS network, see below.

Terminating SCC services in general

When a call is forwarded, the terminating SCC service will be skipped for the forwarded SIP INVITE request. This is because the forwarded call is treated as a new originating call.


The example for sentinel-volte-gsm-config.yaml and example for sentinel-volte-cdma-config.yaml show example configuration relevant to call forwarding in the sentinel-volte/mmtel/call-diversion/mmtel-call-diversion section.

What you need

  • ❏ The maximum limit for the number of forwards that should be allowed for a single call.

  • ❏ The preferred option for handling a call that has reached the maximum number of forwards.

  • ❏ Any URIs that can be forwarded to, even when forwarding limits have been reached.

  • ❏ Optionally, a default URI to forward to if a rule without an explicit target is triggered.

  • ❏ The default length of time to allow the call to ring before triggering CFNR.

  • ❏ Whether MMTel call forwarding should be disabled for calls that terminate in a CS network.

  • ❏ Whether subscribers' forwarding rules should take precedence over the operator’s rules.

  • ❏ Whether CFNRc should be allowed to trigger after the call starts ringing.

  • ❏ Any SIP response status codes that should trigger CFNRc besides the standard ones.

  • ❏ Whether an orig tag should be added to outbound forwarded SIP INVITE requests.

  • ❏ Whether a hi-target-param of type mp should be included in the History-Info for a forwarded message.

Setting up subscriber data

Both subscriber and operator defined forwarding rules, along with a subscriber specific setting for the no reply timer are configured in the HSS inside the MMTel-Services XML document for the subscriber.

You can find a detailed description of what this configuration looks like in the 3GPP technical specification for the MMTel call forwarding service, see section 4.9 of 3GPP TS 24.604.

Not all of the rule conditions listed in the technical specification are supported by the Rhino VoLTE TAS. Only the following conditions may be used: busy, not-registered, cp:validity, media, no-answer, rule-deactivated, and not-reachable.

Similarly there are also forward-to action parameters listed in the specification that are not supported by the Rhino VoLTE TAS. The following parameters may be used: target, notify-caller, reveal-identity-to-caller, reveal-served-user-identity-to-caller, and reveal-identity-to-target.

Setting up call forwarding

I want to…​

Set the limit for how many times a call can be forwarded

In the mmtel-call-diversion section, set max-diversions to the desired limit:

                max-diversions: 10
Reject calls that exceed the forwarding limit

In the mmtel-call-diversion section, set max-diversion-action to reject the call:

                max-diversion-action: REJECT
Forward calls that exceed the forwarding limit to a fixed URI
                max-diversion-action: DELIVER_TO_FIXED_DESTINATION
                max-diversion-fixed-destination: tel:+123456789
Allow forwarding to special URIs even when forwarding limits have been reached

In the mmtel-call-diversion section, add the desired SIP and/or tel URIs to the list of diversion-limit-exempt-uris:

                    - sip:voicemail@example.com
                    - tel:+123456789
Add to the set of SIP error response codes that trigger the CFNRc

In the mmtel-call-diversion section, add the desired codes to the list of additional-not-reachable-status-codes:

                    - 404
                    - 480
Allow CFNRc to still be triggered after receiving an 180 Ringing response
                allow-not-reachable-during-alerting: true
Set a default destination to use if a subscriber’s forwarding rule does not specify a destination

In the mmtel-call-diversion section, set default-target-uri to the desired SIP or tel URI:

                default-target-uri: sip:default-target@example.com
Set the default timeout for triggering CFNR

In the mmtel-call-diversion section, set no-reply-timeout-seconds to the desired timeout:

                no-reply-timeout-seconds: 15
Disable the MMTel call forwarding service when the call is being delivered over a circuit-switched network
                suppress-for-cs-terminating-domain: true
Allow the subscriber’s forwarding rules to override the operator’s rules

In the mmtel-call-diversion section, set prefer-subscriber to true:

                prefer-subscriber: true
Play an announcement to the caller when the call is forwarded

MMTel call forwarding configuration only needs the announcement ID of the announcement to be played. The details of that announcement should be configured beforehand. For details about how to do this, see Announcements.


                announcement-id: 12
Add the 'orig' tag to the Route header of forwarded SIP INVITE requests

In the mmtel-call-diversion section, set add-orig-tag to true:

                add-orig-tag: true
Prevent the 'orig' tag from being added to the Route header of forwarded SIP INVITE requests

In the mmtel-call-diversion section, set add-orig-tag to false:

                add-orig-tag: false
Include a 'hi-target-param' of type 'mp' in the History-Info header that is added to forwarded SIP INVITE requests

In the mmtel-call-diversion section, set add-mp-param to true:

                add-mp-param: true
Previous page Next page
Rhino VoLTE TAS Version 4.0.0