Call Manager Express – Class of Restriction (COR) Lists

I spend most of my time as a voice engineer dealing with Call Manager and Contact Center Express, but once in a while I get thrown a “small” problem involving Call Manager Express.  CME is generally deployed for smaller customers (<100 phones) who don’t need all the fancy features or capacity offered by full-blown Call Manager.  Unfortunately, most of my customers are fairly large so I don’t get to play with CME often.

A few weeks ago I had some spare cycles so I was tossed into a case for a customer having issues with their CME and some FXO lines.  Summary: they have 8 FXO lines, 6 of which in a hunt group, and 2 need to be assigned for 2 specific individuals at the company.  The hunt group configuration was tricky, but let’s focus on the 2 extra lines.  They want these FXO ports setup so that User1 and User2 always use 0/2/1 and o/2/2 (respectively) for outbound calls, so that when people call back they get the right person.  This would be a piece of cake in UCM: create a special partition and CSS for each of those users, add route patterns pointing to the correct FXO as the gateway, and apply the CSS to the user phones.  15 minutes of work, tops.  Except CME doesn’t have Partitions and Calling Search Spaces.

Call Manager Express does have COR Lists though.  They are somewhat analogous to partitions and CSS, with some minor differences.  First, let’s start setting them up:

! This is basically creating a list of partitions (members)
dial-peer cor custom
 name 911
 name local
 name domestic
 name intl
 name local-user1
 name local-user2
 name domestic-user1
 name domestic-user2
 name intl-user1
 name intl-user2

So there are all of our partitions.  Now we need to assemble them into “cor lists” which are just like Calling Search Spaces:

dial-peer cor list outbound-all
 member 911
 member local
 member domestic
 member intl
dial-peer cor list outbound-user1
 member 911 ! Make sure everyone can dial this
 member local-user1
 member domestic-user1
 member intl-user1
dial-peer cor list outbound-user2
 member 911 ! Make sure everyone can dial this
 member local-user2
 member domestic-user2
 member intl-user2

The next step is to assign these lists to the DN on the phones.  It is important to assign a cor to every ephone-dn because any DN without a cor will take precedence and can call out any dial peer that matches.

ephone-dn 30
 number 1055
 cor incoming outbound-user1
ephone-dn 31
 number 1056
 cor incoming outbound-user2
! All other ephone-dn will use outbound-all.

The user side is complete, so the next step is to make sure our outgoing dial peers are selected properly.  We will need to create individual cor lists for each dial peer so that we can select between the different call types and also select for the user.  You will see how this configuration could quickly get out of hand if you had many users who want dedicated lines like this, especially if you’re using FXO ports.  I am also not including any blocked number patterns (900, 976, etc) so this configuration is pretty short.  A PRI configuration would be much shorter on the dial peer side.

dial-peer cor list call_911
 member 911
dial-peer cor list call_local-all
 member local
dial-peer cor list call_domestic-all
 member domestic
dial-peer cor list call_intl-all
 member intl
dial-peer cor list call_local-user1
 member local-user1
dial-peer cor list call_domestic-user1
 member domestic-user1
dial-peer cor list call_intl-user1
 member intl-user1
dial-peer cor list call_local-user2
 member local-user2
dial-peer cor list call_domestic-user2
 member domestic-user2
dial-peer cor list call_intl-user2
 member intl-user2

Whew, that’s a lot of typing and we’re not even done yet.  I should write a script to generate these.  The final step involves assigning these lists to the actual outbound dial peers so that the correct one is selected based on the user making the phone call.  I am going to assume that all of your dial peers are otherwise setup correctly, so I will only include the cor configuration here:

dial-peer voice 21 pots
 port 0/2/1
 corlist outgoing call_911
dial-peer voice 22 pots
 port 0/2/2
 corlist outgoing call_911
! Repeat the above for all 911 dial peers of course.
dial-peer voice 31 pots
 port 0/2/1
 destination-pattern 9[2-9]..[2-9]......
 corlist outgoing call_local-user1
dial-peer voice 32 pots
 port 0/2/2
 destination-pattern 9[2-9]..[2-9]......
 corlist outgoing call_local-user2
! All other local dial peers will get "corlist outgoing call_local-all"
dial-peer voice 41 pots
 port 0/2/1
 destination-pattern 91[2-9]..[2-9]......
 corlist outgoing call_domestic-user1
dial-peer voice 42 pots
 port 0/2/2
 destination-pattern 91[2-9]..[2-9]......
 corlist outgoing call_domestic-user2
! All other domestic dial peers will get "corlist outgoing call_domestic-all"
dial-peer voice 41 pots
 port 0/2/1
 destination-pattern 9011!#
 corlist outgoing call_intl-user1
dial-peer voice 42 pots
 port 0/2/2
 destination-pattern 9011!#
 corlist outgoing call_intl-user2
! All other international dial peers will get "corlist outgoing call_intl-all"

So how does this all work? When User1 picks up their phone to make a call, CME looks at the corlist “outbound-user1″ which contains “911, local-user1, domestic-user1, intl-user1″ as members. When CME starts looking at dial peers to match the number dialed, it looks for dial peers that have a corlist that contains the same members as the ephone-dn corlist, then a dial peer that has no corlist at all. This is why it is important that you assign a corlist to all ephone-dn and dial-peer configurations so calls don’t slip through (unless you want them to).

You’ll notice that I made no effort to force 911 calls out any specific port. I left this open so that in an emergency any available port will be used, because it really doesn’t matter in that case. You also need to make sure that every outbound dial peer has a corlist associated, otherwise that port can be used by any phone DN for outbound calls.  Of course you want to do extensive testing after this configuration, especially for 911 calls (check with your local PSAP for testing information, they’re not all easy to deal with).

I found most of the information for this config in the Configuring Class of Restrictions document plus a little fiddling on my own.

About these ads
Explore posts in the same categories: Cisco, Technology

Tags: , ,

You can comment below, or link to this permanent URL from your own site.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


Follow

Get every new post delivered to your Inbox.

%d bloggers like this: