Professional Documents
Culture Documents
Chapter 01 Address Book Service
Chapter 01 Address Book Service
Page 2
This chapter is part of the Microsoft Lync Server 2010 Resource Kit book that is currently
being developed. Chapters will be available for download while this book is being completed.
To help us improve it, we need your feedback. You can contact us at
nexthop@microsoft.com. Please include the chapter name.
For information about the continuing release of chapters, check the DrRez blog at
http://go.microsoft.com/fwlink/?LinkId=204593.
Page 3
Contributors
Project Manager: Susan S. Bradley
Content Architect: Rui Maximo
Chapter Lead: Cindy Kwan
Technical Reviewers: Stuart Birkett, Thomas Lee, Ramesh Narayanan, Steve Wood, Tracy
Zheng
Lead Editor: Katrina Purcell
Art Manager: Jim Bradley
Production Editor: Kelly Fuller Blue
Page 4
Table of Contents
Contributors............................................................................................................... 4
Introduction................................................................................................................ 6
Unified Contacts......................................................................................................... 6
Contact Synchronization.......................................................................................... 7
Contact Merge......................................................................................................... 9
Search Result Aggregation.................................................................................... 11
Contacts List.......................................................................................................... 11
Server-Based Search................................................................................................. 14
Exact Match Search............................................................................................... 15
Server indexes................................................................................................... 16
SOAP Request and Response.............................................................................. 17
Prefix Match Search............................................................................................... 20
Local Cache........................................................................................................... 24
Organizational Data............................................................................................... 24
Summary.................................................................................................................. 27
Additional Resources................................................................................................ 28
Page 5
Introduction
This chapter focuses on contacts in Microsoft Lync 2010 and how they are handled by
the Address Book Service, including contact synchronization with Microsoft Exchange
Server and Microsoft Outlook messaging and collaboration client, contact merging, and
contact search.
Unified Contacts
In Lync 2010, Lync contacts are unified with Microsoft Exchange Server personal contacts.
By unifying contacts with Microsoft Exchange Server, Lync contacts are accessible from any
client that connects to Microsoft Exchange. In addition, the Lync client provides richer views
of contacts in its UI by aggregating contact data from the global address list (GAL) and
Microsoft Exchange.
Unified contacts consist of three main components:
Contact synchronization with Microsoft Outlook contacts: Lync ensures that there is
an Outlook contact associated with every contact added to the Lync Contacts list.
Contact data aggregation from the Microsoft Exchange GAL, Outlook, and Microsoft
Lync Server 2010: Lync aggregates contact data from the three data sources
and presents a unified view of the contact in the Contacts list, contact card, and
search results.
Search results aggregation: In Microsoft Office Communicator 2007 R2 and
Microsoft Office Communicator 2007, when a contact was stored in both Outlook
personal contacts and the GAL, search would return duplicate results. This behavior
has been changed in Lync. Outlook and GAL entries are aggregated so that search
displays a single result per contact.
Figure 1 illustrates the call flow for unified contacts. This call flow is executed the
first time the contact is shown for a sign in session. A contact model is created for
each contact in Lync. A contact model refers to the Lync in-memory representation of
contact information. When the contact model is created, Lync fetches data for the
contact from three data sources: presence from Lync Server, GAL, and Outlook
personal contact data from Microsoft Exchange. In the case where the Lync contact is
not a personal contact on Microsoft Exchange, Lync creates an Outlook personal
contact. Outlook personal contact creation happens immediately if there is a
Microsoft Exchange Server 2010 or later connection.
Page 6
The following sections describe the purpose and function of each of the processes.
Contact Synchronization
Contact synchronization requires the user to have a Microsoft Exchange Server 2010
mailbox. In addition, the server running Microsoft Exchange must have Exchange Web
Services configured.
Contact synchronization is enabled by default, and can be turned on or off by a Lync Server
in-band provisioning setting, EnableExchangeContactSync. When
EnableExchangeContactSync is set to FALSE, contact synchronization is disabled. If
EnableExchangeContactSync is not configured or turned on, then contact synchronization
is enabled.
The user can also enable or disable contact synchronization in Lync through the Lync Options dialog box under the Personal tab, in the group box, Personal information
manager. Contact synchronization can be configured by selecting or clearing the Save my
Lync contacts in my personal contacts folder on the Exchange server option. This
user setting overrides the in-band provisioning setting configuration.
Page 7
When contact synchronization is turned on, Lync creates Outlook personal contacts for the
contacts the user manually added to the Lync Contacts list. For each contact in the Contacts
list:
1. Lync checks whether there is a corresponding Outlook contact by comparing the
following settings:
o
o
o
o
Outlook contact
Identifier (URI)
Outlook contact
Outlook contact
address
Outlook contact
SMTP address
If any of these checks are true, then Lync does not create a duplicate Outlook entry.
2. If Lync cannot find an existing Outlook contact that matches the Lync contact, then
Lync creates a new Outlook contact in the default contacts folder of the users
Page 8
mailbox. When an Outlook contact is created, Lync populates the contact with data
from Active Directory Domain Services (AD DS) and Lync Server. Depending on the
type of Lync contact (such as GAL, phone only, or federated/public internet
connectivity contact), the following fields of the Outlook contact are populated at the
time of creation:
o
o
o
o
o
o
o
o
o
o
Full name
File as
Job title
Company
Email1 address
Web page
IM address
Business phone
Home phone
Mobile phone
Contact synchronization allows users to access Lync contacts from applications and devices
that connect to Microsoft Exchange.
Contact Merge
Lync aggregates contact information from multiple data sources and surfaces information in
the Contacts list, contact card, and search results.
Lync performs duplicate contact detection by comparing the following properties of the
Outlook contact and the GAL contact:
If any of the values of these properties match between the Outlook and GAL contacts, then
Lync merges the contacts. All contact data shown in Lync honors the following fallback logic
with the exception of the Call menu.
For each property shown in Table 1:
If source1 is not empty
Property = source1
Else if source2 is not empty
Property = source2
Else
Property = source3
End
Where Property, source1, source2, and source 3 are defined in Table 1.
Page 9
Table 1.
Property
Source 1
Source 2
Source 3
Display name
Outlook contact
Presence
AD DS
Photo
Presence
AD DS
Title
AD DS
Presence
Outlook contact
Company
AD DS
Presence
Outlook contact
Department
AD DS
Presence
Outlook contact
Office
AD DS
Presence
Outlook contact
Organization (for
example, Manager)
AD DS
Presence
AD DS
AD DS
Name Pronunciation
AD DS
Location
Presence
Calendar Free/Busy
Presence
Presence
Status/Activity
Presence
IM address (SIPURI)
Presence
AD DS
Outlook contact
AD DS
Outlook
contact
Presence
Work Phone
Presence
AD DS
Outlook contact
Home Phone
Presence
AD DS
Outlook contact
Mobile Phone
Presence
AD DS
Outlook contact
Other Phone
Presence
AD DS
Outlook contact
For properties not listed in the table, the property values come from the following sources:
Page 10
Source
Source
Source
Source
1
2
3
4
AD DS
Lync Server
Outlook
Microsoft SharePoint (only for skill search results)*
*For skills search, the hit highlights shown in the third and fourth line of search results are
returned from SharePoint Designer only.
For the Call menu, phone numbers from AD DS, Lync Server, and Outlook contacts are
aggregated and displayed.
Contacts List
The user Contacts list consists of contacts organized into groups. The user can add the
following contact types to the Contacts list:
Page 11
GAL contacts. As mentioned in the Unified Contacts section, Lync client creates an
Outlook contact for all users added to the Lync Contacts list if an existing Outlook
contact does not already exist.
Phone only contacts
Response groups and hunt groups
Right-clicking a group header in the groups view, and then selecting the Create
Group option.
Clicking the + button in search results, and then selecting the Add to new
group option.
User created groups can be renamed or deleted by the user. Contacts can be
added or removed from user-created groups by the user.
When a contact is removed from a contact group, the contact is not moved to the
Other Contacts group. For such contacts, the Remove from group and Remove from
Contacts list options in the right-click shortcut menu removes the contact from the
Contacts list. This is a change in behavior from previous versions of Lync.
Distribution groups. Users can add GAL distribution groups to the Contacts list by
searching for the distribution group, and then clicking the + button in search results.
When a distribution group is added to the Contacts list, the distribution group
members are not added to the Contacts list. Subsequently, if the distribution group
membership changes in the GAL, these changes are reflected in Lync. Users cannot
add contacts to a distribution group by using Lync.
Lync has a limit on the number of distribution groups that can be added to the
Contacts list. By default, Lync allows each user to add up to 10 distribution groups.
This limit is configurable by using the following in-band provisioning setting:
MaximumDGsAllowedInContactList.
Frequent Contacts. The Frequent Contacts group is a special group. It consists of
contacts that the user has pinned to the Contacts list, and up to 10 systemgenerated contacts determined by the users organizational hierarchy and user
communication patterns.
When Lync starts for the first time, the Frequent Contacts group is auto-populated
with the users manager and direct reports. Additional contacts are dynamically
added to this group based on the users IM and call patterns. Using a local cache,
Lync keeps track of the number of times a user has used IM with a particular contact
or called a contact. If the user has interacted with a contact more than n number of
times by using Lync (where n = 4), the contact is automatically added to the
frequent contacts group. In addition, there is an aging interval related to the
frequent contacts group. The aging interval kicks in every 28 days and decrements
the weighting for all frequent contacts. If the user stops interacting with a contact,
the contact is eventually removed from the Frequent Contacts group.
Page 12
For example, the user sends an instant message to Contact A. If Contact A is not an
existing contact in the frequent contact cache, then Lync adds Contact A to the cache
and assign a weight of 8192. The next time the user sends an instant message or
calls Contact A, Lync increments the weight by a value of 8192. Every 28 days, Lync
decrements the weight of contacts in the frequent contact cache. The intention is to
age and remove contacts that the user no longer interacts with. The decrement
internal is usually half of the increment interval (so in this example, since the interval
incremented was 8192, the decrement interval becomes 4096). Lync surfaces the top
10 contacts from the cache with a weight greater than n where n is 4 times the
increment weight (for example, 4*8192 = 32768).
The user has an option of pinning a contact to the Frequent Contacts group. Users
can pin a contact by right-clicking a contact and then selecting the Pin to Frequent
Contacts option, or dragging and dropping a contact in the Frequent Contacts
group. Pinning a contact ensures that the contact always appears in the Frequent
Contacts group even if the user does not frequently interact with the person through
IM or frequently call the person. Pinned contacts always appear before the unpinned
or system-generated contacts. Pinned and system-generated contacts are separated
by a line.
Pinned contacts are considered part of the users Contacts list because the user has
explicitly taken action to pin this contact.
Page 13
Figure 4: Pinned contact and system generated contacts in the Frequent Contacts group
Other Contacts. This is the default group that has been automatically created by
Lync. Lync requires that all contacts added to the Contacts list be a member of at
least one group. The Other Contacts group is a special group because it cannot be
renamed or deleted by the user. If there are no other groups (for example, user
created groups or distributions groups) in the users Contacts list, then the Other
Contacts group appears as the All Contacts group.
Server-Based Search
Server-based search is a new search mode in Lync 2010. Server-based search usage can be
configured by using the in-band provisioning setting, AbsUsage. This in-band provisioning
setting can have three possible values:
WebSearchAndFileDownload. IP phones (for example, Aastra 6721ip common
area phone or Polycom CX700 IP desk phone) use server-based search, and Lync
2010 clients use GAL download. This is the default.
Page 14
The Lync desktop client defaults to GAL download for the following reasons:
There may be temporary outages for the Address Book Service depending on the
server maintenance schedule. When the Address Book Server is unavailable, all
prefix and exact match searches (described in the next sections) fail.
Server-based search does not work in branch office resiliency mode.
WebSearchOnly. Both IP phones and Lync 2010 clients use Server-based search.
FileDownloadOnly. Both IP phones and Lync 2010 clients use GAL download.
Figure 5 illustrates the data flow for server-based search. Server-based search can be used
for both exact and prefix searches. The following sections describe the difference between
exact and prefix match searches, and the various scenarios when the Lync client would
perform an exact match search versus prefix match search.
The Lync client sends a SOAP query through HTTPs to the users Front End pool. Search
results are returned in an XML format.
Page 15
Contact resolution for all contacts and Outlook contacts during sign in: The client
imports Outlook personal contacts during sign in. For each Outlook contact, Lync
creates a contact model and tries to match each Outlook contact to a GAL entry for
contact merge.
Also during sign in, the client gets the list of contacts from Lync Server. A contact model
is created for each contact. The Lync client completes contact resolution and merge by
sending a query to the Address Book Web Query service to look up a matching GAL
contact.
In the scenarios mentioned earlier, the client does a batch query (up to 50 contacts per
query) whenever possible to minimize the server load.
Server indexes
The Address Book Service indexes the following GAL attributes for exact match:
Table 2. Indexed GAL attributes
Attribute Name
ExactMatch Index
<user>@<host>
proxyAddresses (without
the scheme)
<user>@<host>
Page 16
msRTCSIPPrimaryUserAddress
<user>@<host>
telephoneNumber
(number attributes if
present)
For example:
Table 3. Examples of indexed GAL attributes
Attribute Name
ExactMatch Index
Michele.Martin @contoso.net
proxyAddresses
michhart@contoso.net
proxyAddresses
michhart@contoso.net
msRTCSIPPrimaryUserAddress
michhart@contoso.net
telephoneNumber
14255550126
Mobile
12065550127
Page 17
</ChangeSearch>
<Metadata>
<FromDialPad>false</FromDialPad>
<MaxResultNum>1</MaxResultNum>
<ReturnList>givenName,sn,displayName,mailNickname,msRTCSIPPrimaryUserAddress,telephoneNumber,homePhone,otherHomePhone,mobile,otherMobile
,otherTelephone,ipPhone,mail,proxyAddresses,physicalDeliveryOfficeName,title,D
epartment,company,groupType,Description,managedBy,EntryId,abEntryHash</ReturnL
ist>
</Metadata>
</AbEntryRequest>
</SearchAbEntry>
</soap:Body>
The successful SOAP response with the matching entry and requested attributes are as
follows:
<soap:Body>
<SearchAbEntryResponse xmlns="DistributionListExpander">
<SearchAbEntryResult xmlns:i="http://www.w3.org/2001/XMLSchemainstance">
<Items>
<AbEntry>
<Attributes>
<Attribute>
<Name>AbEntryHash</Name>
<Value>72f8f790-a0a1-b366-8671-36b7728dc31c</Value>
<Values i:nil="true"
xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
</Attribute>
<Attribute>
<Name>proxyaddresses</Name>
<Value i:nil="true"/>
<Values
xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<b:string>smtp:Michele.Martin@contoso.net</b:string>
<b:string>SMTP:michhart@contoso.net</b:string>
</Values>
</Attribute>
<Attribute>
<Name>department</Name>
<Value>US-Parlano R&D CC4</Value>
<Values i:nil="true"
xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
</Attribute>
<Attribute>
<Name>mail</Name>
<Value>michhart@contoso.net</Value>
<Values i:nil="true"
xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
</Attribute>
<Attribute>
Page 18
<Name>telephonenumber</Name>
<Value i:nil="true"/>
<Values
xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<b:string>+1 (206) 555-0127</b:string>
<b:string>tel:+12065550127</b:string>
</Values>
</Attribute>
<Attribute>
<Name>msrtcsip-primaryuseraddress</Name>
<Value>sip:michhart@contoso.net</Value>
<Values i:nil="true"
xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
</Attribute>
<Attribute>
<Name>physicaldeliveryofficename</Name>
<Value>30/32244</Value>
<Values i:nil="true"
xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
</Attribute>
<Attribute>
<Name>company</Name>
<Value>CONTOSO</Value>
<Values i:nil="true"
xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
</Attribute>
<Attribute>
<Name>mailnickname</Name>
<Value>michhart</Value>
<Values i:nil="true"
xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
</Attribute>
<Attribute>
<Name>title</Name>
<Value>Senior Technical Writer</Value>
<Values i:nil="true"
xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
</Attribute>
<Attribute>
<Name>displayname</Name>
<Value>Michele Martin</Value>
<Values i:nil="true"
xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
</Attribute>
<Attribute>
<Name>sn</Name>
<Value>Martin</Value>
<Values i:nil="true"
xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
</Attribute>
<Attribute>
<Name>givenname</Name>
Page 19
<Value>Michele</Value>
<Values i:nil="true"
xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
</Attribute>
</Attributes>
<EntryId>96233eca-a340-4665-9b12-a07990ee7f9a</EntryId>
<Position>0</Position>
</AbEntry>
</Items>
<Metadata>
<MessageText i:nil="true"/>
<ResponseCode>Succeeded</ResponseCode>
</Metadata>
</SearchAbEntryResult>
</SearchAbEntryResponse>
</soap:Body>
Figure 6. Users can initiate a contact search from this dialog box
Page 20
When a prefix search is performed, the client sends a SOAP query with the search term and
number of search results to be returned by the Address Book Service. Lync client shows the
top 50 results whereas IP phones and Lync mobile clients show the top 20 results.
The following is an example of a prefix search that Lync 2010 issued when the keyword,
kencir, is entered in the search box. This request asks for up to 51 matches against all
attributes listed in the SearchList attribute. It also specifies that the response should
return all attributes listed in the ResultList attribute for each search result.
<soap:Body>
<SearchAbEntry xmlns="DistributionListExpander">
<AbEntryRequest>
<BasicSearch>
<SearchList>mail,mailNickname,proxyAddresses,displayName,givenName,sn,telephon
eNumber,mobile,msRTCSIP-PrimaryUserAddress</SearchList>
<Value>kencir</Value>
<Verb>BeginsWith</Verb>
</BasicSearch>
<ChangeSearch xsi:nil="1"/>
<Metadata>
<FromDialPad>false</FromDialPad>
<MaxResultNum>51</MaxResultNum>
<ReturnList>givenName,sn,displayName,mailNickname,msRTCSIPPrimaryUserAddress,telephoneNumber,homePhone,otherHomePhone,mobile,otherMobile
,otherTelephone,ipPhone,mail,proxyAddresses,physicalDeliveryOfficeName,title,D
epartment,company,groupType,Description,managedBy,EntryId,abEntryHash</ReturnL
ist>
</Metadata>
</AbEntryRequest>
</SearchAbEntry>
</soap:Body>
This request results in the following successful SOAP HTTP response with the matching
entries and requested attributes:
<soap:Body>
<SearchAbEntryResponse xmlns="DistributionListExpander">
<SearchAbEntryResult xmlns:i="http://www.w3.org/2001/XMLSchemainstance">
<Items>
<AbEntry>
<Attributes>
<Attribute>
<Name>AbEntryHash</Name>
<Value>6ed3121a-bd60-12e6-6516-c79bfe28b556</Value>
<Values i:nil="true"
xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
</Attribute>
<Attribute>
<Name>proxyaddresses</Name>
<Value i:nil="true"/>
Page 21
<Values
xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<b:string>smtp:Ken.Circeo@contoso.net</b:string>
<b:string>SMTP:kencir@contoso.net</b:string>
</Values>
</Attribute>
<Attribute>
<Name>department</Name>
<Value>CTO Office</Value>
<Values i:nil="true"
xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
</Attribute>
<Attribute>
<Name>mail</Name>
<Value>kencir@contoso.net</Value>
<Values i:nil="true"
xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
</Attribute>
<Attribute>
<Name>telephonenumber</Name>
<Value i:nil="true"/>
<Values
xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<b:string>+1 (425) 555-0118</b:string>
<b:string>tel:+14255550118</b:string>
</Values>
</Attribute>
<Attribute>
<Name>msrtcsip-primaryuseraddress</Name>
<Value>sip:kencir@contoso.net</Value>
<Values i:nil="true"
xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
</Attribute>
<Attribute>
<Name>physicaldeliveryofficename</Name>
<Value>30/33111</Value>
<Values i:nil="true"
xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
</Attribute>
<Attribute>
<Name>company</Name>
<Value>CONTOSO</Value>
<Values i:nil="true"
xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
</Attribute>
<Attribute>
<Name>mailnickname</Name>
<Value>kavitas</Value>
<Values i:nil="true"
xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
</Attribute>
<Attribute>
Page 22
<Name>title</Name>
<Value>Manager</Value>
<Values i:nil="true"
xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
</Attribute>
<Attribute>
<Name>displayname</Name>
<Value>Ken Circeo</Value>
<Values i:nil="true"
xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
</Attribute>
<Attribute>
<Name>sn</Name>
<Value>Circeo</Value>
<Values i:nil="true"
xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
</Attribute>
<Attribute>
<Name>givenname</Name>
<Value>Ken</Value>
<Values i:nil="true"
xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
</Attribute>
</Attributes>
<EntryId>38ae9de8-9ec2-4cd1-b5e6-781659520b1c</EntryId>
<Position>0</Position>
</AbEntry>
</Items>
<Metadata>
<MessageText i:nil="true"/>
<ResponseCode>Succeeded</ResponseCode>
</Metadata>
</SearchAbEntryResult>
</SearchAbEntryResponse>
</soap:Body>
Local Cache
Both Lync and IP phone clients use a local cache file (located in %userprofile
%\AppData\Local\Microsoft\Communicator\<sipuri>\ABS_<sipuri>.cache) to temporarily
store all the information obtained from the Lync Server. Lync caches information for up to
1000 contacts and distribution groups. Similarly, IP phones cache information for up to 200
contacts and distribution groups.
The client stores all the Active Directory attributes for a contact (or distribution group) in
the local cache. This includes the thumbnailPhoto attribute (for instance, the client caches
the photo stream for each contact). For each contact (or distribution group), there are two
hash functions used to hash each attribute. This provides a way for the client to detect if
information for a contact (or distribution group) has changed and to retrieve an update from
AD DS. One hash function is used for the thumbnailPhoto attribute, and the second hash
function is used for all other attributes associated with the contact or distribution group.
Photo has its own hash key to avoid unnecessary network traffic when other contact data for
Page 23
an entry changes. These hash values are generated by the Address Book Web Query
service.
The information stored in the cache is valid for 24 hours. During sign in and every 24 hours
after sign in, the client checks the information for the contacts or distribution groups
currently in use. If the Address Book Web Query service detects that the hash value
provided by the client is different from what it has, it sends back the requested Active
Directory attributes in the response to the client.
The information in the local Address Book Server cache is indexed based on the SIP URI and
all email addresses attributes for a contact (or distribution group). It is used by the client
only for exact match lookups on those attributes.
Organizational Data
Organizational data is used when viewing the Organization tab on the contact card or first
run auto-population of the Frequent Contacts group.
Both Lync clients and IP phones always query the Address Book Service for organizational
hierarchy data regardless of the value of the in-band provisioning setting, AbsUsage. The
GAL download mechanism does not download and index the organizational hierarchy locally.
Therefore, every time organizational data is needed, the client sends a request to the
server.
The following is an example of a search for the organization structure of a user:
<soap:Body>
<AbEntryRequest xmlns="DistributionListExpander">
<Metadata>
<ReturnList>displayName,OrgHash</ReturnList>
</Metadata>
<OrgSearch>
<EntryId>44961af4-de8e-4d85-9c0bd2e0a88da584</EntryId>
</OrgSearch>
</AbEntryRequest>
</soap:Body>
The successful SOAP response contains nine entries:
Direct reports are listed in position, -1. In this example, two direct reports are
returned.
Peers are listed in position, 0. Three peers are shown in the SOAP response below.
Management chain is listed in numbered positions greater than 0. Four managers in
the management chain are shown in positions 1, 2, 3 and 4.
The OrgHash attribute is returned only for the entry where an EntryId was passed in the
request.
<soap:Body>
<AbEntryResponse xmlns="DistributionListExpander">
<Items>
<AbEntry>
<Attributes>
<Attribute>
<Name>displayname</Name>
Page 24
<Value>TZ_orgSearchU13</Value>
</Attribute>
</Attributes>
<EntryId>28a6e7b3-9c97-4592-88cc-0c4805bdb68d</EntryId>
<Position>-1</Position>
</AbEntry>
<AbEntry>
<Attributes>
<Attribute>
<Name>displayname</Name>
<Value>TZ_orgSearchU14</Value>
</Attribute>
</Attributes>
<EntryId>969e1ded-7af5-491e-8040-ea4f4a9192c6</EntryId>
<Position>-1</Position>
</AbEntry>
<AbEntry>
<Attributes>
<Attribute>
<Name>displayname</Name>
<Value>TZ_orgSearchU12</Value>
</Attribute>
</Attributes>
<EntryId>a6853350-d8a6-4a1e-bae7-332b9580ccc2</EntryId>
<Position>0</Position>
</AbEntry>
<AbEntry>
<Attributes>
<Attribute>
<Name>displayname</Name>
<Value>TZ_orgSearchU11</Value>
</Attribute>
</Attributes>
<EntryId>03844533-b8b8-4f88-9903-7167759240a1</EntryId>
<Position>0</Position>
</AbEntry>
<AbEntry>
<Attributes>
<Attribute>
<Name>displayname</Name>
<Value>TZ_orgSearchU10</Value>
</Attribute>
<Attribute>
<Name>OrgHash</Name>
<Value>1b320d60-7419-4c97-8c61-055b2e77ce8d</Value>
</Attribute>
</Attributes>
<EntryId>44961af4-de8e-4d85-9c0b-d2e0a88da584</EntryId>
<Position>0</Position>
</AbEntry>
<AbEntry>
Page 25
<Attributes>
<Attribute>
<Name>displayname</Name>
<Value>TZ_orgSearchU6</Value>
</Attribute>
</Attributes>
<EntryId>9d5d05e5-70a3-4291-9200-b6a2b433770e</EntryId>
<Position>1</Position>
</AbEntry>
<AbEntry>
<Attributes>
<Attribute>
<Name>displayname</Name>
<Value>TZ_orgSearchU7</Value>
</Attribute>
</Attributes>
<EntryId>8f73e70b-4619-45c5-a120-260fb35d755a</EntryId>
<Position>2</Position>
</AbEntry>
<AbEntry>
<Attributes>
<Attribute>
<Name>displayname</Name>
<Value>TZ_orgSearchU8</Value>
</Attribute>
</Attributes>
<EntryId>42a79101-9017-41c1-a264-cb64f05f980e</EntryId>
<Position>3</Position>
</AbEntry>
<AbEntry>
<Attributes>
<Attribute>
<Name>displayname</Name>
<Value>TZ_orgSearchU9</Value>
</Attribute>
</Attributes>
<EntryId>2b6b4bf8-84d5-4158-bb99-876e32088e1e</EntryId>
<Position>4</Position>
</AbEntry>
</Items>
<Metadata>
<ResponseCode>Succeeded</ResponseCode>
</Metadata>
</AbEntryResponse>
</soap:Body>
In subsequent requests, the OrgHash can be used:
<soap:Body>
<AbEntryRequest xmlns="DistributionListExpander">
<Metadata>
Page 26
<ReturnList>displayName,OrgHash</ReturnList>
</Metadata>
<OrgSearch>
<EntryId>44961af4-de8e-4d85-9c0bd2e0a88da584</EntryId>
<OrgHash>1b320d60-7419-4c97-8c61055b2e77ce8d</OrgHash>
</OrgSearch>
</AbEntryRequest>
</soap:Body>
If the client downloads the organizational data for a contact or distribution group, it is
stored in memory with the contact or distribution group, but not in the local Address Book
Server cache file. If the information is available in memory (for instance, the contact or
distribution group is still in memory) then the client does not send another query for
organization data to the Address Book Web Query service for another 24 hours.
Summary
The key enhancements made to the Lync people experience are:
Unifying Lync contacts with Microsoft Exchange personal contacts. Users can access
their Lync contacts from any client or device that connects to Microsoft Exchange.
Updating the Contacts list user experience. Photos and personal status notes are
prominent in the Contacts list, making it easier for users to stay connected with
people they care about. In addition, the Frequent Contacts group enables users to
quickly access contacts they frequently interact with.
Introducing server-based search. Lync administrators have the flexibility to choose
between local GAL download and server-based search to meet their organizations
needs.
Additional Resources
Page 27