Route inbound call to Trunk


In a scenario where you have multiple UCM’s, it would be great to be able to direct an inbound call to UCM1 to UCM2 over a peer SIP trunk between the devices.

I understand there are workarounds available to do this, however these appear more of a kludge than a real solution.

This would be great in environments with multiple offices (and multiple UCM’s) but where all external SIP sessions are connected via a single UCM.


I honestly don’t understand what you’re trying to do.


The peered trunk also peers the extensions making them available to do exactly what you want.

Select the other UCMs extension in the Ring Groups and Queues via the LDAP extensions.


It sounds like your describing interconnected UCM’s. Not a kludge but a proper process. Although, ironically, I’m have a struggle with one of my interconnected systems right now, I swear this works great.

I have setup something similar to what your talking about. Customer calls the local area code but dials the extension or IVR option for the other office and it’s answered there. I think you’re asking to have a specific number that, any time anyone calls it, it’s answered by another office.

Good luck,


It’s not just a single number - it could be an entire number block (of say 10 or 100 numbers).

The flipside is also a requirement - have an extension on UCM2 that routes outbound calls via the peer trunk to UCM1. UCM1 then sends the call out via the SIP Provider.

Consider the setup below: (excuse the poor ASCII art)

----------------                          -------                           --------
| SIP Provider | ------ Provider SIP --- | UCM1 |-------- Internal SIP ---- | UCM2 |
----------------                         --------                           --------
                                             |                                  |
                                         ---------                          --------
                                         | Ext 1 |                         | Ext 2 |
                                         ---------                          --------

In this scenario, UCM1 has a set of extensions and so does UCM2. But only UCM1 has external SIP connections to providers with connections to the PSTN.

So calls coming in bound for Ext2 need to be routed from UCM1 to UCM2 and then to Ext2. Likewise, calls to numbers on the PSTN need to originate from Ext2 to UCM2 and then to UCM1.

This is something Ive done in the past with Asterisk or with Cisco UCM. I’ve read all the documentation I can find, but cannot see a way to do this effectively?


What you describe is straightforward to achieve and is documented
This describes firstly how to interconnect two or more UCM units

Then consult the user manual

page 249 which details how to add a remote extension in a ring group. From what you describe this should achieve what you need


The key is the peer trunk inbound routes to the UCM with the SIP trunks. As you know, when interconnecting two UCMs, you use a peer trunk. To reach a destination, the inbound rule on UCM would normally have a DID pattern which represents the extension being dialed by UCM2 to UCM1. So if the extensions on UCM1 are from 1000 to 1999 and the extensions on UCM are 2000-2999, then the outbound route from UCM2 would have a dial plan of 1XXX. The inbound route at UCM1, in order to take the call from UCM2 would have an inbound route for the peer looking for 2XXX. The opposite is true for the reverse from UCM1 back to UCM2.

Now then to get a peer to “hop on” to UCM1’s trunks, you use the same peer trunk between sites, but you create a new inbound route at UCM1 using extensions and then check the dial trunk and for the extensions it is again BY DID. The inbound route dial pattern would be those needed by the SIP trunk provider. As this will not match an extension at UCM1 and as you have dial trunk enabled, the call will be directed to your trunk. The outbound rule on UCM2 will also need a to be set with regard to a dial pattern and use can use a preceding digit (9 or whatever) to tell the PBX that you want dials strings with a preceding 9 to use the peer to UCM1 and then strip 1 so the 9 is dropped before passing to UCM1. You could set the outbound rule at UCM2 to be as simple as 9X. which basically tells the UCM that no matter what is dialed, as long as it starts with a 9, send out the peer. At UCM1 for inbound, you could set X. which tells to to accepts any string seen on the trunk from UCM and then let the SIP trunk rules govern if the string meets its requirements.

You could possibly combine the rules into one at each end, but I keep them separate so that if I need to mess with the SIP aspect, I am not messing with site to site calls on extensions.

You will need to check the order of the rules on the outbound.


Thank you very much for this explanation. This has been superhelpful and has solved the scenario that I was dealing with.

I can’t say its super obvious, but the explanation made the implementation relatively easy.

It would be great if Grandstream could add this information to the “How to Interconnect Multiple UCMs” PDF - I did read this, and the only information I could see was related to extension dialling between the two systems.

Thanks again!