Can’t Find Skype Online Cloud PBX?

Recently, a lot of our clients and people out on the Internet are dipping their toes in the water of Skype for Business Online Cloud PBX.  This is included with E5, but if you don’t need the full E5 suite, you can add it as an add-on to the E3 licensing level in Office 365.  But what if it’s not there?  Or perhaps you have E5 but PSTN Calling isn’t there (assuming your tenant is in a country it’s currently sold).  You might ask, “How do I find Cloud PBX?” when it’s not an option in the add subscriptions portion of your tenant?

Typically you would navigate to Billing->Subscriptions->Add subscriptions or just click the Purchase Services link in the left pane.

.Subscribe

However, once there Cloud PBX, PSTN Calling, and PSTN Conferencing do not exist as options.   We had this same issue and after a call with Microsoft, we’ve learned that the portal website isn’t “fully updated” and it doesn’t recognize E3 licenses purchased through volume licensing, enterprise agreements (EA), or internal user licenses.  The trick to get these options to appear at the time of this blog writing is to purchase a single annual E3 license through the portal, and call Microsoft to refund it.  This should be a short term workaround, so I would ask you to call Microsoft before you begin this procedure.

Once you’ve added this single E3 (or E5 or whatever you have chosen), the flag should be set in the portal and you should now see the options to continue.

OptionAppears

Now that we see it, we can add it and select PSTN Calling on the way.

Checkout

All that’s left is to assign the licenses to your users and dive into Cloud PBX!

Reminder: Quarterly Skype for Business User’s Groups

This is your quarterly reminder that the US Skype for Business Users Groups are coming up.

Going forward, you need to register at skypeusersgroup.com.  The Meetup site will no longer be used.

These are always a great time and a great place to network with your peers and make those relationships.  I’ll be there as well as many experts, there will a Cloud PBX discussion and Polycom reps on site to show off interoperability and some cool devices.

 

  • January 21 – Chicago, IL
  • January 26 – Cincinnati, OH
  • January 19 – Philadelphia, PA
  • January 19  – Los Angeles, CA
  • January 26  – Nashville, TN
  • January 21 – Silicon Valley, CA
  • January 28 – Kansas City, MO
  • February 16 – Detroit, MI
  • February 4 – Boise, ID
  • January 27 – Milwaukee, WI
  • February 11 – Seattle, WA
  • February 10 – Portland, OR
  • February 3 – New York, NY
  • February 18 – Charlotte, NC
  • February 10 – Atlanta, GA
  • January 28- Baltimore, MD

Call Forwarding Added Back to Skype for Business for iOS

In my previous article: http://www.skypeadmin.com/2015/10/14/skype-for-business-ios-is-available-calm-down/ I noted that many features were removed from the Lync iOS application for iPhone and iPad when it was upgraded to the Skype for Business application.  One of my most used features, call forwarding, was pulled.  This feature has now been officially put back in place.

SkypeUpdate

As you can see, it’s where you would expect it to be below.  This is a very welcome re-addition to the application, but I feel, and Microsoft I believe understands, that there’s still a long way to go.  In the new “mobile first” world, I also feel we’re a bit behind in this department.

 

IMG_3421

I’m still patiently waiting for my second most used feature, PowerPoint sharing, to be added back in.  At the moment, we can use desktop sharing instead.  However, if the presenter isn’t one who works with your firm, asking for them to switch to desktop sharing for their slide deck can be embarrassing.

IMG_3420

Once we’re back on par with some of the features we had in the past, I’m excited to see some added new functionality.  I’m hoping to see seamless transfers of audio between the smartphone and other clients and more feature parity with the full client (including e911).

Let me know your thoughts as well, but remember, real feedback should go to Microsoft at http://www.skypefeedback.com.

Lync and Skype Response Groups; Alert Time vs Queue Time-out

Overview

I realize that there are other blogs that discuss this, and my apologies to the owners, but TechNet itself isn’t so clear and this comes up in the forums regularly.  I wanted to clarify just what is Lync and Skype for Business Response Group (RGS) group alert time vs queue time-out as well as discuss their relationship.   I feel it is best to do so through the use of scenarios. Please feel free to comment below if you feel I missed something.

Group Alert Time

This setting is simply how long the entire group will be tried in seconds before it gives up.  It does not mean how long each group member’s phone will ring.  This setting becomes more clear when we look at it in relationship to the queue.

Queue Time-out

This setting is the total amount of time all groups in the queue will be tried.  There are scenarios where the time in the queue is actually longer than the queue time-out is set, and this can be observed in scenario B below.

Scenarios and Examples

It’s easier to explain this through the use of individual scenarios, so I will attempt to outline this below.

Scenario A – Single group in a queue with queue time-out set to be longer than group alert time

In this scenario, the group will ring for the alert time seconds defined in the group and stop.  Since the queue time-out has not been reached, the group will ring again.  This will repeat until the time-out has been reached.  This scenario is handy for when you want the call to fail to another member of the group after a set time-frame.  For example, if you have a four-member group set as round robin, with an alert time of 10 seconds, and your queue time-out is forty seconds, each available member of the group will hear the phone ring assuming nobody picks up.

Scenario B – Single group in a queue with queue time-out set to be shorter than group alert time

In this scenario, even though the time-out is reached the ringing will continue until the group’s alert time has been reached.  For example, if the queue time-out is 10 seconds, but the group’s alert time is 30 seconds, the phone will ring for 30 seconds before the queue acts on the time-out.  This is typically due to a misconfiguration rather than a planned scenario.

Scenario C – Multiple groups in a queue with queue time-out set to be longer than the sum of the group alert times

In this scenario, multiple groups are set up and ordered within the queue.  The first group will be tried until it’s alert time is reached, and since the queue time-out has not been reached, the next group will then be tried.  After each group is tried, a check to see if we’re past the time-out is made.  Since we are not, the first group will be tried again and so-on.

Scenario D – Multiple groups in a queue with queue time-out set to be shorter than the sum of the group alert times

In this scenario, multiple groups are again set up and ordered within the queue.  The first group will be tried until it’s alert time is reached (similar to scenario B, this can extend the queue time-out), and a check is made to see if we’re past the time-out.  If so, we perform our time-out call action.  If not, we move to the next group and try it for it’s full alert time.  At the end, we check to see if we’ve passed the time out and move forward.

SFBLogo

Hopefully that cleared a few things up for a few searchers out there, if so or if not leave a comment below.

 

 

Yes, Analog Is Still a Big Deal, Enter the AudioCodes MediaPack 1288

It’s a new world, it’s a new model, SIP is king and Unified Communications has supplanted standalone telephony.  We are always connected, we have endless choice for effective communication,  we can start large video conferences from a disposable device in our pockets, we live in the future.  So why am I so excited about this new high density analog gateway from AudioCodes?

In a perfect world, analog would be dead, but we live in the real world with legacy processes EmergencyLight
and systems that need to be brought forward.  Large enterprises, higher education, healthcare, and other organizations still have analog needs that need to be filled in a UC world.  Imagine a university campus filled with emergency blue light call boxes, press a button and you’re on the line with police.  That’s analog. Imagine rooms upon rooms filled with hospitality phones that are extremely costly to replace or have no good SIP equivalent.  More analog.  Until now, the high density analog options for Skype for Business or Lync were rough.  The biggest supported gateway had a mere 24 ports.  Sure, you could maintain many gateways but the complexity multiplies.  It sadly came up that maintaining a trunk to a legacy TDM system was often a reasonable answer.

But finally we have a new option, the AudioCodes MediaPack 1288.  This 3U device can start with 144 analog FXS ports and scale to 216 or 288 depending on the number of line-cards (up to 4) added.  Each of those line cards has three 50-pin champ connectors which can connect to a punch down block or an RJ11 adaptor.  For those emergency phones, it supports long haul connections over 4 and a half miles (your ethernet cable won’t make it).   When you’re used to stacking gateways and maintaining multiple routes, this unit means the world.

For fun, here’s a sneak peek at the unit below with a single line-card. I have to make this clear, this picture is unofficial and the look may change by GA, meaning yours might look a bit different.

20150917_193427_resized

If you’re looking for more info, AudioCodes’ site has the specs: http://www.audiocodes.com/products/mediapack-1288

QuickTip: Old Tracing Files and OCSLogger

I’ve run across this in a few implementations now. You go to run the OCSLogger on an older Lync server and there seems to be way too much data in there, old data in fact.  You can see in the below image, I ran the logger for literally 2 seconds, but somehow have 9 SIPStack files. This can happen when trace files refuse to be deleted or overwritten.

9sipstackfiles

The quick answer is to close your logger, find your tracing folder (often C:\Windows\Tracing) and move the old ETL files, or all the files in the directory somewhere else.

somanyfiles

You should now be able to start the logger fresh.

Move Your Lync/Skype Users Faster

Hypothesis and Assumption

The other night during an upgrade, I had to move 35,000 Lync users from one pool to another Skype for Business pool.  Because it was an upgrade, this wasn’t a simple Invoke-CSPoolFailover situation.  Running a Get-CSUser  | Move-CSUser command suggested the move time was going to be just short of 8 hours, well outside of our maintenance window and well into the morning where users would arrive and potentially notice.

I’ve long suspected that multi-threading the move would help, and I typically run the move across many servers out of hope and superstition, but I could never say for sure if it was real or my imagination that users seemed to move faster.  Since the back end is mirrored, all of these threads on all of these servers are really ultimately beating on the same back end server, was that the bottleneck?  This night was a good night to find out if it was faster for sure.

Testing

I have six servers in the new Skype for Business pool, breaking the users equally across all of these servers, running 4 threads per server I was able to complete all moves within 2 hours.  A HUGE 4x improvement.

I was still curious, was it because I split it across six servers, or was splitting it across multiple threads enough?  I set up a lab with a similar number of users and ran the moves there.   There were four groups of users with names starting with A, B, C, or D respectively.

Running the following command would take about 40 minutes in each direction:

Download Measure1.txt
1
measure-command {Get-CsUser -Filter {Registrarpool -eq 'sourcepool.domain.com'}|move-csuser -target destpool.domain.com}

However splitting the command up on the same server into four threads sped the move time up so the moves completed on an average of 14 minutes total, nearly 3x faster.

Download Measure2.txt
1
2
3
4
measure-command {Get-CsUser -Filter {FirstName -like 'a*' -and registrarpool -eq 'sourcepool.domain.com'}|move-csuser -target destpool.domain.com}
measure-command {Get-CsUser -Filter {FirstName -like 'b*' -and registrarpool -eq 'sourcepool.domain.com'}|move-csuser -target destpool.domain.com}
measure-command {Get-CsUser -Filter {FirstName -like 'c*' -and registrarpool -eq 'sourcepool.domain.com'}|move-csuser -target destpool.domain.com}
measure-command {Get-CsUser -Filter {FirstName -like 'd*' -and registrarpool -eq 'sourcepool.domain.com'}|move-csuser -target destpool.domain.com}

Splitting the move across four servers didn’t seem to improve the performance much over the existing tests, though in fairness my lab is limited and runs on a single virtual host.  I’d love someone to test further with a real environment, and I will myself, but these large moves don’t happen every night so I’ll need some time before another very large test can occur.

Conclusion

  • Is it worth splitting user moves into multiple processes?  YES!
  • Is it worth splitting across multiple servers?  I strongly suspect so.
  • Is it worth trying to find the point of diminishing returns?  Probably not, we’re talking about hours of time and not days, every system is different so while it’s a fun exercise, it’s somewhat fruitless and therefore not published here.
  • Is it worth creating a script that can programmaticly divide the users to be moved into perfectly equal parts for each thread because you’re a PowerShell nerd?  Not likely, I fought this with myself… we’re again talking about hours of time here, not days.  That said, here’s a sample that splits it up by first name and opens threads in new PowerShell windows, just cut and paste a chunk into an Administrative Skype for Business Management Shell window and let it do the rest of the work for you.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
start-process powershell -ArgumentList "Get-CsUser -Filter {FirstName -like 'a*' -and registrarpool -eq 'sourcepool.domain.com'}|move-csuser -target destpool.domain.com;pause"
start-process powershell -ArgumentList "Get-CsUser -Filter {FirstName -like 'b*' -and registrarpool -eq 'sourcepool.domain.com'}|move-csuser -target destpool.domain.com;pause"
start-process powershell -ArgumentList "Get-CsUser -Filter {FirstName -like 'c*' -and registrarpool -eq 'sourcepool.domain.com'}|move-csuser -target destpool.domain.com;pause"
start-process powershell -ArgumentList "Get-CsUser -Filter {FirstName -like 'd*' -and registrarpool -eq 'sourcepool.domain.com'}|move-csuser -target destpool.domain.com;pause"
start-process powershell -ArgumentList "Get-CsUser -Filter {FirstName -like 'e*' -and registrarpool -eq 'sourcepool.domain.com'}|move-csuser -target destpool.domain.com;pause"
start-process powershell -ArgumentList "Get-CsUser -Filter {FirstName -like 'f*' -and registrarpool -eq 'sourcepool.domain.com'}|move-csuser -target destpool.domain.com;pause"
start-process powershell -ArgumentList "Get-CsUser -Filter {FirstName -like 'g*' -and registrarpool -eq 'sourcepool.domain.com'}|move-csuser -target destpool.domain.com;pause"
start-process powershell -ArgumentList "Get-CsUser -Filter {FirstName -like 'h*' -and registrarpool -eq 'sourcepool.domain.com'}|move-csuser -target destpool.domain.com;pause"
start-process powershell -ArgumentList "Get-CsUser -Filter {FirstName -like 'i*' -and registrarpool -eq 'sourcepool.domain.com'}|move-csuser -target destpool.domain.com;pause"
start-process powershell -ArgumentList "Get-CsUser -Filter {FirstName -like 'j*' -and registrarpool -eq 'sourcepool.domain.com'}|move-csuser -target destpool.domain.com;pause"
start-process powershell -ArgumentList "Get-CsUser -Filter {FirstName -like 'k*' -and registrarpool -eq 'sourcepool.domain.com'}|move-csuser -target destpool.domain.com;pause"
start-process powershell -ArgumentList "Get-CsUser -Filter {FirstName -like 'l*' -and registrarpool -eq 'sourcepool.domain.com'}|move-csuser -target destpool.domain.com;pause"
start-process powershell -ArgumentList "Get-CsUser -Filter {FirstName -like 'm*' -and registrarpool -eq 'sourcepool.domain.com'}|move-csuser -target destpool.domain.com;pause"
start-process powershell -ArgumentList "Get-CsUser -Filter {FirstName -like 'n*' -and registrarpool -eq 'sourcepool.domain.com'}|move-csuser -target destpool.domain.com;pause"
start-process powershell -ArgumentList "Get-CsUser -Filter {FirstName -like 'o*' -and registrarpool -eq 'sourcepool.domain.com'}|move-csuser -target destpool.domain.com;pause"
start-process powershell -ArgumentList "Get-CsUser -Filter {FirstName -like 'p*' -and registrarpool -eq 'sourcepool.domain.com'}|move-csuser -target destpool.domain.com;pause"
start-process powershell -ArgumentList "Get-CsUser -Filter {FirstName -like 'q*' -and registrarpool -eq 'sourcepool.domain.com'}|move-csuser -target destpool.domain.com;pause"
start-process powershell -ArgumentList "Get-CsUser -Filter {FirstName -like 'r*' -and registrarpool -eq 'sourcepool.domain.com'}|move-csuser -target destpool.domain.com;pause"
start-process powershell -ArgumentList "Get-CsUser -Filter {FirstName -like 's*' -and registrarpool -eq 'sourcepool.domain.com'}|move-csuser -target destpool.domain.com;pause"
start-process powershell -ArgumentList "Get-CsUser -Filter {FirstName -like 't*' -and registrarpool -eq 'sourcepool.domain.com'}|move-csuser -target destpool.domain.com;pause"
start-process powershell -ArgumentList "Get-CsUser -Filter {FirstName -like 'u*' -and registrarpool -eq 'sourcepool.domain.com'}|move-csuser -target destpool.domain.com;pause"
start-process powershell -ArgumentList "Get-CsUser -Filter {FirstName -like 'v*' -and registrarpool -eq 'sourcepool.domain.com'}|move-csuser -target destpool.domain.com;pause"
start-process powershell -ArgumentList "Get-CsUser -Filter {FirstName -like 'w*' -and registrarpool -eq 'sourcepool.domain.com'}|move-csuser -target destpool.domain.com;pause"
start-process powershell -ArgumentList "Get-CsUser -Filter {FirstName -like 'x*' -and registrarpool -eq 'sourcepool.domain.com'}|move-csuser -target destpool.domain.com;pause"
start-process powershell -ArgumentList "Get-CsUser -Filter {FirstName -like 'y*' -and registrarpool -eq 'sourcepool.domain.com'}|move-csuser -target destpool.domain.com;pause"
start-process powershell -ArgumentList "Get-CsUser -Filter {FirstName -like 'z*' -and registrarpool -eq 'sourcepool.domain.com'}|move-csuser -target destpool.domain.com;pause"

And for fun, here’s an image of me running the measure-command with results in my own lab:

Capture

Reminder: Quarterly Skype for Business Users Groups

This is your quarterly reminder that the US Skype for Business (they’re re-branding!) Users Groups are coming up.

These are always fun and valuable, and a great place to network with your peers and make those relationships.  I’ll be there as well as many experts, there will be a deep dive into monitoring applications and an open forum so please feel free to ask any questions you may have.

Head over to skypeusersgroup.com and find your group on www.meetup.com.

  • October 20th – Chicago, IL
  • October 20th – Cincinnati, OH
  • October 20th – Philadelphia, PA
  • October 21st – Los Angeles, CA
  • October 27th – Nashville, TN
  • October 21st- Silicon Valley, CA
  • October 29th- Kansas City, MO
  • November 3rd- Detroit, MI
  • November 3rd- Boise, ID
  • November 4th- Milwaukee, WI
  • November 4th- Seattle, WA
  • November 5th- Portland, OR
  • November 9th- New York, NY
  • November 10th- Charlotte, NC
  • December 3rd- San Francisco, CA
  • December 3rd – Atlanta, GA
  • December 10th- Baltimore, MD

Skype for Business iOS is Available! Calm Down.

The Skype for Business iOS app was released this morning to much fanfare… I’m as excited as anyone, however I had to calm down a bit as I quickly realized some critical features that I used regularly with the Lync 2013 app using didn’t make it into the RTM version.  This is somewhat of an issue because the Skype version is an update that replaces the Lync 2013 version, there’s no going back and there’s no running them in parallel.

IOSad

Some of the most notable features missing are:

  • There is no option to set call forwarding settings.
  • There is no option to transfer a call.
  • You cannot view PowerPoint presentations unless within a desktop sharing session.
  • No group IMs.

These shortcomings are outlined here and will hopefully be addressed soon:  https://support.microsoft.com/en-us/kb/3102247

Futhermore, other issues have been spotted such as the client automatically adding a +1 (or +whatever your country code) and are mentioned here: https://support.microsoft.com/en-us/kb/3101663

I’ve personally been seeing miscellaneous crashes as well, though to be fair, many of my apps have been crashing since upgrading to iOS9, so I can’t say this is Skype related for certain.  Still, because of the official issues referred to in the article, I’ve been advising helpdesks to notify their users to hold off on the update if any of these features will cause a serious hindrance to their work.  If these features don’t affect you, it’s a pretty cool app and I’m excited to have it finally on my phone.

 

Awarded MVP for Skype for Business 2015

It’s October 1st, and I am honored to (once again) be awarded as a Microsoft MVP for Skype for Business for 2015.  Reflecting on the last year, the biggest benefit of the program really has been the opportunity to meet and chat directly with people involved in the product group as well as the close comradery of the MVP community.  One of the most surprising things is simply how vocal the MVPs are about product issues and improvements that are needed, it’s not all a Microsoft love-fest like you might have imagined.  You should know that the MVPs are in your corner, standing in front of Microsoft, unashamedly pushing and fighting for many of the ideas seen on lync.ideascale.com and skypefeedback.com.  🙂  It’s not so surprising when you consider we’ve dedicated ourselves to the solution, are vendors and implementors, and are extremely passionate about what we do.

Capture

Update: the award hit has been received and unboxed.  New pin, new card, new plaque, more stickers, and the glass disk to fit on the existing award.  If you want to see what the first award looks like, click here.

IMG_2788