Friday 28 October 2011

MGCP Control of a Fractional PRI

Using MGCP usually makes life much easier with Communications Manager, but unfortunately it does assume that any PRI circuit is using the full amount of channels (23 for a T1 or 30 for an E1) and therefore doesn't support fractional PRIs.
Here's how to kludge MGCP into using a fractional PRI in 7 easy steps, for this example I'm using an E1 in slot 0/0/0:

1) Configure the gateway as normal in Communications Manager, then on the gateway use the ccm-manager config commands to configure it automatically:
ccm-manager config server x.x.x.x
ccm-manager config

2) Shutdown the voice-port:
voice-port 0/0/0:15
 shutdown
controller E1 0/0/0
 shutdown

3) Remove the ISDN layer 3 binding:
interface Serial 0/0/0:15
 no isdn bind-l3 ccm-manager

4) Replace the pri-group:
controller E1 0/0/0
 no pri-group
 pri-group timeslots 1-x service mgcp

5) Restore the ISDN layer 3 binding:
interface Serial 0/0/0:15
 isdn bind-l3 ccm-manager

6) Enable the voice-port:
controller E1 0/0/0
 no shutdown
voice-port 0/0/0:15
 no shutdown

7) Disable auto-configuration downloading, otherwise Communications Manager may undo your hard work:
no ccm-manager config
copy running-config startup-config

Wednesday 26 October 2011

Upgrading Old Versions of Communications Manager and Phones

This is a problem you'll encounter when either upgrading an old install of Communications Manager (usually versions prior to 6) or plugging in an old phone that was found in a store cupboard somewhere...


Both SCCP & SIP firmwares for 7900 series phones prior to 8.3.3 can't be directly upgraded to newer versions, it'll usually give an error message along the lines of "auth fail" when the phone tries to download the newer firmware. The solution is to upgrade the phone to 8.5.2, then you can upgrade to any newer firmware. To do this I have a UC540 configured with 8.5.2 firmware loads for most models of phone, then it's just a case of plugging the old phone into the UC540 to do the interim upgrade before connecting it to the live Communications Manager.
You can check a phone's firmware version by going to Settings > Model Information, the version is listed under Load File.

Tuesday 25 October 2011

LDAP Synchronisation Filters

LDAP synchronisation has moved on from a nice optional feature to a necessity with Cisco's Unified Communications applications. Cisco Unified Personal Communicator is crippled without LDAP integration and if you want to do a Unified Messaging deployment in Unity Connection then integrating with Active Directory is required.

You can specify multiple user search bases to target the LDAP synchronisation, but what about the situations where you don't want to import all the users within an OU? Or worse still when there's users that aren't importing?

Users Not Importing From LDAP

Ever done a Communications Manager deployment and wondered why there's less users in Communications Manager than there is in AD? The LDAP sychronisation excludes users who lack a last name, typically users associated with an actual person will have these fields populated so you won't necessarily encounter this problem. However once in a while you may have service accounts or generic logins that require importing from AD yet lack these fields.

LDAP Filters

So your customer's AD structure is a mess and there's a ton of users you don't want to import intermingled with the users you do want. This is where LDAP filters come into play, an LDAP filter takes the form:
<filter>=(<attribute><operator><value>)

Where <attribute> is an LDAP attribute (e.g. "sn" for last name), <operator> is a boolean operator (e.g. "&" for and) and <value> is the value for comparison.
You can then nest multiple filters like so:
(<operator><filter1><filter2>)

A more detailed overview of the syntax can be found on MSDN.

Examples
A school where staff and student accounts reside in the same OUs, but student accounts begin with the year they'll graduate. We can exclude users whose username starts with a number:
(!(|(sAMAccountName=0*)(sAMAccountName=1*)(sAMAccountName=2*)(sAMAccountName=3*)(sAMAccountName=4*)(sAMAccountName=5*)(sAMAccountName=6*)(sAMAccountName=7*)(sAMAccountName=8*)(sAMAccountName=9*)))

Large numbers of staff don't have access to a telephone or only use a shared team phone, we can exclude staff without a phone number in AD:
(telephoneNumber=*)