Key Points
- Use Clear Archive Triggers: Define simple, objective signals, such as inactivity or project completion, to signal team readiness.
- Capture a Complete Pre-Archive Snapshot: Record owners, members, channels, and SharePoint URLs to establish the change baseline.
- Archive Safely with PowerShell: Use Set-TeamArchivedState with the right parameters and optional read-only mode for controlled outcomes.
- Maintain a Reliable Unarchive Path: Keep a documented reversal process to ensure fast, consistent restoration when access is required.
- Store Detailed Logs and Approvals: Save actions, timestamps, parameters, and sign-offs in monthly evidence packets for audits.
Archiving old or inactive Teams isn’t just about tidying up your workspace. It’s about protecting data, keeping your environment organized, and making sure your organization stays compliant. A well-planned Microsoft Teams archive strategy helps reduce clutter, preserve context for audits or eDiscovery, and make it easier to find what matters most.
Microsoft provides administrators with two primary methods for archiving Teams: through the Teams admin center and by utilizing PowerShell. Both can get the job done, but real success comes from using the right triggers, capturing a snapshot before you act, applying consistent controls, and documenting every step so the process is both safe and reversible.
In this guide, we walk you through the steps for the latter option.
⚠️ Things to Look Out For
- Archiving does not delete the team or its files. It simply changes the collaboration state so conversations and files become read-only.
- Private and shared channels have their own SharePoint sites. Forgetting to include them means incomplete evidence.
- PowerShell commands require the correct GroupId and administrative privileges.
- Retention policies and legal holds always take priority. Never archive or delete a team that is under hold without explicit compliance review.
- The unarchive process should be tested regularly to ensure it still works when you need it most.
How to archive a Teams channel
Method 1: Define archive triggers and ownership
Before you start archiving, make sure everyone agrees on when it should happen and who gets to approve it. Common triggers include projects that have wrapped up, Teams that haven’t seen any activity for 90 days, departments that have merged or been renamed, or compliance events that require evidence preservation.
Once your triggers are set, decide who signs off. Usually, this includes the team owner and a data or service owner who understands the business impact. Pair each trigger with a short checklist: snapshot the team, record approvals, perform the archive, and store the evidence. This keeps decisions transparent and makes reviews simple later on.
Method 2: Snapshot the team before archiving
Think of a snapshot as your “before” picture. It’s the proof of what existed before you changed anything. Export basic details like the team’s display name, GroupId, creation date, owners, and members. Then capture a list of all channels, noting whether they’re standard, private, or shared, and include the last activity date.
Don’t forget the SharePoint side. Record the main site URL as well as any linked private channel sites. If the team uses apps or connectors, include those too. Store everything in a dedicated location with a timestamp and requester information. If someone ever asks what the team looked like before it was archived, you’ll have a complete record ready to go.
💡 Check out: Best Practices for Safe SharePoint Backups
Method 3: Archive with PowerShell and optional read-only
When you need control, consistency, and logs, PowerShell is the way to go. The Set-TeamArchivedState cmdlet is the official tool for the job. It allows you to mark a team as archived and, if you choose, set the connected SharePoint site to read-only for members.
This is the PowerShell comment:
Set-TeamArchivedState -GroupId <GroupId> -Archived $true
Before running it, confirm the team exists and isn’t already archived. Then execute the command using the GroupId you captured earlier. Be sure to log who performed the action, when it happened, and any parameters you used. If you also want to make the connected SharePoint site read-only for members, include the -SetSiteReadOnlyForMembers parameter, as seen in this comment:
Set-TeamArchivedState -GroupId <GroupId> -Archived $true -SetSiteReadOnlyForMembers $true
If an error occurs, note what went wrong and how you fixed it. With PowerShell, you can automate, repeat, and audit your archive process across multiple Teams with confidence.
Here’s an example of archiving a Team using PowerShell. This example archives a Team using its GroupID and places the associated SharePoint sites into read-only mode for members.
$GroupId = "example" [Make sure to replace this with the actual GroupID]
Set-TeamArchivedState `
-GroupId $GroupId `
-Archived $true `
-SetSiteReadOnlyForMembers $true
Method 4: Portal path and retention considerations
If PowerShell feels like overkill for a single team, you can archive it directly from the Teams admin center. Just select the team, choose “Archive,” and confirm that the read-only state matches what you expect.
After that, double-check compliance. If your organization uses Microsoft Purview retention labels or legal holds, make sure those policies still apply. Archiving does not remove them, but it’s always best to verify and document the result.
For larger environments, plan to archive in batches to avoid throttling or confusion. Each batch should have its own summary of what was archived, who approved it, and where the evidence is stored.
Method 5: Unarchive and restore service quickly
Sometimes a team that was archived needs to come back. Maybe an audit requires access to files, or an old project starts up again. Unarchiving is simple; it’s the same concept in reverse.
Use PowerShell to change the archived state back to active, and if you set the SharePoint site to read-only, restore normal permissions. Do a quick smoke test by sending a message or uploading a file to confirm everything works. Finally, record the unarchive reason, who approved it, and when it should be reviewed again. Having a clean unarchive path keeps your data accessible without losing control.
Method 6: Operate at scale with scheduled jobs
Archiving should be treated as a regular maintenance task, not a one-time cleanup. The easiest way to stay consistent is to automate it. A scheduled job can review activity data, identify Teams that meet your archive triggers, export snapshots, perform the archive, and log everything automatically.
To support approvals at scale, the scheduled job should also identify ownership and approval status as part of its review. This is typically done by querying the Microsoft 365 group behind each Team to capture the current owners and storing that information in the pre-archive snapshot. Those owners become the default approval contacts and are recorded alongside the archive trigger that was met.
Approvals can then be handled in one of two common ways:
- In policy-driven environments, Teams that meet predefined criteria (such as extended inactivity and no retention or legal hold) may be pre-approved for archiving, with owners notified after the action is taken.
- In more controlled environments, the job can generate an approval request by emailing owners, posting to a ticketing or workflow system, or checking an existing approval register before proceeding. In both cases, the approval outcome, approver identity, and timestamp should be logged so the archive action is fully traceable.
At the end of each month, produce a governance packet that lists which Teams were archived, the reason for each, and links to the stored evidence. Once a quarter, unarchive a few Teams at random to verify that the process still works and that your logs are complete. These validation checks turn your archive workflow into a living part of your compliance program.
Best practices summary
Practice | What It Means | Why It Matters | Value Delivered |
| Pre-archive snapshot | Capture a full record of the team before archiving, including owners, members, channels, and all related SharePoint URLs. | Serves as evidence of what existed before the change. Helps restore or reconstruct a team if needed. Protects you during audits or disputes. | Faster audits, safer change control, and a reliable rollback baseline. |
| PowerShell guardrails | Add checks into your workflow, such as confirming the team exists, verifying it isn’t already archived, and logging who performed the action. | Prevents accidental archiving, duplicate actions, and missing logs. Makes the process predictable across different administrators. | Clearer logs, fewer mistakes, and a repeatable workflow that stands up to scrutiny. |
| SharePoint read-only toggle | When archiving, set the connected SharePoint site to read-only for members while keeping owner and admin access intact. | Protects files from accidental edits or deletions while still preserving access. Ensures the integrity of the data that must be retained. | Stronger content preservation and reduced risk of user-driven changes after the team is archived. |
| Tracked approvals | Record who requested the archive and who approved it. Typically, this includes the team owner and a data or service owner. | Creates a clear decision trail. Ensures archiving is aligned with business or compliance needs, not just technical cleanup. | Accountability, transparency, and clear justification for every archived team. |
| Scheduled validation tests | Periodically unarchive a small set of teams, confirm functionality, and re-archive them. Validate logs, permissions, and evidence. | Ensures your process still works over time. Identifies drift in permissions, scripts, or documentation before it becomes a problem. | Confidence during incidents or audits and verified recoverability when it matters most. |
Automation touchpoint example
The workflow below is only an example. Every organization has its own governance rules, approval paths, activity thresholds, and tooling, so your actual automation will look different. The purpose here is to show what a structured, end-to-end process could look like.
Example Automation Workflow:
- Identify candidate Teams: A scheduled job reviews activity reports and flags Teams that meet your inactivity trigger or other criteria.
- Verify that each team qualifies: The job checks whether the team is already archived, whether it is under retention or legal hold, and whether any exceptions apply.
- Capture a pre-archive snapshot: The job exports metadata, channel lists, and SharePoint URLs and saves them with a timestamp for evidence.
- Request or validate approvals: Depending on your setup, the automation might notify owners for approval or check an existing approval list.
💡 Depending on governance requirements, the job either validates the Team against a centrally maintained approval register or sends an approval request to the identified owners through email, ticketing, or workflow tooling.
- Perform the archive: The job runs the archive action through PowerShell using the appropriate parameters and guardrails.
- Store logs and evidence: All actions, parameters, timestamps, and results are written to a log repository for governance.
- Handle errors: If something fails, the automation generates an alert or ticket with the error text and recommended next steps.
This kind of workflow creates a predictable rhythm for archiving, simplifies reviews, and provides documented evidence for audits or internal governance.
The importance of knowing how to archive Teams using PowerShell
A consistent Microsoft Teams archive process keeps your environment organized, compliant, and easy to manage. When you define clear triggers, capture snapshots, and use PowerShell with proper logging, you create a framework that’s both reliable and auditable. Pair that with a straightforward unarchive process and regular evidence reviews, and your Teams environment stays lean, secure, and ready for any compliance check or investigation.
Related topics:
