Prior Lync 2010, Live Communications Server 2003, Live Communications Server 2005 and Office Communications Server 2007 Unified Communication and Collaboration products did not offer a feature that displays user Photo on the contact card. Microsoft Lync 2010 Server was the first version of Microsoft Unified Communication and Collaboration products that introduced feature-allowing user Photo to be display on the user contact card. Microsoft Lync Server 2010 was the first Unified Communication and Collaboration product that provide ability for users to view photos of their contacts and to make their own photos available to other users inside or outside of their organization.
Contact Photo Locations In Lync 2010 client, there are two options to choose from where the user picture is stored, as part of the user's thumbnailphoto attribute in Active Directory referred as Default corporate picture or a photo from URL configured by the user known as Show picture from web address. Both options offer a serious limitation with respect to size and resolution of the photos: the thumbnailphoto attribute recommended size is 96 x
96 pixels and less than 100KB in JPEG format. The thumbnailphoto Active Directory attribute is the same source that is used by Microsoft Outlook 2010 Client and Microsoft Exchange Server 2010 to display the user's Photo in Microsoft Outlook 2010. This attribute stores a binary representation of the Photo. Lync 2010 client does not offer a direct method to import/upload a picture to the thumbnailphoto attribute. However, Microsoft SharePoint Server 2010 can be used to upload the photo to My Site and then configure profile synchronization in SharePoint Server 2010 to synchronize the photo to the thumbnailphoto attribute in Active Directory. Alternatively, Systems Administrator can use Exchange Management Shell in Exchange Server 2010 to import pictures to Active Directory. Users can also configure their picture by specifying a publicly accessible URL for the Photo that they want to use. The Photo must be 100KB or less in size and use JPEG format. The photo must be publically accessible without a password. The specified photo URL is transferred to other users through the contact card category in the presence information. When Lync 2010 needs to display the photo, it retrieves the photo from the received URL. Controlling the user photo experience by using CsClientPolicy Lync Server 2010 uses the CsClientPolicy to manage and configure the client side settings. The configured policy settings are sent to clients through in-band provisioning. The two CsClientPolicy parameters that control the user photo experience are DisplayPhoto and MaxPhotoSizeKB. The corresponding in-band provisioning parameter for DisplayPhoto is called PhotoUsage and for MaxPhotoSizeKB the name
is the same and they are transferred in the endpointconfiguration provisiongroup. DisplayPhoto controls how photos are displayed in the client. The different values are listed in the following table Value of DisplayPhoto Photo Origin Example NoPhoto N/A PhotoFromADOnly Active Directory AllPhotos URL Defined MaxPhotoSizeKB controls the maximum size in Kb of the photos that can be displayed. Based on these parameters, Lync 2010 provides the user options to configure how the photos are used. Photo configuration settings available on in Lync 2010 client Do not show my picture Default corporate picture Show picture from web address
Managing Downloading of Photos Lync Server 2010 and Lync 2010 client are using caching to avoid unnecessary download of photos to the client. The download of photos does not depend on the address book availability setting of AddressBookAvailability in the CsClientPolicy, because photos are not stored in the GalContacts.db database. Photos Stored in Active Directory Lync 2010 client queries Lync Server 2010 by using the Address Book Web Query (ABWQ) to retrieve photos. The queries include three attributes: PhotoHash contains a hashed value of the photo binary data and is used to determine if the current photo has changed. PhotoRelPath contains the relative path to the actual photo stored on the server. PhotoSize is the size of the photo in bytes.
Client Side When Lync 2010 client determines that it needs a photo, it issues a search request to the Lync Server. In the search request, it asks ABWQ to return a set of attributes including PhotoRelPath, PhotoSize, and PhotoHash. The following is an example of the returned attributes: <Attribute> <Name>PhotoRelPath</Name> <Value>efa6096aed2746cb9ab2037f7dbdde9d.f2eeeb5946db54a7aa607ecd3ae09d 95.photo</Value> <Values xmlns:d6p1="http://schemas.microsoft.com/2003/10/serialization/arrays" i:nil="true" /> </Attribute> <Attribute> <Name>PhotoHash</Name> <Value>f2eeeb5946db54a7aa607ecd3ae09d95</Value> <Values xmlns:d6p1="http://schemas.microsoft.com/2003/10/serialization/arrays" i:nil="true" /> </Attribute> <Attribute> <Name>PhotoSize</Name> <Value>4620</Value> <Valuesxmlns:d6p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" i:nil="true" /> </Attribute> Lync 2010 Client then checks the PhotoSize returned against the MaxPhotoSizeKB it obtained from in-band provisioning. If the PhotoSize multiplied by 1024 is less or equal to MaxPhotoSizeKB, the client will retrieve the photo by using an HTTP GET request using the URL https://<absinternalserverurl>"/"<photorelpath> or https://<absexternalserverurl>"/"<photorelpath>, where the base URLs, https://<absinternalserverurl> and https://<absexternalurl>, are obtained through in-band provisioning. The client then caches the photo of the signed-in user locally. The client will also store the PhotoRelPath, PhotoSize, and PhotoHash in the cached Address Book Service (ABS) entry for the user. It also stores a timestamp that indicates when the photo was downloaded from the Lync Server. This cached data is located
in %userprofile%\appdata\local\microsoft\communicator\sip_<sip URI>\ABS_<SIP URI>.cache. To avoid downloading the photo every time, Lync client uses the photo from its cache. Lync client checks with the Lync Server by default every 24 hours from the time Lync client caches the user photo, by sending a request to the Lync Server asking the Lync Server to compare the cached User PhotoHash value with Server's cached User PhotoHash value the results provided to the Lync Client by the Lync Server allows the Lync Client to determinate if the user photo has changed and if the user photo did change than the Lync Client will update its cache with the new user photo and will resets the timestamp. Server Side On the server side, the Address Book Service (ABS) is responsible for handling photos. The component responsible for this functionality is in ABWQ and is exposed through the Distribution List Expansion (DLX) web service. The server uses a cache to limit the load on the Active Directory Global Catalog Servers when requesting photos read from the thumbnailphoto attribute. When the ABS receives a request for a photo from a client, it first checks if it already has the photo in its cache. The photos are cached in the same folder as the address book files, <Lync Server filestore>\<webserver Service Id>\ABFiles\<GUID>\<GUID>. It is the folder with all zeroes in the GUID. The photos are stored as individual files with filenames in the format: <ContactId>.<PhotoHash>.photo The ContactId is an internal identifier for the user that is used by both client and server. To determine which user this ContactId corresponds to, you will have to dump the ABS database by using the abserver.exe tool:
abserver -dump <abs file>. The output provides the correlation between the ContactId with the corresponding user identified by the value of the msrtcsip-primaryuseraddress attribute. This tool, abserver.exe, is provided with Lync Server 2010 and is typically located at C:\Program Files\Microsoft Lync Server 2010\Server\Core. The client sends the ContactId and the PhotoHash value of the photo in the search request to the server. If this PhotoHash value matches the hash value in the filename, <ContactId>.<PhotoHash>.photo, ABS returns the PhotoRelPath value to the file, <ContactId>.<PhotoHash>.photo, because the picture has not changed. If this PhotoHash value does not match the hash value in the corresponding filename or the photo has not yet been cached, the ABS will get the photo from the local Active Directory Global Catalog. ABS then computes the hash, stores the photo in the cache, and returns the values of PhotoHash, PhotoRelPath, and PhotoSize to the client. ABS deletes all cached photos in the nightly maintenance window. Check Event ID: 21056 in the event log and look for "Number of cached photos deleted". This means that it can take up to 24 hours before changed photos appear in the photo cache. To expedite this process you can delete the cached photo for the given user or issue the PowerShell command Update-CsAddressBook. Photos Referenced in Presence Information In Presence Information, the photo information also contains hash value. Lync 2010 uses that hash value to determine if it needs to get a new photo for a given user. If the hash value is the same and the photo stored in the
cache, Lync 2010 use the cached version. If the hash value is different from the stored one, it will fetch a new photo. The difference between a photo referenced in presence information and photo stored in Active Directory is that Lync 2010 is automatically notified of changes to the photo configuration through the presence information. Lync 2010 uses low-resolution photos of the contacts; that is because those photos are stored in Active Directory, and Active Directory imposes a size limitation on stored photos. Lync 2010 does not offer support for High Definition Photos. It is important to note that for High Definition Photos to work the user must have Mailbox on Exchange 2013 and to be on Lync 2013 Server, if this condition is not satisfied the user always will use the thumbnailphoto attribute from AD DS. This gives a less than optimal view for the users that do not meet the above requirements. In Lync 2013, the options have changed regarding user s contact photos comparing to Lync 2010, and there are few extra features & settings available. Contact Photo Location Options Historically contact photos have been stored in one of two places; within the Active Directory thumbnailphoto attribute for a given user object, or via a website URL. The Active directory option is available again in Lync 2013, but as before is only able to host images no greater than 96 96 pixels in resolution, and also has a 100KB size limit. The Photo looks fine in the Lync client contact list, but results in a blurred photo experience when Lync attempts to upscale the image for use in a conference.
Any photo imported into the thumbnailphoto attribute of a user object in active directory will appear directly in Lync as that users contact photo. Importing photos into ADDS can be completed by using Exchange cmdlet Import-RecipientDataProperty (Exchange 2010 Powershell if used will impose the photo upload size limit of 10KB if you use a third party too such as ADPhotoEdit you can avoid the Exchange PowerShell limitation of 10KB for picture upload and upload a photo up to 100KB which is the actual ADDS limit for photo upload in use by thumbnailphoto attribute) with the appropriate switches or using third party utilities. Once you have imported the Contact Photo into AD, the image will appear in Lync (sign-out and sign-in is required). As an ADDS hosted photo the image will be at 96 96 resolution, and Lync will attempt to scale this image up as necessary for use with the relevant Lync services. IF THE CONTACT PHOTOS ARE HOSTED IN ADDS BE ADVISED OF THE FOLLOWING: The images should be 96 96 resolution AD DS hosted photo will not been seen by external/federated contacts The image size cannot be more than 100KB. Import-RecipientDataProperty has a 10KB limit despite ADDS 100KB limit Large enterprises should consider the impact on ADDS DB size. ADDS photos will not meet all the resolution requirements that Lync will leverage By default, any user has permission to change their own ADDS thumbnail attribute The second option of referencing a photo via a website URL is still available in Lync 2013, but is not enabled by default as it is in Lync 2010 Client.
Lync 2013 Client does not offer, Show picture from a web address as default option The Administrator must enable it via Lync PowerShell. To enable Show picture from a web site on Lync 2013 client, two conditions must be satisfied: Lync 2013 client must run a minimum update from September 2013. Administrator must enable it via Client Policy by running the Lync PowerShell command as shown below:
$pe=new-csclientpolicyentry -Name EnablePresencePhotoOptions -Value True $po=get-csclientpolicy -Identity Global $po.policyentry.add($pe) Set-CsClientPolicy -Instance $po Lync 2013 Client Show picture from a web site option present after EnablePresencePhotoOptions policy is enabled. IF YOU CHOOSE TO REFERENCE, URL S FOR CONTACT PHOTOS BE ADVISED OF THE FOLLOWING: External/federated contacts will be able to see your photo. The size limit is dictated by the MaxPhotoSizeKB attribute in the Lync Client policy The default value of the above attribute is 30KB
You are not restricted in image resolution outside the MaxPtohoSizeKB limit Lync 2013 introduced an additional new option that allows storing the user photo in the user s mailbox if the user is on Exchange 2013. The user photo is stored in the Root folder of Users Mailbox. This new feature is available only if you are using Lync 2013 Server and Exchange 2013 Server both Lync and Exchange must be Version 2013 to support storing the user s photo in the user s mailbox and the new photo size of up to 648 pixels by 648 pixels. The main reason for this requirement is the ability of Lync 2013 and Exchange 2013 to use and benefit from the new authorization framework technology included in Lync 2013, Exchange 2013 and SharePoint 2013 called OAuth. OAuth is an open standard for authorization. The implementation of this new feature in Microsoft Office family of Server Products made possible the introduction of very valuable new features such as Unified Contact Store (UCS) and High-Resolution Photo support, which itself provides compelling reasons for deploying these products together. If Lync 2013 or Exchange 2013 are not used then the available options are restricted to the ADDS and website photo hosting solutions only. When user s picture is uploaded to user s Mailbox, Exchange 2013 will automatically resize the photos for use in different products as needed. Pixel resolutions supported ranges from 48 48 to 648 648. Out of these, only three are used: RESOLUTION USED FOR 48 48 ADDS thumbnailphoto 96 96 OWA, Outlook, LWA and Lync 2013 648 648 LWA and Lync 2013
Lync 2013 greatly benefits from the new feature because it allows the user photos to be store in the user Exchange 2013 Mailbox, and therefore the size and resolution restrictions that are imposed by ADDS hosted photos are no longer in place and High-Resolution Photos are displayed in Lync services. Any Exchange 2013 mailbox enabled user has ability to upload their own High-Resolution Photo via Outlook Web Access, or through the Lync 2013 client options menu. The recommended size of an Exchange hosted photo is 648 648 with a color depth of 24bits and up to 20MB image size this will ensure that your photo will always appear crisp and clear. If you have the resources, it is recommended to upload 648 x 648 photos that will provide the maximum resolution and optimal picture quality in any of the Office 2013 applications. Each JPEG photo with a size of 648 x 648 and a depth of 24 bits results in a file size of approximately 240 kilobytes. That means you will need approximately 1 megabyte of disk space for every four users photos.
It is important to note when an image is uploaded to a user mailbox; a 48 48 thumbnailphoto copy will also be placed in Active Directory overwriting any existing 96 96 pixels in resolution photo that was previously there. This matters only if there are existing Lync 2010 legacy clients because the legacy clients will still reference ADDS for their contact photos. So although uploading HD User photos to Exchange 2013 will improve the experience and User picture quality for all Lync 2013 and Exchange 2013 users, but in an environment where there is co-existence of Exchange 2010 and Lync 2010 and Lync 2013 and Exchange 2013 the legacy user experience will actually deteriorate because their original Photo of 96 96 pixels in resolution that they had in ADDS was replaced overwritten by the new 48 48 thumbnailphoto due to the fact that the HD User Photo was uploaded to the user Mailbox which resulted of creating new 48 48 thumbnail images replacing the existing 96 96 user picture. If you plan on or have a need to continue the use of legacy clients for particular users, than you should re-import 96 96 photos in
ADDS for those users after you have imported their HD User Photos to the user s mailbox for optimal legacy photo experience. Regardless of which implementation method is used for the contact photos, overriding control rests with the Lync Client Policy that is applied to the users. It is important to ensure that the relevant settings in the Client Policy are configured correctly and are in-line with the Company Photo requirements policy. There are two settings that control the photos - DisplayPhoto and MaxPhotoSizeKB. If you have uploaded a new photo, but you still see the old ADDS photo instead of the glossy HD User Photo, the reason is most likely that Lync Client Policy is set for PhotosFromAdOnly. By default, the global Lync 2013 Client Policy will allow all photos, if it is not modified. The second setting of importance is the -MaxPhotoSizeKB attribute. This most commonly impacts environments where there is use of URL based photos. Exchange 2013 hosted images are not affected by this policy setting. This policy dictates the maximum size of a photo and has a default value of 30KB. If there is need for the default value of 30KB to be increased in order to allow higher photo quality it can be accomplished very quickly by using the Lync PowerShell command listed below: Set-CsClientPolicy -Identity Global -MaxPhotoSizeKB 100 ( Should include numeric value for the desired size in the above example it is set to 100 ) Server Side The High-Definition User Photo feature does require the User Mailbox to be located on Exchange 2013 and the User Lync account to be in Lync 2013 Pool. Lync 2010 and Exchange 2010 do not support HD User Photos
Users with Mailboxes on Exchange 2010 will always use the thumbnailphoto attribute from ADDS as their user Photo source. ADDS hosted photo will not be available to external/federated contacts. If the user Photo source is set to Show picture from a web site external/federated contacts will be able to see the user photo If the user contact photos are hosted in ADDS the limits are 96 96 and no more than 100KB. CsClientPolicy and the two CsClientPolicy parameters DisplayPhoto and MaxPhotoSizeKB are used to control the user photo experience. When user s picture is uploaded to the user s Mailbox located on Exchange 2013, Exchange 2013 will automatically resize the photos for use in different products as needed. Pixel resolutions supported ranges from 48 48 to 648 648. Out of these, only three are used and they are: 48 48 which is used for the AD thumbnailphoto version 96 96 which is used for OWA, Outlook, LWA and Lync 2013 648 648 which is used for LWA and Lync 2013 DisplayPhoto parameter controls how photos are displayed in the client and the available values for DisplayPhoto are: NoPhoto PhotoFromADOnly AllPhotos Exchange 2013 Server hosted photo in the user s mailbox is 648 648 with a color depth of 24bits, which results in a file size of approximately 240 kilobytes.
Client Side Lync 2010 client does not offer a user direct method to import/upload a picture to the thumbnailphoto attribute. Lync 2010 client offers the following options as default under "My Picture" Do not show my picture Default corporate picture Show picture from web address Lync client checks with the Lync Server by default every 24 hours from the time Lync client caches the user photo. If connectivity between Lync and Exchange are lost, the user s Active Directory picture will be displayed, and this will results of showing low-resolution photo. High-Resolution Photo 648 648 are displayed only in Lync 2013 and the Microsoft Lync 2013 Web App. Lync 2013 Client offers the following options as default under My Picture Hide my picture Show my picture Edit or Remove Picture Show picture from a web site it is not default picture option in Lync 2013 Client, it becomes available only if Lync 2013 Client runs a minimum update from September 2013 and it must be enabled by an Administrator via Lync PowerShell by setting the EnablePresencePhotoOptions policy value to true