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

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’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 [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
DirectionOfMapping="LeftToRight">

<displaynamemapping
Left="Windows Live
[email protected]"Right="vsalmTestUser2"MappingRule="SimpleReplacement"></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
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>

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

时间: 2024-10-14 00:57:31

Migration from TF Service to TF Server with the TFS Integration Platform的相关文章

TFboy养成记 tf.cast,tf.argmax,tf.reduce_sum

referrence: 莫烦视频 先介绍几个函数 1.tf.cast() 英文解释: 也就是说cast的直译,类似于映射,映射到一个你制定的类型. 2.tf.argmax 原型: 含义:返回最大值所在的坐标.(谁给翻译下最后一句???) ps:谁给解释下axis最后一句话? 例子: 3.tf.reduce_mean() 原型: 含义:一句话来说就是对制定的reduction_index进行均值计算. 注意,reduction_indices为0时,是算的不同的[]的同一个位置上的均值 为1是是算

Sharepoint2013商务智能学习笔记之Excel Service展示Sql Server数据Demo(五)

第一步,打开Excel新建空白工作簿 第二步,使用Excel连接sql 数据库 第三步,画图 第四步 添加筛选器 最后效果如下: 第五步,将Excel上传到sharepoint任意文档库,并直接点击 可以使用Excel web access承载Excel表格,这样可以使用Sharepoint 自带的filter webpart和Excel Web Access结合使用,无代码的对Excel做更精细化的控制. Sharepoint2013商务智能学习笔记之Excel Service展示Sql Se

tensorflow中使用tf.variable_scope和tf.get_variable的ValueError

ValueError: Variable conv1/weights1 already exists, disallowed. Did you mean to set reuse=True in VarScope? Originally defined at: 在使用tensorflow 中的tf.variable_scope和tf.get_variable搭建网络时,重复运行程序会报以上的ValueError错误,这是因为第二次运行时,内存中已经存在名字相同的层或者参数,发生了冲突,所以会提示

TF:利用TF的train.Saver将训练好的variables(W、b)保存到指定的index、meda文件

import tensorflow as tf import numpy as np W = tf.Variable([[2,1,8],[1,2,5]], dtype=tf.float32, name='weights') b = tf.Variable([[1,2,5]], dtype=tf.float32, name='biases') init= tf.global_variables_initializer() saver = tf.train.Saver() with tf.Sessi

tf.matmul()和tf.multipy()的区别

首先我们分析一下下面的代码: import tensorflow as tf import numpy as np a=tf.constant([[1., 2., 3.],[4., 5., 6.]]) b=np.float32(np.random.randn(3,2)) #c=tf.matmul(a,b) c=tf.multiply(a,b) init=tf.global_variables_initializer() with tf.Session() as sess: print(c.eva

TensorFlow 辨异 —— tf.placeholder 与 tf.Variable

二者的主要区别在于: tf.Variable:主要在于一些可训练变量(trainable variables),比如模型的权重(weights,W)或者偏执值(bias): 声明时,必须提供初始值: 名称的真实含义,在于变量,也即在真实训练时,其值是会改变的,自然事先需要指定初始值:  weights = tf.Variable( tf.truncated_normal([IMAGE_PIXELS, hidden1_units], stddev=1./math.sqrt(float(IMAGE_

tf.Variable、tf.get_variable、tf.variable_scope以及tf.name_scope关系

1. tf.Variable与tf.get_variable tensorflow提供了通过变量名称来创建或者获取一个变量的机制.通过这个机制,在不同的函数中可以直接通过变量的名字来使用变量,而不需要将变量通过参数的形式到处传递. TensorFlow中通过变量名获取变量的机制主要是通过tf.get_variable和tf.variable_scope实现的. 当然,变量也可以通过tf.Varivale来创建.当tf.get_variable用于变量创建时,和tf.Variable的功能基本等价

tf.assign,tf.assign_add,tf.assign_sub

a = tf.Variable(0.0,dtype=tf.float32) with tf.Session() as sess: sess.run(tf.global_variables_initializer()) print(sess.run(a)) a = tf.assign(a,10) print(sess.run(a)) a = tf.assign(a,20) print(sess.run(a)) 0.0 10.0 20.0 a = tf.Variable(1,dtype=tf.flo

TensorFlow 学习(二)—— tf Graph tf Session 与 tf Session run

session: with tf.Session() as sess:/ tf.InteractiveSession() 初始化: tf.global_variables_initializer() with tf.Session() as sess: sess.run(tf.global_variables_initializer()) 1 2 0. tf.Graph 命名空间与 operation name(oper.name 获取操作名): c_0 = tf.constant(0, nam