Migration from TF Service to TF Server with the TFS Integration Platform

Book an Expert

Posted by Martin Hinshelwood | 22 Comments | Code & Complexity
 

Are you worried that you will not be able to migrate from http://tfs.visualstudio.com when they start charging for it and you don’t want to pay? Fear not as we have the technology to migration from TF Service to TF Server with the TFS Integration Platform.

image
Figure: Successful migration from TF Service to TF Server

We are working with a customer next week who is using http://tfs.visualstudio.com but due to a misapplication of the rules governing the management of data they are having to move their Team Foundation Service data local.

You see many organisations come under HIPA, SOX or CFR-11 which requires separation of duties and that none of your data ends up at risk. This is awesome as it is designed to protect your organisation and your customers from the risks associated with restricted data. However this almost never needs to be interpreted as something that governs your code, your builds or your work item tracking data.

Sometimes it is for simple ‘warm and fuzzes’ and sometimes it is because of the way that your internal compliance department has interpreted the rules. But wrongly or rightly you  have to move your data…

Configuring the migration from TF Service to TF Server

Wither you are familiar with the TFS Integration Platform or not there are only a couple of ‘small’ things that we need to worry about for this migration. Both of those things revolve around user accounts.

In TF Service all of the user accounts are Microsoft Accounts (was Live ID) and they do not directly relate to anything that you have in your Domain. Even if you configure Corporate Live ID’s they will still never match what you have locally in your Active Directory controlled environment.

We effectively have two places we need to do a little mapping. Source Control and Work Item Tracking. Both of these are done is slightly different ways…both are however easy to configure.

We can use the TFS Integration Platform to pull all of your data for Source and Work Items, including the relationships and attachments but we do leave behind some information.

  • No Labels
  • No Builds
  • No Lab
  • No Test Cases

Probably the one least easy to swallow is the Test Cases. You may be able to write something against the API afterwards to get it to work but I have not tried…

Source Control

The thing to remember for Source Control is that your identity is referenced as “Windows Live IDmartin@hinshelwood.com” in source. This means that you need to collect every users Live ID and create a mapping file from old to new.

In this case we are moving from our Live ID to a Domain account and this method can just as easily be used to move between two TF Service instances or to move into TF Service.

Once you have this mapping created you can update the “UserIdentityMappings” section of your TFS Integration Platform configuration.

Work Item Tracking

Work Item tracking is, if anything, easier to configure. You can use the built in field mapping to equate “Martin Hinshelwood (MrHinsh) {NWC}” to whatever you use in your domain.

In this scenario you need have both a “FieldMap” and “ValueMap” to push them together based on the value you would select in the work item Assigned To drop-down.

You will need to collect the exact display name of each person and ask them not to change them until you have pushed across the work items. 

Conclusion

While you can move from Team Foundation Service to Team Foundation Server it will take some planning and forethought…the scenarios detailed above will maintain continuity of your users between the two systems and authentication methods.

It is not however for the faint of heart… it took us a few hours to figure out the solution above and about 12-15 failed migrations to get it right…

All of this is in the documentation for the TFS Integration Platform…

Migration from TF Service to TF Server with the TFS Integration Platform was last modified: April 17th, 2013 by Martin Hinshelwood

-Every company deserves working software that successfully and consistently meets their customers needs on a regular cadence. We can help you get working software with continuous feedback so that your lean-agile teams can deliver continuous value with Visual Studio ALM, Team Foundation Server & Scrum. We have experts on hand to help improve your process and deliver more value at higher quality.

  • Pingback: Migration from TF Service to TF Server with the...()

  • Julien

    Thanks for your interesting article!
    By the way, do you know if there is a way to migrate from a local TFS to a TFS online ?
    Julien

    • http://blog.hinshelwood.com/ Martin Hinshelwood

      Yup… same plan but in reverse…

  • Marco van Kimmenade

    Great article!
    Do you know if this also can be done for TFS 2013 Preview?

    • http://blog.hinshelwood.com MrHinsh

      It can, however you would need to install Team Explorer 2012 on the computer running the TFS Integration Tools as there is not yet an adapter for 2013.

    • Andrew Clear

      Yes, I’ve used the migration platform for TFS 2013 Preview without issue.

    • http://nakedalm.com/blog Martin Hinshelwood

      While it can be used with the Preview I would recommend upgrading to the latest version (TFS 2013 RTM) prior to doing the migration. That way is you have a support issue it is easier to resolve with one less thing in the way…

  • Tan Le

    By the way, I have a task to migrate from current Team Foundation Service https://myname.visualstudio.com to my local Team foundation server 2012 http://mypc:8080/tfs. But there some conflicts at BuildProcessTemplate folder, then I tried to resolve them, but it cannot be done, error is “Sequence contains no elements”. Thanks any help!

    • http://nakedalm.com/blog Martin Hinshelwood

      You need to either ‘cloak’ that folder or migrate to a sub folder. The existing BuildProcessTemplate folder is getting in the way…

      • Tan Le

        I just config tfs service and my local tfs server. I also cloak that folder but it can not be resolved. Any idea.

        • http://nakedalm.com/blog Martin Hinshelwood

          You may need to start the replication again from the start :(

          • Andrew Clear

            I just had to do this very thing last week. Only way I found out of it was to restart.

  • John Spinella

    Martin, do you have a HOL or the config you used for this. I am currently doing this at my client site as well. Any help would be appreciated.
    Thanks,
    John Spinella
    jrspinella@live.com

    • http://nakedalm.com/blog Martin Hinshelwood

      I don’t have a HOL but I would consider doing a Google Hangout next week if you think that folks would be interested…
      Who would be interested?

      • John Spinella

        Yes, I would be interested!

        • http://nakedalm.com/blog Martin Hinshelwood

          I am going to try and set something up for next week when I am back in the UK…

  • Andrew Clear

    If you’ve got TFS odds are you’ve got MSDN right? Then you don’t have to pay for VSO.

    • http://nakedalm.com/blog Martin Hinshelwood

      Andrew, you have to pay if you wasn’t more than 60 minutes of builds a month. Or what if you have 30 user’s that do not have MSDN? Your local TFS CAL’s are not going to give you rights to VSO.
      So, odds are, if you have TFS that you WILL have to pay for VSO… just maybe no for everyone…

      • Andrew Clear

        True. Kind of strange that the TFS CAL doesn’t give you Standard access to VSO, but gives you the ability to work with work items on TFS. I suppose you could drop your CALs for Standard licenses. Not sure if that is a viable route. I really wish they hadn’t made the license structure so complicated.

  • Pingback: Visual Studio Online explained()

  • Samuele Gaggioli

    Sorry, but is this working also from TF Service to TF Service? It is too long to explain now, but probably I will need to transfer all my data from a VSO account to another….
    Thanks

    • http://nakedalm.com/blog Martin Hinshelwood

      Yes you can do this between VSO accounts. It can however be quite complicated to get setup so you should probably consult an expert :)