Configuring CUCM with Cafex


This is a basic guide to enable calling from a CUCM to FCSDK.

This guide assumes you have sufficient CUCM knowledge to do:

  • Configure CUCM trunks
  • Configure routing patterns
  • Configure SIP Normalization scripts 
  • Configure Address Mode

For these steps we will be using an FCSDK user 1001@fcsdk.registration.domain as an example. You will also need to know the FCSDK SIP/Registration/Control domain:

https://<fcsdk address>:9990/ --> Profiles --> SIP --> Application Routers --> FCSDKgatewayAppRouter --> Controlled domains.

Trials Environment: The SIP domain will be


FCSDK calling to CUCM

1) Add an Outbound SIP Servers to FCSDK configuration

Go to https://fcsdk_server/web_plugin_framework/webcontroller/admin/

You can add the SIP Url of the CUCM on even the SIP Url for fcsdk_server.

2) Call the full URI

To call from FCSDK to CUCM you will need to ensure there is a trunk to the FCSDK IP on CUCM, which is created in step 2 above. Other than that you simply need to dial the full SIP URI in FCSDK, i.e.


Note: If you added the IP of the CUCM as the outbound SIP server you can dial the extension directly:  <EXT>

 3)Confirm Address Mode

Under certain circumstances CUCM requires that FAS presents an IP address over the cluster-address.  This can be achieved by setting the External Address Mode: to load-balancer.  Profiles --> SipServlets --> Configuration --> SIP External Address Mode

CUCM calling to FCSDK

Method 1

1) Create a Normalization script

You will need to create a normalization script that will be applied to the CUCM trunk.

Device > Device Settings > SIP Normalization Script

This will alter the SIP message to change the hosts part of destination addresses to be what FCSDK expects. The script for our example user is as follows:

M = {}
function M.outbound_INVITE(msg)
local method, ruri, ver = msg:getRequestLine()
local uri = string.gsub(ruri, "@(.*):%d+", "@%1")
return M

You would alter the script to reflect your FCSDK registration/SIP domain.

2) Create a trunk on the CUCM to the FCSDK.

On the CUCM configure a trunk to point to the IP of the FCSDK with a 100x routing pattern, and remember to apply the normalisation script from step 1.

3) Now you can call your FCSDK user's number (e.g. 1001) from a Cisco device.

Login to the FCSDK Sample ( and call the user's number from a Cisco device.

4) ONLY FOR THE TRIALS ENVIRONMENT: Move IP address in controlled domains

If you are using the Trials Environment you may need to move the FCSDK IP address from the TrialEnvAppRouter to the FCSDKGatewayAppRouter under:

https://<fcsdk address>:9990/ --> Profiles --> SIP --> Application Routers --> FCSDKgatewayAppRouter --> Controlled domains.


Method 2

Calls initiated from CUCM typically append :5060 onto the domain of the Request URI.  For example:

INVITE sip:1001@

RFC3261 mandates that the domains is not equivalent to  Thus we must add the domain including the port to the FAS controlled domain & make sure the user's registration contains the port.

1) Add the Controlled Domain to include :5060

Go to: https://fcsdk_server:9990

Go to: Profiles -> ha -> Subsystems -> SIP -> Application Routers

2) Add an extra Name to include the existing Controlled Domain and include :5060

3) A FCSDK User must be configured to create it's contact including this new domain.  This is done in the client application by altering the JSON payload when creating the User:

                "username": "1001",
                "displayName": "1001",
                "domain": "",
                "inboundCallingEnabled": true
A call from CUCM can now be routed to this User.


 Comments are disabled on these articles if you require help contact

Have more questions? Submit a request