On May 17, Microsoft published message center notification MC256835 to advise tenants about the introduction for what they call a “PST version retention policy.” This has nothing to do with retention labels or retention policies. Instead, it’s about controlling PST storage in SharePoint Online by limiting the number of versions kept for PST files stored in SharePoint Online and OneDrive for Business document libraries.
Versioning in SharePoint Online
Versioning is a SharePoint feature. In a nutshell, as users make changes to files in document libraries, they create versions of the files. In some cases, such as when editing Office documents using Autosave, a single edit session might generate twenty or thirty versions, depending on the number of changes made. The number of versions kept in a document library is defined in library settings (Figure 1) in a range of 300 to 50,000.
Figure 1: Defining the Versioning setting for a SharePoint Online document library
SharePoint keeps multiple versions of files to ensure that the user can go back to a previous version. To do this, select a document and then Version history. You can then select a version to restore (Figure 2).
Figure 2: Version history for a document
Both SharePoint Online and OneDrive for Business also support options to restore a library to a point in time over the previous 30 days. Without versions, it would not be possible to do this.
Why PSTs End up in SharePoint and OneDrive
Versioning is good, so what’s the problem with PSTs? Before addressing that question, we should ask about why PST storage in SharePoint Online or OneDrive for Business comes about. A PST (Personal Storage Table) is for email storage. It is a container to allow users to store messages they wish to keep. People might have moved PSTs from network file shares into SharePoint, but it’s a bad idea to use PSTs in SharePoint.
The PST file format is not intended for concurrent shared access. These are personal files. If a problem happens with a PST file stored in SharePoint, it might lead to data loss.
Even though they are in SharePoint, the messages stored in PSTs are inaccessible for eDiscovery.
Over the years, Microsoft consistently advised against the use of shared PSTs on network file shares because of the potential for corruption.
You might think the problem of concurrent access to a shared file is addressed by using the OneDrive sync client to have a local copy of PSTs synchronized with the master copy in SharePoint. But as pointed out in this post by a Microsoft support engineer, the way Outlook locks PST files for exclusive access creates many problems for the sync client (Figure 3). Basically, the sync client is frustrated by the lock taken out by Outlook and can’t process the PST.
Figure 3: The OneDrive sync client has a problem with a PST
The problem now being addressed by Microsoft is that holding multiple PST versions can consume a huge amount of SharePoint storage quota. Remember, a PST is a container rather than an individual file, and if it’s in active use, Microsoft says this generates “multiple versions which leads to storage being quickly consumed.”
Microsoft’s solution is to retain no more than 30 days’ worth of PST versions. This is enough to ensure that the Restore library feature works, even when PSTs are in a library. While the best answer is not to allow users to store PSTs in SharePoint Online or OneDrive for Business, restricting versions for PSTs is an acceptable method to restrain storage demand. Organizations can block users from synchronizing PSTs by including the file type in the blocked files list defined in the Settings section of the SharePoint Online admin center (Figure 4). Given the impact this could have on users, it’s a good idea to communicate about the block before its implementation.
Figure 4: Configuring file types block for OneDrive synchronization
Microsoft Implements the New Policy
Starting June 28, organizations can use the Set-SPOTenant cmdlet from the SharePoint Online PowerShell module to control the new policy: By default, the policy will be on, meaning the permanent deletion of PST versions once they reach 30 days old. If you don’t want to restrict PST versions, you can opt-out from the policy by running:
The new switch for the Set-SPOTenant cmdlet is available in the 16.0.21411.12000 release of the SharePoint Online management shell (released on July 12). You can download the module from the PowerShell Gallery.
The opt-out command must be run by August 13, so organizations have roughly six weeks to decide to opt-out. The policy becomes effective on August 16 and running the command to opt-out afterwards will have no effect. The big caveat is that the opt-out applies only to existing libraries. Any new library created after August 13 will apply the 30-day retention for PST versions.
The Badness of PSTs
I’ve been trying to persuade organizations to stop using PSTs for years. They’re a 25-year-old answer to the problem of small server mailboxes which existed then and doesn’t now. PSTs are insecure, compromise the ability of organizations to search for information and apply compliance policies, and prone to failure. There is nothing to recommend their continued use and even less to think that it’s a good idea to store PSTs in SharePoint Online and OneDrive for Business. If you’re still unconvinced, listen to this on-demand webinar Why PSTs are Such a Bad Idea in the Cloud, where I try my very best to explain why.
Get straightforward and honest opinion about how to manage Office 365 tenants by subscribing to the Office 365 for IT Pros eBook. We think about managing tenants so you can learn from our experience and insight.
a recent connect with microsoft has got me confused as the engineer mentioned that it would affect all file extensions and not just .pst files, I’m sure it would not affect any other file extensions could you please confirm if it only affects .pst files or all file extensions.
resposne from Microsoft engineer
“If you choose not to opt in, everything will work the same as it does today. If you do opt in, then yes it will only retain 30 version for 30 days. Not only .PST, all data will be impacted, including existing data. This does include any file extensions.”
The text in MC256835 makes it pretty clear that PST files are the target:
Starting August 16 2021, we’ll be introducing new retention policies for Outlook Data Files (PST File type) Versions to prevent them from consuming storage capacity for OneDrive & SharePoint Online.
That’s what’s in the post. Do you see something different? At least, the wrong value was there in a draft but it was updated and seems OK here. Maybe some sort of CDN glitch?
I tried and I’m getting this error: Get-SPOTenant : A parameter cannot be found that matches parameter name ‘DisableOutlookPSTVersionTrimming’. Also after updating the management shell to 16.0.21411.12000. Has anyone got a solution for this?
Get-SPOTenant doesn’t return any value for DisableOutlookPSTVersionTrimming. You run the command with Set-SPOTenant. I just did this and the command worked perfectly.
Loading...
Thanks for your reply, Tony. Of course I meant ‘Set-SPOTenant’. I restarted Powershell after updating the management shell to 16.0.21411.12000. It works fine now. Thanks!
{"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}
a recent connect with microsoft has got me confused as the engineer mentioned that it would affect all file extensions and not just .pst files, I’m sure it would not affect any other file extensions could you please confirm if it only affects .pst files or all file extensions.
resposne from Microsoft engineer
“If you choose not to opt in, everything will work the same as it does today. If you do opt in, then yes it will only retain 30 version for 30 days. Not only .PST, all data will be impacted, including existing data. This does include any file extensions.”
The text in MC256835 makes it pretty clear that PST files are the target:
Starting August 16 2021, we’ll be introducing new retention policies for Outlook Data Files (PST File type) Versions to prevent them from consuming storage capacity for OneDrive & SharePoint Online.
Acording to https://m365log.com/onedrive/adjusting-version-retention-for-outlook-data-files-pst-file-type-2/ I think it should be ‘Set-SPOTenant -DisableOutlookPSTVersionTrimming $True’ ?
That’s what’s in the post. Do you see something different? At least, the wrong value was there in a draft but it was updated and seems OK here. Maybe some sort of CDN glitch?
Has anyone been able to execute that cmdlet at this time? I tried but still not available for execution
I tried and I’m getting this error: Get-SPOTenant : A parameter cannot be found that matches parameter name ‘DisableOutlookPSTVersionTrimming’. Also after updating the management shell to 16.0.21411.12000. Has anyone got a solution for this?
Get-SPOTenant doesn’t return any value for DisableOutlookPSTVersionTrimming. You run the command with Set-SPOTenant. I just did this and the command worked perfectly.
Thanks for your reply, Tony. Of course I meant ‘Set-SPOTenant’. I restarted Powershell after updating the management shell to 16.0.21411.12000. It works fine now. Thanks!