Lync Online / Office 365 Policy Configuration Workshop

Posted 2 years 314 days ago ago by Christian Burke     0 Comments

1 Loved it Love It Hate It

I recently visited a nice sized company (10,000 users give or take) that is deploying Lync Online as part of their Office 365 initiative.  I watched as they negotiated various versions of the Lync client to provide customized user experiences.  In other words, deliver the Basic client so the dial pad doesn’t show up, etc.  I was thoroughly confused as a successful deployment would have relied on the System Center team to deliver different clients based on the user experience.  In addition, the main complaint about Lync for the users was that the interface was too confusing with so many options presented to the user.

I asked a simple question: Why aren’t you using Lync Policies to deliver a personalized experience to individual users or groups of users?  The response was a combination of astonishment and confusion.  So, I explained that they could simply deploy a single client (Lync Pro Plus client included in the Office 365 portal) and simply assign a user a policy that disables the dial pad – and so on and so on…

Without hesitation, they nodded their heads ‘yes’ and so goes the rest of the article.  This article will show you how to deploy specific policies to users that will provide the customized experience each individual needs.  In this example, I am only going to show the Conferencing Policy.  However, there are a handful more Policies you could change like the External Access Policy, Presence Policy and more. 

Here is a list of Lync Online specific Powershell Cmdlets:

Here are the steps for getting it all done:

Connect to Lync Online via PowerShell

You will need the ability to access PowerShell to your tenant. 

$credential = Get-Credential “”

$session = New-CsOnlineSession –Credential $credential

Import-PSSession $session

  • Save the file and launch it from a command prompt.
  • You will be presented with a credential login window.
  • Enter your Office 365 credentials.
  • Now you’re in PowerShell for Lync Online!

A quick primer before the next step…

There are logical differences between what you get to do in Lync On-Premises versus Lync Online.  Both versions allow you to provide customized policies to various feature sets of the Lync experience.  But, where Lync On-Premises allows you to create new policies, Lync Online does not.  In Lync Online, you are forced to pick from a list of pre-canned policies and apply that selected policy to a user or group of users.  Not to worry though, there are upwards of 200+ different policies just for Conferencing.  And that leads us to our next step:

Get the List of Conferencing Policies

From your PowerShell command line, type Get-CsConferencingPolicy

You will get a sea of content.  So, let’s modify the command.

Type Get-CsConferencingPolicy | Out-File C:\temp\conferencingpolicy.txt (whatever directory/name combo you want)

Now we have a big gnarly file to work with.  You will see blocks of content like this:

Identity                                  : Tag:BposIAllModality

AllowIPAudio                              : False

AllowIPVideo                              : False

AllowMultiView                            : True

Description                               :

AllowParticipantControl                   : False

AllowAnnotations                          : True

DisablePowerPointAnnotations              : False

AllowUserToScheduleMeetingsWithAppSharing : False

AllowNonEnterpriseVoiceUsersToDialOut     : False

AllowAnonymousUsersToDialOut              : False

AllowAnonymousParticipantsInMeetings      : False

AllowExternalUsersToSaveContent           : False

AllowExternalUserControl                  : False

AllowExternalUsersToRecordMeeting         : False

AllowPolls                                : False

AllowSharedNotes                          : True

AllowQandA                                : True

AllowOfficeContent                        : True

EnableDialInConferencing                  : False

EnableAppDesktopSharing                   : None

AllowConferenceRecording                  : True

EnableP2PRecording                        : True

EnableFileTransfer                        : True

EnableP2PFileTransfer                     : True

EnableP2PVideo                            : True

AllowLargeMeetings                        : False

EnableOnlineMeetingPromptForLyncResources : False

EnableDataCollaboration                   : False

MaxVideoConferenceResolution              : VGA

MaxMeetingSize                            : 250

AudioBitRateKb                            : 200

VideoBitRateKb                            : 50000

AppSharingBitRateKb                       : 50000

FileTransferBitRateKb                     : 50000

TotalReceiveVideoBitRateKb                : 50000

EnableMultiViewJoin                       : True

And there are all the options you have to present to the users!  Every policy in the text file has varied options based on this list.  But, what a pain in the butt to have to figure out all the different policy variations.  Below is a handy way to narrow down the list from 200+ variations (or Identities) to a manageable list.

Narrow Identities to ApplicableTo

In that list of 175+ Identities, you will not be able to apply the vast majority of them to a user.  This is typically because the user may not be on the licensing level required for many of them, or maybe some of the identities require a certain enabled feature (for example Dial In Conferencing), etc.  There is a handy little flag that limits the Identities that are available to a particular users.

Get-CsConferencingPolicy –ApplicableTo username | Out-File C:\temp\conferencingpolicy.txt

Keep in mind that the username only seemed to work for me without the extension.  So, simply the account name only.

Here is the reference to the cmdlet:

Voila!  That reduced the list, in my case, to about 30 Identities.  That’s a list way easier to manage.

Import the List into Excel

No need to explain here, just do it.

If you want a handy trick, use the delimiter  of “:” to create the proper cell separation.

Now, go through the painful task of transposing the column two variables into a table like this:


Of course, I didn’t include all 30 columns, but you get the point.  Now you have a super handy little matrix of all the Identities provided to Lync Online administrators and of course the users they will apply them to.

What IS the Point?

Now you can select a policy based on the criteria in the list of options.  For example, the option AllowNonEnterpriseVoiceUsersToDialOut will disable the aforementioned Dial Pad on the Lync client.  So, looking for FALSE in the table on that row will solve that one.  I will pick the Identity of “BposSAllModality” for the example below.  It has the FALSE flag for AllowNonEnterpriseVoiceUsersToDialOut and also gives every option available to the client as well.

So, let’s complete the process by applying a policy to a user.  Then, you can figure out how to manage other policies and also figure out how to apply them to groups of users.

Grant-CsConferencingPolicy –Identity username –PolicyName BposSAllModality

Using the reference document, you can grant the policies based on OU or other group-like methods.

Log off the Lync client, then log back on and watch the Dial Pad magically disappear!

Pretty cool, huh?

About the Author

No Comments

Add Comment

Enter the name you would like to appear on the comment.
Enter the email you would like to use to get updates. You email is not visible and can not be used by other users.
If you have a website, enter the url here. Ex:
Enter you comment help.

Enter the code shown above in the box below
  Post Comment
Christian Burke is currently employed by and provides Unified Communications solutions for Microsoft Corporation.  With his primary focus as a Lync Voice Technology Solutions Professional, he is dedicated to designing and building cutting edge Lync infrastructure for clients around the world.  He created this blog to document some of the many processes he has grown familiar with over the past few years.  He knows that blogs, especially for Lync where good documentation is dodgy at best, are a crucial information source for building the perfect Lync system.  So, this blog is his contribution.  Enjoy.
Copyright 2017 by