MS Project Integration with Scrum for Team System 3.0 (SFTS)

When using the Scrum for Team System 3.0 template from EMC (formerly Conchango) the integration with Microsoft Project doesn’t recognize the ImplementedBy link that is used to create the Parent/ Child relationships between the Product Backlog Items (PBIs) and the Sprint Backlog Tasks (SBTs). 

To make this work, you simply have to update the FileMapping.Xml file that is in the Classification directory.  If you need to update a project that is already deployed, however, you’ll need to import the new file with the TfsFieldMapping command on the server.

To update the file, simply add the HierarchyLinkType key.   I have included the entire file for SFTS below.

<?xml version="1.0" encoding="utf-8"?>
<MSProject>
  <Mappings>
    <Mapping WorkItemTrackingFieldReferenceName="System.Id" ProjectField="pjTaskText10" ProjectName="PB Item ID" />
    <Mapping WorkItemTrackingFieldReferenceName="System.Title" ProjectField="pjTaskName" />
    <Mapping WorkItemTrackingFieldReferenceName="System.WorkItemType" ProjectField="pjTaskText2" />
    <Mapping WorkItemTrackingFieldReferenceName="System.AreaPath" ProjectField="pjTaskOutlineCode9" />
    <Mapping WorkItemTrackingFieldReferenceName="System.State" ProjectField="pjTaskText3" ProjectName="PB Status" />
    <Mapping WorkItemTrackingFieldReferenceName="System.IterationPath" ProjectField="pjTaskOutlineCode10" />
    <Mapping WorkItemTrackingFieldReferenceName="System.Rev" ProjectField="pjTaskText23" />
    <Mapping WorkItemTrackingFieldReferenceName="System.AssignedTo" ProjectField="pjTaskResourceNames" />
    <Mapping WorkItemTrackingFieldReferenceName="Scrum.v3.WorkRemaining" ProjectField="pjTaskRemainingWork" ProjectUnits="pjHour" />
    <Mapping WorkItemTrackingFieldReferenceName="Scrum.v3.EstimatedEffort" ProjectField="pjTaskWork" ProjectUnits="pjHour"/>
    <Mapping WorkItemTrackingFieldReferenceName="Scrum.v3.TaskPriority" ProjectField="pjTaskText12" ProjectName="Task Priority" />
    <Mapping WorkItemTrackingFieldReferenceName="Scrum.v3.BusinessValue" ProjectField="pjTaskText13" ProjectName="Business Priority" />
    <LinksField ProjectField="pjTaskText26" />
    <SyncField ProjectField="pjTaskText25" />
    <HierarchyLinkType LinkType="Scrum.ImplementedBy" />
  </Mappings>
</MSProject>
Advertisements

TFS Custom Links in MS Project 2010

As a project manager, one of the most powerful features of Team Foundation Server 2010 is the ability to create links between work items. While there are several different kinds of links that are built into TFS by default, you’ll often want to create custom link types to streamline your reporting as well as the interface within VSTS.

As a project manager, one of the most powerful features of Team Foundation Server 2010 is the ability to create links between work items.  While there are several different kinds of links that are built into TFS by default, you’ll often want to create custom link types to streamline your reporting as well as the interface within VSTS. 

MS Project integrates tightly with TFS and recognises two different kinds of relationships when you are importing work items from the system.

Hierarchy — This is the tree-based relationship that allows work items to roll up into each other.  In MS project, this is represented by summary tasks with all of the children under it.  By default, TFS uses System.LinkTypes.Hierarchy for this relationship.

Dependency — These are the relationships between work items that sets the order that they need to be accomplished in the plan.  This means that the ordering and resource leveling will follow this map.  By default, TFS uses System.LinkTypes.Dependency for this relationship.

If you need to remap these to your custom LinkTypes, it is a simple change to the FileMapping.XML file in the Template’s Classification Directory.  You simply need to add the following keys to the Mappings in the XML, specifying the names of the LinkTypes you’ve created.

HierarchyLinkType
<HierarchyLinkType LinkType=”MyNamespace.LinkTypes.MyHierarchyLinkType” />

DependencyLinkType
<DependencyLinkType LinkType=”MyNamespace.LinkTypes.MyDependencyLinkType” />

Note that the documentation on MSDN has incorrect syntax and will throw an exception when you try to export to MS Project.

Bug in WebPage Control on TFS Process Editor

The problem comes when using the TFS Process Editor (from the TFS Power Tools) to graphically edit the work item. Whenever you save the Work Item with the Process Editor, it reinterprets the @PortalPage variable breaking the link.

 When building process guidance in Team Foundation Server 2010, I like to put a WebPageControl on a tab that can respond contextually to the work item or even the state that the work item is in.  TFS gives you a really great way to present this, but there is a catch.Below, is the XML from the work item definition that will look to the SharePoint 2010 portal and open an HTML document tied to that Work Item in the Process Guidance document library.  While you might want to keep this flat, I have some additional folder structure there to give me flexibility as I choose to redirect on additional values in the future.  The important part of this is the @PortalPage server variable.  This tells the server to look up the SharePoint site for this project and build this into the URL.

<Control Type=WebpageControl LabelPosition=Top Dock=Fill>
   <WebpageControlOptions AllowScript=false ReloadOnParamChange=false>
      <Link UrlRoot=@portalpage UrlPath=Process%20Guidance/Supporting%20Files/{0}/index.html>
         <Param Index=0 Value=System.WorkItemType Type=Current />
      </Link>
   </WebpageControlOptions>
</Control>
 

This is great and provides an intuitive experience for the users of the TFS template.  The problem comes when using the TFS Process Editor (from the TFS Power Tools) to graphically edit the work item.  Whenever you save the Work Item with the Process Editor, it reinterprets the @PortalPage variable breaking the link.

 <Control Type=WebpageControl LabelPosition=Top Dock=Fill>
   <WebpageControlOptions AllowScript=false ReloadOnParamChange=false>
      <Link UrlRoot=http://portalpage UrlPath=Process%20Guidance/Supporting%20Files/{0}/index.html>
         <Param Index=0 Value=System.WorkItemType Type=Current />
      </Link>
   </WebpageControlOptions>
</Control>

I hope this is something that gets fixed in a future version of the Process Editor, but for now, you must open the WIT file in an XML editor and adjust the value manually.