We often search a colleague or a friend in different organizations on Lync client. These contacts are searched from Lync address book. With this blog, I’m gonna explain in simple words how Lync generates address book and how a contact is fetched when you search for a contact.
This journey begins with Active directory. We create a user or a contact or a group in AD, fill all the necessary boxes like Title, telephone number, and all other stuffs and then we enable the user for Lync.
Lync address book generation mainly contains three steps.
- Fetching users, groups and contacts from Active directory
- Saving these information in RTCAb database
- Publishing these information in .lsabs and .dabs format for various Lync clients.
Let’s take a look at these three steps.
- Information about users, contacts, Groups is stored in AD
- User replicator service on a FE server fetches these information from AD once in every 60 seconds, and writes in User database table into RTCab database.
- On Lync FE server, abserver.exe uses these information to generate address book files which can be used by all type of Lync clients. In case of Lync Enterprise pool deployment, abserver.exe will be running on only one FE server per site.
- Lync address book files are stored in a Lync shared folder which we specify while configuring Lync server topology.
- Exact location of these files is: \\LyncShare\1-WebServices-1\ABFiles\00000000-0000-0000-0000-000000000000\00000000-0000-0000-0000-000000000000\
- Abserver.exe creates two types of files
- *.lsabs – used by Lync rich clients
- *.dabs – used by Lync mobile clients
- We see many files in address book folder which ends with .lsabs and .dabs
- F-XXXX.lsabs Full files
- D-XXXX-YYYY.lsabs Delta files
- C-XXXX-YYYY.lsabs Compact files
- F-XXXX.dabs Full files
- D-XXXX-YYYY.dabs Delta files
- All data files are stored in one directory. File names for full files are if the form F-xxxx, where xxxx is the file creation date expressed as the hexadecimal 0-based number of days since January 1, 2001. Delta file names are of the form D-xxxx-yyyy.lsabs, where xxxx is the full file creation date, and yyyy is the delta file creation date and .lsabs is a fixed extension. Files are created in memory and are written using a file handle that is created with no sharing allowed so that client applications cannot access a file before it has been completely written
- These files are kept for 30 days. On 31st day, 1st file is overwritten with the new file. Below table explains this very well.
|Day 1||Full (F1)|
|Day 2||Full (F2), Delta of F2 – F1|
|Day 3||Full (F3)
Delta of F3 –F2
Delta of F3 –F1
|Day 4||Full (F4)
Delta of F4 – F3
Delta of F4 – F2
Delta of F4 – F1
|Day 30||Full (F30)
Delta of F30-F29
Delta of F30-F28
Delta of F30-F1
Below table explains what all information from a user account is fetched by abserver.exe and stored in SQL database.
Among all above attributes, there are few important fields which is widely used in Enterprise Voice. That’s “Phone number” fields. Let it be TelephoneNumber, Mobile, or any other number. Microsoft follows “international public telecommunication numbering plan” which is also known as E.164 plan. If the phone numbers are not entered in E.164 format in AD, we need to update the phone number in E.164 format. Updating of phone numbers for hundreds or thousands of users is not feasible. Still we need to update the phone numbers. To update these phone numbers, a text file, named company_phone_number_normalization_rules.txt, located at root location of address book, which includes RegEx (regular expressions) rules. abserver.exe reads these rules and applies to phone numbers. Once these rules are applied, Lync contact card will show E.164 formatted phone numbers.
Now that we have information fetched from AD, saved in Lync SQL database, processed by abserver.exe and generated .lsabs and .dabs files, let’s have a quick look at how Lync clients uses these files.
Address book from Lync client perspective
- There are different ways for Lync client to search Lync contacts.
- GAL based search
- Web based search
- Contact search is controlled by client policies, which we can configure using Lync server management shell.
- In GAL based search, Lync client downloads address book files to local pc and contacts are searched locally.
- In Web based search, Lync client sends a web search request to Lync server on port 443
- Legacy clients like Office Communicator do not support web search. We set mixed mode if the deployment consists of legacy clients.
- Upon sign in, if the address book files are not present, Lync client downloads address book files and stores in user profile. It may be immediate or later. But within an hour from the login time.
- There is a registry key which can be used to force the Lync address book files immediately.
- Lync 2010 client
- reg add HKLM\Software\Policies\Microsoft\Communicator /v GalDownloadInitialDelay /t REG_DWORD /d 0 /f
- Lync 2013 and OS same bitness (both either x86 or x64)
All Users reg add HKLM\Software\Policies\Microsoft\Office\15.0\Lync /v GalDownloadInitialDelay /t REG_DWORD /d 0 /f Current User reg add HKCU\Software\Policies\Microsoft\Office\15.0\Lync /v GalDownloadInitialDelay /t REG_DWORD /d 0 /f
Lync 2013 Client and OS different bitness (combination of x86 and x64)
All Users reg add HKLM\Software\Wow6432Node\Policies\Microsoft\Office\15.0\Lync /v GalDownloadInitialDelay /t REG_DWORD /d 0 /f Current User reg add HKCU\Software\Wow6432Node\Policies\Microsoft\Office\15.0\Lync /v GalDownloadInitialDelay /t REG_DWORD /d 0 /f