Two is company,
Nine hundred three is a crowd.
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.
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.
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.
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.