Exchange Server 2007's Unified Messaging service can be a bear to get running well. Scott Lowe spent a week helping a college through some of its final outstanding issues in getting this service running with a Cisco PBX. Here are some of his findings, which may help you with your own implementation.
This week, I took a break from my daily activities in order to try something a little different. My break consisted of moonlighting at another college campus where I was brought in under a contract to help the on-site IT staff complete their implementation of Microsoft Exchange Server 2007's Unified Messaging. The college's phone system is a Cisco Unified Communications Manager setup running version 6.1 of the software. Due to the sometimes complexity of the Exchange 2007 UM integration and a lack of time to spend on the project, the on-site IT staff had limited their installation to an IT-only test bed, although a few users outside the department are also taking part in the pilot.
I'll share with you the problems the college was running into, as well as some of the things we did to fix the issue. This isn't a complete how-to guide to integrating the two products, but it might help you at some point along the line.
The primary challenges (with our general solutions) facing the college were:
- Unable to transfer calls from voicemail. This also meant that users were unable to set up personal operators. We discovered that the SIP trunk configured on the Cisco side of the equation did not have the right calling search space configured. The SIP REFER command that was being sent from the Exchange server to the Cisco server was being dropped as a result. Under Exchange 2007, a transfer of any kind is enabled through the use of SIP referrals. Once we corrected this issue on the PBX, calls were able to be transferred at will.
- Outlook's "Play on Phone" feature worked on every other try. Outlook and Outlook Web Access' Play on Phone feature uses the SIP INVITE command to invite the user's phone device to a UM conversation (instead of the SIP REFER command, which hands off the call to another device). In this case, Play on Phone requests were being sent in a round-robin style to each of the college's two Cisco Call Manager servers. The second Call Manager server was dropping these requests, but the first Call Manager server was serving them with no problem. As a temporary workaround while the on-site staff investigates the problem with the second Call Manager server, I disabled outbound calls from being sent to the second Call Manager server. These kinds of options are modified at the Dial Plan configuration level in Exchange.
- Message waiting lamps didn't light. Exchange 2007 does not provide a native mechanism for lighting message waiting lamps on devices. This is a relatively well-known fact in the Exchange UM world and is, quite honestly, a bit perplexing. There are, however, a number of third-party options available on the market to address this need. We chose to use etcMWI for the college.
- Concerns about the impact of voicemail on mailbox size. Adding something significant to the user's existing mailbox has the potential to seriously increase mailbox size, which is a situation that is not desired by the college. We changed the voicemail storage codec to GSM, which, from a space perspective, is much more efficient than the default G.711 codec. GSM uses about 10% of the disk space of G.711. The quality is a little lower, but this was deemed to be an acceptable trade off.
If you're having trouble with Exchange Server 2007 Unified Messaging, the Windows Event Log is your friend, assuming you configure the Exchange services to a level that provides useful information. For the week I was on-site, I configured event logging for the Unified Messaging components to be set at the maximum verbosity. While there was a lot of superfluous information written to the logs as a result, I was able to come across information that helped me pinpoint exactly where problems were occurring.
Use the set-eventlog PowerShell command to change the logging level for UMCore, the underlying service that supports Unified Messaging:
Set-EventLogLevel -Identity "UM_Server_Name\MSExchange Unified Messaging\UMCore" -Level Expert