User Replicator and Address Book Server

Microsoft Office Communications Server 2007 and Microsoft Office Communications Server 2007 R2 will reach end of support on January 9, 2018. To stay supported, you will need to upgrade. For more information, see Resources to help you upgrade your Office 2007 servers and clients.

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. The schema for the AbUserEntry table uses two columns, UserGuid and UserData. UserGuid is the index column and contains the 16-byte GUID of the Active Directory object. UserData is 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. This table, AbAttribute, contains three columns, ID, Name and Flags. The table is created during database setup. User Replicator will skip its AbUserEntry table processing logic if the AbAttribute table is empty. 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. Table 19 below shows those current values.

Table 19   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

17

otherTelephone

0x0C002000

18

ipPhone

0x0D002000

19

mail

0x0E000000

20

proxyAddresses

0x00000105

21

groupType

0x0F010800

22

manager

0x10000000

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

  • 0x0. A string attribute; User Replicator will convert this type to UTF-8 before storing it in the AbUserEntry table.

  • 0x1. A binary attribute; User Replicator will store 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 proxyAddresses entries that begin with "tel:". Therefore, in the interest of saving space, User Replicator will store 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 msExchHideFromAddressLists attribute.

  • 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.

Remaining bits in the Flags column at individual flags include the following:

  • 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 will use 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 will include 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, then only one of them is required to have a value in order to include the user in the AbUserEntry table.

  • 0x1000. If set, Address Book Server will always normalize the value of this attribute.

  • 0x2000. If set, Address Book Server will use the normalized number from proxyAddresses, if the UseNormalizationRules WMI setting is FALSE; otherwise it behaves the same as when the flag bit is 0x1000.

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

  • 0x8000. If set, Address Book Server will 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 groupType attribute 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 (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 msExchangeHideFromAddressBook attribute. 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 Global Address List (GAL). Similarly, if the value of this attribute is TRUE, User Replicator does not include that user in the AbUserEntry table and hence this user will not be in the Address Book Server files.

Some flag bits can also be used 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:

  • 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. For example, if telephoneNumber and homePhone are defined as required attributes, then 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 such an attribute. For example, if msRTCSIP-PrimaryUserAddress is defined as an "exclude attribute," then 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 such an attribute. For example, if msRTCSIP-PrimaryUserAddress is defined as an "include attribute," then 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, contact information for a user in Outlook or the Windows Address Book can be used by Office Communicator.

While having full contact records in the Address Book files enables you to use Office Communicator to initiate e-mail, telephone, or Enterprise Voice calls (if Enterprise Voice is enabled on the server) with users that are not configured for 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 Flags column 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 Flags column of the msRTCSIP-PrimaryUserAddress attribute. This will also help 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 this command: abserver.exe –regenUR. Then, you can update the file in the Address Book Server file store by starting a manual -syncNow operation.