New Group Standard Channel Setup
When a new Office 365 Group is created, auto-provision standard Teams channels (General, Announcements, Resources) with welcome messages.
Provided as-is, without warranty of any kind. Review and test each pattern in a non-production environment before deploying it to live automations. See our Terms.
Overview
This automated flow watches for newly created Microsoft 365 Groups and, when one is detected, provisions a standard set of Teams channels inside the team that backs the group. Standard channels (Announcements, Resources, plus any others configured via env vars) are created with their own description, and a templated welcome message is posted to each channel so new members land on a ready-to-use Team. The General channel is left as-is and only receives the welcome post.
Use Case
When IT or HR rolls out new collaboration spaces, a fresh Team often starts with only the default General channel — leaving owners to manually create the same set of standard channels (Announcements, Resources, etc.) and seed them with kickoff messages every single time. This flow eliminates that toil by detecting new Groups the moment they are created and shaping each backing Team to a consistent, governed structure, so every new workspace launches with the same look, feel, and onboarding content.
The flow is ideal for teams that:
- IT admins standardising Teams provisioning across the tenant
- Workplace/collaboration teams enforcing a consistent channel taxonomy
- Organisations rolling out governance for self-service Group creation
- Change/adoption teams wanting every new Team to ship with welcome content
- Scenarios where channel naming and descriptions must match a documented standard
Flow Architecture
When a new Office 365 Group is created
Office 365 Groups OnNewGroupAutomated trigger fires whenever a new Microsoft 365 Group is created in the tenant. The trigger payload includes the new Group ID, display name, and owner.
Initialize standard channel list
Initialize variableLoads the configured list of standard channels (name, description, welcome message) from env vars into an array variable. Default set: Announcements and Resources.
Get team for group
Microsoft Teams GetTeamFromGroupResolves the Team that backs the newly created Group. If the Group is not Teams-enabled yet, the flow waits/retries until the Team is available.
If team was found
If conditionBranches on whether the new Group has a backing Team available within the wait window.
- For each standard channel — Iterates the configured channel list and creates each channel inside the Team with its display name and description.
- Create channel — Microsoft Teams CreateChannel action creates a standard (public) channel under the Team using the iteration's name and description.
- Post welcome message to channel — Posts the configured welcome message into the freshly created channel as the flow owner.
- Post welcome message to General — After the loop, posts a top-level welcome message in the General channel summarising the new channel structure.
Send a notification email to the admin alias so the Team can be checked/teamified manually. No channels are created.
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_StandardChannels | String | [{"name":"Announcements","description":"Team-wide announcements from owners.","welcome":"Welcome! This channel is for team-wide announcements."},{"name":"Resources","description":"Shared links, templates and reference material.","welcome":"Drop shared resources, links and templates here."}] | JSON array describing the standard channels to create in every new Team. Each item has name, description and welcome (the initial message). |
| flowlibs_AdminNotifyEmail | String | alerts@yourcompany.com | Mailbox that receives the completion/failure notification when a new Group is provisioned. |
| flowlibs_TeamLookupRetries | Number | 5 | How many times the flow re-checks whether the new Group has a backing Team before giving up and notifying the admin. |
| flowlibs_PostWelcomeInGeneral | Boolean | true | When true, the flow posts an overview welcome message into the General channel after standard channels are created. |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| Office 365 Groups | shared_office365groups | OnNewGroup (trigger) |
| Microsoft Teams | shared_teams | GetTeamFromGroup (resolve backing Team) CreateChannel (create standard channels) PostMessageToChannel (post welcome messages) |
| SharePoint | shared_sharepointonline | GetFileMetadata (optional: resolve linked Resources content) |
| Office 365 Outlook | shared_office365 | SendEmailV2 (completion / failure notification) |
Note — All connections are referenced as solution connection references; the flow is portable between environments as long as a connection is mapped at import time.
Customization Guide
Almost every realistic variant of this flow can be implemented by changing environment variable values. A few cases require small edits inside the flow definition — those are called out explicitly below.
- Deploying to another environment
- Import the solution, set flowlibs_AdminNotifyEmail to the mailbox that should receive completion notifications, review flowlibs_StandardChannels and adjust the channel names/descriptions/welcome text to your tenant's standards, bind the four connection references (Office 365 Groups, Teams, SharePoint, Outlook) to accounts with permission to create channels Tenant-wide, and turn the flow on.
- Adding or renaming standard channels
- Update flowlibs_StandardChannels with the desired JSON array. Each entry takes name, description and welcome. The flow loops over the array so no flow edits are required to add more channels.
- Skip the welcome post in General
- Set flowlibs_PostWelcomeInGeneral to false to suppress the summary message in the General channel — useful if owners prefer to write their own opening post.
- Scope to specific Groups
- Add a condition immediately after the trigger that checks the new Group's display name prefix, classification, or owner against an allow-list (e.g., only Groups owned by HR) before continuing.
- Create private channels instead
- In the CreateChannel action, switch membershipType from standard to private and add owners/members from the originating Group to restrict access.
Key Expressions
The flow is intentionally light on Power Fx / WDL gymnastics — the heaviest expressions are the branch-name concatenation and the approval outcome check. They are listed below in the order they appear in the flow.
EXPR.01Backing Team ID for new Group
Resolves the Team ID associated with the newly created Group; used by CreateChannel and PostMessageToChannel.
EXPR.02Iterate configured channels
Parses the env var JSON into an array the Apply to each can iterate.
EXPR.03Per-channel welcome message
Reads the welcome message for the channel currently being created inside the loop.
Comments
Sign in to join the conversation.
Sign inNo comments yet. Be the first to share your experience with this flow.