When I heard from TFS the first time in 2005 I was very delighted to see the MS Project integration with TFS. When starting my first project in TFS, I immediately started to use MS Project to plan the project. Finally I was able to see what the impact would be for the project and also use it to communicate very well with the developers, testers, etc.
After the first week I realized that MS Project is very nice to show an initial (high level) project plan, but to use it for progress tracking it is not the best tool. Let's tell why.
Take a very simple project plan
I upload the data to TFS, and I am going to work on the second task. The following day I level the resources to see what the changes are to the original project plan. The result of this is:
According to this plan, I have done nothing on monday and that I will have no tasks for today. This leads to a delay in my project plan of a day, although in reality there is no delay at all. I would have expected the following plan:
This behaviour is by design in MS Project: any completion of a task will not be moved when leveling the resources. And this behaviour did make me decide that to not use MS Project anymore.
Lately a new user wanted to use MS Project and asked me whether it was possible to work with MS Project. I discussed with him why he shouldn't use MS Project, but then he came with a brilliant idea. He wanted to see the remaining work only. This made me think.
Imagine that the Completed Work will not be synchronized with TFS, then a task would be always 0% completed, so the remaining work of the task will be moveable, and the completed part of the task will disappear from the project plan. Let's try that to our example.
Starting with the original plan
Then mark the second task as completed. This is now done by setting the remaining work of the task to 0. This make the following plan when leveling the resources at
This gives me exactly what I am looking for: it shows me where my critical path is and what the finish date for the project will be.
To implement this solution, do the following steps
Open the Visual Studio Command prompt (Start -> All Programs -> Microsoft Visual Studio 2008 -> Visual Studio Tools -> Visual Studio 2008 Command Prompt)
Type "tfsfieldmapping download <tfsserver> <team project> <local file>, for example tfsfieldmapping download http://MyTfsServer:8080 MyTeamProject c:\temp\mapping.xml
Open the downloaded file (in the example c:\temp\mapping.xml) in a xml editor (eg. in Visual Studio)
Remove the line
Mapping WorkItemTrackingFieldReferenceName="Microsoft.VSTS.Scheduling.CompletedWork" ProjectField="pjTaskActualWork" ProjectUnits="pjHour" />
Save the file
Type "tfsfieldmapping upload <tfsserver> <team project> <local file>, for example tfsfieldmapping upload http://MyTfsServer:8080 MyTeamProject c:\temp\mapping.xml
When you create a new MS Project and connect it to the TFS server, there is no synchronization of the completed work, so when you refresh the work items, only the remaining work will be updated and the completed work remains 0.