Skype for Business for Windows Phone Quietly Arrives


A little while ago an update was seeded to Lync 2013 users on Windows Phone which let us know that Skype for Business was on its way. Today that rollout has taken place, at least for me, with the latest version being delivered to my devices overnight. It’s always nice to wake up to new software. It’s been delivered as an in-place upgrade for Lync 2013 for Windows Phone.

So far it’s just Windows Phone which has received this update (or Windows 10 Mobile if you’re using it). Android and iPhone should be coming soon.

Continue reading

Missing Dial-in information in Skype for Business and Webscheduler


A fault came in today from a customer who was having problems scheduling conferences with dial-in access numbers when using Webscheduler. While the meeting was scheduled correctly and a URL was given to join the meeting, a dial-in access number wasn’t shown. Here’s a recreation I did in my lab, so enjoy the pretend numbers and URLs:


This was confusing, because a number was definitely configured for dial-in conferencing. But there was a slight problem:


The number on the customer’s system was a 1300 number – for those outside Australia, it’s like a toll-free number, but it’s the cost of a local call to the caller, and the owner of the number pays for the call costs beyond the standard local call time. As most business calls are quite short, this usually works out in the 1300 number owner’s favour.

Anyhoo, it turns out that a little while ago a junior engineer had taken the ticket to remove the existing state-based numbers and replace them with a single number for all of Australia. He created a new conference region for the new number and attached it to the Global dial plan. He then changed the region for the 1300 number from “Sydney” to “Australia” and deleted the rest. Seems logical.


But the problem comes for users attempting to create meetings. In this case, my user is set with the AU-MEL dial plan as I’m in Melbourne:


and when we investigate that dial plan policy:


We find that it wasn’t updated when the “Melbourne” conferencing region was deleted to make way for the Australia-wide one. As a result, Skype can’t give the user a number as it doesn’t believe it has one in that region.

The solution? Either change all the dial plans to “Australia” as their conferencing region, or add all regions to the dial-in access number. I chose the first option, as I didn’t want to see multiple regions listed on the dialin page.


After that, a quick enable-cscomputer to kick things into gear:


Now when we create a meeting, all the correct information is shown.


Happy conferencing!

Music on Hold not working with Click-to-Run version of Skype for Business


When deploying a new customer Lync 2013 environment, we found that music on hold wasn’t working for the customer’s end users, who were using the latest version of the Office 365 click-to-run version of Skype for Business (15.0.4727.1001). This was raised to us as a fault where customers were complaining they were being cut off when placed on hold. In truth, they weren’t cut off – they were just hearing silence.

We’d set up the client policy the same way we always do, where EnableClientMusicOnHold is set to $True and MusicOnHoldAudioFile is $NULL. In the past, this set Lync 2013 to play its default music on hold audio file, which at the time was C:Program Files (x86)Microsoft LyncMediaDefaultHold.wma

PS> Get-CsClientPolicy -Identity Global |fl enableclientmusiconhold,musiconholdaudiofile
EnableClientMusicOnHold : True
MusicOnHoldAudioFile    :

It appears, however, that the click-to-run version of Skype for Business either doesn’t know where its default music file is, or is expecting the file to be in the old location. In click-to-run, the file is located at C:Program FilesMicrosoft Office 15rootoffice15MediaDefaultHold.wma

To resolve the issue, we added the file to our client policy like this:

PS> Set-CsClientPolicy -Identity Global -EnableClientMusicOnHold $TRUE -MusicOnHoldAudioFile "C:Program FilesMicrosoft Office 15rootoffice15MediaDefaultHold.wma"

After giving it a while to update on the client end, music started functioning properly again.

Note, however, this will cause problems if you’re running different versions of Skype for Business or Lync, or if you’re running Lync Phone Edition devices, as the file location will most likely not exist for those clients.

The other alternative fix would be to have each user select the music on hold audio file in their options menu by clicking the Cog menu and selecting the Ringtones and Sounds option, then pressing browse next to the music on hold file listing. When the explorer window appears, click the file and press ok to force the client to use this file.


LyncLab, part 1: Everything you wanted to know about Hyper-V but were too afraid to ask.


If you’re anything like me, you build up and tear down your lab on a regular basis. You might do this because you’re studying, you might want to try out new ways of doing things, or you might just want to flex your buid muscles while you’re in an operations period to keep your skills fresh. I run a local lab on my home desktop, and found myself tearing it down quite regularly, so I decided it was time to script, streamline and document the process as much as possible.

In this first entry of this series, we’ll do the groundwork for the Lab. We’ll install Hyper-V, create a template disk which can be “cloned” for future builds – all machines will use differencing disks so we can keep the footprint of our lab to an absolute minimum.

The first machine will be a Windows 2012 R2 Server Core install, which is as lean as you can get. We’ll also run a windows update from the comandline, and finally we’ll sysprep the machine in preparation for cloning.

In future entries in this series, we’ll make a child differencing disk and install Server GUI, which will then become the parent disk for any machines which require it, we’ll create an Active Directory, a Lync 2013 Enterprise pool, and maybe a few more goodies. Continue reading

Migrating to a new Lync 2013 pool – Preamble


We recently decided to decommission one of our datacentres, as the hardware there was getting old and the service we were getting wasn’t that spectacular. Most of the machines there were fairly old, too, so it gave us a good excuse to rebuild our aging AD servers as 2012R2, for example.

The only newish gear in that datacentre is our internal Lync 2013 pool, which was built just after Lync 2013 was released. As a result, the machines are running Windows 2012, and there are only two Frontend servers – we built it with the old recommended layout and never quite got around to building a third frontend (ever seen a builder’s house?).

Instead of migrating, I figured it would be a good opportunity to rebuild the servers on 2012R2 in the new datacentre.

In this series, I’ll document the steps I take to add the new pool, migrate the users, redirect the external services and decommission the old pool. Hopefully it’ll all go smoothly, but we’ll see.

Microsoft releases August 2014 update for Lync 2013 Client (KB2881070)


Just a Lync Guy



This update resolves the following issues:

  • 2985514 Lync 2013 signs out and then signs in every 30 minutes
  • 2985513 Lync 2013 crashes when you manipulate a pivot table field during an Excel worksheet presentation
  • 2985512 Error “Event ID from source Lync cannot be found” instead of event logs from Lync 2013 appears in Event Viewer
  • 2981755 Cannot join a meeting by using Lync 2013 when the ACP MCU services are running on multiple front-end servers
  • 2981754 Cannot send CER data when a user cannot join meetings in Lync 2013
  • 2981753 Lync 2013 meeting issues after you install Lync Meeting Add-in for Office 2013
  • 2981752 Cannot select audio device during a VoIP call in Lync 2013 when a user is enabled for RCC
  • 2981751 Lync 2013 does not display telephone…

View original post 125 more words

Lync Server 2013 2FE + 2BE High Availablity Issue


new uc - niu's uc


  • Why 2 FEs?

Microsoft has clearly said that 2 FE topology is supported, but not recommended. Then why I still chose to deploy such a topology? In a word, the decision-maker made this choice. More considerations, a 3rd FE costs another Lync Server license and more resource, yet Microsoft hasn’t clearly mentioned that it could cause the following unexpected issue.

  • System Topology


Lync Server 2013
Enterprise Edition Pool, FE * 2
BE mirroring, BE01 as Principal, BE02 as Mirroring
Virtual machines on 2 physical hosts

  • HA considerations

Service can continue if any single server downs (FE or BE)
Service can continue if any single physical host downs (#1 or #2)


When testing HA, the following issue occurs:
(Single-server-failure test passed in any case, and physical-host #2-failure test passed as well)
If one FE and the Principal BE fail, even if you fail over BE to Mirroring BE…

View original post 1,270 more words

Lync 2013 and Office 365 voicemail calls failing with 481 call leg does not exist


My team were setting up a new tenant this morning on our LHPv2 system, and connecting the tenant to Office 365 for unified messaging. They called me to help with what they thought was a problem with Office 365 not accepting the call, but it turned out to be something a little different.

The error message from OCSLogger:

TL_INFO(TF_PROTOCOL) [0]0E14.0534::04/16/2014-00:47:29.882.00056b1b (SIPStack,SIPAdminLog::ProtocolRecord::Flush:ProtocolRecord.cpp(196))[2176820743] $$begin_record
Trace-Correlation-Id: 2176820743
Instance-Id: 1D389
Direction: incoming;source="external edge";destination="internal edge"
Message-Type: response
Start-Line: SIP/2.0 481 Call Leg Does Not Exist
From: <sip:[tech's mobile];phone-context=";user=phone">;epid=2EE952F746;tag=6cb59ace1
To: <sip:[umsa number];phone-context=";user=phone">;tag=8585D2CC6F45A929C4653EC37D6C34E5
Call-ID: 6fa3ea88-1a4e-4e6b-91f5-020e6fca17b8
CSeq: 57916 CANCEL
Via: SIP/2.0/TLS [edge external ip]:55657;branch=z9hG4bK3F146DB3.F6B41C17EA0CAB08;branched=FALSE;ms-internal-info="dsv_8mXtT4SLlqwtIRgewpQLjKclLYLYWQ3cBo05Vq-5wXHLT2A9YY0QAA";received=;ms-received-port=55657;ms-received-cid=76A73700
Via: SIP/2.0/TLS [edge internal ip]:55702;branch=z9hG4bK94BC93A2.E2C841E49AD07B16;branched=FALSE;ms-received-port=55702;ms-received-cid=14800
Content-Length: 0
ms-split-domain-info: ms-traffic-type=SplitIntra

The mobile phone trying to call the UMSA number didn’t hear any ringing during call setup – it would just stay silent for about a minute before finally timing out and failing, which is about when the above error appeared in the log.

Putting the log side by side with a working call made it obvious that there was a problem. Here’s the failed call on the left, versus a successful call on another Lync deployment on the right:

1 2

So what’s the problem? Well, it’s pretty simple, actually:


Turns out the _sipfederationtls._tcp record hadn’t been created during our normal provisioning process. Once we added this DNS record, everything started working as it should.

How did we figure that out? When Lync sets up the SIP call to Office 365, there’s a requirement there that Office 365 can get back to us. To do this, it uses the _sipfederationtls._tcp SRV record so it knows where to route traffic back to us. The fact that we were able to get there and nothing seemed to be returning pointed us in that direction.

Being cautious about Heartbleed


If you haven’t heard, Heartbleed, aka CVE-2014-0160, is a vulnerability in OpenSSL – a cryptographic library which is used to secure a bunch of internet services via SSL/TLS. When you see the green https at the left hand side of your browser’s address bar, there’s a good chance that OpenSSL is behind the scenes, silently encrypting your data before sending it to you.

If you’re curious about how Heartbleed works, check out this excellent comic from XKCD.

Unfortunately (or fortunately, depending on your point of view), some boffins have discovered that OpenSSL has a bad habit of allowing anyone on the Internet to probe the server and retrieve the contents of its memory. This memory could contain anything, but the biggest thing we’re concerned with is our own data, specifically usernames and plain text passwords.

Most companies have patched their OpenSSL by now, but it’s better to be safe than sorry. You can use the Heartbleed Test to see whether a site you’re interested in has updated.

And what should you do? Change your Passwords. Actually, you should take this opportunity to set them so they’re different on all your services, because having the same password on everything isn’t a good idea.

If you need help keeping track of all your passwords, have a look at KeePass – it’s an app which keeps your passwords in an encrypted file which you can store on a local disk or in the cloud – Dropbox or OneDrive, for example. Once you enter the master password you can retrieve your passwords and use them wherever you need to. There are Windows, Windows store, Mac and Linux versions of the app so you won’t be out in the cold. There’s even a Firefox plugin for it.