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.
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’sthey will still never match what you have locally in
your Active Directory controlled environment.
- TFS Integration Platform – What is the Lookup Service?
Q&A-27 - TFS Integration Tools – How do I map users between domains or
systems? Q&A-44 - TFS Integration Tools – How do I define user mappings for
version control using the SVN adapter?
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 [email protected]” in source. This means that you need
to collect every users Live ID and create a mapping file from old to new.
<useridentitymappings EnableValidation="false">
<useridentitylookupaddins></useridentitylookupaddins>
<displaynamemappings DirectionOfMapping="LeftToRight">
<displaynamemapping Left="Windows Live IDmartin@hinshelwood.com" Right="vsalmTestUser2" MappingRule="SimpleReplacement"></displaynamemapping>
</displaynamemappings>
</useridentitymappings>
1 2 3 4 5 6 |
<useridentitymappings EnableValidation="false"> <useridentitylookupaddins></useridentitylookupaddins> <displaynamemappings <displaynamemapping </displaynamemappings> </useridentitymappings> |
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.
<fieldmaps>
<fieldmap name="FieldMap">
<mappedfields>
<mappedfield LeftName="*" RightName="*" MapFromSide="Left" valueMap=""></mappedfield>
<mappedfield LeftName="System.AssignedTo" RightName="System.AssignedTo" MapFromSide="Left" valueMap="UserMap"></mappedfield>
</mappedfields>
</fieldmap>
</fieldmaps>
<valuemaps>
<valuemap name="UserMap">
<value LeftValue="Martin Hinshelwood (MrHinsh) {NWC}" RightValue="Martin Hinshelwood"></value>
</valuemap>
</valuemaps>
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<fieldmaps> <fieldmap name="FieldMap"> <mappedfields> <mappedfield <mappedfield </mappedfields> </fieldmap> </fieldmaps> <valuemaps> <valuemap name="UserMap"> <value LeftValue="Martin Hinshelwood </valuemap> </valuemaps> |
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…
-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.
http://nakedalm.com/migration-from-tf-service-to-tf-server-with-the-tfs-integration-platform/
Migration from TF Service to TF Server with the TFS Integration
Platform,码迷,mamicode.com
Migration from TF Service to TF Server with the TFS Integration
Platform