> For the complete documentation index, see [llms.txt](https://prosbcdocs.telcobridges.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://prosbcdocs.telcobridges.com/telecom-references/isdn-and-cas/call-transfer.md).

# Call Transfer

Toolpack software provides call transfer support, either by relaying call transfer requests and responses between two bridges call legs, or by locally processing the call transfer (making a new outgoing call leg, joining incoming call leg to the new outgoing call, dropping the original outgoing call leg).

### Call transfer terms:

* *Transferee*: The incoming call leg, that is initially speaking with the *Transferor*, then later transferred to the *Transfer Target*.
* *Transferor*: The outgoing call leg that is initiating the call transfer request, and that gets disconnected once the transfer has been completed.
* *Transfer Target*: The second outgoing call leg, which is later made and joined to the *Transferee*
* *Redirecting number*: Number from which the call is transferred from (called number of the *Transferor*)
* *Redirection number*: Number toward which the call transfer is made
* *Original called number*: Called number that the *Transferee* was originally calling

### Supported call transfer protocols

* SS7: Not supported
* ISDN: 4ESS-5ESS Facility message containing a codeset 6 Facility IE
* CASR2: Not supported
* SIP: Using SIP Refer

### Toolpack configuration

The Call transfer behavior is configured per profile. In the web portal:

* Click on *Profiles* in the left menu
* Select the profile to edit: the profile used on the *Transferor* call leg (outgoing call leg)
* Expand section 'Call Transfer Options'
* Choose appropriate options:
  * *Call Transfer Mode*: Indicates if call transfer requests from outgoing leg must be relayed to incoming leg, or locally processed
  * *Terminate Transferor immediately*: When checked, the *Transferor* all leg is immediately terminated when new outgoing call leg is made. Otherwise, it's terminated only once the *Transfer Target* answers, and may be re-joined later with *Transferee* if *Transfer Target* fails or times out.
  * *Call Transfer timeout*: Timeout waiting for *Transfer Target* to answer before declaring the call transfer as failed.

### Call transfer modes

#### Call transfer forwarding

In this mode, call transfer request, call transfer progress, and call transfer response messages are simply being forwarded between the two bridged call legs. Toolpack is not taking any local decision. It's expected that other equipment in the network will process the call transfer request and respond to it.

If the incoming call leg is using a protocol that's not supported for call transfer, the call transfer request will be ignored.

#### Call transfer processing

In this mode, the call transfer request is processed locally by Toolpack. The call transfer is processed as follows:

**Simplified call flow**

* Incoming call is routed and joined to an outgoing call leg
* A call transfer request is received from incoming or outgoing call leg
* A new outgoing call leg (*Transfer Target*) is routed and made
* Audio is unjoined between incoming and outgoing call leg
* *Transfer Target* answers
* Call transfer request leg is hung-up
* Audio is joined between the remaining leg and the *Transfer Target*

![ISDN to SIP call transfer from outgoing leg %28Refer%29](https://docs.telcobridges.com/w/images/3/30/ISDN_to_SIP_call_transfer_from_outgoing_leg_%28Refer%29.png) ![SIP to ISDN call transfer from incoming leg](https://docs.telcobridges.com/w/images/5/51/SIP_to_ISDN_call_transfer_from_incoming_leg.png)

**Complete call flow**

* Initial call establishment:
  * Incoming call is received (the *Transferee*)
  * [Routing](https://github.com/telcobridges-main/tmedia-wiki/tree/main/tmedia/platforms/tmedia-routing/README.md) is made (based on incoming leg's called number), outgoing call is made (the *Transferor*)
  * [Early media](https://telcobridges.com/learning/sip-trunking/sip-response-codes-complete-guide/) is handled (according to profile):
    * Ring tone may be played to *Transferee* if appropriate
    * Or Audio data path may be joined between *Transferee* and *Transferor* call legs if *Transferor* advertised early media
  * [Route retry](https://github.com/telcobridges-main/tmedia-wiki/tree/main/reference/concepts/route-retry/README.md) is handled:
    * In case of failure of a route, or in case of timeout, next mathing route is attempted
  * *Transferor* answers the call
  * Audio data path is joined between *Transferee* and *Transferor* call legs
* Call transfer request processing
  * A *Call Transfer Request* is received from the *Transferor*
  * *Call Transfer Progress* is sent back to the *Transferor*
  * [Routing](https://github.com/telcobridges-main/tmedia-wiki/tree/main/tmedia/platforms/tmedia-routing/README.md) is made (using retirection number), a new outgoing call is made (the *Transfer Target*)
  * Audio data path is unjoined between *Transferee* and *Transferor*
  * Optionally, the *Transferor* is hung up (according to profile)
  * [Early media](https://telcobridges.com/learning/sip-trunking/sip-response-codes-complete-guide/) is handled (according to profile):
    * Ring tone may be played to *Transferee* if appropriate
    * Or Audio data path may be joined between *Transferee* and *Transferor* call legs if *Transferor* advertised early media
  * [Route retry](https://github.com/telcobridges-main/tmedia-wiki/tree/main/reference/concepts/route-retry/README.md) is handled:
    * In case of failure of a route, or in case of timeout, a next mathing route is attempted
* Call transfer fails (Call transfer timeout, or explicit termination of *Transfer Target* before it's answered)
  * *Transfer Target* leg is terminated
  * *Transferee* is re-joined with *Transferor* (unless *Transferor* has been terminated or has hung-up)
  * *Call Transfer Response* (with appropriate cause) is sent back to *Transferor* leg
* Call transfer succeeds (*Transfer Target* answers the call)
  * *Call Transfer Response* (with success cause) is sent back to *Transferor* (unless already terminated)
  * *Transferor* is terminated (if not already)
  * Audio data path is joined between *Transferee* and *Transfer Target*
  * *Transfer Target* now becomes the new *Transferor* (in case it also sends a *Call Transfer Request*)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://prosbcdocs.telcobridges.com/telecom-references/isdn-and-cas/call-transfer.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
