<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.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>Visual Studio Team System (VSTS) Blog - by Neno Loje : TFS Process Customization</title><link>http://msmvps.com/blogs/vstsblog/archive/tags/TFS+Process+Customization/default.aspx</link><description>Tags: TFS Process Customization</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>How to integrate Microsoft Security Development Lifecycle (SDL) into your TFS process template</title><link>http://msmvps.com/blogs/vstsblog/archive/2009/10/05/how-to-integrate-microsoft-security-development-lifecycle-sdl-into-your-tfs-process-template.aspx</link><pubDate>Mon, 05 Oct 2009 11:13:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1729349</guid><dc:creator>neno</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/vstsblog/rsscomments.aspx?PostID=1729349</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/vstsblog/commentapi.aspx?PostID=1729349</wfw:comment><comments>http://msmvps.com/blogs/vstsblog/archive/2009/10/05/how-to-integrate-microsoft-security-development-lifecycle-sdl-into-your-tfs-process-template.aspx#comments</comments><description>&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog.metablogapi/3162.MicrosoftSecurityDevelopmentLifecycle_5F00_44C44C3F.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="MicrosoftSecurityDevelopmentLifecycle" border="0" alt="MicrosoftSecurityDevelopmentLifecycle" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog.metablogapi/0523.MicrosoftSecurityDevelopmentLifecycle_5F00_thumb_5F00_62C25A33.png" width="440" height="80" /&gt;&lt;/a&gt;   &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Downloads:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/security/dd670265.aspx" target="_blank"&gt;The Microsoft SDL Process Template for Visual Studio Team System&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://go.microsoft.com/?linkid=9683340"&gt;Whitepaper: Manually Integrating the SDL Process Template&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Additional information:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/bharry/archive/2009/05/21/the-microsoft-sdl-process-template-and-the-future.aspx" target="_blank"&gt;The Microsoft SDL Process Template and the Future&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/bharry/archive/2009/10/02/seven-steps-for-manually-integrating-sdl-into-your-team-project.aspx" target="_blank"&gt;Seven steps for manually integrating SDL into your team project&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1729349" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/For+Project+Managers/default.aspx">For Project Managers</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+Process+Guidance/default.aspx">TFS Process Guidance</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+Process+Customization/default.aspx">TFS Process Customization</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Work+Item+Customization/default.aspx">Work Item Customization</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Quality+Assurance+_2800_QA_2900_+with+VSTS/default.aspx">Quality Assurance (QA) with VSTS</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/VSTS/default.aspx">VSTS</category></item><item><title>Setting Remaining Work to Zero when closing a work item in TFS</title><link>http://msmvps.com/blogs/vstsblog/archive/2009/07/30/setting-remaining-work-to-zero-when-closing-a-work-item-in-tfs.aspx</link><pubDate>Thu, 30 Jul 2009 08:12:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1710794</guid><dc:creator>neno</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/vstsblog/rsscomments.aspx?PostID=1710794</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/vstsblog/commentapi.aspx?PostID=1710794</wfw:comment><comments>http://msmvps.com/blogs/vstsblog/archive/2009/07/30/setting-remaining-work-to-zero-when-closing-a-work-item-in-tfs.aspx#comments</comments><description>&lt;p&gt;&lt;strong&gt;Question&lt;/strong&gt;:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;How can I make sure that the &amp;quot;Remaining Work&amp;quot; field is set to 0 when the work item is closed (for example when associating a work item during checking-in)?&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Short Answer&lt;/strong&gt;:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;You can achieve this using the &amp;lt;COPY&amp;gt; rule on the transition to the &amp;quot;Closed&amp;quot; state.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Step-by-Step instructions&lt;/strong&gt;:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;For the desired transition (in this example from &amp;quot;Active&amp;quot; to &amp;quot;Closed&amp;quot;).&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog.metablogapi/0027.Image0008_5F00_6A87790A.png"&gt;       &lt;br /&gt;        &lt;br /&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="Edit the Workflow Transition with Process Template Editor (part of TFS Power Tools)" border="0" alt="Edit the Workflow Transition with Process Template Editor (part of TFS Power Tools)" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog.metablogapi/4718.Image0008_5F00_thumb_5F00_1B2A5AE9.png" width="444" height="263" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Add a field reference to &amp;quot;Microsoft.VSTS.Scheduling.RemainingWork&amp;quot;     &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog.metablogapi/8037.Image0002_5F00_5943759A.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="Choose the desired field" border="0" alt="Choose the desired field" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog.metablogapi/7455.Image0002_5F00_thumb_5F00_3F030C76.png" width="444" height="263" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Add a new rule of type &amp;quot;COPY&amp;quot;     &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog.metablogapi/6874.Image0001_5F00_487BCAEC.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="You can use the copy rule to set values" border="0" alt="You can use the copy rule to set values" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog.metablogapi/8037.Image0001_5F00_thumb_5F00_2E3B61C8.png" width="282" height="280" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Choose From = &amp;quot;value&amp;quot; and enter value = &amp;quot;0&amp;quot;     &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog.metablogapi/1172.Image0000_5F00_41E84B5C.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="The copy rule sets a value to a field" border="0" alt="The copy rule sets a value to a field" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog.metablogapi/4718.Image0000_5F00_thumb_5F00_12B65FC5.png" width="444" height="263" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;The resulting XML should look something like     &lt;br /&gt;      &lt;br /&gt;&amp;#160;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog.metablogapi/4718.Image0004_5F00_1824D069.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="XML under the covers defines our new rule" border="0" alt="XML under the covers defines our new rule" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog.metablogapi/0412.Image0004_5F00_thumb_5F00_48D7D814.png" width="440" height="115" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Verification: After transitioning a task work item from &amp;quot;Active&amp;quot; to the &amp;quot;Closed&amp;quot; state &amp;quot;Remaining Work&amp;quot; is set to zero.     &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog.metablogapi/2161.Image0006_5F00_0E102F3E.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="Work Item History shows the new rule in beeing applied on the state transition." border="0" alt="Work Item History shows the new rule in beeing applied on the state transition." src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog.metablogapi/4718.Image0006_5F00_thumb_5F00_5A67C2DF.png" width="440" height="211" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;&lt;/li&gt; &lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1710794" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Team+Foundation+Server+_2800_TFS_2900_/default.aspx">Team Foundation Server (TFS)</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+Work+Item+Tracking/default.aspx">TFS Work Item Tracking</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Tips+and+Tricks/default.aspx">Tips and Tricks</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+Process+Customization/default.aspx">TFS Process Customization</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/VSTS/default.aspx">VSTS</category></item><item><title>What are Test Name, Test Id, and Test Path used for?</title><link>http://msmvps.com/blogs/vstsblog/archive/2009/05/30/what-are-test-name-test-id-and-test-path-used-for.aspx</link><pubDate>Sat, 30 May 2009 20:49:05 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1693469</guid><dc:creator>neno</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/vstsblog/rsscomments.aspx?PostID=1693469</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/vstsblog/commentapi.aspx?PostID=1693469</wfw:comment><comments>http://msmvps.com/blogs/vstsblog/archive/2009/05/30/what-are-test-name-test-id-and-test-path-used-for.aspx#comments</comments><description>&lt;p&gt;If you create a work item out of a test result like this…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/Test1_5F00_5A360D27.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="Rightclick test result &amp;gt; Create Work Item" border="0" alt="Rightclick test result &amp;gt; Create Work Item" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/Test1_5F00_thumb_5F00_30065F3F.png" width="440" height="205" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;… the three test fields get populated by Visual Studio:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/Test2_5F00_46E530BB.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="Test Name, Test Id and Test Path point to the originating test" border="0" alt="Test Name, Test Id and Test Path point to the originating test" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/Test2_5F00_thumb_5F00_1A5C00D5.png" width="440" height="141" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Read all details here: &lt;a href="http://msdn.microsoft.com/en-us/library/ms194965.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms194965.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1693469" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/For+Testers/default.aspx">For Testers</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Team+Foundation+Server+_2800_TFS_2900_/default.aspx">Team Foundation Server (TFS)</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+Work+Item+Tracking/default.aspx">TFS Work Item Tracking</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+2008/default.aspx">TFS 2008</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/VSTS+Test/default.aspx">VSTS Test</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+Process+Customization/default.aspx">TFS Process Customization</category></item><item><title>Specifying a user upfront or: How is the developer supposed to know who will be the responsible tester?</title><link>http://msmvps.com/blogs/vstsblog/archive/2009/01/13/specifying-a-user-upfront-or-how-is-the-developer-supposed-to-know-who-will-be-the-responsible-tester.aspx</link><pubDate>Tue, 13 Jan 2009 09:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1660511</guid><dc:creator>neno</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/vstsblog/rsscomments.aspx?PostID=1660511</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/vstsblog/commentapi.aspx?PostID=1660511</wfw:comment><comments>http://msmvps.com/blogs/vstsblog/archive/2009/01/13/specifying-a-user-upfront-or-how-is-the-developer-supposed-to-know-who-will-be-the-responsible-tester.aspx#comments</comments><description>&lt;p&gt;In a small team this sounds like oversize, but in mid-sized large teams it&amp;#39;s common that you do not know who is going to be the tester.&lt;/p&gt;  &lt;p&gt;Looking at the Bug workflow from MSF Agile:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;while &amp;quot;&lt;strong&gt;Active&lt;/strong&gt;&amp;quot; the project lead decided if and when the bug is going to be fixed and assigns it to the responsible developer. &lt;/li&gt;    &lt;li&gt;between &amp;quot;&lt;strong&gt;Active&lt;/strong&gt;&amp;quot; and &amp;quot;&lt;strong&gt;Resolved&lt;/strong&gt;&amp;quot; is where the &lt;strong&gt;developers &lt;/strong&gt;implements the fix. &lt;/li&gt;    &lt;li&gt;between &amp;quot;&lt;strong&gt;Resolved&lt;/strong&gt;&amp;quot; and &amp;quot;&lt;strong&gt;Closed&lt;/strong&gt;&amp;quot; is where the &lt;strong&gt;tester &lt;/strong&gt;verifies the fix. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/msfagile_5F00_wi_5F00_bug_5F00_flow_5F00_38D85240.gif"&gt;&lt;img title="MSF Agile Bug workflow" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="336" alt="MSF Agile Bug workflow" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/msfagile_5F00_wi_5F00_bug_5F00_flow_5F00_thumb_5F00_53A4784C.gif" width="398" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;When the developer finishes coding he changes the state from &amp;quot;&lt;strong&gt;Active&lt;/strong&gt;&amp;quot; to &amp;quot;&lt;strong&gt;Resolved&lt;/strong&gt;&amp;quot;, e.g. by checking in and associating the changeset with the work item.&lt;/p&gt;  &lt;p&gt;But by doing so the work item &lt;strong&gt;is still assigned to him&lt;/strong&gt;. In our scenario he doesn&amp;#39;t know who will be the responsible tester to verify the fix.&lt;strong&gt; So who knows?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The &lt;strong&gt;project lead&lt;/strong&gt; might have that information. So either we assign it back to the project lead to make him assign it to as tester or we make the project lead specify the tester upfront (with the ability to change it afterwards if necessary).&lt;/p&gt;  &lt;p&gt;In this example we&amp;#39;ll implement the second approach.&lt;/p&gt;  &lt;h4&gt;&lt;strong&gt;Objective&lt;/strong&gt;&lt;/h4&gt;  &lt;blockquote&gt;   &lt;p&gt;Ask for the Tester when creating the bug and automatically u.se it for the transition from &amp;quot;&lt;strong&gt;Active&lt;/strong&gt;&amp;quot; to &amp;quot;&lt;strong&gt;Resolved&lt;/strong&gt;&amp;quot;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h4&gt;&lt;strong&gt;Required Work Item Customization&lt;/strong&gt;&lt;/h4&gt;  &lt;p&gt;&lt;strong&gt;Step 1: Add a new string field to hold the tester      &lt;br /&gt;&lt;/strong&gt;In this example we will make it a required field (&lt;em&gt;&amp;lt;required/&amp;gt;&lt;/em&gt;) and ensure that it contains a valid user (&lt;em&gt;&amp;lt;validuser/&amp;gt;&lt;/em&gt;).&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Consolas" size="2"&gt;&amp;lt;FieldDefinition&amp;gt; type=&amp;quot;String&amp;quot; name=&amp;quot;&lt;strong&gt;Tester&lt;/strong&gt;&amp;quot; refname=&amp;quot;TeamSystemPro.Samples.Tester&amp;quot;&amp;gt;         &lt;br /&gt;&amp;#160; &amp;lt;&lt;strong&gt;REQUIRED&lt;/strong&gt; /&amp;gt;         &lt;br /&gt;&amp;#160; &amp;lt;&lt;strong&gt;VALIDUSER&lt;/strong&gt; /&amp;gt;         &lt;br /&gt;&amp;lt;/FieldDefinition&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Step 2: Add a rule to the transition from &amp;quot;Active&amp;quot; to &amp;quot;Resolved&amp;quot;      &lt;br /&gt;&lt;/strong&gt;Automatically copy the value of the tester field to the Assigned to field.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Consolas" size="2"&gt;&amp;lt;FieldReference refname=&amp;quot;&lt;strong&gt;System.AssignedTo&lt;/strong&gt;&amp;quot;&amp;gt;         &lt;br /&gt;&amp;#160; &amp;lt;COPY from=&amp;quot;field&amp;quot; field=&amp;quot;&lt;strong&gt;TeamSystemPro.Samples.Tester&lt;/strong&gt;&amp;quot; /&amp;gt;         &lt;br /&gt;&amp;lt;/FieldReference&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h4&gt;&lt;strong&gt;Result&lt;/strong&gt;&lt;/h4&gt;  &lt;p&gt;When creating a new bug it&amp;#39;s now required to select a Tester before it can be saving. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/Image0053_5F00_3D6E5CFA.png"&gt;&lt;img title="Creating a new bug requires a tester to be specified" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="180" alt="Creating a new bug requires a tester to be specified" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/Image0053_5F00_thumb_5F00_57CE5011.png" width="418" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;When choosing &amp;quot;&lt;strong&gt;Resolved&lt;/strong&gt;&amp;quot; for the state &amp;quot;&lt;strong&gt;Assigned to&lt;/strong&gt;&amp;quot; will be automatically filled with the contents from the &amp;quot;&lt;strong&gt;Tester&lt;/strong&gt;&amp;quot; field.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/Image0054_5F00_484B3E42.png"&gt;&lt;img title="Transitioning to resolved copies the tester to the Assigned to field" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="155" alt="Transitioning to resolved copies the tester to the Assigned to field" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/Image0054_5F00_thumb_5F00_7FB14F70.png" width="540" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The history correctly shows the change in the &amp;quot;&lt;strong&gt;Assigned To&lt;/strong&gt;&amp;quot; field from the &lt;strong&gt;developer&lt;/strong&gt; (here: &amp;quot;Neno Loje&amp;quot; to the &lt;strong&gt;tester &lt;/strong&gt;(in this case: &amp;quot;Administrator&amp;quot;)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/Image0058_5F00_72D6F952.png"&gt;&lt;img title="History displays the change in Assigned to field" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="286" alt="History displays the change in Assigned to field" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/Image0058_5F00_thumb_5F00_4338DAC6.png" width="596" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Happy Customizing!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1660511" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/For+Project+Managers/default.aspx">For Project Managers</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Team+Foundation+Server+_2800_TFS_2900_/default.aspx">Team Foundation Server (TFS)</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Tips+and+Tricks/default.aspx">Tips and Tricks</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+Process+Customization/default.aspx">TFS Process Customization</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/VSTS/default.aspx">VSTS</category></item><item><title>Using TFS for non-development projects</title><link>http://msmvps.com/blogs/vstsblog/archive/2009/01/12/using-tfs-for-non-development-projects.aspx</link><pubDate>Mon, 12 Jan 2009 15:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1660496</guid><dc:creator>neno</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/vstsblog/rsscomments.aspx?PostID=1660496</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/vstsblog/commentapi.aspx?PostID=1660496</wfw:comment><comments>http://msmvps.com/blogs/vstsblog/archive/2009/01/12/using-tfs-for-non-development-projects.aspx#comments</comments><description>&lt;p&gt;Team Foundation Server is easily customizable and equipped with a general purpose workflow or state machine. So you might ask yourself: why not put a non-development or rather related process in TFS instead of using separate software.&lt;/p&gt;  &lt;h4&gt;&lt;strong&gt;Showcase #1: Lead Management&lt;/strong&gt;&lt;/h4&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/AIT_5F00_TeamSystemPro_5F00_Team_5F00_klein_5F00_120x58_5F00_20129547.gif"&gt;&lt;img title="AIT_TeamSystemPro_Team_klein_120x58" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;margin:0px 0px 6px;border-right-width:0px;" height="58" alt="AIT_TeamSystemPro_Team_klein_120x58" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/AIT_5F00_TeamSystemPro_5F00_Team_5F00_klein_5F00_120x58_5F00_thumb_5F00_26596BD5.gif" width="120" align="right" border="0" /&gt;&lt;/a&gt;Since here at &lt;strong&gt;AIT TeamSystemPro Team&lt;/strong&gt; we are TFS consultants we decided to not use a commercial CRM tool for managing our leads but rather customize a team project in TFS for this matter.&lt;/p&gt;  &lt;p&gt;Here are a few impressions of the experience:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/LeadsInExcel_5F00_1ECDFC68.png"&gt;&lt;img title="Leads in Excel" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="338" alt="Leads in Excel" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/LeadsInExcel_5F00_thumb_5F00_396A72B4.png" width="444" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Work Item queries:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/LeadsWIQueries_5F00_5CD6F14C.png"&gt;&lt;img title="Work Item Queries for our Leads" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="401" alt="Work Item Queries for our Leads" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/LeadsWIQueries_5F00_thumb_5F00_4D53DF7D.png" width="234" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Work Item layout:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/LeadsInVS_5F00_19AB731F.png"&gt;&lt;img title="Leads - Work item Layout" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="301" alt="Leads - Work item Layout" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/LeadsInVS_5F00_thumb_5F00_2E6D45D2.png" width="440" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;in Outlook (via &lt;a href="http://www.teamcompanion.com" target="_blank"&gt;TeamCompanion&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/LeadsInOutlook1_5F00_24C4D79C.png"&gt;&lt;img title="Leads in Outlook" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="378" alt="Leads in Outlook" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/LeadsInOutlook1_5F00_thumb_5F00_6773FD07.png" width="444" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/LeadsInOutlook2_5F00_2AFB885D.png"&gt;&lt;img title="Leads in Outlook (2)" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="277" alt="Leads in Outlook (2)" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/LeadsInOutlook2_5F00_thumb_5F00_2C10717C.png" width="440" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The pretty simple workflow behind it:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/Lead_5F00_Workflow_5F00_7EAEDBAB.png"&gt;&lt;img title="lead workflow" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="305" alt="lead workflow" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/Lead_5F00_Workflow_5F00_thumb_5F00_7C91DCE2.png" width="444" border="0" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;h4&gt;&lt;strong&gt;Showcase #2&lt;/strong&gt;: &lt;strong&gt;Customer Support&lt;/strong&gt;&lt;/h4&gt;  &lt;p&gt;Needless to say that the TFS support that we offer is tracked using work items as well:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/SupportCase_5F00_2CD8B199.png"&gt;&lt;img title="Support Case work item" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="440" alt="Support Case work item" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/SupportCase_5F00_thumb_5F00_7138A2D8.png" width="440" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/CustomerSupport_5F00_23BC004B.png"&gt;&lt;img title="Customer Support Queries" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="149" alt="Customer Support Queries" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/CustomerSupport_5F00_thumb_5F00_62414DF1.png" width="203" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;h4&gt;&lt;strong&gt;Showcase #3&lt;/strong&gt;: &lt;strong&gt;List of managed TFS instances&lt;/strong&gt;&lt;/h4&gt;  &lt;p&gt;Every TFS instance that we manage has a corresponding record:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/TFSInfo7880_5F00_4C0B329F.png"&gt;&lt;img title="TFSInfo7880" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="286" alt="TFSInfo7880" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/TFSInfo7880_5F00_thumb_5F00_567BE0F2.png" width="440" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Your Feedback&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Do you have an interesting idea or have you used your TFS to support a non-dev related process? Feel free to leave me a comment or use the contact link – thanks!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1660496" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/For+Project+Managers/default.aspx">For Project Managers</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Team+Foundation+Server+_2800_TFS_2900_/default.aspx">Team Foundation Server (TFS)</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+Process+Customization/default.aspx">TFS Process Customization</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Work+Item+Customization/default.aspx">Work Item Customization</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Showcases/default.aspx">Showcases</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Process+Templates/default.aspx">Process Templates</category></item><item><title>Using rich HTML descriptions instead of plain text</title><link>http://msmvps.com/blogs/vstsblog/archive/2009/01/11/using-rich-html-descriptions-instead-of-plain-text.aspx</link><pubDate>Sun, 11 Jan 2009 11:34:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1660538</guid><dc:creator>neno</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/vstsblog/rsscomments.aspx?PostID=1660538</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/vstsblog/commentapi.aspx?PostID=1660538</wfw:comment><comments>http://msmvps.com/blogs/vstsblog/archive/2009/01/11/using-rich-html-descriptions-instead-of-plain-text.aspx#comments</comments><description>&lt;p&gt;&lt;strong&gt;Objective&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Allow rich HTML formatting in description fields of the MSF Agile process template.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: The MSF CMMI process does support HTML formatting by default. In order to use it you have to enable the formatting toolbar (see Step 6 below).&lt;/p&gt; &lt;/blockquote&gt;  &lt;h4&gt;Work Item Customization&lt;/h4&gt;  &lt;p&gt;&lt;strong&gt;Step 1: Add a new HTML description field&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Since the System.Description field is defined of type string as opposed to type HTML we need to create a new field:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/2AddNewField_5F00_68CBE69C.png"&gt;&lt;img title="2AddNewField" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="253" alt="2AddNewField" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/2AddNewField_5F00_thumb_5F00_788B7BA0.png" width="440" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/3AddNewField_5F00_0E91E733.png"&gt;&lt;img title="3AddNewField" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="196" alt="3AddNewField" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/3AddNewField_5F00_thumb_5F00_535E0B67.png" width="440" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Step 2: Change the work item layout&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Use your own HTML field instead of System.Description&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/4EditLayout_5F00_4A8E031B.png"&gt;&lt;img title="4EditLayout" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="374" alt="4EditLayout" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/4EditLayout_5F00_thumb_5F00_20CA8828.png" width="440" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Step 3: Refresh Work Item cache&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Right-click &amp;quot;&lt;strong&gt;Work Items&lt;/strong&gt;&amp;quot; in Team Explorer and select &amp;quot;&lt;strong&gt;Refresh&lt;/strong&gt;&amp;quot;.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/5RefreshWIs_5F00_2BA76970.png"&gt;&lt;img title="5RefreshWIs" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="364" alt="5RefreshWIs" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/5RefreshWIs_5F00_thumb_5F00_5BEE3E26.png" width="260" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Step 4: Enable the formatting toolbar&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Right-click on the Visual Studio toolbar, find and click &amp;quot;Formatting&amp;quot;:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/6EnableFormattingToolbar_5F00_4141A20D.png"&gt;&lt;img title="6EnableFormattingToolbar" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="279" alt="6EnableFormattingToolbar" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/6EnableFormattingToolbar_5F00_thumb_5F00_66CB1F6E.png" width="283" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;A new toolbar will appear:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/7FormattingToolbar_5F00_3E4C3D5A.png"&gt;&lt;img title="7FormattingToolbar" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="22" alt="7FormattingToolbar" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/7FormattingToolbar_5F00_thumb_5F00_03F0C779.png" width="444" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h4&gt;Result&lt;/h4&gt;  &lt;p&gt;Click into the description field and use the toolbar to format your input:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/8UsingRichFormatting_5F00_02AC2E9A.png"&gt;&lt;img title="8UsingRichFormatting" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="363" alt="8UsingRichFormatting" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/8UsingRichFormatting_5F00_thumb_5F00_07423954.png" width="444" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Optional Step 5: Copying the old descriptions to the new HTML field&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;It would be a pity to loose the existing descriptions so let&amp;#39;s write a small utility using the Team Foundation Object model to copy the &amp;quot;old&amp;quot; descriptions to the new HTML field:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; CopyOldDescriptions()
{
    &lt;span class="rem"&gt;// TODO: Change these values:&lt;/span&gt;
    &lt;span class="kwrd"&gt;string&lt;/span&gt; tfsName = &lt;span class="str"&gt;&amp;quot;servertogo&amp;quot;&lt;/span&gt;;
    &lt;span class="kwrd"&gt;string&lt;/span&gt; tfsProjectName = &lt;span class="str"&gt;&amp;quot;WorkItemCustomization&amp;quot;&lt;/span&gt;;
    &lt;span class="kwrd"&gt;string&lt;/span&gt; tfsHtmlDescriptionFieldName = &lt;span class="str"&gt;&amp;quot;DescriptionHtml&amp;quot;&lt;/span&gt;;
    &lt;span class="kwrd"&gt;string&lt;/span&gt; tfsWorkItemType = &lt;span class="str"&gt;&amp;quot;Task&amp;quot;&lt;/span&gt;;

    &lt;span class="kwrd"&gt;using&lt;/span&gt; (TeamFoundationServer tfs = TeamFoundationServerFactory.GetServer(tfsName))
    {
        WorkItemStore wit = (WorkItemStore)tfs.GetService(&lt;span class="kwrd"&gt;typeof&lt;/span&gt;(WorkItemStore));
        WorkItemCollection result = wit.Query(String.Format(&lt;span class="str"&gt;&amp;quot;SELECT [System.Id] FROM WorkItems WHERE [System.TeamProject] = &amp;#39;{0}&amp;#39; AND [System.WorkItemType] = &amp;#39;{1}&amp;#39;&amp;quot;&lt;/span&gt;, tfsProjectName, tfsWorkItemType));
        List&amp;lt;WorkItem&amp;gt; affectedWorkItems = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;WorkItem&amp;gt;();
        &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (WorkItem wi &lt;span class="kwrd"&gt;in&lt;/span&gt; result)
        {
            &lt;span class="kwrd"&gt;if&lt;/span&gt; (wi.Description.Length &amp;gt; 0)
            {
                &lt;span class="rem"&gt;// Set new description&lt;/span&gt;
                &lt;span class="kwrd"&gt;string&lt;/span&gt; &lt;span class="kwrd"&gt;value&lt;/span&gt; = (&lt;span class="kwrd"&gt;string&lt;/span&gt;)wi[tfsHtmlDescriptionFieldName];
                &lt;span class="kwrd"&gt;if&lt;/span&gt; (String.IsNullOrEmpty(&lt;span class="kwrd"&gt;value&lt;/span&gt;))
                {
                    wi[tfsHtmlDescriptionFieldName] = wi.Description.Replace(&lt;span class="str"&gt;&amp;quot;\n&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;&amp;lt;br&amp;gt;&amp;quot;&lt;/span&gt;);
                }
                &lt;span class="kwrd"&gt;else&lt;/span&gt;
                {
                    wi[tfsHtmlDescriptionFieldName] += &lt;span class="str"&gt;&amp;quot;&amp;lt;br&amp;gt;&amp;lt;p&amp;gt;Old description:&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;quot;&lt;/span&gt; + wi.Description.Replace(&lt;span class="str"&gt;&amp;quot;\n&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;&amp;lt;br&amp;gt;&amp;quot;&lt;/span&gt;) + &lt;span class="str"&gt;&amp;quot;&amp;lt;/p&amp;gt;&amp;quot;&lt;/span&gt;;
                }

                &lt;span class="rem"&gt;// Delete old description&lt;/span&gt;
                wi.Description = String.Empty;

                affectedWorkItems.Add(wi);
            }
        }

        &lt;span class="kwrd"&gt;if&lt;/span&gt; (affectedWorkItems.Count &amp;gt; 0)
        {
            wit.BatchSave(affectedWorkItems.ToArray());
            MessageBox.Show(&lt;span class="str"&gt;&amp;quot;Items updated: &amp;quot;&lt;/span&gt; + affectedWorkItems.Count);
        }
        &lt;span class="kwrd"&gt;else&lt;/span&gt;
        {
            MessageBox.Show(&lt;span class="str"&gt;&amp;quot;Nothing to do.&amp;quot;&lt;/span&gt;);
        }
    }
}&lt;/pre&gt;

&lt;p&gt;Happy formatting. :-)&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;div class="wlWriterEditableSmartContent" id="scid:8eb9d37f-1541-4f29-b6f4-1eea890d4876:ce9bec43-52e5-4477-9561-b71172b80820" style="padding-right:0px;display:inline;padding-left:0px;float:none;padding-bottom:0px;margin:0px;padding-top:0px;"&gt;&lt;div class="wlWriterSmartContent" id="scid:8eb9d37f-1541-4f29-b6f4-1eea890d4876:ce9bec43-52e5-4477-9561-b71172b80820" style="padding-right:0px;display:inline;padding-left:0px;float:none;padding-bottom:0px;margin:0px;padding-top:0px;"&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1660538" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/For+Project+Managers/default.aspx">For Project Managers</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Team+Foundation+Server+_2800_TFS_2900_/default.aspx">Team Foundation Server (TFS)</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+Extensibility/default.aspx">TFS Extensibility</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+Work+Item+Tracking/default.aspx">TFS Work Item Tracking</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Tips+and+Tricks/default.aspx">Tips and Tricks</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+Process+Customization/default.aspx">TFS Process Customization</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/VSTS/default.aspx">VSTS</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Process+Templates/default.aspx">Process Templates</category></item><item><title>Specified cast not valid when trying to create a new work item</title><link>http://msmvps.com/blogs/vstsblog/archive/2009/01/10/specified-cast-not-valid-when-trying-to-create-a-new-work-item.aspx</link><pubDate>Sat, 10 Jan 2009 18:27:19 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1660362</guid><dc:creator>neno</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/vstsblog/rsscomments.aspx?PostID=1660362</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/vstsblog/commentapi.aspx?PostID=1660362</wfw:comment><comments>http://msmvps.com/blogs/vstsblog/archive/2009/01/10/specified-cast-not-valid-when-trying-to-create-a-new-work-item.aspx#comments</comments><description>&lt;p&gt;&lt;strong&gt;Problem description&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;When trying to create a new work item you receive the following error?&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/SpecifiedCastNotValid_5F00_28316430.png"&gt;&lt;img title="Specified Cast Not Valid" style="border-right:0px;border-top:0px;display:inline;border-left:0px;border-bottom:0px;" height="173" alt="Specified Cast Not Valid" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/SpecifiedCastNotValid_5F00_thumb_5F00_66B6B1D6.png" width="258" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Cause&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Thanks to &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/tfsworkitemtracking/thread/589b8855-81c5-4649-95ea-ebacc34671ac/"&gt;this thread&lt;/a&gt; we now know that this message is caused by a &lt;strong&gt;DateTime Control &lt;/strong&gt;in a WIT definition when its associated with a &lt;strong&gt;String &lt;/strong&gt;field.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Fix&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Only assign DateTime fields to DateTime controls.&lt;/p&gt;&lt;/blockquote&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1660362" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Team+Foundation+Server+_2800_TFS_2900_/default.aspx">Team Foundation Server (TFS)</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+Process+Customization/default.aspx">TFS Process Customization</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Work+Item+Customization/default.aspx">Work Item Customization</category></item><item><title>Workflows of MSF Agile and CMMI Process Templates for TFS</title><link>http://msmvps.com/blogs/vstsblog/archive/2009/01/09/workflows-of-msf-agile-and-cmmi-process-templates-for-tfs.aspx</link><pubDate>Fri, 09 Jan 2009 00:24:36 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1659596</guid><dc:creator>neno</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/vstsblog/rsscomments.aspx?PostID=1659596</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/vstsblog/commentapi.aspx?PostID=1659596</wfw:comment><comments>http://msmvps.com/blogs/vstsblog/archive/2009/01/09/workflows-of-msf-agile-and-cmmi-process-templates-for-tfs.aspx#comments</comments><description>&lt;p&gt;When trying to decide which of the two MSF Process Templates - Agile vs. CMMI Process Improvement - for TFS is the right starting point for your company, it helps to compare the work item types and its workflows.&lt;/p&gt; &lt;p&gt;You can download the full guidance from:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=9F3EA426-C2B2-4264-BA0F-35A021D85234&amp;amp;displaylang=en"&gt;MSF for Agile Software Development Process Guidance&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=10B578F1-B7A4-459F-A783-04BC82CB2359&amp;amp;displaylang=en"&gt;MSF for CMMI Process Improvement Guidance&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Also a good source: Microsoft&amp;#39;s &lt;a href="http://msdn.microsoft.com/en-us/vsts2008/aa718795.aspx"&gt;Process Templates and Tools&lt;/a&gt; website&lt;/li&gt;&lt;/ul&gt; &lt;h4&gt;MSF for Agile Software Development&lt;/h4&gt; &lt;p&gt;featuring 5 work item types: Bug, Requirement, Quality of Service Requirement (QoS), Risk and Task.&lt;/p&gt; &lt;p&gt;Work Item Type: &lt;strong&gt;Bug&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/msfagile_5F00_wi_5F00_bug_5F00_flow_5F00_2.gif"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="332" alt="msfagile_wi_bug_flow" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/msfagile_5F00_wi_5F00_bug_5F00_flow_5F00_thumb.gif" width="394" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Work Item Type: &lt;strong&gt;Scenario&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/msfagile_5F00_wi_5F00_scenario_5F00_flow_5F00_2.gif"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="283" alt="msfagile_wi_scenario_flow" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/msfagile_5F00_wi_5F00_scenario_5F00_flow_5F00_thumb.gif" width="223" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Work Item Type: &lt;strong&gt;Quality of Service Requirement &lt;/strong&gt;(also known as &amp;quot;technical requirement&amp;quot;)&lt;/p&gt; &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/msfagile_5F00_wi_5F00_qos_5F00_flow_5F00_2.gif"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="264" alt="msfagile_wi_qos_flow" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/msfagile_5F00_wi_5F00_qos_5F00_flow_5F00_thumb.gif" width="222" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Work Item Type: &lt;strong&gt;Risk&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/msfagile_5F00_wi_5F00_risk_5F00_flow_5F00_2.gif"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="179" alt="msfagile_wi_risk_flow" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/msfagile_5F00_wi_5F00_risk_5F00_flow_5F00_thumb.gif" width="174" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Work Item Type: &lt;strong&gt;Task&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/msfagile_5F00_wi_5F00_task_5F00_flow_5F00_2.gif"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="172" alt="msfagile_wi_task_flow" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/msfagile_5F00_wi_5F00_task_5F00_flow_5F00_thumb.gif" width="164" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;h4&gt;MSF for CMMI Process Improvement&lt;/h4&gt; &lt;p&gt;featuring 7 work item types: Bug, Requirement, Change Request, Issue, Review, Risk, Task&lt;/p&gt; &lt;p&gt;Work Item Type: &lt;strong&gt;Bug&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/cmmi_5F00_bug_5F00_4.gif"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="328" alt="cmmi_bug" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/cmmi_5F00_bug_5F00_thumb_5F00_1.gif" width="339" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Work Item Type: &lt;strong&gt;Requirement&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/cmmi_5F00_requirement_5F00_wit_5F00_4.gif"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="328" alt="cmmi_requirement_wit" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/cmmi_5F00_requirement_5F00_wit_5F00_thumb_5F00_1.gif" width="343" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Work Item Type: &lt;strong&gt;Change Request&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/cmmi_5F00_change_5F00_request_5F00_4.gif"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="328" alt="cmmi_change_request" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/cmmi_5F00_change_5F00_request_5F00_thumb_5F00_1.gif" width="344" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Work Item Type: &lt;strong&gt;Issue&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/cmmi_5F00_issue_5F00_wit_5F00_4.gif"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="328" alt="cmmi_issue_wit" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/cmmi_5F00_issue_5F00_wit_5F00_thumb_5F00_1.gif" width="339" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Work Item Type: &lt;strong&gt;Review&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/cmmi_5F00_review_5F00_wit_5F00_4.gif"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="254" alt="cmmi_review_wit" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/cmmi_5F00_review_5F00_wit_5F00_thumb_5F00_1.gif" width="289" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Work Item Type: &lt;strong&gt;Risk&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/cmmi_5F00_risk_5F00_wit_5F00_4.gif"&gt;&lt;img height="328" alt="cmmi_risk_wit" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/cmmi_5F00_risk_5F00_wit_5F00_thumb_5F00_1.gif" width="350" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Work Item Type: &lt;strong&gt;Task&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/cmmi_5F00_task_5F00_2.gif"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="328" alt="cmmi_task" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog/cmmi_5F00_task_5F00_thumb.gif" width="343" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;As a personal note&lt;/strong&gt;:&lt;/p&gt; &lt;p&gt;Both templates are a great starting point. The agile template might be a bit more lightweight whereas the CMMI template might fit more the vocabulary and processes that you are used to.&lt;/p&gt; &lt;p&gt;However, both are really just a starting point. In customizing the process you get way more out of TFS than with just using the built-in process templates.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1659596" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/For+Project+Managers/default.aspx">For Project Managers</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Team+Foundation+Server+_2800_TFS_2900_/default.aspx">Team Foundation Server (TFS)</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Microsoft+Solution+Framework+_2800_MSF_2900_/default.aspx">Microsoft Solution Framework (MSF)</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+Process+Guidance/default.aspx">TFS Process Guidance</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/For+Decision+Makers/default.aspx">For Decision Makers</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Project+Management+with+TFS/default.aspx">Project Management with TFS</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/For+Business+Analysts/default.aspx">For Business Analysts</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+Process+Customization/default.aspx">TFS Process Customization</category></item><item><title>Specifying a minimum size for controls on the work item form</title><link>http://msmvps.com/blogs/vstsblog/archive/2008/10/01/minimumsize-attribute-for-work-item-form-layout.aspx</link><pubDate>Wed, 01 Oct 2008 20:21:25 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1649439</guid><dc:creator>neno</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/vstsblog/rsscomments.aspx?PostID=1649439</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/vstsblog/commentapi.aspx?PostID=1649439</wfw:comment><comments>http://msmvps.com/blogs/vstsblog/archive/2008/10/01/minimumsize-attribute-for-work-item-form-layout.aspx#comments</comments><description>&lt;p&gt; If you try to set the &lt;a href="http://msmvps.com/blogs/vstsblog/archive/2007/07/07/undocumented-attributes-for-controlling-the-work-item-form-layout.aspx" target="_blank"&gt;minimum size&lt;/a&gt; for a control you now need to specify a &lt;a href="http://msdn.microsoft.com/en-us/library/cc339520.aspx" target="_blank"&gt;SizeType&lt;/a&gt; like &amp;quot;&lt;strong&gt;(50,100)&lt;/strong&gt;&amp;quot; instead of &amp;quot;50,100&amp;quot;.&lt;/p&gt; &lt;p&gt;Error message (from &lt;a href="http://msdn.microsoft.com/en-us/library/ms253163(VS.90).aspx" target="_blank"&gt;witimport.exe&lt;/a&gt;):&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;The &amp;#39;&lt;b&gt;MinimumSize&lt;/b&gt;&amp;#39; attribute is invalid - The value &amp;#39;50,100&amp;#39; is invalid according to its datatype &amp;#39;&lt;b&gt;SizeType&lt;/b&gt;&amp;#39; - The Pattern constraint failed.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Using a minimum size you can create multiple large text boxes on the work item form layout: &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog.MinimumSizeattributeforworkitemformlayou_5F00_13A5D/01.10_5F00_2.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="331" alt="01.10" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vstsblog.MinimumSizeattributeforworkitemformlayou_5F00_13A5D/01.10_5F00_thumb.png" width="572" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1649439" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Tips+and+Tricks/default.aspx">Tips and Tricks</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+Process+Customization/default.aspx">TFS Process Customization</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/VSTS/default.aspx">VSTS</category></item><item><title>Documentation: Team Foundation Server SDK (online version)</title><link>http://msmvps.com/blogs/vstsblog/archive/2008/02/23/documentation-team-foundation-server-sdk-online-version.aspx</link><pubDate>Sat, 23 Feb 2008 13:55:34 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1522538</guid><dc:creator>neno</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/vstsblog/rsscomments.aspx?PostID=1522538</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/vstsblog/commentapi.aspx?PostID=1522538</wfw:comment><comments>http://msmvps.com/blogs/vstsblog/archive/2008/02/23/documentation-team-foundation-server-sdk-online-version.aspx#comments</comments><description>&lt;p&gt;From the contents: &lt;/p&gt; &lt;blockquote&gt; &lt;ul&gt; &lt;li&gt;Team Foundation Server Extensibility&lt;/li&gt; &lt;li&gt;Team Foundation Server SDK Architecture&lt;/li&gt; &lt;li&gt;How to: Run Team Foundation Server SDK Samples&lt;/li&gt; &lt;li&gt;Team Foundation Core Services&lt;/li&gt; &lt;li&gt;Work Item Tracking Extensibility&lt;/li&gt; &lt;li&gt;Source Control Extensibility&lt;/li&gt; &lt;li&gt;Data Warehouse Extensibility&lt;/li&gt; &lt;li&gt;Reference for Team Foundation Server SDK&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt; &lt;p&gt;Link: &lt;a title="http://msdn2.microsoft.com/en-us/library/bb130146(VS.80).aspx" href="http://msdn2.microsoft.com/en-us/library/bb130146(VS.80).aspx"&gt;http://msdn2.microsoft.com/en-us/library/bb130146(VS.80).aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1522538" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/For+Developers/default.aspx">For Developers</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Team+Foundation+Server+_2800_TFS_2900_/default.aspx">Team Foundation Server (TFS)</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Third-Party+Solutions/default.aspx">Third-Party Solutions</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+Extensibility/default.aspx">TFS Extensibility</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Training+and+Learning/default.aspx">Training and Learning</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Team+Foundation+Version+Control/default.aspx">Team Foundation Version Control</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+2005/default.aspx">TFS 2005</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+2008/default.aspx">TFS 2008</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Team+Build+Server/default.aspx">Team Build Server</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+Server+Management/default.aspx">TFS Server Management</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+Process+Customization/default.aspx">TFS Process Customization</category></item><item><title>V-Modell XT Generator creates TFS Process Templates</title><link>http://msmvps.com/blogs/vstsblog/archive/2007/11/21/v-modell-xt-generator-creates-tfs-process-templates.aspx</link><pubDate>Wed, 21 Nov 2007 21:07:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1345442</guid><dc:creator>neno</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/vstsblog/rsscomments.aspx?PostID=1345442</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/vstsblog/commentapi.aspx?PostID=1345442</wfw:comment><comments>http://msmvps.com/blogs/vstsblog/archive/2007/11/21/v-modell-xt-generator-creates-tfs-process-templates.aspx#comments</comments><description>&lt;p&gt;Microsoft Germany [1], The Center of Software Concepts at the Technical University of Munich [2] and Zühlke [3] released the &lt;strong&gt;V-Modell XT Generator&lt;/strong&gt; [4] that creates process templates for working with the V-Modell, which is a process modell widely asked for by German customers working for the public sector. It is available via Codeplex.&lt;/p&gt;
&lt;p&gt;Congratulations to Marcus Alt [5]&amp;nbsp;from Microsoft and the whole team for realising this project which was quite a bit of work as I experienced first hand!&lt;/p&gt;
&lt;p&gt;[1] &lt;a href="http://www.microsoft.de/"&gt;http://www.microsoft.de/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[2] &lt;a href="http://zfs.in.tum.de/"&gt;http://zfs.in.tum.de/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[3] &lt;a href="http://www.zuehlke.com/index.php?id=2&amp;amp;L=2"&gt;http://www.zuehlke.com/index.php?id=2&amp;amp;L=2&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[4] &lt;a href="http://www.codeplex.com/VModellXTTFS"&gt;http://www.codeplex.com/VModellXTTFS&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[5]&lt;a href="http://blogs.msdn.com/marcalt/"&gt;http://blogs.msdn.com/marcalt/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Some impressions:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Generator" src="http://msmvps.com/blogs/vstsblog/Generator.jpg" border="0" /&gt;&lt;br /&gt;CollabXT V-Modell® XT Generator&lt;/p&gt;
&lt;p&gt;&lt;img alt="VModellInTFS" src="http://msmvps.com/blogs/vstsblog/VModellInTFS.jpg" border="0" /&gt;&lt;br /&gt;Instantiated V-Modell® XT in TFS&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/blogs/vstsblog/VModellXT_WorkItems.jpg"&gt;&lt;img alt="VModellXT_WorkItems" src="http://msmvps.com/blogs/vstsblog/VModellXT_WorkItems_thumb.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;V-Modell® XT Work Items in in TFS&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/blogs/vstsblog/WebAccess.jpg"&gt;&lt;/a&gt;&lt;a href="http://msmvps.com/blogs/vstsblog/WebAccess.jpg"&gt;&lt;img alt="WebAccess" src="http://msmvps.com/blogs/vstsblog/WebAccess_thumb1.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;V-Modell® XT Work Items in WebAccess&lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1345442" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/For+Project+Managers/default.aspx">For Project Managers</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Microsoft+Solution+Framework+_2800_MSF_2900_/default.aspx">Microsoft Solution Framework (MSF)</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Downloads/default.aspx">Downloads</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Tools+and+Utilities/default.aspx">Tools and Utilities</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/For+Decision+Makers/default.aspx">For Decision Makers</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Project+Management+with+TFS/default.aspx">Project Management with TFS</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+Process+Customization/default.aspx">TFS Process Customization</category></item><item><title>Changing TFS email notifications to link to Team System Web Access</title><link>http://msmvps.com/blogs/vstsblog/archive/2007/08/31/changing-tfs-email-notifications-to-link-to-team-system-web-access.aspx</link><pubDate>Fri, 31 Aug 2007 14:44:37 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1152122</guid><dc:creator>neno</dc:creator><slash:comments>8</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/vstsblog/rsscomments.aspx?PostID=1152122</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/vstsblog/commentapi.aspx?PostID=1152122</wfw:comment><comments>http://msmvps.com/blogs/vstsblog/archive/2007/08/31/changing-tfs-email-notifications-to-link-to-team-system-web-access.aspx#comments</comments><description>&lt;p&gt;Thanks to this &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2028288&amp;amp;SiteID=1"&gt;MSDN Forums post&lt;/a&gt; I was able to change the link included in every TFS notification e-mail to point to TSWA instead of the project portal.&lt;/p&gt;  &lt;p&gt;Here’s the full story:&lt;/p&gt;  &lt;p&gt;When using project alerts to get notified about work item changes you get an email containing a link to the project portal:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/blogs/vstsblog/Image_2D0007.png"&gt;&lt;img alt="Work Item Changed email notification by TFS" src="http://msmvps.com/blogs/vstsblog/Image_2D0007_thumb.jpg" border="0" /&gt;&lt;/a&gt;&lt;a href="http://msmvps.com/blogs/vstsblog/Image_2D0007.png"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you follow the link you might get a bit dissapointed when looking at this very basic work item details page:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/blogs/vstsblog/TeamPortal_WorkItemDetails.png"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/blogs/vstsblog/TeamPortal_WorkItemView.png"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/blogs/vstsblog/ProjectPortal_WorkItemView.png"&gt;&lt;img alt="Project Portal Work Item Details" src="http://msmvps.com/blogs/vstsblog/ProjectPortal_WorkItemView_thumb.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Since &lt;a href="http://msmvps.com/blogs/vstsblog/archive/2007/08/27/free-add-on-team-system-web-access-tswa-power-tool-by-microsoft.aspx"&gt;Team System Web Access&lt;/a&gt; is now avaible from Microsoft free of charge we can change the link in the template for all notification messages to point to the new TSWA.&lt;/p&gt; &lt;a href="http://msmvps.com/blogs/vstsblog/TeamPortal_WorkItemDetails.png"&gt;&lt;/a&gt;  &lt;p&gt;&lt;font size="3"&gt;Changing the e-mail template&lt;/font&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;On the TFS app tier open the folder:     &lt;br /&gt;&lt;font face="Courier New"&gt;%ProgramFiles%\Microsoft Visual Studio 2005 Team Foundation Server\Web Services\Services\v1.0\Transforms       &lt;br /&gt;&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;Create a backup of the file &lt;font face="Courier New"&gt;WorkItemChangedEvent.xsl&lt;/font&gt;, which we will be editing in the next step.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Replace the text:     &lt;br /&gt;      &lt;br /&gt;&lt;font face="Courier New"&gt;&amp;lt;xsl:value-of select=&amp;quot;DisplayUrl&amp;quot; /&amp;gt;&lt;/font&gt;      &lt;br /&gt;      &lt;br /&gt;with:      &lt;br /&gt;      &lt;br /&gt;&lt;font face="Courier New"&gt;&amp;lt;xsl:value-of select=&amp;quot;concat(substring-before(DisplayUrl,&amp;#39;:8080/WorkItemTracking/WorkItem.aspx?artifactMoniker=&amp;#39;),&amp;#39;:&lt;strong&gt;8090&lt;/strong&gt;/wi.aspx?id=&amp;#39;,substring-after(DisplayUrl,&amp;#39;artifactMoniker=&amp;#39;))&amp;quot; /&amp;gt;&lt;/font&gt;      &lt;br /&gt;      &lt;br /&gt;The bold printed 8090 is the port where you installed TSWA at.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Save the file and you are done.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;If you now get a new notification e-mail and click on the link you’ll see the following much nicer work item details form provided by TSWA:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/blogs/vstsblog/Image_2D0008.png"&gt;&lt;img alt="Team System Web Access Work Item Detail Form" src="http://msmvps.com/blogs/vstsblog/Image_2D0008_thumb.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: Be aware that you either need to use Windows authentication with TSWA to make this work or you need to be already logged in and the session must be still alive.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I published a &lt;strong&gt;2nd part&lt;/strong&gt;: &lt;a href="http://msmvps.com/blogs/vstsblog/archive/2009/01/11/changing-tfs-emails-to-link-to-team-system-web-access-part-2.aspx" target="_blank"&gt;Changing TFS emails to link to Team System Web Access – Part 2&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1152122" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/For+Project+Managers/default.aspx">For Project Managers</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+IT+Administration/default.aspx">TFS IT Administration</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+Work+Item+Tracking/default.aspx">TFS Work Item Tracking</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Tips+and+Tricks/default.aspx">Tips and Tricks</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Team+Foundation+Version+Control/default.aspx">Team Foundation Version Control</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+2005/default.aspx">TFS 2005</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+2008/default.aspx">TFS 2008</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Project+Management+with+TFS/default.aspx">Project Management with TFS</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+Server+Management/default.aspx">TFS Server Management</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Project+Portal+and+Team+Communication/default.aspx">Project Portal and Team Communication</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Team+System+Web+Access+_2800_TSWA_2900_/default.aspx">Team System Web Access (TSWA)</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+Process+Customization/default.aspx">TFS Process Customization</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Notification+and+Alerts/default.aspx">Notification and Alerts</category></item><item><title>Tool for creating links to pages on Team System Web Access</title><link>http://msmvps.com/blogs/vstsblog/archive/2007/08/31/tool-for-creating-links-to-pages-on-team-system-web-access.aspx</link><pubDate>Fri, 31 Aug 2007 14:34:20 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1152100</guid><dc:creator>neno</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/vstsblog/rsscomments.aspx?PostID=1152100</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/vstsblog/commentapi.aspx?PostID=1152100</wfw:comment><comments>http://msmvps.com/blogs/vstsblog/archive/2007/08/31/tool-for-creating-links-to-pages-on-team-system-web-access.aspx#comments</comments><description>&lt;p&gt;Would you like to send links to work items, team projects or source files on&amp;#160; &lt;a href="http://msmvps.com/blogs/vstsblog/archive/2007/08/27/free-add-on-team-system-web-access-tswa-power-tool-by-microsoft.aspx"&gt;Team System Web Access&lt;/a&gt;?&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;For work items     &lt;br /&gt;&lt;/font&gt;… you can find the answer in the offical &lt;a href="http://msdn2.microsoft.com/en-us/teamsystem/bb684938.aspx"&gt;TSWA FAQ&lt;/a&gt;:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Q: What’s the URL to use if I want to send the link of a specific work item?&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;A: Work item links use the follwing format:&lt;/p&gt;    &lt;p&gt;&lt;code&gt;&lt;a href="http://[TSWA:port]/wi.aspx?id=[WorkItemID"&gt;http://&lt;em&gt;[TSWA:port]&lt;/em&gt;/wi.aspx?id=[&lt;em&gt;WorkItemID&lt;/em&gt;&lt;font color="#000000"&gt;]&lt;/font&gt;&lt;/a&gt;&lt;/code&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;font size="3"&gt;For Team Projects     &lt;br /&gt;&lt;/font&gt;… it also pretty simple:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://[TSWA:port]/index.aspx?pname=[ProjectName]"&gt;http://[&lt;em&gt;TSWA:port&lt;/em&gt;]/index.aspx?pname=[&lt;em&gt;ProjectName&lt;/em&gt;&lt;font color="#000000"&gt;]&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;font size="3"&gt;For Source Files     &lt;br /&gt;… &lt;/font&gt;it’s a little bit more “interesting” (thanks to Hakan from Microsoft for reveiling the details behind this secret).&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="color:#1f497d;"&gt;It’s a bit tricky but here it goes:&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="color:#1f497d;"&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="color:#1f497d;"&gt;&lt;a href="http://[TSWA:port]/UI/Pages/Scc/ViewSource.aspx?scc-item=[ItemData" target="_blank"&gt;http://[&lt;em&gt;TSWA:port&lt;/em&gt;]/UI/Pages/Scc/ViewSource.aspx?scc-item=[&lt;i&gt;ItemData&lt;/i&gt;&lt;/a&gt;]&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="color:#1f497d;"&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="color:#1f497d;"&gt;ItemData is the HtmlEncoded output of the query string something like “id=10&amp;amp;cs=-1”&lt;/span&gt;&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#1f497d;"&gt;id&lt;/span&gt;&lt;/b&gt;&lt;span style="color:#1f497d;"&gt;: the ID of the item in source control (you need to know this instead of the file path)&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;div class="MsoNormal"&gt;&lt;span style="color:#1f497d;"&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color:#1f497d;"&gt;cs&lt;/span&gt;&lt;/b&gt;&lt;span style="color:#1f497d;"&gt;: changeset number (-1: latest)&lt;/span&gt;&lt;/div&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="color:#1f497d;"&gt;&lt;/span&gt;&lt;span style="color:#1f497d;"&gt;In your example, the file id is 151611. So,&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="color:#1f497d;"&gt;&lt;/span&gt;&lt;span style="color:#1f497d;"&gt;HtmlEncode(“id&lt;/span&gt;&lt;span style="color:#a6a6a6;"&gt;=&lt;/span&gt;&lt;span style="color:#1f497d;"&gt;151611&lt;/span&gt;&lt;span style="color:#a6a6a6;"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color:#1f497d;"&gt;cs&lt;/span&gt;&lt;span style="color:#a6a6a6;"&gt;=&lt;/span&gt;&lt;span style="color:#1f497d;"&gt;-1”) -&amp;gt; “id&lt;/span&gt;&lt;span style="color:#a6a6a6;"&gt;%3D&lt;/span&gt;&lt;span style="color:#1f497d;"&gt;151611&lt;/span&gt;&lt;span style="color:#a6a6a6;"&gt;%26&lt;/span&gt;&lt;span style="color:#1f497d;"&gt;cs&lt;/span&gt;&lt;span style="color:#a6a6a6;"&gt;%3D&lt;/span&gt;&lt;span style="color:#1f497d;"&gt;-1”&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="color:#1f497d;"&gt;&lt;/span&gt;&lt;span style="color:#1f497d;"&gt;&lt;a href="https://[TSWA:port]/UI/Pages/Scc/ViewSource.aspx?scc-item=id%3D151611%26cs%3D-1" target="_blank"&gt;https://[&lt;em&gt;TSWA:port&lt;/em&gt;]/UI/Pages/Scc/ViewSource.aspx?scc-item=id%3D151611%26cs%3D-1&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="color:#1f497d;"&gt;&lt;/span&gt;&lt;span style="color:#1f497d;"&gt;[We’re planning to provide more friendly URLs in a future version, similar to wi.aspx approach]&lt;/span&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;To make it fast and more convenient to create links to TSWA I created a small tool to help you with it:&lt;/p&gt;  &lt;p&gt;&lt;img alt="TeamSystemWebAccessLinkCreator" src="http://msmvps.com/blogs/vstsblog/TeamSystemWebAccessLinkCreator.png" border="0" /&gt;&lt;/p&gt;  &lt;p&gt;It should be mentioned that this tool has a lot of room for improvement. :-)&lt;/p&gt;  &lt;p&gt;You can download the source from an updated version &lt;a href="http://msmvps.com/blogs/vstsblog/archive/2009/03/06/tool-for-creating-direct-links-to-tswa.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1152100" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/For+Project+Managers/default.aspx">For Project Managers</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Team+Foundation+Server+_2800_TFS_2900_/default.aspx">Team Foundation Server (TFS)</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+Work+Item+Tracking/default.aspx">TFS Work Item Tracking</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Tools+and+Utilities/default.aspx">Tools and Utilities</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Tips+and+Tricks/default.aspx">Tips and Tricks</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Team+Foundation+Version+Control/default.aspx">Team Foundation Version Control</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Project+Management+with+TFS/default.aspx">Project Management with TFS</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Team+System+Web+Access+_2800_TSWA_2900_/default.aspx">Team System Web Access (TSWA)</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+Process+Customization/default.aspx">TFS Process Customization</category></item><item><title>Creating a separate work item form layout for Web Access</title><link>http://msmvps.com/blogs/vstsblog/archive/2007/08/29/creating-a-separate-work-item-form-layout-for-web-access.aspx</link><pubDate>Wed, 29 Aug 2007 16:32:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1146041</guid><dc:creator>neno</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/vstsblog/rsscomments.aspx?PostID=1146041</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/vstsblog/commentapi.aspx?PostID=1146041</wfw:comment><comments>http://msmvps.com/blogs/vstsblog/archive/2007/08/29/creating-a-separate-work-item-form-layout-for-web-access.aspx#comments</comments><description>&lt;p&gt;Right now custom work item controls [1] are not supported by Team System Web Access [2]. Instead your custom control you will see this unpleasant message: “Unable to create workitem control ‘ControlName’”.&lt;/p&gt;
&lt;p dir="ltr" style="MARGIN-RIGHT:0px;"&gt;&lt;img alt="Error message when opening a work item with custom controls on the web" src="http://msmvps.com/blogs/vstsblog/Image_2D0002.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;While this is a sad thing for us users does that mean that we shouldn’t use Web Access? No, of course not…&lt;/p&gt;
&lt;p&gt;One solution is to create a separate work item form layout for Web Access and remove all custom controls from it. (thanks to &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2065895&amp;amp;SiteID=1"&gt;Serkan&lt;/a&gt;&lt;font color="#810081"&gt; &lt;/font&gt;and &lt;a href="http://blogs.msdn.com/marcalt/"&gt;Marcus&lt;/a&gt; for pointing me in that direction.)&lt;/p&gt;
&lt;p&gt;All you need to do is duplicate the &amp;lt;layout&amp;gt; information in your work item xml file.&lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;Let’s do it&lt;/font&gt;&lt;/p&gt;
&lt;p dir="ltr"&gt;The first section gets a target-attribute with the value “WinForms” like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&amp;lt;Layout Target=“WinForms”&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;The second targets the “Web”:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&amp;lt;Layout Target=”Web”&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p dir="ltr"&gt;Last thing you need to do is change the “Type” attributes of all controls in the web layout to use “FieldControl” instead of your custom control.&lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;Review the results&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;If you take my Priority Control example from [1] it would look like this:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Windows layout&lt;/strong&gt; (in Team Explorer) will show the friendly priority list (= the custom control):&lt;/p&gt;
&lt;p dir="ltr" style="MARGIN-RIGHT:0px;"&gt;&lt;img alt="A Work Item Custom Control in Team Explorer" src="http://msmvps.com/blogs/vstsblog/Image_2D0014.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Web layout&lt;/strong&gt; in Team System Web Access doesn’t show the control, but instead it displays the regular field control. Not nice, but usable – and much better than the initial error message we had.&lt;/p&gt;
&lt;p dir="ltr" style="MARGIN-RIGHT:0px;"&gt;&lt;img alt="Regular work item field control in the web" src="http://msmvps.com/blogs/vstsblog/Image_2D0012.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;[1] &lt;a href="http://msmvps.com/blogs/vstsblog/archive/2007/07/07/starting-using-custom-work-item-controls.aspx"&gt;http://msmvps.com/blogs/vstsblog/archive/2007/07/07/starting-using-custom-work-item-controls.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[2] &lt;a href="http://msmvps.com/blogs/vstsblog/archive/2007/08/27/free-add-on-team-system-web-access-tswa-power-tool-by-microsoft.aspx"&gt;http://msmvps.com/blogs/vstsblog/archive/2007/08/27/free-add-on-team-system-web-access-tswa-power-tool-by-microsoft.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1146041" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Team+Foundation+Server+_2800_TFS_2900_/default.aspx">Team Foundation Server (TFS)</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+Work+Item+Tracking/default.aspx">TFS Work Item Tracking</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Tips+and+Tricks/default.aspx">Tips and Tricks</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+2005/default.aspx">TFS 2005</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+Server+Management/default.aspx">TFS Server Management</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Team+System+Web+Access+_2800_TSWA_2900_/default.aspx">Team System Web Access (TSWA)</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+Process+Customization/default.aspx">TFS Process Customization</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Work+Item+Customization/default.aspx">Work Item Customization</category></item><item><title>Getting started using Custom Work Item Controls</title><link>http://msmvps.com/blogs/vstsblog/archive/2007/07/07/starting-using-custom-work-item-controls.aspx</link><pubDate>Sat, 07 Jul 2007 15:26:44 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1007375</guid><dc:creator>neno</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/vstsblog/rsscomments.aspx?PostID=1007375</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/vstsblog/commentapi.aspx?PostID=1007375</wfw:comment><comments>http://msmvps.com/blogs/vstsblog/archive/2007/07/07/starting-using-custom-work-item-controls.aspx#comments</comments><description>&lt;p&gt;Since Service Pack 1&amp;nbsp;[1]&amp;nbsp;we have the ability to create our own controls to display field value within a work item form which gives us great flexibility.&lt;/p&gt;
&lt;p dir="ltr" style="MARGIN-RIGHT:0px;"&gt;However there are &lt;strong&gt;two caveats &lt;/strong&gt;with custom work item controls right now that aren&amp;rsquo;t solved:&lt;/p&gt;
&lt;p dir="ltr" style="MARGIN-RIGHT:0px;"&gt;
&lt;ul&gt;
&lt;li&gt;They do not work with Web Access [2] so it&amp;rsquo;s not a choice for people that heavily rely on the web client.&lt;/li&gt;
&lt;li&gt;They need to be deployed to the machine of every user accessing TFS.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;Setting the stage&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;As an first realistic example we could make the priority field a little prettier. I mean the allowed values &amp;ldquo;1&amp;rdquo;, &amp;ldquo;2&amp;rdquo;, and &amp;ldquo;3&amp;rdquo; are not very descriptive. We don&amp;rsquo;t want to create a new field or change the values since we used this field already. So the solution would be to create a custom work item control on top of the existing values that displays something else.&lt;/p&gt;
&lt;p&gt;I plan to create a new control that has a combobox on it and will display something nicer than the real values that are stored in the database. The complete source code is attached for reference.&lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;1. Create the Work Item Control&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;A custom work item control is essentially a regular Windows Forms control. It has to derive from &lt;strong&gt;Control&lt;/strong&gt; and implement &lt;strong&gt;IWorkItemControl&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The loading takes place in &lt;strong&gt;IWorkItemControl.InvalidateDatasource&lt;/strong&gt;, the saving in &lt;strong&gt;IWorkItemControl.FlushToDatasource&lt;/strong&gt;. The &lt;strong&gt;bold&lt;/strong&gt; code indicates peaces that were necessary to implement my wishes. The rest is infrastructure and is repeated for every control you&amp;rsquo;ll write.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the code:&lt;/p&gt;
&lt;blockquote&gt;&lt;pre&gt;using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using Microsoft.TeamFoundation.WorkItemTracking.Controls;
using Microsoft.TeamFoundation.WorkItemTracking.Client;

namespace TeamSystemPro.Samples.WorkItemControls
{
    /// 
    /// Work Item Control for displaying the priority (can be 1,2, or 3 in MSF) in a more descriptive way then just showing the numbers.
    /// 
    /// 
    /// Custom controls need to derive from Control.
    /// Typically custom controls are built from UserControl.
    /// The control needs to implement IWorkItemControl.
    /// This is defined in Microsoft.TeamFoundation.WorkItemTracking.Controls.dll assembly that can be found from VS installation folder, typically &amp;quot;:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies&amp;quot;.
    /// Add reference to that assembly and line &amp;quot;using Microsoft.TeamFoundation.WorkItemTracking.Controls;&amp;quot; in code.  
    /// How it works:
    ///   After the control is loaded, a reference to work item is passed to the control using IWorkItemControl.WorkItemDatasource property.
    ///   The control is asked to display its data using IWorkItemControl.InvalidateDatasource method.
    ///   The control is required to update any values directly in WorkItem object itself when user changes data. 
    /// 
    public partial class PriorityControl : UserControl, IWorkItemControl
    {
        private WorkItem workItem;
        private string workItemFieldName;
        private IServiceProvider serviceProvider;
        private System.Collections.Specialized.StringDictionary properties;
        private bool readOnly = false;

        public PriorityControl()
        {
            InitializeComponent();
        }

        #region IWorkItemControl Members

        /// 
        /// Raise this events before updating WorkItem object with values. When value is changed by a control, work item form asks all controls (except current control) to refresh their display values (by calling InvalidateDatasource) in case if affects other controls 
        /// 
        public event EventHandler BeforeUpdateDatasource;

        /// 
        /// Raise this event after updating WorkItem object with values. When value is changed by a control, work item form asks all controls (except current control) to refresh their display values (by calling InvalidateDatasource) in case if affects other controls 
        /// 
        public event EventHandler AfterUpdateDatasource;

        /// 
        /// Control is asked to clear its contents
        /// 
        void IWorkItemControl.Clear()
        {
            &lt;strong&gt;cboPriorities.SelectedIndex = -1;&lt;/strong&gt;
        }

        /// 
        /// Control is requested to flush any data to workitem object. This usually happens during save operation or when the form is left. In most cases data will be written to workitem immediately on change and hence this will not need implementation. Some customers want a way to do operations during save, and this is the closest thing we got. If you do need a way to react to before-save &amp;amp; after-save events, pls let us know in forums given below and we&amp;#39;ll consider for future revision.
        /// 
        void IWorkItemControl.FlushToDatasource()
        {
            this.BeforeUpdateDatasource(this, EventArgs.Empty);
            &lt;strong&gt;workItem.Fields[workItemFieldName].Value = Convert.ToString(cboPriorities.SelectedIndex + 1);&lt;/strong&gt;
            this.AfterUpdateDatasource(this, EventArgs.Empty);
        }

        /// 
        /// Asks control to invalidate the contents and redraw. At this point, control can read from work item object and display/refresh data.
        /// 
        void IWorkItemControl.InvalidateDatasource()
        {
            if (IsInitialized())
            {
                &lt;strong&gt;int currentValue = (int)workItem.Fields[workItemFieldName].Value;
                cboPriorities.SelectedIndex = currentValue - 1;&lt;/strong&gt;
            }
        }

        /// 
        /// A property bag of all attributes specified in work item form xml for this control. Custom attributes are allowed and can be used to pass parameters specific for this control from work item type xml.
        /// 
        System.Collections.Specialized.StringDictionary IWorkItemControl.Properties
        {
            get { return properties; }
            set { properties = value; }
        }

        /// 
        /// Tells the control to display in readonly mode.
        /// 
        bool IWorkItemControl.ReadOnly
        {
            get { return readOnly; }
            set { readOnly = value; OnReadOnlyChanged(); }&lt;br /&gt;        }

        /// 
        /// Gives pointer to IServiceProvider if you intended to access Document service or VS Services. If services are not needed, do nothing in this method.
        /// 
        /// 
        void IWorkItemControl.SetSite(IServiceProvider serviceProvider)
        {
            this.serviceProvider = serviceProvider; 
        }

        /// 
        /// This passes reference to source work item object. Cast this object to WorkItem type.
        /// 
        object IWorkItemControl.WorkItemDatasource
        {
            get { return workItem; }
            set { workItem = value as WorkItem;  }
        }

        /// 
        /// The field name if the control is associated with a field name in work item form xml. A custom control can be associated with 0 or 1 work item field.
        /// 
        string IWorkItemControl.WorkItemFieldName
        {
            get { return workItemFieldName; }
            set { workItemFieldName = value; }
        }

        #endregion

        private bool IsInitialized()
        {
             return (!this.IsDisposed &amp;amp;&amp;amp;
                 workItem != null &amp;amp;&amp;amp;
                 !string.IsNullOrEmpty(workItemFieldName) &amp;amp;&amp;amp;
                 workItem.Fields.Contains(workItemFieldName));
        }

        private void OnReadOnlyChanged()
        {
            &lt;strong&gt;cboPriorities.Enabled = !readOnly;&lt;/strong&gt;
        }
    }
}&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;Additionally you need to create an XML file with the .wicc extensions which contains the name of your assembly file as well as the full-qualified name (i.e. namespace&amp;nbsp;and classname) of your control class:&lt;/p&gt;
&lt;p&gt;&lt;img alt="CustomWorkItemControls5" src="http://msmvps.com/blogs/vstsblog/CustomWorkItemControls5.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;So you have your control as well as the .wicc-file (which is necessary for registration):&lt;/p&gt;
&lt;p&gt;&lt;img alt="CustomWorkItemControls2" src="http://msmvps.com/blogs/vstsblog/CustomWorkItemControls2.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;2. Deploy the Work Item Control&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Although you could simply copy the two files (.dll and .wicc) to the &amp;ldquo;Microsoft\Team Foundation\Work Item Tracking\Custom Controls&amp;rdquo; under Environment.SpecialFolder.CommonApplicationData (we could also use the folder unter then under Environment.SpecialFolder.LocalApplicationData), but I decided to create a new MSI setup with Visual Studio which might look like this:&lt;/p&gt;
&lt;p&gt;&lt;img alt="CustomWorkItemControls3" src="http://msmvps.com/blogs/vstsblog/CustomWorkItemControls3.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;3. Reference the new control in a Work Item Type&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;After the control is deployed just change the type attribute for the control in the work item type XML. The Type should reference the name of the .wicc-file.&lt;/p&gt;
&lt;p&gt;&lt;img alt="CustomWorkItemControls4" src="http://msmvps.com/blogs/vstsblog/CustomWorkItemControls4.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Now you can import your modified work item type XML (you need to use witimport as the Process Template Editor does not support custom controls right now), refresh the cache by right-clicking the Work Items node in Team Explorer and press &amp;ldquo;Refresh&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;&lt;img alt="CustomWorkItemControls1" src="http://msmvps.com/blogs/vstsblog/CustomWorkItemControls1.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Further recommended reading:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How to use Custom Controls in Work Item Form [3]&lt;/li&gt;
&lt;li&gt;Communicating between custom controls: Building parent/child controls [4]&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Enjoy increasing your Work Item UI experience through custom controls!&lt;/p&gt;
&lt;p&gt;-Neno&lt;/p&gt;
&lt;p&gt;[1] &lt;a href="http://msmvps.com/blogs/vstsblog/archive/2006/12/15/download-visual-studio-2005-team-suite-team-foundation-server-service-pack-1-sp1.aspx"&gt;http://msmvps.com/blogs/vstsblog/archive/2006/12/15/download-visual-studio-2005-team-suite-team-foundation-server-service-pack-1-sp1.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[2] &lt;a href="http://www.devbiz.com/"&gt;http://www.devbiz.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[3] &lt;a href="http://blogs.msdn.com/narend/archive/2006/10/02/How-to-use-Custom-Controls-in-Work-Item-Form.aspx"&gt;http://blogs.msdn.com/narend/archive/2006/10/02/How-to-use-Custom-Controls-in-Work-Item-Form.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[4] &lt;a href="http://blogs.msdn.com/narend/archive/2006/10/19/communicating-between-custom-controls-building-parent-child-controls.aspx"&gt;http://blogs.msdn.com/narend/archive/2006/10/19/communicating-between-custom-controls-building-parent-child-controls.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/blogs/vstsblog/WorkItemCustomControlDemo.zip"&gt;File Attachment: WorkItemCustomControlDemo.zip (25 KB)&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1007375" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/For+Project+Managers/default.aspx">For Project Managers</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Team+Foundation+Server+_2800_TFS_2900_/default.aspx">Team Foundation Server (TFS)</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+Extensibility/default.aspx">TFS Extensibility</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+Work+Item+Tracking/default.aspx">TFS Work Item Tracking</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Tips+and+Tricks/default.aspx">Tips and Tricks</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+2005/default.aspx">TFS 2005</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+Process+Customization/default.aspx">TFS Process Customization</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Work+Item+Customization/default.aspx">Work Item Customization</category></item><item><title>Undocumented attributes for controlling the Work Item form layout</title><link>http://msmvps.com/blogs/vstsblog/archive/2007/07/07/undocumented-attributes-for-controlling-the-work-item-form-layout.aspx</link><pubDate>Sat, 07 Jul 2007 14:42:40 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1007272</guid><dc:creator>neno</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/vstsblog/rsscomments.aspx?PostID=1007272</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/vstsblog/commentapi.aspx?PostID=1007272</wfw:comment><comments>http://msmvps.com/blogs/vstsblog/archive/2007/07/07/undocumented-attributes-for-controlling-the-work-item-form-layout.aspx#comments</comments><description>&lt;p&gt;Naren [1] revealed a few very interesting on hidden attributes&amp;nbsp;his blog&amp;nbsp;[2] which you definitely should take a look at since they let you solve some problems as the following ones:&lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;Control the height of two text boxes that were placed vertically on&amp;nbsp;one tab&lt;/font&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;When placing more than one text box on a tab page you will notice that all text boxes have the same height except the last one which can be annoying if you use HTML and expect the writer to write a lot.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Undocumented3" src="http://msmvps.com/blogs/vstsblog/Undocumented3.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Using the &amp;ldquo;MinimumSize&amp;rdquo; attribute in the Work Item Type XML you can specify the minimum width and height that the control has to have.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/blogs/vstsblog/Undocumented5.png"&gt;&lt;img alt="Undocumented5" src="http://msmvps.com/blogs/vstsblog/Undocumented5.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Resulting in a much more nice looking writing experience:&lt;/p&gt;
&lt;p dir="ltr"&gt;&lt;img alt="Undocumented4" src="http://msmvps.com/blogs/vstsblog/Undocumented4.png" border="0" /&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;font size="4"&gt;Show the same field twice in different places&lt;/font&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Sometimes it makes sense to place the same field on two places for example in the general area as well as on a tab. If you do so you would get an error.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Undocumented8" src="http://msmvps.com/blogs/vstsblog/Undocumented8.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;You can use &amp;ldquo;Name&amp;rdquo; attributes with different values to allow the field to be displayed multiple times.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Undocumented6" src="http://msmvps.com/blogs/vstsblog/Undocumented6.png" border="0" /&gt;&lt;br /&gt;&lt;img alt="Undocumented7" src="http://msmvps.com/blogs/vstsblog/Undocumented7.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;This leads to the desired effect. Note that if you enter something in the one field it will automatically appear in the other text field after leaving the control.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Undocumented1" src="http://msmvps.com/blogs/vstsblog/Undocumented1.png" border="0" /&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;So here&amp;rsquo;s the background by Naren. A must read for people customizing Work Item types:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;span style="COLOR:gray;mso-themecolor:background1;mso-themeshade:128;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&amp;lt;Control FieldName=&amp;quot;control name&amp;quot; Type=&amp;quot;FieldControl | DateTimeControl | HtmlFieldControl | LinksControl | AttachmentsControl | WorkItemClassificationControl | WorkItemLogControl&amp;quot; Label=&amp;quot;label text&amp;quot; LabelPosition=&amp;quot;Top | Bottom | Left | Right&amp;quot; Dock=&amp;quot;Fill | Top | Bottom | Left | Right&amp;quot; Padding=&amp;quot;(left, top, right, bottom)&amp;quot; Margin=&amp;quot;(left, top, right, bottom)&amp;quot; ReadOnly=&amp;quot;True | False&amp;quot; /&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Attributes that weren&amp;rsquo;t documented: &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;MinimumSize&lt;/b&gt;: The minimum size the control should occupy in the form. If vertical space is not enough, then a scrollbar is shown to keep its minimum size. Without this attribute, the controls are drawn with their default sizes (unless controls in other tabs take larger space that incrasing whole tab&amp;rsquo;s size). The syntax for it&amp;#39;s value&amp;nbsp;is &amp;quot;(width,height)&amp;quot; (In regex format it is &amp;quot;^\(\d+\,\d+\)$&amp;quot;).&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;Name&lt;/b&gt;: If you want to add same field to be displayed in more than one place, it is possible but the Name attribute should be set to unique values for both &amp;ndash; so that the system identifies each control uniquely. It is useful to show same control in various places based on context of tabs.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;[Update: 3/12/07]&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Below are special attributes available for specific controls:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;&lt;strong&gt;NumberFormat&lt;/strong&gt; (for FieldControl only): Useful if a number value is displayed in the field. Possible values: WholeNumbers, SignedWholeNumbers, DecimalNumbers, SignedDecimalNumbers. Setting this attribute determines what characters are allowed to be entered in this control.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;&lt;strong&gt;MaxLength&lt;/strong&gt; (for FieldControl only): Maximum length of allowed characters for field control in form UI.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;&lt;strong&gt;Format&lt;/strong&gt; (for DateTimeControl only): One of values of &lt;a class="" href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformsdatetimepickerformatclasstopic.asp"&gt;DateTimePickerFormat enum&lt;/a&gt;. Possible values as given in help are: Long, Short, Time and Custom. Custom format can be set by having &amp;#39;Custom&amp;#39; as value for this attribute, and setting another attribute named &lt;strong&gt;CustomFormat&lt;/strong&gt; with actual custom format string.&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="MsoNormal" dir="ltr" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;[1] &lt;a href="http://blogs.msdn.com/narend/"&gt;http://blogs.msdn.com/narend/&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" dir="ltr" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" dir="ltr" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Calibri" size="3"&gt;[2] &lt;a href="http://blogs.msdn.com/narend/archive/2007/02/09/hidden-attributes-to-control-your-work-item-form-layout.aspx"&gt;http://blogs.msdn.com/narend/archive/2007/02/09/hidden-attributes-to-control-your-work-item-form-layout.aspx&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1007272" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/For+Project+Managers/default.aspx">For Project Managers</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Team+Foundation+Server+_2800_TFS_2900_/default.aspx">Team Foundation Server (TFS)</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+Work+Item+Tracking/default.aspx">TFS Work Item Tracking</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Tips+and+Tricks/default.aspx">Tips and Tricks</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+2005/default.aspx">TFS 2005</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/TFS+Process+Customization/default.aspx">TFS Process Customization</category><category domain="http://msmvps.com/blogs/vstsblog/archive/tags/Work+Item+Customization/default.aspx">Work Item Customization</category></item></channel></rss>