Teams Migration for New Private Channels Stalls

Why the Private Channels Migration Might Not Have Finished in Your Tenant

Last year, I wrote about the second generation of Teams private channels and explained the technical changes made by Microsoft to enable features like a channel calendar. At the time, Microsoft planned to begin an automatic migration process to convert existing private channels to the new infrastructure in late September 2025. The intention was to have the migration complete for all tenants sometime in December 2025.

Alas, plans and timings don’t always work out. The migration started late and isn’t yet complete. I didn’t realize this until a reader contacted me to ask why they couldn’t add the channel calendar app to a private channel six months after the migration should have finished. This provoked some investigation and here’s what I discovered.

Opening the Migration Black Box

First, it’s important to say that the migration is a huge exercise involving hundreds of thousands of tenants. Teams has over 320 million monthly active users (the last official number from October 2023) and private channels have been around since 2019. You can imagine how many private channels might be in use today, serving their purpose of providing a secure space within a team for a subset of team members to discuss sensitive topics (Figure 1).

A private channel amongst standard and shared channels for a team.
Figure 1: A private channel listed amongst standard and shared channels for a team

The second thing to say is that the migration is complete in many tenants. However, because the migration is a black box that emits no information about its current status unless you go looking, administrators are probably unaware of the current state of the migrate in their tenant.

The only way to discover the state of the private channel migration for a tenant is to run the Get-TenantPrivateChannelMigrationStatus cmdlet from the Microsoft Teams PowerShell module (use a recent version). If the cmdlet reports a “Completed” status, you’re all set to use the new private channel features like being able to add the channel calendar app.

Discovering a Stalled Migration Process

I knew about the cmdlet, but it was not yet available when I wrote the original article, so I had never used it. The cmdlet reported a “RequiresAdminAttention” status. It’s never good when an administrator has to step in, especially when the migration start timestamp was from February 11, 2026. In other words, the automatic migration process started three months ago and had remained in an incomplete status since. Because Teams doesn’t highlight the problem in any way, I was in a state of blissful ignorance.

I took some code from the documentation to interpret the cmdlet output:

$result = Get-TenantPrivateChannelMigrationStatus
$details = $result.Details | ConvertFrom-Json
Write-Host "Total: $($details.totalChannels), Migrated: $($details.migratedChannels), Failed: $($details.failedChannels), Ownerless: $($details.ownerlessChannels)"

Total: 21, Migrated: 16, Failed: 0, Ownerless: 4
if ($details.ownerlessChannelsDetails) { $details.ownerlessChannelsDetails | Format-Table channelThreadId, teamId }

channelThreadId                                  teamId
---------------                                  ------
19:1ea9bea35c214f2dace344f86c956f56@thread.skype 12d57049-89ce-424a-bc31-fa7b3d2699cd
19:2ab7651712104884968497684b0bf23a@thread.skype eba86b74-aef7-4a6b-aa8a-b9769e97716e
19:c781707005e14e83b2c3308cbc929706@thread.skype bc9f83be-f866-465c-9507-5998ba623c4f
19:cfbb92756f2b460685ff785b1a8bc043@thread.skype eba86b74-aef7-4a6b-aa8a-b9769e97716e

Sixteen channels had migrated successfully. Four had no owners, and there’s one other channel noted as a “remaining channel” for which the cmdlet offers no other details.

The solution for the ownerless channels is either to remove the channel (on the basis that it’s not in use) or assign a new owner. I chose to assign new owners and did so a week ago. I imagined that the migration would restart once Teams noticed that the ownerless channels had been dealt with, but this hasn’t happened so far. Even worse, there’s no way an administrator can force the migration process to recommence. It’s a black box after all.

An Update for MC1134737

Then I noticed an update for message center notification MC1134737 posted on 30 April 2026, which says:

“Migration of channels is complete with a few pending channels for which we have shared more information here for admin remediation. Admins must take action within 30 days, by June 5th, 2026, to remediate specific private channel configurations that are currently not eligible for migration. There are two impacted scenarios.

  • The first includes private channels with no users, where the roster is empty and the channel is inaccessible to any tenant user.
  • The second includes private channels that contain only guest users and no in-tenant owners. In both cases, these channels cannot be migrated in their current state.

If no action is taken by June 5th 2026, impacted channels will be soft deleted and remain recoverable for 30 days. After this period, they will be permanently deleted.”

It is awfully easy to miss an updated message center notification, but the message here is clear. Run the Get-TenantPrivateChannelMigrationStatus cmdlet and add owners to the private channels that are highlighted as being ownerless or they will disappear after June 5.

One Last Thing

The Get-TenantPrivateChannelMigrationStatus cmdlet is good at highlighting ownerless channels. However, it doesn’t reveal anything about successfully migrated channels or the one “remaining” private channel that is neither migrated nor ownerless.

To solve that problem, I ran a script from a 2022 article to report the membership of private channels and discovered that the “remaining” channel belonged to an archived team. I amended the script so that it now reports private channels belonging to archived teams. You can download the script from the Office 365 for IT Pros GitHub respository.

To resolve the issue, it’s possible to unarchive the team and add an owner to the private channel. Here’s how to do the job with PowerShell:

# Microsoft 365 Group Id for the team to unarchive
$GroupId = "12d57049-89ce-424a-bc31-fa7b3d2699cd"
Set-TeamArchivedState -GroupId $GroupId -Archived:$false
# Add new member to the team
Add-TeamUser -GroupId $GroupId -User Lotte.Vetler@office365itpros.com
# Add member to the channel
Add-TeamChannelUser -GroupId $GroupId -DisplayName "Sales Talk" -User Lotte.Vetler@office365itpros.com
# Add member as a private channel owner so that the channel has at least one owner
Add-TeamChannelUser -GroupId $GroupId -DisplayName "Sales Talk" -User Lotte.Vetler@office365itpros.com -Role Owner

Black box migrations are fine when everything works as planned. They’re not so good when problems occur. Some administrators are probably in the same blissfully unaware state that I was about the state of migration in their tenant. If your Microsoft 365 tenant uses private channels, it’s time to run the Get-TenantPrivateChannelMigrationStatus cmdlet to check the status of your private channel migration. Even after addressing the issues with ownerless and archived channels, the migration for private channels in my tenant remains stalled. But there’s always hope…


Insight like this doesn’t come easily. You’ve got to know the technology and understand how to look behind the scenes. Benefit from the knowledge and experience of the Office 365 for IT Pros team by subscribing to the best eBook covering Office 365 and the wider Microsoft 365 ecosystem.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.