It’s all about the Lync Address Book 28

Update May 2015: The process below is the same for Skype for Business.

Issues with the Lync Address book are common to all Lync admins. Troubleshooting these issues isn’t as easy as it looks. To better troubleshoot or change the information stored in the Lync Address Book, you need to be aware of all the steps it takes in creating the Lync Address Book. To simplify the explanation of how the address book ends up at the users side, I created the following flowchart of this process.

Lync Address Book Sync

Lync Address Book Sync

Step 1 – User Replicator

AbAttribute Table

AbAttribute Table

Information about your Users, Contacts and Groups is stored in Active Directory (AD). This information is retrieved from AD by the User Replicator and placed in the user database into the RTCab database. The table AbUserEntry is used to store this information and it contains two colums, one for the UserGUID and one for all the UserData. What kind of data is placed in the column is defined by the entries in the AbAttribute table. If this table is empty the User Replicator will skip the AbUserEntry filling process (no users in the Lync Address Book). With each attribute a flag is also present. This flag determines what happens with translation between AD and the AbUserEntry table or, if a certain AD attribute is present, to include or exclude the user from adding it to the AbUserEntry table. You can control the AbAttribute table by using the ABSConfig.exe tool (Lync 2013 Resource Kit). For more information regarding the attributes and flags see: Administering the Address Book Service, Lync 2013. After changing the AbAttribute table, make sure you run Update-CSAddressBook to regenerate the address book.

By default all domains that are found will be replicated and will be replicated alphabetically from A to Z. If there are some domains that you don’t want to replicate to the Lync Address Book, use the ADDomainNamingContextList parameter (Set-CsUserReplicatorConfiguration) to add only the domains you want to synchronize. Use the following commands:

# Add domains
Set-CsUserReplicatorConfiguration -Identity global -ADDomainNamingContextList @{Add="dc=domain1,dc=local","dc=domain2,dc=local"}

# Remove domain
Set-CsUserReplicatorConfiguration -Identity global -ADDomainNamingContextList @{Remove="dc=domain2,dc=local"}

Note: In previous versions of Lync it’s still imperative to use the Update-CSUserDatabase powershell command. In Lync 2013 this process runs at a configured interval. To retrieve how often this is done or find more settings, use Get-CsUserReplicatorConfiguration.

Step 2 – Address Book

Information of your users, contacts and groups is now in the Lync database. The next step is to create the actual address book files. These files are generated by the Front End with the Address Book Server task and stored in the Lync file share defined in your topology . In this share you’ll find the following subfolder: \ServerLyncShare1-WebServices-1ABFiles. When you’re in a single tenant Lync configuration you’ll only find the tenant directory 00000000-0000-0000-0000-000000000000, which is the default for the msRTCSIP-TenantId attribute in AD. This attribute stores the unique identifier of the tenant.

In this subdirectory you’ll find all *.lsabs and *.dabs files which your clients will download. The address book files are generated by default each day at  1:30 AM. When the process starts, it uses the company_phone_number_normalization_rules.txt to translate telephone numbers to E.164 format. Remember that this file will translate all numbers, even numbers that are already in E.164 format if rules are applicable, like the msRTCSIPLine attribute. The text file is used when it’s placed in the ABFiles directory. By default this text file doesn’t exist. Numbers not being translated correctly are placed in the tenant directory in a file called Invalid_AD_Phone_Numbers.txt. Check your Lync eventviewer for information or errors regarding the Lync Address Book Server, filter on LS Address Book Server.

Log Name:      Lync Server
Source:        LS Address Book Server
Event ID:      21034
Task Category: (1008)
Level:         Warning
Keywords:
Classic Description:
One or more phone numbers failed to normalize. 300 total numbers failed to normalize.  They are listed in the text file: ‘\ServerLyncShare1-WebServices-1ABFiles0000000-0000-0000-0000-0000000000000000000-0000-0000-0000-000000000000Invalid_AD_Phone_Numbers.txt’ Cause: One or more phone number attributes in Active Directory contained text that could not be normalized.  Normalization rules are contained in the optional Company_Phone_Number_Normalization_Rules.txt file located in the output location or in the generic rules built into Address Book Server.  Refer to the documentation for a description of the built-in generic normalization rules.  Use the ABServer -dumpRules command to see all the rules that Address Book Server is currently configured with. Resolution: Either create a Company_Phone_Number_Normalization_Rules.txt file in the output location and make sure it covers all cases found in your Active Directory deployment or fix the invalid phone number(s) in the Active Directory record(s).

Use Get-CsAddressBook to retrieve all the Address Book settings. For the use of all normalization rules make sure the UseNormalizationRules is set to True.

You can make the Address Book files from the Lync share readable by exporting them, use the following cmd:

abserver -dumpfile “\ServerLyncSharen-WebServices-nABFiles0000000-0000-0000-0000-0000000000000000000-0000-0000-0000-000000000000F-0ef3.lsabs” c:TempExport-ABS.txt

Note: An un-documented feature, found by  Trevor Miller, when there is a Company_Phone_Number_Normalization_Rules.txt file placed in the installation directory of Lync (ex. C:Program FilesMicrosoft Lync Server 2013ServerCore), this file will be used.

Step 3 – Clients

Now that your Address Book files are ready, clients can download them, if the AddressBookAvailability is set to download the address book this is the default. Make sure you have a good reason to make the address book available locally, as the preferred method would be to set the addressbookavailability to WebSearchOnly.

If you have set the availability to download, when a client starts it will connect to the internal or external Address Book Server URL:

  • URL Internal From Server;https://LyncpoolFQDN:443/abs/handler
  • URL External From Server;https://LyncExternalWebServiceFQDN:443/abs/handler

Use the Test-CsAddressBookService and Test-CsAddressBookWebQuery commands to check errors regarding the configuration. The client will download the files by default within 0 to 60 minutes. You can change this by using the GalDownloadInitialDelay (DWORD) registry key. Setting this key to the value of 0 will enforce a direct download. You can find or place this key in:

  • Lync 2010 : HKLM or HKCU SoftwarePoliciesMicrosoftCommunicator
  • Lync 2013:  HKLM or HKCU SoftwarePoliciesMicrosoftOffice15.0Lync
  • Skype for Business 2016: HKLM or HKCU SoftwarePoliciesMicrosoftOffice16.0Lync

When Lync has downloaded the files, you will have 2 files in the userprofile, namely GalContacts.db and GalContacts.db.idx. In Lync 2013 and Skype for Business 2016, Galcontacts.db and a file called ABS__sipdomain.cache will be placed in the userprofile. The cache file is updated when the user logs into Lync or after 24 hours when the cache is valid. On a Windows 7 or higher machine these files will be located in the folder:

Lync 2010: %userprofile%AppDataLocalMicrosoftCommunicatorsip_user@domain
Lync 2013: %userprofile%AppDataLocalMicrosoftOffice15.0Lyncsip_user@domain
Skype for Business 2016: %userprofile%AppDataLocalMicrosoftOffice16.0Lyncsip_user@domain

 

Common issues

Now that you know how the process works, here are some issues regarding the Lync Address Book.

Lync User is not being displayed in the Lync Address Book

You have a user who is Lync enabled. Everything is working, the user can log in, but when you search for this user on your Lync client no name is returned. The most common reason for this behaviour is based on an issue with step 1. When the User Replicator runs, it checks the attribute msExchangeHideFromAddressBook. This is the Exchange attribute for hiding users from the Global Address List (GAL). If this is set to TRUE, which indicates it doesn’t need to appear on the GAL, Lync will also ignore this user for the Address Book.

Lync Response Group number to name

You created a Lync Response Group, you can find it in the address book using it’s name, but when you type the phone number the Response Group isn’t resolved. Check the Invalid_AD_Phone_Numbers.txt file. See if your Response Group number is placed here. If it is, you haven’t used the E.164 format in the Display Number field. Change the field to the correct format or add a valid translation to the company_phone_number_normalization_rules.txtIf you leave the Display Number field empty, it will use the lineuri (telephone number) field to be placed as phone number in the address book. This also applies to extensions not being correctly translated to the Response Group name.

The address book is preparing to synchronize

If you haven’t set the GalDownloadInitialDelay registry, this will be displayed at a maximum of 0 to 60 minutes. If it keeps displaying the message try the following:

  1. Exit the Lync client
  2. Delete the local address book files (see step 3)
  3. Restart the Lync client
    Or a script to automatically delete the files (The Expta Blog).

Try using the WebSearchOnly value in the Lync client policy. This will not use the local address book files anymore, but will only use the Address Book Web Query (ABWQ).

Certain phone numbers from Active Directory not displayed on the contact card

When you view a contact card in Lync, you’re missing phone numbers which you know you placed in AD.

First make sure these numbers of the user are in E.164 format. If it’s not in E.164 format, use the Company_Phone_Number_Normalization_Rules.txt (Step 2) to normalize the numbers correctly. Run the Update-CSAddressBook command, make sure that your Lync client updates the Lync Address Book (step 3) and the numbers should now be visible in Lync.

Something else…?

There are a lot more questions, tools and issues regarding the address book. Feel free to contact me or drop a comment.

And even more information about the Address Book:

Incoming search terms:

  • ItsallabouttheLyncAddressBook-Fots-Lync/SfB
  • skype for business address book
  • lync 2013 generate address book
  • skype find contact global address book
  • lync abs
  • lync how to know when the address book has downloaded
  • lync 2013 hide users from address book
  • lync cannot resolve external email addresses
  • lync adressbook registry
  • skype fails to normalize company address book because ad has

Hans Sleurink

Hans Sleurink works as a Senior Technical Consultant at VodafoneZiggo in the Netherlands where he designs and deploys Microsoft Unified Communications solutions . His main focus is on, but not limited to, Skype for Business / Lync including Enterprise Voice, Anywhere365, AudioCodes, KEMP, Exchange, Office 365, Active Directory and other UC related topics.

More Posts - Website

Follow Me:
TwitterFacebookLinkedInGoogle Plus

28 thoughts on “It’s all about the Lync Address Book

  1. Reply Satya Sep 27,2013 16:08

    We have a Exchange & Lync multi tenant environment.Problem which we are facing is that a tenant user while using Lync Client can see the presence of other Tenant users which we want to block.

  2. Reply Mohammed Hamada Feb 21,2014 09:59

    Hi Hans,

    Is it possible to add certain OU members in Lync client 2013? and how to do so if it’s possible.

    Thanks

  3. Reply LyncAdmin Mar 20,2014 05:47

    Having a semi-related issue with contact card information. Seeing a lot of cases where multiple users query a single user and check that user’s contact card… and all of them are seeing slightly different information. Particularly in regards to Work number. Some people see the Work number and others do not.

    Other factors:
    -FileDownload and WebSearch is allowed in the client policy.
    -Sometimes deleting the entire _sip folder works, sometimes it doesn’t.
    -Some users are even experiencing seeing different contact information based on the network they’re on (internal or home WiFi + VPN).
    -No Enterprise Voice. Contact Card is merely a cosmetic item (but a high call driver if incorrect/incomplete)
    -Phone numbers are not following E.164 (or any sort of standard). No number normalization is taking place.

    That last factor seems to be the biggest issue for me, but I’m not sure if it explains why Work numbers show up for some (even though it’s not standardized) but not for others. Would inconsistent behavior like that be expected without E.164?

    • Reply Jean GL Jul 15,2014 14:41

      Hi,

      I have the same problem. Some informations are not displayed such as the mobile phone number. Did you solve your problem ? Or is there someone can help ?
      Thank you

  4. Reply Simon Jun 8,2014 21:24

    Hi,
    Excellent article by the way.

    I’m in the beginning of a 2010 to 2013 migration. I’m currently testing co-existence functionality between pools and I’m noticing that users cannot search the GAL after moving to the 2013 pool. When trying to access the internal URL https://fepool.domain.com/abs/handler the user is prompted to login and after three failed attempts, receives “401 – Unauthorized: Access is denied due to invalid credentials. You do not have permission to view this directory or page using the credentials that you supplied”.
    In the IIS logs there are slightly more detailed 401 error codes, but I’m not sure what to make of them.
    Any ideas?

    • Reply admin Jun 10,2014 11:19

      Hi Simon,

      The prompt when accessing the ABS/Handler URL is correct and normal behavior.
      When connecting the Lync client to the new pool, does the Lync client have any issues with looking up usernames?

      Kind regards,
      Hans Sleurink

  5. Reply WWWScotty Jun 16,2014 23:35

    Hans,
    Should the Lync 2010 address book (or search bar) resolve Exchange contacts that include SIP addresses from external domains?
    For example, we create an Exchange 2010 contact with a client’s email and SIP information. Will Lync 2010 resolve that SIP when entering the client’s name in the search bar?
    Cheers,
    –Scotty

  6. Reply Frode Jul 15,2014 11:09

    Hi Excellent article

    What would be a good way to make a company global address book that also company users can expand on.
    Like Exchange Public Folders or Shared Contacts register.

    Is it possible to use Sharepoint or other searchable directory thats easy for end users to add new contacts to?

    Kind regards,
    Frode

  7. Reply Bheemesh Sep 18,2014 11:04

    Hi,

    Excellent article by the way.

    I have an issue where the organization tab is showing incomplete info (missing some users) when view in lync 2010 client.

    There is no issue viewing it from outlook.

    When I tried using lync 2013 client instead, it is able to show the full complete info under the organization tab.

    It seems that only lync 2010 client is not able to show full complete organization info.
    May I know is this some kind of bug in lync 2010 client?
    If so, is there any fix or workaround solution for this.

  8. Pingback: August 2014 Lync Server 2013 CU Solves Address Book Delta Issue… Eventually. | Mandie's Memos

  9. Reply Timo Dec 23,2014 09:50

    Hi!

    I have the following situation:

    I have created a Contact object in AD. This Contact is available in Exchange Management Console under “Mail Contact”. When I check the Properties of this “Mail Contact” there is the choice “Hide From Exchange address list”. This was first selected, but afterwards unselected. This Mail Contact is a member of a Exchange Distribution Group.

    The problem is that this “Mail Contact” is not visible when I browse the Distribution Group in Lync, and try to send IM to all members of that Distribution Group. It is also not listed in the Members-tab in Lync Contact Card for that Distribution Group.

    So what I want is to get this Mail Contact/Contact to be visible in Lync Contact Card, and I want to be able to send IM via Lync also to this Contact.

    How could I achieve this?

  10. Reply RSK Jan 9,2015 05:10

    Hi,
    I have aissue with search.User is not able to search specific people .where as other employees are replicating in search. but her group people she couldn’t search

  11. Reply Shaik Apr 13,2015 11:30

    We have Exchange & LYNC 2013
    after CU10 upgrade on LYNC users are unable to search other users with first / last name but search working fine with sip address.

    any help ?

  12. Reply Issam Batti Jul 7,2015 14:02

    Hi,

    I have problems with my phones numbers in AD, when I attribute a direct line to a user like (tel:+33970112233;ext=444) I cannot call the short format (444). Somone help me please???

  13. Reply Cristobal Sep 27,2015 04:18

    Hi,

    I need lyc to search only AD contacts, not Outlook GAL contacts, how can I achieve it?

    Thanks,
    Cristobal

  14. Reply Cristobal Sep 27,2015 04:18

    Hi,

    I need lync to search only AD contacts, not Outlook GAL contacts, how can I achieve it?

    Thanks,
    Cristobal

  15. Reply Hamamd Iqbal Oct 7,2015 09:18

    we are using lync (skype for business 2015), the issue i have is it is not displaying the contacts, even the ones which are added. every time i need to search for the colleague i want to chat with. it’s giving error that (lync can’t connect to the exchange. your contact list and conversation might have issues)
    This issue is not with all the user, for few it’s working for few we are facing this issue. kindly help me out in this case. Thanks

    • Reply Hans Sleurink Oct 7,2015 09:41

      It sounds like you’re using the unified contact store functionality in Exchange for your users. Verify if this is enabled for the users that have this issue.
      They need to be able to connect and authenticate to Exchange on autodiscover.maildomain.com (where maildomain.com is your own maildomain). If that is corrected you will see that contacts reappear.

  16. Reply James Oct 16,2015 19:48

    Hans,

    I’m wondering if you’ve seen this problem before. I’m building a S4B POC and the IIS logs show that my Skype for business client (2016) is requesting the wrong lsabs file.

    2015-10-16 17:44:20 GET /abs/handler/F-4fc5.lsabs – 443 user@domain.com OC/16.0.4266.1001+(Skype+for+Business) – 404 0 2 10

    However when I run the Test-CSAddressBookService cmdlet on the server it properly discovers the correct file in the ABFiles Directory. HAve you ever seen something like this?

    GetWebTicketActivity completed.
    ‘GetWebTicket’ activity completed in ‘0.0406638’ seconds.
    ‘HttpRequest’ activity started.
    Sending Http GET Request.
    File Path = https://servername.domain.com/abs/handler/f-1519.lsabs
    Attempt Number = 1
    Time Out (milliseconds) = 60000
    Successfully Downloaded the ABS file
    https://servername.domain.com/abs/handler/f-1519.lsabs.

    If I go to my client and navigate to the URL of the correct lsabs file I can download it manually, but when launching the client the IIS logs continue to show a request to the wrong endpoint.

  17. Reply Mohammad Oct 29,2015 09:45

    Hi,

    I have a strange issue with Lync Contacts Search . For some users , I can find their contacts when I type their Name in Lync internally – LAN . When I am logged in to Lync externally , I can not find their contact even if I type their email or sip address . For other users that are in the same AD OU , I can normally lookup their contacts in Lync internally and externally.
    All users contacts appear properly in GAL .
    Your help is highly appreciated.

  18. Reply Kay Nov 30,2015 10:40

    I have a problem, where we had a demerger and one of the sip domain was remoeved. All the users were deprovisioned from Lync and user objects are also removed from AD.
    When I do a search with any of the removed Domain users, I am still able to see. When I ran the command get-csuser, it says cannot be found, however when I do a test-csaddressbookwebquery, it is successful.
    My goal is to get those users removed from my lync search.
    I feel that this could be due to Lync Contacts folder in exchange mailbox, but if this is true, then would i need to get all the users Lync Contacts folder purged?

    • Reply Hans Sleurink Nov 30,2015 10:52

      Do you mean the test-csaddressbookwebquery returns a successful result and the user can still be found? If so, try using the update-csuserdatabase and after that has been successfully done run the update-csaddressbook cmdlet.
      Also those removed users need to be deleted from the Outlook contacts folder, as that folder will also be searched by the Lync client.

      • Reply Kay Nov 30,2015 11:30

        Yes, the Test-csaddresswebquery shows success. However the when I search get-csuser with SIP Address, i get an error that it is not available.
        I find that the Addressbook updates automatically every 2 hrs. Do you still recommend me to run the command?

        • Reply Hans Sleurink Nov 30,2015 11:34

          Yes, but note that the Update-CsUserDatabase is a different cmdlet. (Technet) “Forces the back-end user database to clear its replication status with Active Directory. This causes the database to re-read all the user-related information stored in Active Directory Domain Services.”

  19. Reply Gautamredmi1s Jan 17,2017 09:25

    Hi Hans Sleurink ,

    Its a nice blog of your , however a small update . The below points

    “When Lync has downloaded the files, you will have 2 files in the userprofile, namely GalContacts.db and GalContacts.db.idx. In Lync 2013 this is a file called ABS__sipdomain.cache. ”

    Indicates that Galcontact.db file is replaced as “ABS_sipdomain.cache” file. But in reality both Lync 2013 & SFB 2016 client will have “ABS_sipdomain.cache” file and “Galcontacts.db” file in SIP folder if the client policy is file download .

    So, please include the above point in your blog for better clarity . Thanks in advance.

  20. Reply markus Feb 1,2017 15:05

    HI Hans,

    I have a question about departed users.
    when a user leaves the company and i disable his AD account
    and remove UM from exhange nad disable user in Lync control panel and I remove them from Lync control panel. BUT there still showing in lync when i login as “Presence unknown” How can i delete them so when i type there name, they dont show up.

    thanks,

  21. Reply Paul Adam Feb 8,2017 15:06

    Hi Hans,
    Sorry to ask a direct question – not sure if related to anything in this article or not….
    Anyway, good post, I’m having a strange issue with SfB2015 (on premise, 2016 clients) where, when users add contacts into their desktop client they are added, contact cards all look fine, numbers, company name etc is all displayed perfectly – look in the “Skype for Business Contacts” in Desktop Outlook and all looks fine there too and in OWA (2016), but……

    If I drop to legacy OWA (2010 style, by using emulation mode in browser), the contact information is far from complete….in fact, some contacts appear in the list as “(none)” and on opening them, the only info displayed is their IM address

    To be frank, I wouldn’t be that concerned, but users sync this contacts list with their mobile phones (mainly iPhones) via ActiveSync etc… and this is the only info displayed to them too!

    I’ve had Microsoft PSS looking at it for the last week and they are a bit stumped as well….so wondered, with your knowledge on contact sync process – if you could help explain what is (or is not) going on?

    Proper head scratching going on here – so appreciate any suggestions…

    Cheers
    Paul

Leave a Reply