Showing results for 
Search instead for 
Did you mean: 

AMA-CUCM Troubleshooting: Best Practices for Reading Trace Files

Using Communications Manager to block calls based on Caller ID


Ever since the introduction of "Route Next Hop By Calling Party Number" in Unified Communications Manager 8.X and beyond, we do not have to rely upon our gateways or carriers to do call blocking!

While the feature that allows this has been in Unified Communications Manager for awhile now, it can be a little obscure on how to get things setup (but not really once we explore how it works).

What we're essentially going to do is take all the inbound calls and run them through a translation pattern that will route all the calls to the next hop based upon calling party ID. The next hop in this case (much like in routing) is referring the next thing after the current, which would be whatever partitions the CSS in the translation pattern is allowed to talk to.

Lets start by creating all the elements that we need, then we'll explore how they all get put together.

  • Create two new partitions; INBOUND_CALLS and FILTER_LIST
  • Create two new Calling Search Spaces (CSS); TO_FILTER_LIST and GATEWAYS
  • Add the INBOUND_CALLS partition to the GATEWAYS CSS (and nothing else)
  • Add the FILTER_LIST partition to the TO_FILTER_LIST CSS (and nothing else)

The next pieces we need to add are the two translation patterns that will be doing most of the heavy lifting. The first translation will be called "SCREEN CALLS" and located in the INBOUND_CALLS partition with only the exclamation point ( ! ) as the pattern (just a single character). The Calling Search Space of this translation pattern needs set to the FILTER_LIST CSS created above and also check the "Route Next Hop By Calling Number" box.

The second Translation Pattern that we need to create is called, "CALL SCREEN BYPASS" and is located in the FILTER_LIST partition with only the exclamation point ( ! ) as the pattern (just a single character). The Calling Search Space of this translation pattern needs set to a different Calling Search Space that has access to a partition where all the DNs are located. It is important to note that the translation patterns SHOULD NOT have anything in the Called and Calling Party Transformation Mask fields.

Once you have everything described above created, the last step is to change the inbound CSS setting on the gateway/trunk between Unified Communications Manager and the gateway router to the GATEWAYS Calling Search Space that you created in the above steps.

As a call rings in from the carrier/ITSP, it rings through the gateway/trunk and finds the GATEWAY CSS which can only talk to the INBOUND_CALLS partition. The only element in INBOUND_CALLS is a translation, ! which routes to the next hop by calling number but the translation can only talk the FILTER_LIST partition via the TO_FILTER_LIST CSS which is set in the ! translation found in the INBOUND_CALLS partition.

Now the call is presented to the FILTER_LIST partition with the CALLING PARTY NUMBER as the primary lookup method. If a translation pattern matching the calling party number is not found, the call is then matched to the ! translation pattern in the FILTER_LIST partition, which is set to send to the next hop with the traditional CALLED party lookup through a Calling Search Space that can talk to the partition with all the DNs in it.

If you create a translation pattern with the number you want to block as the pattern and put it in the FILTER_LIST partition, you could block the pattern or route the pattern to an alternate location.


Hey Ryan,


i know this is a few years late, but there's a slight typo in the (well-written) document.  When you say the 'Second Calling Search Space we need to create' should say 'The second translation pattern,' correct?  But overall very helpful.


Correct Greg! Thanks!

CreatePlease to create content
Content for Community-Ad
August's Community Spotlight Awards