Teams & Channels
Manage Microsoft Teams and channels across your managed tenants. Create team structures, configure channel settings, manage membership, and control collaboration features. OpsPilot365 provides bulk team provisioning and cross-tenant visibility into team configurations.
Note: Teams is included in Microsoft 365 Business Basic and higher. Team creation may be restricted by tenant policies. Managing teams via Graph API requires
Group.ReadWrite.AllandTeamSettings.ReadWrite.Allpermissions. Private channel creation requires team owner or admin permissions.
Team Types
Microsoft Teams supports different team types and templates for various collaboration scenarios. Each type has specific characteristics and use cases.
Private Team
Membership controlled by team owners. Users must be added or request to join. Content is only visible to members.
| Property | Value |
|---|---|
| Discoverability | Hidden |
| Join method | Owner approval |
| Use case | Projects, departments |
Public Team
Open to all organization members. Anyone can discover and join without approval. Content visible to all members.
| Property | Value |
|---|---|
| Discoverability | Visible |
| Join method | Self-service |
| Use case | Company-wide, social |
Org-wide Team
Automatically includes all organization members. Limited to 10,000 users. Membership syncs with directory.
| Property | Value |
|---|---|
| Membership | Automatic |
| Max members | 10,000 |
| Use case | Announcements |
Channel Types
Channels are dedicated sections within teams for organizing conversations and content by topic, project, or discipline. Teams supports three channel types with different access models.
| Channel Type | Access | SharePoint Site | Use Cases |
|---|---|---|---|
| Standard | All team members | Team’s SharePoint site | General topics, shared projects |
| Private | Specific team members | Separate SharePoint site | Sensitive discussions, leadership |
| Shared | Cross-team members | Host team’s site | Cross-functional projects |
Note: Private channels create a separate SharePoint site collection for their files, with independent permissions. Members must be existing team members. Private channels support up to 250 members and cannot be converted to standard channels.
Note: Shared channels enable collaboration with people outside the team, including external organizations with B2B direct connect. The host team controls the channel, while shared members have limited access to team resources.
Team Templates
Team templates provide pre-configured structures with channels, apps, and settings for common scenarios. Use Microsoft’s templates or create custom templates for your organization.
- Project Management — Channels: General, Planning, Resources, Status Updates. Apps: Planner, OneNote
- Event Management — Channels: General, Marketing, Logistics, Feedback. Apps: Lists, Forms
- Retail Store — Channels: General, Shift Handoff, Learning, Store Ops. Apps: Shifts, Tasks
- IT Helpdesk — Channels: General, Tickets, Announcements, Training. Apps: Lists, Wiki
Custom Template Structure
{
"displayName": "MSP Project Team",
"description": "Template for client project teams",
"channels": [
{ "displayName": "General", "description": "Team announcements" },
{ "displayName": "Documentation", "description": "Project docs" },
{ "displayName": "Support Tickets", "description": "Client issues" }
],
"memberSettings": {
"allowCreateUpdateChannels": false,
"allowDeleteChannels": false
},
"installedApps": [
{ "teamsApp@odata.bind": "planner" },
{ "teamsApp@odata.bind": "onenote" }
]
}Team Settings
Configure team-level settings to control member permissions, guest access, @mentions, and fun stuff like Giphy and stickers.
Member Permissions
| Setting | Status |
|---|---|
| Create/update channels | Enabled |
| Delete channels | Disabled |
| Add/remove apps | Enabled |
| Create/update/remove tabs | Enabled |
| Create/update/remove connectors | Disabled |
Guest Permissions
| Setting | Status |
|---|---|
| Allow guests to create channels | Disabled |
| Allow guests to update channels | Disabled |
| Allow guests to delete channels | Disabled |
@Mention Settings
| Setting | Status |
|---|---|
| Show @team option | Enabled |
| Show @channel option | Enabled |
Membership Management
Manage team membership including owners, members, and guests. Configure role-based access and handle membership at scale through groups and automation.
| Role | Capabilities | Limits |
|---|---|---|
| Owner | Full control: settings, members, channels, apps, delete team | Max 100 owners per team |
| Member | Participate in channels, add tabs/connectors (if allowed) | Max 25,000 members per team |
| Guest | Limited access: chat, calls, files in allowed channels | 5 guests per licensed user |
Dynamic Membership
Connect teams to Microsoft 365 Groups with dynamic membership rules. Members are automatically added or removed based on user attributes like department, location, or job title.
# Dynamic membership rule example
(user.department -eq "Engineering") and (user.country -eq "United States")Channel Moderation
Enable channel moderation to control who can start new conversations and reply to posts. Useful for announcement channels and structured discussions.
Moderation Settings
| Setting | Value |
|---|---|
| Channel moderation | On |
| Who can start posts | Moderators only |
| Who can reply | Everyone |
| Allow bots to submit messages | Yes |
| Allow connectors to submit messages | Yes |
Moderator Permissions
- Start new posts in moderated channel
- Add and remove other moderators
- Control whether members can reply
- Control bot and connector message permissions
Bulk Team Operations
OpsPilot365 provides bulk operations for creating, updating, and managing teams across tenants. Use templates and automation for consistent team provisioning.
Bulk Provisioning Workflow
- Select Template — Choose from built-in or custom team templates
- Define Teams — Upload CSV or configure team details manually
- Assign Members — Add owners and members from directory
- Provision — Create teams with real-time status tracking
| Operation | Scope | Description |
|---|---|---|
| Bulk Create | Multiple teams | Create teams from template with specified details |
| Bulk Add Members | Multiple teams/users | Add users to teams based on CSV or rules |
| Clone Team | Single team | Copy structure, apps, settings to new team |
| Archive Teams | Multiple teams | Archive inactive teams preserving content |
Team Lifecycle Management
Manage the complete lifecycle of teams from creation through archival and deletion. Implement governance policies and retention rules.
- Active — Team is in use with regular activity. Members can collaborate, post messages, and share files.
- Inactive — No activity for configured period. Owners notified to confirm team is still needed.
- Archived — Read-only state. Content preserved but no new posts or changes. Can be reactivated.
- Deleted — Team and content removed. Soft-delete allows recovery for 30 days before permanent deletion.
Best Practices
Team Governance
- Use naming conventions for easy identification
- Require team descriptions and classification
- Limit team creation to trained users or IT
- Implement expiration policies for project teams
- Regular review of inactive teams
Channel Strategy
- Keep channel count manageable (under 20)
- Use private channels sparingly for sensitive topics
- Name channels clearly by topic/function
- Use moderation for announcement channels
- Archive unused channels instead of deleting
API Reference
# List all teams in tenant
GET /groups?$filter=resourceProvisioningOptions/Any(x:x eq 'Team')# Create team from template
POST /teams
{
"template@odata.bind": "https://graph.microsoft.com/v1.0/teamsTemplates('standard')",
"displayName": "Project Alpha",
"description": "Client project team"
}# Create private channel
POST /teams/{team-id}/channels
{
"displayName": "Leadership",
"membershipType": "private",
"members": [
{ "@odata.type": "#microsoft.graph.aadUserConversationMember", "roles": ["owner"], "user@odata.bind": "users/{user-id}" }
]
}# OpsPilot365 API - Bulk team provisioning
POST /api/teams/bulk-create
{
"tenantId": "tenant-guid",
"templateId": "msp-project-template",
"teams": [
{ "displayName": "Client A Project", "owners": ["user1@domain.com"], "members": ["user2@domain.com"] }
]
}