This topic discusses advanced Address Book Server features, like phone number normalization, User Replicator, and filtering.

Address Book Server Phone Number Normalization

Office Communicator requires standardized RFC 3966/E.164 phone numbers. To use phone numbers that are unstructured or inconsistently formatted, Office Communications Server relies on the Address Book Server to perform phone number translation in conjunction with mapping rules. If the UseNormalizationRulesWMI property is set to TRUE, ABServer.exe reads the phone numbers from the RTC database, normalizes them (if necessary), and then writes the normalized values into the address book (that is, download) files and the Address Book Web Query database RTCAb. Clients, such as Office Communicator and Communicator Mobile, can use these normalized numbers.

You can apply two types of rules to phone numbers. One type is the set of generic rules that are automatically performed by the server. The other type is a set of sample company rules that can be edited and is included in the installation folder alongside ABServer.exe. The sample company rules include a comment at the start of the file informing the administrator that if they want specific rules for their company, they should copy the sample file to the output location for the pool and change the name to Company_Phone_Number_Normalization_Rules.txt, so that it will be used for future synchronization passes.

If the UseNormalizationRulesWMI flag is set to TRUE, the rules are applied to those Active Directory attributes with 0x2000 bit set in the Flagscolumn value. If the 0x1000 bit is set in the Flagscolumn value, the associated Active Directory attribute value is always normalized.

Sample_Company_Phone_Number_Normalization_Rules.txt is the sample file in which you configure rules specific to your company requirements. To use this file, copy it to Company_Phone_Number_Normalization_Rules.txt. Otherwise, Address Book Server will use only the generic rules configured by default on the server.

Note:
When you remove the Address Book Server, Company_Phone_Number_Normalization_Rules.txt is not deleted. If you want to remove this file, you must delete it manually.

User Replicator and Address Book Server

The Address Book Server uses data provided by User Replicator to update the information that it initially obtains from the global address list (GAL). User Replicator writes the Active Directory attributes for each user, contact, and group into the AbUserEntry table in the database and the Address Book Server syncs the user data from the database into files in the Address Book Server file store and into the Address Book Web Query database RTCab. The schema for the AbUserEntry table uses two columns, UserGuidand UserData. UserGuidis the index column and contains the 16-byte GUID of the Active Directory object. UserDatais an image column which contains all of the previously mentioned Active Directory attributes for that contact.

User Replicator determines which Active Directory attributes to write by reading a configuration table located in the same SQL instance as the AbUserEntry table. The AbAttribute table contains three columns, ID, Nameand Flags. The table is created during database setup. If the AbAttribute table is empty, User Replicator skips its AbUserEntry table processing logic. Address Book Server attributes are dynamic and are retrieved from the AbAttribute table, which is initially written by the Address Book Server when the Address Book Server is activated.

Address Book Server activation populates the AbAttribute table with the values needed to support Office Communicator 2007 R2. The following table shows those current values.

Table 1. AbAttribute Table Values

ID Name Flags

1

msExchHideFromAddressLists

0xFF000003

2

givenName

0x01000000

3

Sn

0x02000000

4

displayName

0x03020000

5

Title

0x04000000

6

mailNickname

0x05000400

7

Company

0x06000000

8

physicalDeliveryOfficeName

0x07000000

9

msRTCSIP-PrimaryUserAddress

0x08020800

10

telephoneNumber

0x09022800

11

homeNumber

0x0A002800

12

otherHomeNumber

0x0A002000

13

Mobile

0x0B022800

14

otherMobile

0x0B002000

15

otherTelephone

0x0C002000

16

ipPhone

0x0D002000

17

Mail

0x0E000000

18

proxyAddresses

0x00000105

19

groupType

0x0F010800

20

ManagerouPathId

0x10000000

21

0x11000800

The numbers in the IDcolumn must be unique and should never be reused. Also, keeping the ID values below 256 saves space in the output files written by the Address Book Server. However, the maximum ID value is 65535. The Namecolumn corresponds to the Active Directory attribute name that User Replicator should put in the AbUserEntry table for each contact. The value in the Flagscolumn is used to define the type of attribute. The following types of Address Book Server attributes are recognized by User Replicator, indicated by the low byte of the value in the Flagscolumn.

Table 2. Address Book Server Attributes Recognized by User Replicator

Attribute Description

0x0

A string attribute. User Replicator converts this type to UTF-8 before storing it in the AbUserEntry table.

0x1

A binary attribute. User Replicator stores this in the blob without any conversion.

0x2

A string attribute, but is included only if the attribute value begins with "tel:". This is primarily for multi-valued string attributes, specifically proxyAddresses. In this case, Address Book Server is interested only in proxyAddressesentries that begin with "tel:". Therefore, in the interest of saving space, User Replicator stores only the entries that begin with "tel:".

0x3

A Boolean string attribute, which if TRUE causes User Replicator to not include this contact in the AbUserEntry table. If FALSE, it causes User Replicator to include the attributes for this contact in the AbUserEntry table, but not the particular attribute with this flag. This is another special case type that is primarily for the msExchHideFromAddressListsattribute.

0x4

A string attribute, but is included only if the attribute value begins with "smtp:" and includes the "@" symbol.

0x5

A string attribute, but is included only if the attribute value begins with either "tel:" or "smtp:" and includes the "@" symbol.

0x100

If set, this is a multi-valued attribute that can appear more than once for each contact.

0x400

If set, this identifies the e-mail alias attribute for a contact. Address Book Server uses this flag to identify which attribute value to show in the phone normalization event log entry.

0x800

If set, this identifies a required attribute for a contact. Address Book Server includes a user in the AbUserEntry table only if there is a value for this attribute in Active Directory. If there is more than one required attribute, only one of them is required to have a value to include the user in the AbUserEntry table.

0x1000

If set, Address Book Server always normalizes the value of this attribute.

0x2000

If set, Address Book Server uses the normalized number from proxyAddresses, if the UseNormalizationRulesWMI setting is FALSE; otherwise it behaves the same as when the flag bit is 0x1000.

0x4000

If set, Address Book Server does not include objects in the AbUserEntry table that have this value for the specified attribute. For example, if the msRTCSIP-PrimaryUserAddressattribute has this flag bit set, then contacts that have this attribute are not written to the database.

0x8000

If set, Address Book Server does not include objects in the AbUserEntry table that do not have this value for the specified attribute. If both the 0x4000 and 0x8000 flag bits are set on an object, the attribute with the flag bit value set to 0x4000 takes precedence, and the object is excluded from the AbUserEntry table.

0x10000

If set, this represents a group object. User Replicator uses this flag bit to include contacts with the groupTypeattribute whose presence indicates a group (for example, a distribution list or security group).

0x20000

If set, User Replicator uses this flag bit to include this attribute in device-specific Address Book Server files (that is, files with a .dabs extension).

Filtering the Address Book

The users populated in the Address Book Server files can be controlled based on certain Active Directory Attributes listed in the AbAttribute table. One such attribute used for filtering is the msExchangeHideFromAddressBookattribute. This is a user attribute added by the Exchange schema. If the value of this attribute is TRUE, Exchange Server uses this attribute to hide the contact from the Outlook GAL. Similarly, if the value of this attribute is TRUE, User Replicator does not include that user in the AbUserEntry table and this user will not be in the Address Book Server files.

You can use some flag bits to define a filter to use on Address Book Server attributes. For example, the presence of certain flag bits can identify an attribute as an include attribute or an exclude attribute. User Replicator filters out contacts that contain an exclude attribute and filters out contains that do not contain an include attribute.

Currently, there are three different filters. The following table lists these filers.

Table 3. Filters

Attribute Description

0x800

If set, this identifies a required attribute for a contact. User Replicator uses this flag bit to filter out contacts that do not contain at least one required attribute. The OuPathId is a required attribute, which is always set. So at least one of other required attributes should be set. Otherwise, contact (that is, with value of required attribute OuPathId) will still not be written to database. For example, if telephoneNumberand homePhoneare defined as required attributes, only the contacts that have at least one of these attributes are written to the database.

0x4000

If set, this identifies an exclude attribute. User Replicator uses this flag bit to filter out contacts that contain this attribute. For example, if msRTCSIP-PrimaryUserAddressis defined as an exclude attribute, contacts that have this attribute are not written to the database.

0x8000

If set, this identifies an include attribute. User Replicator uses this flag bit to filter out contacts that do not contain this attribute. For example, if msRTCSIP-PrimaryUserAddressis defined as an include attribute, only the contacts that have this attribute are written to the database.

Note:
If both the 0x4000 (exclude attribute) and 0x8000 (include attribute) flag bits are set, the 0x4000 bit overrides the 0x8000 bit and the contact is excluded.

Although you can filter the Address Book to include only certain users, limiting entries does not limit other users' ability to contact the filtered users or to see their presence status. Users can always find, manually send instant messages, or manually initiate calls to users not in the Address Book by entering a user's complete sign-in name. Also, Office Communicator 2007 R2 can use contact information for a user in Outlook or the Windows Address Book.

While having full contact records in the Address Book files enables you to use Office Communicator 2007 R2 to initiate e-mail, telephone, or Enterprise Voice calls (that is, if Enterprise Voice is enabled on the server) with users that are not configured for Session Initiation Protocol (SIP), some organizations prefer to include only SIP-enabled users in their Address Book Server entries. You can filter the Address Book to include only SIP-enabled users by clearing the 0x800 bit in the Flagscolumn of the following required attributes: mailNickname, telephoneNumber, homePhone, and mobile. You can also filter the Address Book to include only SIP-enabled users by setting the 0x8000 (include attribute) in the Flagscolumn of the msRTCSIP-PrimaryUserAddressattribute. This also helps to exclude service accounts from the Address Book files.

After you modify the AbAttribute table, you can refresh the data in the AbUserEntry table by running the abserver.exe –regenURcommand. After UR replication completes, you can update the file in the Address Book Server file store by manually running the abserver.exe –syncNowcommand.

See Also