{"id":6681,"date":"2009-05-18T07:53:00","date_gmt":"2009-05-18T07:53:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/bharry\/2009\/05\/18\/tfs-2010-work-item-tracking\/"},"modified":"2018-08-14T00:22:08","modified_gmt":"2018-08-14T00:22:08","slug":"tfs-2010-work-item-tracking","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/bharry\/tfs-2010-work-item-tracking\/","title":{"rendered":"TFS 2010 Work Item Tracking"},"content":{"rendered":"<p>In my last 2010 post, I covered Setup, Admin &amp; Ops.&nbsp; In this post I\u2019m going to cover work item tracking features.&nbsp; The truth, however, is that the lines between the next 3 posts are going to be pretty blurry.&nbsp; I\u2019ve tried to think about ways to partition it but Work Item Tracking, Project Management and Reporting are all heavily interrelated.&nbsp; I considered writing a single post for them but then it would be 30 pages or something silly.&nbsp; So, I\u2019m going to break them up but bear with me on the rough edges.<\/p>\n<h3>Hierarchical work items<\/h3>\n<p>Perhaps the banner feature in TFS 2010 is the ability to break down work items into hierarchies.&nbsp; The most common use for this is task decomposition \u2013 breaking high level tasks down into sub-tasks and those down into further sub-tasks, etc.&nbsp; However, I expect people will get very creative with what they want to arrange hierarchically.&nbsp; Prior to 2010, you can associate work items with \u201crelated\u201d links and do some reporting around that but easily managing them as a hierarchy was not possible.&nbsp; Here\u2019s a screenshot of a totally hypothetical project I\u2019ve made up.&nbsp; Things to note\u2026<\/p>\n<ul>\n<li>There\u2019s a combo box at the top of the query editor called \u201cType of Query\u201d and it is set to Tree of Work Items.<\/li>\n<li>The icon next to \u201cOpen Tasks\u201d in the Team Explorer shows multiple indicate that this is a tree query.<\/li>\n<li>The results list shows the title indented following the hierarchy and allows for expanding and collapsing the results.<\/li>\n<li>You can\u2019t see this, but rearranging your hierarchy is as simple as dragging and dropping one work item on another.<\/li>\n<\/ul>\n<p>You can see right click menu items for the obvious things you\u2019d like to do, add a new child, outdent, indent, etc.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/8\/2019\/02\/image_4.png\"><img decoding=\"async\" title=\"image\" height=\"572\" alt=\"image\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/8\/2019\/02\/image_thumb_1.png\" width=\"804\" border=\"0\"><\/a> <\/p>\n<p>&nbsp;<\/p>\n<p>Microsoft Excel integration has also been enhanced to support work item hierarchies as well\u2026&nbsp; As you can see, we use multiple \u201cTitle\u201d columns to represent the hierarchy level in Excel.&nbsp; You can also see some of the new Tree features in the ribbon.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/8\/2019\/02\/image_6.png\"><img decoding=\"async\" title=\"image\" height=\"567\" alt=\"image\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/8\/2019\/02\/image_thumb_2.png\" width=\"804\" border=\"0\"><\/a> <\/p>\n<p>And lastly, the hierarchy round trips with Microsoft Project as well\u2026&nbsp; As you can see here, Project can also be used as a roll up engine to compute rolled up schedule numbers.&nbsp; In previous versions of TFS, the project hierarchy was only persisted in the MS Project file so TFS users couldn\u2019t see the hierarchical relationships.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/8\/2019\/02\/image_8.png\"><img decoding=\"async\" title=\"image\" height=\"591\" alt=\"image\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/8\/2019\/02\/image_thumb_3.png\" width=\"804\" border=\"0\"><\/a> <\/p>\n<h3>Custom link types<\/h3>\n<p>We have added the ability to define custom link types in TFS 2010.&nbsp; In previous version there was really only one work item to work item link type called \u201crelated\u201d.&nbsp; Now you can define your own link types that can be used in querying and reporting (see more on querying in the next section).&nbsp; As an example, as part of the new TFS base process templates, we\u2019ve added a link type called Tests\/Tested By.&nbsp; It is defined to relate a test case and a user story and identifies the set of test cases for a user story.&nbsp; However, you can define your own with whatever semantics you choose.<\/p>\n<p>When you create a link type, you can define one of 4 link \u201ctopologies\u201d:<\/p>\n<ul>\n<li><strong>Network<\/strong> \u2013 Much like our existing \u201crelated\u201d links.&nbsp; Any two items can be connected and the link has the same name at both ends.<\/li>\n<li><strong>Tree<\/strong> \u2013 A hierarchical link type that defines a \u201cparent\/child\u201d relationship.&nbsp; A parent can have many children but a child can only have one parent of a given tree link type.<\/li>\n<li><strong>Dependency<\/strong> \u2013 A directed graph where links connect work items but there can\u2019t be a cycle.<\/li>\n<li><strong>Directed network<\/strong> \u2013 kind of a half way type between network and dependency.&nbsp; There are no constraints on what or how many work items can be related but each end of the link has a unique name (e.g. Tests &amp; Tested By)<\/li>\n<\/ul>\n<h3>Link Queries<\/h3>\n<p>Now that we have custom link types you can do some very cool stuff with traceability.&nbsp; The reporting system always allowed you to report on links but now you can filter by link type and Team Explorer and Team System Web Access also enable querying on links.&nbsp; So using the test case tests user story link I mentioned above, here\u2019s a sample query in Team Explorer.&nbsp; Notice that the Type of Query combo now says Work Items and Direct Links.&nbsp; Also, notice that the query definition has a lot more filters.&nbsp; Following the grid that selects User Stories, there\u2019s another grid that selects how you want to filter what the matched user stories are linked to (Test Cases that are not closed, in this example).&nbsp; In the linking filters you have 3 main options:<\/p>\n<ol>\n<li>Return all top level work items \u2013 shows all work items that match the first grid control and then and matching linked work items.<\/li>\n<li>Only return items that have the specified links \u2013 shows the same results minus any work items matching the first grid that have no related work items matching the second grid.<\/li>\n<li>Only return items that do not have the specified links \u2013 shows only items that match the first grid but have no linked work items matching the second grid \u2013 for example, if I wanted to see user stories that had no test cases associated with them.<\/li>\n<\/ol>\n<p>And finally, you can filter by one or more link types.&nbsp; You can see by my query results that my sample project has 3 user stories, 2 of which each have one test case.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/8\/2019\/02\/image_12.png\"><img decoding=\"async\" title=\"image\" height=\"587\" alt=\"image\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/8\/2019\/02\/image_thumb_5.png\" width=\"804\" border=\"0\"><\/a> <\/p>\n<p>And, of course, all of this works in Web Access as well, but just to prove it, a picture is worth a thousand words\u2026<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/8\/2019\/02\/image_14.png\"><img decoding=\"async\" title=\"image\" height=\"584\" alt=\"image\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/8\/2019\/02\/image_thumb_6.png\" width=\"804\" border=\"0\"><\/a> <\/p>\n<h3>New links control<\/h3>\n<p>Now that relationships between work items are playing a more first class role in the system it seems obvious you are going to want to do more with them on the work item form itself\u2026 enter the new work item form links control.&nbsp; Here are the characteristics of it:<\/p>\n<ol>\n<li>You can have as many links controls on your form as you like.<\/li>\n<li>Each links control can be separately filtered.<\/li>\n<li>The links control can be configured to pull fields from the target work item and render them in columns so you don\u2019t have to open the target work items to see anything about it.<\/li>\n<li>The \u201cAdd\u201d button that adds new linked work items can be filtered to a set of link types to save mouse clicks.<\/li>\n<li>The linked items can easily be opened in Excel.<\/li>\n<li>And probably a few other things I\u2019m forgetting.<\/li>\n<\/ol>\n<p>So on with a screenshot.&nbsp; Here\u2019s an example of the Test Cases tab on a User Story work item.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/8\/2019\/02\/image_16.png\"><img decoding=\"async\" title=\"image\" height=\"587\" alt=\"image\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/8\/2019\/02\/image_thumb_7.png\" width=\"804\" border=\"0\"><\/a> <\/p>\n<h3>Other new work item controls and improvements<\/h3>\n<p>There are a bunch of other work item control improvements in addition to the links control.&nbsp; They include:<\/p>\n<ul>\n<li><strong>HTML control<\/strong> \u2013 You can now have a work item control that renders HTML from a configured URL.&nbsp; This is going to make it much easier to host external content in a work item form.&nbsp; In some cases, it will replace the need to build custom work item controls.<\/li>\n<li><strong>Link Labels<\/strong> \u2013 Labels on a work item form can now be configured to be clickable and will invoke a browser to display the results of an url.<\/li>\n<li><strong>Edit controls<\/strong> &#8211; Edit controls now have adjacent toolbars that enable rich editing (fonts, colors, bold, italic, etc).&nbsp; Edit controls will also now automatically convert a typed url into a clickable link.<\/li>\n<li><strong>Labels<\/strong> \u2013 You can now have simple stand alone labels if you want to just put text on a form without an associated input field.<\/li>\n<\/ul>\n<h3>Field comparison queries<\/h3>\n<p>In previous versions of TFS, work item query clauses could only compare a field against a constant.&nbsp; In 2010, they can now compare fields with each other.&nbsp; So, for example, if I wanted to find all tasks where the Completed Work is greater than the Original Estimate, I could do this\u2026&nbsp; I suspect you\u2019ll be able to think of lots of novel ways to use this.&nbsp; We ran across the requirement when building our Project Server integration and try to find a way to easily identify work items where the project manager rejected cost changes made by the developer.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/8\/2019\/02\/image_18.png\"><img decoding=\"async\" title=\"image\" height=\"424\" alt=\"image\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/8\/2019\/02\/image_thumb_8.png\" width=\"804\" border=\"0\"><\/a> <\/p>\n<h3>Group membership queries<\/h3>\n<p>It\u2019s now possible to easily write queries that filter by groups of people.&nbsp; TFS has always had the ability to synchronize with Active Directory to import group information.&nbsp; Now you can write queries that enable you to easily filter by group membership.&nbsp; For example, I could write a query to find all work assigned to \u201cMy team\u201d like this\u2026<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/8\/2019\/02\/image_20.png\"><img decoding=\"async\" title=\"image\" height=\"511\" alt=\"image\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/8\/2019\/02\/image_thumb_9.png\" width=\"804\" border=\"0\"><\/a> <\/p>\n<p><strong>Query Folders<\/strong><\/p>\n<p>The more powerful we make queries, the more of them you want to have \u2013 and that means you are going to need a way to organize them.&nbsp; Also we\u2019ve gotten a lot of feedback that people would like a better way to publish queries without having to be a Project Administrator (you have to be to save a Team Query in TFS 2008 and before).&nbsp; We solved both problems with a new feature called query folders.&nbsp; This allows you to organize your queries into folders both under My Queries and under Team Queries.&nbsp; Further, under Team Queries, you can delegate permissions to the sub folders to whomever you like.&nbsp; In the screenshot below you can see a query structure I\u2019ve created a the security dialog where I\u2019ve granted the Contributors group permission to contribute queries to the Web Team folder.&nbsp; I know this is going to be a VERY popular feature internally where we get dozens, if not hundreds, of queries people want to share.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/8\/2019\/02\/image_22.png\"><img decoding=\"async\" title=\"image\" height=\"511\" alt=\"image\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/8\/2019\/02\/image_thumb_10.png\" width=\"804\" border=\"0\"><\/a> <\/p>\n<h3>Usability improvements<\/h3>\n<p>We\u2019ve made a number of small work item tracking usability improvements.&nbsp; I don\u2019t think I can even remember them all but I\u2019ll mention a few.<\/p>\n<p>We\u2019ve added several controls to improve your options for managing layout for your work item tracking windows.&nbsp; Looking at this screenshot, you will see 4 small controls on the right hand side of the splitter bar between the results list and the work item form.&nbsp; The first two switch back and forth between a horizontal split and a vertical split.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/8\/2019\/02\/image_24.png\"><img decoding=\"async\" title=\"image\" height=\"409\" alt=\"image\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/8\/2019\/02\/image_thumb_11.png\" width=\"644\" border=\"0\"><\/a> <\/p>\n<p>like this\u2026<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/8\/2019\/02\/image_26.png\"><img decoding=\"async\" title=\"image\" height=\"409\" alt=\"image\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/8\/2019\/02\/image_thumb_12.png\" width=\"644\" border=\"0\"><\/a> <\/p>\n<p>&nbsp;<\/p>\n<p>The second two make it simple to \u201cmaximize\u201d either the work item form or the results list, like\u2026<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/8\/2019\/02\/image_30.png\"><img decoding=\"async\" title=\"image\" height=\"409\" alt=\"image\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/8\/2019\/02\/image_thumb_14.png\" width=\"644\" border=\"0\"><\/a> <\/p>\n<p>or this\u2026<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/8\/2019\/02\/image_32.png\"><img decoding=\"async\" title=\"image\" height=\"409\" alt=\"image\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/8\/2019\/02\/image_thumb_15.png\" width=\"644\" border=\"0\"><\/a> <\/p>\n<p>Further, you\u2019ll notice the new Next and Previous buttons \u2013 makes navigating through the list of work items possible when looking at a maximized work item form as in the last screenshot.<\/p>\n<p>Another nice enhancement is the ability to drag an email message from Outlook into the work item attachments list and automatically attach the .msg file for tracking email conversations along with work items.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>WIT Categories<\/strong><\/p>\n<p>We&#8217;ve heard a lot of feedback on the difficulty of making our reports work and writing new reports in the face of significant work item tracking customization.&nbsp; One of the features we have added to simplify this is something called &#8220;Categories&#8221;.&nbsp; You can mark work item types as being in a Category and then write your reports against the category rather than the work item type name.&nbsp; This is particularly useful as you classify work with increasing precision.&nbsp; For example, you might have separate User Story and Quality of Service requirement work item types.&nbsp; They have different data models for a reason but you want to easily write reports against all &#8220;requirements&#8221;.&nbsp; You can tag them with the same Category and write reports against that.&nbsp; Then the report will pick up both work item types.&nbsp; This also enables you to rename work item types, etc and still have tools work by referring to the category.<\/p>\n<p>&nbsp;<\/p>\n<h3>Conclusion<\/h3>\n<p>Whew, OK, that\u2019s it for work item tracking.&nbsp; It\u2019s a lot of stuff and there\u2019s a lot more left for me to talk about.&nbsp; Once you get Beta 1, you can start to play with all of this and I\u2019m eager to hear your feedback.<\/p>\n<p>Brian<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In my last 2010 post, I covered Setup, Admin &amp; Ops.&nbsp; In this post I\u2019m going to cover work item tracking features.&nbsp; The truth, however, is that the lines between the next 3 posts are going to be pretty blurry.&nbsp; I\u2019ve tried to think about ways to partition it but Work Item Tracking, Project Management [&hellip;]<\/p>\n","protected":false},"author":244,"featured_media":14617,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[5],"class_list":["post-6681","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-tfs"],"acf":[],"blog_post_summary":"<p>In my last 2010 post, I covered Setup, Admin &amp; Ops.&nbsp; In this post I\u2019m going to cover work item tracking features.&nbsp; The truth, however, is that the lines between the next 3 posts are going to be pretty blurry.&nbsp; I\u2019ve tried to think about ways to partition it but Work Item Tracking, Project Management [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/posts\/6681","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/users\/244"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/comments?post=6681"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/posts\/6681\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/media\/14617"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/media?parent=6681"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/categories?post=6681"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/tags?post=6681"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}