Exchange 2010 SP1 Unified Messaging inter-op with OCS - Location Profiles

With Exchange Unified Messaging 2010 SP1 the call transfer to extension has improved to facilitate OCS to make the decision on how to route the call.

Prior to UM 2010 SP1, UM will send the actual location profile to be used to make the call to the user by OCS. This was indicated in the Refer-To header in the REFER (message used to transfer the call to the extension).
phone-context=<location profile>

This information came from the UM Dial plan, whose name should be exactly same as the OCS Location profile.

In UM 2010 SP1, this location profile information is no longer relayed. In the Refer-To header, you will now see -
phone-context=user-default

Which basically means use the default location profile. With this UM empowers OCS to select the best location profile it wants to use.

One caveat here is that if OCS has not already set the default location profile this will need to be done. If the location profile is not selected for this OCS Pool you may see the symptoms like -
 1. Exchange UM 2010 SP1 Dial by extension does not work for OCS dial plan.
 2. Key mappings that map to extensions like Operator do not work.

However, when users use the AA - Directory look up, call complete fine. This will work because with directory look up the call is actually made using the SIP URI of the user and not the extension. The Refer-To header in this case will contain the SIP URI.

If you are running into this kind of problem, using the OCS logger, get the TranslationApplication component logs with all flags while reproducing the issue. You should see -
TL_INFO(TF_COMPONENT) [3] <TimeStamp> (TranslationApplication,PhoneNumberTranslator.TranslateNumber:phonenumbertranslator.cs(250))( 0000000001794AAA )calledNumber='126'
TL_WARN(TF_COMPONENT) [3] <TimeStamp> (TranslationApplication,PhoneNumberTranslator.GetProfileByName:phonenumbertranslator.cs(628))( 0000000001794AAA )Phone-context is user-default but no user-level or pool-level default defined.
TL_WARN(TF_COMPONENT) [3] <TimeStamp> (TranslationApplication,PhoneNumberTranslator.TranslateNumber:phonenumbertranslator.cs(275))( 0000000001794AAA )Profile='user-default' not found (or invalid)

You can set this default location profile on the Pool Level - Front End Properties. Once the right location profile is selected, call should route immediately.

Pre - Requisites for OCS integration with Exchange UM 2010 SP1 -
 1. Works only with OCS R2,
 2. OCS R2 should be at least at CU5.
 3. Set up a default location profile for the pool