Microsoft



[pic]

This document is provided “as-is”. Information and views expressed in this document, including URL and other Internet Web site references, may change without notice.

Some examples depicted herein are provided for illustration only and are fictitious. No real association or connection is intended or should be inferred.

This document does not provide you with any legal rights to any intellectual property in any Microsoft product. You may copy and use this document for your internal, reference purposes.

Copyright © 2011 Microsoft Corporation. All rights reserved.

Microsoft, Active Directory, Lync, Outlook, and SharePoint are trademarks of the Microsoft group of companies. All other trademarks are property of their respective owners.

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@. Please include the chapter name.

For information about the continuing release of chapters, check the DrRez blog at .

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

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

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.

[pic]

Figure 1. Call flow for unified contacts

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.

[pic]

Figure 2. The Lync Options dialog box

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 Outlook contact IM address matches the Lync contact SIP Uniform Resource Identifier (URI)

o Outlook contact email1/2/3 address matches the Lync contact SIP URI

o Outlook contact IM address matches the Lync contact primary/secondary SMTP address

o Outlook contact email1/2/3 address matches the Lync contact primary/secondary 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 user’s 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 Full name

o File as

o Job title

o Company

o Email1 address

o Web page

o IM address

o Business phone

o Home phone

o 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:

• SIP URI or instant messaging (IM) address

• Primary SMTP address

• All secondary SMTP addresses

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.

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

|Web Page (for example, MySite) |AD DS | | |

|Alias (mail nickname) |AD DS | | |

|Name Pronunciation |AD DS | | |

|Location |Presence | | |

|Calendar Free/Busy |Presence | | |

|Presence Status/Activity |Presence | | |

|IM address (SIPURI) |Presence |AD DS |Outlook contact |

|Email (primary SMTP address) |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:

• Source 1 – AD DS

• Source 2 – Lync Server

• Source 3 – Outlook

• Source 4 – 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.

[pic]

Figure 3. Call menu

Search Result Aggregation

Search result aggregation uses the same contact duplicate detection logic as contact merge. The purpose of search result aggregation is to eliminate duplicate Outlook and GAL entries appearing in the search results. When an Outlook contact and GAL contact are matched, instead of returning two separate entries in the search results, only one entry is shown in the search results and the contact data from the two sources is aggregated by using the contact merge algorithm.

One caveat is search merge does not aggregate multiple Outlook contacts. If there are duplicate Outlook contacts representing the same contact entity, there is one entry per Outlook contact in the search results.

Contacts List

The user Contacts list consists of contacts organized into groups. The user can add the following contact types to the Contacts list:

• Outlook personal contacts

• 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

Contacts must be added to a group. Lync supports four group types:

User created groups. The user can create custom groups in Lync by doing one of the following:

o Right-clicking a group header in the groups view, and then selecting the Create Group option.

o 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 system-generated contacts determined by the user’s organizational hierarchy and user communication patterns.

When Lync starts for the first time, the Frequent Contacts group is auto-populated with the user’s manager and direct reports. Additional contacts are dynamically added to this group based on the user’s 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.

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 user’s Contacts list because the user has explicitly taken action to pin this contact.

[pic]

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 user’s 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.

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 user’s Front End pool. Search results are returned in an XML format.

[pic]

Figure 5. Data flow for server-based search

Exact Match Search

Exact match search is performed by the Lync client whenever it needs GAL contact data for a specific contact. In an exact match query, the Lync client requests the GAL contact data by using a SIP URL or email address. Passing a SIP URL or email address in the request ensures the GAL contact data returned is unique because the SIP URI and email address are both unique contact identifiers.

The following are examples where the client queries the server for exact search matches:

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

• Presence subscription from Office applications: In order for presence to be available in Microsoft® Office applications such as Outlook, SharePoint, and Microsoft® Word, Office queries the user’s Lync Server to perform contact resolution and presence subscription on demand. For example, every time an email is opened in Outlook, Outlook queries Lync Server to obtain the SIP URI of all senders and recipients of the email and uses the SIP URI to query their presence information. The SIP URI query from Office triggers an exact match search against the Address Book Web Query service.

• Reverse number lookup for incoming or outgoing calls: For all incoming calls, Lync queries the Address Book Service for an exact match by using the caller’s normalized phone number.

• Contact resolution for distribution group expansion: When the user expands a distribution group by opening the contact card of a distribution group or expanding a distribution group that has been added to the Contacts list, the client queries the Address Book Service for contact resolution.

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 |

|Active Directory Object ID (actually stored in |N/A |

|another table but logically available here) | |

|Mail |@ |

|proxyAddresses (without the scheme) |@ |

|msRTCSIP-PrimaryUserAddress |@ |

|telephoneNumber (number attributes if present) |All except tel:+ prefix |

|Mobile (mobile attributes if present) |All except tel:+ prefix |

For example:

Table 3. Examples of indexed GAL attributes

|Attribute Name |ExactMatch Index |

|Mail |Michele.Martin @ |

|proxyAddresses |michhart@ |

|proxyAddresses |michhart@ |

|msRTCSIP-PrimaryUserAddress |michhart@ |

|telephoneNumber |14255550126 |

|Mobile |12065550127 |

SOAP Request and Response

The following is an example of an exact match request for a value of “sip:michhart@” against all attributes listed in the SearchOn attribute (see below SOAP request). The request asks for a single match and a list of attributes (see ReturnList attribute in SOAP request) to return for the match found.

mail,proxyAddresses,telephoneNumber,mobile,msRTCSIP-PrimaryUserAddress

sip:michhart@

false

1

givenName,sn,displayName,mailNickname,msRTCSIP-PrimaryUserAddress,telephoneNumber,homePhone,otherHomePhone,mobile,otherMobile,otherTelephone,ipPhone,mail,proxyAddresses,physicalDeliveryOfficeName,title,Department,company,groupType,Description,managedBy,EntryId,abEntryHash

The successful SOAP response with the matching entry and requested attributes are as follows:

AbEntryHash

72f8f790-a0a1-b366-8671-36b7728dc31c

proxyaddresses

smtp:Michele.Martin@

SMTP:michhart@

department

US-Parlano R&D CC4

mail

michhart@

telephonenumber

+1 (206) 555-0127

tel:+12065550127

msrtcsip-primaryuseraddress

sip:michhart@

physicaldeliveryofficename

30/32244

company

CONTOSO

mailnickname

michhart

title

Senior Technical Writer

displayname

Michele Martin

sn

Martin

givenname

Michele

96233eca-a340-4665-9b12-a07990ee7f9a

0

Succeeded

Prefix Match Search

Prefix search is invoked when a user initiates a search from the following:

• The main UI search box.

• The People picker dialog box (that can be opened, for instance, from the Conversation Window, the call forwarding dialog box, or call transfer), as illustrated in figure 6.

[pic]

Figure 6. Users can initiate a contact search from this dialog box

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.

mail,mailNickname,proxyAddresses,displayName,givenName,sn,telephoneNumber,mobile,msRTCSIP-PrimaryUserAddress

kencir

BeginsWith

false

51

givenName,sn,displayName,mailNickname,msRTCSIP-PrimaryUserAddress,telephoneNumber,homePhone,otherHomePhone,mobile,otherMobile,otherTelephone,ipPhone,mail,proxyAddresses,physicalDeliveryOfficeName,title,Department,company,groupType,Description,managedBy,EntryId,abEntryHash

This request results in the following successful SOAP HTTP response with the matching entries and requested attributes:

AbEntryHash

6ed3121a-bd60-12e6-6516-c79bfe28b556

proxyaddresses

smtp:Ken.Circeo@

SMTP:kencir@

department

CTO Office

mail

kencir@

telephonenumber

+1 (425) 555-0118

tel:+14255550118

msrtcsip-primaryuseraddress

sip:kencir@

physicaldeliveryofficename

30/33111

company

CONTOSO

mailnickname

kavitas

title

Manager

displayname

Ken Circeo

sn

Circeo

givenname

Ken

38ae9de8-9ec2-4cd1-b5e6-781659520b1c

0

Succeeded

Local Cache

Both Lync and IP phone clients use a local cache file (located in %userprofile%\AppData\Local\Microsoft\Communicator\\ABS_.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 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:

displayName,OrgHash

44961af4-de8e-4d85-9c0b-d2e0a88da584

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.

displayname

TZ_orgSearchU13

28a6e7b3-9c97-4592-88cc-0c4805bdb68d

-1

displayname

TZ_orgSearchU14

969e1ded-7af5-491e-8040-ea4f4a9192c6

-1

displayname

TZ_orgSearchU12

a6853350-d8a6-4a1e-bae7-332b9580ccc2

0

displayname

TZ_orgSearchU11

03844533-b8b8-4f88-9903-7167759240a1

0

displayname

TZ_orgSearchU10

OrgHash

1b320d60-7419-4c97-8c61-055b2e77ce8d

44961af4-de8e-4d85-9c0b-d2e0a88da584

0

displayname

TZ_orgSearchU6

9d5d05e5-70a3-4291-9200-b6a2b433770e

1

displayname

TZ_orgSearchU7

8f73e70b-4619-45c5-a120-260fb35d755a

2

displayname

TZ_orgSearchU8

42a79101-9017-41c1-a264-cb64f05f980e

3

displayname

TZ_orgSearchU9

2b6b4bf8-84d5-4158-bb99-876e32088e1e

4

Succeeded

In subsequent requests, the OrgHash can be used:

displayName,OrgHash

44961af4-de8e-4d85-9c0b-d2e0a88da584

1b320d60-7419-4c97-8c61-055b2e77ce8d

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 organization’s needs.

Additional Resources

• For details about server-based search protocol documentation, see “[MS-DLX]: Distribution List Expansion Protocol Specification” at the MSDN Library, .

• For details about Lync Server, see the Microsoft Lync Server 2010 documentation, .

................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download