Welcome to Manicprogrammer Sign in | Join | Help

Requested: A Simple Time Entry Control For TFS That Some Organizations Have Used

Where I show a very simple time entry control implementation for TFS and discuss the sad lack of wider ISV partner products for TFS.

The topic of time keeping in relation to Team Foundation Server (TFS) work items is always popular or infamous depending on your point of view. On various lists I participate the topic comes up with some regularity. This is a perfect example of where I would suspect that Microsoft expected greater involvement from partners. Sadly this has been lacking. I have never heard anyone within Microsoft officially say that they expected partners to use the extensive extensibility of the product to have met this market need but I can only imagine it is the case. I responded out to one of these lists last weeks about a simple custom control I did for some work items. I was asked by a few people later to let them take a look at it. So I will drop some screen shots here and take the opportunity to express my disappointment that the wider partner community has not created more widely adopted and influential commercial products of all types that tie into TFS.

 

The Dearth of Truly Strong Extension Products

First, let me start with a long held belief that the market is under served by third party tools that hook into TFS to add features for specific needs. I think the area of time entry related to work items is a good example. There is at least two commercial products I list at the end with some notes. In addition I know there are countless other one-off shareware, pseudo-commercial or FOSS solutions in addition to who knows how many blog posts on the same (surprisingly few but by Internet standards but doubtless large nonetheless). Then there is the use of Microsoft Project Server for time entry which is a nice solution but often not exactly what people are looking for especially if the organization doesn't use Project Server. There is plenty of room for some truly viable third party tools or even adoption of a starting code base such as TFS Timesheet on CodePlex but widespread adoptions have not materialized to date. At the risk of offending those third parties out there that do have offerings I can only think of two products that I consider the de facto must haves- one commercial and bridging the gap into the non-Microsoft development teams - Teamprise- and the other with no licensing cost - Attrice Team Foundation Sidekick. Why the dearth of viable products? That's another post but in short I think there are many reasons from great off-cycle power tool releases from Microsoft to changing world of open projects to lack of investment by third parties for understandable fear of the window of opportunity before Microsoft supplants the need with a baked in solution. Not the least of reasons is indicative in the time entry problem itself. Unless an investment is made by the creator to make the mechanisms and points of attachment as open and robust as the core Team Foundation Server product there exists the issue that every organization does their time collection differently and expects different features and would want them all to play nicely with their very highly extended work items and types. The latter is a big barrier to entry. In my ideal world Microsoft would not provide the time entry solution but would instead would provide a higher level common interface for core function points related to this domain e.g. api and services layers. Third party systems could connect to this interface set to tie into the storage, relationship and warehouse propagation of this information- that may or may not work- it needs more thought. Perhaps that is what a third party needs to provide - (sarcasm) we all see how successful the Requirements Authoring Starter Kit has been - not successful at all as far as I can tell- sadly. This is not meant as criticism but purely my analysis of what is missing. I reserve all criticism for myself because I love the study of process and tools and am a perfect target to be extending these systems with viable products but I have done less than others in this area. I only have to look at my own motivations to make conjecture on what the reasons for others not jumping in more fully for a wider range of commercial products from ISVs.

Let me get off my soapbox that is directed squarely at a mirror and move onto a simple example of what I have done for the most simple of time entries into work items.

 

The Poor Man's TFS Time Entry

So often what I have seen is people trying to associate time entry on the work item to the 'Assigned To' person. They quickly hit a wall in that over the lifetime of a work item most organizations have changing owners for that item. Even in the most simple of cases for a development work item there is a dev who programmed it and a QA person who may be logging time against it as well. Start adding in people for code reviews and collaboration over design and implementation that may never own the work item and a relationship between the 'Assigned To' and the time entry is really not workable. Generally also since the storage mechanism built into TFS by default for a field is a single value storing a list of values that represent effort at any given point in time becomes an exercise in trying to use the work item history. Even if you go through all the analysis of previous work item time subtracted from the new entry for work item time at point P to get the time for a given day you still have no control over editing past entries and still no support for the 'non-owner' assigning time.

Generally people end up with two solutions to issue. Store the time entry info outside the work item itself so that the proper granularity can be stored or do some creative storage and even more creative reporting by storing the data as a string value that is really XML or some delimited value. My little approach is no different. I store the data in an entirely different database in one of the world's simplest schemas.

mistime

I would image I could create a Warehouse Adapter and could come up with a good means to push this actually into the warehouse in a suitable fashion... but I currently don't do so nor do I have plans to do so unless I take it on as a purely academic exercise.

I created a custom control that I place into a tab on the work items that has a means to do data entry. It makes entry into a grid. To edit an existing entry select that grid item and the upper portion updates with the corresponding data. The user can edit the values and save. Outside using the work item's Id and being hosted by the work item it really is entirely a separate item from the work item. It has its own save function. Note that it doesn't ask for the user and it's not based on the user who owns the task but the network user that is logged into the TFS session. All time entry is for the logged in person- irrespective of the owner. The control handles its own data persistence and retrieval. It really is not doing any storage inside the work item. For reports I link to that database a report across the databases. One of the best things is that since it is a control in the work item itself when a dev goes to check in and associate to the work item then can just jump over to the time entry tab and make an entry.

simple tab no save
Figure 1. Simple time entry control in tab that ensures the work item is already saved before use

 

 screen 2
Figure 2. Simple parent work item with simple time entry control

 

Simple and  crude but it works for the case it was established to support. I am working on a Silverlight control that is hosted inside a browser control so that I can try to just reuse the same underlying control for both the winform and webform work item interfaces. It's mostly just a good excuse to play more with Silverlight.

This isn't a recommendation of what other should do just a simple example of a basic piece of functionality that actually is only loosely related to the work item and taking advantage of the hosting of a custom control with the work item to make it easy to expose the functionality to the user and get that very basic relationship of the work item id. One piece I yet to put into place that is deeply missed is a different view of the data that is more of a date based grid on a set of work items and a corresponding web based view that shows in a similar classic time sheet grid view of days across the x-axis and work items down the y-axis. In that view the work items would be a list from a query or the work items that the user has associated to changesets they have submitted or were an owner of the work item in its lifetime or has time against. Ideally the it should just populate from a WIQ so that you can have multiple criteria for what populates into your grid.

 

 

A small sampling of TFS time entry products:

  • TX Chrono - which I cannot vouch for or against as I have not used it and don't know anyone that has actually deployed it- though I have heard grumbling more than once about it's installation and thus usability
  • TeamDef, which I also have never used but looks to be a nice set of many features. I guess I should try them and report back.
  • One well known open source CodePlex project: http://www.codeplex.com/tfstimesheet has some limited traction but no adoption or enthusiasm to become a product of choice- I am also derelict in that I have never looked at the license on it - but a quick glance shows it GPL V2.
Published Sunday, November 16, 2008 12:39 PM by michaelruminer
Filed under

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

# Requested: A Simple Time Entry Control For TFS That Some Organizations Have Used | bestwebhostingservices.com

Tuesday, November 18, 2008 9:25 AM by Team System News

# VSTS Links - 11/18/2008

Patrice Calve on Migrating VSS 2005 to TFS 2008 Ayman Badawi on TFS 2008 Web Services List Brian Harry...

Monday, January 19, 2009 10:29 AM by Brandon Kelly

# re: Requested: A Simple Time Entry Control For TFS That Some Organizations Have Used

Hi Michael,

I'm interested in finding out of I could obtain the code to the accompanying article (TFS Time Entry).  I'd like to use this as a start for a time tracking system we're building.  Any help you could offer would be greatly appreciated.

Thanks,

Brandon

Monday, January 19, 2009 10:59 AM by michaelruminer

# re: Requested: A Simple Time Entry Control For TFS That Some Organizations Have Used

I have had a few requests. I'll post up a sample.

Friday, February 20, 2009 2:19 PM by Michael Ruminer

# re: Requested: A Simple Time Entry Control For TFS That Some Organizations Have Used


Enter the text you see in the image:

Leave a Comment

(required) 
required 
(required)