Haiku #16

Two is company,

Nine hundred three is a crowd.

User Services.

Ah, contacts: you can't live with 'em, and you can't live without 'em. The truth is, without contacts, Microsoft Lync 2010 wouldn't be all that much fun: if you couldn't quickly and easily send instant messages to people, if you couldn't quickly and easily check the status of people, if you couldn't quickly and easily get hold of people by using features like click-to-call, well, what exactly would you use Lync for? Needless to say, contacts are a very important part of the whole Lync Experience.

Note. Not to be confused with the Jimi Hendrix Experience. Although it's a common mistake.

At the same time, however, contacts do come with a price. (Which shouldn't come as a surprise: nowadays, what doesn't come with a price?) In the case of contacts, we're talking about the network bandwidth required to constantly update the status of all the contacts belonging to all your users. For example, suppose you have 1,000 users, and each of those users has 100 contacts. That's a total of 100,000 contacts that Microsoft Lync Server 2010 has to keep track of. Now suppose you have 10,000 users and each of those users has 400 contacts. That's – um, let's see, carry the two, divide by zero … well, at any rate, that's a lot of contacts for the system to keep track of. That means additional work for your Front End servers, and a lot of additional traffic just to tell you that Ken Myer has been away from his desk for 20 minutes now.

Unless, of course, it doesn't. After all, maybe that isn't a lot of additional work for your Front End servers, and maybe that isn't a lot of additional network traffic: all of that's going to depend on how Lync Server has been configured, the number of Front End servers you have, the speed and reliability of your network connections, etc., etc. In some organizations, 400 contacts per user might overwhelm the entire system; in other organizations, the impact of 400 contacts per user might be about the same as the impact these daily haikus have on the number of page views recorded each day on TechNet.

Or, to put it a little more bluntly, a negligible impact.

At best.

So does Microsoft provide Lync Server administrators with any tools that let them manage the maximum number of contacts any one user can have? You bet we do: that's what the CsUserServicesConfiguration cmdlets are for. The CsUserServicesConfiguration cmdlets (Get-CsUserServicesConfiguration, New-CsUserServicesConfiguration, Remove-CsUserServicesConfiguration, and Set-CsUserServicesConfiguration) actually have all sorts of cool uses; for example, you can use these cmdlets to determine:

· How long an anonymous users can remain in a meeting without at least one authenticated user being in that meeting as well. If an authenticated user doesn't join within the specified timeframe, our anonymous user will be removed from the meeting.

· The number of personal notes (those little messages that show up in the Activity Feeds pane) that are retained by the system. The default value is 3, although you can choose to automatically save as many as the last 10 personal notes.

· The maximum number of meetings any one person can act as the organizer for at a given time. By default, any one user can schedule up to 1,000 meetings at a time. (And before you ask, no, we have no idea why anyone would want to schedule 1,000 meetings at a time.)

Perhaps most important, however, the CsUserServicesConfiguration cmdlets enable you to specify the maximum number of contacts a user can have on his or her contact list. For example, if network bandwidth is a somewhat-scarce commodity in your organization, you might prefer to limit users to a maximum of 100 contacts. Hey, no sooner said than done:

Set-CsUserServicesConfiguration –Identity global –MaxContacts 100

We should probably mention that the CsUserServicesConfiguration cmdlets let you set the absolute maximum number of contacts any of your users can have. However, by using the CsClientPolicy cmdlets it's possible to restrict users (or a subset of users) to a number of contacts that's actually less than this maximum number; if you wanted to, you could even prevent users from having any contacts. (Seems like an Ebenezer Scrooge sort of thing to do, but you might have your reasons. You know, like maybe Tiny Tim has been spamming everyone in the office again.) Regardless, we've written an entire article devoted to that topic.

Strange but true. Speaking of Ebenezer Scrooge, there's a species of snail named the Ba humbugi . Not to mention a water beetle named Ytu brutus, a fly named Pieza pi, and, of course, the Apopyllus now spider.

And you thought we were weird for writing haikus about Lync Server PowerShell.

The moral of the story: as long as you make judicious use of the CsUserServicesConfiguration cmdlets, it's entirely up to you whether you want to live with contacts or without 'em.

Note. OK, maybe that's not the greatest moral in the world. Originally we were going to use this:

He had no further intercourse with Spirits, but lived upon the Total Abstinence Principle, ever afterwards; and it was always said of him, that he knew how to keep Christmas well, if any man alive possessed the knowledge.

But it turns out that Charles Dickens already used that in A Christmas Carol. Talk about coincidence!