Selecting Time Tracking Options for TFS Integration

Well, it’s been an interesting couple of weeks professionally and on this blog.  During that time, I’ve set my sights on Microsoft Project Professional, SharePoint 2010, Visio Professional, and taken a brief excursion into the world of Ideation.  Spinning the Wheel of Required EPM Consultant Skills this week, I land on the popular TFS-Project Server integration package.

If you’re not familiar with the integration package, it’s an add in that comes as part of MSDN Ultimate that may be installed on your Project Server farm.  Once installed, the integration package essentially marries Project Server to your TFS 2010 SP1 installation – thus allowing bidirectional transfer of tasks and task updates from one to another.

I took a brief look look at the package here and here.  Since then however, I’ve had a number of discussions with clients both during demonstrations and as part of production installations.  This specific post is written to touch on one of those discussions that seems to invariably happen as part of the education process….a review the options available for time tracking.  To date, that discussion usually has revolved around whether the organization would like to track time within TFS or within the Project Server My Tasks/Timesheet interface.

Let’s take a look at the available options…after doing that, let’s take a look at the relevant decision factors.

Default Package Behavior

First off, let’s examine the default behavior of the package.  I am using the demo TFS image downloaded from Microsoft, but have created a new Team Collection and PWA instance to review what happens out of the box and to ensure that everything is set to the default options.

To start out, I create two new tasks, Task 1 and Task 2, then assign those task to the Contoso Administrator.  Each task is 5 days long, which translates into 40 hours (5d X 8h = 40h).

image

I navigate to the Resource Usage View within Microsoft Project Professional to see how those hours are distributed.  See how 8 hours are planned per day, starting on Thursday.  This is important to note because when the time is updated from TFS, the hours simply get booked from the first day on which Planned Work exceeds Actual Work, and then fill in the gaps until the task has been marked completed.  Here, those hours will begin being booked on Thursday and then proceed through the week.

image

We look at Visual Studio to confirm those tasks have successfully transferred from Project Server.

image

Clicking on Task 1, we navigate to the Project Server  tab to see the hours.  In this case, the hours have been pulled correctly from Microsoft Project and populated both in the Project Plan (Project Server) field and in the Work Item field (TFS).

image

I change the hours within TFS to indicate that I have worked 16 hours and have 24 remaining.  Note that I cannot edit the Project Server fields as they are greyed out.  These fields serve as a reference for what is actually in the project schedule.

image

Going back into Project Server, I look at the Approval Center page and the hours have been booked to the earliest dates available for the task.

image

After approving the changes, I look at the schedule in Microsoft Project Professional.  Everything looks good.  The task has been updated correctly.

image

Again, I review the task in the Resource Usage View to confirm that everything has updated correctly.  See how the hours are allocated against the first couple days of the task?

Picture the task as a series of glasses being filled with water, each glass representing one of the days of the task.  Once the first glass is filled, I move on to the second, then the third, and so on.

image

The moral of the story is that hours may be updated against the item in TFS, and those hours then get booked against the default hours for the task.  If the task was scheduled to start on Monday, then those hours are booked on Monday….and then any succeeding day on which the task is scheduled.

Note that this could create a potential issue where a task scheduled in the future is completed ahead of schedule.  If the data was updated within TFS, the task will be marked as complete in the future – generally a bad practice in the scheduling world.

Using Project Server My Tasks

So what happens if instead of simply booking time against a task, I desire to track when the work actually happened?  Instead of simply assuming that 8 hours were booked each day, I want the developer to book 4 hours on Monday, 2 hours on Tuesday, and 10 hours on Wednesday. 

Let’s look at the mechanics of this process first, then let’s back up and look at the implications.

Project Server allows the administrator to either set a standard project update mechanism or for each project manager to define the mechanism for their own projects.  In the following screenshot, I am setting the project to allow users to submit Actual Work per Day and then publishing the project.  If that option is greyed out, you will want to discuss with your server administrator.

image

I publish the project and navigate to the My Tasks screen using my browser.  Within this interface, I can update the actual hours worked per day (or per week).

image

I can also update the Remaining Work on the task.

image

Accepting those updates in Microsoft Project yields the following view.  Note that instead of simply booking a default 8 hours to the first two days of the task, I have booked 4 hours to each of the first two days.

image

Publishing the schedule pushes those task updates into TFS.  Here things start to look a bit strange.  I see that the Project Plan hours have updated correctly, but the TFS fields have not been updated, and still read Actual Work = 0 and Remaining Work = 40.

image

This gets a bit confusing admittedly.  What appears to be happening is that changes to the hour estimates in Project Server are communicated into TFS, but not transferred into the Work Item fields.  Fair enough.  I can see where that would make sense, i.e. I want to communicate to the developer what the schedule says, but I also want the developer to be able to make his own estimates – in the Work Item fields.

So I go ahead and make those changes in the Work Item fields.  I update TFS to read Actual Work = 10 and Remaining Work = 10.  I save the item.

image

The change in the TFS record then forces the change in Project Server.  Below, that change is visible in the PWA Approval Center.

image

…which then updates the project schedule.  My task in Project has now been overwritten by the TFS data.

image

If I want my users to update their hours in Project Server, this could be troublesome behavior – i.e. that the user can always update the hours within TFS and override the PWA timesheet interface.

Modifying the Default Behavior

But what if I want to change the default behavior?  What happens if I decide to make a commitment to put all of my TFS tasks into Project Server for tracking, and more importantly for my developers to track their time in a full featured timephased timesheet?

Well, after playing with the settings it would seem that this may be resolved with some minor changes to how the mapped fields are configured.

Take a look at the default field mapping.  When downloaded and opened as an Excel file, it appears as follows.  Note the DisplayTFSField and DisplayTFSMirror properties for the Completed Work and Remaining Work fields.

image

I set those two properties to “False” in the XML source file and re-upload the mapping.

image

Navigate to the Project Server tab for a TFS item.  See how the TFS values are not even displayed.  Two sets of books are no longer displayed.  More importantly, developers are forced to navigate to the PWA timesheet interface to update their tasks.

image

Note that since this is a hypothetical scenario, I admit that I haven’t worked through all of the implications of hiding the TFS fields for the Project Server fields, but I’d be curious if anyone has any feedback.

Decision Factors

For the most part, my conclusion is that the default behavior is structured to support an organization where tasks are updated primarily through TFS and then passed back into Microsoft Project.  Changes to TFS override Project Server.  Changes to Project Server get passed into TFS for reference.

Based on my discussions with clients to date, I would agree with this bias in the configuration of the default options.  Most of the groups I’ve discussed this functionality with have definitely leaned in that direction – especially as using TFS to update tasks means that they could leverage TFS to manage much of the detailed complexity of individual project schedules.

That being said, the discussion usually touches on a number of factors:

  1. Does the organization desire to keep a daily/weekly view of actual work performed?
  2. Is TFS being used to keep extraneous details about tasks out of project schedules, thereby allowing the project manager to focus on the high level details?
  3. Are developers expected to use any tool other than TFS to track their own hours?

Pending the resolution of any of those questions, the administrator may wish to look at the specific configuration of the integration package.

About these ads

About Andrew Lavinsky

I am a consultant with the UMT Consulting Group, one of the premiere project portfolio management consulting companies in the world, galaxy, or universe for all I know.
This entry was posted in TFS and tagged , . Bookmark the permalink.

5 Responses to Selecting Time Tracking Options for TFS Integration

  1. Carl Dalton says:

    Really interesting thoughts here Andrew. I confess I’ve not got knee deep in this area yet!

    I think there’s a trick missing in the TFS integration and that is where you are working in a timesheet-focused organisation (time by day). What would be ideal is a “by day” component to the TFS data entry to fully integrate into a time by day tracking method, otherwise your driving the dev team to fill in time/est in TFS and then submit a timesheet – dual entry. Something like the old pop-up for by day data entry in the PWA My Tasks view.

    Following your guide the points below may be an option but I am not sure how usable this would be:
    - EPM for statusing: Actual Work entered in Timesheet in single entry mode daily, and submitted to PM’s. Lock down estimate to complete entry in PWA
    - TFS for forecasting: estimate to complete maintained in TFS and updated to EPM Tasks, lock down Actual Work entry.

    This still doesn’t feel ideal as it’s two tools for one purpose.

    One other point: If you only enter time in EPM as per your example, I’d be interested to now if this would then cascade through to Burn down reports?

    I feel some research coming on :)

    • True. Unfortunately, my understanding is that TFS doesn’t have a timephased time entry system built into the database schema. If I had my druthers, I would like to see a separate timesheet application that sits on SharePoint and that would have some sort of standard hooks into any of the Microsoft suite of work management applications: Project, TFS, a Help Desk tool….there’s third party tools like that right now, but I’d definitely like to see a native product.
      On the other hand, just out of curiousity, I don’t think it would be too hard to lock down the Remaining Work in Project Server (pending research to confirm.) More importantly there however, you lose the ability to farm out complexity from Project Server into TFS – which as I see it is one of the main benefits of this tool.

  2. Andrew, thanks for this blog. I really needed these insights and could have spent a morning figuring it out :-)

    As to your comment
    “Note that this could create a potential issue where a task scheduled in the future is completed ahead of schedule.  If the data was updated within TFS, the task will be marked as complete in the future – generally a bad practice in the scheduling world.”
    you may want to look into the Project Professional advanced options called “Move actuals before status date”. I will shortly, but this probably mitigates that issue.

    Cheers,
    Bram

    • Unfortunately, the TFS import mechanism bypasses the Project Pro “Move Status” function. Some VBA would probably do the trick in Project Pro to move future completed tasks back to the status date though.

      • Indeed, I saw that when I tried it this morning. Thanks for checking/confirming. And indeed, a macro moving completed parts before the status date is not hard. It’s just something my current client wouldn’t want me to do because they want to avoid any custom code…

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s