Technical blog about Exchange, OCS and Lync by Ståle Hansen

  • TENA14

  • Proud contributor and fan of

  • wordpress visitors
    • 881,380 views since april 09

Posts Tagged ‘Lync’

My Lync and BYOD in a WIFI infrastructure LyncCast is now Online

Posted by Ståle Hansen on 13/04/2014

Friday april 11th I did a talk over a Lync Cast arranged by Microsoft Norway about Lync and Bring Your Own Device (BYOD) in a wireless infrastructure in Norwegian.

Abstract: Bring Your Own Device (BYOD) er en trend IT avdelingen ikke alltid kan kontrollere. Tar man Lync med telefoni med i bildet så er det en del momenter man må tenke på, som hvilket nett skal «unmanaged devices» koble til, hvordan kan vi sikre tale kvaliteten og hvor enkelt er det å komme i gang for brukeren. Hvis du ønsker å lykkes med Lync i et trådløs nettverk, da er denne webcast for deg og din bedrift

View the video here:

Posted in Lync Server 2013 | Tagged: , , | Leave a Comment »

Dial-in Conferencing in Lync now just requires Enterpreise CAL

Posted by Ståle Hansen on 20/12/2013

Some time ago the CAL licensing for dial-in conferencing was changed. The change is that for users to be able to invite to a Lync meeting where users are able to dial in from a phone or a mobile now just require that this user has an enterprise CAL. Earlier the users that could invite to such meetings needed to have plus CAL in order to do this. The scenario is that users now can invite to a phone conference without being enabled for Enterprise Voice which requires Plus CAL. This is ofcourse policy controlled on the Lync server and has always been possible, but not from a licensing perspective.

Figure 1: Dial-in Conferencing in Lync


New or Improved

Standard CAL

Enterprise CAL

Plus CAL

Initiate an   impromptu (ad-hoc) multiparty (3+ users) meeting with audio and video   (including dial-out to PSTN or PBX users) Improved  

Initiate an   impromptu (ad-hoc) multiparty (3+ users) meeting with audio (including   dial-out to PSTN or PBX users) Improved    

Schedule and   invite attendees to meetings with audio (including dial-out to PSTN or PBX   users and hosted audio conferencing features), video, web conferencing and   content sharing Improved  

Automatically   join meeting audio from PBX or other phone number Improved  

Enable use of   Lync Room Systems New

Posted in Lync Server 2013 | Tagged: , , | 5 Comments »

Lock down your Lync status and PC notifications using PowerShell

Posted by Ståle Hansen on 25/11/2013

PomodoroRecently I wrote a blogpost on Control your Lync presence during a Pomodoro Sprint using PowerShell. This awesome script uses a timer and the Lync SDK to lock down Lync for 25 minutes while I get some real work done. The only thing I did not find out was how to suppress is Outlook popups and other notifications.

Thanks to a great tip by MVP Olav Tvedt i found out that you can set your laptop in presentation mode using the commandline tool presentationsettings

  • PresentationSettings /start
  • PresentationSettings /stop
  • Works from PowerShell as well

Using the script on a desktop

Apparently PresentationSettings is not installed on desktop computers by default. Searching the net I found a post by MVP Robert Sparnaaij where he described that you can use registry to enable this feature on desktop computers as well:

If you save the below text to a .reg file and run it you will add the settings necessary to enable PresentationSettings and you are good to go

Windows Registry Editor Version 5.00



; WARNING: Using Registry Editor incorrectly can cause serious problems that may require you to reinstall Windows. Microsoft cannot guarantee that problems resulting from the incorrect use of Registry Editor can be solved. Use Registry Editor at your own risk.

Download the script and check out how I use the Pomodoro Technique with Lync and PowerShell here:

Posted in Lync Server 2013 | Tagged: , , , , | 2 Comments »

Control your Lync presence during a Pomodoro Sprint using PowerShell

Posted by Ståle Hansen on 14/11/2013

This article is for you Lync-PRO’s out there who want to differentiate yourself from the average Lync user and at the same time want to reach true flow state using the Pomodoro Technique

This article discusses

  • The Pomodoro Technique
  • Flow state by Jason Silva
  • My Lync controlling Pomodoro PowerShell Script
  • The Script

The Pomodoro Technique

PomodoroScott Hanselman explained the Pomodoro Technique in a great way on his PodCast. Pomodoro is about splitting your productive time into intervals of about 25 minutes. During that time you should ignore E-mail, Lync, Twitter, Facebook, Instagram, LinkedIn, news, colleagues and all other elements that could distract you from your trail of thought, your deep dive focus, your flow state.

I have a busy day and it comprise of presentations, meetings, workshops,  customer dialogue, support sessions and talking with colleagues. Sometimes I actually need to deep dive into a problem or produce good documentation, where I have to focus for at least 10 minutes before I reach my flowstate and I need to stay in that flow state as long as possible. My biggest problem is that I am easily distracted and that is why I need to really focus to get real work done :) When I first sit down, I try to do Pomodoro sprints where I try not to get interrupted. When the interval is finished I am available for all the Lync IM’s, mails and everything. This way I may get more quality work done in a short period of time. Read more about Pomodoro here:

Flow State

My goal is to reach a flow state. Jason Silva, my favourite futurist, did a talk on his YouTube channel Shots of Awe. Recommend to get inspired by his talk about the subject

My Lync controlling Pomodoro PowerShell Script

When in a Pomodoro focus session I set do-not-disturb in Lync, disable notifications in Windows 8, and close all web sites that can distract me so I can focus on the work at hand be it an e-mail, document, script or configuration task. I use PowerShell as my Pomodoro timer and with the Lync SDK I am able to start a session, set the correct custom status and know that even if I forget, I will reset my status when my focus session is over.

The function in the script does the following

  • Set the duration of the Pomodoro sprint, usually 25 minutes
  • Import the Lync SDK into PowerShell
  • Delay is where you set the interval the script will update time remaining
  • It plays a start wav file, this could be a 25 minute Pomodoro tick sound
    • I usually just find a cool start tune and then listen to my own music on Spotify or YouTube
  • Then I use custom presence state in my Lync client where I have one state called Pomodoro Focus with do-not-disturb
  • Outlook and other notifications will get suppressed using presentationsettings /start, so no notifications will popup during the sprint
  • After that you have the counter that will count down the remainder of the focus session
    • I publish that in the personal note field of the Lync client, updates every minute with the time for when I will be available again :)
    • The last thirty seconds will display how many seconds are left until full availability


  • At the end of the function
    • I play an alarm to notify me that the session is over
    • Reset the Lync presence state
    • Set an appropriate note in the Lync client
    • To make sure I am available again

The Script


  • Download the Lync SDK
  • In order to avoid having to install visual studio, extract the lyncsdk86.msi from the sdk exe file using winrar or other software
    • The SDK need to match the bitness of your Lync client
  • Go through the script and change the path to where you installed the SDK
    • The script checks to standard paths for Office 2013
  • Running the script from a desktop? Remember to enable PresentationSettings:
  • I use some default wav files to start and end the Pomodoro Sprint, you can change those at the start of the script
  • Now you only need some determination to get some things done using an awesome technique :)

Veiw the script below

#Last updated: 02.12.2013 By MVP Ståle Hansen (
#Pomodoro function by Nathan.Run()
#Lync Custom states by Jan Egil Ring
#Note: for desktops you need to enable presentation settings in order to suppress email alerts, by MVP Robert Sparnaaij:

#Add the path to your module and wave file here
$ModulePathISO=(Join-Path -Path ${env:ProgramFiles(x86)} -ChildPath “Microsoft Office\Office15\LyncSDK\Assemblies\Desktop\Microsoft.Lync.Model.dll”)
$ModulePathStream=(Join-Path -Path ${env:ProgramFiles(x86)} -ChildPath “Microsoft Office 2013\LyncSDK\Assemblies\Desktop\Microsoft.Lync.Model.dll”)
$StartWave="C:\Windows\Media\Windows Proximity Connection.wav"
$EndWave="C:\Windows\Media\Windows Proximity Notification.wav"

#Checking if the files are available
if (Test-Path $ModulePathISO){$ModulePath=$ModulePathISO}
elseif (Test-Path $ModulePathStream){$ModulePath=$ModulePathStream}
else{Write-host SDK dll file not found;Write-Host Exiting script;break}

if (!(Test-Path $StartWave)){Write-host Start Wave file not found;$stop="True"}
if (!(Test-Path $EndWave)){Write-host End Wave file not found;$stop="True"}
if ($Stop -eq $True){Read-host "Wav files could not be found, press enter to continue or crl+c to exit";$errorpref="SilentlyContinue"}

 Function Publish-LyncContactInformation {

    Param (
        # Availability state as int
        # ActivityId as int
        # Custom ActivityId as int
        # String value to be configured as personal note in the Lync client
    #Importing Lync SDK and create object
    Import-Module -Name $ModulePath
    $Client = [Microsoft.Lync.Model.LyncClient]::GetClient()
    $Self = $Client.Self
    $ContactInfo = New-Object 'System.Collections.Generic.Dictionary[Microsoft.Lync.Model.PublishableContactInformationType, object]'

    if ($AvailabilityId) {
        $ContactInfo.Add([Microsoft.Lync.Model.PublishableContactInformationType]::Availability, $AvailabilityId)

    if ($CustomActivityId) {
        $ContactInfo.Add([Microsoft.Lync.Model.PublishableContactInformationType]::CustomActivityId, $CustomActivityId)

    if ($PersonalNote) {
        $ContactInfo.Add([Microsoft.Lync.Model.PublishableContactInformationType]::PersonalNote, $PersonalNote)

    $Publish = $Self.BeginPublishContactInformation($ContactInfo, $null, $null)


Function Start-Pomodoro
    Param (
        #Duration of your Pomodoro Session
        [int]$Minutes = 25

    $seconds = $Minutes*60
    $delay = 1 #seconds between ticks

    #Set do-not-disturb Pomodoro Foucs custom presence, where 1 is my pomodoro custom presence state
    Publish-LyncContactInformation -CustomActivityId "1"

    #Setting computer to presentation mode, will suppress most types of popups
    presentationsettings /start

    #Errorprefernce is set to silent when wav files not present
    $ErrorActionPreference = $errorpref
    #Starting music, remember to change filepath to your wav file
    $player = New-Object System.Media.SoundPlayer $StartWave
    1..6 | %{ $player.Play() ; sleep -m 3400 }
    $ErrorActionPreference = "Continue"

    #Counting down to end of Pomodoro
    for($i = $seconds; $i -gt 0; $i = $i - $delay)
         $percentComplete = 100-(($i/$seconds)*100)
         Write-Progress -SecondsRemaining $i `
         -Activity "Pomodoro Focus sessions" `
         -Status "Time remaining:" `
         -PercentComplete $percentComplete
         Start-Sleep -Seconds $delay

         #Showing remainder of time in Lync client personal note
         $MinutesRemaining = $i/60
         $MinutesRemaining = [System.Math]::Round($MinutesRemaining, 0)

         if ($MinutesRemaining -gt 1){Publish-LyncContactInformation -PersonalNote "Will be available in $MinutesRemaining minutes"}
         elseif ($i -lt 31){Publish-LyncContactInformation -PersonalNote "Will be available in $i seconds"}
         else{Publish-LyncContactInformation -PersonalNote "Will be available in less than a minute"}


     #Stopping presentation mode to re-enable outlook popups and other notifications
     presentationsettings /stop

     #Pomodoro session finished, resetting status and personal note, availabilit 1 will reset the Lync status
     Publish-LyncContactInformation -PersonalNote "Your personal note"
     Publish-LyncContactInformation -Availability "1"

     #Errorprefernce is set to silent when wav files not present
     $ErrorActionPreference = $errorpref
     #Playing end of focus session song\alarm, 6 times
     $player = New-Object System.Media.SoundPlayer $EndWave
     1..6 | %{ $player.Play() ; sleep -m 1400 }
     $ErrorActionPreference = "Continue"


Start-Pomodoro -Minutes 25

Posted in Lync Server 2013, UCC | Tagged: , , , , , | 3 Comments »

Featured on NextHop blog Series: Interview with a Lync Pro

Posted by Ståle Hansen on 23/03/2012

I had the honour of being interviewed by Justin Morris who writes the blog series Interview with a Lync Pro hosted at the Lync NextHop blog. It is really cool be featured in such a way and recognized as a Lync Pro by the community together with the people I myself turn to for expert knowledge. Head over to NextHop to read the entire interview and also make sure to read the interview of the other Lync Pro’s as well:

NextHop is the Microsoft Lync Server team’s customer response channel—a new medium to rapidly make the information you need available to you, when you need it. NextHop provides pertinent, short-format, technical articles between major releases of the product and associated product documentation (technical library content, Resource Kit book, whitepapers, and tools).
NextHop highlights the knowledge of experts in the Lync Server community, bringing you information from internal and external experts, such as the Lync Server engineering team and our Most Valuable Professional (MVP) community. In addition to publishing great content by contributing authors, NextHop keeps a pulse on the community. The Lync Server Blog Roll and @DrRez Twitter feed highlight the activities of other sites and blogs focused on Communications Server. NextHop provides pointers to a wealth of information about Lync Server. Our plan is to support, encourage, and evangelize all the great content that is being written about Lync Server.

Posted in Lync Server 2010, UCC | Tagged: , , , | Leave a Comment »

Virtual Technical Solution Professional (V-TSP) at Microsoft Norway

Posted by Ståle Hansen on 02/01/2012

In january 2012 I became a Virtual Technical Solution Professional (V-TSP) at Microsoft Norway. Virtual means that I am still employed by Atea but work closely with the local Microsoft team.

My role as a V-TSP is to provide technology overviews, proofs-of-concept, technical demonstrations, and technology assessments for Microsoft customers. The V-TSP program demands that the partner have the gold competency and that the provided resource is highly skilled and certified within the area of expertise.

I am really looking forward to work even more closely with Microsoft and make sure their customers implement Microsoft Lync and the Unfied Communications proftfolio to the fullest by combining the broad best-of-breed UC technologies from Atea together with Microsoft.

Here is some information I found regarding the V-TSP program

The Microsoft Virtual Technology Specialist Program (V-TSP) is a select group chosen from the elite in Microsoft’s partner community, whose focus is to augment Microsoft’s internal Technology Specialist team. Their primary role is to communicate the value of Microsoft Solutions to customers and to provide architectural guidance for Enterprise Integration solutions. The Microsoft V-TSP program was designed to create a deeper relationship with Microsoft Partners, the Product Teams at Microsoft Corporate, and Regional Microsoft Offices, in order to provide highly skilled solution specialists to Microsoft customers. It is designed to enable a high performance team of partner-based resources to deliver pre-sale activities and resources to empower customers and help them meet their solution and integration needs.

V-TSPs are chosen by Microsoft because of their superior architectural, development, consulting, and customer interfacing skills. Microsoft utilizes these type of individuals in partnership with the Microsoft regional Offices, in pre-sales efforts to secure Microsoft solution opportunities. This includes meeting with Microsoft customers, participating in customer visits with Microsoft representatives, as well as, participating in broad reach events like presenting training and seminars to Microsoft customers.

Microsoft V-TSPs have direct access to online resources and documentation and resources that are usually solely reserved for the Microsoft internal teams. They also have early access to extensive information about all new Microsoft product releases, which benefit Atea and Microsoft customers.

Posted in UCC | Tagged: , , | Leave a Comment »

Script to reset user policies in Lync on migrated OCS users

Posted by Ståle Hansen on 04/07/2011

A while back I was migrating a pilot OCS 2007 R2 solution to a Lync production solution. After moving the users I found that they had inherited their policies regarding external access and voice from OCS. In this case I was utilizing global policies in Lync and removing the need for granting specific policies to the users.

To change this I created a simple little script to reset these policies. The script is used at your own risk.

Download it here:

The Script Does the Following

  • Gets all users that have an external policy set to other than $null
  • For each user all policies are set to $null
  • Writes the users who are changed, can be exported to csv if wanted
  • Also checks if any users failed and prints their names

If you can’t change settings on some users it is probably because of permission issues on the user object in AD. To check if that is the case do the following:

  • Open Active Directory Users and Computers (dsa.msc) from the Lync Front End server or any other server with ADDS
  • Go to View and select Advanced Features

  • Now find the user with the permission issues and select Properties
  • Select the security pane and click on Advanced
  • Make sure that “include inheritable permissions from this object’s parents” are checked

  • If not check it and OK out of there
  • Wait for AD replication and try again

This is an old Exchange AvtiveSync and OWA issue where users could not access these features. The affected users where probably a member of the below groups or have been at some point.

Found a good description of what can make this occur at:

The reason this happens is because Active Directory uses something called the AdminSDHolder to define what permissions the default protected security groups receive. Whilst you can change the inherited permissions, a process called SDPROP will run, by default every 60 minutes on the domain controller that holds the PDCe role. It will check the ACL of the protected groups and reset their inherited permissions and the users within the groups, with what has been defined by the AdminSDHolder object.

Microsoft’s recommendation and best practice is that if you are a domain administrator that you have 2 accounts. One for your everyday user which is restricted in the same way that every other user is and a second for your administration role.

The built in groups that are affected with Windows 2008 are:
Account Operators
Backup Operators
Domain Admins
Domain Controllers
Enterprise Admins
Print Operators
Read-only Domain Controllers
Schema Admins
Server Operators

The built in users that are affected with Windows 2008 are:

Posted in Lync Server 2010 | Tagged: , , , | Leave a Comment »

Awarded Lync Microsoft Most Valuable Professional (MVP)

Posted by Ståle Hansen on 01/04/2011

Today was a good day! I received an email from Microsoft presenting me with the 2011 Microsoft® Lync MVP Award for the first time. The mail stated: “This award is given to exceptional technical community leaders who actively share their high quality, real world expertise with others. We appreciate your outstanding contributions in Lync technical communities during the past year”. I am proud to be a Lync MVP and want to thank the people within Microsoft who nominated me and the community who share the same passion for technology. It is a good feeling to get recognition for the hard work and dedication you put in to your work and your hobby. I look forward to interact within the Lync MVP community.

View my MVP profile page here:

Today there is 42 Lync MVPs and I am one of them. There where 140 new MVP awards and 814 MVPs that were re-awarded world-wide within the whole range of Microsoft technologies. Read more about it here:

What is the MVP Award?

The Microsoft MVP Award recognizes exceptional technical community leaders from around the world who voluntarily share their high quality, real world expertise with others. Microsoft MVPs are a highly select group of experts representing technology’s best and brightest who share a deep commitment to community and a willingness to help others. Worldwide, there are over 100 million participants in technical communities; of these participants, there are fewer than 4,000 active Microsoft MVPs.

Read more about it here:

A short video about whats cool about being an MVP

Posted in Microsoft Certification | Tagged: , | 5 Comments »

Lync Server Front End: Lost connection to the Web Conferencing Edge Server

Posted by Ståle Hansen on 09/02/2011

I have seen this problem in a couple of deployments now and have decided to share this information since there is not much about it on the web.

The problem

Event ID 41024 – Lost connection to all Web Conferencing Edge Services
Event ID 41024 – Lost connection to the Web Conferencing Edge Server
Event ID 41025 – Connection to the Web Conferencing Edge Server has been restored

These Event ID’s appears every five minutes on the Lync Front End Server, but not in all implementations. I don’t know why it is in only some implementations.

The Resolution

Disable IPv6 on the Front End server. When implementing Exchange 2007 and 2010 we often came across a similar problem where the resolution was to disable IPv6. Disabling IPv6 has cleared the Event ID errors in the cases I have seen. To disable IPv6 properly don’t just uncheck IPv6 on the network adapter, but do it in registry and reboot. See this KB article for how to disable IPv6 properly:

Screens of the exact Event ID’s






Posted in Lync Server 2010 | Tagged: , , , | 10 Comments »

Lync Server 2010 features and how to configure them

Posted by Ståle Hansen on 22/11/2010

UPDATE: This blog post has moved to the TechNet Wiki for open editing:

Now that Lync has gone RTM and Virtual Launch is done we need to get down to business and deploy Lync to the general masses. During the time of Beta, RC and early RTM a lot of great blog articles were published about features and how to configure them. I wanted to collect the posts I find interesting here so I have them all in one place when I deploy Lync Server to my customers. I will update this article with new posts as I find them or when they get published.

Last updated: 16.10.2011

Posted in Lync Server 2010 | Tagged: , , , , | 6 Comments »


Get every new post delivered to your Inbox.

Join 58 other followers

%d bloggers like this: