tirsdag den 13. december 2016

December 16 Client patches SFB

Hi and Almost merry Christimas :)

This client patch is litteraly packed with fixes - it updates the Office 2013-based Lync/SfB client from 15.0.4875.1001 to 15.0.4885.1000

Download is available here:
The update is available for download from the Microsoft Download Center.


Which fixes are included.

This update fixes the following issues:
Happy SKYPE'ing

mandag den 7. november 2016

November 2016 CU released for SKYPE for Business Server.

Dear Readers.

Today (7/11-2016) Microsoft has released a cumulative update package for SKYPE for Business Server 2015.

To find your current patch level run this command on a SFB server
Get-WmiObject –query ‘select * from win32_product’ | where {$_.name –like “*SKYPE for business*”} | ft Name, Version –AutoSize

Versionnumber for this CU is 6.0.9319.272

One new feature has been added - which is the support for Location Based Routing in the Mobile client.
Other than that there is som minor fixes and performance improvements - and theese major fixes.
  • 3203706 Long silence when you dial into a meeting in Skype for Business Server 2015 that has name recording disabled
  • 3203153 You experience intermittent message delivery delay or failure in Skype for Business Server 2015 Persistent Chat rooms
  • 3203152 Lync Phone Edition telephones cannot put a call on hold if "Music on Hold" feature is disabled
  • 3203148 Front End server of Skype for Business Server 2015 crashes upon restart
  • 3203707  Japanese characters in the subject of a missed call notification message are garbled
To download the CU go to: https://support.microsoft.com/en-us/kb/3061064

For installation instructions go to:

As always - Happy SKYPE'ing.

tirsdag den 30. august 2016

SKYPE for Business - custom shortcuts

Hello - ever wondered who on earth chose that the keyboard shortcut used for bringing SKYPE for Business client in focus was changed from WIN+Y - to the "Octopus" version CTRL+ALT+SHIFT+3 - well i did.

And since nobody made it possible to customize this i wrote up this little guide on how to customize this across all your users.

So instead of:

 You get:

Sadly there is no simple RegKey or similar for this, so best option imo is to use 3.party autohotkey open source project.

First thing to do is to install/ deploy autohotkey.
Download from here:

To deploy via network make a startup script in a GPO
(Note version number in command)
AutoHotkey112401_Install.exe /S
This will install AutoHotkey in default location.
(Please refer to the autohotkey forum for more options and switches.)

Next step is to create a script file to make things work - Autohotkey is script controlled, and the sky is the limit, when it comes to creating hotkeys and hotstrings
  • 1. Right-Click on your desktop.
  • 2. Find "New" in the menu.
  • 3. Click "AutoHotkey Script" inside the "New" menu.
  • 4. Give the script a new name. Note: It must end with a .ahk extension. Ex. SFB.ahk
  • 5. Find the newly created file on your desktop and Right-Click it.
  • 6. Click "Edit Script".
  • 7. A window should have popped up, probably Notepad. If so, SUCCESS! 
Now the fun begins - and please refer to forum or helpfile for fullsyntax - but I will simply give you the content for at script file that defines the good old WIN+Y shotcut

Thanks to my friend Daniel, for supplying an extra great little addition to the script.
With this added, you can select/ mark a phonenumber anywhere in Windows and simply press "WINDOWS"+V and SKYPE4B will open and dial the selected number - excellent feature.

; My SKYPE For Business "Bring to Focus" shortcut
   Send, ^!+3

Send {Esc}
; DAL's nifty addiditons :)
                      send, ^c

                      Send, ^!+3
                      Send {esc}

                      TrimmedClipboard := Trim(Clipboard)
                      SendRaw, %TrimmedClipboard%

                      Sleep 1500

                      Send {Enter}

The extra {esc} is there to prevent "file" menu from getting activated, so cursor always will be positioned in the search field.
Put the above in the SFB.ahk fil and save it, to autorun put it in your startup folder - in Win10 just press "WINDOWS" + R to open RUN and type "shell:startup" this opens the startup folder, here you place the AHK file
Now you can choose to "deploy" this SFB.ahk file to your users and put it in THEIR startup folder, my favorite way is to use Group Policy Preferences
Put the script file on a file-server, and create a "files" item in GPMC.

Path to startup folder would be %AppDataDir%\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

The "File" item is found in the GPMC here:


tirsdag den 23. august 2016

Simple URL's give 404 on SKYPE for Business

Worked together with a customer today to troubleshoot a brand new deployed SKYPE for Business pool, with malfunctioning Simple URL's. Basically all simple URL's were defunct, both internally and via the reverse proxy, https://dialin.sipdomain.com gave 403 access denied, and all URL's with directiry name like https://meet.sipdomain.com/init or even https://ext-web.sipdomain.com/cscp all returned "Server Error" 404 errors.

After digging (a lot) about in the simple URL's, and doing certificate reapply's, iisreset's and a lot of other deadends i came to think of the IIS rewrite module installed during bootstrapper/ setup - so decided to give it a go - removed it from the add/remove, and the ran bootstrapper. And TADAA.. now everything was working like a charm again.

So process:

1. Go to add/ remove
2. Locate IIS rewrite 2.0 module - and select uninstall
3. Go to "SKYPE for Business server deployment wizard"
4. Run setup

No reboot neeeded (althoug removal of the module actually suggests it)

Happy SKYPE'ing

mandag den 22. august 2016

Common powershell onliners for Skype4B

Wery often my customers ask for my little list of usefull powershell commands, and one-liners for basic and common administrative tasks when managing SKYPE for Business.
I always urge the admins to move to powershell, but often hear the argument that commands are forgotten and they get the syntax wrong because they do not use it often enough.

So hoping that this could be usefull I decided to put together a (work in progress) article collecting my most often used cmd-lets with examples.

Please comment or ask for addiditons..

And as always happy SKYPE'ing.

For a FULL CMD-LET reference please refer to

I will put the commands in categories - and the basic idea is that you could copy this to a ps1 file and when open in Powershell ISE - use "run selction" all the hash-marked lines are supposed to be explanatory :)
## For a section and  #for a description of the following command.

##General CMD info
#Get all cmdlets for SFB that contains -CsGet-Command *-Cs* -CommandType cmdlet -Module Lync#Get all cmdlets that contains userGet-Command *user* -CommandType cmdlet -Module Lync#Get specific syntax on how to use CMDGet-Help Get-CsUser -Examples#Use -Online to open the TechNet website for specific CMD-LETGet-Help Get-CsUser -Online
##Manage Users
#Enable New user
enable-csuser -identity domain\init -registrarpool pool@fqdn.com -sipaddresstype emailaddress
#Enable Enterprise voice
set-csuser -identity "username" -enterprisevoiceenabled $TRUE -lineuri "tel:+4529337043"
#Temoporarily disable userSet-CsUser -Identity "Username" -Enabled $False#Re-enable disabled userSet-CsUser -Identity "Username" -Enabled $True#Find all users that are enabled for Lync and have a LineUri, sort them by LineUri, display displayname and LineUri
Get-CsUser -Filter {LineURI -ne $Null} | sort -Property LineURI | ft DisplayName,LineURI
#Find user disabled in AD , but still active on SFB server
Get-CsAdUser -ResultSize Unlimited | Where-Object {$_.UserAccountControl -match "AccountDisabled" -and $_.Enabled -eq $true} | Format-Table Name,Enabled,SipAddress -auto
#Get users from AD in specific OU in order to enable (via pipe)
GET-Aduser –filter * -searchbase 'OU=Users,OU=Denmark,DC=spinne,DC=local' | Foreach { ENABLE-CSAduser –identity $_.Name –RegistrarPool 'poolFQDN' –sipaddresstype FirstnameLastname –sipdomain sipdomain.com }
#Import Photo to AD$photo = [byte[]](Get-Content C:\thomas.jpg -Encoding byte)Set-ADUser domain\init -Replace @{thumbnailPhoto=$photo}#Assign pinSet-CsClientPin "Username" -Pin 12345
##Policies#View client policyget-csclientpolicy -identity "policyname"#grant policy to all users Get-CsUser | Grant-CsClientPolicy -PolicyName "policy"#grant policy to users of specifik departmentGet-CsUser -LDAPFilter "Department=Eksempel" | Grant-CsClientPolicy -PolicyName "policy"#Create new policy with default settingsnew-csclientpolicy -identity "Newpolicyname"#change policy Boolean valuesset-csclientpolicy -enableeventlogging $true#change other values in policySet-csclientpolicy -tracinglevel Full 
#List the CMS replication status for each Lync Server
#Force replication to take place
#Get Users Pool infoGet-CsUserPoolInfo sip:username@domain.com
 ##Manage Services#Start any stopped servicesGet-CsWindowsService -ExcludeActivityLevel | where {$_.Status -like "Stopped"} | Start-CsWindowsService#Start all servicesstart-cswindowsservice#Stop all servicesstop-cswindowsservice
##Address Book Sync
#Write changes in backend DB to the address book filesUpdate-CsAddressBook # Synchronize data between AD and Lync backend DB (rtcab)Update-CsUserDatabase
## Manage Announcement Service
#New Announcement with forward to SIP AddressNew-CsAnnouncement -Parent service:ApplicationServer:pool@fqdn.com -Name "<Name>" -TargetUri sip:<sip address>#New Announcement with forward to PSTN-NumberNew-CsAnnouncement -Parent service:ApplicationServer:pool@fqdn.com -Name "<Name>" -TargetUri "sip:+4529337043@sipdomain.com;user=phone"#New Announcement to Play Audio FileImport-CsAnnouncementFile  -Parent "service:ApplicationServer:pool@fqdn.com" -FileName "<AudioFile.wav>" -Content (Get-Content "<path to audio file>" -ReadCount 0 -Encoding Byte) New-CsAnnouncement -Identity "service:ApplicationServer:pool@fqdn.com" -Name "<Name>" -AudioFilePrompt "<AudioFile.wav>"

onsdag den 6. juli 2016

PSTN Calls from mobile - wrong "from" header in hybrid voice

I recently discovered a minor issue at a customer site with Cloud Connector Edition deployed connecting SKYPE for Business online in Office365 to onprem PSTN (SIP Trunk)

The issue has been replicated and confirmed by Office365 engineer team - there is at the moment no solid workaround - but issue is being looked in to.

The problem occurs when you dial out to PSTN from the Skype for Business mobile client on Android/ iOS / WinPhone. The FROM header that is sent in the invite from the Mediation server component in the CCE to the PSTN Gateway  is missing the LineUri in the FROM field - and also the ;user=phone is also missing - instead the users sip-address is sent.
Meaning that From header for my test user is

"FROM: sip:username@vanitydomain.com"
Where it should be
"FROM: sip:+45xxxxxxxx@PSTNGatewayFQDN;user=phone"

So what does this mean ? - Well 2 things.

When sending this info to a SIP Trunk provider or ISDN - they cannot forward the user name as a valid E.164 number, and also on many platforms calls will be rejected  because the FQDN is not contained in the FROM field - so unless the provider has knowledge of the Vanity domain call will fail - because the property ;user=phone is missing
The latter, can be fixed easily by the provider -so they will accept the call - bu the primary issue is that calls originating in the mobile client will show up a callee as "Private number" or unknown.

Only workaround would be 1:1 regex replacement in the gateway - and unless the customer has only a few employees, this is not a feasible solution in my opinion.

By the way - a small "note from the field" always include Wireshark and enable Telnet in the BaseVM before running install-ccinstance :) Saves a few minutes when troubleshooting issues like this.
As always Happy (cloud) SKYPE'ing.

tirsdag den 28. juni 2016

Busy on Busy for SFB - get started

YAY - finally Busy on busy is here.

In this article I will describe how to enable this new feature after installing the update.

Busy Options, is a new Voice policy in SfB 2015, it brings "Busy on Busy" and "Voicemail on Busy" functionality to SfB 2015, AND is even supported on SBA.

On top of that Video based screen sharing AND the possibility to have multiple emergency numbers are also included.

To get the update go to this link.

To apply cumulative update please follow the guidelines found in this article

BUT please run the following before starting your services after installing the cumulative update.

To enable the new voice policy run this in SfB Management Shell on your frontend server:
Set-CsVoicePolicy -EnableBusyOptions $true

Or you can enable this policy on a "per site" basis by using
Set-CsVoicePolicy -Identity Site:Redmond1 -EnableBusyOptions $true

Then add a new ServerApplication by running this (replacing %FQDN% with your SfB Pool FQDN)

New-CsServerApplication -Identity 'Service:Registrar:%FQDN%/BusyOptions' -Uri http://www.microsoft.com/LCS/BusyOptions
-Critical $False -Enabled $True -Priority (Get-CsServerApplication -Identity 'Service:Registrar:%FQDN%/UserServices').Priority

Then run update-csadminrole cmdlet to update RBAC

Now start the services

I have seen issues where the whole server needed a reboot before the new option for Set-csvoicepolicy cmdlet became available

Then youre are good to go, and can configure the Busy options for your users.

To enable plain Busy on Busy for a user run (replacing username)
Set-CsBusyOptions -Identity "sip:tjo@globeteam.com"  -ActionType BusyOnBusy

To enable Voicemail on Busy for a user run (replacing username)
Set-CsBusyOptions -Identity "sip:tjo@globeteam.com"  -ActionType VoicemailOnBusy

To get the current Busy options status for a user
Get-CsBusyOptions -Identity "sip:tjo@globeteam.com"

And finally to  disable it for a user run
Remove-CsBusyOptions -Identity "sip:tjo@globeteam.com"

Please note the following interoperability notes (taken from this TechNet article https://technet.microsoft.com/en-us/library/mt750457.aspx)

Busy Options provides interoperability with the following Voice applications in Skype for Business:
  • Response Groups (RGS)
    • Busy Options set on Response Group numbers will be ignored by the system; multiple concurrent calls will be allowed.
    • The current Attendant routing experience in Response Groups will remain unchanged for the Agents with Busy Options settings.
    • The calls coming from Response Groups to the users who are Response Groups Agents will not be throttled by Busy Options settings and the current RGS experience will be maintained.
    • The non-RGS related calls to the Agents will be honored by their Busy Options settings.
  • Team Call
    • Incoming calls to users who are set up for a Team Call will be prioritized to ignore Busy on Busy and Voicemail on Busy settings.
    • The current Team Call experience will remain unchanged with Busy Options set for the users.
    • The non-Team Call related calls to such users will be honored by their Busy Options settings.
  • Boss/Admin Delegation
    • Incoming calls to users who are set up for a Boss/Admin Delegation either as Boss or an Admin will be prioritized to ignore Busy on Busy and Voicemail on Busy settings.
    • The current Boss/Admin Delegation experience will remain unchanged with Busy Options set for the Admins or Boss.
    • The non-Boss/Admin Delegation related calls to Admins will be honored by their Busy Options settings.
  • Shared Line Appearance
    • Busy Options settings on user accounts set up for Shared Line Appearance will be ignored.
    • Shared Line Appearance’s native Busy on Busy and Voicemail on Busy options will be honored instead.
  • Call Parking Service
    • Parked calls that were not retrieved and are ringing back due to timing out will be allowed to ring though to the user who parked the call by the Busy Options.
  • Call Conferencing
    • Users in conference calls are considered Busy and new incoming calls will be rejected with a busy signal or forwarded to voice mail according to their Busy Options settings.
    • Users in conferences are not prevented from initiating new calls or conferences by Busy Options.
    • Users in conferences are still able to receive new conference invitations, but new peer-to-peer calls will be rejected according to their Busy Options settings.
  • Simultaneous ring
    • If a users calls are set for simultaneous ring, their devices will not ring if the call is rejected by the user’s Busy Options settings.

mandag den 18. april 2016

LYNC Server 2013 Cumulativ update released 5.0.8308.949

Microsoft has released a Cumulativ update package for 5 different components in LYNC Server 2013
Version number for this CU is


The Patches are:

The issues fixed are:

    The cumulative update download link is:

    torsdag den 14. april 2016

    Security patch for SKYPE for Business / LYNC Client released April 12.

    Microsoft has released a security patch for both the Lync client and the SfB client - patching a vulnerability that could allow remote code execution.

    Links for MS articles:

    Issues that this patch adresses:

    Skype for Business 2016:
    • 3153360 Buffer may overrun when you use Skype for Business 2016
    • 3153361 Black screen or slow screen updating during desktop sharing in Skype for Business 2016
    • MS16-039: Security update for Microsoft Graphics Component: April 12, 2016
    Lync 2013 (Skype for Business):
    • 3153357 Buffer may overrun when you use Lync 2013 or Skype for Business
    • 3153356 Can’t join a Lync online’s audio/video meeting in Skype for Business that has a proxy server set
    • MS16-039: Security update for Microsoft Graphics Component: April 12, 2016

    Get it here:

    Lync 2013 (Skype for Business):

    torsdag den 25. februar 2016

    Hybrid Voice with CCE - Cloud Connector Edition

    Hybrid Voice is BACK

    UPDATED 10/4 - The Bits are here - yes to CCE download is live on this link:

    Installs alot of new powershell CMDlets, and the config files for CCE - download of the server bits is in progress... more to come on this :)


    Original Post:

    Happy Days - HYBRID Voice is back and Welcome a totally new SfB component the CCE
    In this post i will try and give you an overview of the both the new supported Hybrid Voice scenario and specifically the new CCE component (which is still awaiting date for GA)

    With the new E5 licensing SKU Microsoft has brought back Hybrids to the SFB/ Lync customer. 
    The headline for this is CloudPBX

    Basically right now you could divide the world into US and all others when discussing options for deploying Cloud PBX.

    There are 3 different scenarios supported.


    With PSTN Calling Service

          Here all users are homed online, and the PSTN connection is owned and delivered by Microsoft         as a service. 
          It is not required to have any Skype for Business servers onpremise !
          This is ONLY available in the US

    With Onprem PSTN via Cloud Connector Edition (CCE)

           In this scenario all users are homed online, but the PSTN is provided by existing Trunk or ISDN/ E1 using existing customer equipment. The CCE is deployed onprem in the DMZ - and Azure ADSync is required.
           This is available worldwide.

    With Onprem PSTN via existing SfB/LYNC deployment

    Here users can be homed both onpremise and online - while using existing onpremise PSTN connectivity. The existing onpremise SfB/ LYNC deployment must consist of a Fully functional deployment with EDGE and Edge server and the next hop must at least run LYNC Server 2013.
    The onpremise deployment can obviously also be fresh installed to support a greenfield with special requirements that are not supported by CCE. See the chart below for feature-comparisons.

    So lets look at the features and how they compare

    CCE - Cloud Connector Edition

    So lets take a look at this new family member.
    Late 2015 news was released of the first Cloud connector - or minimal topology - this consisted of three VM's with hosts both in DMZ and behind the corp firewall. Please make sure not to confuse them - that early version was never released - this new version sits entirely in the DMZ and is therefore more simple to deploy its known as Cloud Connector V2

    It is a downloadable set of VM's that has a hard requirement for a dedicated physical server sitting in the DMZ with three Nics. The installation is scripted and controlled by an ini file.
    There is no dependency on existing AD infrastructure, it creates its own forest during deployment, meaning there is even a virtual DC among the 4 VM's.
    Which are.
    A Mediation Server, an EDGE server, a CMS and a DC Cloud connector.

    All Public DNS for SIP points to Office365 - so EDGE role is only there to take care of federation between onprem PSTN and the users online (all users)
    Co-existence with onpremise SfB/LYNC is not possible.
    For now there is no Media Bypass, so all media goes through the Mediation Server... but stays onprem - only signalling will always travel through Office365.

    This is the result:

    What about Capacity and HA.
    The info on Technet says a maximum of 500 concurrent calls per CCE. And one PSTN site can contain a maximum of 4 CCE's.
    And thereby also answering the HA question, simply deploy 2 CCE's to create HA.
    However there are some limitations to consider, there is no automatic site tolerance - so if one data-center (one PSTN site) goes down, users online will not automatically fail-over to the secondary PSTN site.
    Please always turn to technet for up-to-the-minute info on sizing and planning

    The Hardware requirements for the physical box are on the heavy side and obviously Hyper-V is a HARD requirement due to the fact that installation is scripted, including creation of virtual switches a.s.o.

                    Dual 64 bit, six core processor (12 real cores), equivalent or better than dual Intel Xeon E5-2430 v2, 2.50GHz, 15M Cache, 7.2GT/s QPI, Turbo, 6C, 80W , Max Mem 1600MHz.  32 Gb ECC RAM equivalent or better than 8GB RDIMM, 1600MT/s , Four 600GB ( or better) 10K RPM 128M Cache SAS 6Gbps, configured in RAID 5 configuration.  Three 1 Gbps RJ45 high throughput network adapters

                    So how about the media Flow -  here is a diagram showing the media paths for a audio call where a users sitting on the same site as the PSTN and CCE infrastructure is receiving and inbound call from PSNT. Notice how the media never leaves the building

    The above media path will obviously also be true in the opposite direction where a users dials outbound.

    With this CCE sitting in the DMZ we also have to talk to the firewall admin, the requirements are actually similar to standard Skype for Business AV and Access EDGE - again turn to Technet for complete reference. Here is a diagram to show them
    The Management side of things is straightforward - everything is managed in powershell and a couple of new cmdlets are introduced. The CCE does not support Topology Builder meaning changes are achieved by editing exported config and the importing it again - but the CCE will in most cased be a fixed system where changes will be nonexistant or rare. But again this being a brand new, not yet released product, these things could still change.

    Wrap Up

    So to summarize.
    CCE can help you make the transition to Office 365 phased and simple.
    Hybrid Voice allows you to keep existing PSTN due to carrier agreements, price concerns or maybe even security concerns or requirements from a policy
    Keep using existing onpremise Swithcboards, Contact centers, plugins and ad-dons while taking advantage of Office365.
    More on release dates for these components ASAP

    Thats all for now - Happy SKYPE'ing

    onsdag den 10. februar 2016

    BUG-FIX for missing "Missed Call Notifications"

    Yesterday a new patch was released, fixing the issues introduced in Nov15 where - if you have not deployed Exchange UM - you would no longer get missed call notifications in your Outlook inbox.

    See this post for info the issue:

    Now the issues is adressed in this KB:
    KB 3136400 No missed call notification generated in Lync 2013 (Skype for Business)

    And the Fix is included in this Patch:

    Louis Ramos did an excellent post on the core reasons for this:

    Thats all for now - Happy SKYPE'ing

    mandag den 11. januar 2016

    Dec15 Patch causes Missed Call notifications to malfunction

    Dec. 8. a security patch for LYNC / Skype for Business was released.

    Initially MS released a KB about this patch causing video to stop working when recording meetings.

    But it seems this patch also introduced another problem - i have now seen this at a handfull of customer sites - so not all are impacted.

    Issue that occurs is that Missed Call Notifications simply stop working, everything is green, so EWS and MAPI status are ok - and it makes no difference if user is enabled for UM.

    So far a tested solution is to remove this patch - but being a security patch - this is not really a perfect solution, bug has been submitted to Microsoft.

    Issue seems to only occur when both of the following patches are installed

    And resolution/ workaround is as follows - this has been tested at 3 different sites, with same effects

    Problematic patches are


    To make "Missed Call Notifications" work again:

    1. Uninstall KB3114351
          2.  Reboot the computer
          4. Uninstall KB3101496
          5.  Reboot the computer

          Test Missed Calls

    Happy SKYPE'ing

    onsdag den 6. januar 2016

    New Years patch for LYNC Server 2013

    Happy New Year :) - 2016 kicks off with an early patch - for the issue where iOS devices could not join meetings from their device from outside the LYNC app.

    Described in this KB:

    At the same time a cumulative pathc for LYNC Server core components has been released with a long list of minor fixes and stability improvements.


    To install the patches download and run the Cumulative Server update installer.
    Remember to follow the instructions and do a stop-cswindowsservice before running the installer.

    The Cumulative installer is found here:

    The version number of this update is 5.0.8308.945. and it replaces the December cumulative update

    Happy SKYPE'ing