The current Office Communications Server 2007 documentation doesn’t go into very much detail regarding the configuration and behavior of Phone Normalization in the Address Book Service. I won’t be going into any details regarding customization of normalization rules and how they operate, as the purpose of this blog entry is just to understand how to enable this feature and how to force OCS to load the changes.
Generic_Phone_Number_Normalization_Rules.txt
Sample_Company_Phone_Number_Normalization_Rules.txt
But after installing OCS 2007 you will find that only the Sample file exists, and not the Generic file. I have yet to confirm this, but my suspicion is that these rules are no longer stored in a read-only text file but have been integrated directly into the service.
Executing the abserver -dumpRules command will display the built-in rules for verification. (The executable abserver.exe is located in the ServerCore subdirectory of the OCS installation folder.)
In order to create and activate any custom rules you’ll need to create a new file in the proper location, rebuild the address book file, and manually force a Communicator client to download the updated file from the front-end server. (The default OCS configuration resynchronizes the address book at 1:30AM local time each day.)
Step 1
Find the current location of the Address Book Server files by clicking on the Standard Edition Server or Enterprise Pool and expanding the Address Book Server Settings in the Office Communications Server 2007 management console.
The default location on the Standard Edition Server in my lab is:
But an Enterprise Edition deployment creates shared folders for the Address Book and Meeting information, so a UNC path may be shown instead:
Step 2
Create a new text file with the name "Company_Phone_Number_Normalization_Rules.txt" and configure the desired normalization rules.
Step 3
Execute the command abserver -regenUR to trigger the User Replicator regeneration process.
C:Program FilesMicrosoft Office Communications Server 2007ServerCore>abserver -regenUR
Triggering UR regenerate – successful.
You might have to wait up to 5 minutes for it to actually complete.
Monitor the Office Communications Server event log for events in category 1009 and source OCS User Replicator:
Event Type: Information
Event Source: OCS User Replicator
Event Category: 1009
Event ID: 30027
Description: User Replicator has started initial synchronization…
Event ID: 30024
Description: User Replicator has completed initial synchronization…
Event ID: 30028
Description: Address book (AB) entries are populated successfully…
Step 4
After seeing Event ID 30028 confirming completion, execute the command abserver -syncNow to trigger a new Address Book Server synchronization pass.
C:Program FilesMicrosoft Office Communications Server 2007ServerCore>abserver -syncNow
Triggering Address Book Server synchronization pass – successful.
You might have to wait up to 5 minutes for it to actually complete.
Monitor the Office Communications Server event log for events in category 1008 and source OCS Address Book Server:
Event Type: Information
Event Source: OCS Address Book Server
Event Category: 1008
Event ID: 21005
Description: Synchronization pass started.
Event ID: 21034
Description: One or more phone numbers failed to normalize.
Event ID: 21007
Description: Synchronization pass completed successfully.
Event ID: 21056
Description: Synchronization Pass Summary.
Event ID: 21058
Description: Synchronization Pass Summary for Device Address Book files
Event ID: 21004
Description: Next synchronization pass will start at: 11/17/2007 1:30 AM
Once synchronization has finished you can test any custom normalization rules using the command abserver -testPhoneNorm.
Step 5
On a workstation running Office Communicator 2.0 make sure to sign-out and exit the client.
Remove the local copy of the Address Book by deleting the file %USERPROFILE%Local SettingsApplication DataMicrosoftCommunicatorGalContacts.db.
Restart the OC client and sign-in. The updated address book should now be enabled for the client.
Update:
I recently discovered where the normalization information is kept on the client. It’s not stored in the GalContacts.db, but in the registry. So if you are updating changes for Communicator and not necessarily making changes to the Address Book, then the last step above may not be required. Simply restarting the Communicator client should read-in the updated value:
Key: HKEY_CURRENT_USERSoftwareMicrosoftCommunicator
Value: PhoneNumberNormalizationRules
Type: REG_SZ
Update 2:
After further testing I’ve discovered that the initial abserver -regenUR command is not required when trying to update changes to the normalization file. Also, the Communicator client is programmed to automatically update the galcontacts.db file each time the application is launched, so simply exiting and restarting without manually deleting the file seems to also pick up changes in the address book.