[Resolved] UCM to 3cx trunking


I know there are a couple 3cx guys on the board and we are working out a demo for a company who already has 3CX in place at their main office but are wanting the UCM at the smaller sites (cost trumps 3cx) in my lab against my 3CX system I have calls going between one another no problem but caller ID from the UCM to the 3cx just shows the prefix digit for the link.

We ran into multiple issues when running as a regular trunk (had to create individual rules per extension for some reason) so tried out the bridge option which is working much better except for the caller ID. If anyone has any ideas I would greatly appreciate it because this is the one thing that is stopping sign off. 3CX is a secondary thing to me and Asterisk is a secondary thing to the partners so we are at a weird fuzzy area where if we can find that small common ground many issues will be taken care of.

Bridge UCM with 3CX

I’d tried this with our in house 3CX and, like you got calls between the systems easily enough. The 3CX side initially displayed xxx.xxx.xxx.xxx:5060 as the callerid. Changing the UCM SIP settings to send RPID then displayed the trunk username.
As this must be identical on both sides logically the only way to send extension number as callerID over the bridge is where the trunk username is the same as an extension number.
As extension numbers on the 3CX side will be duplicated this won’t work obviously. I’ve done it with Asterisk to 3CX but UCM, as yet, doesn’t give access that you’d need to achieve this.


I no longer have access to the 3cx system - but this worked for me.
I had a 6102 in a remote location as a Trunk.
The users on the UCM side dialed the SIP ID of the 3cx users.
I know on 3cx side, we could see the Caller ID.
On the UCM side, they would only see the trunk info when a call came from 3cx.


Caller ID is working well enough for me on the UCM side (not perfect but enough to work. I can get it to display the extension calling or the name but not both (which makes redial fun). I would like both name and extension but for now extension is adequate.

The real fun is the 3cx displaying caller id as “7” which happens to be the carrier digit set on 3cx to access the bridge. It looks unprofessional and I don’t like it so I can only imaging what complaints regular customers will have (even though they do not currently have interconnected phone systems)

Are you / were you using trunk (as in setup a generic VOIP provider), the 3cx bridge as a master, or some other setup?

I appreciate the info greatly, I am just trying to narrow down things and hopefully find a workaround.


I have it working here now
Set up a peer SIP trunk on UCM and 3CX.
On the 3CX Create a series of DDI’s which route calls to each extension. Logically I created a DDI 202 which routes calls to x202 and so on.
Now on the 3CX server, edit the SIP trunk settings you’ve just created, go to the Source ID tab and change 'SIP field containing DID numbers to ‘From:user part’.
Set up a dial plan to send calls to this trunk and they should display the extension number and callers name (if defined on the UCM) on your handset.

I tested with UCM6102 FW1.0.9.9 and GXP2130. 3CX12.5 with GXP2200 and GXP2130


Forgot to add that this will display callerid on a handset on 3cx for a call from UCM.
However the reverse isn’t true! A call from 3CX to UCM won’t display callerID but will display the trunk number. I guess you may need a trunk for UCM->3CX calls and the bridge for 3CX->UCM calls and display callerid.


Well I have the UCM displaying caller ID extension or name (not both) for calls from 3cx but all calls to 3cx from the UCM just show up as “7” which is the carrier code to access the trunk.

I don’t quite like making DID rules but that may be the way to go. I just have issues with the peer trunks due to the fact they are unmonitored it is very hard to tell what is wrong when problems occur as opposed to seeing “registered” on the front screen. I have this concern with the GS FXO adapters as well so it’s just me and how uptight I can be.


If you’re using the bridge then 3CX can’t see anything on the inbound call apart from the IP address and port of the source of the invite. Its designed for 3CX->3CX trunking where DDI/extension numbers are concerned.
The SIP/VOIP trunk on 3CX behaves as any other SIP trunk so you have to define DDI’s in order to route calls. I think if you want callerID from UCM->3CX there’s no other way to go unless I’m missing something obvious


Cool deal, I will give it a shot. Dealing with my business partner’s 3cx at his site connecting to my GS and we had issues with the original trunk and all of the random notes I found on the interwebs pointed at trying the bridge mode. Specifically the issue may have been revolving around your note for DID rules.

I was just wanting to verify with someone who may have replicated the same scenario before making changes on his live system. I am not worried about breaking it I just prefer not change things if I was missing something in my steps. I consider myself beyond knowledgeable but will never call myself an expert so there is always the large chance i screwed something basic up.

I appreciate the info and will give it a run through.


There were definitely some tweaks to do on the systems but I was mainly able to make the needed things all happen on the UCM.

I set up the 3cx as a bridge master and then if you enable Trust Remote Party ID and Send Remote Party ID the caller ID will pass between the two with both names and extensions as long as you have information entered in the CID section on each of the extensions in the UCM.

The 3cx isn’t appending the leading digit to access the trunk to the CID so redial doesn’t work but I imagine this is something I can work around when I feel like it. At this point it was more proof of concept for a future project as well as making my office communicate with my partner’s office and he is migrating the main system there from a Cisco UC320 to 3cx.