CFD Transfer to External 3CX Extension via Bridge Not Working

cri900

Forum User
Joined
Jun 20, 2025
Messages
2
Reaction score
3
Hello 3CX Community,
I’m running 3CX v20 U5 with two PBXs bridged together via SIP trunk. On PBX A I have a DID (let’s call it 0123456789) and I need any call arriving on that DID to be blind-transferred (single-leg) to an extension on PBX B (for example 16804). PBX B is reachable only via the SIP bridge and the extension 16804 exists there.

I have tried several Call Flow Designer (CFD) approaches, including:
  1. ConditionalComponent → TransferComponent
    • Condition: session.did == "0123456789"
    • Transfer Destination: constant "16804"

      Result: No outbound dial-out is ever triggered; the call always follows the default DID assignment on PBX A.
  2. Execute C# Code + TransferComponent
    • Used CFDFunctions.GetVariableValue in an Execute C# Code block to return "16804"
    • Transfer then set to ComputeDestination()

      Result: Still no outbound call leg, and no Outbound Rule is applied.

  3. MakeCallComponent
    • Originate a second call leg from an internal (e.g. 771) to 16804

      Result: Works, but creates two call legs in conference; I need a true single-leg blind transfer
  4. Call-Processing Script (C#)
    • Tried the “Inbound DID Routing” sample with ExternalNumber.16804.

      Result: Compiles and logs, but does not actually dial out as expected.

My Outbound Rule on PBX A is set to match any 5-digit number starting with “1” (pattern ^1\d{4}$) and send it over the SIP bridge to PBX B.

What I expect:
  • Call arrives on DID 0123456789 at PBX A
  • CFD (or call-processing script) performs a blind transfer to 16804
  • PBX A sees “16804” matches the Outbound Rule, sends it over the bridge
  • PBX B extension 16804 rings, single-leg call for the caller

What actually happens:
  • TransferComponent either is ignored (when number not recognized as internal) or results in a second call leg (with MakeCall)
  • No single-leg outbound call via the Outbound Rule
Questions:
  1. Has anyone successfully implemented a CFD TransferComponent to an external extension on another bridged 3CX PBX, in a single-leg fashion?
  2. Are there special settings or syntax in CFD (TransferComponent or Execute C# Code) to force a true blind transfer to an external number that invokes the Outbound Rules?
  3. If CFD cannot do this, what is the recommended way (C# call-processing script or other) to achieve this scenario?
Any guidance, code snippets, or alternative approaches would be greatly appreciated!

Thank you in advance for your help.

PBX A: 3CX v20 U5
PBX B: 3CX (bridged via SIP trunk)
DID on PBX A: 0123456789 → target ext on PBX B: 16804
 
Can you confirm if the session.did variable has actually a value set? This variable will only be set when there is an inbound rule for it. If it's the default routing for the SIP Trunk, the variable remains empty. You can use the Logger component to log the value and then check if you need to adjust something in the 3CX inbound rules.
 
  • Like
Reactions: Evolute IT
BTW, the Logger component writes to the 3CXCallFlow.log file, ensure that 3CX logging level is in verbose.
 
  • Like
Reactions: Evolute IT
Is your outbound rule filtering on more than the prefix&length? Like a department or ext range?
 
Is your outbound rule filtering on more than the prefix&length? Like a department or ext range?


Hi, thanks for the suggestion!
It turned out my “Bridge” outbound rule was indeed scoped to one or more departments, so when the CFD script ran at system level the caller-ID didn’t match any of those department groups and the rule was skipped.
To work around it I created a second, temporary outbound rule that:
1. Has no department (or extension-range) restrictions
2. Uses a random prefix (so it doesn’t conflict with my existing rules)

As soon as I dialed through that rule the call bridged correctly to the external extension. I’ll remove the temporary rule once everything’s confirmed.

Thanks again for pointing me toward department-based filtering—great intuition!
 

Members Online Now

No members online now.

Forum statistics

Threads
111,832
Messages
589,286
Members
164,662
Latest member
DejanMDS