Category: Skype for Business

March 25th, 2019 by Skype for Business News Aggregator

We know that many of you feel overwhelmed with the abundance of workplace tools and applications available to you and your organization. To ease the burden of this overload, we created Microsoft Teams to give you a single hub for collaboration. Teams brings together all your tools, services, and content together in one place.


We are finding that many organizations who have begun using Microsoft Teams and have witnessed the transformational power of this hub for teamwork are also leveraging some of the 250+ available Teams integrations. We have also seen many organizations building their own integrations.


With that, last week we announced (link to EC blog) that we are making it easier to manage this integrated experience for your end users. This month we are beginning to roll out new and more flexible ways for you to manage how end users can discover, use, and develop these apps. Here’s a look at what’s new:


New capabilities to help drive adoption of specific apps & integrations


As an admin, you can use app setup policies to customize Microsoft Teams to highlight the apps that are most important for your users. You choose the apps to pin and set the order that they appear in the app bar. App setup policies let you showcase apps that users in your organization need, whether they were built by Microsoft, our partners, or your developers. You can also use app setup policies to manage how built-in features appear, inside of Microsoft Teams, for your organization.



Learn more about how you can create and assign app setup policies here.


Improvements to the way you manage existing app settings


You can now manage access to apps for individual users through App permission policy. This policy lets you control who in your organization can interact with specific apps & integrations. You can also limit access to apps built by your organization, letting you phase the app rollout.


In addition to user policies, you can define org-wide settings to block certain apps outright for your tenant.



We’ve also now made it possible to control access to apps separately from the ability to develop and test custom apps within your organization, otherwise known as “side loading.” You can now assign policy over which users can upload custom apps, either to teams or for personal use. This will make it easier to enable your developers to build for Teams. Once the apps are ready, you can then publish them to the tenant app catalog and assign setup policy.


Automating policy assignment through PowerShell


Once policies are created in the Teams Admin Center, you can then bulk assign these policies to users and groups of individuals through the Microsoft Teams PowerShell cmdlets.

Microsoft Teams PowerShell


Getting ready for these changes


These policies will be rolling out in the coming weeks, starting with app setup policy. You will be able to manage these from the Teams apps section of the Microsoft Teams admin center.


New per-user assignment of app permission and side loading policies will be available once your organization is migrated over to the new admin center.


Exploring our available integrations


We just announced some of our latest integrations to help you work smarter, not harder. Have a look if you’re not sure where to start!

Posted in Skype for Business

March 25th, 2019 by Skype for Business News Aggregator

SharePoint is one of the most attractive parts of the Office 365 package. Its accessibility makes it the perfect collaboration tool for organizations of all sizes. That said, there’s a lot to consider when it comes to backing up that data and moving it to a new version of the software. Here are some tips to help you plan a bit more efficiently.

Breaking Down Backup

Imagine the possibilities if you could “backup” your house and return it to a known state with the press of a button. A weekend party gets out of hand and that bowl of guacamole ends up on the living room floor? Rollback to the backup. Your kid watches a video about creating a death ray with a microwave, toilet paper rolls, and aluminum foil? To the backup!

Unlike the impossibility of my “house backup” dream, in the digital world we can cheat. Basic backups are easy and, depending on what technologies we use, almost magical in their ability to make sure we capture every change that gets made. There are a lot of different approaches with varying levels of complexity; as backups become less simple, they also get more useful.

The most vital key to a successful backup is having a plan. Two of the key questions you need to ask are:

  1. How often do you need to do backups?
  2. How long can SharePoint be down while you restore data?

Run through these with your users and bosses. If you can lose 24 hours of data without much concern then a nightly backup is typically fine. You should also keep in mind that generally, the more precise your backups (daily, hourly, almost real-time) the more complex and expensive the process can get.

Just doing backups is not enough, however; you must confirm that they are working and that you and your staff have the skills needed to use them. This includes knowing how to recover from backups, how to use a backup content database to recover files from a library, how to recover a farm from database backups, etc.

If you’re a general-purpose IT worker and SharePoint is only 5% of your job, look at some 3rd party options like AvePoint that will give you a GUI and support for those really bad days.

Need advice for migrating and protecting your data in SharePoint? Check out this post:
Click To Tweet

Progress Through Migration

A major reason we do backups in the digital world is to protect against the negative changes that sometimes occur. We want to be able to reset the digital world to a state that works.

Migrating to a new version of SharePoint is one of the major ways an organization can progress. There are new features, new methods and, in the case of SharePoint Online, all the benefits of the cloud!

I have worked with dozens of customers going through some sort of SharePoint migration and, at a guess, I would say about half of them come into the project thinking we can just do the whole thing in one shot. They think you can just do some planning, make a few changes in the current farm, move all the data to a new farm over the weekend and bring users in Monday morning. It’s that simple…right?

If you’re moving from SharePoint 2010 to SharePoint Online, you’re jumping 8 years of technology. There are completely new types of site collections, Groups, Teams, Planner, and other ideas to explore. Saying you will move everything to SharePoint Online as-is and reorganize it later creates a lot of disruption for your users. It can feel a lot easier to put off that reorganization indefinitely.

There are out of the box ways to migrate from one on-premise version of SharePoint to the next. For instance, there is a tool from Microsoft (the SharePoint Migration Tool) that can be used to migrate content from SharePoint 2013 and local file shares to SharePoint Online. That said, the SharePoint Migration tool isn’t able to move content from older versions of SharePoint; only SharePoint 2013. It also isn’t able to move data between on-premise versions of SharePoint.

That’s why third-party migration tools are so useful–they can help with more complex projects.


Say you want to copy a site from your SharePoint 2010 farm to a SharePoint Online tenant. SharePoint 2010 has no default migration path provided by Microsoft, and even if you could do it without a third-party tool, your users would likely continue to use the original site. What you would need is the ability to do what’s called an “incremental migration.” Incremental migrations can move everything in a site on Monday, and then on Friday only move items that have changed since that Monday. None of the out-of-box or Microsoft-provided tools do incremental migrations.

Even successfully planning a migration can be difficult to do with the out of the box tools. Basic things like a record of all your site collections, subsites, lists, libraries, etc. can be hard to come by in SharePoint by default. You might be able to get most of that for SharePoint 2010 and above with some clever usage of PowerShell, but outside migration tools may be able to provide useful reports to make planning easier. AvePoint actually has two migration tools that provide these functions.

RTO vs. RPO: How to Build a Strong Office 365 Data Backup Plan

Remember that SharePoint is a tool, not a container. If you’re simply using it as a place to put your content, you’re missing out on a bunch of features. Changing how you think about SharePoint may help you re-evaluate how you store content, too. In the past, organizations tended to create a space for each department by building a site or subsite for them.

That’s a good plan for some organizations. For others with a variety of users in different departments working on the same data, it might be better to organize the content by the workflow rather than by the final owners. Making smart changes to how you organize content can help you untangle complicated permissions and make the day-to-day work easier. If you see a number of long URLs like…

…it may be time to re-evaluate how you organize your data.

Hungry for more Office 365 migration content? Be sure to subscribe to our blog!

Posted in Skype for Business

March 25th, 2019 by Skype for Business News Aggregator
So…! You have roll-out Skype for Busines (SfB) on you company. Either it’s a simple or more complex (HA, PSTN connectivity,…) it contains 3 components: a Front-end on an Active Directory and an Edge and a Reverse Proxy. These last…

Continue reading

Posted in Skype for Business

March 22nd, 2019 by Skype for Business News Aggregator

This week I was in a sunny Seattle for the MVP Summit:

Microsoft Teams wins Enterprise Connect Best in Show award and delivers new experiences for the intelligent workplace

Building low code/no code approval workflows for your team using Microsoft Teams, SharePoint & Flow

Chris Sainty on, Razor Components, and working with Microsoft on Open Source projects

You can also subscribe to the audio-only version of these videos, either via iTunes or your own podcasting tool.

Posted in Skype for Business

March 22nd, 2019 by Skype for Business News Aggregator

Technology is pervasive, it is found in every corner of modern life. Technology is abundant, with ever changing systems and processes seemingly proceeding without end. Technology is difficult for some to learn, and each iteration of a new application or device earns another battle with the idea of adoption.

Posted in Skype for Business

March 22nd, 2019 by Skype for Business News Aggregator

Technology is pervasive, it is found in every corner of modern life. Technology is abundant, with ever changing systems and processes seemingly proceeding without end. Technology is difficult for some to learn, and each iteration of a new application or device earns another battle with the idea of adoption.

Posted in Skype for Business

March 22nd, 2019 by Skype for Business News Aggregator

Self Service Phone Number Assignment in Microsoft Teams with Automated Provisioning – Mark Vale Consulting Blog
— Read on

Posted in Skype for Business

March 22nd, 2019 by Skype for Business News Aggregator

Working in the Cloud should be fast. But sometimes you just got to wait it out. One of the biggest pain points for me is the lag between licensing a user in Office 365 and Skype for Business Online to complete its back-end provisioning so I can actually start assigning policies and phone number etc.

This delay can range from a minimum of 30 minutes to 24 hours! There is nothing I can do to speed it up and the biggest challenge is providing a predictable experience to the end user. Typically, I want to license and then do something in Skype. With this delay, I am not going to sit around and keep checking when I can actually complete the task. I’m going to do other stuff.

The problem with this is that I am introducing a lag between the back-end ready state and bringing myself back to this task. This could lead to end user realising functionality before I have tailored it to their needs.

Skype Online applies to Microsoft Teams as well. So this is needed if you’re deploying Teams too. Skype for Business Online gives out two properties, assigned plan and provisioned plan. You can access these properties by calling the user object out of PowerShell. Assigned Plan is the core functionality we have given the user based on their Office 365 licenses and Provisioned Plan is the current plan that has been provisioned. There may / will be a drift between these 2 properties when a user is first licensed. This is what takes time to get into sync.

Having been tired of this problem, I created a script that monitors the license provision in Office 365 every 5 minutes, if all assigned Skype licenses return a success the script will continue to Skype Online and check the provisioned plan against these licenses. The script will continue to check the provisioned plan every 5 minutes until all assigned plans return a success. Upon which I can then add my in band configuration commands such as Grant-CsTeamsMeetingPolicy etc.

This now means all I need to do is enter the user’s UPN into the script and hit enter. Simply call the script from the PS window

 .SkypeProvisioningStatus.ps1 -upn
Skype Provisioning Status ScriptDownload

Posted in Skype for Business

March 21st, 2019 by Skype for Business News Aggregator

So you’ve got Microsoft Teams and you’ve got some calling plans. You don’t have enough to give every user one, so you come up with a business process that lets you be selective based on business justification. How do you integrate that business process to make it easy for IT and your users to follow?

Traditionally, you’d maybe make a shopping cart item in your service management portal and instruct the user to go there and place an order. On submission, it would trigger an approval process and may be even a provision on approval action. But what if you don’t have this expensive solution? What if you want to extract the value out of your Microsoft 365 subscription?

Well you can do this very easily and without too much hard work. In the following example I am using a simple online form that a user can submit and on submission, trigger a bunch of events that will ultimately lead to them being provisioned a phone number in Microsoft Teams.

For this exercise, we need the following components readily available of any Enterprise Subscription in Office 365

  • Microsoft Forms – Used for the end user form
  • Microsoft Flow – Used as a business process and conditional trigger / action solution (like IFTTT, but better)
  • AzureAD – We need this for Azure Group Based Licensing (easier to manage)

In addition to these inclusive features of your Office 365 Subscription, we also need an Azure Subscription so we can use the benefits of Azure Automation Accounts. We use Automation Accounts to store Azure Runbooks which are scripts that are triggered by a job. We use Flow to trigger these jobs.

By the end of this article, you will have a basic, automated provisioning process template to build on. My job is to show you the way, and therefore devoid of any error checking, which in a production scenario you’d absolutely need.

The experience will be this:

  • User will access request form online, complete and submit
  • Request will be emailed to their manager who will then approve* or reject the request.
  • On approval, the user will be licensed with the correct Office 365 licenses and automatically assigned a phone number from the Microsoft Cloud
  • The user will get an e-mail upon completion confirming the action has been completed and their new phone number that has been allocated.
  • *if the manager rejects, the user will get a rejection email

Creating Your Automation Account & Scripts

Head on over to the Azure Portal ( and make sure that you have a valid subscription.

Go to Azure AD and create two AzureAD Security Groups (assume you know Azure Group Based Licensing):

  1. Teams Standard Phone User
  2. Teams International Phone User

In the standard user group assign the base O365 license e.g. E3 or E5 with Phone System and your domestic calling plan. In the international group assign the base license and your international calling plan, or communication credits.

Note down the Group Object ID of each of these groups. You’ll need them soon.

In the search bar type: automation accounts

This will take you to the Account page. Click the Add+ button and create an automation account (best to choose same data center location as your tenant)

Next, in the automation account you have just set up, click on the credentials blade and add a credential that will have the privileges to run your scripts. Give it a friendly name e.g. “Cred” (Change Scripts with correct name)

Now we need to load the required modules into the automation account. Open the modules blade and click on browse gallery

Search for the AzureAD Powershell Module

Add this module to your automation account. Next we need to load the SkypeOnline PS Module. This is not available in the gallery. Assuming you have this installed somewhere on your PC you will need to ZIP the contents of the SkypeOnlineConnector folder located in c:program filescommon filesskype for business onlinemodules folder.

Now that you have zipped this folder, upload it as a module to the modules blade in the automation account by clicking on Add a Module. You should see it become available after around 10 minutes.

Now click on the Runbooks blade and create 3 runbooks:

  1. For Licensing the User
  2. For Checking Provisioning Status of User
  3. For Provisioning the User

Make sure both runbooks are PowerShell runbooks

You should have 3 blank runbooks created now like this

Now load the scripts into each runbook.

Open the Licensing User and Paste the following code in, replace as necessary (remember those Azure AD Licensing Group GUIDs? You need them now).


Save the runbook and publish it.

Now open the ProvisionCheck runbook and paste the following code in. Again replace as necessary. This script basically checks Skype continuously until provisioning has completed. We need this to halt the number assignment until we can actually implement it.


Save the Runbook and Publish.

Finally Open the TeamsPhoneUser Runbook and paste the activation code in


Save the Runbook and Publish.

That’s it for Azure Automation, now the fun stuff can begin.

Create the Form

Head on over to Microsoft Forms ( and create yourself a form. In my example here we have a simple form that asks the following questions:

  • What is your sign in address (UPN)
  • What Site Are You Normally At (Dropdown)
  • Who is Your Manager
  • Do you Need International Calls
  • What is Your Justification Reason

My form looks like this:

How you create your form, and how you word your questions will affect the flow, so for this example I recommend that you use the same wording as I have.

Now for the Flow..

Creating the Flow

Ok now before we go into Flow and start doing stuff, lets just recap what we need to do. We need to do something on Form submission, so this is the entry point into the flow.

Next we need to get the contents of the form so we have some data to use. Without it we are stuffed.

We then need to invoke and approval workflow that gives someone the authority to approve or reject the request. Then on either action we need to carry out the approvers commands

One of two things are going to happen at this point. If the approve approves the request, the flow will kick off all the cool stuff and provision the user. If they reject, the requestor is going to get a rejection email.

Now go to Microsoft Flow and create a flow.

Add your entry point by adding an action and searching for Microsoft Forms. Select Forms, then select Triggers and select “When a new Response is Submitted. Then choose the form Id

Now we need to apply the flow actions to each submission. Add a action and search for “Apply to Each”, then Select the Output “List of Response Notifications”

Inside this control we are going to house all our actions. Now we need to get the form content, so we search for forms again and then choose “Get Response Details”. Select the Form Id and select the Response Id from the menu

Now add another action, search for “start and approval”. In this example its a single user approval (their manager). Compile the approval email as you need. You can insert values from the form for clarity to them, like this:

Note I used the Managers email field from the form as the assigned to address so that they get the email.

Now we need a condition to decide what to do if we get an approval or rejection back. Add a action and search for “Condition”.

Add in the Response from the approval and what the expected value is e.g. “Approve”

Now you’ll get a Yes and No branch. The no is what to do if the response is not Approve. In this example, we are just going to send and email to the requestor.

In the No Branch add an action and search for “send email”. Fill out the email with the information you can pull from the submitted form e.g. the requestor UPN and any other information you want.

Step check, take a breather and when minimised you should now see this

Now for the Yes Branch.

The first thing we need to do is call our automation runbook for licensing the user with the appropriate requirements for calling. Add an action and search for “automation” choose Azure Automation and select Create a Job

Select your Azure Subscription, Resource Group and the Automation Account we created. Now select the Runbook LicenseUser. You should see it is asking for two input parameters. Choose the Email Address of the requestor from the form as the UPN and for International Calling the result from the International Calling Question in the Form, like this

The next step is we need to sit and wait for licensing and back end provisioning to complete before we can actually assign a number to the user. If we try now, it will fail. It can take up to 24 hours for this to work, so what do we do? This is where the second runbook comes in. It checks the users Skype and Teams licensing and back end provisioning repeatedly every 10 minutes until all the expected assigned plans have been provisioned. Only then will it return a value which we can then action on.

Create a new Azure Automation Job, doing the same as before, this time choosing the ProvisioningCheck Runbook

From this runbook, we are expecting something back and we need to tell Flow we are expecting something and what to do with it. Add an action and search for Azure Automation, choose “Get Job Output”. Here we are getting the job id of the previously submitted job so we can pull the output from it.

Now the putput from the job is in JSON format, so we need to tell flow to parse JSON. Add an action and search “Parse JSON”. The content will be the Content from the Azure Job and we need to tell flow content type and properties to expect in the content. In the schema enter the following.

We are expecting a JSON Object back, the “Status” is the property we are expecting back from the script and the content of that property is a string value.

"type": "object",
"properties": {
"status": {
"type": "string"

Progress check. You should now have these actions under the Yes Branch

Now we need to add a condition. The condition is if the property “Status” is equal to “Ready” then go ahead and provision, If not send an email to IT Support telling them of a flow fail. Add this condition.

Now under the No Branch add a send email like before and this time send it to your IT Support desk

Now to the Yes branch, what do we want to do if the result is set to Ready?

Add an action and create a new Automation Job this time calling the TeamsPhone Provisioning Runbook and supplying the UPN and Location of the user from the form

Now again, we are expecting a result back from this job. It will contain the UPN of the user and the phone number we allocated them. So add another action to get the job output

Again, the format of the output is JSON, so we need to parse it to send an email to the requestor informing them of their new number. Add a parse json action and use the following schema

"type": "object",
"properties": {
"upn": {
"type": "string"
"phone": {
"type": "string"

The last action we need to do is send an email to the requestor informing them that their request has been approved and completed. Add an email action and place the phone property in the email body like so

The complete flow should look like this

Seeing It All In Action

User can now go to the form and complete. On submission, their manager gets an approval email

As the manager I click Approve and I am told that my response has been submitted

In Flow I can see that my flow completed

If I check Azure Automation I can see my Runbook Jobs Completed

If I want I can click in to each one and see the output

If I go into the Teams Admin Center, I can see if the user has been provisioned with this number

The user will receive their email like this:

And that is it. Seems quite complex when you write in a blog, but its very straighforward and only takes a hour if that to set up (longest bit was writing the simple scripts).

Obviously you can take this as far as you want. But for a simple self service phone number assignment tool, it does the job!

Posted in Skype for Business

March 21st, 2019 by Skype for Business News Aggregator

Join us for a one-day Microsoft Teams workshop to learn how your organization can drive sustainable adoption today! 

Catch up with our other #ChewNChat posts below!

Originally showcased in 1958 at an expo in Brussels, Belgian waffles were introduced to North America 4 years later in Seattle in 1962 and served with whipped cream and strawberries. There are two kinds, the Brussels waffle and the Liege waffle. Brussels waffles are made with a yeast-leavened batter, which makes them lighter and crispier. Liege waffles are made with a thicker batter that is similar to bread dough and have uneven edges. I was lucky enough to enjoy these with my good friends, Tine Dubois and Bart Robyn!

Speaking of great things being introduced, Microsoft Teams has just introduced new features. Make sure you check them out! We also just released a SharePoint document management eBook as well that will provide guidance for SharePoint admins!

Want to stay up to date with everything going on in Office 365 and SharePoint? Subscribe to our blog today!

Posted in Skype for Business