Company-wide communications are tough to do well. Generally, most rely on mass emails that clutter inboxes of people who ignore them or even set up rules to remove them from their inbox. Larger companies have different office locations, which also have their share of communications which are probably more pertinent to their people than national level emails. Then, there are departments and functions that have their own communication needs as well. The last need is best filled via a tool like Microsoft Teams, where a small subset of the employees can connect, collaborate and share what’s going on in their department. Beyond these departments, there are usually many more groups of people, like project teams, affinity groups, communities, etc. These smaller focused groups of people should be using Teams to best collaborate within their own groups. However, as a result, there can be countless Teams for all of these groups to collaborate together. This is not a bad thing, but since we’re all in Teams, how do we get everyone’s attention across the organization? How do we get the important communications, top-down, into everyone’s hands?
- Microsoft tries to position Yammer to be the top-down communication tool of choice. However, it’s not always well adopted and it’s another app users have to check. Not ideal.
- We could create an Org-wide Team that everyone is a member of. This may suffice, but some organizations are divided geographically, and don’t want all communications going to all 10,000+ people across the globe. Need a more focused approach.
- Of course, there’s always email, and I find many companies still lean towards email because they know everyone checks email. Not everyone checks all of their Teams every day.
Can we get these important comms into their day to day, into the Teams they’re busily working in throughout the day? Can we get communications streamlined into where they live?
I created a process that can push communications into as many Teams sites as possible, like a news service or group notification system. Not sure what to call it exactly. The goal is to continue to rely on Teams as the best source of collaboration and bring in communications as well. We can put the communications in the face of our people and enable them to easily talk about it and react to it as they want.
At a high level, here’s what I did:
- Create a SharePoint list that will contain the communications to be shared
- Use a flow in Power Automate to push these communications out to the selected Teams
Easy enough right? In larger organizations, this simple task can be difficult to manage, at best. How do we get the content into each Team? I saw two options:
- Create a “service account” that has access to all of the teams. This presents security risks as someone with the service account could have access to Teams they shouldn’t have access to. Also, we will need to spend a O365 license on a non-user account, boo.
- Leverage the Connectors capability in Teams and let the flow push in the data without needing direct access to the Team. Yes, this is good stuff right here.
We also don’t need all Teams to get the same content since everyone are members of many Teams. I decided to only push into the “home” groups: the departments; the functional groups; the groups people identify under in their job description. The assumption is that they collaborate as a team or a group within their department. All other Teams, like projects, affinity groups, communities, etc. will not get the announcement.
Consider the following list of Teams at an organization called Lozzi & Co:
The teams above we want to push into will be
- Lozzi & Co – org wide team, let the entire company chat about the communications if they want
- Boston Sales
- Boston App Dev
- Boston DXM
- Boston Marketing
The other teams not listed are either project sites or other communities. Everyone in the company should be part of their department team.
We determined that we want to connect to the team using the Connectors feature. Each team owner now has to configure Incoming Webhooks and share the URL to their General channel with us. This is pretty straight forward:
We instruct the owners to give it a name and use our icon, for consistency’s sake.
IMPORTANT keep in mind this webhook URL allows ANYONE with the address to post data into your Team! Anyone being anyone outside of your organization. Fortunately, you can remove the configuration if it gets abused.
Creating the Communications SharePoint List
Super simple list, just a Title, Subtitle and Link Name and Link to Content. Title and subtitle are limited to 255 characters. If they need more space for content, then they can link to the content. We want to keep comms short and sweet. Comms that are too long don’t ever get looked at.
Creating the Control SharePoint List
We also need a list to specify which Teams to send the communications to. This list needs to house the webhook URL, and some other fields for the sake of monitoring and governance.
Quick overview of the fields:
- Title, the team name this is associated to
- Webhook, the URL of the webhook
- Last Published, the date the flow was last successful in writing to the team
- Last Error, the date the flow last errored
- Comments, multi-line text for me to write any details from the flow that I will want
Creating the Flow in Power Automate
The flow is pretty simple but really powerful (as most flows are).
- The flow will listen on the Communications list, waiting for new items.
- When a new item is added, the flow will read the Comms Teams list, and iterate through the list of teams, pushing the comms to each team.
- The flow will then update the Last Published date accordingly.
This is a bigger flow so I decided to push it out to another post. Click here to see the juicy details.
It works! Pushing Communications to Teams
When someone now adds an item to the Communications list, it will get pushed to all of the Teams auto-magically:
Now that this important communication is in our Team, we can collaborate with our teammates, getting to the real important stuff 😁
Monitoring and Governance
As you will also see, the publish date gets updated on the Comms Teams list, letting us know when the last successful publish was:
What happens if a team owner removes the web connector from their channel? What’s to stop them? Nothing really. But we can monitor and follow up with them if that happens. Since we added the action in the flow to write on failure, this list view will get updated when it cannot post to a team:
Within Power Automate, the flow will report an error with additional details. Now I can follow up, see that the connector didn’t work, and reach out to the team and find out why.
Alternatively, we could add an action to the flow and email someone when it fails so we can follow up immediately. You could also add a flow to this list and email yourself or notify others when it fails.
Is it worth it?
Yes, absolutely, for me. Is it for you? I think so. If you’re trying to promote a culture of collaboration, and removing the dependency on email, this approach meets your users where they are during their workday and on the go: in Microsoft Teams. If you haven’t adopted Teams, you could just as easily point this to a Slack webhook instead. I don’t care what tool you’re using ;). Our goal is to make disseminating important communications to our users as easy and painless as possible, for the content authors and consumers, and doing everything we can to encourage users to read it.
Let me know if you try this out, or if you found other ways to better improve communications over just emails!
Lozzi, D. (2020). Creating a communication process in Microsoft Teams with Power Automate (Flow). Available at: https://davidlozzi.com/2019/12/16/creating-a-communication-process-in-microsoft-teams-with-power-automate-flow/ [Accessed: 24th March 2020].
Find more great Power Platform content here.