The Address Book delta issue that we and so many other large Lync environments have experienced is resolved by the Lync Server 2013 Cumulative update for August 2014 – about 30 days after the update is installed. So, patience, Grasshoppers.
What should have been the early July 2014 Lync Server 2013 Cumulative Update became the mid August 2014 update, but we’re not complaining – it beats the early July update followed closely by the August update to fix the damage done by the July update!
Installing the Cumulative Update – and Waiting
First, a warning passed on to me by the MS Support engineer who handled our original incident: after you connect to each of your Lync Front End servers and before you install this update, make sure that Event Viewer and Performance Monitor are not open. To be safe, close all MMC windows, including the “Server Manager” one that comes up by default when you log on to Windows Server 2008 or 2012. If you’ve read the release notes (which you should have!), you’d have seen this, but I’m stating it again, as the MS Support engineer thought it important enough to contact me directly.
Our installation of the update went smoothly, taking less than half an hour per server, including the time to stop all Lync services before and for them to start again after. We only had one server out at a time; the pool was still running.
Now, back to the whole “eventually” part. You will not see a “good” delta the first day you run an address book update, no matter how many times you enter “Update-CsAddressBook”.
The delta between a good full address book and a bad one will still be too big to be retained. You have to wait until there are at least two good full address books to start seeing good deltas. Do not raise your MaxDeltaFileSizePercentage to the 55 or so percent it takes to always get a delta unless you don’t have any bandwidth-constrained sites or users. We saw our first good delta the morning of the second day after we updated our first pool.
Your Address Book Files
The Address Book files (.lsabs) are kept in your pool’s File Store, under your pool’s Web Service’s directory. To get this path, use this function, putting in your Lync Pool’s name for the $MyPool parameter.
function Get-LyncAddressBookDirectory { param( [Parameter(Position=0,Mandatory=$True,ValueFromPipeline=$True)] [String]$MyPool ) $FileStore = (Get-CsService | where {$_.role -eq "FileStore" -and $_.dependentServiceList -contains "WebServer:$MyPool"}).UncPath $WebServiceId = (Get-CsService -Identity "WebServer:$MyPool").ServiceId $AddressBookDirectory = "$FileStore\$WebServiceId\ABFiles\00000000-0000-0000-0000-000000000000\00000000-0000-0000-0000-000000000000" $AddressBookDirectory }
Now, to make use of this to see what’s in that directory. Naturally, you can just look at it in Windows Explorer, but it’s easier to explain in PowerShell.
$MyAddressBookDir = Get-LyncAddressBookDirectory -MyPool lyncpool01.mandie.net # List all your full address book files Get-ChildItem $MyAddressBookDir\F-*.lsabs
Full address book files have names like this: F-xxxx.lsabs, where xxxx is a hexadecimal sequence number. Each new day will increment this by one. Running Update-CsAddressBook will not increment it if that day’s file already exists; it will replace the file created earlier in the day, then diff that with the previous days’ files. 30 of these full address books are kept by default. This default is determined by Set-CsAddressBookConfiguration -KeepDuration, highly preferably when you first installed Lync (see Greig in Sydney’s article for why you should NOT change this later).
# Get the full device address books Get-ChildItem $MyAddressBookDir\F-*.dabs
Similar to the full address books for Lync Client, but with fewer attributes, therefore more suitable for devices like Lync Phone Edition.
# Get the deltas Get-ChildItem $MyAddressBookDir\C-*.lsabs
The delta files for desktop clients have filenames like C-xxxx-yyyy.lsabs, where xxxx is the hexadecimal sequence number of the older full address book and yyyy is the newer address book. These files should be a lot smaller than the F-xxxx.lsabs files; in our production environment, the full address books are around 8MB, while the deltas have been 1KB to 260KB.
Do not panic if this doesn’t return anything if you just installed the cumulative update a day or two ago. If it does not show anything after a week, and you are in an environment large enough to have changes every day (which is probably just about any environment affected by the address book delta issue), then it’s time to start considering contacting MS Support.
The D-xxxx-yyyy.dabs are the delta files for devices, and I’ve not figured out exactly what consumes the D-xxxx-yyyy.lsabs files
After your address book files have been properly generated for 30 days or longer, you will have about 900 files in this directory.
Your Address Book Files, In Depth
Still curious about those address book files and deltas? You can extract (“dump”) their contents using ABServer.exe on any of your Front End servers:
C:\Program Files\Microsoft Lync Server 2013\Server\Core\ABServer.exe -dumpFile inputFile outputFile
where inputFile is the .lsabs or .dabs you want to inspect, and outputFile is the name of the file you want the extracted contents in. outputFile must not exist; ABServer.exe will not overwrite an existing file.
Back when we were still having problems with address book deltas and set the MaxDeltaFileSizePercentage above 55 to force delta file retention, no matter how large, the extracted files showed that all entries were deleted every night and re-written as if new.
I won’t repeat Hans Sleurink’s excellent, concise explanation of how address books are generated and then distributed – go read about it there.
How does deleting the GalContact files (after installing the August Update) affect this process (aside from getting an updated AB every time you manually delete the client files, naturally)? Are you still waiting on the 30ish day window for the 2 full AB files?
LikeLike
Hi Andy,
The waiting period I’ve described applies to seeing results on all clients *without* manually deleting their GalContact files; how long it will take for all of them to cycle through their 30 days between full AB downloads and start consistently getting good daily deltas. This is the route we chose because we have over 40k users and decided that another month for the problem to fully go away on its own beat having loads of them downloading the full address book all at once. Plus, Lync/Communicator is still a “beta” service for most of our users.
If you can take the hit of large groups of users all downloading the AB at once and have a slick way of deleting those files on their clients, and the lack of an up to date address book has been a huge issue for your users, go for it. If you do so, you might want to temporarily add a registry setting that makes them pull their address books right after logging on, otherwise you’re going to get a lot of complaints about not being able to find anyone.
LikeLike