As time goes on and I get more Office Communications Server, Exchange 2007 UM and Cisco CallManager integration projects under my belt, the more I learn about the quirky nature of various implementations of SIP and how they interpret RFC behavior.
This problem between Exchange UM and Cisco Call Manager (CUCM) happens when you have "chained" call forwards, which causes diversion headers to be "stacked" with the trail of phone number extensions traversed.
Exchange 2007 RTM will read the bottom diversion header, and Exchange 2007 SP1 will read the top diversion header. The RTM behavior is the correct behavior when interfacing with CUCM, and most other SIP implementations, for the original caller to be identified correctly. The last diversion header contains the original phone number, which is what we want Exchange to use.
On a good note, we can take advantage of a CUCM bug that exists from version 6.0.x to 6.1.1b that will reverse the diversion header order, which works around the Exchange UM SP1 issue.
Workaround: Allow direct transfer to voicemail on the CUCM configuration and this reverses the order in which the diversion headers are sent.
(Un)fortunately, CUCM versions after 6.1.1 contain the fix
CSCsl15554, which breaks this temporary workaround. CUCM 6.2 is becoming the popular standard for new deployments, with CUCM 7.x on the horizon. Microsoft is working on fix for Exchange 2007 SP1 to restore the RTM behavior.
I didn't figure out this trick/workaround. The people who are posting in
this thread on TechNet are the ones who figured it out!