Table of Contents
Fills in a Gap in Retention Policies
Updated: 8 September 2021
Message Center notification MC263844 (June 22, Microsoft 365 roadmap item 70562) might have puzzled some who hadn’t realized that retention policies to process messages in Teams channels don’t apply to private channels. The good news is that the change to introduce processing for private channels is in preview and should become general available in late July 2021 (MC283589 posted on September 8 announced the general availability, so the feature was about two months late).
Private channels debuted in November 2019 at the Microsoft Ignite conference. Private channels serve a subset of a team’s membership. There can be up to 30 private channels in a team (compared to 200 normal channels), and each private channel includes a dedicated SharePoint team site for document sharing. Only the members of a private channel can access its conversations and documents.
Private Channels and SharePoint
Retention processing for the SharePoint sites used for private channels isn’t a problem because regular retention policies for SharePoint sites can include the private sites. Remember, if a retention policy isn’t org-wide (covers all sites in a tenant), individual sites must be added as a location for the policy and adding a site for a private channel is the same as adding a site for a regular team. In both cases, you add the URI for the site to the policy.
Processing Private Messages
Private channel messages pose a different compliance problem. Unlike a regular channel, private channels don’t have a group mailbox. It’s therefore not possible to store compliance records in the group mailbox as happens for regular channels. The choice the developers came up with is to follow the model used for personal and group chats and store compliance records for private channel messages in the Exchange Online mailbox of every channel member. If hybrid or guest accounts are members of a channel, the compliance records go into the special cloud-only mailbox Microsoft 365 provisions to capture data for guest, hybrid, and federated users. This arrangement ensures that Microsoft 365 can index and search for private channel messages.
Using personal mailboxes means that compliance records for private channels intermingle with compliance records for chats. Retention policies can process Teams chats but have always ignored the compliance records for private channels because organizations might want to apply different retention settings to the two sets of records.
This is now changing with MC263844, and organizations will be able to configure retention policies to process Teams private channel messages (Figure 1). It’s important to note that a retention policy for Teams private channel messages can only process those messages. The policy cannot include any other location, even Teams chats or regular channel messages. You’ll also notice that accounts are the basis for inclusion or inclusion in the policy rather than the teams hosting private channels. Again, this relates to where the compliance records are held plus the fact that not all members of a team (group) necessarily are members of the private channels owned by the team.

Separating Chat from Channel Messages
The point is made above that the Exchange Online mailbox for private channel members intermingles compliance records for private channel messages with those for chats. When a retention policy processes a mailbox, it can search for private channel data by examining the MAPI properties of compliance records. For example, the thread type property for a chat is “chat” while it’s “space” for channel messages. Another item property (shown in Figure 2 as viewed through the MFCMAPI program) is an even clearer identification of private channel messages. The value for this property for chat messages is “MicrosoftTeams.”

The task of the retention policy for Teams private channel messages is therefore to find the relevant compliance records (in all mailboxes of private channel members) and examine each item to see if its retention period has expired. If this is the case, the retention policy removes the item, in turn triggering a synchronization process back to the Teams data store (Azure Cosmos DB) to remove its copy of the message. Eventually, clients refresh their local cache of messages and learn about the deletion and the message disappears from user view.
Surprisingly Delayed but Welcome
It’s surprising that it has taken so long for Microsoft to figure out how to manage retention for private channel messages. The impending arrival of shared channels later this year possibly helped accelerate progress. However, arguing against myself, shared channels are more closely connected to the home team and might store their compliance records in the group mailbox. We shall just have to wait and see.
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.
Thanks for the info! How do we work with these in PowerShell, cant seem to find a parameter in Set-RetentionCompliancePolicy ?
The cmdlet doesn’t appear to support Teams private channel processing yet.
Hello Tony, it is still not in the cmdlet, right?
Sorry, which cmdlet? Cmdlets are available to deal with retention policies for app content (like Set-AppRetentionCompliancePolicy).