Pimp up your Teams for a daily newspaper

Nowadays as a consultant, staying up to date with all of technologies which I am implementing for my customers, but even other interesting products, is a daunting task. With changes seemingly happening daily, how do you keep up?

This blog post describes how to use PowerShell to send various items of information about Microsoft 365 to a Teams channel using the incoming webhook connector. The idea is to scan for recent updates and post new items as message cards to inform tenant admins about new features.

Goals #1

For instance, my main focus is all around Microsoft 365.

There are multiple sources for information on what happening with Microsoft 365

  • Microsoft 365 Roadmap: tells you about what is planned and rolling out for each service.
  • Message Center: tells you about new features and breaking changes to your specific tenant.
  • Service Health: tells you about the current status of each service in your tenant.
  • Office Pro Plus What’s New: tells you about new features and capabilities of Word, Excel, PowerPoint, etc.

I want to have only one platform where I can have all of these updates like my own information center. Some of these information requires admin privileges in your tenant. The introduction of the Global Reader role helps in some capacity. Still, there are a lot of different places where you can find this information.

Goals #2

I would merge my RSS clients into this one implemented platform too, in my Teams channel. So I could use only Teams for this purpose which is working on my iPadOS, on my iOS even on my Windows machines too. 😉

Goals #3

Reduce my tweet list and RSS feeds.

Solution

Use Graph and PowerShell to get this information, run it in Azure Automation and publish it to a dedicated team with channels per feature and source. From there your team can leverage the per channel notification in Teams where you can get notified of all new posts that arrives in a specific channel. In this way, you can easily get information about news that interest you and your focus area.

Again one platform to have these important updates around Microsoft 365.

Prerequisites

  • Microsoft 365 license for using Teams (what a surprise): for sure, my corporate tenant has this license; Office 365 Business Premium.
  • Azure subscription for Automation: for my goals, it’s easy to have a Pay-As-You-Go plan.
  • Microsoft Power Automate (formerly: Flow): As part of Office 365 with Microsoft Flow for Office 365 – this is a free license, allowing for a limited number of Flows to be run per month.

How to get there

  1. Connect to your Office 365 Services (like Exchange, Teams, MSOnline)
    I hope you are using Multi-factor Authentication (MFA) to protect at least your global admin, so for this purpose you need to use modern authentication via PowerShell. Please follow this nice article how to do that.
  2. Create a Team with Channels
  3. Create a Connector / Webhook per Channel
    Each channel needs their own incoming webhook connector. The connector cannot be setup up via scripting, but creating a new connector is quickly done through the Connectors link in the channel’s […] menu and it has to be done once. The important thing is to copy and store the URI created for the connector as you need that to post to the channel.

  4. Update PowerShell Script for Microsoft 365 Roadmap Part
  5. Create AppID in Azure AD
    • Register an Application in your organizational directory
    • Request a view permission for Office 365 Management APIs: ServiceHealth.Read
    • Create new client secret: copy the secret to a secure place, as this is the last time you are able to. If you forget, you need to generate a new secret.

  6. Update PowerShell Script for Microsoft 365 Message Center Part
  7. Update PowerShell Script for Microsoft 365 Health Status Part
  8. Update PowerShell Script for Office ProPlus Channel Update Part
  9. Test
    Do a dry run to see of the script works as intended with your own variables. If you see no incidents, message center items posted, it could be because of the time interval. Try to expand the number of minutes to see if you get any hits.

    Once your happy, revert the interval and you’re ready to go.

  10. Add Azure Automation Variables
    For ApplicationID and Application Secret Key, but even for the Domain Name, use encrypted Azure Automation variables.

  11. Create Runbooks
    To schedule the script, there are several ways. I prefer an Azure Automation Runbook
    Use here for each PowerShell scripts the before created variables:
  12. Schedule it
    As the runbooks can only be run once per hour, you can either create 4 schedules, or set up another Azure Logic Apps.

Manage RSS feeds via Microsoft Power Automate

If you are still not faced with Power Automate (formerly Flow), let’s have a look here and try it for free. It’s too easy do not using.

I used for my purpose the following flow template, for posting a message on Teams when a RSS feed is published. Below you can see an example on of this flow:

For these feeds, a new channel has been created separately. One disadvantage for this solution, the polling interval of the RSS trigger is only 1800 seconds.

Other Solution(s)

You can configure directly a RSS connector to your Teams channel. But then you can only one RSS feed option to post a new message here. Even if the digest frequency could be 15 or 30 Minutes, it’s not my best option. I want all of my RSS feeds post in the same Teams channel.

To have tweets into the Teams channels, we could configure a Twitter connector or a Power Automate flow too. I still keep my favorite tweeters in my Twitter app. 🙂

Summary

Now I am getting the pre-defined Microsoft 365 information and updates every morning via Azure Automation to my morning coffee. Plus the new RSS feeds too. I only have to open my Teams app on my devices! I am happy for this kind of consolidation.

Leave a Reply

Your email address will not be published. Required fields are marked *