Restrictions on mapping Project Server fields in TFS-Project Server integration

TFS 2015 | TFS 2013

Note

TFS 2017 and later versions no longer support native integration with Microsoft Project Server. If you upgrade to TFS 2017 or want to use a third party option, see Synchronize TFS with Project Server.

When you add fields to participate in data synchronization between Visual Studio Team Foundation Server (TFS) and Microsoft Project Server, make sure that you do not map fields that are restricted. You map fields by customizing the field mappings for a project collection. You can map both built-in and custom fields in Project. You can map some of those fields only to the status queue and some fields only to TFS. In general, you should map resource-level information, pjResource* fields, from Team Foundation Server to Project Server within the tfsToTarget element and only task-level information, pjTask* fields, from Project Server to TFS within the targetToTfs element. For more information, see Field mapping reference.

You must also match the data types of mapped fields, both built-in and custom, according to the criteria that this topic describes. For more information about built-in fields, see Available fields reference.

Restrictions on units of measurement and renaming

The following restrictions apply to the mapping of fields that participate in data synchronization:

  • You cannot customize the units of mapped fields. For example, when you add the pjResourceAssignmentUnits to the field mappings, it is added using the unit of percentage, and you cannot change that measure.

  • Although you can add the Finish Date (pjFinishDate) field to the mappings, any value that you set in Team Foundation is not sent to Project Server. This restriction is by design. The project manager must set the Finish Date in the enterprise project plan.

  • If you rename the ActiveTfsAssignment(TFS) field in Project and try to publish your enterprise project plan, the Validation Resolution dialog box will appear. To resolve this condition, you must rename the field to its original name.

Task name and work item title field

Project Name (pjTaskName) is the only field that is mapped from Project Server to Team Foundation and the status queue. This field maps to the Title (System.Title) field in Team Foundation. No other fields can be mapped to both Team Foundation Server and the status queue. The two-way mapping allows changes in both the enterprise project plan and project to flow in both directions.

This mapping is represented in the following code of the field mappings:

<field tfsName="System.Title" tfsMirrorName="Mirror.System.Title" displayTfsField="false" displayTfsMirror="false" onConflict="PSWin">  
&nbsp;&nbsp;&nbsp;<tfsToTarget>  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<target provider="ProjectServerStatusQueue" name="pjTaskName" />  
&nbsp;&nbsp;&nbsp;</tfsToTarget>  
&nbsp;&nbsp;&nbsp;<targetToTfs>  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<target provider="ProjectServerPublished" name="pjTaskName" />  
&nbsp;&nbsp;&nbsp;</targetToTfs>  
</field>  

Fields available for mapping to the status queue

You can map the following resource-related fields from Project Server to the Status queue. You can add these fields to the field mapping within the tfsToTarget element to send status updates to Project Server.

  • pjResourceActualFinish
  • pjResourceActualOvertimeWork
  • pjResourceActualStart
  • pjResourceActualWork
  • pjResourceAssignmentUnits
  • pjResourceConfirmed
  • pjResourceFinish
  • pjResourceOvertimeWork
  • pjResourcePercentWorkComplete
  • pjResourceRegularWork
  • pjResourceRemainingOvertimeWork
  • pjResourceRemainingWork
  • pjResourceStart
  • pjResourceUpdatesNeeded
  • pjResourceWork

In the following example, the Project Server Resource Work field is mapped to the MSFT.MappedTopjResourceWork field in Team Foundation for the status queue target.

<field tfsName="MSFT.MappedTopjResourceWork" tfsMirrorName="Mirror.MSFT.MappedTopjResourceWork" displayTfsField="true" displayTfsMirror="true">  
&nbsp;&nbsp;&nbsp;<tfsToTarget>  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <target provider="ProjectServerStatusQueue" name="pjResourceWork" />  
&nbsp;&nbsp;&nbsp;</tfsToTarget>  
</field>  
  

You can also combine the mapping of a resource-specific field with a task-specific field to form a full mapping. In the following example, the pjTaskWork field is mapped within the targetToTfs element to provide a complete round-trip mapping.

<field tfsName="MSFT.MappedTopjResourceWork" tfsMirrorName="Mirror.MSFT.MappedTopjResourceWork" displayTfsField="true" displayTfsMirror="true">  
&nbsp;&nbsp;&nbsp;<tfsToTarget>  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <target provider="ProjectServerStatusQueue" name="pjResourceWork" />  
&nbsp;&nbsp;&nbsp;</tfsToTarget>  
&nbsp;&nbsp;&nbsp;<targetToTfs>  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <target provider=" ProjectServerPublished" name="pjTaskWork"/>  
&nbsp;&nbsp;&nbsp;</targetToTfs>  
</field>  
  

Fields available for mapping from Project Server to Team Foundation only

You can map the following task-specific fields from Project Server to Team Foundation Server. You can also combine the mapping of a task-specific field with a resource-specific field to form a full mapping.

  • pjTaskActualCost
  • pjTaskActualDuration
  • pjTaskActualFinish
  • pjTaskActualOvertimeCost
  • pjTaskActualOvertimeWork
  • pjTaskActualStart
  • pjTaskActualWork
  • pjTaskACWP
  • pjTaskBCWP
  • pjTaskBCWS
  • pjTaskBudgetCost
  • pjTaskBudgetWork
  • pjTaskCost
  • pjTaskCPI
  • pjTaskCreated
  • pjTaskCV
  • pjTaskCVPercent
  • pjTaskDeadline
  • pjTaskDuration
  • pjTaskDuration1
  • pjTaskDurationVariance
  • pjTaskEAC
  • pjTaskEarlyFinish
  • pjTaskEarlyStart
  • pjTaskExternalTask
  • pjTaskFinish
  • pjTaskFinishVariance
  • pjTaskFixedCost
  • pjTaskFreeSlack
  • pjTaskHyperlink
  • pjTaskHyperlinkAddress
  • pjTaskHyperlinkSubAddress
  • pjTaskIgnoreResourceCalendar
  • pjTaskLateFinish
  • pjTaskLateStart
  • pjTaskOverallocated
  • pjTaskOvertimeCost
  • pjTaskOvertimeWork
  • pjTaskPercentComplete
  • pjTaskPercentWorkComplete
  • pjTaskPhysicalPercentComplete
  • pjTaskPriority
  • pjTaskRecurring
  • pjTaskRegularWork
  • pjTaskRemainingCost
  • pjTaskRemainingOvertimeCost
  • pjTaskRemainingOvertimeWork
  • pjTaskRemainingWork
  • pjTaskSPI
  • pjTaskStart
  • pjTaskStartVariance
  • pjTaskSummary
  • pjTaskSV
  • pjTaskSVPercent
  • pjTaskTCPI
  • pjTaskTotalSlack
  • pjTaskVAC
  • pjTaskWork
  • pjTaskWorkVariance
  • pjTaskBaselineCost
  • pjTaskBaselineWork
  • pjTaskBaselineBudgetCost
  • pjTaskBaselineBudgetWork
  • pjTaskBaselineDuration
  • pjTaskBaselineStart
  • pjTaskBaselineFinish
  • pjTaskBaseline1Cost
  • pjTaskBaseline1Work
  • pjTaskBaseline1BudgetCost
  • pjTaskBaseline1BudgetWork
  • pjTaskBaseline1Duration
  • pjTaskBaseline1Start
  • pjTaskBaseline1Finish
  • pjTaskBaseline10Cost
  • pjTaskBaseline10Work
  • pjTaskBaseline10BudgetCost
  • pjTaskBaseline10BudgetWork
  • pjTaskBaseline10Duration
  • pjTaskBaseline10Start
  • pjTaskBaseline10Finish

In the following example, the Project Server Resource Work field is mapped to the MSFT.MappedTopjTaskBaseline1Start field in Team Foundation for the Team Foundation Server target.

<field tfsName="MSFT.MappedTopjTaskBaseline1Start" tfsMirrorName="Mirror.MSFT.MappedTopjTaskBaseline1Start" displayTfsField="true" displayTfsMirror="true">  
&nbsp;&nbsp;&nbsp;<targetToTfs>  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <target provider="ProjectServerPublished" name="pjTaskBaseline1Start" />  
&nbsp;&nbsp;&nbsp;</targetToTfs>  
</field>  
  

Fields restricted from mapping

The following Project Server fields are restricted from mapping. Do not add these fields to the field mapping between Team Foundation and Project Server.

  • pjResourceID
  • pjResourceNotes
  • pjTaskCalendar
  • pjTaskCalendarGUID
  • pjTaskCommitmentFinish
  • pjTaskCommitmentGuid
  • pjTaskCommitmentStart
  • pjTaskCommitmentType
  • pjTaskConfirmed
  • pjTaskConstraintDate
  • pjTaskConstraintType
  • pjTaskContact
  • pjTaskCritical
  • pjTaskDelay
  • pjTaskHyperlinkScreenTip
  • pjTaskID
  • pjTaskLevelCanSplit
  • pjTaskLevelDelay
  • pjTaskNotes
  • pjTaskParentTask
  • pjTaskPreleveledFinish
  • pjTaskPreleveledStart
  • pjTaskProject
  • pjTaskResume
  • pjTaskRollup
  • pjTaskStartSlack
  • pjTaskStop
  • pjTaskSubproject
  • pjTaskSubprojectReadOnly
  • pjTaskSuccessors
  • pjTaskUniqueID
  • pjTaskWBS

Data types and field mapping criteria

When you map a field from Team Foundation Server to Project Server, make sure that you match the data type of the Project Server field with that defined for the Team Foundation field according to the criteria that the following table outlines. In addition to the built-in fields that are listed earlier in this topic, you can create custom enterprise task-type fields and map them to support synchronization in either or both directions. For custom fields, make sure that you match the data types of fields as the third column of the table indicates. For more information, see Creating Lookup Tables and Enterprise Custom Fields.

Note

The units for work and task duration are specified in hours. You cannot customize the units.

Team Foundation Server Fields that are built in to Project Server Custom enterprise fields in Project Server
DateTime Date Date
Double Work, Cost, Duration, Count, Percentage Number, Cost, Duration
Integer Count, Percentage Number
String Text Text
TreePath Text Text

Field mapping reference
Customize the field mapping