{"id":70556,"date":"2025-04-02T13:02:11","date_gmt":"2025-04-02T21:02:11","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/devops\/?p=70556"},"modified":"2026-02-19T23:19:02","modified_gmt":"2026-02-20T07:19:02","slug":"tfvc-policies-storage-updates","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/devops\/tfvc-policies-storage-updates\/","title":{"rendered":"TFVC Policies Storage Updates"},"content":{"rendered":"<table style=\"width: 100%; border-collapse: collapse; background: #2e7d32; color: #fff; font-family: Arial, sans-serif;\">\n<tr>\n<td style=\"padding: 16px;\">\n<div style=\"font-size: 18px; font-weight: 700; margin-bottom: 10px;\">\n        \ud83d\udce3 Updated on February 3 2026\n      <\/div>\n<div style=\"font-size: 14px; line-height: 1.4;\">\n        Phase II is complete. Phase III is currently being rolled out. If you need to remove old policies, please see <a href=\"https:\/\/devblogs.microsoft.com\/devops\/tfvc-remove-existing-obsolete-policies-asap\" target=\"_blank\">removal guide<\/a>.\n      <\/div>\n<\/td>\n<\/tr>\n<\/table>\n<h2>TFVC Check-In Policies<\/h2>\n<p>TFVC projects can have check-in policies such as Build (Require last build was successful), Work Item (Require associated work item), Changeset comments policy (Require users to add comment to their check-in), etc. We are changing the way we store these policies on the server. This change will slightly affect TFVC users since they would need to initiate migration process from their side.<\/p>\n<h2>Phase I \u2013 User opt-in (Complete)<\/h2>\n<p>This is a phase in progress. We provided means for users to start their migration process. Migration from obsolete policies to active ones should be done by the project administrator.<\/p>\n<h4>Using Visual Studio<\/h4>\n<p><strong>\u26a0\ufe0f Warning<\/strong>: <em>Please ensure you updated Visual Studio to the latest version before proceeding (VS 2022, VS 2019 and VS 2017 with minimal versions <code>17.14 Preview 3<\/code>, <code>17.13.6<\/code>, <code>17.12.7<\/code>, <code>17.10.13<\/code>, <code>17.8.20<\/code>, <code>16.11.46<\/code>, <code>15.9.72<\/code> are supporting the new policies).<\/em><\/p>\n<p>To create new policies using Visual Studio administrator should open Settings -> Team Project -> Source Control -> Check-in Policy. Next they should add new policy (without \u201cObsolete\u201d mark) with the same parameters as old one:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2025\/03\/Picture1.png\" alt=\"TFVC Check-in Policies Window\" width=\"624\" height=\"397\" class=\"alignnone size-full wp-image-70559\" srcset=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2025\/03\/Picture1.png 624w, https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2025\/03\/Picture1-300x191.png 300w\" sizes=\"(max-width: 624px) 100vw, 624px\" \/><\/p>\n<h4>Custom Policies<\/h4>\n<p>If you are using custom implementation of <code>Microsoft.TeamFoundationServer.ExtendedClient<\/code> to communicate with server, please follow the <a href=\"https:\/\/aka.ms\/tfvc-policy-migration\" target=\"_blank\">migration guide<\/a>.<\/p>\n<p>\ud83d\udcdd <em>Note: Please, be aware that extensions for older versions of Visual Studio (<code>16.xx.xx<\/code>, <code>15.xx.xx<\/code>) will require you to manually implement json serialization setting, more details in migration guide.<\/em><\/p>\n<h2>Phase II \u2013 Disable saving (Done)<\/h2>\n<p>The next phase in adapting new policies is disabling <strong>creation<\/strong> of obsolete policies. We will proceed with this phase in December of 2025.<\/p>\n<p>When we proceed with Phase II, service (including the latest versions of supported Azure DevOps Servers, but Server would not be updated earlier then Feb 2026) will return an exception on any attempt to save obsolete policy. This exception will ask you to create policy in the new format.<\/p>\n<p>Reading of obsolete policies will still be available and therefore they will still be <strong>working<\/strong>. But to avoid any future interruption in the workflow, policy migration is strongly recommended.<\/p>\n<h2>Phase III \u2013 Full disabling (~ January-February 2026)<\/h2>\n<p>This is the last phase of Azure DevOps moving to the new format. Planned time for this phase to start February 2026. During it we will return exception on any attempt to <strong>read<\/strong> obsolete policies from service (including Azure DevOps Servers, but Server will not be updated with Phase III earlier then March 2026). Exception will notify user that operation not possible due to usage of obsolete policies.<\/p>\n<p>At this phase only new policies will be available and working. No migration will be possible and not migrated policies will be lost. Customers will need to re-create them from scratch. If you need to remove old policies, please see <a href=\"https:\/\/devblogs.microsoft.com\/devops\/tfvc-remove-existing-obsolete-policies-asap\" target=\"_blank\">removal guide<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ud83d\udce3 Updated on February 3 2026 Phase II is complete. Phase III is currently being rolled out. If you need to remove old policies, please see removal guide. TFVC Check-In Policies TFVC projects can have check-in policies such as Build (Require last build was successful), Work Item (Require associated work item), Changeset comments policy (Require [&hellip;]<\/p>\n","protected":false},"author":180737,"featured_media":70572,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[224,1,225],"tags":[],"class_list":["post-70556","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-azure","category-devops","category-git"],"acf":[],"blog_post_summary":"<p>\ud83d\udce3 Updated on February 3 2026 Phase II is complete. Phase III is currently being rolled out. If you need to remove old policies, please see removal guide. TFVC Check-In Policies TFVC projects can have check-in policies such as Build (Require last build was successful), Work Item (Require associated work item), Changeset comments policy (Require [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/posts\/70556","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/users\/180737"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/comments?post=70556"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/posts\/70556\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/media\/70572"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/media?parent=70556"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/categories?post=70556"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/tags?post=70556"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}