Mar 9, 2019 6 min read

Automate governance in Microsoft Teams: Improvements and Wishes

An overview of improvements that might make it into v3 of the application, and a wishlist of things I hope Microsoft implements in Graph and Teams.

Automate governance in Microsoft Teams: Improvements and Wishes

The last part of the series already, and a bit of a different format. First I want to share some additional improvements we already identified for v3. Then I have some wishes for Microsoft to implement, things I would like to see happen while they continue to expand Microsoft Teams as a development platform.

Improvement > Microsoft Teams templates

Initially, we created the Office 365 Groups, turned them into Teams teams and added the necessary channels. In version 2, we switched to Cloning an existing Team. Just released (in beta) is the ability to use JSON based templates to provision a new Team with the necessary settings and channels. I'd switch to this method, as I find it cleaner than keeping a set of clone-able Teams teams.

Improvement > Microsoft Graph data connect

Microsoft Graph data connect is a feature I don't really understand yet (it's also still in beta), but it allows to create a data pipeline to get Microsoft Graph data into an Azure Data Factory. I'd have to check if this could replace the Azure Function to build the Azure Search index: for example, by exporting to Cosmos DB and then using the out of the box connector with Azure Search.
For bigger datasets, this is probably a much more stable method to get Graph data into the Azure Search index.

Wish > Microsoft Graph connector

Microsoft Graph is the one endpoint to rule them all, and it contains an enormous amount of data about your Microsoft 365 environment. Too bad it still doesn't have an out of the box connector for Power BI (or the rest of the Power Platform with Flow and Power Apps). This definitely is one of my top wishes!

Wish > Microsoft Graph delta queries

I love the option to do delta queries to get only the changes since the last run. The only issue is that you have to run through the complete set of changes to get to the "now" state. I don't care about all the changes that have happened, I want to get the changes from now on. With 30 000 group objects and Azure AD Connect in place, it took me about 40 min to loop to the end of the change set and get the last change token. This feature is discussed on StackOverflow, on Twitter and as a suggestion on UserVoice, go vote if you want it too!

Wish > Group Id property in Office 365 Groups Activity report

And the last wish for improvement on the Microsoft Graph is about the reports for Office 365 Groups Activity. The report contains a lot of very useful information, but misses the Group Id to be actually usable in combination with our list of Groups. It does provide the display name of a Group, but that doesn't have to be unique so reporting is severely limited at the moment. While it wasn't there when I struggled with this, there now is a comment on the docs requesting the same thing and a UserVoice request. Go vote, if you want this too!

Wish > Multiple Azure AD Group Expiration Policies

The Group Expiration Policy feature is very useful to manage the life cycle of Office 365 Groups and Microsoft Teams teams. Currently, this policy has to be a one size first all because you can only create one policy.

In case you want to assign a specific policy (of 6 months) to a specific set of Groups and another policy (of 1 year) to another set of Groups, you are out of luck. While the Microsoft Graph API implies that it's possible (because of the list endpoint), we are limited to one. I'd love the ability to create more, and differentiate between Groups.

Wish > Feature parity between authentication libraries

ADAL and MSAL are both very nice authentication libraries but there is no feature parity between the two, which makes a frustrating experience: Microsoft says to use MSAL but you can only achieve some functionality with ADAL.

Feature parity between ADAL and MSAL, and across development platforms, has been announced. Now it's time to finish this already, we struggled enough!

Wish > Greater Microsoft Teams extensibility options

I would love some more options to extend the Microsoft Teams application itself:

  • The ability to replace the default "Create a Team" experience with my own request form.
  • An update to the Microsoft Teams JavaScript client SDK to navigate to Teams. Current experience is less then ideal: click the link, browser opens, user selects "Open in Teams application". I have requested this on Twitter and on UserVoice.
  • The ability to pin Apps to the main menu, instead of being hidden behind the overflow menu (the three dots). It seems like this one is actually coming, according to the preview documentation.
  • A release of Office UI Fabric Stylesheets for Microsoft Teams, so that we can use Office UI Fabric React with a Teams branding. The Teams components are ok-ish, but far more limited than the Office UI Fabric components.

Wish > Improved overall developer experience

This last one is a pet-peeve of mine. It might feel like a rant, but it's intended to highlight what I feel deserves some improvements. Let's start with something positive: if it works, the developer experience is top notch. We got SDK's and documentation, everything to succeed in our endeavors. If something goes wrong, the experience may vary.

Development issues

If/When you have development issues, you go to StackOverflow and tag it accordingly. It might take some time to get noticed, but in my experience those get picked up rather fast. There are a lot of people trying to help out, and I got my problems resolved in a timely fashion.

Feature requests

If you have feature request, you go the correct UserVoice. You pray/hassle to get enough votes, get noticed and get updates on your request. But even when they go though an initial triage and labeled "Under Review", nothing much seems to happen afterwards:

  • I made a request regarding a unified templating API across SharePoint, Teams and other O365 products. It's ranked 20th in SharePoint Dev Platform and it's 1 of 4 requests (out of those 20) that hasn't been categorized by the team yet. The team is probably busy and I can understand that they cannot respond to everything, but it still feels a bit like being ignored.
  • Let's take the request for the Navigate to Teams and Tabs API from before. It's been "Under Review" for more than a year without a response. The team is probably busy, but if it's "Under Review" I kind of expect a response (either positive or negative) in a reasonable time frame.
  • I made this request to get an API to install custom apps in Teams to improve the provisioning process. It's still "Under Review" without any updates, but the API's already exist (for Teams, for users). I wonder when/if it gets marked complete.

A bug

If you have something that is clearly a bug, it's more difficult. There is no clear method of reporting bugs, and a getting a follow up is even more problematic.
Most of the times you get redirected to StackOverflow again, but this doesn't feel like the right place. Some examples:

Luckily, I had a chance to do a face to face discussion with Yina Arenas, Twitter DM and email with Jeremy Thake, got help on Twitter from Christopher Scott and ended up being invited by Laurie Pottmeyer to the internal Microsoft Teams teams to discuss.
So even if the initial experience wasn't great, there were a lot of awesome people were willing to take the time to help me out! I loved it, personally, but it doesn't feel like a newbie-friendly or scalable solution in the long run.

My wish is to have a more standardized and streamlined process that:

  • better fits the platform that's used
  • keeps track of reported bugs with a regular follow up on the status
  • doesn't rely on know the right people to pester on Twitter


I had a chance to solve a very real business problem in a still very new product, with various different technologies in different stages of maturity. The experience itself wasn't always smooth, mostly by my own doing. And some more technical improvements could be done but aren't there always?

I got to connect with a bunch of great people inside and outside of Microsoft. They tried to understand what I was struggling with and help me out. And they are the reason that I will still try and get the information to the relevant people, next time I encounter a bug.

I'm proud of the results and I loved creating it, and in the end that's all that matters!

Never stop dreaming, never stop believing, never give up, never stop trying, and never stop learning. ― Roy Bennett

This post is part of the series Automate governance in Microsoft Teams:

  1. Context and Goals
  2. The Result
  3. Implementation, v1
  4. Implementation, v2
  5. Reporting
  6. Improvements and Wishes [this post]
Great! You’ve successfully signed up.
Welcome back! You've successfully signed in.
You've successfully subscribed to Yannick Reekmans.
Your link has expired.
Success! Check your email for magic link to sign-in.
Success! Your billing info has been updated.
Your billing was not updated.