Announced in MC274188 (July 30), in late September, Microsoft planned to enable meeting recording auto-expiration for new Teams meeting recordings (TMRs) stored in SharePoint Online and OneDrive for Business (Microsoft 365 roadmap item 84580). The new feature will move the MP4 files used for TMRs to the site recycle bin when their expiration date lapses. For enterprise users, the expiration period is 120 days after the creation of the recording. A reduced period of 30 days applies for academic users with the Office 365 A1 license. Once in the recycle bin, the MP4 files follow the standard SharePoint file deletion cycle. Auto-expiration for TMRs is available for all Office 365 and Microsoft 365 licenses which contain Teams.
Update: Following a series of earlier delays, on January 31, 2022, Microsoft pushed deployment out to late March 2022 to make sure that when they start to delete files, they remove the right files. At the same time, Microsoft increased the default retention period from 60 to 120 days for all tenants that haven’t configured a custom retention period. Eventually all the blocking factors were removed and Microsoft began to roll out the auto-expiration of Teams meeting recordings feature in early April.
Setting a New Expiration Period for TMRs
Microsoft says that 96% of TMRs are not watched again in the 60 days (and 99% after 110 days) following the original meeting, which is why they’ve chosen this to be the default expiration period. Users can change the expiration period for individual TMRs by updating file properties through the file details pane (selecting preset values of 14, 30, or 60 days, a custom date, or Never Expire). Organizations can set a default expiration period for newly created TMRs using the Teams meeting policy assigned to user accounts. For example, to set the default expiration period for recordings of meetings made by people assigned the VIP User Meeting Policy, run the command:
Set-CSTeamsMeetingPolicy -Identity "VIP User Meeting Policy" -NewMeetingRecordingExpirationDays 120
Originally, Microsoft’s documentation described a maximum expiration period is 99,999 days (273 years). Subsequently, problems emerged when tenants set such a high value and the safe limit was found to be 9,999 days, which should be more than enough to keep any normal recording (remember, you can apply a retention label to keep recordings for longer). The minimum is 1 day, and you can set the value (in PowerShell) to -1 to set meeting recordings to never expire. The expiration period for A1 users can only be reduced from the default 30 days.
You can also update the auto-expiration period for meeting policies through the Teams admin center (November 2021 update). Interestingly, the Teams admin center allows a range of between 1 and 99999 days! I’ve asked Microsoft to clarify whether the supported period is 9,999 or 99,999 days. If you want to go higher than 9,999 days, maybe the best approach is to set expiration to never expire.
Figure 1: Defining a retention period for Teams meeting recordings
Background processes run to evaluate TMRs in ODSP to check their expiration date. If the expiration process detects an expired file, the process moves the file into the recycle bin and clears the expiration date field. Recording owners receive email notifications when OneDrive moves expired recordings into the recycle bin (Figure 2). If necessary, they can rescue important recordings from the recycle bin for up to 90 days after deletion. Once moved back from the recycle bin, the recording has no retention date set and will therefore not be evaluated for deletion again.
Figure 2: Email notification that a Teams meeting recording has expired and been deleted
To help users understand when a recording approaches expiration will see visual indications in:
Beside the link to the meeting recording in the meeting chat. Anyone with view access to the recording sees the expiration notice.
Two weeks before expiration, a red icon appears beside the MP4 files for TMRs in the Recordings folder of OneDrive for Business accounts (personal meetings) or SharePoint Online sites (channel meetings).
Auto-expiration applies only to new TMRs. Existing TMRs stored in either ODSP or Stream do not have an expiration period. Auto-expiration is only available for TMRs and cannot be used with other file types held in ODSP. Expiration dates are kept if users move recording files to a different site (it’s the same file). They are not when users copy recording files (it’s a different file). Downloading and uploading a recording creates a new file with no expiration date. If you want to be sure that the expiration process does not remove a Teams meeting recording, apply a retention label to the file.
Auto-expiration is a good housekeeping rather than a compliance feature. It will help organizations cope with a swelling collection of TMRs in user OneDrive for Business accounts and SharePoint Online sites but will do nothing to help with data governance. Two interesting developments due to arrive soon are automatic transcription for TMRs and indexing of transcripts. From a compliance perspective, this means that it will be possible to search for words spoken during a meeting and be able to put those words in the context they were spoken. Obviously, this is a big advance in compliance capabilities.
To take advantage of spoken word retrieval and make sure that transcripts and videos are available to eDiscovery investigators, you obviously need to retain TMRs. For this reason, a retention label on a TMR prevents the auto-expiration process removing recording files until the retention period assigned in the label lapses. Also, a retention label mandating deletion after a period takes precedence over auto-expiration, meaning that if the retention label has a shorter retention period than the auto-expiration date, that’s when SharePoint will remove the file.
Precedence applies for retention labels assigned manually or via an auto-label policy (available to tenants with Office 365 E5). Organizations which leverage retention labels to preserve the recordings of important Teams meetings might not see much change after Microsoft introduces the new auto-expiration feature.
Make sure that you’re not surprised about changes which appear inside Office 365 applications by subscribing to the Office 365 for IT Pros eBook. Our monthly updates make sure that our subscribers stay informed.
25 Replies to “Microsoft Introduces Auto-Expiration Policy for Teams Meeting Recordings”
MC274188 says…
You can use PowerShell to modify “MeetingRecordingExpirationDays.” This can be done at any time, as the setting is present in PowerShell today even though the feature is not yet enabled. An example command is: “Set-CsTeamsMeetingPolicy -Identity Global -MeetingRecordingExpirationDays 50”
“The auto-expiration feature discussed in this article is not yet launched. Please refer to the roadmap (Feature ID: 84580) for more information on its delivery date.
We are providing information about how this feature will work in the FUTURE, so that you are able to plan for this change and modify the Teams policy settings in advance.”
Acknowledged; but usually qualify such changes with “rolling out now”, so we know to try, expect it might not work, and to try again a while later. But nothing says that; some says “yes, do it now” while other elements say “this is for info only;”.
Loading...
It’s frustrating, but that’s the way Office 365 works. You can configure your tenants to use targeted release to have a better chance of picking up features earlier. That, and maybe using Teams in preview mode, will allow you to see features before the general public.
Loading...
In case you are wondering, the doc is being updated to reflect that the cmdlet will work starting September 1st
I’m looking at my MP4 file in one drive and there is no indication in the file properties that it has an expiration date. Shouldn’t there be?
Loading...
The expiration date setting might not have reached your tenant yet. It typically takes four-six weeks to deploy a new feature to all tenants. When it arrives, only new recordings will receive expiration dates.
Loading...
Is the expiration date the same on channel meeting recordings as they are for personal meeting recordings? Do they both fall under the same policy? or are there different policy settings in powershell we can set for each type of recording?
Loading...
Expiration dates are set by the one policy. There isn’t a separate policy for channel recordings.
Loading...
When it’s rolled out, will all old recordings automatically go the recycle bin, or will we get 60 days grae to sort ourselves out (I can’t currently see an option to proactively extend dates on important recordings).
I noticed that if a meeting is recorded in an actual team, the MP4 is uploaded to Sharepoint, but if an ad hoc (peer to peer) meeting is recorded, that MP4 uploaded to onedrive. So these both default to a 60 day retention? Can you set a separate retention for the recorded files from a team vs a peer to peer meeting? Or are they all subject to the same retention settings?
Ad hoc meetings are personal meetings and are therefore uploaded to the OneDrive of the person who starts the meeting. A single policy governs the expiration of meetings. If you want to differentiate, you’d need to use an auto-label policy to apply retention labels to specific locations.
Looks like Microsoft is making some changes on the back end to fix the problem with people setting the value to an invalid number (like 99,999 days). I’ll ping the developers to ask what’s going on.
Message Center post MC274188 was updated yesterday (8/31/2021) to indicate the feature isn’t available yet and that they’ll update the post again when it is possible to modify the default value. The rollout timeframe has also been adjusted.
They’re rolling out the ability to set the expiration timeframe before the feature goes live to give customers time to adjust. Watch your Message Center for when the PowerShell cmdlet is available to set it proactively. I’m not sure it is the same parameter as originally advertised/documented, but it hit our main tenant sometime in the last week or two.
{"id":null,"mode":"button","open_style":"in_modal","currency_code":"EUR","currency_symbol":"\u20ac","currency_type":"decimal","blank_flag_url":"https:\/\/office365itpros.com\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/blank.gif","flag_sprite_url":"https:\/\/office365itpros.com\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/flags.png","default_amount":100,"top_media_type":"featured_image","featured_image_url":"https:\/\/office365itpros.com\/wp-content\/uploads\/2022\/11\/cover-141x200.jpg","featured_embed":"","header_media":null,"file_download_attachment_data":null,"recurring_options_enabled":true,"recurring_options":{"never":{"selected":true,"after_output":"One time only"},"weekly":{"selected":false,"after_output":"Every week"},"monthly":{"selected":false,"after_output":"Every month"},"yearly":{"selected":false,"after_output":"Every year"}},"strings":{"current_user_email":"","current_user_name":"","link_text":"Virtual Tip Jar","complete_payment_button_error_text":"Check info and try again","payment_verb":"Pay","payment_request_label":"Office 365 for IT Pros","form_has_an_error":"Please check and fix the errors above","general_server_error":"Something isn't working right at the moment. Please try again.","form_title":"Office 365 for IT Pros","form_subtitle":null,"currency_search_text":"Country or Currency here","other_payment_option":"Other payment option","manage_payments_button_text":"Manage your payments","thank_you_message":"Thank you for supporting the work of Office 365 for IT Pros!","payment_confirmation_title":"Office 365 for IT Pros","receipt_title":"Your Receipt","print_receipt":"Print Receipt","email_receipt":"Email Receipt","email_receipt_sending":"Sending receipt...","email_receipt_success":"Email receipt successfully sent","email_receipt_failed":"Email receipt failed to send. Please try again.","receipt_payee":"Paid to","receipt_statement_descriptor":"This will show up on your statement as","receipt_date":"Date","receipt_transaction_id":"Transaction ID","receipt_transaction_amount":"Amount","refund_payer":"Refund from","login":"Log in to manage your payments","manage_payments":"Manage Payments","transactions_title":"Your Transactions","transaction_title":"Transaction Receipt","transaction_period":"Plan Period","arrangements_title":"Your Plans","arrangement_title":"Manage Plan","arrangement_details":"Plan Details","arrangement_id_title":"Plan ID","arrangement_payment_method_title":"Payment Method","arrangement_amount_title":"Plan Amount","arrangement_renewal_title":"Next renewal date","arrangement_action_cancel":"Cancel Plan","arrangement_action_cant_cancel":"Cancelling is currently not available.","arrangement_action_cancel_double":"Are you sure you'd like to cancel?","arrangement_cancelling":"Cancelling Plan...","arrangement_cancelled":"Plan Cancelled","arrangement_failed_to_cancel":"Failed to cancel plan","back_to_plans":"\u2190 Back to Plans","update_payment_method_verb":"Update","sca_auth_description":"Your have a pending renewal payment which requires authorization.","sca_auth_verb":"Authorize renewal payment","sca_authing_verb":"Authorizing payment","sca_authed_verb":"Payment successfully authorized!","sca_auth_failed":"Unable to authorize! Please try again.","login_button_text":"Log in","login_form_has_an_error":"Please check and fix the errors above","uppercase_search":"Search","lowercase_search":"search","uppercase_page":"Page","lowercase_page":"page","uppercase_items":"Items","lowercase_items":"items","uppercase_per":"Per","lowercase_per":"per","uppercase_of":"Of","lowercase_of":"of","back":"Back to plans","zip_code_placeholder":"Zip\/Postal Code","download_file_button_text":"Download File","input_field_instructions":{"tip_amount":{"placeholder_text":"How much would you like to tip?","initial":{"instruction_type":"normal","instruction_message":"How much would you like to tip? Choose any currency."},"empty":{"instruction_type":"error","instruction_message":"How much would you like to tip? Choose any currency."},"invalid_curency":{"instruction_type":"error","instruction_message":"Please choose a valid currency."}},"recurring":{"placeholder_text":"Recurring","initial":{"instruction_type":"normal","instruction_message":"How often would you like to give this?"},"success":{"instruction_type":"success","instruction_message":"How often would you like to give this?"},"empty":{"instruction_type":"error","instruction_message":"How often would you like to give this?"}},"name":{"placeholder_text":"Name on Credit Card","initial":{"instruction_type":"normal","instruction_message":"Enter the name on your card."},"success":{"instruction_type":"success","instruction_message":"Enter the name on your card."},"empty":{"instruction_type":"error","instruction_message":"Please enter the name on your card."}},"privacy_policy":{"terms_title":"Terms and conditions","terms_body":null,"terms_show_text":"View Terms","terms_hide_text":"Hide Terms","initial":{"instruction_type":"normal","instruction_message":"I agree to the terms."},"unchecked":{"instruction_type":"error","instruction_message":"Please agree to the terms."},"checked":{"instruction_type":"success","instruction_message":"I agree to the terms."}},"email":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email address"},"success":{"instruction_type":"success","instruction_message":"Enter your email address"},"blank":{"instruction_type":"error","instruction_message":"Enter your email address"},"not_an_email_address":{"instruction_type":"error","instruction_message":"Make sure you have entered a valid email address"}},"note_with_tip":{"placeholder_text":"Your note here...","initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"empty":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"not_empty_initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"saving":{"instruction_type":"normal","instruction_message":"Saving note..."},"success":{"instruction_type":"success","instruction_message":"Note successfully saved!"},"error":{"instruction_type":"error","instruction_message":"Unable to save note note at this time. Please try again."}},"email_for_login_code":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email to log in."},"success":{"instruction_type":"success","instruction_message":"Enter your email to log in."},"blank":{"instruction_type":"error","instruction_message":"Enter your email to log in."},"empty":{"instruction_type":"error","instruction_message":"Enter your email to log in."}},"login_code":{"initial":{"instruction_type":"normal","instruction_message":"Check your email and enter the login code."},"success":{"instruction_type":"success","instruction_message":"Check your email and enter the login code."},"blank":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."},"empty":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."}},"stripe_all_in_one":{"initial":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"empty":{"instruction_type":"error","instruction_message":"Enter your credit card details here."},"success":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"invalid_number":{"instruction_type":"error","instruction_message":"The card number is not a valid credit card number."},"invalid_expiry_month":{"instruction_type":"error","instruction_message":"The card's expiration month is invalid."},"invalid_expiry_year":{"instruction_type":"error","instruction_message":"The card's expiration year is invalid."},"invalid_cvc":{"instruction_type":"error","instruction_message":"The card's security code is invalid."},"incorrect_number":{"instruction_type":"error","instruction_message":"The card number is incorrect."},"incomplete_number":{"instruction_type":"error","instruction_message":"The card number is incomplete."},"incomplete_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incomplete."},"incomplete_expiry":{"instruction_type":"error","instruction_message":"The card's expiration date is incomplete."},"incomplete_zip":{"instruction_type":"error","instruction_message":"The card's zip code is incomplete."},"expired_card":{"instruction_type":"error","instruction_message":"The card has expired."},"incorrect_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incorrect."},"incorrect_zip":{"instruction_type":"error","instruction_message":"The card's zip code failed validation."},"invalid_expiry_year_past":{"instruction_type":"error","instruction_message":"The card's expiration year is in the past"},"card_declined":{"instruction_type":"error","instruction_message":"The card was declined."},"missing":{"instruction_type":"error","instruction_message":"There is no card on a customer that is being charged."},"processing_error":{"instruction_type":"error","instruction_message":"An error occurred while processing the card."},"invalid_request_error":{"instruction_type":"error","instruction_message":"Unable to process this payment, please try again or use alternative method."},"invalid_sofort_country":{"instruction_type":"error","instruction_message":"The billing country is not accepted by SOFORT. Please try another country."}}}},"fetched_oembed_html":false}
MC274188 says…
You can use PowerShell to modify “MeetingRecordingExpirationDays.” This can be done at any time, as the setting is present in PowerShell today even though the feature is not yet enabled. An example command is: “Set-CsTeamsMeetingPolicy -Identity Global -MeetingRecordingExpirationDays 50”
…and the parameter is documented (https://docs.microsoft.com/en-us/powershell/module/skype/set-csteamsmeetingpolicy?view=skype-ps),
…but Microsoft say (https://docs.microsoft.com/en-us/microsoftteams/cloud-recording?WT.mc_id=365AdminCSH_SupportCentral ; retrieved 2021-08-05)
“The auto-expiration feature discussed in this article is not yet launched. Please refer to the roadmap (Feature ID: 84580) for more information on its delivery date.
We are providing information about how this feature will work in the FUTURE, so that you are able to plan for this change and modify the Teams policy settings in advance.”
When I – and others (https://docs.microsoft.com/en-us/answers/questions/456349/recording-expiry-time-days.html) try to set it on 5 August 2021, it doesn’t work.
Patience. These things take time to roll out across Office 365…
Acknowledged; but usually qualify such changes with “rolling out now”, so we know to try, expect it might not work, and to try again a while later. But nothing says that; some says “yes, do it now” while other elements say “this is for info only;”.
It’s frustrating, but that’s the way Office 365 works. You can configure your tenants to use targeted release to have a better chance of picking up features earlier. That, and maybe using Teams in preview mode, will allow you to see features before the general public.
In case you are wondering, the doc is being updated to reflect that the cmdlet will work starting September 1st
Anyone figured out if moving a recording from the default folder will remove the “tag” for the delete process to kick in?
The expiration date is a file property, so it stays with the item when moved.
I’m looking at my MP4 file in one drive and there is no indication in the file properties that it has an expiration date. Shouldn’t there be?
The expiration date setting might not have reached your tenant yet. It typically takes four-six weeks to deploy a new feature to all tenants. When it arrives, only new recordings will receive expiration dates.
Is the expiration date the same on channel meeting recordings as they are for personal meeting recordings? Do they both fall under the same policy? or are there different policy settings in powershell we can set for each type of recording?
Expiration dates are set by the one policy. There isn’t a separate policy for channel recordings.
When it’s rolled out, will all old recordings automatically go the recycle bin, or will we get 60 days grae to sort ourselves out (I can’t currently see an option to proactively extend dates on important recordings).
Old recordings won’t get expiration dates.
I noticed that if a meeting is recorded in an actual team, the MP4 is uploaded to Sharepoint, but if an ad hoc (peer to peer) meeting is recorded, that MP4 uploaded to onedrive. So these both default to a 60 day retention? Can you set a separate retention for the recorded files from a team vs a peer to peer meeting? Or are they all subject to the same retention settings?
Ad hoc meetings are personal meetings and are therefore uploaded to the OneDrive of the person who starts the meeting. A single policy governs the expiration of meetings. If you want to differentiate, you’d need to use an auto-label policy to apply retention labels to specific locations.
I am trying to change settings & getting below error:
Set-CsTeamsMeetingPolicy: You are not permitted to invoke Set-CsTeamsMeetingPolicy with the following parameters: Meeting Recording Expiration Days
Looks like Microsoft is making some changes on the back end to fix the problem with people setting the value to an invalid number (like 99,999 days). I’ll ping the developers to ask what’s going on.
Message Center post MC274188 was updated yesterday (8/31/2021) to indicate the feature isn’t available yet and that they’ll update the post again when it is possible to modify the default value. The rollout timeframe has also been adjusted.
They’ve acknowledged the issue with the cmdlet to me. It’s a work “in progress.”
Here we are in November of 2021 and this feature still has not launched.
It’s coming (so is Christmas). I see evidence in some beta builds. That’s all I can say.
They’re rolling out the ability to set the expiration timeframe before the feature goes live to give customers time to adjust. Watch your Message Center for when the PowerShell cmdlet is available to set it proactively. I’m not sure it is the same parameter as originally advertised/documented, but it hit our main tenant sometime in the last week or two.