Haiku #6

I once was lost but

Now I'm found. Thank you,

Update-CsAddressBook.

Well, we're back after an extended break for the Thanksgiving Day holiday. (What do you mean you didn't even know we were gone? Ah, now you've gone and hurt our feelings ….)

If you're not familiar with Thanksgiving, Thanksgiving is a day when we Americans give thanks for all the things we're grateful for … like the fact that the Dallas Cowboys got beat in their annual Thanksgiving Day football game. Thanksgiving is one of the most popular US holidays, despite the fact that it's also one of the least commercial of all US holidays. Or at least everyone thinks it's one of the least commercial of all US holidays. After all, Thanksgiving was originally held on the last Thursday on November, or at least it was until then-President Franklin Roosevelt changed the date to the fourth Thursday in November in order to extend the Christmas shopping season. That way, families could go out and spend a whole bunch of money on Thanksgiving, yet still have plenty of time to spend a whole bunch of money on Christmas as well. Somehow or another, that makes Thanksgiving one of the least commercial of all US holidays.

Which should tell you something about US holidays.

At any rate, and even though Thanksgiving 2010 has come and gone, in today's haiku we tell you what we're grateful for: the Update-CsAddressBook cmdlet.

Note. We're also grateful for the fact that 6 of our relatives were unable to make it for Thanksgiving dinner, leaving a ton of leftovers. But that's another story.

So what's so great about the Update-CsAddressBook cmdlet? Well, as you probably know, Microsoft Lync Server 2010 relies on Active Directory as a place to store user information: important data like user names, SIP addresses, and user phone numbers are all stored in Active Directory. And that's good: that way, any time a user changes their phone number you don't have to update that information in both Active Directory and in a Lync Server database. That's less work for you, and less chance of you making a mistake and entering one phone number here and a different phone number there.

At the same time, however, people are constantly accessing this user information; for example, any time you search for a contact in your organization you need to plow through that Active Directory data in order to find that contact. In a large organization, that could pose a problem: generally speaking, your domain controllers have enough to do without having 10,000 people barrage it with search requests for Ken Myer. Because of that, Lync Server essentially copies a subset of Active Directory user information into the Lync Server User Services database. The User Services database then periodically synchs its contents with the latest information stored in Active Directory. Allowing for the time interval between content synchs, that ensures that the information stored in the User Services database and the information stored in Active Directory are identical.

But wait: that's only half the story. To help prevent wear-and-tear on the User Services database, user information is, in turn, doled out to Lync Server Address Book servers. When you use Microsoft Lync 2010 to search for a contact, you're actually searching information stored in Address Book server. This can be done directly, by using the Address Book Web service, or indirectly, by searching local copies of the Address Book files that are periodically downloaded to your computer.

In other words, user information is stored in Active Directory. That information is periodically synched with the information stored in the User Services database, which is then periodically synched with the information stored by Address Book servers.

OK, we admit that the whole thing sounds a little confusing; on the other hand, who cares as long as the system works, right? And the system pretty much always works: if you search for a contact (someone you know has an Active Directory user account) that search will invariably succeed.

However (you were just waiting for that "however," weren't you?) there are rare occasions when the Address Book might not be completely up-to-date; for example, you might have created a new user account and enabled that user for Lync Server, yet he or she doesn't show up when you search for them using the Address Book. Why would that happen? Well, there's typically an easy enough explanation for that: the user's information simply hasn't been replicated from the User Services database to the Address Book server. If you suspect that's the case, you can force an Address Book server to synch with the User Services database by using – that's right: by using the Update-CsAddressBook cmdlet. For example, this command causes the Address Book server atl-lync-001.litwareinc.com to synch its user information data with the information found in the User Services database:

Update-CsAddressBook -Fqdn atl-lync-001.litwareinc.com

And this command causes all your Address Book services to synch with the User Services database:

Update-CsAddressBook

Now can you see why we're so grateful for the Update-CsAddressBook cmdlet? Run Update-CsAddressBook, wait a minute for the synch to complete, and your "lost" user account will now be found.

Which explains what today's haiku was all about.

And if you're thinking, "That's fantastic. But what if the User Services database hasn't synched its data with Active Directory?" Well, as it turns out, there's a solution to that problem, too. And we'll report on that solution just as soon as we can figure out how to work Update-CsUserDatabase into a haiku. See you tomorrow!