Wednesday, November 2, 2016

Welcome Microsoft Teams to the Microsoft Collaboration Portfolio!

Today Satya Nadella, Microsoft's CEO, took the stage in New York City, along with Office CVP Kirk Koenigsbauer and other special guests, to make some incredible announcements. Chief among these announcements was the arrival of a new collaboration tool that will compete against the mounting momentum of rival product Slack: Microsoft Teams!

While Microsoft Teams is probably the single biggest announcement in the Skype for Business world since Cloud PBX and PSTN Calling, it is deeply integrated with the whole Office 365 suite, bringing an incredibly powerful collaboration machine to the enterprise that will be tough to ignore.

A Brief Intro to Microsoft Teams

Teams is in Preview starting today, November 2, 2016, and is targeted for General Availability in Q1 of 2017. Jump on that Preview as early as you can.

Let's take a look at that slick interface, and built-in Power BI functionality:

And of course, the Skype for Business integration is deep. We have Presence, the ability to strike out into existing Video/Audio chats, or create new ones on the fly:

The Need

This announcement has been rumored and anticipated for several months now, but the rumors have finally been put to rest. So what are the impacts of this announcement for those of us in that live and breath unified communications, primarily Microsoft unified communications?

First, many organizations have largely and quickly adopted Slack as an easy, convenient, and readily-available tool to meet the need for persistent conversations among teams within its walls (and sometimes outside its walls). Many who are not as familiar with this topic may be quick to point to Persistent Chat within Lync Server 2013 and Skype for Business Server 2015 as a suitable solution. At first glance, yes, Persistent Chat would be a great tool for meeting such a need. Unfortunately, Persistent Chat has not been actively developed for quite some time now, and among it's primary limitations is that it ONLY works on Windows clients. That's right, Mac and Linux users can not take advantage of Persistent Chat, and for some organizations, that fact alone makes Persistent Chat a non-viable option for inner-team chat collaboration.

With the need for persistent chat-like communications among teams with clients of various OS types, and Persistent Chat development not budging to meet this need, organizations began looking for alternatives. Slack happened to be the solution that fit the bill best, and was the easiest for teams to quickly adopt.

This presented a great opportunity for Slack in the market; it had an "in" for taking a larger slice of the collaboration pie. It wasn't long before new features started popping up on the Audio and Video side, which of course, meant stronger competition for Microsoft's Skype for Business and other collaboration tools. Clearly, Microsoft needed to address this, and it needed to do so quickly.

The Office 365 Differentiator

This is where "Teams" comes into play. The beauty of Teams is that it will be made available within Office 365. This means that it will slip nicely into current workflows of the droves of organizations that are already taking advantage of Office 365 for their collaboration needs. It is essentially "Persistent Chat" for the Cloud! 

Purchasing an add-on or additional subscription is VERY easy within Office 365, and assigning it to a user is even easier. This means that the time spent deploying the solution will be greatly improved, in comparison to a completely separate tool.

What about the fact that it is not FREE - that it is a paid subscription, and Slack is free? While it is true that there is a free version of Slack, there are also paid versions of Slack with advanced features and capabilities. Many organizations have opted to pay for these advanced features, and if they can achieve the same functionality while utilitizing their current Office 365 platform, it just makes sense.

The race is now on, to learn as much as we can about this amazing new tool, kicking the tires and learning how it will fit into our organizations at GA. I hope you all enjoyed the presentation from Microsoft today, and if you missed it, be looking for more content. It is sure to come pouring out everywhere!

Stay techy my friends!

Monday, October 31, 2016

Move-CsUser : HostedMigration Fault: Error=(506) - Cannot Migrate Skype for Business User From Online to On-Prem

The Error

I recently had the pleasure of running into this seemingly elusive "506" error when trying to migrate users that had already been configured for Skype for Business Online to a brand new On-Prem environment after configuring Hybrid. I say "elusive" because I could not find a solution on Bing or Google (yes, I started with Bing!). The actual error read as follows:

Move-CsUser : HostedMigration fault: Error=(506). Description=(The user could not be moved because there appears to be a problem with this user account. Please verify the attribute settings on the account and then try again.)

The Scenario

Let's get a good handle on what this environment looked like, and what it was currently at the time of this error, as this information is key. This organization had Hybrid Exchange setup, but all the mailboxes were homed in Exchange Online. They had also been using Skype for Business Online exclusively; there was no on-prem Skype for Business infrastructure. Lastly, Azure AD Connect was properly set up, and syncing without errors. All good and pretty!

Now, the goal here was to implement an on-prem Skype for Business deployment so that users in a particular geography could use the on-prem voice infrastructure. The plan was to implement the on-prem infrastructure, configure Hybrid for Skype for Business, and then move the users in this particular geography to the on-prem infrastructure while leaving all other users in the Online environment. Everything up to the step in which users are moved to On-Prem worked fine.

The Troubleshooting

So, Hybrid was configured, the on-prem environment worked well on its own, and the Online users were registering through the on-prem environment without a hitch. Why then, could we not simply move the users to the on-prem environment? Looking at the above error, the complaint seems to be centered around a problem with attributes. Ok, first thing, go back and ensure that your Azure AD Connect configuration is syncing successfully.

A quick look in Office 365 Admin Center verifies that the sync is happening at regular intervals, and happening successfully. Next, lets go to the actual AADC server, and make sure that the attributes for Skype for Business are all syncing successful...WAIT!!! Of course the Skype for Business attributes are not syncing! Remember, AADC was setup and configured to sync BEFORE the on-prem Skype for Business infrastructure was ever in place! Remember, one of the first things we do when installing Skype for Business Server 2015 is to extend the Schema so that all the new Skype for Business-specific attributes will be present within AD. Since AADC was installed and configured before this Schema Extension took place, AADC is not aware of these new Skype for Business attributes.

So, we go onto the AADC server, and from the START menu we find the Synchronization Service for Azure AD Connect:

Click on it to open up the GUI:

Now, let's navigate to Connectors at the top of the tool, and for each Connector (we'll do both for good measure, but highlight one at a time and perform the action), click on Refresh Schema from the list of action items on the right side of the tool:

Read the warning text, and then click OK to implement the Schema Refresh:

You will then need to provide credentials to connect to the Directory for the specific connector. The below image reflects that we are attempting to connect to the on-prem Active Directory, and the password must be provided. Don't forget to change the User name to a Domain Admin in your org as well; I did not do this for the below image, but did afterwards:

As you can see below, the Schema's are compared, and in the case of my test lab, there were no Schema updates, but in the scenario described in this blog post, you will see the Schema changes that were detected.

The Fix

Ok, once I updated the Schemas I waited for the next sync to occur from AADC, to make sure all the new attributes were synced to Skype for Business Online. However, after waiting for the successful sync, and trying the Move-CsUser operation once again, it STILL failed!

This is the point at which I put in a ticket with Microsoft through the Office 365 Admin Center. As usual, they responded very quickly. After going through the environment together for a while, the Microsoft tech zeroed in on one fact that I did not think anything about when I saw it. First we opened up Azure AD Connect, and then clicked on View Current Configuration:

Finally, something on the next screen stuck out to him. Can you guess what it is from the below image:

Well, if you didn't guess it, welcome to the club. It was the fact that Exchange Hybrid Deployment was disabled! Yep. EXCHANGE HYBRID.

Of course, I argued that this shouldn't matter, as this should be for Exchange Hybrid settings; there is no checkbox for Skype for Business Hybrid. At this point, the tech acknowledged that even though this field is labeled as "Exchange", it actually pertains to the environment as described above as well. Unfortunately, there was no technical documentation to back this up, at least that he knew of, but at this point I figured, "What the heck, what will it hurt to try it at this point?!" Hitting Previous in the Azure AD Connect GUI, I then clicked on Customize Synchronization Options, and then Next.

Of course, we must authenticated again:

After putting in credentials for Office 365, making sure that your on-prem AD domain is already added in, and skipping on down to the Optional Features tab, you will see that the Exchange hybrid deployment checkbox is not checked. (NOTE: in my lab environment, I do not have Exchange or Skype for Business installed, so this option is Greyed out. In the real-world environment described throughout this post, this option is NOT greyed out.) Check it, and then click Next:

On the Ready to Configure screen, make sure that you leave the checkbox checked for starting a sync, and then click Configure:

When the configuration is complete, just click Exit, as seen below, and wait for the synchronization to finish. Depending on the size of your environment, the synchronization could take a while. I want to say it took at least 15 minutes to re-sync an environment of about 1,400 people with all the new attributes.

Now, I wish I had some big fancy finish to this post, but honestly, the fact is that after I enabled Exchange Hybrid Deployment in Azure AD Connect, all the needed attributes finally synced to Office 365, and I was then able to successfully move users from Online to on-Prem. Honestly, I am still a little skeptical, simply because the setting is so blatantly labeled as "EXCHANGE" Hybrid, but I suppose it wouldn't be the craziest thing I have seen from configuration settings on Microsoft products...

At any rate, if any of you find yourselves in this so-called "Reverse Hybrid" process, and get the 506 Error due to attributes being off, it is likely that your Azure AD Connect config needs to be updated to:

1. Refresh Schema


2. Enable Exchange Hybrid Deployment checkbox.

Stay techy, my friends!

Thursday, October 6, 2016

UPDATED: Skype for Business Hybrid Handbook, Version 2.1

I have just published Version 2.1 of my FREE eBook on the TechNet Gallery, the Skype for Business Hybrid Handbook. This is a minor revision, with various updates and tweaks throughout the book. Most notably, though, are the updated Features Comparison sections for both Skype for Business Online Cloud PBX, and Exchange Integration.

If you have never grabbed your free copy of the earlier versions of this eBook, you just may find it to be one of the most comprehensive resources for your various Hybrid needs in the Skype for Business world. If you have downloaded a copy in the past, its time to get the most up-to-date version!

As always, feedback is key. Feel free to let me know what you think here, but also don't be shy about leaving a Rating on the TechNet Gallery site!

Stay Techy, My Friends!

Tuesday, October 4, 2016

RESOLVED: Transfer External Call From Polycom VVX Fails in CCE Environment

My Skype for Business Cloud Connector Edition (CCE) adventures appear to be far from over, and that is a good thing in my book. While the thoughts and opinions on CCE and its purpose have been varied, I personally see a lot of geographically-dispersed companies digging right on in, as they are wanting to become full-Office 365 adopters, but must account for the fact that PSTN Calling is still quite limited in its availability across the globe.

As this adventure continues, however, there is obvious product maturity that is taking place, not just on Microsoft's part, but also on the side of the Vendors whose products will integrate with the environment. In this brief post I want to call out a very specific scenario that some Polycom VVX users might find themselves in when they are kicking the tires on a brand new CCE environment. (Yes, this was a painful troubleshooting experience)

The Scenario

Note: This has only been tested on Polycom VVX 500 and 600s, though it may also pertain to the lower-end models, or other Polycom handset series.

Imagine a situation in which you have a Skype for Business user in your CCE environment, let's call them Jim Bob, and they have not adopted the "No More Phones" mentality yet. They have been using handsets for years, and they simply LOVE their Polycom VVX 600. After all, it is a pretty slick handset! At any rate, your CCE environment is set up properly, everything is working, and this user has been otherwise happy as a clam (I want to know who the psycho is that allegedly determined that clams are even generally happy creatures. Seriously, think about their existence; how on earth can that possibly...I digress).

One day, some one external to the company calls Jim Bob over the PSTN, and this call gets routed through CCE and to Office 365. At this point, Cloud PBX knows which endpoints Jim Bob is active on, and dials him on those. This is when his Polycom VVX 600 rings. Jim Bob cheerfully answers the phone, and after a few minutes of stimulating conversation, he realizes that the call actually needs to be forwarded to a colleague in a different department. No problem; Jim will just transfer the call!

The Problem

As Jim moves to transfer the call via the Call Control mechanisms on his VVX 600, he dials the number of his colleague, and goes to transfer the call. Unfortunately, though, the transfer does not go through, and Jim Bob now needs to figure out what to do with this caller! Please note, Jim Bob already confirmed that he was able to transfer a call from another internal user in his Skype for Business Online tenant within the same CCE deployment, so he was completely stumped about why he could not transfer a call from an external user.

The below diagram shows how the initial call came in, how it was routed to Jim Bob, and then how it would have traversed before being successfully transferred to his colleague. It also shows a big red "X" where the call ends up failing (if you do your homework and trace all the logs through CLS Logger on the CCE VMs):

The Resolution

Now, hopefully you found this blog before doing a whole lot of troubleshooting and digging into the logs, because if you did, you will realize that the issue is fixed by something as simple as firmware upgrade. You see Jim Bob's company tries to keep their phones updated with the latest firmware as much as they can, but there was a new firmware version from Polycom for the VVX phones, 5.4.5, that did not get released until October 3, 2016. While Jim Bob was experiencing the issue, this version was still and Beta and not publicly available, making the Call Transfer problem a difficult one to work around.

Version 5.4.5 is certified for Skype for Business, and will most definitely fix this issue if you have come across it. In addition to this issue, there are a good couple of pages of bugs that are addressed in this version. If you have a moment after updating your phone, check out the Release Notes; there is a LOT going on there.

Finally, here is a link to the latest Polycom UC Software Releases:  Please note, you do NOT want to go for 5.5.0; stick with 5.4.5, as it is actually certified for Skype for Business.

Well, I hope this has helped at least one or two of you on the CCE pioneering front! Till next time...

Stay Techy, My Friends!

Monday, October 3, 2016

Skype for Business at Microsoft Ignite 2016 - All the Right Information

The Expo floor at Microsoft Ignite 2016 in Atlanta, GA


Catching up on Microsoft Ignite 2016...

You might think that fresh off the heels of my trip to Microsoft Ignite 2016 in Atlanta, my first post would be about all the Skype for Business news coming out of Ignite this year. However, there is already a lot of good info out there from very reputable people on the subject, so I don't want to continue beating a dead horse. Instead I want to point you to the spots where the good info already exists.

 For a really good recap of all the Skype for Business-related news from Ignite, check out Mark Vale's (brand new MVP, BTW, Congrats!!!) blog post detailing the various topics:

Also, MVP Matthew Landis always has a great collection of notes from these conferences:

Now, if you want a REALLY good in-depth breakdown of the MAC news coming out of Ignite, check out Mr. John Cook's post (he is rumored to be an unashamed Apple fanboy):

Lastly, while I did not blog on the happenings at Ignite, I did interview Jamie Stark, Technical Product Manager of Skype for Business at Microsoft, and Matthew Landis of Landis Technologies. I also managed to get an Ignite-Edition of the #Skype4BRecap recorded on Thursday. Check out all that fun below:

Jamie Stark Ignite Interview:

Matt Landis Ignite Interview:

And the #Skype4BRecap Ignite Edition:

Finally, Tom Arbuthnot put together an amazing tool for downloading all the video content on the sessions that you could possibly want. Check out the tool, and be sure to leave some love in the comments for him

Stay Techy, My Friends!

Friday, September 16, 2016

Skype for Business Cloud Connector Edition Fails on BaseVM Windows Update

Well, my adventures in Cloud Connector Edition (CCE) just keep on unfolding, and I must say, learning on a curve can be tricky, as the technology is so new, and things are changing between versions so much. I came across one tricky situation with a very specific fix, and I figured this may help some of you out if your are not as geeky on the Networking side as you are on the Skype for Business side.

The Issue

This problem is not specific to any version of CCE. Let's say you have made it as far as prepping your Hyper-V host with all the appropriate settings. You have downloaded CCE, you have downloaded the S4B bits, you have uploaded the Windows OS ISO that you will be using, and properly filled out your entire CloudConnector.ini file (along with all the other required preparation steps). Finally, you are ready to convert that ISO file into a BaseVM that will be used to create your final 4 VMs in the CCE configuration. You run the following cmdlet:

Convert-CcIsoToVhdx -IsoFilePath <Windows ISO File Path, including file name>

A lot happens now. The original ISO is extracted, stuff is happening in the background, then a new VM gets built and the OS is installed. Of course, the configuration information is pulled from your CloudConnector.ini file, so make sure you have that properly filled out ahead of time. During the original OS install, the PowerShell window does not show you much at all, and doesn't update you with the progress until it is finished. If you are like me, and don't have a lot of patience, or just like to know what is going on, pop open the Hyper-V Manager, click on the BaseVM name (it is named some horrible GUID-looking name), and click Connect from the VM options on the right side. This will let you see the VM as the OS gets installed and the machine restarts over and over again - it is more to look at that PowerShell where nothing seems to be happening.

Finally, in your Powershell window, after the OS is fully installed and the machine has gotten through some initial configuration, you see that it is attempting to download and install Windows Updates. But it fails! NOOOOO!!!! It says it will retry again after 30 seconds...

No Bueno...

The Resolution

So, at this point you are racking your brain. You did everything to prep that you needed to. You cleared all the IPs and Network segments with your Network guy. All the DNS settings are accessible, so you know it is not DNS. The Networking guy even did you a favor and setup the firewall rules correctly on the first try (sorry Networking guys, had to throw that friendly zinger in there). So why is the machine still not able to connect to the internet, resulting in the above cmdlet ultimately failing on Windows Updates?

Well, if your situation was like mine, it was because you did not realize VLAN Tagging was at play! Yep, all your IPs and network information is correct, but the individual vNICs on each VM have to set up with the properly VLAN ID. Luckily, this can be done with the machine still running and doing its thing. With the VM still highlighted in the Hyper-V Manager, click on Settings under the VM options, and then click on the name of the Corpnet NIC as you have set it up on the VMs properties. Once there, you will need to check the box next to Enable virtual LAN identification, and then enter the proper VLAN ID in the box below it. Don't forget to hit Apply before closing the window!

Wasn't that nice? I even added numbers to show you the order to set those VLAN IDs! ;-) 

Once you do this, the VM will almost instantly pick up its connection, and if you are still on the WIndows Update step, you should see updates detected:

And that's that! VLAN tagging is one of those things that is not really covered in the CCE documentation, at least that I have seen, so be aware that you will have to figure it in if it is in use in your environment, or your clients' environments. Please remember, you will need to set it on ALL VMs, not just the BaseVM. On that Edge VM, though, you will have two NICs to set it on, and they should likely each be on different VLANs, thus different tags for each NIC.

Hope this helps at least one or two of you fumbling through a CCE deployment out there!

Stay techy my friends!

Tuesday, August 16, 2016

Cloud Connector Edition (CCE) Deployment - Lessons Learned

Hey everyone! Yes, I know, it has been STUPID long since I wrote a blog post, and my excuses are pathetic. Pathetic as they may be, let me list a couple out to try to redeem myself a bit:
  • I changed jobs. Again! - Yep, I my stay at Deloitte ended up being a little shorter than I originally thought it might be, but an opportunity at Integration Partners came my way, and I just couldn't pass it up. While I worked with an amazing team at Deloitte, and was very grateful for that opportunity, this new role has been a pretty awesome ride already, with an awesome team to boot!
  • I've been keeping up with my weekly #Skype4BRecap webcast. -  Yes, I know, webcasting alone is not good enough, but with a weekly schedule, it does actually take up quite a bit of time!
  • My family did a cross-country move. - You have to admit, that is a pretty big task, moving an entire household from NC to TX. And all the packing/prepping was being done while keeping the house in "Showing" condition for potential buyers.
  • And the lamest excuse of all... I was a bit burned out on "written" material after Version 2.0 of my Skype for Business Hybrid Handbook. - I know, cry me a river, but hey, Version 2.0 was a pretty big increase in content, with an entirely new chapter devoted entirely to Cloud Connector Edition! Which leads me to today's topic.

One of the more recent projects I have had the pleasure to dive into has centered around a Cloud Connector Edition (CCE) deployment. The situation was that the company was deploying a greenfield Skype for Business Online environment in Office 365, meaning they did not already have Skype for Business (or Lync Server) on-prem, and wanted to bake in PSTN calling capability for their Skype for Business users. This was all fine and great for their U.S.-based users, who could simply use Cloud PBX with PSTN Calling. However, this company also had a small group of users in a South American country, and with no PSTN Calling functionality outside of the U.S. and U.K. (ok, AND technically Puerto Rico), they would not be able to place PSTN calls via Skype for Business for their South American users.

Enter CCE! The plan was to move all users into Office 365, with all U.S. users using Cloud PBX with PSTN Calling, and all South American users using Cloud PBX with a new on-prem CCE deployment (the CCE would be connecting to a Sonus SBC as the PSTN Gateway, but that doesn't really matter much for this post). So far, all is well! Below is a nifty little network diagram of how CCE was to be deployed (networking info changed to protect the innocent, of course!):

As you can see above, there was only going to be a single PSTN Site created (a single CCE instance); there was no HA to plan for, or other potential complications. A simple deployment was right up my alley, though, as this would be my first production CCE deployment. I was quite excited.

About those "Lessons Learned"?

Alright, I know you are ready for me to quite blabbing and get on with my pointers already, so I want walk you through this step-by-step - we'll save that for another time! Today is simply about a few lessons that I learned when deploying CCE.

1. Plan your networking ahead of time.

This may seem silly to even call out, as it should be obvious, but I found it really helpful, and almost necessary, to have Visio or other diagram that gave you a good visual of how all the networking components were going to be layed out, and more specifically, what IPs would be assigned. Unlike a Skype for Business Server 2015 on-prem deployment, where you can deploy certain pieces in phases, coming back for things when you are ready, CCE requires you to modify a single text file (CloudConnector.ini) with ALL the necessary values for building out your ENTIRE VM environment before deploying your build script.

This means that you needed to prepare your SSL and have it issued and placed on the server prior to running the script, whereas you could simply execute Step 3 in the Skype for Business Deployment Wizard when you were good and ready for on-prem. You needed to provide the public IP for your Access Edge component, as well as the IPs for each of the 4 VMs, and an additional public-facing (but internal) IP for the Edge server, on a separate network than the 4 IPs assigned to the other VMs. You needed to provide the DNS server IP addresses that your VMs would use for public name resolution (I used Google's public DNS servers at for all public name resolution). As you can see, there were plenty of variables to have completely laid out before pressing that Enter button to execute the PowerShell cmdlet for building the environment.

2. No Errors on the build script doesn't mean everything deployed as expected.

After getting all the requirements gathered and documented in your config file, running it smoothly, and seeing that the cmdlet finished without any errors, you may think the execution was flawless. You may be especially tempted to think this when you see those 4 shiny new VMs in the Hyper-V manager, and start accessing them, noticing the presence of all the right software. Sweetness! Or maybe not so much...

Let's say you go to make that call after getting your user configured completely and logged into a client, and bummer of all bummers, the call doesn't go through. First you try an outbound call from the client, and it doesn't even ring; it pretty much just kills the call after a couple seconds. Then you try an inbound call, dialing the assigned LineURI of this new CCE user. Unfortunately, it may start to ring, but never gets through.

In my case, I ended up installing Skype for Business Debugging Tools on the Mediation server VM, and using CLS Logger. With CLS Logger I could not see any attempts at all when placing an outbound call. Looking at the diagram above, we see that the CCE user would first hit Office 365, and then the call would attempt to route through the Edge role and then the Mediation role before moving on to the SBC (my test users was external to the corporate network). Since I saw nothing on the Mediation server via CLS Logger, this meant that the traffic was only getting as far as the Edge role. I then installed Wireshark on the Edge role, and discovered that a Reset was being sent back to Office 365 from the Edge server every time the outbound call was made.

At the same time I noticed that INBOUND calls were getting further, making it to through the Sonus SBC and to the Mediation server, but were not getting any further as the CLS Logger revealed a 503 error, stating that the Invite failed via the proxy, and that it was unable to establish a connection. With both issues, the Edge server appeared to be the common denominator. This confused me, as I would have figured that any problems with the build would have been reported on the PowerShell window during the build. After all, there wasn't any custom config; all config was done by the script, using the values provided in the config file.Well, I thought I would check out the Edge server for the heck of it.

What do you know, there were several Skype for Business services stopped on the Edge, including the Access Edge service! Trying to start these services failed, and further analysis of the Skype for Business event log showed that the reason for the services not starting was missing certificates. How could this be? The CCE cmdlet succeeded in building the environment, and didn't complain about any certificates...I opened up the Skype for Business Deployment Wizard, go to the certificates section, and sure enough, all of the external certificate fields were blank!

Alright, I don't get how that happened at all, but when I highlighted the External section and clicked "Assign", the external certificate was present as an option. This means that the script did in fact install the certificate on the server, but just didn't assign it during the Skype for Business deployment on the Edge. *SIGH*. I assigned it, restarted services, and BOOM. Traffic started to flow through, and calls started ringing. There were still issues to deal with at the carrier level, but the CCE portion was now fixed.

3. Location, Location, Location (for Office 365 License assignment)

Remember how I said that some of the users in this company were in the US, but others were in South America? Well, when this test account was setup, it was configured like most of the other accounts, leaving the default location as US when assigning licenses. No big deal at first, but remember, I was getting ready to test dialing from with this user, making the assumption that the user was located in this South American country. Well, when I try to dial out international, using the expected format for the specific country, the dialing did not work. At all! Never made it to the Edge server. As a matter of fact, the only way I could dial and make it to the Edge was to start out dialing an E.164 formatted number.

I then used the following cmdlet to view the user's properties:

Get-CsOnlineUser -Identity <user>@<sipdomain>

Looking at the output, I could see that the user's DialPlan was set to "US". Clearly this would not work. So, I went back into the Users section of Office 365, into the Properties for the test user, and went to edit the assigned licenses. When prompted for Location, I changed this to the proper country in South America. After saving the settings, I could now see that the user had the DialPlan that reflected their respective country. Perfect! After waiting about 10 minutes for replication, I signed the user back in, and was able to dial as expected, as if the user was in the South American country.

The thing to remember of this point is that many adopters of CCE are going to be global or international firms that want to make a move into Office 365 for most of their services, but are still not able to move many non-U.S. or non-U.K. users into PSTN Calling; they will be interested in moving as much as they can into Office 365, while leaning on CCE to provide PSTN capabilities to the geographically-dispersed portion of their user base via on-prem infrastructure. With this in mind, specifying the correct location when assigning Office 365 licenses will be very important.

In Summary

Well that's about all the lessons I have to share for now from my recent adventures in CCE. However, I feel like there will be more of these in my future, with maybe other factors to consider, so I may just update this post as I come across any more interesting things to watch for as you wade into the fairly new waters of CCE. Hope this has been helpful in some shape or form. If you have run into any of your own interesting "Gotchas" in a CCE deployment, feel free to share your experience in the Comments section!

Stay techy, my friends!

Sunday, May 1, 2016

Published: Skype for Business Hybrid Handbook, Version 2.0

It's here! Six months after the initial release of the Skype for Business Hybrid Handbook, I have published Version 2.0 to the TechNet Gallery. Oh, and the best part: it's still FREE!

So, what prompted Version 2.0? Well, I knew when I created this book, and had it pointed out afterwards, that I chose an area within the Skype for Business product that would be a frequently changing and evolving beast, which would in turn be difficult to keep up with in book form. This was proven to be very true, and so to keep the content relevant, frequent updates are necessary. The last 6 months have had a large number of fairly major changes in the Skype for Business Hybrid realm, and so it was definitely time to get a new version out there.

What's new?

Azure AD Connect 1.1

Chapter 6 covered the Azure AD Connect portion of configuring a hybrid environment, and with the release of Azure AD Connect 1.1, there were a few changes. Not only were there functional changes, but the screenshots themselves were not fully up to date. On top of this change, the Office 365 Admin Portal Preview is in full swing, so I wanted to get some of those shots in there as well.

Cloud Connector Edition

Cloud Connector Edition was still being called "Min Topology" when the first version of the book was released, and there was much uncertainty about what it would be exactly. All this time later, CCE has been released to General Availability, and people are beginning to kick the tires on it. This was clearly a Skype for Business hybrid scenario that should be accounted for in the book! Here is a preview of one of the diagrams I made for the new Chapter 13 of the of the book:

General House-Cleaning

Besides these more notable updates, there was a lot of grammar cleanup to be done, and just some other rough spots that needed to be smoothed over. Now that Chapter 13 is present, I am sure I will have to go back through and clean up some grammar or punctuation that I missed. That is where all of your awesome feedback comes in handy! ;-)

Well, I hope you are able to use the link above (below the first picture) to grab the latest and most relevant copy, and that it continues to be of use! If you haven't downloaded a copy in the first place, again, it's FREE, and I really appreciate the feedback. If you like it enough, please feel free to share it!

Stay techy, my friends!

Monday, April 11, 2016

Welcome, Skype for Business Cloud Connector Edition

The road has been a bumpy one, but the project formerly referred to as "Min Topology" is finally out of Preview and available for download in General Availability (GA). Everyone, can we please give a warm welcome to the latest member of the Skype for Business Hybrid family, Skype for Business Cloud Connector Edition!

Before I discuss too much about Cloud Connector Edition (CCE), let me provide a few helpful links. I must point out this post is NOT a deep-dive into CCE; rather it is a discussion about what CCE is, and how your organization can take advantage of it. The below links will provide deep-dive information from Microsoft for all the specific requirements and deployment steps.

 First, before you go racing to download it, check out the TechNet article on how to plan for it:

Once you feel like you have a good handle on planning for CCE, read up a bit on how to configure it: That last one doesn't appear to be quite ready for prime time yet, though, as it says that it is "Coming Soon", and refers to the product as still being in Preview. So, one of these days soon, that link will be a bit more useful...

Alright, finally, the link to download CCE:

Excellent! Now, if you are still reading this, and haven't raced off to start tinkering with CCE, let's talk a bit about the nature of this product. At the heart of this tool is a very specific deployment: CCE addresses a scenario in which all Skype for Business users in your organization are using Skype for Business Online in Office 365, but you have an on-premises voice infrastructure already in place that provides PSTN connectivity. This means that your organization DOES have the on-premises voice infrastructure, but DOES NOT have any Skype for Business infrastructure deployed on-premises; all Skype for Business users are Office 365-based users. Savvy?

Now, of course your users in Skype for Business Online could simply use PSTN services offered by Microsoft through Office 365, assuming they are licensed for Cloud PBX already, but you will also have to pay for the extra voice licensing (in addition to Cloud PBX licensing). If your organization has already invested in the on-premises voice configuration, and still has a contractual obligation to use this infrastructure, it is likely that the most desired approach would be to leverage this on-premises voice infrastructure to provide PSTN connectivity to your Skype for Business Online users. How, you ask, when there is no on-premises Skype for Business deployment to facilitate the needed hybrid configuration that could provide such functionality? This is where Cloud Connector Edition comes in!

Available as a download from Microsoft, CCE is actually a collection of four virtual machines (VMs) that get deployed on a Hyper-V host server in your organization's DMZ network. These four VMs serve as a mini on-premises Skype for Business deployment, but no users will actually be homed on this instance; it exists solely to facilitate connecting the Skype for Business Online Cloud PBX users with your on-premises voice infrastructure to provide PSTN connectivity to them. The four VMs that get deployed and configured via a guided wizard are:

  1. Domain Controller
  2. Central Management Server (CMS)
  3. Mediation Server
  4. Edge Server
Before you become concerned about the Domain Controller component, let me make it clear that this little virtual environment is completely self-contained, including the Domain Controller (DC). That means this DC is deployed in its own brand new forest, and will not be connected to your corporate Active Directory.

The other pieces are fairly obvious, as they put into the place the bare minimum requirements for a functioning Skype for Business deployment that can facilitate the traversal of the media from your Cloud PBX to your on-premises voice infrastructure (thus the previous term, "Min Topology").

Now, what would this look like in your environment? At a very high-level, we can see the overview of traffic flow through CCE to your on-premises voice infrastructure here:

What would a more detailed media flow look like? The below image shows us that our signaling traffic does have to traverse through Office 365 before coming back through our CCE deployment, and then making its way through the gateway and out into the wild PSTN. It seems like this would be less than optimal for audio, though, doesn't it? Luckily, as we can see in the same diagram below, once the signaling traffic verifies the information for the user, that user's media is able to flow directly to the CCE host (completely skipping the Office 365 infrastructure), and on to the on-premises PSTN gateway. Beautiful!

So, would do you think? Is this a pretty cool solution for providing existing on-premises PSTN connectivity to your Skype for Business Online users without having to have a full-blown, licensed, on-premises Skype for Business Server 2015 deployment? I think so!

Like I said, I am not going to go deep on this post in regards to requirements, planning, and detailed deployment; that is all highlighted quite nicely in the Microsoft links provided above. Instead, I hope this post has been helpful in familiarizing you with what Cloud Connector Edition is, how your Office 365-based Skype for Business users can benefit from it, and whether or not this is something your organization needs to explore a bit more deeply. For the consultant crowd, this is certainly a deployment option to gain knowledge on to be ready to pitch it to the customer that is the right fit!

Stay techy, my friends!

Saturday, March 26, 2016

Issue With Provisioning Skype for Business Online DNS Records in Office 365 for Recycled Domain

Happy Weekend, UC Geeks!

So, I was inspired to write a little blog post based on some odd behavior that I ran into the other day in Office 365 when trying to allow the Domain Management wizard to auto-create my required DNS records for Skype for Business Online. Yeah, sure, I could have just gone into GoDaddy's DNS tool (yes, I use GoDaddy for domain registration and DNS management - let the hazing begin!), but what is the fun in that when Office 365 has a handy little wizard for taking care of those DNS records for you?

The Scenario

Alright, in this particular Office 365 tenant, I have my domain, '', added in and verified. This domain was added in previously for other testing, but in the previous tests, the domain was used in a Hybrid environment, so I also used the domain name in my on-prem Skype for Business deployment as well. As such, my DNS records originally pointed to my on-prem Edge and Reverse Proxy servers. Savvy?

Now, that on-prem environment is long-since gone, but the Office 365 tenant has been left up, and therefore the domain was still verified and ready for use. I still had Skype for Business Online (Plan 2) licenses purchased. That meant that it was now time to make sure everything looked OK with the domain itself (DNS, etc.) within Office 365 so that I could start creating user accounts and assigning licenses.

To verify I was good to go, I first logged into the Office 365 Admin Center Preview (yeah, I am using the Preview interface cause I am awesome like that), hovered over the Settings menu item in the left-hand navigation, and then clicked Domains:

This brought me to my Domains page. Here we can see that I only have the Default '' domain, and my custom '' domain. Clearly the domain is not ready for production. It has a warning icon beside the domain name, and tells us that there are "Possible Service Issues":

Clicking on the domain itself brings up another modal screen that shows us that there are DNS errors. It then proceeds to highlight all of the required DNS records for the various Office 365 services that can be used in our tenant. Next I click on View Errors:

The next screen shows us what the expected CNAME Records are, compared with the Current values, which are empty. Reading the text at the top of this screen we can already see that Office 365 recognizes GoDaddy as the location of our authoritative DNS zone file for We can also see that it lets us know that we can use that handy little Fix My Records button up top instead of going to GoDaddy and manually fixing the records. Sure, why not?!

Once we click the Fix My Records button, another pop-up window appears asking us to input our credentials. In my case, this is my GoDaddy credentials.

Upon successfully authenticating at the above screen, you are now presented with another screen in which you must click Accept, authorizing Office 365 to make DNS changes to your domain in the DNS zone file hosted at GoDaddy. Of course, we click Accept here:

Once we click Accept, this GoDaddy pop-up disappears, and we now see a grey box across the screen showing us that our DNS records are being configured:

The Problem

So, what's the problem? Normally, if this domain had not ever been used for another Skype for Business (or Lync) deployment before, your records would simply be created, and you would be on about your business! Remember though, I had used this domain for an on-prem Skype for Business Server 2015 deployment previously. So, at this stage in the game, that Configuring your DNS records... box just kept spinning, never completing. After about a few minutes I figured something was wrong.

My next step was to log into my GoDaddy portal and navigate to the '' DNS zone file. The Office 365 Domain Management wizard claimed that the CNAME records flat-out did not exist. Looking at my CNAME record section, I can see that this was indeed the case: no 'SIP' or 'Lyncdiscover' records were present:

Alright, so why won't the wizard just create the records and finish. Aha! My eyes glance up at the A Records above, and that's when I see the problem: The 'SIP' and 'Lyncdiscover' records did A Records!

Yes, I blotted out the IP addresses of the other A Records to protect the identities of the Innocent. And I put in fake IPs (non-routable on the internet) for these records. After all, I am just reproducing the problem for demonstration purposes!

In case DNS is not your bread and butter and you are wondering why this is a problem since the CNAMEs did not exist, and Office 365 was trying to create the CNAMEs instead of A Records, you cannot have similarly named records in the same DNS zone, regardless of record type. Therefore, I cannot have a 'SIP' A Record, and a 'SIP' CNAME. A conflict is detected on GoDaddy's end, and that is why the wizard never finishes in Office 365. It knows there is a problem, but has not been coded to properly display the problem to the Office 365 admin user.

The Solution

Now I know what needs to be done. First, as I am no longer using those A Records any longer, I delete both the 'SIP' and 'Lyncdiscover' A Records from my GoDaddy DNS zone file. Don't forget to click on Save Changes!

Perfect, now the A Records section does not reflect the records anymore:

However, going back into Office 365, I see that the grey bar is still present, and it still shows that it is trying to Configure the DNS records. Finally, I decide to try it from scratch. I click on the Fix My Records button again, and I am once again prompted to input my GoDaddy credentials:

After another successful authentication, click on Accept again, and like before, the GoDaddy window disappears. This time, however, we have much different results! We VERY briefly see the grey 'Configuring' bar, but then it disappears and we see a beautiful green bar showing us that the records have been created successfully! We can even see that the yellow warning icon has disappeared from beside our domain name:

Going over to our GoDaddy portal, we can see that the new CNAME Records are indeed created:

And there you have it, folks! The Domain Management wizard within Office 365 is quite the wonderful tool, making DNS management a walk in the park for admins across the world! However, if you have used your domain in a previous Skype for Business deployment and did not properly clean up your DNS zone file afterwards, the Office 365 wizard will not ever finish, but also won't tell you what the problem is. Now, thanks to my bumbling lab work, you know why!

Stay Techy, my friends!

Monday, February 29, 2016

Conferencing in Skype for Business: Choosing the Proper Infrastructure

Howdy, UC Enthusiasts!

**Queue the cricket noises**

I know, it has been too long, and my blog has been a little too quiet. The new year saw me ending one job, and starting a new one, so things have been a wee bit busy. Now that I am about a month into my new role, and becoming nicely oriented, I figured it was time to start bringing some fresh content with a fresh perspective! Let's talk Conferencing!

Why is Conferencing is a Critical Component of a UC Strategy?

Depending on the politics involved in deploying Lync or Skype for Business in your organization, conferencing may or may not have been one of the main drivers in the technology decision. While it may be primarily known in your organization as the adopted conferencing tool, Skype for Business may also be mostly known to your end users as the IM system, or the phone solution. Regardless of what it is known for in your company, bringing a positive conferencing experience to meeting attendees is critical to the success of your unified communications strategy, and Skype for Business does an incredible job providing that experience - if you plan appropriately!

A consistent, reliable, simple, and intuitive meeting experience will foster greater collaboration internally, and will ensure that precious employee time is not wasted on trying to navigate confusing and stubborn conferencing software. Providing this experience to external customers or clients can also translate into greater confidence in your organization's ability to work efficiently and effectively for them. Conversely, a poor meeting experience only serves to bring confusion, frustration, inefficiency, and in the case of your valued clients, less confidence that your company has the tools and organization to bring solid results.

If I have now done a decent enough job of convincing you that conferencing is worth putting a little bit of extra consideration into, let's dive into how to make sure you are deploying the proper infrastructure for your intended conferencing participants.

Skype for Business Conferencing Infrastructure Choices

Deploying conferencing in Skype for Business is not equal across all deployments. After all, the infrastructure needs of an SMB will likely vary greatly from those of a large global organization of several thousand end users, right? Is it all just about how many end users you have and how big the rest of your Skype for Business environment needs to be, though? If you guessed "No", then you are correct. While the number of users and scale of your environment will come into play for the size of your conferencing deployment, the type is more specific to the number of attendees that you plan for in your meetings. Let's start out with the most common and simple of choices for your conferencing infrastructure.

Collocated Conferencing - 250 Attendees or Less

Technet calls this scenario a "shared pool", and the idea here is that the Conferencing workload is installed on the same servers, in the same pool, with the other workloads (IM & P, Enterprise Voice, etc.). This will be the deployment method that most organizations are familiar with. As a matter of fact, this deployment method is not restricted to only small and medium size business; it can very well apply to very large Enterprise environments with Enterprise Voice and the whole nine yards.

So, if this option can be used for organizations of all sizes, why would you not just use this option for every deployment? Well, simply put, you would just choose this option - unless you need to hold meetings with more than 250 users. And there it is folks. The "shared pool" deployment method is only appropriate if you plan to only have meetings with less than 250 attendees.

Dedicated Conferencing Pool - 250 to 1,000 Attendees

If your organization has a specific requirement to hold Skype for Business meetings of greater than 250 attendees, but less than 1,000 attendees, then you will not be able to take advantage of the simplicity of a shared pool deployment (i.e., your conferencing workload is collocated on the same server(s) as your IM & P and Enterprise Voice workloads). In this particular situation, you will have to deploy a Dedicated Pool for your Conferencing workload.

A pool that is dedicated to Conferencing is not really much different in configuration; the difference lies in the practice of how this pool is utilized. The goal is to reserve the resources (Memory, CPU, etc) of this pool for large meetings of up to 1,000 attendees, and to meet this goal, it is recommended that almost no users are "homed" on this pool, with the exception of a single SIP-enabled account that is used for scheduling these large meetings. In some cases, a small staff of people may be selected to work closely together on organizing and running these meetings in place of a single generic account, and when this is the case, those users should be homed on the Conferencing pool. Outside of these users, though, no other IM&P or Enterprise Voice workloads should be placed on this pool.

There are a few points to keep in mind with this deployment option:
  • Due to the nature of meetings with such a large attendee list, these meetings are usually meant to have one or two main presenters while the rest of the participants are present in an audience-only capacity.
  • These meetings are usually audio only, with PowerPoint being the main content-sharing mechanism, but with the right controls in place (muting all other users, disabling video for all other users, etc), one or two presenters could also use video.
  • Only one (1) very large meeting at a time should be held, and the best way to control this is by having meetings run through a central SIP-enabled account that is homed on the pool.
  • There is no in-band method for scheduling these meetings, so an out-of-band process needs to be implemented for coordinating times for these meetings. This is especially important if more than one SIP-enabled account is homed on the Dedicated Pool and is capable of running these large meetings.

Skype Meeting Broadcast - Up to 10,000 Attendees

So, there are conferencing solutions for up to 1,000 users using an on-premises Skype for Business Server 2015 infrastructure, but what if you have a need to hold a meeting for more than 1,000 users? Well, you are in luck, so long as you don't plan on having more than 10,000 total attendees. Oh, and so long as you are willing to configure a Hybrid deployment with Skype for Business Online in Office 365. Yeah, just a small detail there...

The reason you have to have Hybrid to accomplish meetings on this scale is that Skype Meeting Broadcast is actually a component of Skype for Business Online; it does not exist in Skype for Business Server 2015 in any capacity. Really, the main reason you would want to use this option, aside from achieving audiences greater than 1,000 and up 10,000, is because it provides you that Broadcast-functionality. With one or two presenters, the goal here is to reach a wide audience with a one-way presentation, potentially inside and outside your audience, and to record it for providing the content to others after the broadcast. This is a great option for conducting "Town Hall Discussions" in a large organization that is very geographically dispersed!

Microsoft Mechanics Episode on Skype Meeting Broadcast:

If your organization has not even considered "Hybrid" yet, there is no need to get too stressed out about this. Yes, there will be some leg work and planning involved to configure your on-premises infrastructure (and your S4B Online tenant) for Hybrid, but it is nothing overwhelming, or terribly costly. You essentially will just need one or two SIP-enabled accounts to be homed in Skype for Business Online for configuring and organizing the meetings. These accounts will have to have the proper licensing assigned to use the Skype Meeting Broadcast feature, obviously, but once it is all setup, there is a simple dashboard for configuring these meetings, and scheduling them. This streamlines management.


As you can see, depending on your audience requirements, you may have to do a little more planning than the typical Skype for Business Server 2015 install. Luckily, the options are fairly straightforward, and there is not a great deal of technical complexity in the differences between your options. Plan, Plan some more, and then PLAN again. If you do this, you will achieve great Conferencing experience for all your audience members, employees and customers alike!

Stay techy, my friends!

Thursday, January 21, 2016

A New Year, and A New Journey

I know this is severely belated, but Happy New Year, all! While this blog post serves as my inaugural 2016 blog post, it is more of a personal announcement post than a technical-awesomeness post.

A new year often brings new beginnings, or at least new sets of goals (that usually fall by the wayside after a week or two). For me, there is a little bit of both. I won't bore you with any goals of achieving washboard abs or learning to speak conversational French (I can just use Skype Translator, after all!), but I will highlight some employment news, and talk about my some Skype for Business community-related topics.

One Chapter Closes...

Tomorrow, Friday, the 22nd of January, is my last day as a "Racker". Yes, after nearly 4 years at Rackspace, I am moving on. As goes the cliche, it is very bittersweet. While I am very excited about the adventure that lies ahead of me in my new position, and the next step in my career, Rackspace has been a phenomenal company to work for. Racker's are truly like an extension of family (the good kind, lol), and the culture is the envy of many companies.

I would like to thank Rackspace, my fellow Rackers, and especially my incredible managers, for all the years of opportunity to be a part of something unique and amazing. Rackspace prides itself on its Fanatical Support, and I truly believe it has built a solid reputation around this principle in the hosting industry. I am proud to have been a part of that!

Another Chapter Begins

So, what's next? This Monday, January 25th, will be my first day as a Unified Communications Architect at Deloitte Services, LP. I could not be more excited and grateful for this opportunity, and am really looking forward to getting oriented, meeting my team, and digging into some awesome UC deployments! I believe this role will bring tremendous opportunity to grow my knowledge and skill sets, and to give me exposure to a plethora of new (to me) configurations that I have been eager to sink my teeth into.

As you can imagine, I have been busy winding things down at Rackspace, and getting all my ducks in a row for starting at Deloitte, and as a result this blog has been a little quiet over the last month (que the cricket noise). While I am sure that I will remain quite busy in the coming months as I get settled into my new role and start taking on various responsibilities and tasks, I will try to do better at keeping up with fresh content and how-to posts here.

What else is new?

So, aside from a new job, what else have I been up to?

#Skype4BRecap Episodes

While the blog has been fairly quiet, I have managed to keep up with my weekly #Skype4BRecap episodes. I have really begun to enjoy doing these episodes, and while viewership is not exactly in the "viral" category, I fully intend to keep these up. However, I may end up shifting recording to Thursday nights. As the show is not being done in a "live broadcast" format yet, this does not really impact much (unless big news gets delivered to the community first thing Friday morning!). If you have not see these, check them out on my YouTube channel, and don't forget to Subscribe:

My eBook: Skype for Business Hybrid Handbook, Version 1.2

When I released my FREE eBook on December 1st last year, it was pretty well received, but there was some work to be done. Thanks to some awesome feedback from various individuals in the community, I was able to update a chapter on User Management with accurate information and more detailed procedures, including new screenshots. I also update the few other areas in the book to reflect current information (Office 365 changes A LOT!).

About a week ago I released a newly updated version of the book, Version 1.2. This version replaced the available download on the Technet Gallery. I was quite blown away by the level of support I got from the community on this follow-up release. You all Shared, Re-Tweeted, and "Liked" the heck out the links to the Download page, and as of right now, I am just under 2,000 downloads! THANK YOU ALL! I would like to give a special Thank You to Fabrizio Volpe, Office Servers and Services MVP, for your kind blog review of the book. 

If you are interested in the downloading a copy yourself, you can grab it FREE here:

Something's Cooking in the Kitchen...

I am also working on a little something-something that I will be sharing soon, once I get the details figured out. About this initiative:
  1. It will be video in nature
  2. My hat will likely be present
  3. And there will be relief from concentrated screen time on my ugly mug 
But that's all I'm saying for now! Stay tuned...

Stay techy, my friends!