<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://consultingblogs.emc.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Crispin Parker's Blog</title><link>http://consultingblogs.emc.com/crispinparker/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Team Foundation Server 2010 RC Job Service Delay</title><link>http://consultingblogs.emc.com/crispinparker/archive/2010/03/05/team-foundation-server-2010-rc-job-service-delay.aspx</link><pubDate>Fri, 05 Mar 2010 10:57:08 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:16919</guid><dc:creator>crispin.parker</dc:creator><slash:comments>0</slash:comments><comments>http://consultingblogs.emc.com/crispinparker/comments/16919.aspx</comments><wfw:commentRss>http://consultingblogs.emc.com/crispinparker/commentrss.aspx?PostID=16919</wfw:commentRss><description>&lt;p&gt;&lt;em&gt;This post relates to Team Foundation Server 2010 RC, the Scrum for Team System version 3 process template and TFS event notifications.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;In TFS you can setup notifications to be sent on events like Build complete and work item changes.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://consultingblogs.emc.com/blogs/crispinparker/image_4F2D92B3.png"&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="image" border="0" alt="image" src="http://consultingblogs.emc.com/blogs/crispinparker/image_thumb_4016B3D9.png" width="494" height="318" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Introduced in the TFS 2010 release candidate is the ability to set a process delay time for notifications. By default the delay time is set to 2 minutes. This is intended to reduce the load on the&amp;#160; TFS job agent process during periods of heavy load.&lt;/p&gt;  &lt;p align="center"&gt;&lt;em&gt;&lt;font size="6"&gt;“2 Minute Notification Delay”&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;In the SfTS solution we use this change notification to trigger our &lt;a title="Event Service" href="http://consultingblogs.emc.com/crispinparker/archive/2009/12/02/scrum-for-team-system-v3-event-service.aspx"&gt;event service&lt;/a&gt; updates. Unfortunately the new 2 minute delay means that we no longer get an instant notification of work item updates. This delay makes the event service slower to respond and can cause you to see the dreaded “TF237079” error message more often.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://consultingblogs.emc.com/blogs/crispinparker/image_12B51E09.png"&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="image" border="0" alt="image" src="http://consultingblogs.emc.com/blogs/crispinparker/image_thumb_43D458A9.png" width="443" height="174" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Luckily, there is a way to reduce / remove the notification delay.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Removing Job Service Notification Delay&lt;/h3&gt;  &lt;p&gt;In order to change the notification delay duration, you will need to add a data row to a table in the “Tfs_Configuation” database.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Launch SSMS and connect to the TFS Database Engine.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Run the following script:      &lt;br /&gt;      &lt;br /&gt;      &lt;pre class="code"&gt;&lt;font size="2"&gt;&lt;span style="color:blue;"&gt;USE &lt;/span&gt;Tfs_Configuration
GO

&lt;/font&gt;&lt;font size="2"&gt;&lt;span style="color:blue;"&gt;IF NOT EXISTS 
&lt;/span&gt;(
    &lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;* 
    &lt;span style="color:blue;"&gt;FROM &lt;/span&gt;tbl_RegistryItems
    &lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;ParentPath = &lt;/font&gt;&lt;font size="2"&gt;&lt;span style="color:#a31515;"&gt;'#\Service\Integration\Settings\' &lt;br /&gt;    &lt;/span&gt;&lt;span style="color:blue;"&gt;AND &lt;/span&gt;ChildItem = &lt;/font&gt;&lt;font size="2"&gt;&lt;span style="color:#a31515;"&gt;NotificationJobDelay\'
&lt;/span&gt;)
&lt;/font&gt;&lt;font size="2"&gt;&lt;span style="color:blue;"&gt;BEGIN
    INSERT INTO &lt;/span&gt;tbl_RegistryItems (ParentPath, ChildItem, RegValue)
    &lt;span style="color:blue;"&gt;VALUES &lt;/span&gt;(&lt;span style="color:#a31515;"&gt;'#\Service\Integration\Settings\'&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;'NotificationJobDelay\'&lt;/span&gt;, 0);
&lt;/font&gt;&lt;font size="2"&gt;&lt;span style="color:blue;"&gt;END
ELSE
BEGIN
    UPDATE &lt;/span&gt;tbl_RegistryItems 
    &lt;span style="color:blue;"&gt;SET &lt;/span&gt;RegValue = 0
    &lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;ParentPath = &lt;/font&gt;&lt;font size="2"&gt;&lt;span style="color:#a31515;"&gt;'#\Service\Integration\Settings\' &lt;br /&gt;    &lt;/span&gt;&lt;span style="color:blue;"&gt;AND &lt;/span&gt;ChildItem = &lt;/font&gt;&lt;span style="color:#a31515;"&gt;&lt;font size="2"&gt;'NotificationJobDelay\'
&lt;/font&gt;&lt;/span&gt;&lt;font size="2"&gt;&lt;span style="color:blue;"&gt;END

&lt;/span&gt;&lt;/font&gt;&lt;span style="color:green;"&gt;-- Queue up an application update. &lt;br /&gt;&lt;/span&gt;&lt;font size="2"&gt;&lt;span style="color:blue;"&gt;INSERT INTO &lt;/span&gt;tbl_NotificationQueue (EventClass, EventData) 
&lt;/font&gt;&lt;font size="2"&gt;&lt;span style="color:blue;"&gt;VALUES 
&lt;/span&gt;(
    &lt;span style="color:#a31515;"&gt;'0e9c44d7-52eb-4dca-b467-f1a4fe3c469a'&lt;/span&gt;, 
    &lt;/font&gt;&lt;font size="2"&gt;&lt;span style="color:#a31515;"&gt;'&amp;lt;ArrayOfRegistryEntry&amp;gt;&amp;lt;RegistryEntry Path=&amp;quot;#\Service\Integration\Settings\NotificationJobDelay\\&amp;quot;&amp;gt;' &lt;font color="#000000"&gt;+&lt;/font&gt;&lt;br /&gt;    '&amp;lt;Value&amp;gt;0&amp;lt;/Value&amp;gt;&amp;lt;/RegistryEntry&amp;gt;&amp;lt;/ArrayOfRegistryEntry&amp;gt;'
&lt;/span&gt;);&lt;/font&gt;&lt;/pre&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;font size="2"&gt;This sets the job service delay to zero and you get instant notifications once again.&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font size="2"&gt;Regards,&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font size="2"&gt;Crispin Parker, 
    &lt;br /&gt;Senior Practice Consultant, 

    &lt;br /&gt;EMC Consulting.&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Edit: Apparently I was using a sledge hammer to open a peanut with my first post on this subject. I have now altered the SQL script to be a little more gentle on the TFS infrastructure. &lt;a title="Faster Delivery of Notifications" href="http://blogs.msdn.com/chrisid/archive/2010/03/05/faster-delivery-of-notifications.aspx" target="_blank"&gt;Chris Sidi’s post&lt;/a&gt; explains it all in great detail and even gives you a Powershell script to run in place of the above SQL.&lt;/em&gt;&lt;/p&gt;&lt;img src="http://consultingblogs.emc.com/aggbug.aspx?PostID=16919" width="1" height="1"&gt;</description><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/TFS/default.aspx">TFS</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/tfs+2010/default.aspx">tfs 2010</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/Work+Item+Changed+Event/default.aspx">Work Item Changed Event</category></item><item><title>Scrum for Team System v3 – Release Candidate</title><link>http://consultingblogs.emc.com/crispinparker/archive/2010/02/26/scrum-for-team-system-v3-release-candidate.aspx</link><pubDate>Fri, 26 Feb 2010 12:20:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:16906</guid><dc:creator>crispin.parker</dc:creator><slash:comments>0</slash:comments><comments>http://consultingblogs.emc.com/crispinparker/comments/16906.aspx</comments><wfw:commentRss>http://consultingblogs.emc.com/crispinparker/commentrss.aspx?PostID=16906</wfw:commentRss><description>&lt;P&gt;&lt;EM&gt;This posts relates to the Scrum for Team System version 3 process template and Team Foundation Server 2010 RC.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;The Scrum for Team System version 3 Release Candidate (SfTS v3 RC) is available for &lt;A title="Download SfTS Release Candidate Installers" href="http://scrumforteamsystem.com/cs/forums/4767/ShowPost.aspx"&gt;download&lt;/A&gt;. This release fixes several bugs, improves performance and adds some new features which I will discuss below. It also affects users of Scrum for Team System v3 Beta 2 wishing to upgrade to the RC.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Note: Due to some breaking &lt;/EM&gt;&lt;A title="TFS2010: Object Model API changes after Beta 2" href="http://blogs.msdn.com/granth/archive/2009/12/07/tfs2010-object-model-api-changes-after-beta-2.aspx"&gt;&lt;EM&gt;TFS API&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt; changes you can only install SfTSv3RC into a TFS 2010 RC environment.&lt;/EM&gt;&lt;/P&gt;
&lt;H3&gt;What’s New?&lt;/H3&gt;
&lt;H4&gt;Scrum Masters Workbench:&lt;/H4&gt;
&lt;P align=center&gt;&lt;A href="http://consultingblogs.emc.com/blogs/crispinparker/image_498E5DA1.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" title=image border=0 alt=image src="http://consultingblogs.emc.com/blogs/crispinparker/image_thumb_4AC2D0B3.png" width=465 height=407&gt;&lt;/A&gt; &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Added the ability to filter by feature scope (area path). &lt;/LI&gt;
&lt;LI&gt;Added state colour options for swim lane items. &lt;/LI&gt;
&lt;LI&gt;Fixed several bugs. &lt;/LI&gt;
&lt;LI&gt;Improved performance. &lt;/LI&gt;&lt;/UL&gt;
&lt;H4&gt;Event Service:&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;Fixed the issue with the synchronisation process changing the SBT planning scope to match the parent PBI. &lt;/LI&gt;
&lt;LI&gt;Fixed the planned work rollup aggregation in Team Sprints. &lt;/LI&gt;
&lt;LI&gt;Added some new SBT status descoping rules in order to help implement the behaviour described in &lt;A title="Descoping work in Scrum for Team System Version 3.0" href="http://consultingblogs.emc.com/simonbennett/archive/2010/01/22/descoping-work-in-scrum-for-team-system-version-3-0.aspx"&gt;Simon Bennett’s blog post&lt;/A&gt;. &lt;/LI&gt;&lt;/UL&gt;
&lt;H4&gt;Process Template:&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;Changed the work item field name specifications. See “&lt;STRONG&gt;A Choice Of Compatibility&lt;/STRONG&gt;” below. &lt;/LI&gt;&lt;/UL&gt;
&lt;H3&gt;A Choice Of Compatibility.&lt;/H3&gt;
&lt;P&gt;We’ve had to make some compatibility decisions in the SfTS v3 RC release. During the SfTS v3 Beta 2 trail it became apparent that we had a compatibility issue with the TFS 2008 scrum template. SfTS v3 Beta 2 and SfTS v2.x (TFS 2008) cannot coexist in a single TFS 2010 instance.&lt;/P&gt;
&lt;P align=center&gt;&lt;EM&gt;&lt;FONT size=3&gt;“SfTS v3 Beta 2 and SfTS v2.x (TFS 2008) cannot coexist in a single TFS 2010 instance.”&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Some of the display field names in the beta release match the names used in the TFS 2008 scrum template. Due to the way in which TFS stores the work item field definitions (in the data warehouse), both reference and display names must be unique each field definition. Changing just one and not the other of the names causes a problem.&lt;/P&gt;
&lt;P&gt;The clash of field names means that migrating a TFS 2008 data instance (that included SfTS v2) into a TFS 2010 environment and installing the SfTS v3 beta 2 would break the warehouse process. Once the warehouse becomes invalid, no TFS data can be processed and all TFS reporting will stop working. Not good.&lt;/P&gt;
&lt;P&gt;Obviously, breaking the TFS warehouse process isn’t an option. Also, telling 30,000 SfTS v2 users that they couldn’t upgrade to TFS 2010 didn’t seem right either. So we took the decision to &lt;STRONG&gt;sacrifice a possible beta 2 upgrade path&lt;/STRONG&gt; and rename the scrum fields in SfTS v3 RC.&lt;/P&gt;
&lt;H3&gt;Field Naming in the SFTS templates.&lt;/H3&gt;
&lt;P&gt;The below section details the history of the Scrum template field names.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;SfTS v1 (TFS 2005 RTM)&lt;/STRONG&gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Name:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Work Remaining" &lt;/LI&gt;
&lt;LI&gt;Ref Name: "Conchango.VSTS.Scrum.WorkRemaining" &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;SfTS v2 (TFS 2008 RTM)&lt;/STRONG&gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Name:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "&lt;FONT color=#ff0000&gt;Work Remaining (Scrum)&lt;/FONT&gt;" &lt;/LI&gt;
&lt;LI&gt;Ref Name: "Conchango.TeamSystem.Scrum.WorkRemaining" &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;SfTS v3 Beta 2 (TFS 2010 Beta 2)&lt;/STRONG&gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Name:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "&lt;FONT color=#ff0000&gt;Work Remaining (Scrum)&lt;/FONT&gt;" &lt;/LI&gt;
&lt;LI&gt;Ref Name: "Scrum.WorkRemaining" &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;SfTS v3 RC (TFS 2010 RC)&lt;/STRONG&gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Name:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Work Remaining (Scrum v3)" &lt;/LI&gt;
&lt;LI&gt;Ref Name: "Scrum.v3.WorkRemaining" &lt;/LI&gt;&lt;/UL&gt;
&lt;H3&gt;But What About My Beta 2 project?&lt;/H3&gt;
&lt;P&gt;By changing the field names in the RC version we have stopped the ability for Beta 2 projects to get upgraded. This will not stop Beta 2 projects working. You can upgrade your servers to run TFS 2010 RC and continue to use your existing beta 2 project, but you cannot upgrade an existing SfTS v3 beta 2 project to SfTS v3 RC.&lt;/P&gt;
&lt;P&gt;The other downside is that the SfTS v3 RC event service (installed as part of the SfTS v3 RC) will not update beta 2 projects. This is because the event service uses the field names in order to process changes and, as stated, we’ve change them all.&lt;/P&gt;
&lt;H3&gt;Final Thought.&lt;/H3&gt;
&lt;P&gt;The needs of the many have out weighed the needs of the few in this situation. The possibility to upgrade a beta 2 project to a RC project has been sacrificed in order to allow all the existing v2 users the ability to update their infrastructure to TFS 2010 come RTM time. Maybe tough on early beta adopters but clearly the right choice for the majority.&lt;/P&gt;
&lt;H3&gt;Links:&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A title="Download SfTS Release Candidate Installers" href="http://scrumforteamsystem.com/cs/forums/4767/ShowPost.aspx"&gt;Download SfTS v3 RC and SMW&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A title="Scrum for Team System - V3 RC Discussions" href="http://scrumforteamsystem.com/cs/forums/14/ShowForum.aspx"&gt;SfTS v3 RC discussion forum&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A title="Change notes: Beta 2 -&gt; RC" href="http://scrumforteamsystem.com/cs/forums/4775/ShowPost.aspx" mce_href="http://scrumforteamsystem.com/cs/forums/4775/ShowPost.aspx"&gt;SfTS v3 RC change notes&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Regards,&lt;/P&gt;
&lt;P&gt;Crispin Parker, &lt;BR&gt;Senior Practice Consultant, &lt;BR&gt;EMC Consulting.&lt;/P&gt;&lt;img src="http://consultingblogs.emc.com/aggbug.aspx?PostID=16906" width="1" height="1"&gt;</description><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/Task+Board+for+team+System/default.aspx">Task Board for team System</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/TFS/default.aspx">TFS</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/Scrum+for+team+system/default.aspx">Scrum for team system</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/tfs+2010/default.aspx">tfs 2010</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/SfTS+v3/default.aspx">SfTS v3</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/Scrum+for+Team+System+Version+3+_2800_Beta+2_2900_/default.aspx">Scrum for Team System Version 3 (Beta 2)</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/Scrum+Masters+Workbench/default.aspx">Scrum Masters Workbench</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/Task+Board/default.aspx">Task Board</category></item><item><title>Scrum for Team System v3 – Deep inside the Aggregation service</title><link>http://consultingblogs.emc.com/crispinparker/archive/2010/01/26/scrum-for-team-system-v3-deep-inside-the-aggregation-service.aspx</link><pubDate>Tue, 26 Jan 2010 14:03:02 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:16817</guid><dc:creator>crispin.parker</dc:creator><slash:comments>3</slash:comments><comments>http://consultingblogs.emc.com/crispinparker/comments/16817.aspx</comments><wfw:commentRss>http://consultingblogs.emc.com/crispinparker/commentrss.aspx?PostID=16817</wfw:commentRss><description>&lt;p&gt;&lt;em&gt;This post relates to Team Foundation Server and the Scrum for Team System process template.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Previously I have described the &lt;a href="http://consultingblogs.emc.com/crispinparker/archive/2009/12/02/scrum-for-team-system-v3-event-service.aspx"&gt;Event Service&lt;/a&gt; and have taken a closer look at the &lt;a href="http://consultingblogs.emc.com/crispinparker/archive/2010/01/15/scrum-for-team-system-v3-deep-inside-the-transition-event-service.aspx"&gt;Transition Service&lt;/a&gt;. In this instalment I’ll describe the Aggregation service and it’s configuration.&lt;/p&gt;  &lt;p&gt;In order to enhance the features of TFS 2010, we have added a web service that subscribes to the TFS work item changed notification. This gives us the ability to update related work items when certain triggering events are detected. The TFS change notifications are queued into a central service controller which in turn distributes them to all the registered service processors. The default SfTS v3 installation gives you two service processors; Transition and Aggregation.&lt;/p&gt;  &lt;p&gt;The Transition processor handles the actions that relate to single work item instances, while the Aggregation service handles updates that involve collections of work items. The aggregation service also offers an alternative linking method, inferred linkage by work item path. More about this below.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;The Aggregation Service&lt;/h3&gt;  &lt;p&gt;Unsurprisingly, this service offers the ability to execute aggregated updates to work items. These updates can be either “Sum”, “Min”, “Max” or “Average”. &lt;/p&gt;  &lt;p&gt;An excellent example of this service in action is the “Product Backlog Item” (PBI) Work Remaining value. PBIs describe a required feature of the project output. To break the feature requirement down into task actions, you create linked work items called “Sprint Backlog Tasks” (SBT). Each SBT is given a “Work Remaining” value that indicates the duration of effort remaining in order to complete the specified task. The aggregation service sums up the total of the linked SBTs and updates the PBI work remaining value. Each time any of the SBTs remaining duration is changed, the service will update the associated PBI.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://consultingblogs.emc.com/blogs/crispinparker/image_55965CD2.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:block;float:none;margin-left:auto;border-top:0px;margin-right:auto;border-right:0px;" title="image" border="0" alt="image" src="http://consultingblogs.emc.com/blogs/crispinparker/image_thumb_0DF45DDE.png" width="599" height="480" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;When the service updates a work item, it also adds a description of the action to the work item history. The above example states that the sum of associated tasks work remaining has been applied.&lt;/p&gt;  &lt;p&gt;In this manner, the aggregation services can update work items to show values based on other work items. This is not a feature of standard TFS, but one I like to think adds a great deal of depth to work item linkage.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Inferred Linking.&lt;/h3&gt;  &lt;p&gt;Because the aggregation of a work item value can potentially involve a large number of other work items, we have added an alternative way to specify linkage. Imagine that you want to roll up the total number of story points in a release. If you could only roll up linked work item values, you would have to directly link every PBI to the Release work item. A single release might contain hundreds of PBIs and maintaining all those links isn’t going to be fun task, even for a temp. To combat this, you can create aggregation rules that work by &lt;strong&gt;Inferred linkage&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;The concept of &lt;strong&gt;inferred linkage&lt;/strong&gt; is that you consider work item paths as an indication of a relationship. Looking at our “&lt;em&gt;completed story points in this release&lt;/em&gt;” rule, we can say: “&lt;em&gt;Rollup all PBI story Point values where the iteration path under this release&lt;/em&gt;”. No direct linkage is required to do this, so you can take an extra hour for lunch with the time you saved not adding hundreds of work item links (or get rid of the temp).&lt;/p&gt;  &lt;p&gt;This is why it is very important to maintain the correct planning path structure in your SfTS v3 work items. If you alter the default path hierarchy (Project / Release / Work Stream / Sprint / Team Sprint), the inferred aggregation rules will not be able correctly ascertain the relationships. Of course you could update all the rules to work with your new path structure and you might want to bring back the temp to help out with the additional work load.&lt;/p&gt;  &lt;p&gt;You can use both Iteration (planning) and Area (Feature) paths to indicate an inferred link. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;What Changes Trigger an Update?&lt;/h3&gt;  &lt;p&gt;It’s not only the field values changing that can trigger the update service. The aggregated value can also be affected by changing work item linkages, paths and states. The service rule definitions also allow you to specify a list of excluded states. Moving a work item in or out of an excluded state will also trigger an update.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Triggers:&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The aggregated field value is changed.&lt;/li&gt;    &lt;li&gt;The work item state is change from or to an excluded state.&lt;/li&gt;    &lt;li&gt;The work item linkage is changed (direct links).     &lt;br /&gt;      &lt;br /&gt;or      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;The work item path value is changed (inferred links).&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Where can I find the default Rule definitions?&lt;/h3&gt;  &lt;p&gt;The default installation location of the Aggregation rules file is located on the TFS AT at:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;C:\Program Files\Scrum for Team System\Services\3.0\Rules\AggregationRules.xml&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;What does A Rule look like?&lt;/h3&gt;  &lt;p&gt;Below are two examples of aggregation rules. The first rule describes the PBI work remaining calculation and the second shows the PBI story point roll up.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;PBI work remaining (using direct links)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;AggregateRule type=&amp;quot;Sum&amp;quot;&amp;gt;     &lt;br /&gt;&amp;#160; &amp;lt;WorkItemType source=&amp;quot;Sprint Backlog Task&amp;quot; target=&amp;quot;Product Backlog Item&amp;quot; /&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;Link linktypename=&amp;quot;Scrum.ImplementedBy&amp;quot; isforward=&amp;quot;true&amp;quot; /&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;Field source=&amp;quot;Scrum.WorkRemaining&amp;quot; target=&amp;quot;Scrum.WorkRemaining&amp;quot; /&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;ChangeNote&amp;gt;Sum of associated task(s) work remaining applied.&amp;lt;/ChangeNote&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;ExcludedSourceStates&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;State&amp;gt;Deleted&amp;lt;/State&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;/ExcludedSourceStates&amp;gt;      &lt;br /&gt;&amp;lt;/AggregateRule&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Release Story Points (using inferred linkage)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;AggregateRule type=&amp;quot;Sum&amp;quot;&amp;gt;     &lt;br /&gt;&amp;#160; &amp;lt;WorkItemType source=&amp;quot;Product Backlog Item&amp;quot; target=&amp;quot;Release&amp;quot; /&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;InferredLink path=&amp;quot;IterationPath&amp;quot; type=&amp;quot;Partial&amp;quot; depth=&amp;quot;2&amp;quot; /&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;Field       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; source=&amp;quot;Microsoft.VSTS.Scheduling.StoryPoints&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; target=&amp;quot;Scrum.PlannedVelocity&amp;quot;&amp;#160; &lt;br /&gt;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;/&amp;gt;     &lt;br /&gt;&amp;#160; &amp;lt;ChangeNote&amp;gt;Sum of planned backlog item(s) points applied.&amp;lt;/ChangeNote&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;ExcludedSourceStates&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;State&amp;gt;Deleted&amp;lt;/State&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;/ExcludedSourceStates&amp;gt;      &lt;br /&gt;&amp;lt;/AggregateRule&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h3&gt;Rule Definition Breakdown&lt;/h3&gt;  &lt;p&gt;Let’s break the rule definition down into it’s component parts.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Aggregate Rule&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;The rule container element.&lt;/p&gt;    &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;AggregateRule type=&amp;quot;Sum&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160; ...&lt;/font&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;       &lt;br /&gt;&amp;lt;/AggregateRule&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Attributes:&lt;/strong&gt;&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;type – Describes the aggregation action. Possible values are “Sum”, “Min”, “Max” and “Average”. &lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Work Item Type&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Defines the work item types involved in this rule.&lt;/p&gt;    &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;WorkItemType source=&amp;quot;Product Backlog Item&amp;quot; target=&amp;quot;Release&amp;quot; /&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Attributes:&lt;/strong&gt;&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;source – The source work item type to be aggregated.&lt;/li&gt;      &lt;li&gt;target – The target work item type to be updated.&lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Link&lt;/strong&gt;&amp;#160;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Details the work item link type to be used in the aggregation. &lt;/p&gt;    &lt;p&gt;&lt;em&gt;Note: Aggregation rules must specify either a “Link” or an “Inferred Link” but not both.&lt;/em&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2" face="Courier New"&gt; &amp;lt;Link linktypename=&amp;quot;Scrum.ImplementedBy&amp;quot; isforward=&amp;quot;true&amp;quot; /&amp;gt;     &lt;br /&gt;&lt;/font&gt;    &lt;p&gt;&lt;strong&gt;Attributes:&lt;/strong&gt; &lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;linktypename – The linkage type name.&lt;/li&gt;      &lt;li&gt;isforward – Boolean value to indicate if the target work item is on the forward side of the link.&lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Inferred Link&lt;/strong&gt;&amp;#160; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;This element describes the inferred link for this rule.&lt;/p&gt;    &lt;p&gt;&lt;em&gt;Note: Aggregation rules must specify either a “Link” or an “Inferred Link” but not both.&lt;/em&gt;&lt;/p&gt;   &lt;font color="#0000ff" size="2" face="Courier New"&gt; &amp;lt;InferredLink path=&amp;quot;IterationPath&amp;quot; type=&amp;quot;Partial&amp;quot; depth=&amp;quot;2&amp;quot; /&amp;gt;     &lt;br /&gt;&lt;/font&gt;    &lt;p&gt;&lt;strong&gt;Attributes:&lt;/strong&gt; &lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;path – Details which work item path is going to be used to infer the relationship. This value can be either: “IterationPath” or “AreaPath”.&lt;/li&gt;      &lt;li&gt;type – Describes the type of path matching to use. This can be either “Partial” or “Complete”. Partial paths match to a specified depth and complete matches the entire path.&lt;/li&gt;      &lt;li&gt;depth – Used in conjunction with the “Partial” type to indicate the depth of path to match.&lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;The example shows a depth of “2”. This means that only the “Project / Release” part of the iteration path will be matched between the target and source work items.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Field&lt;/strong&gt;&amp;#160; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;This details which the the work item fields to use for this rule.&lt;/p&gt;    &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;Field source=&amp;quot;Scrum.WorkRemaining&amp;quot; target=&amp;quot;Scrum.WorkRemaining&amp;quot; /&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;         &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;strong&gt;       &lt;br /&gt;Attributes:&lt;/strong&gt; &lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;source - The field on the source work item to aggregate.&lt;/li&gt;      &lt;li&gt;target – The field on the target work item to update.&lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Change Note&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;The text to enter into the target work items history when a change is made.&lt;/p&gt;   &lt;font color="#0000ff" size="2" face="Courier New"&gt; &amp;lt;ChangeNote&amp;gt;Sum of associated task(s) work remaining applied.&amp;lt;/ChangeNote&amp;gt;&lt;/font&gt;&lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Excluded Source States&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;A list of states that indicate a source work is ignored from aggregation.&lt;/p&gt;    &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;ExcludedSourceStates&amp;gt;       &lt;br /&gt;&amp;#160; &amp;lt;State&amp;gt;Deleted&amp;lt;/State&amp;gt;        &lt;br /&gt;&amp;lt;/ExcludedSourceStates&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;A Word of Warning!&lt;/h3&gt;  &lt;p&gt;When customising rules in either the Transition or Aggregation service, make sure you take extra care not to cause any circular references. If you set one rule to change a field value that in turn triggers another rule, that in turn triggers the original rule, that in turn triggers the other rule... Well I expect you get the picture. Take time to plan the relational updates between your work items and keep an eye out for circular rule references. Remember that an infinite loop might involve more than just two rules.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Handy Links&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://scrumforteamsystem.com/cs/forums/13/ShowForum.aspx"&gt;Scrum for Team System - V3.x Beta 2 Discussions&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.scrumforteamsystem.com/"&gt;Scrum for Team System – Home Page&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://microsoftpdc.com/Sessions/FT09"&gt;Scrum in the Enterprise - PDC Presentation Webcast&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Regards,&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Crispin Parker,    &lt;br /&gt;Senior Technical Consultant,     &lt;br /&gt;EMC Consulting.&lt;/p&gt;&lt;img src="http://consultingblogs.emc.com/aggbug.aspx?PostID=16817" width="1" height="1"&gt;</description><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/TFS/default.aspx">TFS</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/Scrum+for+team+system/default.aspx">Scrum for team system</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/getting+started/default.aspx">getting started</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/tfs+2010/default.aspx">tfs 2010</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/SfTS+v3/default.aspx">SfTS v3</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/Scrum+for+Team+System+Version+3+_2800_Beta+2_2900_/default.aspx">Scrum for Team System Version 3 (Beta 2)</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/Work+Item+Changed+Event/default.aspx">Work Item Changed Event</category></item><item><title>Scrum for Team System v3 – Installer Environment Options.</title><link>http://consultingblogs.emc.com/crispinparker/archive/2010/01/22/scrum-for-team-system-v3-installer-environment-options.aspx</link><pubDate>Fri, 22 Jan 2010 11:50:50 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:16804</guid><dc:creator>crispin.parker</dc:creator><slash:comments>0</slash:comments><comments>http://consultingblogs.emc.com/crispinparker/comments/16804.aspx</comments><wfw:commentRss>http://consultingblogs.emc.com/crispinparker/commentrss.aspx?PostID=16804</wfw:commentRss><description>&lt;p&gt;&lt;em&gt;This blog relates to the Scrum for Team System version 3 template installation process.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;The SfTS v3 installer includes some additional MSIEXEC command line switches that allow you to specify environment variables.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;SQL Server Named Instance&lt;/h3&gt;  &lt;p&gt;Use this switch when your target SQL server is a named instance.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Switch:      &lt;br /&gt;      &lt;br /&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;TEAMFOUNDATIONSERVERDTSQLINSTANCENAME        &lt;br /&gt;        &lt;br /&gt;&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;Default Value:      &lt;br /&gt;      &lt;br /&gt;This parameter value defaults to the target [Computer Name]. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Team Foundation Server Web Site Description&lt;/h3&gt;  &lt;p&gt;Use this switch to target the TFS web site. &lt;/p&gt;  &lt;p&gt;&lt;em&gt;Note: This must be the TFS AT web site in order for the &lt;a title="event service" href="http://consultingblogs.emc.com/crispinparker/archive/2009/12/02/scrum-for-team-system-v3-event-service.aspx"&gt;event service&lt;/a&gt; to gain the correct permissions.&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Switch:      &lt;br /&gt;      &lt;br /&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;TEAMFOUNDATIONSERVERWEBSITEDESCRIPTION&lt;/font&gt;       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Default Value:      &lt;br /&gt;      &lt;br /&gt;”Team Foundation Server” &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Team Foundation Server Web Site Port&lt;/h3&gt;  &lt;p&gt;This parameter lets you specify an alternative port number.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Switch:      &lt;br /&gt;      &lt;br /&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;TEAMFOUNDATIONSERVERWEBSITEPORT&lt;/font&gt;       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Default Value:      &lt;br /&gt;      &lt;br /&gt;8080 &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Event Service End Point&lt;/h3&gt;  &lt;p&gt;This value details the &lt;a href="http://consultingblogs.emc.com/crispinparker/archive/2009/12/02/scrum-for-team-system-v3-event-service.aspx"&gt;Event Service&lt;/a&gt; Work Item Changed notification end point. &lt;/p&gt;  &lt;p&gt;&lt;em&gt;Note: You must update this value to indicate any changes to the TFS port number.&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Switch:      &lt;br /&gt;      &lt;br /&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;SFTSEVENTSERVICEENDPOINTURL&lt;/font&gt;       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Default Value:      &lt;br /&gt;      &lt;br /&gt;http://localhost:8080/ScrumforTeamSystem/3.0/WorkItemChangedEndpoint.asmx &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Example Installation Command Line&lt;/h3&gt;  &lt;p&gt;The following example sets an alternative SQL Server instance name, web site name and port number.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font size="2" face="Courier New"&gt;MSIEXEC /i ScrumforTeamSystem.3.0.3621.03.msi /l*v install.log        &lt;br /&gt;&lt;font color="#0000ff"&gt;TEAMFOUNDATIONSERVERDTSQLINSTANCENAME&lt;/font&gt;=”&lt;font color="#ff0000"&gt;Named Server&lt;/font&gt;” &lt;font color="#0000ff"&gt;         &lt;br /&gt;TEAMFOUNDATIONSERVERWEBSITEDESCRIPTION&lt;/font&gt;=”&lt;font color="#ff0000"&gt;Alternative TFS Web Site&lt;/font&gt;” &lt;font color="#0000ff"&gt;         &lt;br /&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;SFTSEVENTSERVICEENDPOINTURL&lt;/font&gt;=           &lt;br /&gt;”&lt;font color="#ff0000"&gt;http://localhost:8081/ScrumforTeamSystem/3.0/WorkItemChangedEndpoint.asmx&lt;/font&gt;”           &lt;br /&gt;TEAMFOUNDATIONSERVERWEBSITEPORT&lt;/font&gt;=&lt;font color="#ff0000"&gt;8081&lt;/font&gt;&lt;/font&gt;       &lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h3&gt;And Another Thing…&lt;/h3&gt;  &lt;p&gt;A recent forum &lt;a title="&amp;quot;Service &amp;#39;ReportServer&amp;#39; (ReportServer) failed to start&amp;quot; error during installation" href="https://www.scrumforteamsystem.com/cs/forums/4893/ShowPost.aspx"&gt;post&lt;/a&gt; highlights another possible setup scenario. This time the SQL Server instance is not named, but the Reporting Services instance is. In this case you can use the “&lt;font color="#0000ff"&gt;REPORTSERVERSERVICENAME&lt;/font&gt;” command line switch as demonstrated below:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font size="2" face="Courier New"&gt;msiexec /i &amp;quot;ScrumforTeamSystem.3.0.3698.00.msi&amp;quot; /l*v install.log        &lt;br /&gt;&lt;font color="#0000ff"&gt;REPORTSERVERSERVICENAME&lt;/font&gt;=&amp;quot;&lt;font color="#ff0000"&gt;MyReportingServicesName&lt;/font&gt;&amp;quot;&lt;/font&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Handy Links&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://scrumforteamsystem.com/cs/forums/13/ShowForum.aspx"&gt;Scrum for Team System - V3.x Beta 2 Discussions&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.scrumforteamsystem.com/"&gt;Scrum for Team System – Home Page&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://microsoftpdc.com/Sessions/FT09"&gt;Scrum in the Enterprise - PDC Presentation Webcast&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Regards,&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Crispin Parker,    &lt;br /&gt;Senior Technical Consultant,     &lt;br /&gt;EMC Consulting.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Edit: Added an extra parameter because the &lt;/em&gt;&lt;a href="http://consultingblogs.emc.com/crispinparker/archive/2009/12/02/scrum-for-team-system-v3-event-service.aspx"&gt;&lt;em&gt;Event Service&lt;/em&gt;&lt;/a&gt;&lt;em&gt; end point also needs updating.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Edit: Added an extra section to describe the REPORTSERVERSERVICENAME command line switch.&lt;/em&gt;&lt;/p&gt;&lt;img src="http://consultingblogs.emc.com/aggbug.aspx?PostID=16804" width="1" height="1"&gt;</description><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/Scrum+for+team+system/default.aspx">Scrum for team system</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/getting+started/default.aspx">getting started</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/tfs+2010/default.aspx">tfs 2010</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/Template+Deployment/default.aspx">Template Deployment</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/SfTS+v3/default.aspx">SfTS v3</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/Installation/default.aspx">Installation</category></item><item><title>Scrum for Team System v3 – Work Item Relationships</title><link>http://consultingblogs.emc.com/crispinparker/archive/2010/01/21/scrum-for-team-system-v3-work-item-relationships.aspx</link><pubDate>Thu, 21 Jan 2010 11:48:44 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:16790</guid><dc:creator>crispin.parker</dc:creator><slash:comments>0</slash:comments><comments>http://consultingblogs.emc.com/crispinparker/comments/16790.aspx</comments><wfw:commentRss>http://consultingblogs.emc.com/crispinparker/commentrss.aspx?PostID=16790</wfw:commentRss><description>&lt;p&gt;&lt;em&gt;This post relates to Scrum for Team System version 3.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;A recent comment revealed that there is some confusion on how the work items are linked in the new SfTS v3 template, so here is a quick reference guide:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Life cycle work items:&lt;/h3&gt;  &lt;p&gt;The life cycle work items deal with tracking the time lines of the project. They are closely related (and add meta data) to the project Iteration Path. These work items are not directly linked to the feature tracking work items, however some aggregated values are rolled up by using an inferred linkage based on the iteration path.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Release &lt;/li&gt;    &lt;li&gt;Sprint &lt;/li&gt;    &lt;li&gt;Team Sprint &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://consultingblogs.emc.com/blogs/crispinparker/image_261E2905.png"&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="Release, Sprint and Team Sprint" border="0" alt="Release, Sprint and Team Sprint" src="http://consultingblogs.emc.com/blogs/crispinparker/image_thumb_3EADC655.png" width="506" height="411" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h3&gt;Feature tracking work items&lt;/h3&gt;  &lt;p&gt;The feature tracking work items deal with the content and status of the product backlog. The main component of the feature tracking work items is the “Product Backlog Item” (PBI). The status and requirements of the PBI are described by the other&amp;#160; linked work items.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Product Backlog Item &lt;/li&gt;    &lt;li&gt;Sprint Backlog Task &lt;/li&gt;    &lt;li&gt;Acceptance Test &lt;/li&gt;    &lt;li&gt;Impediment &lt;/li&gt;    &lt;li&gt;Bug Report &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://consultingblogs.emc.com/blogs/crispinparker/image_17074A2B.png"&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="image" border="0" alt="image" src="http://consultingblogs.emc.com/blogs/crispinparker/image_thumb_6B56802E.png" width="438" height="449" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;You can find a wealth of additional information on the new SfTS version 3 infrastructure in &lt;a href="http://consultingblogs.emc.com/simonbennett/archive/2009/11/11/the-tfs-2010-product-backlog-ecosystem.aspx"&gt;Simon Bennett's Blog&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Handy Links:&lt;/h3&gt;  &lt;li&gt;&lt;a href="http://scrumforteamsystem.com/cs/forums/13/ShowForum.aspx"&gt;Scrum for Team System - V3.x Beta 2 Discussions&lt;/a&gt; &lt;/li&gt;  &lt;li&gt;&lt;a href="http://www.scrumforteamsystem.com/"&gt;Scrum for Team System – Home Page&lt;/a&gt; &lt;/li&gt;  &lt;li&gt;&lt;a href="http://microsoftpdc.com/Sessions/FT09"&gt;Scrum in the Enterprise - PDC Presentation Webcast&lt;/a&gt;     &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Regards,      &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;Crispin Parker,      &lt;br /&gt;Senior Practice Consultant,       &lt;br /&gt;EMC Consulting.&lt;/p&gt;    &lt;p&gt;&lt;/p&gt; &lt;/li&gt;&lt;img src="http://consultingblogs.emc.com/aggbug.aspx?PostID=16790" width="1" height="1"&gt;</description><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/TFS/default.aspx">TFS</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/Scrum+for+team+system/default.aspx">Scrum for team system</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/getting+started/default.aspx">getting started</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/tfs+2010/default.aspx">tfs 2010</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/SfTS+v3/default.aspx">SfTS v3</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/Scrum+for+Team+System+Version+3+_2800_Beta+2_2900_/default.aspx">Scrum for Team System Version 3 (Beta 2)</category></item><item><title>Scrum for Team System v3 – Scrum Masters Workbench Task Board</title><link>http://consultingblogs.emc.com/crispinparker/archive/2010/01/20/scrum-for-team-system-v3-scrum-masters-workbench-task-board.aspx</link><pubDate>Wed, 20 Jan 2010 15:00:05 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:16776</guid><dc:creator>crispin.parker</dc:creator><slash:comments>13</slash:comments><comments>http://consultingblogs.emc.com/crispinparker/comments/16776.aspx</comments><wfw:commentRss>http://consultingblogs.emc.com/crispinparker/commentrss.aspx?PostID=16776</wfw:commentRss><description>&lt;p&gt;&lt;em&gt;This post relates to Team Foundation Server, Scrum for Team System and the Scrum Masters Workbench.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;One of the most asked questions about our new &lt;a href="http://consultingblogs.emc.com/crispinparker/archive/2009/11/30/scrum-for-team-system-version-3-beta-2-released.aspx"&gt;version 3 Scrum template&lt;/a&gt; is “where is the task board?”. The task board applications and our process templates seem to have become considered a single entity. Well it’s good news, as today we have released the first beta edition of a version 3 compatible task board application.&lt;/p&gt;  &lt;p&gt;This time around the task board is a component of the &lt;a href="http://consultingblogs.emc.com/crispinparker/archive/2009/11/27/scrum-for-team-system-v3-beta-2-scrum-masters-workbench.aspx"&gt;Scrum Masters Workbench&lt;/a&gt; application.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://consultingblogs.emc.com/blogs/crispinparker/image_77375858.png"&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="image" border="0" alt="image" src="http://consultingblogs.emc.com/blogs/crispinparker/image_thumb_651AEEFE.png" width="539" height="367" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h3&gt;So What’s New?&lt;/h3&gt;  &lt;p&gt;One of the limitations of the previous Task Board applications is that you couldn’t easily change the display layout or add customisations and it was only possible to connect to Scrum for Team System projects. So we’ve addressed all these points in the new version.&lt;/p&gt;  &lt;p&gt;Now you can:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Control &lt;strong&gt;any&lt;/strong&gt; TFS project (including SfTS v2, SfTS v3 or even MSFAgile) &lt;/li&gt;    &lt;li&gt;Add custom work item states. &lt;/li&gt;    &lt;li&gt;Create your own views for work item relationships. &lt;/li&gt;    &lt;li&gt;Control multiple work item types in multiple tabs. &lt;/li&gt;    &lt;li&gt;Instantly re-arrange swim lane columns by dragging the header text. &lt;/li&gt;    &lt;li&gt;Easily control which states are displayed as columns. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;All the displayed work item information is completely controlled by the TFS project definition. Add a new field control to a work item definition and it will appear in the task board. Add a new state and it will be available as a swim lane column. The whole application has been designed with customisation and flexibility in mind.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Download&lt;/h3&gt;  &lt;p&gt;To get your hands on the beta installers follow the below link:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="Task board for SfTS version 3" href="http://scrumforteamsystem.com/cs/forums/4701/ShowPost.aspx"&gt;Task board for SfTS version 3&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;Note: This application requires Visual Studio 2010 Team Explorer to be installed.&lt;/em&gt; &lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;/p&gt;  &lt;h3&gt;Handy Links&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="Scrum for Team System - V3.x Beta 2 Discussions" href="http://scrumforteamsystem.com/cs/forums/13/ShowForum.aspx"&gt;Scrum for Team System - V3.x Beta 2 Discussions&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="Scrum for Team System – Home Page" href="http://www.scrumforteamsystem.com/"&gt;Scrum for Team System – Home Page&lt;/a&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="Scrum in the Enterprise - PDC Presentation" href="http://microsoftpdc.com/Sessions/FT09"&gt;Scrum in the Enterprise - PDC Presentation Webcast&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;This is beta software so there maybe some issue. Please report any bugs or issues in the discussions forum.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Regards,&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Crispin Parker,    &lt;br /&gt;Senior Practice Consultant,     &lt;br /&gt;EMC Consulting.&lt;/p&gt;&lt;img src="http://consultingblogs.emc.com/aggbug.aspx?PostID=16776" width="1" height="1"&gt;</description></item><item><title>Scrum for Team System v3 – Deep inside the Transition Event Service</title><link>http://consultingblogs.emc.com/crispinparker/archive/2010/01/15/scrum-for-team-system-v3-deep-inside-the-transition-event-service.aspx</link><pubDate>Fri, 15 Jan 2010 18:23:40 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:16763</guid><dc:creator>crispin.parker</dc:creator><slash:comments>1</slash:comments><comments>http://consultingblogs.emc.com/crispinparker/comments/16763.aspx</comments><wfw:commentRss>http://consultingblogs.emc.com/crispinparker/commentrss.aspx?PostID=16763</wfw:commentRss><description>&lt;p&gt;&lt;em&gt;This post relates to the Team Foundation Server Scrum for Team System process template event service. It assumes that you have a basic understanding of TFS work items and their fields.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;In my &lt;a href="http://consultingblogs.emc.com/crispinparker/archive/2009/12/02/scrum-for-team-system-v3-event-service.aspx"&gt;last post&lt;/a&gt; I gave you an overview of the SfTS event service. Here I pick up the story again and look at the Transition service rules.&lt;/p&gt;  &lt;p&gt;The event service code is written with extensibility in mind using the Microsoft Extensibility Framework. Out of the box it comes with two flavours of work item changed event processors; Transition and Aggregation. Both services have a set of rules that are defined in XML configuration files. The MEF plug-in assemblies and the controlling rules files can be found under the SfTS v3 installed web service folder on the TFS AT.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Default Installation Plug-in Folder:      &lt;br /&gt;      &lt;br /&gt;&lt;em&gt;C:\Program Files\Scrum for Team System\Services\3.0\Plugins&lt;/em&gt;       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Default Installation Rules Folder:      &lt;br /&gt;      &lt;br /&gt;&lt;em&gt;C:\Program Files\Scrum for Team System\Services\3.0\Rules&lt;/em&gt;       &lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;The Transition Service&lt;/h2&gt;  &lt;p&gt;The transition service handles work item field changes from one value to another. Transition rules can be set to either update the source work item or work items linked to the source item.&lt;/p&gt;  &lt;h3&gt;Example Transition Rule&lt;/h3&gt;  &lt;p&gt;Scenario: In our SfTS project, we have a “Product Backlog Item” which links to several “Sprint Backlog Tasks” using the “Scrum.ImplementedBy” link type. When all the linked SBTs are set to a state of “Deleted” we want the Transition Service to automatically set the PBI to “Deleted”.&lt;/p&gt;  &lt;p&gt;Here is sample of a XML transition rule that will apply our desired functionality:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#0000a0" size="2" face="Courier New"&gt;&amp;lt;TransitionRule&amp;gt;        &lt;br /&gt;&amp;#160; &amp;lt;WorkItemTypeName         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; source=&amp;quot;Sprint Backlog Task&amp;quot;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; target=&amp;quot;Product Backlog Item&amp;quot; /&amp;gt;         &lt;br /&gt;&amp;#160; &amp;lt;Transition         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; field=&amp;quot;System.State&amp;quot;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; from=&amp;quot;*&amp;quot;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; to=&amp;quot;Deleted&amp;quot; /&amp;gt;         &lt;br /&gt;&amp;#160; &amp;lt;LinkType target=&amp;quot;LinkedItem&amp;quot;&amp;gt;Scrum.ImplementedBy&amp;lt;/LinkType&amp;gt;         &lt;br /&gt;&amp;#160; &amp;lt;ChangeNote&amp;gt;All tasks have been deleted&amp;lt;/ChangeNote&amp;gt;         &lt;br /&gt;&amp;#160; &amp;lt;EligibleTargetStates&amp;gt;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;State&amp;gt;In Progress&amp;lt;/State&amp;gt;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;State&amp;gt;Done&amp;lt;/State&amp;gt;         &lt;br /&gt;&amp;#160; &amp;lt;/EligibleTargetStates&amp;gt;         &lt;br /&gt;&amp;#160; &amp;lt;Replacements&amp;gt;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Replacement         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; targetfield=&amp;quot;System.State&amp;quot;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; type=&amp;quot;Specified&amp;quot;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; decimalplaces=&amp;quot;0&amp;quot;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;gt;Deleted&amp;lt;/Replacement&amp;gt;         &lt;br /&gt;&amp;#160; &amp;lt;/Replacements&amp;gt;         &lt;br /&gt;&amp;#160; &amp;lt;SiblingConditions&amp;gt;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SiblingCondition         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; comparison=&amp;quot;All&amp;quot;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; field=&amp;quot;System.State&amp;quot;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; value=&amp;quot;Deleted&amp;quot;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; siblingtype=&amp;quot;Sprint Backlog Task&amp;quot;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; link=&amp;quot;Scrum.ImplementedBy&amp;quot;&amp;gt;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ExcludedStates&amp;gt;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;State&amp;gt;Ignored&amp;lt;/State&amp;gt;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/ExcludedStates&amp;gt;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/SiblingCondition&amp;gt;         &lt;br /&gt;&amp;#160; &amp;lt;/SiblingConditions&amp;gt;         &lt;br /&gt;&amp;lt;/TransitionRule&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;em&gt;Note: This isn’t a real rule that exists in the SfTS solution, its just an example.&lt;/em&gt;&lt;/p&gt;  &lt;h3&gt;Transition Rule Components Breakdown&lt;/h3&gt;  &lt;p&gt;So let’s break down the example rule to see what all the bits do.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Transition rule:&lt;/strong&gt;       &lt;br /&gt;      &lt;br /&gt;&lt;font color="#0000a0" size="2" face="Courier New"&gt;&amp;lt;TransitionRule&amp;gt;&lt;/font&gt;       &lt;br /&gt;      &lt;br /&gt;      &lt;ul&gt;       &lt;li&gt;The container for the rule specification.          &lt;br /&gt;          &lt;br /&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Work Item Type Name:&lt;/strong&gt;       &lt;br /&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;WorkItemTypeName source=&amp;quot;Sprint Backlog Task&amp;quot; target=&amp;quot;Product Backlog Item&amp;quot; /&amp;gt;&lt;/font&gt;       &lt;br /&gt;      &lt;br /&gt;      &lt;ul&gt;       &lt;li&gt;Source. The type of the changed work item to match. The sample rule will match a source work item of type “Sprint Backlog Task”. &lt;/li&gt;        &lt;li&gt;Target. The type of linked work item to update. the sample will target work items of type “Product Backlog Item”.          &lt;br /&gt;          &lt;br /&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Transition:&lt;/strong&gt;       &lt;br /&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;Transition field=&amp;quot;System.State&amp;quot; from=&amp;quot;*&amp;quot; to=&amp;quot;Deleted&amp;quot; /&amp;gt;&lt;/font&gt;       &lt;br /&gt;      &lt;br /&gt;      &lt;ul&gt;       &lt;li&gt;Field. The name of the source work item field to monitor for changes. &lt;/li&gt;        &lt;li&gt;From. The previous field value. The sample rule uses the wildcard “*” character, this means that any previous value will match the rule. &lt;/li&gt;        &lt;li&gt;To. The new field value. The “to” value of the sample transition is set to “Deleted”. This means that this rule will only match work items that have a new “System.State” value of “Deleted”.          &lt;br /&gt;          &lt;br /&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Link Type:&lt;/strong&gt;       &lt;br /&gt;      &lt;br /&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;LinkType target=&amp;quot;LinkedItem&amp;quot;&amp;gt;&lt;font color="#008000"&gt;Scrum.ImplementedBy&lt;/font&gt;&amp;lt;/LinkType&amp;gt;&lt;/font&gt;       &lt;br /&gt;      &lt;br /&gt;      &lt;ul&gt;       &lt;li&gt;Target. The work item to target. This value can be either “Self” or “LinkedItem”. &lt;/li&gt;        &lt;li&gt;The work item linkage type name. This is the type of linkage between the source and target work items.          &lt;br /&gt;          &lt;br /&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Change Note:&lt;/strong&gt;       &lt;br /&gt;      &lt;br /&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;ChangeNote&amp;gt;&lt;font color="#008000"&gt;All tasks have been deleted&lt;/font&gt;&amp;lt;/ChangeNote&amp;gt;&lt;/font&gt;       &lt;br /&gt;      &lt;br /&gt;      &lt;ul&gt;       &lt;li&gt;The note to be written to any updated work items change history.          &lt;br /&gt;          &lt;br /&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Eligible Target States:&lt;/strong&gt;       &lt;br /&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;EligibleTargetStates&amp;gt;&amp;#160; &lt;br /&gt;&amp;#160; &amp;lt;State&amp;gt;&lt;font color="#008000"&gt;In Progress&lt;/font&gt;&amp;lt;/State&amp;gt;&amp;#160; &lt;br /&gt;&amp;#160; &amp;lt;State&amp;gt;&lt;font color="#008000"&gt;Done&lt;/font&gt;&amp;lt;/State&amp;gt;&amp;#160; &lt;br /&gt;&amp;lt;/EligibleTargetStates&amp;gt;&lt;/font&gt;       &lt;br /&gt;      &lt;br /&gt;      &lt;ul&gt;       &lt;li&gt;A list of target work item states that are eligible to match this rule. This example will only target work items that are in a state of either “In Progress” or “Done”.          &lt;br /&gt;          &lt;br /&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Replacements Collection:        &lt;br /&gt;&lt;/strong&gt;      &lt;br /&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;Replacements&amp;gt;&lt;/font&gt;       &lt;br /&gt;      &lt;br /&gt;      &lt;ul&gt;       &lt;li&gt;This contains a collection of replacement specifications. A single rule can contain multiple replacements and update multiple fields on the target work item.          &lt;br /&gt;          &lt;br /&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Replacement:&lt;/strong&gt;       &lt;br /&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;Replacement targetfield=&amp;quot;System.State&amp;quot; type=&amp;quot;Specified&amp;quot; decimalplaces=&amp;quot;0&amp;quot;&amp;gt;&lt;font color="#008000"&gt;Deleted&lt;/font&gt;&amp;lt;/Replacement&amp;gt;&lt;/font&gt;       &lt;br /&gt;      &lt;br /&gt;      &lt;ul&gt;       &lt;li&gt;Target Field. The field on the target work item to update. &lt;/li&gt;        &lt;li&gt;Type. The replacement value specification type. This can be either “Specified” or “Expression”. &lt;/li&gt;        &lt;li&gt;Decimal places. Used when specifying an expression to limit the precision of the returned value. &lt;/li&gt;        &lt;li&gt;Node content. The replacement value. If the type is “Specified” then the value is used as is. A type of “Expression” means that the value represents a calculation expression. More on expressions below.          &lt;br /&gt;          &lt;br /&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Sibling Conditions:&lt;/strong&gt;       &lt;br /&gt;      &lt;br /&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;SiblingConditions&amp;gt;&lt;/font&gt;       &lt;br /&gt;      &lt;br /&gt;      &lt;ul&gt;       &lt;li&gt;A collection of Sibling condition specifications. More on siblings below.          &lt;br /&gt;          &lt;br /&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Sibling Condition:&lt;/strong&gt;       &lt;br /&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;SiblingCondition comparison=&amp;quot;All&amp;quot; field=&amp;quot;System.State&amp;quot; value=&amp;quot;Deleted&amp;quot; siblingtype=&amp;quot;Sprint Backlog Task&amp;quot; link=&amp;quot;Scrum.ImplementedBy&amp;quot;&amp;gt;        &lt;br /&gt;&amp;#160; &amp;lt;ExcludedStates&amp;gt;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;State&amp;gt;&lt;font color="#008000"&gt;Ignored&lt;/font&gt;&amp;lt;/State&amp;gt;         &lt;br /&gt;&amp;#160; &amp;lt;/ExcludedStates&amp;gt;&amp;#160; &lt;br /&gt;&amp;lt;/SiblingCondition&amp;gt;&lt;/font&gt;       &lt;br /&gt;      &lt;br /&gt;      &lt;ul&gt;       &lt;li&gt;Comparison. Specifies which sibling items to consider. This can be either “All” or “Any”. &lt;/li&gt;        &lt;li&gt;Field. The field on the sibling item to compare. The sample rules specifies that the “System.State” field value should be examined. &lt;/li&gt;        &lt;li&gt;Value. The field value to be matched. The sample rule checks for a value of &amp;quot;Deleted&amp;quot;. &lt;/li&gt;        &lt;li&gt;Sibling Type. The sibling work item type of the. Example: &amp;quot;Sprint Backlog Task&amp;quot;. &lt;/li&gt;        &lt;li&gt;Link. The work item linkage between the target and sibling work items. Example: &amp;quot;Scrum.ImplementedBy&amp;quot; &lt;/li&gt;        &lt;li&gt;Excluded states. A list of sibling work item states to ignore from the condition test.&amp;#160; &lt;br /&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Replacement expressions&lt;/h3&gt;  &lt;p&gt;The replacement component of the transition rule can specify two types of replacement value; Specified or Expression. “Specified” indicates that the value is used “as is” and “Expression” means that the value is interpreted as an expression.&lt;/p&gt;  &lt;p&gt;Expressions allow you to specify a field name or a simple mathematical formula. Formulas can use the add, subtract, multiple and divide operator symbols (+, –, *, /) and the operand values can be either numerical or work item field names.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Expression Examples:&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;Scrum.BusinessValue / Microsoft.VSTS.Scheduling.StoryPoints        &lt;br /&gt;        &lt;br /&gt;&lt;/font&gt;This expression divides the “Scrum.BusinessValue” field value by the “Microsoft.VSTS.Scheduling.StoryPoints” field value.       &lt;br /&gt;      &lt;br /&gt;&lt;em&gt;Note: When using mathematical expressions, only fields with a “Double” data type can be specified.&lt;/em&gt;       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;System.IterationPath&lt;/font&gt;       &lt;br /&gt;      &lt;br /&gt;This expression returns the value of the “System.IterationPath” field.       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;Scrum.BusinessValue * 2.5 / 100&lt;/font&gt;       &lt;br /&gt;      &lt;br /&gt;The above expression returns the “Scrum.BusinessValue” field multipled by 2.5 and divided by 100.       &lt;br /&gt;      &lt;br /&gt;&lt;em&gt;Note: Calculations are made in left to right operand pair sequence. So the above example will be the result of “Scrum.BuinessValue” multiplied by 2.5 that is then divided by 100.&lt;/em&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Siblings&lt;/h3&gt;  &lt;p&gt;Transition rules can include a collection of “Sibling” conditions. Siblings are work items that share a common linked target work item. For example in our “Make PBI Deleted” scenario, we specify that all work item Sibs of type “Sprint Backlog Item” that are linked to the target PBI with by a “Scrum.ImplementedBy” linkage, must also be in a state of “Deleted”. From the PBI point of view, this means that all my linked SBTs must be in a state of “Deleted” before this rule can be applied.&lt;/p&gt;  &lt;p&gt;You can add multiple sibling conditions that can the reference any work item type linked by any linkage type.&lt;/p&gt;  &lt;p&gt;Sibling conditions also allow you to set a list of sibling states that exclude work items from comparison. This is useful in order to handle scenarios where some work items should be ignored.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Links&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="https://www.scrumforteamsystem.com/cs/forums/13/ShowForum.aspx"&gt;Scrum for Team System v3 Beta forum&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://www.scrumforteamsystem.com/cs/forums/4554/ShowPost.aspx"&gt;Download Scrum for Team System v3 installers&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Next time I will delve into the Transition sister service; the Aggregation service.&lt;/p&gt;&lt;img src="http://consultingblogs.emc.com/aggbug.aspx?PostID=16763" width="1" height="1"&gt;</description><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/TFS/default.aspx">TFS</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/Scrum+for+team+system/default.aspx">Scrum for team system</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/tfs+2010/default.aspx">tfs 2010</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/SfTS+v3/default.aspx">SfTS v3</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/Scrum+for+Team+System+Version+3+_2800_Beta+2_2900_/default.aspx">Scrum for Team System Version 3 (Beta 2)</category></item><item><title>Scrum for Team System v3 – Event Service</title><link>http://consultingblogs.emc.com/crispinparker/archive/2009/12/02/scrum-for-team-system-v3-event-service.aspx</link><pubDate>Wed, 02 Dec 2009 16:56:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:16659</guid><dc:creator>crispin.parker</dc:creator><slash:comments>5</slash:comments><comments>http://consultingblogs.emc.com/crispinparker/comments/16659.aspx</comments><wfw:commentRss>http://consultingblogs.emc.com/crispinparker/commentrss.aspx?PostID=16659</wfw:commentRss><description>&lt;p&gt;&lt;em&gt;This post relates to Team Foundation Server 2010 and the Scrum for Team System version 3 process template. &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Now that the SfTS version 3 beta 2 is out the door, I have a chance to reflect back on some of the work that went into getting it this far. One component I am partially fond of is the Event Service.&lt;/p&gt;  &lt;p&gt;The event service has been a component of the SfTS template solution since version 2. The chances are that you never noticed it busily working away in the background rolling up states and summing up work remaining figures. This much is also true in the version 3 template, it works quietly in background to make your project housekeeping easier and to give you useful figures. But in SfTS v3 it does a lot more heavy lifting.&lt;/p&gt;  &lt;h2&gt;So what is it?&lt;/h2&gt;  &lt;p&gt;The event service is a web application that is installed into the TFS AT (Team Foundation Server Application Tier) when you select the “Service” feature of the SfTS installer. The TFS AT passes a set of change data to the service endpoint whenever an altered work item is saved. &lt;/p&gt;  &lt;p&gt;Using a set of configuration rules, the service examines the changes to determine if they affect any work items in the project. If changes to work items are required, the rules define the new values and the service updates the work item(s). &lt;/p&gt;  &lt;p&gt;You can see the service changes made to your work items by examining the work item history. The name of the service and the action taken is included in the history details.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://consultingblogs.emc.com/blogs/crispinparker/image_1C3D53D9.png"&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="image" border="0" alt="image" src="http://consultingblogs.emc.com/blogs/crispinparker/image_thumb_609D4518.png" width="542" height="531" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h2&gt;Controlling the service and synchronising work items:&lt;/h2&gt;  &lt;p&gt;The installed web application includes three service end points. The first is called by TFS in the event of a work item change, the other two are called manually by the TFS administrator. &lt;/p&gt;  &lt;h3&gt;&lt;/h3&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Service Control&lt;/h3&gt;  &lt;p&gt;Unsurprisingly, this web service end point allows you to control the service! Actually, it allows you to start, stop and check the status of the work item changed service.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://consultingblogs.emc.com/blogs/crispinparker/image_64C71CDD.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://consultingblogs.emc.com/blogs/crispinparker/image_thumb_33E46572.png" width="244" height="153" /&gt;&lt;/a&gt; &lt;a href="http://consultingblogs.emc.com/blogs/crispinparker/image_051EACD0.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://consultingblogs.emc.com/blogs/crispinparker/image_thumb_1786FD85.png" width="244" height="154" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The service control end point is located at:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;http://[TFSHOST]:[TFSPORT]/ScrumforTeamSystem/3.0/ServiceControl.asmx&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Synchronise All&lt;/h3&gt;  &lt;p&gt;The “Sync All” service schedules a special job in the event service queue. Upon de-queuing a sync all request, the service will load all work items [in the specified project] and apply any rule matches. In this way, you can use this service to correct and synchronise all the work items. Obviously, this is a process intensive exercise and should only be executed when the TFS instance is not under any heavy load, possibly out of office hours.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://consultingblogs.emc.com/blogs/crispinparker/image_7DB2C755.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://consultingblogs.emc.com/blogs/crispinparker/image_thumb_4CD00FEA.png" width="244" height="153" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://consultingblogs.emc.com/blogs/crispinparker/image_32FBD9BB.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://consultingblogs.emc.com/blogs/crispinparker/image_thumb_49DAAB37.png" width="244" height="154" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This service end point requires two parameters; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;tfsAddress&lt;/strong&gt; – The project collection URL.       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;projectName – &lt;/strong&gt;The project name to synchronise.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The sync all end point is located at:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;http://[TFSHOST]:[TFSPORT]/ScrumforTeamSystem/3.0/SyncAll.asmx&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Under the hood:&lt;/h2&gt;  &lt;p&gt;As the service runs in background, you can’t see much action while it’s working. However, you can get to see more by enabling event logging.&lt;/p&gt;  &lt;h3&gt;Event Logging&lt;/h3&gt;  &lt;p&gt;To set this up, you will need to create and edit files on the TFS AT.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;Create an empty, accessible log file.&lt;/strong&gt;       &lt;br /&gt;      &lt;br /&gt;The event service runs under the same app pool as the TFS AT. In order to make log entries, the app pool user account must have write permission to the target log file. The easiest way to accomplish this is to create local file and give the “&lt;em&gt;everybody&lt;/em&gt;” group full permission over it.       &lt;br /&gt;      &lt;br /&gt;Example: &lt;font color="#008000"&gt;c:\users\[Profile Name]\AppData\Local\Temp\SfTSEvent.log&lt;/font&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Open the event service “web.config” file.&lt;/strong&gt;       &lt;br /&gt;      &lt;br /&gt;The configuration file is located at:       &lt;br /&gt;      &lt;br /&gt;&lt;em&gt;C:\[Program Files]\Scrum for Team System\Services\web.config&lt;/em&gt;       &lt;br /&gt;      &lt;br /&gt;Note: You may have to open the file with elevated privileges.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Add the log file path to the relevant setting value.&lt;/strong&gt;      &lt;br /&gt;      &lt;br /&gt;Change:       &lt;br /&gt;      &lt;br /&gt;&lt;em&gt;&amp;lt;setting name=&amp;quot;LogFilePath&amp;quot; serializeAs=&amp;quot;String&amp;quot;&amp;gt;        &lt;br /&gt;&amp;#160; &amp;lt;value/&amp;gt;         &lt;br /&gt;&amp;lt;/setting&amp;gt;         &lt;br /&gt;        &lt;br /&gt;&lt;/em&gt;To:       &lt;br /&gt;      &lt;br /&gt;&lt;em&gt;&amp;lt;setting name=&amp;quot;LogFilePath&amp;quot; serializeAs=&amp;quot;String&amp;quot;&amp;gt;        &lt;br /&gt;&amp;#160; &amp;lt;value&amp;gt;&lt;font color="#008000"&gt;c:\users\[Profile Name]\AppData\Local\Temp\SfTSEvent.log&lt;/font&gt;&amp;lt;/value&amp;gt;         &lt;br /&gt;&amp;lt;/setting&amp;gt;        &lt;br /&gt;&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;Save the config file.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Now the details of the event service actions will be written to the log file.&lt;/p&gt;  &lt;p&gt;Well that's it for a high level look at the event service. In future posts I'll discuss the &lt;strong&gt;Work Item Changed&lt;/strong&gt; event, Transition rules, Aggregation rules and customisations.&lt;/p&gt;  &lt;h3&gt;Links&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;Scrum for Team System Version 3 Download     &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://scrumforteamsystem.com/cs/forums/4554/ShowPost.aspx"&gt;http://scrumforteamsystem.com/cs/forums/4554/ShowPost.aspx&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Regards,&lt;/p&gt;  &lt;p&gt;Crispin Parker,   &lt;br /&gt;Senior Practice Consultant,    &lt;br /&gt;EMC Consulting.&lt;/p&gt;&lt;img src="http://consultingblogs.emc.com/aggbug.aspx?PostID=16659" width="1" height="1"&gt;</description></item><item><title>Scrum for Team System Version 3 Beta 2 – Released!</title><link>http://consultingblogs.emc.com/crispinparker/archive/2009/11/30/scrum-for-team-system-version-3-beta-2-released.aspx</link><pubDate>Mon, 30 Nov 2009 18:10:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:16649</guid><dc:creator>crispin.parker</dc:creator><slash:comments>4</slash:comments><comments>http://consultingblogs.emc.com/crispinparker/comments/16649.aspx</comments><wfw:commentRss>http://consultingblogs.emc.com/crispinparker/commentrss.aspx?PostID=16649</wfw:commentRss><description>&lt;P&gt;It’s out, in the wild and running free!&lt;/P&gt;
&lt;P&gt;Grab the installers from the below linked forum post:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A title="Scrum for Team System Version 3 Beta 2 released" href="http://scrumforteamsystem.com/cs/forums/4554/ShowPost.aspx"&gt;Scrum for Team System Version 3 Beta 2 released&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Crispin Parker, &lt;BR&gt;Senior Practice Consultant, &lt;BR&gt;EMC Consulting.&lt;/P&gt;&lt;img src="http://consultingblogs.emc.com/aggbug.aspx?PostID=16649" width="1" height="1"&gt;</description><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/TFS/default.aspx">TFS</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/Scrum+for+team+system/default.aspx">Scrum for team system</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/tfs+2010/default.aspx">tfs 2010</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/SfTS+v3/default.aspx">SfTS v3</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/Scrum+for+Team+System+Version+3+_2800_Beta+2_2900_/default.aspx">Scrum for Team System Version 3 (Beta 2)</category></item><item><title>Scrum for Team System v3 Beta 2 – Scrum Masters Workbench</title><link>http://consultingblogs.emc.com/crispinparker/archive/2009/11/27/scrum-for-team-system-v3-beta-2-scrum-masters-workbench.aspx</link><pubDate>Fri, 27 Nov 2009 18:14:54 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:16646</guid><dc:creator>crispin.parker</dc:creator><slash:comments>1</slash:comments><comments>http://consultingblogs.emc.com/crispinparker/comments/16646.aspx</comments><wfw:commentRss>http://consultingblogs.emc.com/crispinparker/commentrss.aspx?PostID=16646</wfw:commentRss><description>&lt;p&gt;This post will give you a quick overview of the new Team Foundation Server 2010 (TFS) project setup utility entitled: &lt;strong&gt;Scrum Masters Workbench&lt;/strong&gt; (SMW) and how it is used with the forthcoming Scrum for Team System version 3 (SfTS)process template.&lt;/p&gt;  &lt;p&gt;The new SfTS process template offers the ability to support practically any type of TFS project team configuration. This ranges from a simple single team project to multiple teams working in multiple work streams at differing cadences on multiple releases and much, much more!&lt;/p&gt;  &lt;p&gt;Obviously, this means that project setup can be a little overwhelming when using the standard Visual Studio tools*. In fact this is exactly the feedback reported by our Beta 1 testers.&lt;/p&gt;  &lt;p&gt;* Formally known as Team Explorer and now included in Visual Studio 2010 Ultimate edition.&lt;/p&gt;  &lt;p&gt;The SfTS Beta 2 template is imminent and to be released to a much wider audience than the Beta 1 edition. So we have produced a new project setup utility to help project administrators get new projects up and running with the minimum of hassle. The setup utility is a component of the SMW.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://consultingblogs.emc.com/blogs/crispinparker/image_5262E2E7.png"&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="image" border="0" alt="image" src="http://consultingblogs.emc.com/blogs/crispinparker/image_thumb_740E6FDE.png" width="603" height="463" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The “&lt;strong&gt;Project Setup&lt;/strong&gt;” mode within the SMW gives you a visual representation of the project iteration path structure and [when connected to a SfTS v3 based project] the new project life cycle work items; * Release, Sprint and Team Sprint.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://consultingblogs.emc.com/blogs/crispinparker/image_23F3A1AE.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://consultingblogs.emc.com/blogs/crispinparker/image_thumb_28298B41.png" width="244" height="197" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;* See &lt;a href="http://consultingblogs.emc.com/simonbennett/default.aspx"&gt;Simon Bennett’s blog&lt;/a&gt; for more information on the new project life cycle work items&lt;/p&gt;  &lt;p&gt;SfTSv3 projects contain no pre-defined work item instances (unlike SfTS v2 projects). So to get you started the utility offers two setup modes; “&lt;strong&gt;Quick Setup&lt;/strong&gt;” and “&lt;strong&gt;Advanced&lt;/strong&gt;”.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Quick Setup Mode:&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://consultingblogs.emc.com/blogs/crispinparker/image_2678BF6D.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://consultingblogs.emc.com/blogs/crispinparker/image_thumb_27AD327F.png" width="244" height="196" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This mode gives you a limited set of options so that you need only enter the bear minimum of configuration data:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Project Start Date&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Project End Date&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Team Name&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Team Capacity&lt;/strong&gt;&lt;em&gt; (hours of effort available per sprint)&lt;/em&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Sprint Length&lt;/strong&gt;&lt;em&gt; (in days)&lt;/em&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The project structure generated from this mode follows a single; Release, Work Stream, Sprint and Team pattern.&lt;/p&gt;  &lt;h4&gt;&lt;em&gt;Quick Setup Project Structure&lt;/em&gt;&lt;/h4&gt;  &lt;p&gt;&lt;a href="http://consultingblogs.emc.com/blogs/crispinparker/image_53E9B963.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="Quick Setup Project Structure" border="0" alt="Quick Setup Project Structure" src="http://consultingblogs.emc.com/blogs/crispinparker/image_thumb_3FC0770D.png" width="240" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Advanced Mode:&lt;/h3&gt;  &lt;p&gt;This setup option is intended to help the project administrators of larger, multi-team projects. &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://consultingblogs.emc.com/blogs/crispinparker/image_16D56204.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://consultingblogs.emc.com/blogs/crispinparker/image_thumb_646168B7.png" width="244" height="190" /&gt;&lt;/a&gt; &lt;a href="http://consultingblogs.emc.com/blogs/crispinparker/image_02CBA9A1.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://consultingblogs.emc.com/blogs/crispinparker/image_thumb_74E93DD8.png" width="244" height="190" /&gt;&lt;/a&gt; &lt;a href="http://consultingblogs.emc.com/blogs/crispinparker/image_1A72BB3A.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://consultingblogs.emc.com/blogs/crispinparker/image_thumb_52A10C85.png" width="244" height="190" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;It offers the ability to specify multiple Releases, Work Streams and Teams. Project structures created using this mode can be very complex:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://consultingblogs.emc.com/blogs/crispinparker/image_37F4706C.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://consultingblogs.emc.com/blogs/crispinparker/image_thumb_5224B3C3.png" width="737" height="309" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Additional Setup Options:&lt;/h3&gt;  &lt;p&gt;Once the initial project setup is complete, you can tweak and adjust the various nodes as required. Right-clicking on a node gives you a context menu of further options:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://consultingblogs.emc.com/blogs/crispinparker/image_71C367BE.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://consultingblogs.emc.com/blogs/crispinparker/image_thumb_2C7AEAC8.png" width="739" height="310" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;New Associated Item &lt;/strong&gt;&lt;em&gt;(SfTS v3 projects only)        &lt;br /&gt;&lt;/em&gt;      &lt;br /&gt;This option is available from nodes that match the iteration path depth of a life cycle work item but do not have an associated item. See &lt;strong&gt;Life Cycle Work Items and the Iteration Path&lt;/strong&gt; below for more information on node branch depth.       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Edit Associated Item&lt;/strong&gt; &lt;em&gt;(SfTS v3 projects only)        &lt;br /&gt;&lt;/em&gt;      &lt;br /&gt;Opens the edit dialog for the associated work item. &lt;em&gt;Note: This is also accomplished by clicking the node name link.&lt;/em&gt;       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Show Descendents Only        &lt;br /&gt;&lt;/strong&gt;      &lt;br /&gt;Filters the visible nodes to the selected node and it’s children only.       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Add Child        &lt;br /&gt;&lt;/strong&gt;      &lt;br /&gt;Adds a new iteration path child node to the selected item. If this is a SfTS v3 project and the new child node matches a life cycle work item depth, this will also create a new associated item.       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Rename        &lt;br /&gt;&lt;/strong&gt;      &lt;br /&gt;Allows you to change the name of the node. &lt;em&gt;Note: Changing an iteration path node name will affect all the child nodes (and associated work items). So make sure you save any work item changes prior to using this option.        &lt;br /&gt;&lt;/em&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Delete        &lt;br /&gt;&lt;/strong&gt;      &lt;br /&gt;Deletes the selected node and all it’s descendents. &lt;em&gt;Note: This action will affect all existing work items that are associated with the deleted node and it’s child nodes. Make sure you save all work item changes prior to using this mode.&lt;/em&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Life Cycle Work Items and the Iteration Path:&lt;/h3&gt;  &lt;p&gt;In SfTSv3 projects, life cycle work items have a strict dependency on iteration path nodes at set branch depths. This association is required in order to ensure that both the reporting and event service features of the template can work correctly.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Release Work Items (Level 2)        &lt;br /&gt;&amp;#160; &lt;br /&gt;&lt;/strong&gt;Must be associated to iteration path nodes at the level two branch depth.       &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://consultingblogs.emc.com/blogs/crispinparker/image_1E987F00.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://consultingblogs.emc.com/blogs/crispinparker/image_thumb_4FA793D3.png" width="244" height="186" /&gt;&lt;/a&gt;       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Sprint Work Items (Level 4)        &lt;br /&gt;&lt;/strong&gt;      &lt;br /&gt;Must be association to iteration path nodes at the forth level depth.       &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://consultingblogs.emc.com/blogs/crispinparker/image_34FAF7BA.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://consultingblogs.emc.com/blogs/crispinparker/image_thumb_660A0C8D.png" width="244" height="186" /&gt;&lt;/a&gt;       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Team Sprint Work Items (Level 5)        &lt;br /&gt;&lt;/strong&gt;      &lt;br /&gt;Must be association to iteration path nodes at the fifth level depth.       &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://consultingblogs.emc.com/blogs/crispinparker/image_6B0C4A3C.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://consultingblogs.emc.com/blogs/crispinparker/image_thumb_35172F55.png" width="244" height="186" /&gt;&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;/h3&gt;  &lt;h3&gt;Finally:&lt;/h3&gt;  &lt;p&gt;The SMW beta release will be made available for download alongside the SfTS v3 Beta 2 template. Watch the forums for more information.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.scrumforteamsystem.com/cs/Forums"&gt;http://www.scrumforteamsystem.com/cs/Forums&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Crispin Parker,    &lt;br /&gt;Senior Practice Consultant,     &lt;br /&gt;EMC Consulting.&lt;/p&gt;&lt;img src="http://consultingblogs.emc.com/aggbug.aspx?PostID=16646" width="1" height="1"&gt;</description><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/WPF/default.aspx">WPF</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/TFS/default.aspx">TFS</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/treeview+control/default.aspx">treeview control</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/Scrum+for+team+system/default.aspx">Scrum for team system</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/tfs+2010/default.aspx">tfs 2010</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/SfTS+v3/default.aspx">SfTS v3</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/Scrum+for+Team+System+Version+3+_2800_Beta+2_2900_/default.aspx">Scrum for Team System Version 3 (Beta 2)</category></item><item><title>Scrum for Team System Version 3 (Beta 2) – Project Collections and Template Deployment</title><link>http://consultingblogs.emc.com/crispinparker/archive/2009/11/26/scrum-for-team-system-version-3-beta-2-project-collections-and-template-deployment.aspx</link><pubDate>Thu, 26 Nov 2009 15:45:40 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:16640</guid><dc:creator>crispin.parker</dc:creator><slash:comments>0</slash:comments><comments>http://consultingblogs.emc.com/crispinparker/comments/16640.aspx</comments><wfw:commentRss>http://consultingblogs.emc.com/crispinparker/commentrss.aspx?PostID=16640</wfw:commentRss><description>&lt;p&gt;In this post I’ll discuss the TFS 2010 project collection structure and reveal the Scrum for Team System version 3 deployment utility.&lt;/p&gt;  &lt;p&gt;Since the introduction of TFS 2010 (currently at Beta 2 release) Microsoft have introduced the concept of Project Collections. Project collections allow multiple TFS team projects to co-exist in a single database instance. This in turn means that you can do things like; write cross project queries and have better control over project security. &lt;/p&gt;  &lt;p&gt;However, this does cause a few problems for the SfTS template and deployment. Each project collection holds its own group of deployed templates. So you must deploy the process template into each project collection that you wish to use with Scrum. That’s not all; our Scrum solution also requires a subscription to work item changed events. This too needs to be done for each collection.&lt;/p&gt;  &lt;p&gt;Step forward the “&lt;strong&gt;SfTS Process Template Manager&lt;/strong&gt;”.&lt;/p&gt;  &lt;p&gt;The template manager offers two working modes; “Quick Deploy” and “Advanced”.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Quick Deploy:&lt;/h2&gt;  &lt;p&gt;This mode is displayed by default when all environment settings have been automatically detected. It is intended for standard TFS setups. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://consultingblogs.emc.com/blogs/crispinparker/clip_image002_435224B0.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;margin-left:0px;border-left-width:0px;margin-right:0px;" title="clip_image002" border="0" alt="clip_image002" src="http://consultingblogs.emc.com/blogs/crispinparker/clip_image002_thumb_33CF12E1.jpg" width="334" height="312" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; Note: &lt;em&gt;Quick Deploy is dependent on the environment settings that can be seen under the advanced mode. If these settings are missing or incorrect, the quick deploy commands will be disabled.&lt;/em&gt;&lt;/p&gt;  &lt;h3&gt;Quick Deploy Commands:&lt;/h3&gt;  &lt;p&gt;Quick Deploy has three simple commands; List Collections, Deploy and Retract.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;List Collections&lt;/strong&gt;       &lt;br /&gt;      &lt;br /&gt;Connects to the TFS instance and displays a list of all available project collections. The collection list also indicates the deployed status of the SfTS template.       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Deploy        &lt;br /&gt;&lt;/strong&gt;      &lt;br /&gt;Adds the SfTS template to the selected collection and registers a Work Item Changed event subscription.       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Retract        &lt;br /&gt;&lt;/strong&gt;      &lt;br /&gt;Removes the SfTS template from the selected collection and withdraws any existing event subscription. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Advanced:&lt;/h2&gt;  &lt;p&gt;The advanced mode offers greater control over deployment and subscriptions, the ability to specify environment settings and a view of the selected collections’ templates / subscriptions. This mode is intended for advanced administrators and complex deployment environments.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://consultingblogs.emc.com/blogs/crispinparker/clip_image004_12DBA03A.jpg"&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="clip_image004" border="0" alt="clip_image004" src="http://consultingblogs.emc.com/blogs/crispinparker/clip_image004_thumb_782F0420.jpg" width="391" height="438" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Environment Settings:&lt;/h3&gt;  &lt;p&gt;The environment settings section allows you to specify the: TFS instance to connect to, template meta data file and template content zip file.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://consultingblogs.emc.com/blogs/crispinparker/image_6FCB2EC9.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;margin-left:0px;border-left-width:0px;margin-right:0px;" title="image" border="0" alt="image" align="right" src="http://consultingblogs.emc.com/blogs/crispinparker/image_thumb_26C50D03.png" width="183" height="205" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;TFS Url        &lt;br /&gt;        &lt;br /&gt;&lt;/strong&gt;By default the URL is set to “&lt;em&gt;http://localhost:8080/tfs&lt;/em&gt;”. If you need to specify an alternative TFS address you can do so here.       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;List Collections&lt;/strong&gt;       &lt;br /&gt;      &lt;br /&gt;Clicking this button when a valid URL is specified loads a list of project collections. If the TFS URL is not specified of the URL is not valid, the project collection selection dialog will be displayed.       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Meta Data File        &lt;br /&gt;        &lt;br /&gt;&lt;/strong&gt;This file contains information on the Process Template. This information is used to determine the deployed status [of the template] in the selected project collection. By default, the Meta data file is installed into the “&lt;em&gt;[Program Files]\Scrum for Team System\ProcessTemplate\&lt;/em&gt;” folder.       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Template Zip File        &lt;br /&gt;        &lt;br /&gt;&lt;/strong&gt;This file contains all the configuration parts of the template that will be deployed to the selected collection. The default installation location for this file is:       &lt;br /&gt;      &lt;br /&gt;&lt;em&gt;[Program Files]\Scrum for Team System\ProcessTemplate\ProcessTemplate.zip&lt;/em&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;  &lt;h3&gt;Collection List:&lt;/h3&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="597"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td&gt;&lt;a href="http://consultingblogs.emc.com/blogs/crispinparker/image_0F9A3A46.png"&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="image" border="0" alt="image" src="http://consultingblogs.emc.com/blogs/crispinparker/image_thumb_43EAB50D.png" width="168" height="188" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td&gt;A list of available process templates is displayed below the Environment Settings section once the “List Collections” button has been clicked. Select a collection in this list in order to interact with it.&lt;a href="http://consultingblogs.emc.com/blogs/crispinparker/image_74816B37.png"&gt;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Advanced Command Options:&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://consultingblogs.emc.com/blogs/crispinparker/image_7A0C2D5C.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;margin-left:0px;border-left-width:0px;margin-right:0px;" title="image" border="0" alt="image" align="right" src="http://consultingblogs.emc.com/blogs/crispinparker/image_thumb_2CFBBDC4.png" width="218" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Deploy        &lt;br /&gt;&lt;/strong&gt;      &lt;br /&gt;Uploads the specified template to the selected collection.       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Retract        &lt;br /&gt;        &lt;br /&gt;&lt;/strong&gt;Removes the specified template from the selected collection.       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Subscribe        &lt;br /&gt;        &lt;br /&gt;&lt;/strong&gt;Adds an event subscription to the selected collection. The event subscription end point is generated using the web address specified in the TFS Url environment settings section.       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Unsubscribe        &lt;br /&gt;        &lt;br /&gt;&lt;/strong&gt;Removes all subscriptions from the selected collection that match the SfTS work item changed event end point.       &lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://consultingblogs.emc.com/blogs/crispinparker/image_5E1AF864.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;margin-left:0px;border-left-width:0px;margin-right:0px;" title="image" border="0" alt="image" align="right" src="http://consultingblogs.emc.com/blogs/crispinparker/image_thumb_43022956.png" width="218" height="244" /&gt;&lt;/a&gt;Collection Templates:&lt;/h3&gt;  &lt;p&gt;The selected collections deployed process templates are listed here. This information is displayed for information only at the current time. The template that is deployed or retracted is controlled by the specified environment settings above.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Event Subscriptions:&lt;/h3&gt;  &lt;p&gt;The subscriptions present in the selected collection. As above, this list is for information purposes only.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://consultingblogs.emc.com/blogs/crispinparker/image_4FFC0967.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;margin-left:0px;border-left-width:0px;margin-right:0px;" title="image" border="0" alt="image" align="right" src="http://consultingblogs.emc.com/blogs/crispinparker/image_thumb_018776FD.png" width="244" height="190" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Finally:&lt;/h2&gt;  &lt;p&gt;The Process Template Manager utility is intended to run on the target TFS application tier after the installation of the SfTS template. It is installed as part of the “&lt;strong&gt;Process Template&lt;/strong&gt;” feature within the version 3 (Beta 2) “&lt;strong&gt;Scrum for Team System&lt;/strong&gt;” installation process. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;All this coming to a “&lt;strong&gt;Scrum for Team System 2010 Beta&lt;/strong&gt;” release near you soon. Watch the forums for more news…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://scrumforteamsystem.com/cs/forums/"&gt;http://scrumforteamsystem.com/cs/forums/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Crispin Parker,    &lt;br /&gt;Senior Technical Consultant,     &lt;br /&gt;EMC Consulting.&lt;/p&gt;&lt;img src="http://consultingblogs.emc.com/aggbug.aspx?PostID=16640" width="1" height="1"&gt;</description><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/Scrum+for+team+system/default.aspx">Scrum for team system</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/tfs+2010/default.aspx">tfs 2010</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/Template+Deployment/default.aspx">Template Deployment</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/SfTS+v3/default.aspx">SfTS v3</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/Project+Collections/default.aspx">Project Collections</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/Scrum+for+Team+System+Version+3+_2800_Beta+2_2900_/default.aspx">Scrum for Team System Version 3 (Beta 2)</category></item><item><title>Exporting TFS 2010 WIQL Queries</title><link>http://consultingblogs.emc.com/crispinparker/archive/2009/07/10/exporting-tfs-2010-wiql-queries.aspx</link><pubDate>Fri, 10 Jul 2009 09:57:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:15810</guid><dc:creator>crispin.parker</dc:creator><slash:comments>1</slash:comments><comments>http://consultingblogs.emc.com/crispinparker/comments/15810.aspx</comments><wfw:commentRss>http://consultingblogs.emc.com/crispinparker/commentrss.aspx?PostID=15810</wfw:commentRss><description>&lt;P&gt;During the recent (and ongoing)&amp;nbsp;development of the "Scrum for Team System" 2010 template (version 3.0 Beta&amp;nbsp;for those counting)&amp;nbsp;we needed to export&amp;nbsp;team project&amp;nbsp;queries. A new facility of&amp;nbsp;Team Explorer 2010 is the ability to "Save As" when editing the query and chose the local file system. Pretty neat.&lt;/P&gt;
&lt;P&gt;However, when you have a large suite of queries, this is&amp;nbsp;very time consuming. You also have to strip out the server and project details from the resulting files before you can load them into a template. Being a developer at heart, the thought of repeating a single&amp;nbsp;tedious action more that twice fills me with an inner&amp;nbsp;dread. So I have written&amp;nbsp;a simple command line utility that extracts all the queries from the specified project, maintaining the project query folder structure and stripping off any project specific content.&lt;/P&gt;
&lt;P&gt;The "&lt;STRONG&gt;tfsQueryExport.exe&lt;/STRONG&gt;" utility&amp;nbsp;(attached below) requires 3 command parameters:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Usage&lt;/STRONG&gt;: &lt;BR&gt;&lt;BR&gt;&lt;EM&gt;tfsQueryExport [tfs url] [project name] [output folder]&lt;BR&gt;&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Example&lt;/STRONG&gt;: &lt;BR&gt;&lt;BR&gt;&lt;EM&gt;tfsQueryExport "http://tfshost:8080/tfs/DefaultCollection" "Project 1" "c:\temp\Queries"&lt;/EM&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;The&amp;nbsp;output will be written to the specified output folder within a directory named after the project.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Note: This utility makes use of the TFS 2010 Team Explorer assemblies, so you will needed TE installed before it will work.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Geeky Moment: &lt;/STRONG&gt;I also needed to create the template query specification fragment in order to list the queries in our template, so I took a little time travel pill and wrote a&amp;nbsp;batch file&amp;nbsp;to traverse the exported query folder structure:&lt;/P&gt;
&lt;P style="BORDER-BOTTOM:black 1px solid;BORDER-LEFT:black 1px solid;BACKGROUND-COLOR:gainsboro;FONT-FAMILY:courier new;FONT-SIZE:0.9em;BORDER-TOP:black 1px solid;BORDER-RIGHT:black 1px solid;"&gt;&lt;SPAN&gt;@ECHO OFF&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;&lt;SPAN&gt;cd.&amp;gt; Queries.txt&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;&lt;SPAN&gt;FOR /D %%D IN (.\*) DO (&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FOR /D %%X IN ("%%D\*") DO (&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (ECHO ^&amp;lt;QueryFolder name="%%X"^&amp;gt; &amp;gt;&amp;gt; Queries.txt)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FOR /R . %%A IN ("%%X\*.wiq") DO (&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ECHO&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ^&amp;lt;Query name="%%A" fileName="%%A"^&amp;gt; &amp;gt;&amp;gt; Queries.txt&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (ECHO ^&amp;lt;/QueryFolder^&amp;gt; &amp;gt;&amp;gt; Queries.txt)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;BR&gt;)&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;&lt;SPAN&gt;PAUSE&lt;/SPAN&gt; &lt;/P&gt;
&lt;P&gt;It's not perfect. You&amp;nbsp;have to strip&amp;nbsp;out the unwanted folder paths and&amp;nbsp;file extensions. It only handles a single folder depth too,&amp;nbsp;but I just fancied a little nostalgia! Please feel free to suggest some improvments, it's been a while since I wrote in DOS.&lt;/P&gt;
&lt;P&gt;Crispin.&lt;/P&gt;&lt;img src="http://consultingblogs.emc.com/aggbug.aspx?PostID=15810" width="1" height="1"&gt;</description><enclosure url="http://consultingblogs.emc.com/crispinparker/attachment/15810.ashx" length="4681" type="application/x-zip-compressed" /><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/c_2300_/default.aspx">c#</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/TFS/default.aspx">TFS</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/Scrum+for+team+system/default.aspx">Scrum for team system</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/tfs+2010/default.aspx">tfs 2010</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/export/default.aspx">export</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/wiql/default.aspx">wiql</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/for+loop/default.aspx">for loop</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/DOS/default.aspx">DOS</category></item><item><title>Scrum for Team System - Create a custom work item changed event processor.</title><link>http://consultingblogs.emc.com/crispinparker/archive/2009/04/06/scrum-for-team-system-create-a-custom-work-item-changed-event-processor.aspx</link><pubDate>Mon, 06 Apr 2009 16:55:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:14847</guid><dc:creator>crispin.parker</dc:creator><slash:comments>0</slash:comments><comments>http://consultingblogs.emc.com/crispinparker/comments/14847.aspx</comments><wfw:commentRss>http://consultingblogs.emc.com/crispinparker/commentrss.aspx?PostID=14847</wfw:commentRss><description>&lt;P&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:x-large;"&gt;Scrum for Team System - Create a custom work item changed event processor.&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Sharp eyed and observant Scrum for Team System (SfTS) users will have noticed that the changing a SBI work remaining value affects the linked PBI work remaining value. However, it is sometimes a bit of a surprise to users that this behaviour is not part of the default TFS feature set...&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;The ability to automatically alter related TFS work items is a custom feature added by the Scrum for Team System process template. And I bet you didn&amp;amp;apos;t know that this feature is also extensible did you?&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;In this blog I&amp;amp;apos;m going to give an example of how to create a custom "work item changed" event processor and add it to the SfTS event processors collection.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:large;"&gt;The demonstration scenario:&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;For the purpose of this demonstration, I want to add some new behaviour to my SfTS Team Projects. The new behaviour will propagate the description value of my SBIs to the description value of the linked Bug work items. This means that whatever description changes I make to the SBIs will be visible in the parent bug description field.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:x-large;"&gt;Step 1 - Setting up the new process handler project:&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;I&gt;&lt;SPAN&gt;Note: You will need to have Team Explorer 2008 installed on your development system.&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;UL style="MARGIN-TOP:0cm;"&gt;
&lt;LI&gt;&lt;SPAN&gt;Create a new Visual Studio class library project, entitled "DescriptionChangedProcessor".&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;Make a local copy of the "Conchango.TeamSystem.SubscribedEventHandler.Infrastructure.dll". This assembly is found on the TFS application tier. &lt;BR&gt;&lt;BR&gt;The default installation location for this assembly is:&lt;/SPAN&gt;&lt;/LI&gt;
&lt;OL style="MARGIN-TOP:0cm;"&gt;
&lt;LI&gt;&lt;I&gt;&lt;SPAN&gt;C:\Inetpub\wwwroot\ScrumforTeamSystem\bin&lt;/SPAN&gt;&lt;/I&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;LI&gt;&lt;SPAN&gt;Add the following project references:&lt;/SPAN&gt;&lt;/LI&gt;
&lt;OL style="MARGIN-TOP:0cm;"&gt;
&lt;LI&gt;&lt;SPAN&gt;Microsoft.TeamFoundation.Client&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;Microsoft.TeamFoundation.WorkItemTracking.Client&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;Conchango.TeamSystem.SubscribedEventHandler.Infrastructure.dll&lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/UL&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:x-large;"&gt;Step 2 - Creating the event handler instance class:&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;UL style="MARGIN-TOP:0cm;"&gt;
&lt;LI&gt;&lt;SPAN&gt;Create a new public class in the project entitled: "EventProcessor"&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;Set the new class to implement the "Conchango.TeamSystem.SubscribedEventHandler.Infrastructure .Interfaces.ITSEventProcessor" interface. This interface defines a single method: "Process"; the method accepts a single parameter: tfsEvent of type ITSEvent.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="MARGIN-BOTTOM:0pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN&gt;Implement the ITSEventProcessor interface by adding the "Process" method.&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:blue;FONT-FAMILY:'Courier New';"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:8pt;FONT-FAMILY:'Courier New';"&gt; &lt;SPAN style="COLOR:blue;"&gt;void&lt;/SPAN&gt; Process(&lt;SPAN style="COLOR:#2b91af;"&gt;ITSEvent&lt;/SPAN&gt; tfsEvent)&lt;BR&gt;{&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="MARGIN-BOTTOM:0pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN&gt;The first thing we need to do in the "Process" method is check that the received event is a work item changed event for a "Sprint Backlog Item". To do this, add two new private methods to our ["EventProcessor"] class:&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:blue;FONT-FAMILY:'Courier New';"&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:8pt;FONT-FAMILY:'Courier New';"&gt; &lt;SPAN style="COLOR:blue;"&gt;static&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;bool&lt;/SPAN&gt; TryGetTypedEvent&amp;lt;T&amp;gt;(&lt;SPAN style="COLOR:#2b91af;"&gt;ITSEvent&lt;/SPAN&gt; tfsEvent, &lt;SPAN style="COLOR:blue;"&gt;out&lt;/SPAN&gt; T typedEvent)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp; typedEvent = &lt;BR&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; typeof&lt;/SPAN&gt;(T).IsAssignableFrom(tfsEvent.EventSourceType)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ? (T)tfsEvent.EventSource&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : &lt;SPAN style="COLOR:blue;"&gt;default&lt;/SPAN&gt;(T);&lt;BR&gt;&lt;SPAN style="COLOR:blue;"&gt;&lt;BR&gt;&amp;nbsp; return&lt;/SPAN&gt; !typedEvent.Equals(&lt;SPAN style="COLOR:blue;"&gt;default&lt;/SPAN&gt;(T));&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR:blue;"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;static&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;bool&lt;/SPAN&gt; IsWorkItemOfType(&lt;BR&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;&amp;nbsp; WorkItemChangedEvent&lt;/SPAN&gt; workItemChangedEvent, &lt;BR&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;nbsp; string&lt;/SPAN&gt; workItemTypeName)&lt;BR&gt;{&lt;BR&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;nbsp; return&lt;/SPAN&gt; &lt;BR&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Helpers&lt;/SPAN&gt;.GetCoreFieldString(&lt;BR&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ConstantStrings&lt;/SPAN&gt;.WorkItemTypeCoreField, &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; workItemChangedEvent)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .Equals(workItemTypeName);&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="MARGIN-BOTTOM:0pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN&gt;The first of the above check methods ["TryGetTypedEvent"] compares the type of the output parameter ["typedEvent"] to the type of the event source. If the types match the method returns true and sets the output parameter, otherwise the method returns false and set the out parameter to null.&lt;BR&gt;&lt;BR&gt;The second method ["IsWorkItemOfType"] returns a Boolean to indicate if the changed work item is an instance of the specified work item type.&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="MARGIN-BOTTOM:0pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN&gt;With our check methods in place, we can now validate the ["tfsEvent"] parameter.&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:blue;FONT-FAMILY:'Courier New';"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:8pt;FONT-FAMILY:'Courier New';"&gt; &lt;SPAN style="COLOR:blue;"&gt;void&lt;/SPAN&gt; Process(&lt;SPAN style="COLOR:#2b91af;"&gt;ITSEvent&lt;/SPAN&gt; tfsEvent)&lt;BR&gt;{&lt;BR&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;&amp;nbsp; WorkItemChangedEvent&lt;/SPAN&gt; wicEvent;&lt;BR&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;nbsp; if&lt;/SPAN&gt; (!TryGetTypedEvent(tfsEvent, &lt;SPAN style="COLOR:blue;"&gt;out&lt;/SPAN&gt; wicEvent) || &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; !IsWorkItemOfType(wicEvent, &lt;SPAN style="COLOR:#a31515;"&gt;"Sprint Backlog Item"&lt;/SPAN&gt;))&lt;BR&gt;&amp;nbsp; {&lt;BR&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&lt;/SPAN&gt;;&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="MARGIN-BOTTOM:0pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN&gt;The next part of the ["Process"] method needs to determine whether the changed SBI is linked to a Bug work item. To do this we need to connect to TFS and retrieve any linked Bug work items. &lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:blue;FONT-FAMILY:'Courier New';"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:8pt;FONT-FAMILY:'Courier New';"&gt; &lt;SPAN style="COLOR:blue;"&gt;void&lt;/SPAN&gt; Process(&lt;SPAN style="COLOR:#2b91af;"&gt;ITSEvent&lt;/SPAN&gt; tfsEvent)&lt;BR&gt;{&lt;BR&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;&amp;nbsp; WorkItemChangedEvent&lt;/SPAN&gt; wicEvent;&lt;BR&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;nbsp; if&lt;/SPAN&gt; (!TryGetTypedEvent(tfsEvent, &lt;SPAN style="COLOR:blue;"&gt;out&lt;/SPAN&gt; wicEvent) || &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; !IsWorkItemOfType(wicEvent, &lt;SPAN style="COLOR:#a31515;"&gt;"Sprint Backlog Item"&lt;/SPAN&gt;))&lt;BR&gt;&amp;nbsp; {&lt;BR&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&lt;/SPAN&gt;;&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;nbsp; var&lt;/SPAN&gt; tfs = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;TeamFoundationServer&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tfsEvent.ServerIdentity.Url, &lt;BR&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CredentialCache&lt;/SPAN&gt;.DefaultCredentials);&lt;BR&gt;&lt;SPAN style="COLOR:blue;"&gt;&lt;BR&gt;&amp;nbsp; var&lt;/SPAN&gt; workItemStore = &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;SPAN style="COLOR:#2b91af;"&gt;WorkItemStore&lt;/SPAN&gt;)tfs.GetService(&lt;SPAN style="COLOR:blue;"&gt;typeof&lt;/SPAN&gt;(&lt;SPAN style="COLOR:#2b91af;"&gt;WorkItemStore&lt;/SPAN&gt;));&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;nbsp; var&lt;/SPAN&gt; sourceWorkItemId = &lt;BR&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Helpers&lt;/SPAN&gt;.GetCoreFieldInt(&lt;SPAN style="COLOR:#2b91af;"&gt;ConstantStrings&lt;/SPAN&gt;.WorkItemIdCoreField, wicEvent);&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;nbsp; var&lt;/SPAN&gt; sourceWorkItem = workItemStore.GetWorkItem(sourceWorkItemId);&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;nbsp; var&lt;/SPAN&gt; parentBug = &lt;BR&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Helpers&lt;/SPAN&gt;.GetRelatedWorkItems(sourceWorkItem)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .Where(wi =&amp;gt; wi.Type.Name.Equals(&lt;SPAN style="COLOR:#a31515;"&gt;"Bug"&lt;/SPAN&gt;))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .FirstOrDefault();&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;nbsp; if&lt;/SPAN&gt; (parentBug == &lt;SPAN style="COLOR:blue;"&gt;null&lt;/SPAN&gt;)&lt;BR&gt;&amp;nbsp; {&lt;BR&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&lt;/SPAN&gt;;&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;}&lt;BR&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="MARGIN-BOTTOM:0pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN&gt;Now we have both the child and parent work items, we can update the bug to include the child description text. So add a new method to handle the update.&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:blue;FONT-FAMILY:'Courier New';"&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:8pt;FONT-FAMILY:'Courier New';"&gt; &lt;SPAN style="COLOR:blue;"&gt;static&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;void&lt;/SPAN&gt; UpdateBugDescription(&lt;BR&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;&amp;nbsp; WorkItem&lt;/SPAN&gt; parentWorkItem, &lt;BR&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;&amp;nbsp; WorkItem&lt;/SPAN&gt; sourceWorkItem)&lt;BR&gt;{&lt;BR&gt;&lt;SPAN style="COLOR:blue;"&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;&amp;nbsp; &lt;/SPAN&gt;var&lt;/SPAN&gt; prefix = &lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt;.Concat(&lt;SPAN style="COLOR:#a31515;"&gt;"&amp;lt;-- Linked Task: '"&lt;/SPAN&gt;, sourceWorkItem.Id, &lt;SPAN style="COLOR:#a31515;"&gt;"': "&lt;/SPAN&gt;);&lt;BR&gt;&lt;SPAN style="COLOR:blue;"&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;&amp;nbsp; &lt;/SPAN&gt;var&lt;/SPAN&gt; suffix = &lt;SPAN style="COLOR:#a31515;"&gt;" --&amp;gt;"&lt;/SPAN&gt;;&lt;BR&gt;&lt;SPAN style="COLOR:blue;"&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;&amp;nbsp; &lt;/SPAN&gt;var&lt;/SPAN&gt; regEx = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;Regex&lt;/SPAN&gt;(&lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt;.Format(&lt;SPAN style="COLOR:#a31515;"&gt;@"({0}[\s\S]*{1})"&lt;/SPAN&gt;, prefix, suffix));&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR:blue;"&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;&amp;nbsp; &lt;/SPAN&gt;var&lt;/SPAN&gt; textToInsert =&lt;BR&gt;&lt;SPAN style="COLOR:blue;"&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;string&lt;/SPAN&gt;.Concat(&lt;BR&gt;&lt;SPAN style="COLOR:blue;"&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;object&lt;/SPAN&gt;[]&lt;BR&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;BR&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;prefix, &lt;BR&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Environment&lt;/SPAN&gt;.NewLine, &lt;BR&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;sourceWorkItem.Description, &lt;BR&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Environment&lt;/SPAN&gt;.NewLine,&lt;BR&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;suffix&lt;BR&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;});&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;&amp;nbsp; &lt;/SPAN&gt;parentWorkItem.Description =&lt;BR&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;regEx.IsMatch(parentWorkItem.Description)&lt;BR&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;? regEx.Replace(parentWorkItem.Description, textToInsert)&lt;BR&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;: &lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt;.Concat(&lt;BR&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;parentWorkItem.Description, &lt;BR&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Environment&lt;/SPAN&gt;.NewLine, &lt;BR&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;textToInsert, &lt;BR&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Environment&lt;/SPAN&gt;.NewLine);&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN&gt;The above ["UpdateBugDescription"] example surrounds the child work item description text with some comment markers. Then checks to see if the child description text already exists; if it does exist, the previous text is replaced, otherwise the child description is appended.&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="MARGIN-BOTTOM:0pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN&gt;Adding a call to the update method and saving the bug (if dirty) completes the code.&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:blue;FONT-FAMILY:'Courier New';"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:8pt;FONT-FAMILY:'Courier New';"&gt; &lt;SPAN style="COLOR:blue;"&gt;void&lt;/SPAN&gt; Process(&lt;SPAN style="COLOR:#2b91af;"&gt;ITSEvent&lt;/SPAN&gt; tfsEvent)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp; &lt;SPAN style="COLOR:#2b91af;"&gt;WorkItemChangedEvent&lt;/SPAN&gt; wicEvent;&lt;BR&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;nbsp; if&lt;/SPAN&gt; (!TryGetTypedEvent(tfsEvent, &lt;SPAN style="COLOR:blue;"&gt;out&lt;/SPAN&gt; wicEvent) || &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; !IsWorkItemOfType(wicEvent, &lt;SPAN style="COLOR:#a31515;"&gt;"Sprint Backlog Item"&lt;/SPAN&gt;))&lt;BR&gt;&amp;nbsp; {&lt;BR&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&lt;/SPAN&gt;;&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;nbsp; var&lt;/SPAN&gt; tfs = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;TeamFoundationServer&lt;/SPAN&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tfsEvent.ServerIdentity.Url, &lt;BR&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CredentialCache&lt;/SPAN&gt;.DefaultCredentials);&lt;BR&gt;&lt;SPAN style="COLOR:blue;"&gt;&lt;BR&gt;&amp;nbsp; var&lt;/SPAN&gt; workItemStore = &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;SPAN style="COLOR:#2b91af;"&gt;WorkItemStore&lt;/SPAN&gt;)tfs.GetService(&lt;SPAN style="COLOR:blue;"&gt;typeof&lt;/SPAN&gt;(&lt;SPAN style="COLOR:#2b91af;"&gt;WorkItemStore&lt;/SPAN&gt;));&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;nbsp; var&lt;/SPAN&gt; sourceWorkItemId = &lt;BR&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Helpers&lt;/SPAN&gt;.GetCoreFieldInt(&lt;SPAN style="COLOR:#2b91af;"&gt;ConstantStrings&lt;/SPAN&gt;.WorkItemIdCoreField, wicEvent);&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;nbsp; var&lt;/SPAN&gt; sourceWorkItem = workItemStore.GetWorkItem(sourceWorkItemId);&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;nbsp; var&lt;/SPAN&gt; parentBug = &lt;BR&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Helpers&lt;/SPAN&gt;.GetRelatedWorkItems(sourceWorkItem)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .Where(wi =&amp;gt; wi.Type.Name.Equals(&lt;SPAN style="COLOR:#a31515;"&gt;"Bug"&lt;/SPAN&gt;))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .FirstOrDefault();&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;nbsp; if&lt;/SPAN&gt; (parentBug == &lt;SPAN style="COLOR:blue;"&gt;null&lt;/SPAN&gt;)&lt;BR&gt;&amp;nbsp; {&lt;BR&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&lt;/SPAN&gt;;&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;&lt;BR&gt;&amp;nbsp; UpdateBugDescription(parentBug, sourceWorkItem);&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;nbsp; if&lt;/SPAN&gt; (parentBug.IsDirty)&lt;BR&gt;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; parentWorkItem.Save();&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P style="MARGIN-BOTTOM:0pt;LINE-HEIGHT:normal;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:x-large;"&gt;Step 3 - Copy the assembly into the SfTS bin folder.&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN-BOTTOM:0pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL style="MARGIN-TOP:0cm;"&gt;
&lt;LI style="MARGIN-BOTTOM:0pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN&gt;With our new event processor all ready to go, the next step is to copy an instance of our new assembly ["DescriptionChangeProcessor.dll"] to the bin folder of the Scrum for Team System web application on the TFS application tier.&lt;BR&gt;&lt;BR&gt;The default installation location of the "bin" folder is:&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;UL style="MARGIN-TOP:0cm;"&gt;
&lt;UL style="MARGIN-TOP:0cm;"&gt;
&lt;LI style="MARGIN-BOTTOM:0pt;LINE-HEIGHT:normal;"&gt;&lt;I&gt;&lt;SPAN&gt;C:\Inetpub\wwwroot\ScrumforTeamSystem\bin&lt;/SPAN&gt;&lt;/I&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P style="MARGIN-BOTTOM:0pt;LINE-HEIGHT:normal;"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE:x-large;"&gt;Step 4 – Update the SfTS web.config.&lt;BR&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;UL style="MARGIN-TOP:0cm;"&gt;
&lt;LI&gt;&lt;SPAN&gt;Finally, we need to tell the Scrum for Team System web application that we have a new event processor. To do this we will need to edit the web applications "web.config" file.&lt;BR&gt;&lt;BR&gt;The default installation location of the "web.config" file is:&lt;/SPAN&gt;&lt;/LI&gt;&lt;BR&gt;&amp;nbsp; 
&lt;UL style="MARGIN-TOP:0cm;"&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;A&gt;C:\Inetpub\wwwroot\ScrumforTeamSystem\web.config&lt;/A&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI style="MARGIN-BOTTOM:0pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN&gt;In the configuration file, find the following xml fragment:&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:blue;FONT-FAMILY:'Courier New';"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:#a31515;FONT-FAMILY:'Courier New';"&gt;setting&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:blue;FONT-FAMILY:'Courier New';"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:red;FONT-FAMILY:'Courier New';"&gt;name&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:blue;FONT-FAMILY:'Courier New';"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:8pt;FONT-FAMILY:'Courier New';"&gt;"&lt;SPAN style="COLOR:blue;"&gt;EventServiceAssembles&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;serializeAs&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;Xml&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;"&gt;ArrayOfString&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;xmlns:xsi&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;xmlns:xsd&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;http://www.w3.org/2001/XMLSchema&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;gt;&lt;/SPAN&gt;Conchango...StateTransitions.dll&lt;SPAN style="COLOR:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;gt;&lt;/SPAN&gt;Conchango...RefreshPBIWorkRemaining.dll&lt;SPAN style="COLOR:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;"&gt;ArrayOfString&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;gt;&lt;BR&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;"&gt;setting&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;gt;&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="MARGIN-BOTTOM:0pt;LINE-HEIGHT:normal;"&gt;&lt;SPAN&gt;And add a new xml string node as shown below:&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:blue;FONT-FAMILY:'Courier New';"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:#a31515;FONT-FAMILY:'Courier New';"&gt;setting&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:blue;FONT-FAMILY:'Courier New';"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:red;FONT-FAMILY:'Courier New';"&gt;name&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:blue;FONT-FAMILY:'Courier New';"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:8pt;FONT-FAMILY:'Courier New';"&gt;"&lt;SPAN style="COLOR:blue;"&gt;EventServiceAssembles&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;serializeAs&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;Xml&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;"&gt;ArrayOfString&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;xmlns:xsi&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;xmlns:xsd&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;http://www.w3.org/2001/XMLSchema&lt;/SPAN&gt;"&lt;SPAN style="COLOR:blue;"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;gt;&lt;/SPAN&gt;Conchango...StateTransitions.dll&lt;SPAN style="COLOR:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;gt;&lt;/SPAN&gt;Conchango...RefreshPBIWorkRemaining.dll&lt;SPAN style="COLOR:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;gt;&lt;BR&gt;&lt;B&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/B&gt;&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="COLOR:#a31515;"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;gt;&lt;/SPAN&gt;DescriptionChangedProcessor.dll&lt;SPAN style="COLOR:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR:blue;"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;"&gt;ArrayOfString&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;gt;&lt;BR&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;"&gt;setting&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:8pt;FONT-FAMILY:'Courier New';"&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;The source code for the demo assembly is attached below.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;SPAN&gt;&lt;STRONG&gt;Disclaimers, omissions and “get out jail” cards.&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;LINE-HEIGHT:115%;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-GB;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;This example is for demonstration purposes only and is not the desired default behaviour for the Scrum for Team System template.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;LINE-HEIGHT:115%;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-GB;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;&lt;SPAN style="FONT-SIZE:10pt;LINE-HEIGHT:115%;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-GB;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;Making changes to your Scrum for Team System installation configuration is done completely at your own risk.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;LINE-HEIGHT:115%;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-GB;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;&lt;SPAN style="FONT-SIZE:10pt;LINE-HEIGHT:115%;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-GB;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;&lt;SPAN style="FONT-SIZE:10pt;LINE-HEIGHT:115%;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-GB;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;The above code doesn’t handle the changing a work item links, so linking and unlinking SBIs to bugs will not updated the description text.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;LINE-HEIGHT:115%;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-GB;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;&lt;SPAN style="FONT-SIZE:10pt;LINE-HEIGHT:115%;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-GB;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;&lt;SPAN style="FONT-SIZE:10pt;LINE-HEIGHT:115%;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-GB;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;SPAN&gt;&lt;STRONG&gt;Where to go next?&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;SPAN&gt;&lt;SPAN style="FONT-SIZE:10pt;LINE-HEIGHT:115%;FONT-FAMILY:'Arial','sans-serif';mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-GB;mso-fareast-language:EN-US;mso-bidi-language:AR-SA;"&gt;Please see the &lt;A href="http://www.scrumforteamsystem.com/"&gt;www.scrumforteamsystem.com&lt;/A&gt; web site for more information.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;img src="http://consultingblogs.emc.com/aggbug.aspx?PostID=14847" width="1" height="1"&gt;</description><enclosure url="http://consultingblogs.emc.com/crispinparker/attachment/14847.ashx" length="19455" type="application/x-zip-compressed" /></item><item><title>Task Board for Team System - Adding Custom States</title><link>http://consultingblogs.emc.com/crispinparker/archive/2008/10/08/task-board-for-team-system-adding-custom-states.aspx</link><pubDate>Wed, 08 Oct 2008 15:26:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:12729</guid><dc:creator>crispin.parker</dc:creator><slash:comments>1</slash:comments><comments>http://consultingblogs.emc.com/crispinparker/comments/12729.aspx</comments><wfw:commentRss>http://consultingblogs.emc.com/crispinparker/commentrss.aspx?PostID=12729</wfw:commentRss><description>&lt;P&gt;In this post I am going to explain how to add a new work flow state to the "Sprint Backlog Item" (SBI) work item type definition and how to enable [the new state] in the Task Board for Team System.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://blogs.conchango.com/controlpanel/blogs/posteditor.aspx?SelectedNavItem=Posts&amp;amp;sectionid=218&amp;amp;postid=12729#1"&gt;Why would you want to add a new state?&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.conchango.com/controlpanel/blogs/posteditor.aspx?SelectedNavItem=Posts&amp;amp;sectionid=218&amp;amp;postid=12729#2"&gt;Step 1 - Exporting the work item template&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.conchango.com/controlpanel/blogs/posteditor.aspx?SelectedNavItem=Posts&amp;amp;sectionid=218&amp;amp;postid=12729#3"&gt;Step 2 - importing the altered work item template&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.conchango.com/controlpanel/blogs/posteditor.aspx?SelectedNavItem=Posts&amp;amp;sectionid=218&amp;amp;postid=12729#4"&gt;Step 3 - updating the Task Board configuration file&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.conchango.com/controlpanel/blogs/posteditor.aspx?SelectedNavItem=Posts&amp;amp;sectionid=218&amp;amp;postid=12729#5"&gt;Step 4 - updating the Task Board default column layout file&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.conchango.com/controlpanel/blogs/posteditor.aspx?SelectedNavItem=Posts&amp;amp;sectionid=218&amp;amp;postid=12729#6"&gt;Nearly done&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.conchango.com/controlpanel/blogs/posteditor.aspx?SelectedNavItem=Posts&amp;amp;sectionid=218&amp;amp;postid=12729#7"&gt;Limitations and Disclaimers&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.conchango.com/controlpanel/blogs/posteditor.aspx?SelectedNavItem=Posts&amp;amp;sectionid=218&amp;amp;postid=12729#8"&gt;Links&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;A class="" title=1 name=1&gt;&lt;/A&gt;
&lt;H2&gt;Why would you want to add a new state?&lt;/H2&gt;
&lt;P&gt;The default work flow of states (available to the SBI) when you install the Scrum for Team System process template are:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;B&gt;Not Done&lt;/B&gt; (work on task has not started)&lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;In Progress&lt;/B&gt; (work on the task has started)&lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;Ready for Test&lt;/B&gt; (the task functionality is complete and needs to be tested)&lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;Done&lt;/B&gt; (the task is complete to your definition of "Done")&lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;Deferred&lt;/B&gt; (the task has been put off until a subsequent sprint)&lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;Deleted&lt;/B&gt; (the task is removed from the work flow)&lt;/LI&gt;&lt;/UL&gt;
&lt;P style="TEXT-ALIGN:center;"&gt;&lt;SPAN style="FONT-WEIGHT:bold;"&gt;The default states and workflow for Version 2 of the SfTS process template&lt;BR&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;IMG alt="The default SBI work flow" src="http://scrumforteamsystem.com/images/blogimages/DefaultWorkFlow.gif"&gt; &lt;/P&gt;
&lt;P&gt;This array of states is designed to give you all the required work flow options so that you may move SBIs through the sprint process from "Not Done" to "Done". For more information on the default states and what they all mean, please review the Scrum for Team System process guidance.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://scrumforteamsystem.com/processguidance"&gt;http://scrumforteamsystem.com/processguidance&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;But what happens if your company has different work flow needs or requires another step in the chain of events? How do you add your new requirement to the default process flow?&lt;/P&gt;
&lt;P&gt;For this example, I’m going to add a new state to the work flow entitled "Blocked". The Blocked state will be an indicator that the SBI cannot be progressed and is Blocked the completion of the parent product backlog item.&lt;/P&gt;
&lt;P style="TEXT-ALIGN:center;"&gt;&lt;B&gt;T&lt;/B&gt;&lt;SPAN&gt;&lt;B&gt;he new proposed workflow with the added Blocked state.&lt;BR&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;IMG alt="The altered SBI work flow" src="http://scrumforteamsystem.com/images/blogimages/BlockedWorkFlow.gif"&gt; &lt;/P&gt;
&lt;P&gt;As you can see the new state can only be entered from "In Progress" and can only be changed to either "In progress", "Ready for Test" or "Deleted".&lt;/P&gt;
&lt;DIV&gt;
&lt;H2&gt;Quick note on customising TFS projects&lt;/H2&gt;
&lt;P&gt;When you alter a work item definition, you are only altering the target project. Creating a new Team Project (from the SfTS process template) will use the default work item templates. Think of it as creating a new word document based on the fax template. Altering the new document isn’t going to change the fax template.&lt;/P&gt;&lt;/DIV&gt;&lt;A class="" title=2 name=2&gt;&lt;/A&gt;
&lt;H2&gt;Step 1 - Exporting the work item template&lt;/H2&gt;
&lt;P&gt;The first step in applying our new state is to export the SBI work item template definition file from the TFS project so that we can edit it. This is accomplished by using the "WITEXPORT" command line utility.&lt;/P&gt;
&lt;P&gt;Here is an example command line that exports the SBI work item template from a project entitled "DemoData" which resides in a TFS with a URL of "http://TFSRTM08:8080":&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT:black 1px solid;BORDER-TOP:black 1px solid;FONT-SIZE:0.75em;BORDER-LEFT:black 1px solid;BORDER-BOTTOM:black 1px solid;FONT-FAMILY:Courier New;"&gt;
&lt;P&gt;witexport /f "c:\temp\Sprint Backlog Item.xml" /t "http://TFSRTM08:8080" /p "DemoData" /n "Sprint Backlog Item"&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;B&gt;Switches:&lt;/B&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;/f = local path to save the exported work item template file&lt;/LI&gt;
&lt;LI&gt;/t = TFS URL (or machine name)&lt;/LI&gt;
&lt;LI&gt;/p = the source project&lt;/LI&gt;
&lt;LI&gt;/n = name of the work item type to export&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Executing the command line will result in a new XML document being created at "c:\temp\Sprint Backlog Item.xml"&lt;/P&gt;
&lt;P&gt;Next up, we need to add the new "Blocked" state to the work item definition. So, open the "Sprint Backlog Item.xml" document in your text editor of choice and follow the below instructions.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Navigate to the node: WITD / WORKITEMTYPE / WORKFLOW / STATES&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;Add a new child node:&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;
&lt;DIV style="BORDER-RIGHT:black 1px solid;BORDER-TOP:black 1px solid;FONT-SIZE:0.75em;BORDER-LEFT:black 1px solid;BORDER-BOTTOM:black 1px solid;FONT-FAMILY:Courier New;"&gt;
&lt;P&gt;&amp;lt;STATE value="Blocked" /&amp;gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;Next navigate to node: WITD / WORKITEMTYPE / WORKFLOW / TRANSITIONS&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;Add 4 child transition nodes:&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;
&lt;DIV style="BORDER-RIGHT:black 1px solid;BORDER-TOP:black 1px solid;FONT-SIZE:0.75em;BORDER-LEFT:black 1px solid;BORDER-BOTTOM:black 1px solid;FONT-FAMILY:Courier New;"&gt;
&lt;P&gt;&amp;lt;TRANSITION from="In Progress" to="Blocked"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;lt;REASONS&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;DEFAULTREASON&amp;nbsp;value="Item&amp;nbsp;is&amp;nbsp;blocked"&amp;nbsp;/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/REASONS&amp;gt;&lt;BR&gt;&amp;lt;/TRANSITION&amp;gt;&lt;BR&gt;&amp;lt;TRANSITION&amp;nbsp;from="Blocked"&amp;nbsp;to="In&amp;nbsp;Progress"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;lt;REASONS&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;DEFAULTREASON&amp;nbsp;value="Item&amp;nbsp;is&amp;nbsp;unblocked"&amp;nbsp;/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/REASONS&amp;gt;&lt;BR&gt;&amp;lt;/TRANSITION&amp;gt;&lt;BR&gt;&amp;lt;TRANSITION&amp;nbsp;from="Blocked"&amp;nbsp;to="Ready&amp;nbsp;For&amp;nbsp;Test"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;lt;REASONS&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;DEFAULTREASON&amp;nbsp;value="Ready&amp;nbsp;for&amp;nbsp;testing"&amp;nbsp;/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/REASONS&amp;gt;&lt;BR&gt;&amp;lt;/TRANSITION&amp;gt;&lt;BR&gt;&amp;lt;TRANSITION&amp;nbsp;from="Blocked"&amp;nbsp;to="Deleted"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;lt;REASONS&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;DEFAULTREASON&amp;nbsp;value="Item&amp;nbsp;deleted"&amp;nbsp;/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/REASONS&amp;gt;&lt;BR&gt;&amp;lt;/TRANSITION&amp;gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;Then save the document.&lt;/LI&gt;&lt;/OL&gt;&lt;A class="" title=3 name=3&gt;&lt;/A&gt;
&lt;H2&gt;Step 2 - importing the altered work item template&lt;/H2&gt;
&lt;P&gt;Now we need to get the edited work item definition file back into the Team Project. For this we use a command line utility entitled "WITIMPORT".&lt;/P&gt;
&lt;P&gt;Here is an example command line that will import our edited XML document back into the "DemoData" project.&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT:black 1px solid;BORDER-TOP:black 1px solid;FONT-SIZE:0.75em;BORDER-LEFT:black 1px solid;BORDER-BOTTOM:black 1px solid;FONT-FAMILY:Courier New;"&gt;
&lt;P&gt;witimport /f "c:\temp\Sprint Backlog Item.xml" /t "http://TFSRTM08:8080" /p "DemoData"&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;B&gt;Switches:&lt;/B&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;B&gt;/f&lt;/B&gt; = local path of the work item template file to import&lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;/t&lt;/B&gt; = TFS URL (or machine name)&lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;/p&lt;/B&gt; = the target project&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Executing the command line will import our altered SBI work item definition template in the "DemoData" project. Once complete, you can test the new state through Team Explorer. Remember, you will only be able to select this state if the SBI is in a state of "In Progress".&lt;/P&gt;&lt;A class="" title=4 name=4&gt;&lt;/A&gt;
&lt;H2&gt;Step 3 - updating the Task Board configuration file&lt;/H2&gt;
&lt;P&gt;Now we have altered SBI, we need to tell the Task Board for Team System (TBfTS) about it. This involves editing 2 xml configuration files in the TBfTS installation folder.&lt;/P&gt;
&lt;P&gt;The default installation location is:&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT:black 1px solid;BORDER-TOP:black 1px solid;FONT-SIZE:0.75em;BORDER-LEFT:black 1px solid;BORDER-BOTTOM:black 1px solid;FONT-FAMILY:Courier New;"&gt;
&lt;P&gt;C:\Program Files\Conchango\SfTSv2TaskBoard\app&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;We need edit the &lt;B&gt;"Conchango.TeamSystem.TaskBoard.WpfUI.exe.config"&lt;/B&gt; file. This amendment tells the task board application that SBI work items have a new state.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Open "Conchango.TeamSystem.TaskBoard.WpfUI.exe.config" in your chosen text editor.&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;Change text:&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;
&lt;DIV style="BORDER-RIGHT:black 1px solid;BORDER-TOP:black 1px solid;FONT-SIZE:0.75em;BORDER-LEFT:black 1px solid;BORDER-BOTTOM:black 1px solid;FONT-FAMILY:Courier New;"&gt;
&lt;P&gt;&amp;lt;setting&amp;nbsp;name="WorkItemStates_SBI"&amp;nbsp;serializeAs="Xml"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;lt;value&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ArrayOfString&amp;nbsp;xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xmlns:xsd="http://www.w3.org/2001/XMLSchema"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;string&amp;gt;Not&amp;nbsp;Done&amp;lt;/string&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;string&amp;gt;In&amp;nbsp;Progress&amp;lt;/string&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;string&amp;gt;Ready&amp;nbsp;For&amp;nbsp;Test&amp;lt;/string&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;string&amp;gt;Done&amp;lt;/string&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;string&amp;gt;Deferred&amp;lt;/string&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;string&amp;gt;Deleted&amp;lt;/string&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/ArrayOfString&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/value&amp;gt;&lt;BR&gt;&amp;lt;/setting&amp;gt;&lt;BR&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;To equal:&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;
&lt;DIV style="BORDER-RIGHT:black 1px solid;BORDER-TOP:black 1px solid;FONT-SIZE:0.75em;BORDER-LEFT:black 1px solid;BORDER-BOTTOM:black 1px solid;FONT-FAMILY:Courier New;"&gt;
&lt;P&gt;&amp;lt;setting name="WorkItemStates_SBI" serializeAs="Xml"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;lt;value&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ArrayOfString&amp;nbsp;xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xmlns:xsd="http://www.w3.org/2001/XMLSchema"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;string&amp;gt;Not&amp;nbsp;Done&amp;lt;/string&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;string&amp;gt;In&amp;nbsp;Progress&amp;lt;/string&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;string&amp;gt;Ready&amp;nbsp;For&amp;nbsp;Test&amp;lt;/string&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;string&amp;gt;Done&amp;lt;/string&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;string&amp;gt;Deferred&amp;lt;/string&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;string&amp;gt;Deleted&amp;lt;/string&amp;gt;&lt;BR&gt;&lt;SPAN style="COLOR:red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;string&amp;gt;Blocked&amp;lt;/string&amp;gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/ArrayOfString&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/value&amp;gt;&lt;BR&gt;&amp;lt;/setting&amp;gt;&lt;BR&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;Save the document.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;I&gt;Note: The sequence of the listed SBI states is important. This determines the colours and icons used in the task board. For example, the first state in the sequence will have the Exclamation icon and the second will have the right pointing arrow icon.&lt;/I&gt;&lt;/P&gt;&lt;A class="" title=5 name=5&gt;&lt;/A&gt;
&lt;H2&gt;Step 4 - updating the Task Board default column layout file&lt;/H2&gt;
&lt;P&gt;Next, we need to edit the "DefaultColumnLayout.xml" file. This file controls the default appearence of the task board columns including display text, width and display order.&lt;/P&gt;
&lt;P&gt;Open the file "DefaultColumnLayout.xml" in your text editor and you will be presented with the below XML:&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT:black 1px solid;BORDER-TOP:black 1px solid;FONT-SIZE:0.75em;BORDER-LEFT:black 1px solid;BORDER-BOTTOM:black 1px solid;FONT-FAMILY:Courier New;"&gt;
&lt;P&gt;&amp;lt;?xml&amp;nbsp;version="1.0"&amp;nbsp;encoding="utf-8"?&amp;gt;&lt;BR&gt;&amp;lt;STATE_COLUMNS&amp;nbsp;xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&amp;nbsp;xmlns:xsd="http://www.w3.org/2001/XMLSchema"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;lt;MODE&amp;nbsp;Name="Sprinting"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;COLUMN&amp;nbsp;DisplayText="User&amp;nbsp;Story&amp;nbsp;Title"&amp;nbsp;Width="140"&amp;nbsp;MinimumWidth="140"&amp;nbsp;/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;COLUMN&amp;nbsp;DisplayText="Not&amp;nbsp;Started"&amp;nbsp;State="Not&amp;nbsp;Done"&amp;nbsp;Width="140"&amp;nbsp;MinimumWidth="100"&amp;nbsp;/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;COLUMN&amp;nbsp;DisplayText="In&amp;nbsp;Progress"&amp;nbsp;State="In&amp;nbsp;Progress"&amp;nbsp;Width="140"&amp;nbsp;MinimumWidth="100"&amp;nbsp;/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;COLUMN&amp;nbsp;DisplayText="Ready&amp;nbsp;For&amp;nbsp;Test"&amp;nbsp;State="Ready&amp;nbsp;For&amp;nbsp;Test"&amp;nbsp;Width="140"&amp;nbsp;MinimumWidth="100"&amp;nbsp;/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;COLUMN&amp;nbsp;DisplayText="Done"&amp;nbsp;State="Done"&amp;nbsp;Width="140"&amp;nbsp;MinimumWidth="100"&amp;nbsp;/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;COLUMN&amp;nbsp;DisplayText="Deferred"&amp;nbsp;State="Deferred"&amp;nbsp;Width="0"&amp;nbsp;MinimumWidth="0"&amp;nbsp;/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;COLUMN&amp;nbsp;DisplayText="Spare"&amp;nbsp;Width="0"&amp;nbsp;MinimumWidth="0"&amp;nbsp;/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/MODE&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;lt;MODE&amp;nbsp;Name="Planning"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;COLUMN&amp;nbsp;DisplayText="User&amp;nbsp;Story&amp;nbsp;Title"&amp;nbsp;Width="140"&amp;nbsp;MinimumWidth="140"&amp;nbsp;/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;COLUMN&amp;nbsp;DisplayText="Not&amp;nbsp;Started"&amp;nbsp;State="Not&amp;nbsp;Done"&amp;nbsp;Width="140"&amp;nbsp;MinimumWidth="100"&amp;nbsp;/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;COLUMN&amp;nbsp;DisplayText="In&amp;nbsp;Progress"&amp;nbsp;State="In&amp;nbsp;Progress"&amp;nbsp;Width="140"&amp;nbsp;MinimumWidth="100"&amp;nbsp;/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;COLUMN&amp;nbsp;DisplayText="Ready&amp;nbsp;For&amp;nbsp;Test"&amp;nbsp;State="Ready&amp;nbsp;For&amp;nbsp;Test"&amp;nbsp;Width="140"&amp;nbsp;MinimumWidth="100"&amp;nbsp;/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;COLUMN&amp;nbsp;DisplayText="Done"&amp;nbsp;State="Done"&amp;nbsp;Width="140"&amp;nbsp;MinimumWidth="100"&amp;nbsp;/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;COLUMN&amp;nbsp;DisplayText="Deferred"&amp;nbsp;State="Deferred"&amp;nbsp;Width="140"&amp;nbsp;MinimumWidth="100"&amp;nbsp;/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;COLUMN&amp;nbsp;DisplayText="Spare"&amp;nbsp;Width="0"&amp;nbsp;MinimumWidth="0"&amp;nbsp;/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/MODE&amp;gt;&amp;nbsp;&lt;BR&gt;&amp;lt;/STATE_COLUMNS&amp;gt;&lt;BR&gt;&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;As you can see from the above XML, the column layout data is split into 2 MODEs; Sprinting and Planning. These sections correlate with the task board modes, so when the task board is in "Sprinting Mode" the data under &amp;lt;MODE Name="Sprinting"&amp;gt; is used.&lt;/P&gt;
&lt;P&gt;Each COLUMN node contains the following attributes:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;B&gt;DisplayText&lt;/B&gt; = the text to be shown along the column headings section of the task board.&lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;Width&lt;/B&gt; = the actual width of the column (set to zero in order to hide that column)&lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;MinumumWidth&lt;/B&gt; = the smallest possible width of the column (must be zero if you wish to hide a column)&lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;State&lt;/B&gt; = the SBI state displayed in the column.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;I&gt;&lt;SPAN&gt;Note:&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN&gt;The sequence of the COLUMN elements determines the display position within the task board application.&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN&gt;The first column node is reserved for the backlog item row header and cannot be used as a state container.&lt;/SPAN&gt;&lt;BR&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;Edit the XML to read as follows:&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT:black 1px solid;BORDER-TOP:black 1px solid;FONT-SIZE:0.75em;BORDER-LEFT:black 1px solid;BORDER-BOTTOM:black 1px solid;FONT-FAMILY:Courier New;"&gt;
&lt;P&gt;&amp;lt;?xml&amp;nbsp;version="1.0"&amp;nbsp;encoding="utf-8"?&amp;gt;&lt;BR&gt;&amp;lt;STATE_COLUMNS&amp;nbsp;xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&amp;nbsp;xmlns:xsd="http://www.w3.org/2001/XMLSchema"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;lt;MODE&amp;nbsp;Name="Sprinting"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;COLUMN&amp;nbsp;DisplayText="User&amp;nbsp;Story&amp;nbsp;Title"&amp;nbsp;Width="140"&amp;nbsp;MinimumWidth="140"&amp;nbsp;/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;COLUMN&amp;nbsp;DisplayText="Not&amp;nbsp;Started"&amp;nbsp;State="Not&amp;nbsp;Done"&amp;nbsp;Width="140"&amp;nbsp;MinimumWidth="100"&amp;nbsp;/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;COLUMN&amp;nbsp;DisplayText="In&amp;nbsp;Progress"&amp;nbsp;State="In&amp;nbsp;Progress"&amp;nbsp;Width="140"&amp;nbsp;MinimumWidth="100"&amp;nbsp;/&amp;gt;&lt;BR&gt;&lt;SPAN style="COLOR:red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;COLUMN&amp;nbsp;DisplayText="Blocked"&amp;nbsp;State="Blocked"&amp;nbsp;Width="140"&amp;nbsp;MinimumWidth="100"&amp;nbsp;/&amp;gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;COLUMN&amp;nbsp;DisplayText="Ready&amp;nbsp;For&amp;nbsp;Test"&amp;nbsp;State="Ready&amp;nbsp;For&amp;nbsp;Test"&amp;nbsp;Width="140"&amp;nbsp;MinimumWidth="100"&amp;nbsp;/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;COLUMN&amp;nbsp;DisplayText="Done"&amp;nbsp;State="Done"&amp;nbsp;Width="140"&amp;nbsp;MinimumWidth="100"&amp;nbsp;/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;COLUMN&amp;nbsp;DisplayText="Deferred"&amp;nbsp;State="Deferred"&amp;nbsp;Width="0"&amp;nbsp;MinimumWidth="0"&amp;nbsp;/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/MODE&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;lt;MODE&amp;nbsp;Name="Planning"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;COLUMN&amp;nbsp;DisplayText="User&amp;nbsp;Story&amp;nbsp;Title"&amp;nbsp;Width="140"&amp;nbsp;MinimumWidth="140"&amp;nbsp;/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;COLUMN&amp;nbsp;DisplayText="Not&amp;nbsp;Started"&amp;nbsp;State="Not&amp;nbsp;Done"&amp;nbsp;Width="140"&amp;nbsp;MinimumWidth="100"&amp;nbsp;/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;COLUMN&amp;nbsp;DisplayText="In&amp;nbsp;Progress"&amp;nbsp;State="In&amp;nbsp;Progress"&amp;nbsp;Width="140"&amp;nbsp;MinimumWidth="100"&amp;nbsp;/&amp;gt;&lt;BR&gt;&lt;SPAN style="COLOR:red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;COLUMN&amp;nbsp;DisplayText="Blocked"&amp;nbsp;State="Blocked"&amp;nbsp;Width="140"&amp;nbsp;MinimumWidth="100"&amp;nbsp;/&amp;gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;COLUMN&amp;nbsp;DisplayText="Ready&amp;nbsp;For&amp;nbsp;Test"&amp;nbsp;State="Ready&amp;nbsp;For&amp;nbsp;Test"&amp;nbsp;Width="140"&amp;nbsp;MinimumWidth="100"&amp;nbsp;/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;COLUMN&amp;nbsp;DisplayText="Done"&amp;nbsp;State="Done"&amp;nbsp;Width="140"&amp;nbsp;MinimumWidth="100"&amp;nbsp;/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;COLUMN&amp;nbsp;DisplayText="Deferred"&amp;nbsp;State="Deferred"&amp;nbsp;Width="140"&amp;nbsp;MinimumWidth="100"&amp;nbsp;/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/MODE&amp;gt;&amp;nbsp;&lt;BR&gt;&amp;lt;/STATE_COLUMNS&amp;gt;&lt;BR&gt;&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;I&gt;Note: Don't forget to delete the "Spare" column definition. There must be exactly 7 columns in each mode.&lt;/I&gt; &lt;/P&gt;
&lt;P&gt;Save the document.&lt;/P&gt;&lt;A class="" title=6 name=6&gt;&lt;/A&gt;
&lt;H2&gt;Nearly done&lt;/H2&gt;
&lt;P&gt;The required configuration changes are now complete and we can launch the task board application to see the new state in action. Well almost!&lt;BR&gt;&lt;BR&gt;In order to apply the changes [made to the "DefaultColumnLayout.xml" file], you will need to reset the column layout in the task board application. This is accomplished via the "Edit" -&amp;gt; "Reset Column Layout" task board menu option. &lt;BR&gt;&lt;BR&gt;And that’s it; you should now see the new &lt;B&gt;Blocked&lt;/B&gt; column in the task board and be able move SBIs from an "In Progress" state into the "Blocked" state.&lt;/P&gt;
&lt;P style="TEXT-ALIGN:center;"&gt;&lt;SPAN&gt;&lt;B&gt;The "Blocked" state in the task board&lt;/B&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;IMG alt="The task board didplaying the new blocked state" src="http://scrumforteamsystem.com/images/blogimages/TBWithBlocking.jpg"&gt; &lt;/P&gt;&lt;A class="" title=7 name=7&gt;&lt;/A&gt;
&lt;H2&gt;Limitations and Disclaimers&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;The Task Board for Team System can support a maximum of 6 swim lane states.&lt;/LI&gt;
&lt;LI&gt;The above example is based on the Task Board for SfTS v2.x application. The listed states will be different for Task Board for SfTS 1.2 applications.&lt;/LI&gt;
&lt;LI&gt;Due to the inability to access the work item template data via SQL Reporting services, the Scrum for Team System reports (installed by default) will not auto-magically detect changes to the work item templates. Removing states and or fields that are required by the reports will cause incorrect functionality and possible reporting failure.&lt;/LI&gt;
&lt;LI&gt;Conchango cannot offer support for customised instances of the Team Projects. Only unaltered Team Projects created from the Scrum for Team System template are supported.&lt;/LI&gt;
&lt;LI&gt;It is your own responsibility to ensure the stability of your Team Foundation Server environment. Make backups where possible before attempting any of the changes described in this article.&lt;/LI&gt;&lt;/UL&gt;&lt;A class="" title=8 name=8&gt;&lt;/A&gt;
&lt;H2&gt;Links&lt;/H2&gt;
&lt;P&gt;&lt;SPAN&gt;Scrum for Team System:&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;&lt;A href="http://scrumforteamsystem.com/en/default.aspx"&gt;http://scrumforteamsystem.com/en/default.aspx&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Task Board for Team System:&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;&lt;A href="http://scrumforteamsystem.com/en/TaskBoardBeta/Default.aspx"&gt;http://scrumforteamsystem.com/en/TaskBoardBeta/Default.aspx&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Community Forum:&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;&lt;A href="http://scrumforteamsystem.com/cs/forums/"&gt;http://scrumforteamsystem.com/cs/forums/&lt;/A&gt; &lt;/P&gt;
&lt;H2&gt;What next?&lt;/H2&gt;
&lt;P&gt;To complete the process, you could also add a new "Blocked" state to the Product Backlog Item and alter the Scrum for Team System event handler process to auto change the PBI status whenever a child SBI is set to blocked. But that is a blog for another day...&lt;/P&gt;
&lt;P&gt;Crispin Parker&lt;/P&gt;&lt;img src="http://consultingblogs.emc.com/aggbug.aspx?PostID=12729" width="1" height="1"&gt;</description><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/Task+Board+for+team+System/default.aspx">Task Board for team System</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/TFS/default.aspx">TFS</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/Scrum+for+team+system/default.aspx">Scrum for team system</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/work+item+template/default.aspx">work item template</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/custom+state/default.aspx">custom state</category></item><item><title>New Task Board for Team System Beta Editions (SfTS version 1.2 support!)</title><link>http://consultingblogs.emc.com/crispinparker/archive/2008/10/08/new-task-board-for-team-system-beta-editions-sfts-version-1-2-support.aspx</link><pubDate>Wed, 08 Oct 2008 11:13:00 GMT</pubDate><guid isPermaLink="false">e847c0e7-38d9-45c0-b593-56747303e088:12724</guid><dc:creator>crispin.parker</dc:creator><slash:comments>0</slash:comments><comments>http://consultingblogs.emc.com/crispinparker/comments/12724.aspx</comments><wfw:commentRss>http://consultingblogs.emc.com/crispinparker/commentrss.aspx?PostID=12724</wfw:commentRss><description>
&lt;p&gt;&lt;b&gt;Great news for Team Foundation Server 2005!&lt;/b&gt;&lt;br&gt;&amp;nbsp;&lt;br&gt;Today I have released a new version of the Task Board for Team System that supports Team Projects created with the Conchango Scrum for Team System (SfTS) version 1.2 process template.&lt;/p&gt;

&lt;p&gt;&lt;br&gt;This means that SfTS users running on a TFS 2005 application tier can now enjoy the benefits of the rich UI WPF tool; Task Board for Team System.&lt;/p&gt;

&lt;p&gt;&lt;br&gt;In order to run the Task Board application, you will need Team Explorer (TE) 2008 installed on your client machine. There is no need to alter anything on your TFS application tier. TE 2008 can connect to both TFS 2005 and TFS 2008 environments, so you won't lose connectivity to your TFS 2005 team projects after you upgrade your client machine. &amp;nbsp;&lt;/p&gt;

&lt;p&gt;&lt;br&gt;Also released today is the latest Beta version of the Task Board for SfTS version 2 projects. Both applications can be installed side by side to enable access to a mixed platform of Team Projects.&lt;br&gt;&lt;br&gt;&lt;b&gt;Beta 3.2 Change Log:&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bug Fix: Handler added for hung connection.&lt;br&gt;&lt;br&gt;Previous Beta's would hang indefinitely if the TFS application tier did not respond to an authentication request. A 20 second timeout has now been added for TFS authentication.&lt;br&gt;&lt;br&gt;&lt;/li&gt;

&lt;li&gt;Bug Fix: Save All tries to save clean items.&lt;br&gt;&lt;br&gt;Testers have reported that, on occasion, the task board would display error messages when performing a "Save All" for work items that had not been altered. The "Save All" functionality has been changed in an attempt to stop this behaviour.&lt;br&gt;&lt;br&gt;&lt;/li&gt;

&lt;li&gt;Spellingz mistakes: Description misspelt on "Sprint Backlog Item" and "Bug" edit panels.&lt;br&gt;&lt;br&gt;The "descrition" spelling mistake has been corrected.&lt;br&gt;&lt;br&gt;&lt;/li&gt;

&lt;li&gt;New Feature: Support added for additional customised SBI states.&lt;br&gt;&lt;br&gt;It is now possible to include additional custom workflow states for the "Sprint Backlog Item" work item. Several beta users have noted that they cannot support customised SBI states through the task board. The need for additional work flow states can arise when a company requires additional process steps during the sprint process. A common requirement is to include a blocked state. I will publish a blog post that gives full coverage on how to include customised states very soon.&lt;br&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;Please post you thoughts and comments in the Task Board Beta forum.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://scrumforteamsystem.com/cs/forums/default.aspx?ForumGroupID=3"&gt;http://scrumforteamsystem.com/cs/forums/default.aspx?ForumGroupID=3&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;br&gt;For more information on the Task Board for Team System and to sign for free, visit:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://scrumforteamsystem.com/en/TaskBoardBeta/Default.aspx"&gt;http://scrumforteamsystem.com/en/TaskBoardBeta/Default.aspx&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;You can download the Microsoft Team Explorer 2008 installation ISO from:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.microsoft.com/DOWNLOADS/details.aspx?FamilyID=0ed12659-3d41-4420-bbb0-a46e51bfca86&amp;amp;displaylang=en"&gt;http://www.microsoft.com/DOWNLOADS/details.aspx?FamilyID=0ed12659-3d41-4420-bbb0-a46e51bfca86&amp;amp;displaylang=en&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Regards,&lt;br&gt;&lt;br&gt;Crispin Parker,&lt;br&gt;Technical Consultant,&lt;br&gt;Conchango.&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;img src="http://consultingblogs.emc.com/aggbug.aspx?PostID=12724" width="1" height="1"&gt;</description><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/WPF/default.aspx">WPF</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/Task+Board+for+team+System/default.aspx">Task Board for team System</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/TFS/default.aspx">TFS</category><category domain="http://consultingblogs.emc.com/crispinparker/archive/tags/Scrum+for+team+system/default.aspx">Scrum for team system</category></item></channel></rss>