martes, 18 de octubre de 2011

TFS Integration Tool: Integrando/migrando de CMMI 4.2 a CMMI 5 y mapeos para Task y Requirements

Muy buenas,

No tenía pensado comentar nada al respecto, pero después de aprender a usar la herramienta, detectar algunos bugs y un poco de trabajo de “chinos”, creo que es una pequeña ayuda para que podáis entender la migración entre distintos “Team Projects” con distintas plantillas de procesos:

Antes de nada, para el que no conozca “TFS Integration Tool (o, TFS Integration Platform)” es un herramienta de CodePlex, que facilita la migración/integración entre diferentes versiones de Work Items, Bug Tracking, etc.

Aunque está en beta, siempre que no se haya “customizado” complicadamente algún work item, cosa que no es de extrañar en algún caso, Risa), la herramienta funciona bastante bien, salvo algunas limitaciones en cuanto a items que no son migrados a día de hoy:

Hasta donde he podido llegar, los “Labels” si los migra, Risa.

Aunque podemos encontrarnos casos más complejos, entre otros, que el TeamProject destino exista y ya tenga bastante código, Work Items, changesets, etc, por el momento, os dejo un resumen de mi caso en concreto (desde “MSF for CMMI Process Improvement v4.2” a “MSF for CMMI Process Improvement CMMI5”) donde el TeamProject destino está recién creado:

image

image

  • Utiliza los siguientes valores para realizar tu configuración de Mapeo/Migración:

image

image

   1: <SettingXml>



   2:   <WITSessionCustomSetting>



   3:     <Settings />



   4:     <WorkItemTypes>



   5:       <WorkItemType LeftWorkItemTypeName="Task" RightWorkItemTypeName="Task" fieldMap="Migrate2Tasks" />



   6:       <WorkItemType LeftWorkItemTypeName="Requirement" RightWorkItemTypeName="Requirement" fieldMap="Migrate2Requirements" />



   7:       <WorkItemType LeftWorkItemTypeName="Bug" RightWorkItemTypeName="Bug" fieldMap="*" />



   8:       <WorkItemType LeftWorkItemTypeName="Issue" RightWorkItemTypeName="Issue" fieldMap="*" />



   9:       <WorkItemType LeftWorkItemTypeName="Change Request" RightWorkItemTypeName="Issue" fieldMap="*" />



  10:     </WorkItemTypes>



  11:     <FieldMaps>



  12:  



  13:       <FieldMap name="Migrate2Tasks">



  14:         <MappedFields>



  15:  



  16:           <!-- Mapeo de todos los campos -->



  17:           <MappedField LeftName="*" RightName="*" MapFromSide="Left" />



  18:  



  19:           <!--- Excepciones a los mapeos  -->



  20:           <!-- Mapeos sin destino -->



  21:           <MappedField LeftName="Severity" RightName="" MapFromSide="Left" valueMap="" />



  22:           <MappedField LeftName="Issue" RightName="" MapFromSide="Left" valueMap="" />



  23:           <MappedField LeftName="Start Change Date" RightName="" MapFromSide="Left" valueMap="" />



  24:           <MappedField LeftName="Exit Criteria" RightName="" MapFromSide="Left" valueMap="" />



  25:           <MappedField LeftName="Test Id" RightName="" MapFromSide="Left" valueMap="" />



  26:           <MappedField LeftName="Test Name" RightName="" MapFromSide="Left" valueMap="" />



  27:           <MappedField LeftName="Test Path" RightName="" MapFromSide="Left" valueMap="" />



  28:           <MappedField LeftName="Estimate" RightName="Microsoft.VSTS.Scheduling.OriginalEstimate" MapFromSide="Left" valueMap="" />



  29:           <!-- Mapeos con cambio en el destino -->



  30:           <MappedField LeftName="Triage" RightName="Microsoft.VSTS.Common.Triage" MapFromSide="Left" valueMap="TriageMap" />



  31:           <MappedField LeftName="Priority" RightName="Microsoft.VSTS.Common.Priority" MapFromSide="Left" valueMap="PriorityMap" />



  32:           <MappedField LeftName="Discipline" RightName="Microsoft.VSTS.Common.Discipline" MapFromSide="Left" valueMap="DisciplineMap" />



  33:           <MappedField LeftName="Task Type" RightName="Microsoft.VSTS.Common.TaskType" MapFromSide="Left" valueMap="TaskTypeMap" />          



  34:  



  35:         </MappedFields>



  36:       </FieldMap>



  37:  



  38:       <FieldMap name="Migrate2Requirements">



  39:         <MappedFields>



  40:  



  41:           <MappedField LeftName="*" RightName="*" MapFromSide="Left" />



  42:  



  43:           <MappedField LeftName="Issue" RightName="" MapFromSide="Left" valueMap="" />



  44:           



  45:           <MappedField LeftName="Rank" RightName="Microsoft.VSTS.Common.StackRank" MapFromSide="Left" valueMap="" />



  46:           <MappedField LeftName="Estimate" RightName="Microsoft.VSTS.Scheduling.OriginalEstimate" MapFromSide="Left" valueMap="" />



  47:  



  48:           <MappedField LeftName="Requirement Type" RightName="Microsoft.VSTS.CMMI.RequirementType" MapFromSide="Left" valueMap="RequirementType2Map" />



  49:           <MappedField LeftName="Priority" RightName="Microsoft.VSTS.Common.Priority" MapFromSide="Left" valueMap="PriorityMap" />          



  50:           <MappedField LeftName="Triage" RightName="Microsoft.VSTS.Common.Triage" MapFromSide="Left" valueMap="TriageMap" />



  51:  



  52:           <!-- These are not exist on target  -->



  53:           <!--<MappedField LeftName="Start Date" RightName="Microsoft.VSTS.Scheduling.StartDate" MapFromSide="Left" valueMap="" />



  54:           <MappedField LeftName="Finish Date" RightName="Microsoft.VSTS.Scheduling.FinishDate" MapFromSide="Left" valueMap="" />-->



  55:  



  56:         </MappedFields>



  57:       </FieldMap>      



  58:     </FieldMaps>



  59:  



  60:     <ValueMaps>



  61:       <!-- Tasks values  -->



  62:       <ValueMap name="TriageMap">



  63:         <Value LeftValue="Pending" RightValue="Pending"/>



  64:         <Value LeftValue="More Info" RightValue="More Info"/>



  65:         <Value LeftValue="Info Recv" RightValue="Info Received"/>



  66:         <Value LeftValue="Triaged" RightValue="Triaged"/>



  67:       </ValueMap>



  68:  



  69:       <ValueMap name="PriorityMap">



  70:         <Value LeftValue="1" RightValue="1" />



  71:         <Value LeftValue="2" RightValue="2" />



  72:         <Value LeftValue="3" RightValue="3" />



  73:         <!--<Value LeftValue="" RightValue="4" />-->



  74:       </ValueMap>



  75:  



  76:       <ValueMap name="DisciplineMap">



  77:         <Value LeftValue="Analysis" RightValue="Analysis" />



  78:         <Value LeftValue="User Experience" RightValue="User Experience" />



  79:         <Value LeftValue="User Education" RightValue="User Education" />



  80:         <Value LeftValue="Test" RightValue="Test" />



  81:       </ValueMap>



  82:  



  83:       <ValueMap name="TaskTypeMap">



  84:         <Value LeftValue="Analysis" RightValue="Corrective Action" />



  85:         <Value LeftValue="User Experience" RightValue="Mitigation Action" />



  86:         <!--<Value LeftValue="" RightValue="Planned" />-->



  87:       </ValueMap>



  88:  



  89:       <ValueMap name="RequirementType2Map">



  90:         <Value LeftValue="Scenario" RightValue="Scenario"/>



  91:         <Value LeftValue="Quality of Service" RightValue="Quality of Service"/>



  92:         <Value LeftValue="Functional" RightValue="Functional"/>



  93:         <Value LeftValue="Operational" RightValue="Operational"/>



  94:         <Value LeftValue="Interface" RightValue="Interface"/>



  95:         <Value LeftValue="Security" RightValue="Security"/>



  96:         <Value LeftValue="Safety" RightValue="Safety"/>



  97:         <!--<Value LeftValue="" RigthValue="Business Objective"/>



  98:         <Value LeftValue="" RigthValue="Feature"/>-->



  99:       </ValueMap>



 100:     </ValueMaps>



 101:   </WITSessionCustomSetting>



 102: </SettingXml>



 103: <SettingXmlSchema />







Nota: Para completar el resto de mapeos, haz uso de los fichero “XML” de las distintas plantillas, así podrás conocer el detalle de los mapeos a realizar.







image






De la misma manera que este proceso de integración entre dos TeamProject ha sido un éxito, también podrás hacerlo para distintas “Queries” de origen y por tanto, “Area Path”, etc. El peso principal recae sobre cada uno de los mapeos según he comentado antes, y podrás hacerlo, para distintas plantillas de proceso, Scrum, MSF Agile, etc., e incluso entre distintas  plantillas origen y destino.



Mucha suerte y espero que sirva de ayuda/aclaración, Guiño



Saludos @TFS

Juanlu, elGuerre

Etiquetas: , ,


Comments: Publicar un comentario



<< Home

This page is powered by Blogger. Isn't yours?