Dela via


Field Mapping XML Element Reference for Integration of Team Foundation Server and Project Server

By customizing the field mappings, you can define which fields in Visual Studio Team Foundation Server 2010 and Project Server should be kept synchronized and which fields are updated in the status queue for Project Server and in Team Foundation.

Note

The field mappings for integration of Team Foundation Server with Project Server are distinct from the mapping file for Microsoft Project. For information about the latter file, see The Microsoft Project Field Mapping File.

You maintain one set of field mappings for each team project collection that hosts team projects that you want to synchronize with Project Server. To retrieve the field mappings, you can download them to a file from the collection. After you modify the file, you can upload it to the collection, and the changes will apply to all team projects that are defined for that collection. For more information about how to download or upload field mappings, see Customizing the Field Mapping Between Project Server and Team Foundation Server.

In this topic

  • Required Fields

  • Default Fields That are Mapped

  • Mapping Elements and Attributes

  • Default Field Mappings

Required Fields

The following fields must be mapped to support data synchronization. If you have customized the fields that are used to schedule work, you must customize the field mappings to reference the fields that you use.

  • System.Title must be mapped to pjTaskName.

  • System.AssignedTo must be mapped to pjResourceNames.

  • The field that you use to track the start of work in Team Foundation must be mapped to pjTaskStart. By default, this field is Microsoft.VSTS.Scheduling.StartDate.

  • The field that you use to track completed work in Team Foundation must be mapped to pjTaskFinish. By default, this field is Microsoft.VSTS.Scheduling.FinishDate.

Back to top

Default Fields That Are Mapped

For each field in Team Foundation, you can specify two mappings. In the first mapping, you specify the field in Project that the field in Team Foundation updates in the status queue. In the second mapping, you specify the field in Project that updates the field in Team Foundation. In addition, you can specify whether the field in Team Foundation appears on the work item form and how updates are made to reference and mirrored fields.

By default, all Project fields that are mapped are also mirrored, which means that their values are stored in Team Foundation.

Important

In most configurations, you should not remove the default field mappings because the synchronization process requires them. For example, do not remove the default mappings if your enterprise project plan maps to a team project that was created from a process template that is based on either the Microsoft Solutions Framework (MSF) for Agile Software Development v5.0 or the Capability Maturity Model Integration (CMMI) Process Improvement v5.0.

However, if your plan maps to a team project that was created using the MSF Scrum 1.0 process template, you may need to remove some of the default mappings. If your project collection contains only team projects that were created using the Scrum template, you may receive an error when you configure the two server products. For best results, add Completed Work (Microsoft.VSTS.Scheduling.CompletedWork) and Original Estimate (Microsoft.VSTS.Scheduling.OriginalEstimate) to the work items that you intend to map. For more information, see Modifying Field Mappings When Mapping to a Team Project That Was Created From the Scrum 1.0 Process Template.

The following table describes the default mappings that are assigned to fields in Team Foundation. You can specify how you want reference and mirror fields to be updated. You can set OnConflict to PSWins to overwrite the value in Team Foundation with the value from Project Server. If you leave the OnConflict attribute unspecified, the fields maintain different values. For more information, review the Field Elements and Attributes table later in this topic.

For more information about mirrored fields and the synchronization process, see Understanding How Updates to Specific Fields Are Managed.

Team Foundation field

Project field

Display field on Project Server tab of work item form (displayTfsField)

Display mirrored field on Project Server tab of work item form (displayTfsMirror)

Field updates (OnConflict)

Title

Task Name

No

No

The value in Project Server replaces the value in Team Foundation.

Assigned To

Resources

No

No

The value in Project Server replaces the value in Team Foundation.

Remaining Work

Resource Remaining Work (Status Queue)

Task Remaining Work (Project Server)

Yes

Yes

Each value is maintained.

Completed Work

Resource Actual Work (Status Queue)

Task Actual Work (Project Server)

Yes

Yes

Each value is maintained.

Original Estimate

Baseline Work

No

Yes

The value in Project Server replaces the value in Team Foundation.

Start Date

Resource Start (Status Queue)

Task Start (Project Server)

No

No

The value in Project Server replaces the value in Team Foundation.

End Date

Resource Finish (Status Queue)

Task Finish (Project Server)

No

No

The value in Project Server replaces the value in Team Foundation.

You can display more Project fields on the Project Server tab of a work item form in Team Foundation if you add them to the field mappings. For more information about this tab, see Project Server Fields Added to Support Data Synchronization.

Back to top

Mapping Elements and Attributes

You use a field element to specify a reference field in Team Foundation to synchronize. All field elements are contained in the mappingFile, persistables, and Microsoft.TeamFoundation.Sync.Mapping.Impls.FieldMapping container elements.

Important

When you map a field from Team Foundation Server to Project Server, make sure that you match the data types of those fields. Otherwise, the following error might appear when you try to upload the field mappings:

Index (zero based) must be greater than or equal to zero and less than the size of the argument list.

For more information, see Data Types and Field Mapping Criteria.

The following example shows the nesting structure of XML elements. To view the default mappings, see Default Mapping File later in this topic.

<mappingFile>
   <persistables>
      <Microsoft.TeamFoundation.Sync.Mapping.Impls.FieldMapping>
         <field tfsName="System.Title" tfsMirrorName="Mirror.System.Title" displayTfsField="false" displayTfsMirror="false" onConflict="PSWin">
            <tfsToTarget>
               <target provider="ProjectServerStatusQueue" name="pjTaskName" />
            </tfsToTarget>
            <targetToTfs>
               <target provider="ProjectServerPublished" name="pjTaskName" />
            </targetToTfs>
         </targetToTfs>
      </field>

         . . .

    </Microsoft.TeamFoundation.Sync.Mapping.Impls.FieldMapping>
  </persistables>
</mappingFile>

Field Element Syntax

The following syntax defines the attributes of the field element:

<field tfsName="FieldName" tfsMirrorName="FieldMirrorName" displayTfsField="true | false" displayTfsMirror=" true | false" onConflict="PSWin">

Target Element Syntax

The following syntax defines the attributes of the target element:

<target provider="ProviderName" name="ProjectFieldName" />

To determine the field name, prefix the concatenated friendly name with "pj". For example, the field name for Status Manager is pjStatusManager, and the field name for Custom 01 is pjCustom01.

Back to top

Field Elements and Attributes

The following table describes the subelements and attributes of the field element. You map a Team Foundation field to a Project resource field whose value you want to update during status synchronization. You map a Team Foundation field to a Project task field whose value will update Team Foundation Server during publish synchronization. Also, the units of fields that you map must conform to established criteria. For more information, see Restrictions on Mapping Project Server Fields for Integration with Team Foundation Server.

Element

Attribute

Description

field

Specifies the field in Team Foundation to be mapped and how the field should be mapped.

tfsName

Specifies the reference name of the field in Team Foundation to synchronize. You must specify a field that is defined in the team project collection. You can list all fields in a collection by running the witadmin listfields command. For more information, see Managing Work Item Fields [witadmin].

tfsMirrorName

Required. Specifies the reference name under which to store the value of the Project Server field in Team Foundation Server. You can prefix the reference name with "Mirror." For example, you can specify Mirror.System.Title for System.Title.

NoteNote
Mirror fields that you specify are created automatically. You do not have to add mirror fields to the type definition of a work item.

displayTfsField

Optional. By default, this attribute is set to true. If this attribute is set to true, the field appears on the Project Server tab of the work item form in Team Foundation. If this attribute is set to false, the field does not appear on the form. By default, only the Completed Work and Remaining Work fields appear on the form.

displayTfsMirror

Optional. By default, this attribute is set to true. If this attribute is set to true, the field appears on the Project Server tab of the work item form in Team Foundation. If this attribute is set to false, the field does not appear on the form.

onConflict

Optional. Specifies how the synchronization engine updates the reference field. The only valid value is PSWin.

When this attribute is set to PSWin, the value of the reference field is updated when the current value that is published from Project Server differs from the value in the mirror.

If you do not define this attribute, you indicate that two sets of books should be maintained. In other words, the value in Project can differ from the value in Team Foundation. By default, the values in Project always replace the values of the Title, Assigned To, Start Date, and End Date fields. By default, only the Completed Work and Remaining Work fields are maintained with two sets of books. For more information, see Updates to Fields that Contain Hours.

tfsToTarget

Specifies the name of the field in Project that Team Foundation will update.

target

Specifies the target to receive updates from Team Foundation.

provider

Specifies the name of the update provider. For tfsToTarget, the only valid value is ProjectServerStatusQueue.

name

Specifies the name of the Project field that will be updated with the value in Team Foundation. You can map only built-in or enterprise custom fields in Project Server. For a list of available fields, see Fields Available for Mapping to the Status Queue.

targetToTfs

Specifies the field mapping to synchronize updates in Project Server with Team Foundation Server.

target

Specifies the target to receive updates from Project Server.

provider

Specifies the name of the update provider. For targetToTfs, the only valid value is ProjectServerPublished.

name

Specifies the name of the field in Project that will update the field in Team Foundation. You can map only built-in or enterprise custom fields. For a list of available fields, see Fields Available for Mapping from Project Server to Team Foundation Only.

Back to top

Default Mappings

The following code lists the default field mappings that are defined when you run the TfsAdmin ProjectServer /UploadFieldMappings command and specify the /useDefaultFieldMappings option. You can download these mappings to a file and then add elements to it or modify the attributes of the listed fields.

For a list of all fields that are added to a type of work item when you add that type to participate in data synchronization, see Project Server Fields Added to Support Data Synchronization.

<mappingFile>
  <persistables>
    <Microsoft.TeamFoundation.Sync.Mapping.Impls.FieldMapping>
      <field tfsName="System.Title" tfsMirrorName="Mirror.System.Title" displayTfsField="false" displayTfsMirror="false" onConflict="PSWin">
        <tfsToTarget>
          <target provider="ProjectServerStatusQueue" name="pjTaskName" />
        </tfsToTarget>
        <targetToTfs>
          <target provider="ProjectServerPublished" name="pjTaskName" />
        </targetToTfs>
      </field>
      <field tfsName="System.AssignedTo" tfsMirrorName="Mirror.System.AssignedTo" displayTfsField="false" displayTfsMirror="false" onConflict="PSWin">
        <tfsToTarget>
          <target provider="ProjectServerStatusQueue" name="pjTaskResourceNames" />
        </tfsToTarget>
        <targetToTfs>
          <target provider="ProjectServerPublished" name="pjTaskResourceNames" />
        </targetToTfs>
      </field>
      <field tfsName="Microsoft.VSTS.Scheduling.CompletedWork" tfsMirrorName="Mirror.Microsoft.VSTS.Scheduling.CompletedWork" displayTfsField="true" displayTfsMirror="true">
        <tfsToTarget>
          <target provider="ProjectServerStatusQueue" name="pjResourceActualWork" />
        </tfsToTarget>
        <targetToTfs>
          <target provider="ProjectServerPublished" name="pjTaskActualWork" />
        </targetToTfs>
      </field>
      <field tfsName="Microsoft.VSTS.Scheduling.RemainingWork" tfsMirrorName="Mirror.Microsoft.VSTS.Scheduling.RemainingWork" displayTfsField="true" displayTfsMirror="true">
        <tfsToTarget>
          <target provider="ProjectServerStatusQueue" name="pjResourceRemainingWork" />
        </tfsToTarget>
        <targetToTfs>
          <target provider="ProjectServerPublished" name="pjTaskRemainingWork" />
        </targetToTfs>
      </field>
      <field tfsName="Microsoft.VSTS.Scheduling.OriginalEstimate" tfsMirrorName="Mirror.Microsoft.VSTS.Scheduling.OriginalEstimate" displayTfsField="false" displayTfsMirror="true" onConflict="PSWin">
        <targetToTfs>
          <target provider="ProjectServerPublished" name="pjTaskBaselineWork" />
        </targetToTfs>
      </field>
      <field tfsName="Microsoft.VSTS.Scheduling.StartDate" tfsMirrorName="Mirror.Microsoft.VSTS.Scheduling.StartDate" displayTfsField="false" displayTfsMirror="false" onConflict="PSWin">
        <tfsToTarget>
          <target provider="ProjectServerStatusQueue" name="pjResourceStart" />
        </tfsToTarget>
        <targetToTfs>
          <target provider="ProjectServerPublished" name="pjTaskStart" />
        </targetToTfs>
      </field>
      <field tfsName="Microsoft.VSTS.Scheduling.FinishDate" tfsMirrorName="Mirror.Microsoft.VSTS.Scheduling.FinishDate" displayTfsField="false" displayTfsMirror="false" onConflict="PSWin">
        <tfsToTarget>
          <target provider="ProjectServerStatusQueue" name="pjResourceFinish" />
        </tfsToTarget>
        <targetToTfs>
          <target provider="ProjectServerPublished" name="pjTaskFinish" />
        </targetToTfs>
      </field>
    </Microsoft.TeamFoundation.Sync.Mapping.Impls.FieldMapping>
  </persistables>
</mappingFile>

Back to top

See Also

Reference

Managing Field Mappings for Integration of Team Foundation Server and Project Server

Concepts

Restrictions on Mapping Project Server Fields for Integration with Team Foundation Server

Project Server Fields Added to Support Data Synchronization

Administering the Integration of Team Foundation Server and Project Server

Other Resources

Customizing the Field Mapping Between Project Server and Team Foundation Server

Change History

Date

History

Reason

April 2011

Removed the Completed Work and Remaining Work fields from the list of required fields that must be mapped. Clarified the mapping of fields in Team Foundation to Project task and resource fields during the status and publishing synchronization stages. Indicated that the tfsMirrorName attribute is required.

Content bug fix.