{"id":436,"date":"2021-03-10T09:13:49","date_gmt":"2021-03-10T09:13:49","guid":{"rendered":"http:\/\/yer.ac\/blog\/?p=436"},"modified":"2021-03-11T13:30:34","modified_gmt":"2021-03-11T13:30:34","slug":"moving-local-workspaces-between-users-vs2019-tfs-self-hosted-azure-devops","status":"publish","type":"post","link":"https:\/\/yer.ac\/blog\/2021\/03\/10\/moving-local-workspaces-between-users-vs2019-tfs-self-hosted-azure-devops\/","title":{"rendered":"Moving local workspaces between users VS2019\/TFS [Self Hosted\/ Azure Devops]"},"content":{"rendered":"\n<p>Whilst I use GIT for most my source control these days, I still have some projects in TFSVC. On a recent switch of Visual Studio accounts I temporarily lost access to my mapped workspaces as these are linked to the VS logged in user, rather than to the machine. This post will show migrating a workspace to another user. <\/p>\n\n\n\n<p>There are 3 scenarios covered here:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Accessing a remote workspace for another user including any pending changes<\/li><li>Migrating a workspace with no pending changes<\/li><li>Migrating a workspace with pending changes <\/li><\/ul>\n\n\n\n<p>Note that depending on your setup and situation, you may need to access the workspace remotely first (by making it public), shelve any changes, and then migrate the workspace.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">The low effort approach instead:<\/h4>\n\n\n\n<p>If you don&#8217;t have many mappings, and have access to your old workspace still. Simply shelve any changes, map the new workspace and then unshelve the old users changes to your new workspace &#8211; all in VS. No need to read on.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Prerequisites <\/h2>\n\n\n\n<p>We are <strong>logged into VS2019 with the new user<\/strong> that we wish the workspaces to belong to. <\/p>\n\n\n\n<p>I am assuming that the <strong>workspaces exist on the current machine<\/strong>. If not you will need to use the <code>tf<\/code> command for setting the computer name to your current machine first. <\/p>\n\n\n\n<p>This will be using the <strong>VS Developer Command Prompt<\/strong>. You can launch this from Tools- > Command Prompt in VS, or be fancy and use Windows Terminal to launch this, as per the guide in <a data-type=\"post\" data-id=\"432\" href=\"https:\/\/yer.ac\/blog\/2021\/03\/09\/adding-vs-developer-command-prompt-to-windows-terminal-vs-2019\/\">Adding VS Developer Command Prompt To Windows Terminal (VS 2019)<\/a>.  (The latter is totally optional)<\/p>\n\n\n\n<p>You will (Or we did) need to <strong>run these commands on the users machine<\/strong>, as although the remote update call succeeded it didn&#8217;t actually appear to have changed the workspace. YMMV.<\/p>\n\n\n\n<p>YMMV, but we found with some users, having the same workspace name on both sides caused issues. If you have a workspace (Which are usually named automatically) in your new user, you may want to rename it first.<\/p>\n\n\n\n<p>You will also <strong>need permission to administer workspaces<\/strong>. In Azure DevOps this is at organization level under repos, as below. <span class=\"has-inline-color has-vivid-red-color\">Note that this is a global permission so ensure any commands  are scoped to a particular user or workspace as there is no revert.<\/span><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"710\" height=\"161\" data-attachment-id=\"439\" data-permalink=\"https:\/\/yer.ac\/blog\/2021\/03\/10\/moving-local-workspaces-between-users-vs2019-tfs-self-hosted-azure-devops\/image-4-6\/\" data-orig-file=\"https:\/\/i0.wp.com\/yer.ac\/blog\/wp-content\/uploads\/2021\/03\/image-4.png?fit=710%2C161&amp;ssl=1\" data-orig-size=\"710,161\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image-4\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/yer.ac\/blog\/wp-content\/uploads\/2021\/03\/image-4.png?fit=700%2C159&amp;ssl=1\" src=\"https:\/\/i1.wp.com\/yer.ac\/blog\/wp-content\/uploads\/2021\/03\/image-4.png?fit=700%2C159&amp;ssl=1\" alt=\"\" class=\"wp-image-439\" srcset=\"https:\/\/i0.wp.com\/yer.ac\/blog\/wp-content\/uploads\/2021\/03\/image-4.png?w=710&amp;ssl=1 710w, https:\/\/i0.wp.com\/yer.ac\/blog\/wp-content\/uploads\/2021\/03\/image-4.png?resize=300%2C68&amp;ssl=1 300w, https:\/\/i0.wp.com\/yer.ac\/blog\/wp-content\/uploads\/2021\/03\/image-4.png?resize=700%2C159&amp;ssl=1 700w\" sizes=\"auto, (max-width: 710px) 100vw, 710px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Accessing your old workspace (Pending changes intact)<\/h2>\n\n\n\n<p>If you don&#8217;t need to migrate, but simply need access you can do this by making the workspace public with the command <\/p>\n\n\n\n<p><code>tf workspace \/collection:https:\/\/domain.com \"WorkspaceName;UserName\" \/permission:Public<\/code><\/p>\n\n\n\n<p>This will display the VS popup for editing a workspace. From what I can tell this has to be done on the machine that contains the mappings(?). Press OK. If OK is greyed out, you do not have appropriate permissions.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"577\" height=\"246\" data-attachment-id=\"440\" data-permalink=\"https:\/\/yer.ac\/blog\/2021\/03\/10\/moving-local-workspaces-between-users-vs2019-tfs-self-hosted-azure-devops\/image-5-5\/\" data-orig-file=\"https:\/\/i0.wp.com\/yer.ac\/blog\/wp-content\/uploads\/2021\/03\/image-5.png?fit=577%2C246&amp;ssl=1\" data-orig-size=\"577,246\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image-5\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/yer.ac\/blog\/wp-content\/uploads\/2021\/03\/image-5.png?fit=577%2C246&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/yer.ac\/blog\/wp-content\/uploads\/2021\/03\/image-5.png?resize=577%2C246&#038;ssl=1\" alt=\"\" class=\"wp-image-440\" srcset=\"https:\/\/i0.wp.com\/yer.ac\/blog\/wp-content\/uploads\/2021\/03\/image-5.png?w=577&amp;ssl=1 577w, https:\/\/i0.wp.com\/yer.ac\/blog\/wp-content\/uploads\/2021\/03\/image-5.png?resize=300%2C128&amp;ssl=1 300w\" sizes=\"auto, (max-width: 577px) 100vw, 577px\" \/><\/figure>\n\n\n\n<p> You may need to restart VS, but should now see an accessible remote workspace which you can work against.<\/p>\n\n\n\n<p>If you want to convert this to a local workspace you will need to shelve any changes, and follow the instructions below.<\/p>\n\n\n\n<p>See <strong>Common Issues <\/strong>below if you have any errors.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Migrating workspaces<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Locating workspaces<\/h4>\n\n\n\n<p>Launching the VS Developer Command Prompt and executing the command <strong>tf workspaces<\/strong> will display the workspaces that are accessible on the <em>system<\/em>, but not necessarily the logged in user.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"514\" height=\"104\" data-attachment-id=\"437\" data-permalink=\"https:\/\/yer.ac\/blog\/2021\/03\/10\/moving-local-workspaces-between-users-vs2019-tfs-self-hosted-azure-devops\/image-2-8\/\" data-orig-file=\"https:\/\/i0.wp.com\/yer.ac\/blog\/wp-content\/uploads\/2021\/03\/image-2.png?fit=514%2C104&amp;ssl=1\" data-orig-size=\"514,104\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image-2\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/yer.ac\/blog\/wp-content\/uploads\/2021\/03\/image-2.png?fit=514%2C104&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/yer.ac\/blog\/wp-content\/uploads\/2021\/03\/image-2.png?resize=514%2C104&#038;ssl=1\" alt=\"\" class=\"wp-image-437\" srcset=\"https:\/\/i0.wp.com\/yer.ac\/blog\/wp-content\/uploads\/2021\/03\/image-2.png?w=514&amp;ssl=1 514w, https:\/\/i0.wp.com\/yer.ac\/blog\/wp-content\/uploads\/2021\/03\/image-2.png?resize=300%2C61&amp;ssl=1 300w\" sizes=\"auto, (max-width: 514px) 100vw, 514px\" \/><\/figure>\n\n\n\n<p>Use this to get the name of the collection, and the workspace. You can also run the command below if you want to view for an owner which is not yourself, or the workspace is remote. (replacing owner and collection as appropraite)<\/p>\n\n\n\n<p><code>tf workspaces \/owner:olduser@domain.com \/collection:https:\/\/your-collection.com<\/code><\/p>\n\n\n\n<p>See <strong>Common Issues<\/strong> below if you have any errors.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Migrating (Workspace has NO pending changes)<\/h4>\n\n\n\n<p>Run the command below, replacing the workspace name, user and <\/p>\n\n\n\n<p><code>tf workspace \"WORKSPACENAME;OWNER@DOMAIN.COM\" \/newowner:newowner@domain.com \/collection:https:\/\/domain.com \/noprompt<\/code><\/p>\n\n\n\n<p>This should attempt to migrate. If you have no pending changes this should resolve successfully. See <strong>Common Issues <\/strong>below if you have any errors.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Migrating (Workspace has Pending changes)<\/h4>\n\n\n\n<p>If you attempt the above but have pending changes you will get:<\/p>\n\n\n\n<p>TF14006: Cannot change the owner of workspace WORKSPACE;USER  to NEWUSER because the workspace has pending changes. To change the owner of a workspace with pending changes, shelve the changes, change the workspace owner, and then unshelve the changes<\/p>\n\n\n\n<p>If you have access to the old workspace, shelve the changes and undo any checkouts and retry. If you do not have access, then continue reading.<\/p>\n\n\n\n<p>For this I coud&#8217;n&#8217;t find a CLI route that allowed me do this fully remote. This is a bit convoluted but MSDN didn&#8217;t show any commands for executing this fully remote.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Follow guide above for &#8220;<strong>Accessing your old workspace<\/strong>&#8221; to  get the remote workspace and ensure its mapped locally.<\/li><li><code>cd<\/code> into any directory which is under that workspace.<\/li><li>Running <code>tf status<\/code> should display what changes are made to that workspace.<\/li><li>Now shelve this with: <code>tf shelve \"Migrate\" \/move \/recursive \/noprompt<\/code> <\/li><li>Running <code>tf status<\/code> now should yield no changes and running <code>tf shelvesets<\/code> should show a single &#8220;migrate&#8221; shelveset.<\/li><li>Migrate the workspace with <code>tf workspace \"WORKSPACENAME;OWNER@DOMAIN.COM\" \/newowner:newowner@domain.com \/collection:https:\/\/domain.com \/noprompt<\/code><\/li><li>In VS you should now see your workspace. Unshelve in VS, or run the command <code>tf unshelve migrate \/noprompt<\/code> <\/li><li>See <strong>Common Issues<\/strong>below if you have any errors.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Alternatives<\/h2>\n\n\n\n<p>There is a GUI based tool called <a href=\"http:\/\/www.attrice.info\/cm\/tfs\/\">TFS Sidekicks<\/a> &#8211; Although I have not tried it it comes highly recommended on various posts.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Common issues<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">TF14045: The identity [user] is not a recognized identity.<\/h4>\n\n\n\n<p>In this scenario, make sure you are defining the login rather than the Owner name &#8211; i.e. me@mydomain.com or DOMAIN\\USER vs John Smith. <\/p>\n\n\n\n<h4 class=\"wp-block-heading\">You are not authorised to access &lt;url> \/ TF30063 \/ User is incorrect in TF prompt<\/h4>\n\n\n\n<p>First -in the prompt-, find out which user is being used to run the command, with <code>tf settings connections<\/code> . This will show the connections and the associated user. If this is blank or incorrect you will need to switch users with the command <code>tf settings connections \/switchuser https:\/\/domain.com<\/code> which will display the MS sign in dialog. <\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Workspace unmapped after restarting VS<\/h4>\n\n\n\n<p>We only saw this once, but the issue (we think) was linked to the workspace having the same name on both users (As TFS auto generates these based on the machine name IIRC), or that the command prompt was running under the wrong user. See above for ensuring the user is correct for the collection, and perhaps rename any auto-created workspaces on your new user.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Whilst I use GIT for most my source control these days, I still have some projects in TFSVC. On a recent switch of Visual Studio accounts I temporarily lost access to my mapped workspaces as these are linked to the VS logged in user, rather than to the machine. This post will show migrating a &hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[7,33],"tags":[34,2,17],"class_list":["post-436","post","type-post","status-publish","format-standard","hentry","category-devops","category-windows-terminal","tag-azuredevops","tag-devops","tag-tfs"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Moving local workspaces between users VS2019\/TFS [Self Hosted\/ Azure Devops] - yer.ac | Adventures of a developer, and other things.<\/title>\n<meta name=\"description\" content=\"Migrating TFS workspaces between users VS2019 - Hosted or Azure Devops\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/yer.ac\/blog\/2021\/03\/10\/moving-local-workspaces-between-users-vs2019-tfs-self-hosted-azure-devops\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Moving local workspaces between users VS2019\/TFS [Self Hosted\/ Azure Devops] - yer.ac | Adventures of a developer, and other things.\" \/>\n<meta property=\"og:description\" content=\"Migrating TFS workspaces between users VS2019 - Hosted or Azure Devops\" \/>\n<meta property=\"og:url\" content=\"https:\/\/yer.ac\/blog\/2021\/03\/10\/moving-local-workspaces-between-users-vs2019-tfs-self-hosted-azure-devops\/\" \/>\n<meta property=\"og:site_name\" content=\"yer.ac | Adventures of a developer, and other things.\" \/>\n<meta property=\"article:published_time\" content=\"2021-03-10T09:13:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-03-11T13:30:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i1.wp.com\/yer.ac\/blog\/wp-content\/uploads\/2021\/03\/image-4.png?fit=700%2C159&amp;ssl=1\" \/>\n<meta name=\"author\" content=\"yer.ac\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"yer.ac\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/yer.ac\\\/blog\\\/2021\\\/03\\\/10\\\/moving-local-workspaces-between-users-vs2019-tfs-self-hosted-azure-devops\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/yer.ac\\\/blog\\\/2021\\\/03\\\/10\\\/moving-local-workspaces-between-users-vs2019-tfs-self-hosted-azure-devops\\\/\"},\"author\":{\"name\":\"yer.ac\",\"@id\":\"https:\\\/\\\/yer.ac\\\/blog\\\/#\\\/schema\\\/person\\\/4638b9d868c7d3747bd3bb01fbc8153d\"},\"headline\":\"Moving local workspaces between users VS2019\\\/TFS [Self Hosted\\\/ Azure Devops]\",\"datePublished\":\"2021-03-10T09:13:49+00:00\",\"dateModified\":\"2021-03-11T13:30:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/yer.ac\\\/blog\\\/2021\\\/03\\\/10\\\/moving-local-workspaces-between-users-vs2019-tfs-self-hosted-azure-devops\\\/\"},\"wordCount\":1022,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/yer.ac\\\/blog\\\/#\\\/schema\\\/person\\\/4638b9d868c7d3747bd3bb01fbc8153d\"},\"image\":{\"@id\":\"https:\\\/\\\/yer.ac\\\/blog\\\/2021\\\/03\\\/10\\\/moving-local-workspaces-between-users-vs2019-tfs-self-hosted-azure-devops\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i1.wp.com\\\/yer.ac\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/image-4.png?fit=700%2C159&amp;ssl=1\",\"keywords\":[\"AzureDevOps\",\"DevOps\",\"TFS\"],\"articleSection\":[\"DevOps\",\"Windows Terminal\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/yer.ac\\\/blog\\\/2021\\\/03\\\/10\\\/moving-local-workspaces-between-users-vs2019-tfs-self-hosted-azure-devops\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/yer.ac\\\/blog\\\/2021\\\/03\\\/10\\\/moving-local-workspaces-between-users-vs2019-tfs-self-hosted-azure-devops\\\/\",\"url\":\"https:\\\/\\\/yer.ac\\\/blog\\\/2021\\\/03\\\/10\\\/moving-local-workspaces-between-users-vs2019-tfs-self-hosted-azure-devops\\\/\",\"name\":\"Moving local workspaces between users VS2019\\\/TFS [Self Hosted\\\/ Azure Devops] - yer.ac | Adventures of a developer, and other things.\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/yer.ac\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/yer.ac\\\/blog\\\/2021\\\/03\\\/10\\\/moving-local-workspaces-between-users-vs2019-tfs-self-hosted-azure-devops\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/yer.ac\\\/blog\\\/2021\\\/03\\\/10\\\/moving-local-workspaces-between-users-vs2019-tfs-self-hosted-azure-devops\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i1.wp.com\\\/yer.ac\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/image-4.png?fit=700%2C159&amp;ssl=1\",\"datePublished\":\"2021-03-10T09:13:49+00:00\",\"dateModified\":\"2021-03-11T13:30:34+00:00\",\"description\":\"Migrating TFS workspaces between users VS2019 - Hosted or Azure Devops\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/yer.ac\\\/blog\\\/2021\\\/03\\\/10\\\/moving-local-workspaces-between-users-vs2019-tfs-self-hosted-azure-devops\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/yer.ac\\\/blog\\\/2021\\\/03\\\/10\\\/moving-local-workspaces-between-users-vs2019-tfs-self-hosted-azure-devops\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/yer.ac\\\/blog\\\/2021\\\/03\\\/10\\\/moving-local-workspaces-between-users-vs2019-tfs-self-hosted-azure-devops\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i1.wp.com\\\/yer.ac\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/image-4.png?fit=700%2C159&amp;ssl=1\",\"contentUrl\":\"https:\\\/\\\/i1.wp.com\\\/yer.ac\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/image-4.png?fit=700%2C159&amp;ssl=1\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/yer.ac\\\/blog\\\/2021\\\/03\\\/10\\\/moving-local-workspaces-between-users-vs2019-tfs-self-hosted-azure-devops\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/yer.ac\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Moving local workspaces between users VS2019\\\/TFS [Self Hosted\\\/ Azure Devops]\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/yer.ac\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/yer.ac\\\/blog\\\/\",\"name\":\"yer.ac | Adventures of a developer, and other things.\",\"description\":\"Blog to keep track of things I am upto\",\"publisher\":{\"@id\":\"https:\\\/\\\/yer.ac\\\/blog\\\/#\\\/schema\\\/person\\\/4638b9d868c7d3747bd3bb01fbc8153d\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/yer.ac\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/yer.ac\\\/blog\\\/#\\\/schema\\\/person\\\/4638b9d868c7d3747bd3bb01fbc8153d\",\"name\":\"yer.ac\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/67ed010c9cc7986d40647e061c6dcdb06d818776591c7e954055adb629621113?s=96&d=retro&r=pg\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/67ed010c9cc7986d40647e061c6dcdb06d818776591c7e954055adb629621113?s=96&d=retro&r=pg\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/67ed010c9cc7986d40647e061c6dcdb06d818776591c7e954055adb629621113?s=96&d=retro&r=pg\",\"caption\":\"yer.ac\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/67ed010c9cc7986d40647e061c6dcdb06d818776591c7e954055adb629621113?s=96&d=retro&r=pg\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Moving local workspaces between users VS2019\/TFS [Self Hosted\/ Azure Devops] - yer.ac | Adventures of a developer, and other things.","description":"Migrating TFS workspaces between users VS2019 - Hosted or Azure Devops","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/yer.ac\/blog\/2021\/03\/10\/moving-local-workspaces-between-users-vs2019-tfs-self-hosted-azure-devops\/","og_locale":"en_US","og_type":"article","og_title":"Moving local workspaces between users VS2019\/TFS [Self Hosted\/ Azure Devops] - yer.ac | Adventures of a developer, and other things.","og_description":"Migrating TFS workspaces between users VS2019 - Hosted or Azure Devops","og_url":"https:\/\/yer.ac\/blog\/2021\/03\/10\/moving-local-workspaces-between-users-vs2019-tfs-self-hosted-azure-devops\/","og_site_name":"yer.ac | Adventures of a developer, and other things.","article_published_time":"2021-03-10T09:13:49+00:00","article_modified_time":"2021-03-11T13:30:34+00:00","og_image":[{"url":"https:\/\/i1.wp.com\/yer.ac\/blog\/wp-content\/uploads\/2021\/03\/image-4.png?fit=700%2C159&amp;ssl=1","type":"","width":"","height":""}],"author":"yer.ac","twitter_card":"summary_large_image","twitter_misc":{"Written by":"yer.ac","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/yer.ac\/blog\/2021\/03\/10\/moving-local-workspaces-between-users-vs2019-tfs-self-hosted-azure-devops\/#article","isPartOf":{"@id":"https:\/\/yer.ac\/blog\/2021\/03\/10\/moving-local-workspaces-between-users-vs2019-tfs-self-hosted-azure-devops\/"},"author":{"name":"yer.ac","@id":"https:\/\/yer.ac\/blog\/#\/schema\/person\/4638b9d868c7d3747bd3bb01fbc8153d"},"headline":"Moving local workspaces between users VS2019\/TFS [Self Hosted\/ Azure Devops]","datePublished":"2021-03-10T09:13:49+00:00","dateModified":"2021-03-11T13:30:34+00:00","mainEntityOfPage":{"@id":"https:\/\/yer.ac\/blog\/2021\/03\/10\/moving-local-workspaces-between-users-vs2019-tfs-self-hosted-azure-devops\/"},"wordCount":1022,"commentCount":0,"publisher":{"@id":"https:\/\/yer.ac\/blog\/#\/schema\/person\/4638b9d868c7d3747bd3bb01fbc8153d"},"image":{"@id":"https:\/\/yer.ac\/blog\/2021\/03\/10\/moving-local-workspaces-between-users-vs2019-tfs-self-hosted-azure-devops\/#primaryimage"},"thumbnailUrl":"https:\/\/i1.wp.com\/yer.ac\/blog\/wp-content\/uploads\/2021\/03\/image-4.png?fit=700%2C159&amp;ssl=1","keywords":["AzureDevOps","DevOps","TFS"],"articleSection":["DevOps","Windows Terminal"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/yer.ac\/blog\/2021\/03\/10\/moving-local-workspaces-between-users-vs2019-tfs-self-hosted-azure-devops\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/yer.ac\/blog\/2021\/03\/10\/moving-local-workspaces-between-users-vs2019-tfs-self-hosted-azure-devops\/","url":"https:\/\/yer.ac\/blog\/2021\/03\/10\/moving-local-workspaces-between-users-vs2019-tfs-self-hosted-azure-devops\/","name":"Moving local workspaces between users VS2019\/TFS [Self Hosted\/ Azure Devops] - yer.ac | Adventures of a developer, and other things.","isPartOf":{"@id":"https:\/\/yer.ac\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/yer.ac\/blog\/2021\/03\/10\/moving-local-workspaces-between-users-vs2019-tfs-self-hosted-azure-devops\/#primaryimage"},"image":{"@id":"https:\/\/yer.ac\/blog\/2021\/03\/10\/moving-local-workspaces-between-users-vs2019-tfs-self-hosted-azure-devops\/#primaryimage"},"thumbnailUrl":"https:\/\/i1.wp.com\/yer.ac\/blog\/wp-content\/uploads\/2021\/03\/image-4.png?fit=700%2C159&amp;ssl=1","datePublished":"2021-03-10T09:13:49+00:00","dateModified":"2021-03-11T13:30:34+00:00","description":"Migrating TFS workspaces between users VS2019 - Hosted or Azure Devops","breadcrumb":{"@id":"https:\/\/yer.ac\/blog\/2021\/03\/10\/moving-local-workspaces-between-users-vs2019-tfs-self-hosted-azure-devops\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/yer.ac\/blog\/2021\/03\/10\/moving-local-workspaces-between-users-vs2019-tfs-self-hosted-azure-devops\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/yer.ac\/blog\/2021\/03\/10\/moving-local-workspaces-between-users-vs2019-tfs-self-hosted-azure-devops\/#primaryimage","url":"https:\/\/i1.wp.com\/yer.ac\/blog\/wp-content\/uploads\/2021\/03\/image-4.png?fit=700%2C159&amp;ssl=1","contentUrl":"https:\/\/i1.wp.com\/yer.ac\/blog\/wp-content\/uploads\/2021\/03\/image-4.png?fit=700%2C159&amp;ssl=1"},{"@type":"BreadcrumbList","@id":"https:\/\/yer.ac\/blog\/2021\/03\/10\/moving-local-workspaces-between-users-vs2019-tfs-self-hosted-azure-devops\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/yer.ac\/blog\/"},{"@type":"ListItem","position":2,"name":"Moving local workspaces between users VS2019\/TFS [Self Hosted\/ Azure Devops]"}]},{"@type":"WebSite","@id":"https:\/\/yer.ac\/blog\/#website","url":"https:\/\/yer.ac\/blog\/","name":"yer.ac | Adventures of a developer, and other things.","description":"Blog to keep track of things I am upto","publisher":{"@id":"https:\/\/yer.ac\/blog\/#\/schema\/person\/4638b9d868c7d3747bd3bb01fbc8153d"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/yer.ac\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/yer.ac\/blog\/#\/schema\/person\/4638b9d868c7d3747bd3bb01fbc8153d","name":"yer.ac","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/67ed010c9cc7986d40647e061c6dcdb06d818776591c7e954055adb629621113?s=96&d=retro&r=pg","url":"https:\/\/secure.gravatar.com\/avatar\/67ed010c9cc7986d40647e061c6dcdb06d818776591c7e954055adb629621113?s=96&d=retro&r=pg","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/67ed010c9cc7986d40647e061c6dcdb06d818776591c7e954055adb629621113?s=96&d=retro&r=pg","caption":"yer.ac"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/67ed010c9cc7986d40647e061c6dcdb06d818776591c7e954055adb629621113?s=96&d=retro&r=pg"}}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/paP5IW-72","jetpack-related-posts":[{"id":94,"url":"https:\/\/yer.ac\/blog\/2019\/05\/14\/unshelving-tfs-changes-into-another-branch-vs-2017\/","url_meta":{"origin":436,"position":0},"title":"Unshelving TFS changes into another branch (VS 2017)","author":"yer.ac","date":"May 14, 2019","format":false,"excerpt":"EDIT: This was updated from an original article on 2013\/15. There is an additional pre-requisite below (See red) for doing this with 2017\/19. I had some pending changes recently on the wrong branch within TFS in Visual Studio 2017. Rather than clone all my changes in the other branch, I\u2026","rel":"","context":"In &quot;Development&quot;","block_context":{"text":"Development","link":"https:\/\/yer.ac\/blog\/category\/development\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/yer.ac\/blog\/wp-content\/uploads\/2019\/05\/image-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/yer.ac\/blog\/wp-content\/uploads\/2019\/05\/image-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/yer.ac\/blog\/wp-content\/uploads\/2019\/05\/image-1.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/yer.ac\/blog\/wp-content\/uploads\/2019\/05\/image-1.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":333,"url":"https:\/\/yer.ac\/blog\/2019\/11\/06\/pragmatically-upgrading-net-framework-version-for-all-projects-with-powershell\/","url_meta":{"origin":436,"position":1},"title":"Pragmatically upgrading .net framework version for  all projects with PowerShell","author":"yer.ac","date":"November 6, 2019","format":false,"excerpt":"We had a situation where we needed to upgrade all the CSPROJ files in a solution to 4.8. The issue is that some of our solutions contain almost a hundred projects so a manual intervention would be prone to error. (plus we have multiple solutions to apply this against!) Whilst\u2026","rel":"","context":"In &quot;DevOps&quot;","block_context":{"text":"DevOps","link":"https:\/\/yer.ac\/blog\/category\/devops\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":315,"url":"https:\/\/yer.ac\/blog\/2019\/10\/16\/ensuring-dotnet-test-trx-coverage-files-end-up-in-sonarqube\/","url_meta":{"origin":436,"position":2},"title":"Ensuring &#8220;dotnet test&#8221; TRX &#038; Coverage files end up in SonarQube","author":"yer.ac","date":"October 16, 2019","format":false,"excerpt":"I have written before about using SonarQube to do static analysis, but one issue I never came back to was ensuring that code coverage files generated via a build pipeline end up being picked up by the Sonar Scanner to assess code coverage. Note that the following I am actually\u2026","rel":"","context":"In &quot;DevOps&quot;","block_context":{"text":"DevOps","link":"https:\/\/yer.ac\/blog\/category\/devops\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/yer.ac\/blog\/wp-content\/uploads\/2019\/10\/image.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":285,"url":"https:\/\/yer.ac\/blog\/2019\/07\/31\/setting-up-a-self-hosted-build-agent-for-azure-devops\/","url_meta":{"origin":436,"position":3},"title":"Setting up a self-hosted build agent for Azure DevOps","author":"yer.ac","date":"July 31, 2019","format":false,"excerpt":"Azure DevOps has brilliant build pipeline options and as easy as it is to get set up with their hosted build agents, it can get quite costly rather quick. In this post I cover off setting up a self-hosted build agent for use with Azure. This post won't cover setting\u2026","rel":"","context":"In &quot;Azure&quot;","block_context":{"text":"Azure","link":"https:\/\/yer.ac\/blog\/category\/development\/azure\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/yer.ac\/blog\/wp-content\/uploads\/2019\/07\/image.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":521,"url":"https:\/\/yer.ac\/blog\/2021\/10\/06\/vs2019-2022-keeps-asking-for-azure-devops-credentials-on-build\/","url_meta":{"origin":436,"position":4},"title":"VS2019 (+2022) keeps asking for Azure Devops Credentials on build","author":"yer.ac","date":"October 6, 2021","format":false,"excerpt":"We run our own nuget feed via Azure, and despite the user that's logged into VS is authenticated users are constantly asked to provide their credentials again when package restore is happening. A quick fix below - Mostly so I don't forget or can forward this to others later. Verify\u2026","rel":"","context":"In &quot;Azure&quot;","block_context":{"text":"Azure","link":"https:\/\/yer.ac\/blog\/category\/development\/azure\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/yer.ac\/blog\/wp-content\/uploads\/2021\/10\/image-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/yer.ac\/blog\/wp-content\/uploads\/2021\/10\/image-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/yer.ac\/blog\/wp-content\/uploads\/2021\/10\/image-1.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/yer.ac\/blog\/wp-content\/uploads\/2021\/10\/image-1.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":432,"url":"https:\/\/yer.ac\/blog\/2021\/03\/09\/adding-vs-developer-command-prompt-to-windows-terminal-vs-2019\/","url_meta":{"origin":436,"position":5},"title":"Adding VS Developer Command Prompt To Windows Terminal (VS 2019)","author":"yer.ac","date":"March 9, 2021","format":false,"excerpt":"In an effort to be using Windows Terminal for everything Powershell\/Command related these days it occurred to me that I hadn't moved my VS2019 Command Prompt to Windows Terminal. This meant having to open VS all the time (as well as make sure that the command was mapped in external\u2026","rel":"","context":"In &quot;Productivity&quot;","block_context":{"text":"Productivity","link":"https:\/\/yer.ac\/blog\/category\/productivity\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/yer.ac\/blog\/wp-content\/uploads\/2021\/03\/image-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/yer.ac\/blog\/wp-content\/uploads\/2021\/03\/image-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/yer.ac\/blog\/wp-content\/uploads\/2021\/03\/image-1.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]}],"_links":{"self":[{"href":"https:\/\/yer.ac\/blog\/wp-json\/wp\/v2\/posts\/436","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/yer.ac\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/yer.ac\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/yer.ac\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/yer.ac\/blog\/wp-json\/wp\/v2\/comments?post=436"}],"version-history":[{"count":21,"href":"https:\/\/yer.ac\/blog\/wp-json\/wp\/v2\/posts\/436\/revisions"}],"predecessor-version":[{"id":473,"href":"https:\/\/yer.ac\/blog\/wp-json\/wp\/v2\/posts\/436\/revisions\/473"}],"wp:attachment":[{"href":"https:\/\/yer.ac\/blog\/wp-json\/wp\/v2\/media?parent=436"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/yer.ac\/blog\/wp-json\/wp\/v2\/categories?post=436"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/yer.ac\/blog\/wp-json\/wp\/v2\/tags?post=436"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}