<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.martin.hinshelwood.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.martin.hinshelwood.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:image="http://purl.org/rss/1.0/modules/image/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
    <channel>
        <title>Team System</title>
        <link>http://blog.hinshelwood.com/category/6136.aspx</link>
        <description>Visual Studio Team System is a set of software development, collaboration, metrics, and reporting tools from Microsoft. The Visual Studio Team Editions were released in November 2005, and Team Foundation Server was released in March 2006.</description>
        <language>en-GB</language>
        <copyright>Martin Hinshelwood</copyright>
        <managingEditor>martin@hinshelwood.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
        <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.martin.hinshelwood.com/VisualStudioTeamSystem" type="application/rss+xml" /><item>
            <title>Learning more about Visual Studio 2008</title>
            <link>http://feeds.martin.hinshelwood.com/~r/VisualStudioTeamSystem/~3/504123859/learning-more-about-visual-studio-2008.aspx</link>
            <description>&lt;p&gt;Well, that's me well and truly back from my holidays, a nice relaxing couple of weeks spent at home with my family. &lt;/p&gt;  &lt;p&gt;As a kind of New Years present, Microsoft has released a free learning initiative for those of you that are or will be using Visual Studio 2008. I am taking it myself as a way to make sure that I have not missed anything :)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://co1piltwb.partners.extranet.microsoft.com/mcoeredir/mcoeredirect.aspx?linkId=11116261&amp;amp;s1=c52571bc-82a5-1214-338d-1f00b6ec852f" target="_blank"&gt;Sign Up for the MSDN Ramp Up Program's Visual Studio 2008 Track&lt;/a&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:8db3dd36-6a45-4673-88db-c47ac89e0a0f" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Free" rel="tag"&gt;Free&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Free+Training" rel="tag"&gt;Free Training&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Visual+Studio+2008" rel="tag"&gt;Visual Studio 2008&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Team+System" rel="tag"&gt;Team System&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=128390"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=128390" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://blog.hinshelwood.com/aggbug/128390.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.martin.hinshelwood.com/~r/VisualStudioTeamSystem/~4/504123859" height="1" width="1"/&gt;</description>
            <dc:creator>Martin Hinshelwood</dc:creator>
            <guid isPermaLink="false">http://blog.hinshelwood.com/archive/2009/01/06/learning-more-about-visual-studio-2008.aspx</guid>
            <pubDate>Tue, 06 Jan 2009 08:16:03 GMT</pubDate>
            <wfw:comment>http://blog.hinshelwood.com/comments/128390.aspx</wfw:comment>
            <comments>http://blog.hinshelwood.com/archive/2009/01/06/learning-more-about-visual-studio-2008.aspx#feedback</comments>
            <wfw:commentRss>http://blog.hinshelwood.com/comments/commentRss/128390.aspx</wfw:commentRss>
            <trackback:ping>http://blog.hinshelwood.com/services/trackbacks/128390.aspx</trackback:ping>
        <feedburner:origLink>http://blog.hinshelwood.com/archive/2009/01/06/learning-more-about-visual-studio-2008.aspx</feedburner:origLink></item>
        <item>
            <title>Managing the &amp;ldquo;VSTS Developers&amp;rdquo; LinkedIn group.</title>
            <link>http://feeds.martin.hinshelwood.com/~r/VisualStudioTeamSystem/~3/485527186/managing-the-ldquovsts-developersrdquo-linkedin-group.aspx</link>
            <description>&lt;p&gt;&lt;a href="p://www.linkedin.com/e/gis/104499" target="_blank"&gt;&lt;img title="n2381079695_7151" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="137" alt="n2381079695_7151" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/eb4ca28d54bb_77F8/n2381079695_7151_3.jpg" width="204" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;After making sending a “Call to Action” to my fellow Team System MVP’s I have added two managers to the &lt;a href="p://www.linkedin.com/e/gis/104499" target="_blank"&gt;VSTS Developers&lt;/a&gt; group I started on LinkedIn.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="Ed Blankenship's MVP Profile" href="https://mvp.support.microsoft.com/profile/ed.blankenship" target="_blank"&gt;Ed Blankenship&lt;/a&gt; - [&lt;a title="Ed Blankenship's LinkedIn profile" href="http://www.linkedin.com/in/edblankenship" target="_blank"&gt;LinkedIn&lt;/a&gt;] [&lt;a title="Ed Blankenship's Blog" href="http://www.edsquared.com/" target="_blank"&gt;Blog&lt;/a&gt;] [&lt;a title="Ed Blankenship's Infragistics Blog" href="http://blogs.infragistics.com/blogs/eblankenship/" target="_blank"&gt;Company blog&lt;/a&gt;]&lt;/li&gt;    &lt;li&gt;&lt;a title="Michael Ruminer's MVP Profile" href="https://mvp.support.microsoft.com/profile=F0D2A3A2-D5D9-485A-95C2-25678D11FA0C" target="_blank"&gt;Michael Ruminer&lt;/a&gt; - [&lt;a title="Michael Ruminer's LinkedIn profile" href="http://www.linkedin.com/pub/3/42/794" target="_blank"&gt;LinkedIn&lt;/a&gt;] [&lt;a title="Michael Ruminer's Blog" href="http://manicprogrammer.com/cs/blogs/michaelruminer/" target="_blank"&gt;Blog&lt;/a&gt;] &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Thanks guys for giving up a little bit of your valuable time….&lt;/p&gt;  &lt;p&gt;Hopefully, this will give members more information and a faster response time to requests…&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:22f8206c-1669-4dba-a82b-46de94724232" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/VSTS" rel="tag"&gt;VSTS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Visual+Studio+Team+System" rel="tag"&gt;Visual Studio Team System&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TFS" rel="tag"&gt;TFS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Team+Foundation+Server" rel="tag"&gt;Team Foundation Server&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Team+System" rel="tag"&gt;Team System&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127899"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127899" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://blog.hinshelwood.com/aggbug/127899.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.martin.hinshelwood.com/~r/VisualStudioTeamSystem/~4/485527186" height="1" width="1"/&gt;</description>
            <dc:creator>Martin Hinshelwood</dc:creator>
            <guid isPermaLink="false">http://blog.hinshelwood.com/archive/2008/12/15/managing-the-ldquovsts-developersrdquo-linkedin-group.aspx</guid>
            <pubDate>Mon, 15 Dec 2008 11:51:12 GMT</pubDate>
            <wfw:comment>http://blog.hinshelwood.com/comments/127899.aspx</wfw:comment>
            <comments>http://blog.hinshelwood.com/archive/2008/12/15/managing-the-ldquovsts-developersrdquo-linkedin-group.aspx#feedback</comments>
            <wfw:commentRss>http://blog.hinshelwood.com/comments/commentRss/127899.aspx</wfw:commentRss>
            <trackback:ping>http://blog.hinshelwood.com/services/trackbacks/127899.aspx</trackback:ping>
        <feedburner:origLink>http://blog.hinshelwood.com/archive/2008/12/15/managing-the-ldquovsts-developersrdquo-linkedin-group.aspx</feedburner:origLink></item>
        <item>
            <title>TFS Event Handler v1.3 released</title>
            <link>http://feeds.martin.hinshelwood.com/~r/VisualStudioTeamSystem/~3/473135749/tfs-event-handler-v1.3-released.aspx</link>
            <description>&lt;p&gt;Updated and improved for Team System 2008.&lt;/p&gt;  &lt;p&gt;&lt;a href="file:///C:/Users/martihins/AppData/Local/Temp/WindowsLiveWriter1286139640/supfiles13CE4A31/vsts2.png"&gt;&lt;img title="vsts_thumb[2]" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="149" alt="vsts_thumb[2]" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/TFSEventHandlerv1.3released_9AE8/vsts_thumb%5B2%5D_6100a52c-c24a-4e2b-83c5-24f5480efa90.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.codeplex.com/TFSEventHandler" href="http://www.codeplex.com/TFSEventHandler"&gt;http://www.codeplex.com/TFSEventHandler&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The TFS Event Handler makes it easier to notify users of changes to Work Items in Team Foundation Server. You will no longer need to add individual alerts to users. &lt;/p&gt;  &lt;p&gt;It is developed in .NET 3.5 SP1 for Team Foundation Server 2008 and is deployed as a system service.&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;I have added support for groups. If you add a TFS group into the Assigned To drop down all members of that group will receive notifications!&lt;/strong&gt;&lt;/font&gt; &lt;/p&gt;  &lt;p&gt;You will need to allow groups in your Assigned to list. Below is a snippet from me Bug work item type as it stands at the moment.&lt;/p&gt;  &lt;div class="csharpcode-wrapper"&gt;   &lt;div class="csharpcode"&gt;     &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;FIELD&lt;/span&gt; &lt;span class="attr"&gt;reportable&lt;/span&gt;&lt;span class="kwrd"&gt;="dimension"&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="String"&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="Assigned To"&lt;/span&gt; &lt;span class="attr"&gt;refname&lt;/span&gt;&lt;span class="kwrd"&gt;="System.AssignedTo"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   2:&lt;/span&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;HELPTEXT&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;The person assigned to act on the bug, either to fix it or to verify the fix&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;HELPTEXT&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:&lt;/span&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ALLOWEXISTINGVALUE&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   4:&lt;/span&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ALLOWEDVALUES&lt;/span&gt; &lt;span class="attr"&gt;filteritems&lt;/span&gt;&lt;span class="kwrd"&gt;="excludegroups"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;LISTITEM&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="[project]\Contributors"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   6:&lt;/span&gt;     &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ALLOWEDVALUES&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;FIELD&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;You can see on line 4 that there is a filter for excluding the groups from the list. If you are using &lt;a href="http://codeplex.com/tfseventhandler" target="_blank"&gt;TFS Event Handler&lt;/a&gt; v1.0 or v1.1 then you will need this line. If you install the new &lt;a href="http://codeplex.com/tfseventhandler" target="_blank"&gt;TFS Event Handler&lt;/a&gt; v1.3 then you will be able to remove that and start assigning work items to Groups. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Note: Although they will now get an email, the work item will not appear in their “My Work items” query. You may want to consider creating a Query for each Group.&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Alerts that you no longer need users to individually setup are:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;A work item is assigned to you, or a group you are a member of. &lt;/li&gt;

  &lt;li&gt;A work item that is assigned to you, or a group you are a member of is, reassigned to someone else. &lt;/li&gt;

  &lt;li&gt;A work item that you created is assigned to someone else, or a group. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font color="#ffffff"&gt;There is also a framework for &lt;a href="http://www.codeplex.com/TFSEventHandler/Wiki/View.aspx?title=TFS%20Event%20Handlers%20v1.0&amp;amp;referringTitle=Home" target="_blank"&gt;creating and deploying your own event handlers&lt;/a&gt; that can do pretty much whatever you want. One of the shipped examples updates “Heat ITSM” whenever a work item that contains a Heat Id is changed.&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;/p&gt;

&lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:68da69b3-551e-4942-a33a-cdc5437bae90" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/TFS" rel="tag"&gt;TFS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/VSTS" rel="tag"&gt;VSTS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Team+System" rel="tag"&gt;Team System&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Team+Foundation+Server" rel="tag"&gt;Team Foundation Server&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Visual+Studio+Team+System" rel="tag"&gt;Visual Studio Team System&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TFS+Event+Handler" rel="tag"&gt;TFS Event Handler&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127514"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127514" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://blog.hinshelwood.com/aggbug/127514.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.martin.hinshelwood.com/~r/VisualStudioTeamSystem/~4/473135749" height="1" width="1"/&gt;</description>
            <dc:creator>Martin Hinshelwood</dc:creator>
            <guid isPermaLink="false">http://blog.hinshelwood.com/archive/2008/12/02/tfs-event-handler-v1.3-released.aspx</guid>
            <pubDate>Tue, 02 Dec 2008 11:08:37 GMT</pubDate>
            <wfw:comment>http://blog.hinshelwood.com/comments/127514.aspx</wfw:comment>
            <comments>http://blog.hinshelwood.com/archive/2008/12/02/tfs-event-handler-v1.3-released.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://blog.hinshelwood.com/comments/commentRss/127514.aspx</wfw:commentRss>
            <trackback:ping>http://blog.hinshelwood.com/services/trackbacks/127514.aspx</trackback:ping>
        <feedburner:origLink>http://blog.hinshelwood.com/archive/2008/12/02/tfs-event-handler-v1.3-released.aspx</feedburner:origLink></item>
        <item>
            <title>Retrieving an identity from Team Foundation Server using only the display name</title>
            <link>http://feeds.martin.hinshelwood.com/~r/VisualStudioTeamSystem/~3/471985470/retrieving-an-identity-from-team-foundation-server-using-only-the.aspx</link>
            <description>&lt;p&gt;This is a lot harder than it sounds. At first you think there will be a built in option with the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.server.igroupsecurityservice.readidentities.aspx" target="_blank"&gt;Read Identities&lt;/a&gt; method on the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.server.igroupsecurityservice.aspx"&gt;IGroupSecurityService&lt;/a&gt; Interface, but you would be wrong!&lt;/p&gt;  &lt;p&gt;When capturing an event from Team Foundation Server you have access to a lot of information about the change, including the Display Name of the fields for Assigned To and Changed By.&lt;/p&gt;  &lt;p&gt;But what if you allow Work Items to be assigned to groups! First, lets achieve that. Create a group called “Program Management” on a project and add it into the “Contributors” list. We have a group for each of the advocacy groups in the CMMI process.&lt;/p&gt;  &lt;p&gt;Edit your “Task” work item definition (you can use the power tools process editor or just edit the XML) and alter the Assigned To field to be the following:&lt;/p&gt;  &lt;div class="csharpcode-wrapper"&gt;   &lt;div class="csharpcode"&gt;     &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:&lt;/span&gt; &amp;lt;FIELD reportable=&lt;span class="str"&gt;"dimension"&lt;/span&gt; type=&lt;span class="str"&gt;"String"&lt;/span&gt; name=&lt;span class="str"&gt;"Assigned To"&lt;/span&gt; rename=&lt;span class="str"&gt;"System.AssignedTo"&lt;/span&gt;&amp;gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   2:&lt;/span&gt;   &amp;lt;ALLOWEXISTINGVALUE /&amp;gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:&lt;/span&gt;   &amp;lt;ALLOWEDVALUES&amp;gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   4:&lt;/span&gt;     &amp;lt;LISTITEM &lt;span class="kwrd"&gt;value&lt;/span&gt;=&lt;span class="str"&gt;"[project]\Contributors"&lt;/span&gt; /&amp;gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:&lt;/span&gt;   &amp;lt;/ALLOWEDVALUES&amp;gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   6:&lt;/span&gt; &amp;lt;/FIELD&amp;gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Once you have updated your project you should be able to see all of the users as well as this new group displayed. If you were to assign a task to this group, how would you email everyone in that group so that they know they have been assigned something at all?&lt;/p&gt;

&lt;p&gt;Well this needs a wee tweak of the &lt;a href="http://codeplex.com/tfseventhandler" target="_blank"&gt;TFS Event Handler&lt;/a&gt;  to handle this, I will be releasing the full in place code with the TFS Event Handler v1.3 drop, but you can download my little test app I used to get it all working.&lt;/p&gt;

&lt;p&gt;[&lt;a title="Download TFS Identity Retreval Test Source" href="http://cid-57599e234f1ebc1c.skydrive.live.com/embedrowdetail.aspx/Public/CodeDrop/TFS%20Identity%20Retreval%20Test.rar" target="_blank"&gt;Download Project&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;You can enter a display name of either a user or a group. And here is how it is done:&lt;/p&gt;

&lt;p&gt;There is a little but of Active Directory lookup using a little method called GetUsername&lt;/p&gt;

&lt;div class="csharpcode-wrapper"&gt;
  &lt;div class="csharpcode"&gt;
    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="rem"&gt;'' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   2:&lt;/span&gt; &lt;span class="rem"&gt;'' Retrieves a user's email address from Active Directory based on their display name&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:&lt;/span&gt; &lt;span class="rem"&gt;'' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   4:&lt;/span&gt; &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Shared&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; GetUsername(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; userDisplayName &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;) &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:&lt;/span&gt;     &lt;span class="kwrd"&gt;Dim&lt;/span&gt; ds &lt;span class="kwrd"&gt;As&lt;/span&gt; DirectoryServices.DirectorySearcher = &lt;span class="kwrd"&gt;New&lt;/span&gt; DirectoryServices.DirectorySearcher()&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   6:&lt;/span&gt;     ds.PropertiesToLoad.Add(&lt;span class="str"&gt;"sAMAccountName"&lt;/span&gt;)&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:&lt;/span&gt;     ds.Filter = &lt;span class="kwrd"&gt;String&lt;/span&gt;.Format(&lt;span class="str"&gt;"(&amp;amp;(displayName={0})(objectCategory=person)((objectClass=user)))"&lt;/span&gt;, userDisplayName)&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   8:&lt;/span&gt;  &lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:&lt;/span&gt;     &lt;span class="kwrd"&gt;Dim&lt;/span&gt; results &lt;span class="kwrd"&gt;As&lt;/span&gt; DirectoryServices.SearchResultCollection = ds.FindAll()&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  10:&lt;/span&gt;     &lt;span class="kwrd"&gt;If&lt;/span&gt; results.Count = 0 &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:&lt;/span&gt;         &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;.Empty&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  12:&lt;/span&gt;     &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:&lt;/span&gt;     &lt;span class="kwrd"&gt;Dim&lt;/span&gt; values &lt;span class="kwrd"&gt;As&lt;/span&gt; DirectoryServices.ResultPropertyValueCollection = results(0).Properties(&lt;span class="str"&gt;"sAMAccountName"&lt;/span&gt;)&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  14:&lt;/span&gt;     &lt;span class="kwrd"&gt;If&lt;/span&gt; values.Count = 0 &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:&lt;/span&gt;         &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;.Empty&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  16:&lt;/span&gt;     &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:&lt;/span&gt;     &lt;span class="kwrd"&gt;Return&lt;/span&gt; values(0).ToString()&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  18:&lt;/span&gt; &lt;span class="kwrd"&gt;End&lt;/span&gt; Function&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;font color="#e7e7e7"&gt;This retrieves the users sAMAccountName (or username) from Active Directory. Easy enough, and I already had it kicking about…&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;But in order to retrieve an identity that you are not sure is a group or a user, you will need to try to get the Group Identity first. This is because it is faster to wade through a maximum of 20 groups than potentially hundreds of users &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/tfsworkitemtracking/thread/413bd663-707b-41af-83c7-c92015b0f80f/" target="_blank"&gt;mentioned on the MSDN Forum&lt;/a&gt; answer below.&lt;/p&gt;

&lt;div class="csharpcode-wrapper"&gt;
  &lt;div class="csharpcode"&gt;
    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;Try&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   2:&lt;/span&gt;            &lt;span class="rem"&gt;'----------------------------------------&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:&lt;/span&gt;            &lt;span class="kwrd"&gt;Dim&lt;/span&gt; svr &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; TeamFoundationServer(&lt;span class="kwrd"&gt;Me&lt;/span&gt;.uxTeamServer.Text)&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   4:&lt;/span&gt;            &lt;span class="kwrd"&gt;Dim&lt;/span&gt; GroupSecurityService &lt;span class="kwrd"&gt;As&lt;/span&gt; IGroupSecurityService = &lt;span class="kwrd"&gt;CType&lt;/span&gt;(svr.GetService(&lt;span class="kwrd"&gt;GetType&lt;/span&gt;(IGroupSecurityService)), IGroupSecurityService)&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:&lt;/span&gt;            &lt;span class="rem"&gt;'----------------------------------------&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   6:&lt;/span&gt;            &lt;span class="kwrd"&gt;Dim&lt;/span&gt; CommonStructureService &lt;span class="kwrd"&gt;As&lt;/span&gt; ICommonStructureService = &lt;span class="kwrd"&gt;CType&lt;/span&gt;(svr.GetService(&lt;span class="kwrd"&gt;GetType&lt;/span&gt;(ICommonStructureService)), ICommonStructureService)&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:&lt;/span&gt;            &lt;span class="rem"&gt;'----------------------------------------&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   8:&lt;/span&gt;            &lt;span class="rem"&gt;' Return App Group if you can&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:&lt;/span&gt;            &lt;span class="kwrd"&gt;Dim&lt;/span&gt; pi &lt;span class="kwrd"&gt;As&lt;/span&gt; ProjectInfo = m_CommonStructureService.GetProjectFromName(&lt;span class="kwrd"&gt;Me&lt;/span&gt;.uxProject.Text)&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  10:&lt;/span&gt;            &lt;span class="kwrd"&gt;Dim&lt;/span&gt; appGroup &lt;span class="kwrd"&gt;As&lt;/span&gt; Identity = (From i &lt;span class="kwrd"&gt;In&lt;/span&gt; m_GroupSecurityService.ListApplicationGroups(pi.Uri) Where i.DisplayName = &lt;span class="kwrd"&gt;Me&lt;/span&gt;.uxDisplayName.Text).SingleOrDefault&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:&lt;/span&gt;            &lt;span class="kwrd"&gt;If&lt;/span&gt; &lt;span class="kwrd"&gt;Not&lt;/span&gt; appGroup &lt;span class="kwrd"&gt;Is&lt;/span&gt; &lt;span class="kwrd"&gt;Nothing&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  12:&lt;/span&gt;                appGroup = m_GroupSecurityService.ReadIdentity(SearchFactor.Sid, appGroup.Sid, QueryMembership.Expanded)&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:&lt;/span&gt;                WriteToLog(&lt;span class="kwrd"&gt;String&lt;/span&gt;.Format(&lt;span class="str"&gt;"Recieved identity for {0}"&lt;/span&gt;, &lt;span class="kwrd"&gt;Me&lt;/span&gt;.uxDisplayName.Text))&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  14:&lt;/span&gt;                WriteIdentity(appGroup)&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:&lt;/span&gt;                &lt;span class="kwrd"&gt;Exit&lt;/span&gt; &lt;span class="kwrd"&gt;Try&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  16:&lt;/span&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:&lt;/span&gt;            &lt;span class="rem"&gt;' Not app group. Then return user is you can&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  18:&lt;/span&gt;            &lt;span class="kwrd"&gt;Dim&lt;/span&gt; username &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; = GetUsername(&lt;span class="kwrd"&gt;Me&lt;/span&gt;.uxDisplayName.Text)&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:&lt;/span&gt;            &lt;span class="kwrd"&gt;Dim&lt;/span&gt; usrIdent &lt;span class="kwrd"&gt;As&lt;/span&gt; Identity = m_GroupSecurityService.ReadIdentity(SearchFactor.AccountName, username, QueryMembership.Expanded)&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  20:&lt;/span&gt;            &lt;span class="kwrd"&gt;If&lt;/span&gt; &lt;span class="kwrd"&gt;Not&lt;/span&gt; usrIdent &lt;span class="kwrd"&gt;Is&lt;/span&gt; &lt;span class="kwrd"&gt;Nothing&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:&lt;/span&gt;                WriteToLog(&lt;span class="kwrd"&gt;String&lt;/span&gt;.Format(&lt;span class="str"&gt;"Recieved identity for {0}"&lt;/span&gt;, username))&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  22:&lt;/span&gt;                WriteIdentity(usrIdent)&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:&lt;/span&gt;                &lt;span class="kwrd"&gt;Exit&lt;/span&gt; &lt;span class="kwrd"&gt;Try&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  24:&lt;/span&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:&lt;/span&gt;            &lt;span class="rem"&gt;'----------------------------------------&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  26:&lt;/span&gt;            WriteToLog(&lt;span class="kwrd"&gt;String&lt;/span&gt;.Format(&lt;span class="str"&gt;"identity for {0} not found"&lt;/span&gt;, &lt;span class="kwrd"&gt;Me&lt;/span&gt;.uxDisplayName.Text))&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:&lt;/span&gt;  &lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  28:&lt;/span&gt;            &lt;span class="rem"&gt;'----------------------------------------&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:&lt;/span&gt;        &lt;span class="kwrd"&gt;Catch&lt;/span&gt; ex &lt;span class="kwrd"&gt;As&lt;/span&gt; Exception&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  30:&lt;/span&gt;            &lt;span class="kwrd"&gt;Me&lt;/span&gt;.uxResults.Items.Add(ex.ToString)&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:&lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; Try&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;There is a lot going on here, but the first thing you need to do is retrieve the TFS objects that we will need to work with which include a &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.client.teamfoundationserver.aspx" target="_blank"&gt;TeamFoundationServer&lt;/a&gt; instance as well as an &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.server.igroupsecurityservice.aspx" target="_blank"&gt;IGroupSecurityService&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.server.icommonstructureservice.aspx" target="_blank"&gt;ICommonStructureService&lt;/a&gt;. You could use the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.workitemtracking.client.workitemstore.aspx" target="_blank"&gt;WorkItemStore&lt;/a&gt; instead of the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.server.icommonstructureservice.aspx" target="_blank"&gt;ICommonStructureService&lt;/a&gt;, but the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.workitemtracking.client.workitemstore.aspx" target="_blank"&gt;WorkItemStore&lt;/a&gt; has a heavy performance hit for retrieving an instance.&lt;/p&gt;

&lt;div class="csharpcode-wrapper"&gt;
  &lt;div class="csharpcode"&gt;
    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;Dim&lt;/span&gt; svr &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; TeamFoundationServer(&lt;span class="kwrd"&gt;Me&lt;/span&gt;.uxTeamServer.Text)&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   2:&lt;/span&gt; &lt;span class="kwrd"&gt;Dim&lt;/span&gt; GroupSecurityService &lt;span class="kwrd"&gt;As&lt;/span&gt; IGroupSecurityService = &lt;span class="kwrd"&gt;CType&lt;/span&gt;(svr.GetService(&lt;span class="kwrd"&gt;GetType&lt;/span&gt;(IGroupSecurityService)), IGroupSecurityService)&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:&lt;/span&gt; &lt;span class="kwrd"&gt;Dim&lt;/span&gt; CommonStructureService &lt;span class="kwrd"&gt;As&lt;/span&gt; ICommonStructureService = &lt;span class="kwrd"&gt;CType&lt;/span&gt;(svr.GetService(&lt;span class="kwrd"&gt;GetType&lt;/span&gt;(ICommonStructureService)), ICommonStructureService)&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Next we need to try and retrieve the Identity of the group, if it is one.  The ICommonStructureService  has a method for listing all of the Groups available within a project, but for that you need the project name which in the demo is just entered.&lt;/p&gt;

&lt;div class="csharpcode-wrapper"&gt;
  &lt;div class="csharpcode"&gt;
    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="rem"&gt;' Return App Group if you can&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   2:&lt;/span&gt; &lt;span class="kwrd"&gt;Dim&lt;/span&gt; pi &lt;span class="kwrd"&gt;As&lt;/span&gt; ProjectInfo = m_CommonStructureService.GetProjectFromName(&lt;span class="kwrd"&gt;Me&lt;/span&gt;.uxProject.Text)&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:&lt;/span&gt; &lt;span class="kwrd"&gt;Dim&lt;/span&gt; appGroup &lt;span class="kwrd"&gt;As&lt;/span&gt; Identity = (From i &lt;span class="kwrd"&gt;In&lt;/span&gt; m_GroupSecurityService.ListApplicationGroups(pi.Uri) Where i.DisplayName = &lt;span class="kwrd"&gt;Me&lt;/span&gt;.uxDisplayName.Text).SingleOrDefault&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   4:&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt; &lt;span class="kwrd"&gt;Not&lt;/span&gt; appGroup &lt;span class="kwrd"&gt;Is&lt;/span&gt; &lt;span class="kwrd"&gt;Nothing&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:&lt;/span&gt;   appGroup = m_GroupSecurityService.ReadIdentity(SearchFactor.Sid, appGroup.Sid, QueryMembership.Expanded)&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   6:&lt;/span&gt;   WriteToLog(&lt;span class="kwrd"&gt;String&lt;/span&gt;.Format(&lt;span class="str"&gt;"Recieved identity for {0}"&lt;/span&gt;, &lt;span class="kwrd"&gt;Me&lt;/span&gt;.uxDisplayName.Text))&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:&lt;/span&gt;   WriteIdentity(appGroup)&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   8:&lt;/span&gt;   &lt;span class="kwrd"&gt;Exit&lt;/span&gt; &lt;span class="kwrd"&gt;Try&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:&lt;/span&gt; &lt;span class="kwrd"&gt;End&lt;/span&gt; If&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;What this does is use the project name entered (in the event it is under the element ProtfolioProject (yea, I don’t know why it is called that either) to search a list of Group’s within your project for the one of interest. &lt;/p&gt;

&lt;p&gt;Then, as it does not by default load the “Members” and “MemberOf” arrays you need to call ReadIdentity with the Expand option is you want to list the Members, and I do.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/RetrievinganidentityfromTeamFoundationSe_E782/image_2.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="150" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/RetrievinganidentityfromTeamFoundationSe_E782/image_thumb.png" width="594" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;If this does not return an identity, then we need to look at the display name being a user account.&lt;/p&gt;

&lt;div class="csharpcode-wrapper"&gt;
  &lt;div class="csharpcode"&gt;
    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="rem"&gt;' Not app group. Then return user is you can&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   2:&lt;/span&gt; &lt;span class="kwrd"&gt;Dim&lt;/span&gt; username &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; = GetUsername(&lt;span class="kwrd"&gt;Me&lt;/span&gt;.uxDisplayName.Text)&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:&lt;/span&gt; &lt;span class="kwrd"&gt;Dim&lt;/span&gt; usrIdent &lt;span class="kwrd"&gt;As&lt;/span&gt; Identity = m_GroupSecurityService.ReadIdentity(SearchFactor.AccountName, username, QueryMembership.Expanded)&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   4:&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt; &lt;span class="kwrd"&gt;Not&lt;/span&gt; usrIdent &lt;span class="kwrd"&gt;Is&lt;/span&gt; &lt;span class="kwrd"&gt;Nothing&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:&lt;/span&gt;   WriteToLog(&lt;span class="kwrd"&gt;String&lt;/span&gt;.Format(&lt;span class="str"&gt;"Recieved identity for {0}"&lt;/span&gt;, username))&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   6:&lt;/span&gt;   WriteIdentity(usrIdent)&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:&lt;/span&gt;   &lt;span class="kwrd"&gt;Exit&lt;/span&gt; &lt;span class="kwrd"&gt;Try&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   8:&lt;/span&gt; &lt;span class="kwrd"&gt;End&lt;/span&gt; If&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Actually quite easy, but it could be easier.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Example WorkItemChangedEvent:&lt;/p&gt;

&lt;div class="csharpcode-wrapper"&gt;
  &lt;div class="csharpcode"&gt;
    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;="1.0"&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;="utf-8"&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   2:&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;WorkItemChangedEvent&lt;/span&gt; &lt;span class="attr"&gt;xmlns:xsi&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.w3.org/2001/XMLSchema-instance"&lt;/span&gt; &lt;span class="attr"&gt;xmlns:xsd&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.w3.org/2001/XMLSchema"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:&lt;/span&gt;   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;PortfolioProject&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;TFS Sticky Buddy&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;PortfolioProject&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   4:&lt;/span&gt;   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ProjectNodeId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;614c944e-7799-46a2-a519-30e68eea040b&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ProjectNodeId&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:&lt;/span&gt;   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;AreaPath&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;\TFS Sticky Buddy&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;AreaPath&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   6:&lt;/span&gt;   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;TFS Sticky Buddy Work Item Changed: Requirement 1267 - Visual Enhancement&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:&lt;/span&gt;   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;WorkItemTitle&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Mobility Continental Exceptions Report&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;WorkItemTitle&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   8:&lt;/span&gt;   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Subscriber&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;HINSHDOM\svc_tfsservices&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Subscriber&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:&lt;/span&gt;   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ChangerSid&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;S-1-5-21-1390067357-651377827-682003330-21716&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ChangerSid&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  10:&lt;/span&gt;   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;DisplayUrl&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;http://tfs01.hinshelwood.com:8080/workitemtracking/workitem.aspx?artifactmoniker=1267&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;DisplayUrl&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:&lt;/span&gt;   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TimeZone&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;GMT Standard Time&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TimeZone&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  12:&lt;/span&gt;   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TimeZoneOffset&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;00:00:00&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TimeZoneOffset&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:&lt;/span&gt;   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ChangeType&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Change&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ChangeType&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  14:&lt;/span&gt;   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;CoreFields&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:&lt;/span&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;IntegerFields&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  16:&lt;/span&gt;       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;ID&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  18:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ReferenceName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;System.Id&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ReferenceName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;OldValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1267&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;OldValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  20:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;NewValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1267&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;NewValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:&lt;/span&gt;       &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  22:&lt;/span&gt;       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Rev&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  24:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ReferenceName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;System.Rev&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ReferenceName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;OldValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;4&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;OldValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  26:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;NewValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;5&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;NewValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:&lt;/span&gt;       &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  28:&lt;/span&gt;       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;AreaID&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  30:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ReferenceName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;System.AreaId&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ReferenceName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;OldValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;551&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;OldValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  32:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;NewValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;551&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;NewValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:&lt;/span&gt;       &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  34:&lt;/span&gt;     &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;IntegerFields&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:&lt;/span&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;StringFields&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  36:&lt;/span&gt;       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Work Item Type&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  38:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ReferenceName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;System.WorkItemType&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ReferenceName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;OldValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Requirement&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;OldValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  40:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;NewValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Requirement&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;NewValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:&lt;/span&gt;       &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  42:&lt;/span&gt;       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Title&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  44:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ReferenceName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;System.Title&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ReferenceName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;OldValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Visual Enhancement&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;OldValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  46:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;NewValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Visual Enhancement&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;NewValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:&lt;/span&gt;       &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  48:&lt;/span&gt;       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  49:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Area Path&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  50:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ReferenceName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;System.AreaPath&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ReferenceName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  51:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;OldValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;\TFS Sticky Buddy&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;OldValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  52:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;NewValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;\TFS Sticky Buddy&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;NewValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  53:&lt;/span&gt;       &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  54:&lt;/span&gt;       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  55:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;State&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  56:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ReferenceName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;System.State&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ReferenceName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  57:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;OldValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Active&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;OldValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  58:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;NewValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Active&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;NewValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  59:&lt;/span&gt;       &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  60:&lt;/span&gt;       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  61:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Reason&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  62:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ReferenceName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;System.Reason&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ReferenceName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  63:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;OldValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Accepted&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;OldValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  64:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;NewValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Accepted&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;NewValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  65:&lt;/span&gt;       &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  66:&lt;/span&gt;       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  67:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Assigned To&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  68:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ReferenceName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;System.AssignedTo&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ReferenceName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  69:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;OldValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Mike Hunt&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;OldValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  70:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;NewValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Mike Hunt&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;NewValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  71:&lt;/span&gt;       &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  72:&lt;/span&gt;       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  73:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Changed By&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  74:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ReferenceName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;System.ChangedBy&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ReferenceName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  75:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;OldValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Martin Hinshelwood&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;OldValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  76:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;NewValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Mike Hunt&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;NewValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  77:&lt;/span&gt;       &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  78:&lt;/span&gt;       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  79:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Created By&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  80:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ReferenceName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;System.CreatedBy&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ReferenceName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  81:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;OldValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Mike Hunt&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;OldValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  82:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;NewValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Mike Hunt&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;NewValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  83:&lt;/span&gt;       &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  84:&lt;/span&gt;       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  85:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Changed Date&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  86:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ReferenceName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;System.ChangedDate&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ReferenceName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  87:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;OldValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;01/12/2008 16:05:21&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;OldValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  88:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;NewValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;02/12/2008 12:17:08&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;NewValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  89:&lt;/span&gt;       &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  90:&lt;/span&gt;       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  91:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Created Date&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  92:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ReferenceName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;System.CreatedDate&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ReferenceName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  93:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;OldValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;01/12/2008 13:51:22&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;OldValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  94:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;NewValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;01/12/2008 13:51:22&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;NewValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  95:&lt;/span&gt;       &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  96:&lt;/span&gt;       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  97:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Authorized As&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  98:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ReferenceName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;System.AuthorizedAs&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ReferenceName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  99:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;OldValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Martin Hinshelwood&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;OldValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt; 100:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;NewValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Mike Hunt&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;NewValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 101:&lt;/span&gt;       &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt; 102:&lt;/span&gt;       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 103:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Iteration Path&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt; 104:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ReferenceName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;System.IterationPath&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ReferenceName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 105:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;OldValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;\TFS Sticky Buddy\R4&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;OldValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt; 106:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;NewValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;\TFS Sticky Buddy\R4&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;NewValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 107:&lt;/span&gt;       &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt; 108:&lt;/span&gt;     &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;StringFields&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 109:&lt;/span&gt;   &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;CoreFields&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt; 110:&lt;/span&gt;   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ChangedFields&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 111:&lt;/span&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;IntegerFields&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt; 112:&lt;/span&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;StringFields&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 113:&lt;/span&gt;       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt; 114:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Changed By&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 115:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ReferenceName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;System.ChangedBy&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ReferenceName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt; 116:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;OldValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Martin Hinshelwood&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;OldValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 117:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;NewValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Mike Hunt&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;NewValue&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt; 118:&lt;/span&gt;       &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Field&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 119:&lt;/span&gt;     &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;StringFields&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt; 120:&lt;/span&gt;   &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ChangedFields&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 121:&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;WorkItemChangedEvent&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;And what did I have to use to figure this out?&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://peterblomqvist.blogspot.com/2007/08/retrieving-user-email-display-name-from.html"&gt;Blog: Retrieving user email &amp;amp; display name from Team Foundation Server&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.server.identity.displayname(VS.80).aspx" href="http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.server.identity.displayname.aspx"&gt;MSDN:  Team Foundation Server SDK: Identity.DisplayName Property&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmanning/archive/2007/02/26/making-sure-your-team-project-s-groups-only-contain-groups.aspx"&gt;Blog: Making sure your team project's groups only contain groups&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/tfsworkitemtracking/thread/413bd663-707b-41af-83c7-c92015b0f80f/"&gt;MSDN Forum: How to get user Identity having its display name?&lt;/a&gt; (How NOT to do it) &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.server.igroupsecurityservice.readidentities.aspx"&gt;MSDN: Reference for Team Foundation Server SDK: IGroupSecurityService.ReadIdentities Method&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/tfssetup/thread/5881306a-4e86-4428-8be0-3ba56e9be0ea/"&gt;MSDN Forum: How can I use ReadIdentity function in VSTS&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmanning/archive/2006/05/02/588648.aspx"&gt;Blog: how to list the users/groups the server knows about?&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;As you can see there was a lot of research, which does not include all the stuff I already know from doing the &lt;a href="http://codeplex.com/tfsstickybuddy" target="_blank"&gt;TFS Sticky Buddy&lt;/a&gt; and the &lt;a href="http://codeplex.com/tfseventhandler" target="_blank"&gt;TFS Event Handler&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;I think that this was an unnecessary complexity and there should be an additional option for the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.server.searchfactor.aspx" target="_blank"&gt;Search Factor&lt;/a&gt; enumeration should be added to make this easier.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127495"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127495" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://blog.hinshelwood.com/aggbug/127495.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.martin.hinshelwood.com/~r/VisualStudioTeamSystem/~4/471985470" height="1" width="1"/&gt;</description>
            <dc:creator>Martin Hinshelwood</dc:creator>
            <guid isPermaLink="false">http://blog.hinshelwood.com/archive/2008/12/01/retrieving-an-identity-from-team-foundation-server-using-only-the.aspx</guid>
            <pubDate>Mon, 01 Dec 2008 17:30:26 GMT</pubDate>
            <wfw:comment>http://blog.hinshelwood.com/comments/127495.aspx</wfw:comment>
            <comments>http://blog.hinshelwood.com/archive/2008/12/01/retrieving-an-identity-from-team-foundation-server-using-only-the.aspx#feedback</comments>
            <wfw:commentRss>http://blog.hinshelwood.com/comments/commentRss/127495.aspx</wfw:commentRss>
            <trackback:ping>http://blog.hinshelwood.com/services/trackbacks/127495.aspx</trackback:ping>
        <feedburner:origLink>http://blog.hinshelwood.com/archive/2008/12/01/retrieving-an-identity-from-team-foundation-server-using-only-the.aspx</feedburner:origLink></item>
        <item>
            <title>TFS Event Handler v1.1 released</title>
            <link>http://feeds.martin.hinshelwood.com/~r/VisualStudioTeamSystem/~3/468913735/tfs-event-handler-v1.1-released.aspx</link>
            <description>&lt;p&gt;Updated and improved for Team System 2008.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/TFSEventHandlerv1.1released_A3AE/vsts_2.png"&gt;&lt;img title="vsts" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="145" alt="vsts" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/TFSEventHandlerv1.1released_A3AE/vsts_thumb.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.codeplex.com/TFSEventHandler" href="http://www.codeplex.com/TFSEventHandler"&gt;http://www.codeplex.com/TFSEventHandler&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The &lt;a title="Team Foundation Server" href="http://msdn2.microsoft.com/en-us/teamsystem/aa718934.aspx" target="_blank"&gt;TFS&lt;/a&gt; Event Handler makes it easier to notify users of changes to Work Items in Team Foundation Server. You will no longer need to add individual alerts to users. &lt;/p&gt;  &lt;p&gt;It is developed in .NET 3.5 SP1 for Team Foundation Server 2008 and is deployed as a system service.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;The Alerts that you no longer need users to individually setup are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;A work item is assigned to you.&lt;/li&gt;    &lt;li&gt;A work item that is assigned to you is reassigned to someone else.&lt;/li&gt;    &lt;li&gt;A work item that you created is assigned to someone else.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#ffffff"&gt;There is also a framework for &lt;a href="http://www.codeplex.com/TFSEventHandler/Wiki/View.aspx?title=TFS%20Event%20Handlers%20v1.0&amp;amp;referringTitle=Home" target="_blank"&gt;creating and deploying your own event handlers&lt;/a&gt; that can do pretty much whatever you want. One of the shipped examples updates “Heat ITSM” whenever a work item that contains a Heat Id is changed.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:68da69b3-551e-4942-a33a-cdc5437bae90" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/TFS" rel="tag"&gt;TFS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/VSTS" rel="tag"&gt;VSTS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Team+System" rel="tag"&gt;Team System&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Team+Foundation+Server" rel="tag"&gt;Team Foundation Server&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Visual+Studio+Team+System" rel="tag"&gt;Visual Studio Team System&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TFS+Event+Handler" rel="tag"&gt;TFS Event Handler&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127431"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127431" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://blog.hinshelwood.com/aggbug/127431.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.martin.hinshelwood.com/~r/VisualStudioTeamSystem/~4/468913735" height="1" width="1"/&gt;</description>
            <dc:creator>Martin Hinshelwood</dc:creator>
            <guid isPermaLink="false">http://blog.hinshelwood.com/archive/2008/11/28/tfs-event-handler-v1.1-released.aspx</guid>
            <pubDate>Fri, 28 Nov 2008 11:38:25 GMT</pubDate>
            <wfw:comment>http://blog.hinshelwood.com/comments/127431.aspx</wfw:comment>
            <comments>http://blog.hinshelwood.com/archive/2008/11/28/tfs-event-handler-v1.1-released.aspx#feedback</comments>
            <wfw:commentRss>http://blog.hinshelwood.com/comments/commentRss/127431.aspx</wfw:commentRss>
            <trackback:ping>http://blog.hinshelwood.com/services/trackbacks/127431.aspx</trackback:ping>
        <feedburner:origLink>http://blog.hinshelwood.com/archive/2008/11/28/tfs-event-handler-v1.1-released.aspx</feedburner:origLink></item>
        <item>
            <title>Visual Studio Team System 2008 Database Edition GDR Installation</title>
            <link>http://feeds.martin.hinshelwood.com/~r/VisualStudioTeamSystem/~3/466807903/visual-studio-team-system-2008-database-edition-gdr-installation.aspx</link>
            <description>&lt;p&gt;First, download the new Data Dude. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Download page&lt;/strong&gt;       &lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=bb3ad767-5f69-4db9-b1c9-8f55759846ed&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=bb3ad767-5f69-4db9-b1c9-8f55759846ed&amp;amp;displaylang=en&lt;/a&gt;      &lt;br /&gt;&lt;strong&gt;Setup&lt;/strong&gt;       &lt;br /&gt;&lt;a href="http://download.microsoft.com/download/0/a/e/0ae1153a-8798-474a-93e6-d19299f37c8b/setup.exe"&gt;http://download.microsoft.com/download/0/a/e/0ae1153a-8798-474a-93e6-d19299f37c8b/setup.exe&lt;/a&gt; &lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;&lt;strong&gt;Read Me&lt;/strong&gt;         &lt;br /&gt;&lt;a href="http://download.microsoft.com/download/0/a/e/0ae1153a-8798-474a-93e6-d19299f37c8b/Readme.mht"&gt;http://download.microsoft.com/download/0/a/e/0ae1153a-8798-474a-93e6-d19299f37c8b/Readme.mht&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;strong&gt;Documentation:&lt;/strong&gt;         &lt;br /&gt;&lt;a href="http://download.microsoft.com/download/0/a/e/0ae1153a-8798-474a-93e6-d19299f37c8b/Documentation.zip"&gt;http://download.microsoft.com/download/0/a/e/0ae1153a-8798-474a-93e6-d19299f37c8b/Documentation.zip&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;p&gt;Once you get it going the install is pretty easy. Things to watch out for are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font color="#e7e7e7"&gt;Remove all previous versions before the install. This included any CTP or RC versions.&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font color="#e7e7e7"&gt;You will NOT be able to upgrade your projects built with the CTP releases! You should however be able to upgrade any projects built with the RC.&lt;/font&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt; &lt;/p&gt;  &lt;blockquote&gt;   &lt;h3&gt;Installation&lt;/h3&gt;    &lt;h4&gt;Uninstall old GDR versions&lt;/h4&gt;    &lt;p&gt;If you have a previous version of the GDR installed, you will have to uninstall these first. You can do this via Add/Remove Programs or from the command line using:&lt;/p&gt;    &lt;p&gt;· msiexec /X {DDF197C6-4507-3A19-A4B5-0E17CC931370}&lt;/p&gt;    &lt;h4&gt;Prerequisites&lt;/h4&gt;    &lt;p&gt;Before you start downloading and installing please check if the following pre-requisites are present on your machine!&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FBEE1648-7106-44A7-9649-6D9F6D58056E&amp;amp;displaylang=en"&gt;Visual Studio 2008 SP1 RTM&lt;/a&gt; (make sure this is the RTM not the beta of SP1, the GDR will not install with the beta release of SP1) &lt;/li&gt;      &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=dc614aee-7e1c-4881-9c32-3a6ce53384d9&amp;amp;displaylang=en"&gt;Microsoft SQL Server Compact Edition 3.5 SP1&lt;/a&gt; (this is normally included in the setup of VS 2008 SP1) &lt;/li&gt;   &lt;/ul&gt;    &lt;h4&gt;Installation&lt;/h4&gt;    &lt;p&gt;You can download the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=bb3ad767-5f69-4db9-b1c9-8f55759846ed&amp;amp;displaylang=en"&gt;Visual Studio Team System 2008 Database Edition GDR&lt;/a&gt; from the following location:&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;Setup        &lt;br /&gt;&lt;a href="http://download.microsoft.com/download/0/a/e/0ae1153a-8798-474a-93e6-d19299f37c8b/setup.exe"&gt;http://download.microsoft.com/download/0/a/e/0ae1153a-8798-474a-93e6-d19299f37c8b/setup.exe&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;Read Me        &lt;br /&gt;&lt;a href="http://download.microsoft.com/download/0/a/e/0ae1153a-8798-474a-93e6-d19299f37c8b/Readme.mht"&gt;http://download.microsoft.com/download/0/a/e/0ae1153a-8798-474a-93e6-d19299f37c8b/Readme.mht&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;Documentation:        &lt;br /&gt;&lt;a href="http://download.microsoft.com/download/0/a/e/0ae1153a-8798-474a-93e6-d19299f37c8b/Documentation.zip"&gt;http://download.microsoft.com/download/0/a/e/0ae1153a-8798-474a-93e6-d19299f37c8b/Documentation.zip&lt;/a&gt;        &lt;br /&gt;Contains: &lt;/li&gt;      &lt;ul&gt;       &lt;li&gt;&lt;a title="Visual Studio Team System" href="http://msdn2.microsoft.com/en-us/teamsystem/default.aspx" target="_blank"&gt;Visual Studio Team System&lt;/a&gt; 2008 Database Edition GDR User Manual &lt;/li&gt;        &lt;li&gt;&lt;a title="Visual Studio Team System" href="http://msdn2.microsoft.com/en-us/teamsystem/default.aspx" target="_blank"&gt;Visual Studio Team System&lt;/a&gt; 2008 Database Edition GDR API Reference&lt;/li&gt;     &lt;/ul&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Luckily I have just received a new install of Vista 64, so I have no previous versions to remove ;)&lt;/p&gt;  &lt;p&gt;Once the install if finished you will see that the GDR has replaced the standard Database Edition in visual studio.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/VisualStudioTeamSystem2008DatabaseEditio_967A/image_2.png"&gt;&lt;img title="About Visual Studio" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="296" alt="About Visual Studio" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/VisualStudioTeamSystem2008DatabaseEditio_967A/image_thumb.png" width="404" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;The “New Project” window will also have additional options and you can see the two new sort of project, “Database” and “Server”.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/VisualStudioTeamSystem2008DatabaseEditio_967A/image_4.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="276" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/VisualStudioTeamSystem2008DatabaseEditio_967A/image_thumb_1.png" width="404" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;If you pick the “Wizard” you will be presented with a set of options for your project creation. Loads of people have documented what these options mean, so I will just give you a flavor with a wee video…&lt;/p&gt;  &lt;p&gt;   &lt;/p&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:f9ab55cb-505f-4114-ad3d-7105d2992ec8" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;div id="de706df1-4278-467b-b6ef-9818ec56e69c" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://www.viddler.com/" target="_new"&gt;&lt;img src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/VisualStudioTeamSystem2008DatabaseEditio_967A/video6bc500745744.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('de706df1-4278-467b-b6ef-9818ec56e69c'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.viddler.com/player/973c986//\&amp;quot; width=\&amp;quot;437\&amp;quot; height=\&amp;quot;370\&amp;quot; wmode=\&amp;quot;transparent\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; allowScriptAccess=\&amp;quot;always\&amp;quot; allowFullScreen=\&amp;quot;true\&amp;quot; name=\&amp;quot;viddler_973c986/\&amp;quot; &amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;   &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Please be patient with my videos as I am just getting to grips with this.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:b5f6f3be-8fa4-4ad6-9e31-27becd147bb1" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/VSTS" rel="tag"&gt;VSTS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TFS" rel="tag"&gt;TFS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Team+System" rel="tag"&gt;Team System&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Visual+Studio+Team+System" rel="tag"&gt;Visual Studio Team System&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Database+Edition" rel="tag"&gt;Database Edition&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Visual+Studio+2008" rel="tag"&gt;Visual Studio 2008&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Visual+Studio+2005" rel="tag"&gt;Visual Studio 2005&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SQL+Server" rel="tag"&gt;SQL Server&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SQL+Server+2008" rel="tag"&gt;SQL Server 2008&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SQL+Server+2000" rel="tag"&gt;SQL Server 2000&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SQL+Server+2005" rel="tag"&gt;SQL Server 2005&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127398"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127398" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://blog.hinshelwood.com/aggbug/127398.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.martin.hinshelwood.com/~r/VisualStudioTeamSystem/~4/466807903" height="1" width="1"/&gt;</description>
            <dc:creator>Martin Hinshelwood</dc:creator>
            <guid isPermaLink="false">http://blog.hinshelwood.com/archive/2008/11/26/visual-studio-team-system-2008-database-edition-gdr-installation.aspx</guid>
            <pubDate>Wed, 26 Nov 2008 10:42:23 GMT</pubDate>
            <wfw:comment>http://blog.hinshelwood.com/comments/127398.aspx</wfw:comment>
            <comments>http://blog.hinshelwood.com/archive/2008/11/26/visual-studio-team-system-2008-database-edition-gdr-installation.aspx#feedback</comments>
            <wfw:commentRss>http://blog.hinshelwood.com/comments/commentRss/127398.aspx</wfw:commentRss>
            <trackback:ping>http://blog.hinshelwood.com/services/trackbacks/127398.aspx</trackback:ping>
        <feedburner:origLink>http://blog.hinshelwood.com/archive/2008/11/26/visual-studio-team-system-2008-database-edition-gdr-installation.aspx</feedburner:origLink></item>
        <item>
            <title>Visual Studio Team System 2008 Database Edition GDR has been released!</title>
            <link>http://feeds.martin.hinshelwood.com/~r/VisualStudioTeamSystem/~3/466807904/visual-studio-team-system-2008-database-edition-gdr-has-been.aspx</link>
            <description>&lt;p&gt;What a mouthful! Has there ever been any products with names as long as the Team System toolset ;), Maybe thats why it is just called &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=bb3ad767-5f69-4db9-b1c9-8f55759846ed&amp;amp;displaylang=en" target="_blank"&gt;Data Dude&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Anyway, congratulations to the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=bb3ad767-5f69-4db9-b1c9-8f55759846ed&amp;amp;displaylang=en" target="_blank"&gt;Data Dude&lt;/a&gt; team for this wonderful piece of work. I have been following the GDR for a while and I have been very impressed with the capabilities on offer.&lt;/p&gt;  &lt;p&gt;Although this is billed as a new release of &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=bb3ad767-5f69-4db9-b1c9-8f55759846ed&amp;amp;displaylang=en" target="_blank"&gt;Data Dude&lt;/a&gt;, it is really a completely new product with a brand new architecture. They have made many improvements to scalability, and they have added many extensibility  points (Microsoft speak for places where you can inject your own functionality).&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;h3&gt;Model based architecture&lt;/h3&gt;  &lt;p&gt;Everything underneath the covers is based on a true model representation of the SQL Server schema. This facilitates a true offline declarative database development system where the source code defines the shapes of the schema objects. &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;Database Schema Providers&lt;/strong&gt;&lt;/h3&gt;  &lt;p&gt;Models are implemented by &lt;strong&gt;Database Schema Providers&lt;/strong&gt;, DSP's for short. - The introduction of a provider model enables multiple things at once. First of all the decoupling of release vehicles. For example when SQL Server will release a new version or adds new functionality in a service pack, like they did in SQL Server 2005 SP2 when adding "vardecimal" support, we can simply update an existing provider or provide a new one in case of a new SQL Server release. Overtime we will go to a model where the SQL Server providers will be an integral part of the SQL Server release. The provider model is also a key extensibility point, allowing 3rd parties to extend database project ecosystem and add support for other database platforms in Visual Studio Team System 2010. &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;h3&gt;Tool extensibility&lt;/h3&gt;  &lt;p&gt;In this release external tool writers have full access to the T-SQL parsers (for SQL Server 2000, 2005 and 2008), the SQL Script DOM and the schema model (when inside Visual Studio). This adds on top of the ability to write extend the tools inside the platform. You can extend T-SQL refactoring by writing your own refactoring types (operations) and refactoring targets; add T-SQL Static Code Analysis rules, data generators, data distributions and test conditions. Database Projects (.dbproj) now provide a truly extensible declarative database development platform. &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;h3&gt;Separation of BUILD and DEPLOY&lt;/h3&gt;  &lt;p&gt;The separation of build &amp;amp; deploy makes it possible to deploy the output of your database project to many different targets and different points in time. Build now produces a single artifact file hat describes the schema inside your database, called a .DBSCHEMA file. This file is used by the deployment engine to deploy your schema. &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;Standalone Deployment Engine&lt;/strong&gt;.&lt;/h3&gt;  &lt;p&gt;The inclusion of a standalone and &lt;a href="http://blogs.msdn.com/gertd/archive/2008/08/22/redist.aspx"&gt;redistributable&lt;/a&gt; deployment engine makes it possible to deploy the output of your database projects (.DBSCHEMA files) to a target database without the need of having Visual Studio Team System Database Edition installed. This enables key scenarios like the inclusion of database schema deployment as part of your application installation. &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Get it now :)&lt;/p&gt;  &lt;h2&gt; &lt;/h2&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Download page&lt;/strong&gt;       &lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=bb3ad767-5f69-4db9-b1c9-8f55759846ed&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=bb3ad767-5f69-4db9-b1c9-8f55759846ed&amp;amp;displaylang=en&lt;/a&gt;      &lt;br /&gt;&lt;strong&gt;Setup&lt;/strong&gt;       &lt;br /&gt;&lt;a href="http://download.microsoft.com/download/0/a/e/0ae1153a-8798-474a-93e6-d19299f37c8b/setup.exe"&gt;http://download.microsoft.com/download/0/a/e/0ae1153a-8798-474a-93e6-d19299f37c8b/setup.exe&lt;/a&gt;&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;&lt;strong&gt;Read Me&lt;/strong&gt;         &lt;br /&gt;&lt;a href="http://download.microsoft.com/download/0/a/e/0ae1153a-8798-474a-93e6-d19299f37c8b/Readme.mht"&gt;http://download.microsoft.com/download/0/a/e/0ae1153a-8798-474a-93e6-d19299f37c8b/Readme.mht&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;&lt;strong&gt;Documentation:&lt;/strong&gt;         &lt;br /&gt;&lt;a href="http://download.microsoft.com/download/0/a/e/0ae1153a-8798-474a-93e6-d19299f37c8b/Documentation.zip"&gt;http://download.microsoft.com/download/0/a/e/0ae1153a-8798-474a-93e6-d19299f37c8b/Documentation.zip&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:dfe1e9af-8c94-44f6-b227-924cf5179ea3" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/VSTS" rel="tag"&gt;VSTS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TFS" rel="tag"&gt;TFS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Team+System" rel="tag"&gt;Team System&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Visual+Studio+Team+System" rel="tag"&gt;Visual Studio Team System&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Database+Edition" rel="tag"&gt;Database Edition&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Visual+Studio+2008" rel="tag"&gt;Visual Studio 2008&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Visual+Studio+2005" rel="tag"&gt;Visual Studio 2005&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SQL+Server" rel="tag"&gt;SQL Server&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SQL+Server+2008" rel="tag"&gt;SQL Server 2008&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SQL+Server+2000" rel="tag"&gt;SQL Server 2000&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SQL+Server+2005" rel="tag"&gt;SQL Server 2005&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127397"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127397" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://blog.hinshelwood.com/aggbug/127397.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.martin.hinshelwood.com/~r/VisualStudioTeamSystem/~4/466807904" height="1" width="1"/&gt;</description>
            <dc:creator>Martin Hinshelwood</dc:creator>
            <guid isPermaLink="false">http://blog.hinshelwood.com/archive/2008/11/26/visual-studio-team-system-2008-database-edition-gdr-has-been.aspx</guid>
            <pubDate>Wed, 26 Nov 2008 09:55:11 GMT</pubDate>
            <wfw:comment>http://blog.hinshelwood.com/comments/127397.aspx</wfw:comment>
            <comments>http://blog.hinshelwood.com/archive/2008/11/26/visual-studio-team-system-2008-database-edition-gdr-has-been.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blog.hinshelwood.com/comments/commentRss/127397.aspx</wfw:commentRss>
            <trackback:ping>http://blog.hinshelwood.com/services/trackbacks/127397.aspx</trackback:ping>
        <feedburner:origLink>http://blog.hinshelwood.com/archive/2008/11/26/visual-studio-team-system-2008-database-edition-gdr-has-been.aspx</feedburner:origLink></item>
        <item>
            <title>Least opportune time.</title>
            <link>http://feeds.martin.hinshelwood.com/~r/VisualStudioTeamSystem/~3/459836185/least-opportune-time.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/Leastopportunetime_CCCD/codeplex_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="codeplex" border="0" alt="codeplex" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/Leastopportunetime_CCCD/codeplex_thumb.jpg" width="235" height="92" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Here I am slogging my guts out, trying to get &lt;a target="_blank" href="http://hinshelwood.com/TFSStickyBuddy.aspx"&gt;TFS Sticky Buddy&lt;/a&gt; v2.0 out the door and bang goes the &lt;a title="Team Foundation Server" href="http://msdn2.microsoft.com/en-us/teamsystem/aa718934.aspx" target="_blank"&gt;TFS&lt;/a&gt; server :(&lt;/p&gt;  &lt;p&gt; &lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/Leastopportunetime_CCCD/bang_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="bang" border="0" alt="bang" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/Leastopportunetime_CCCD/bang_thumb.jpg" width="119" height="119" /&gt;&lt;/a&gt;  &lt;/p&gt;  &lt;p&gt;This is tfs05 on the &lt;a target="_blank" href="http://codeplex.com"&gt;Codeplex&lt;/a&gt; environment. All the others seem to be running OK, but juts my luck the one I am using is the one that is affected, and nothing on the &lt;a target="_blank" href="http://www.codeplex.com/CodePlex/Wiki/View.aspx?title=System%20Outage%20Report"&gt;Outage page&lt;/a&gt;! its been 3 hours and nothing. I have emailed them and reported it on the &lt;a target="_blank" href="http://www.codeplex.com/CodePlex/Thread/View.aspx?ThreadId=40346"&gt;Discussions&lt;/a&gt; page.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/Leastopportunetime_CCCD/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/Leastopportunetime_CCCD/image_thumb.png" width="404" height="139" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now, although I am, I am not really complaining as they have provided a fantastic service over the last, what… two years!&lt;/p&gt;  &lt;p&gt;&lt;a title="CodePlex Home" href="http://www.codeplex.com/"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Hats off to the &lt;a title="CodePlex" href="http://www.codeplex.com" target="_blank"&gt;CodePlex&lt;/a&gt; team, but get the bloody server fixed so I can check in my code!&lt;/p&gt;  &lt;p&gt; &lt;/p&gt; &lt;a href="http://www.codeplex.com/"&gt;&lt;/a&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:709454ea-5845-4494-920b-dc83f5df9429" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/TFS" rel="tag"&gt;TFS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/VSTS" rel="tag"&gt;VSTS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Visual+Studio+Team+System" rel="tag"&gt;Visual Studio Team System&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Team+Foundation+Server" rel="tag"&gt;Team Foundation Server&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Codeplex" rel="tag"&gt;Codeplex&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TFS+Sticky+Buddy" rel="tag"&gt;TFS Sticky Buddy&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127248"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127248" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://blog.hinshelwood.com/aggbug/127248.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.martin.hinshelwood.com/~r/VisualStudioTeamSystem/~4/459836185" height="1" width="1"/&gt;</description>
            <dc:creator>Martin Hinshelwood</dc:creator>
            <guid isPermaLink="false">http://blog.hinshelwood.com/archive/2008/11/20/least-opportune-time.aspx</guid>
            <pubDate>Thu, 20 Nov 2008 14:43:55 GMT</pubDate>
            <wfw:comment>http://blog.hinshelwood.com/comments/127248.aspx</wfw:comment>
            <comments>http://blog.hinshelwood.com/archive/2008/11/20/least-opportune-time.aspx#feedback</comments>
            <wfw:commentRss>http://blog.hinshelwood.com/comments/commentRss/127248.aspx</wfw:commentRss>
            <trackback:ping>http://blog.hinshelwood.com/services/trackbacks/127248.aspx</trackback:ping>
        <feedburner:origLink>http://blog.hinshelwood.com/archive/2008/11/20/least-opportune-time.aspx</feedburner:origLink></item>
        <item>
            <title>Team Suite on the cheap</title>
            <link>http://feeds.martin.hinshelwood.com/~r/VisualStudioTeamSystem/~3/457831750/team-suite-on-the-cheap.aspx</link>
            <description>&lt;p&gt;&lt;img alt="" src="http://www.microsoft.com/visualstudio/images/vs_mainlogo.png" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/visualstudio/2010/overview.mspx"&gt;&lt;img style="display: inline; margin-left: 0px; margin-right: 0px" align="right" src="http://www.microsoft.com/visualstudio/images/promo/btn_whats_coming.png" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Ok, so I lied a little. It is not that cheap, but 30% off an upgrade from a team edition to full Team Suit is nothing to be sniffed at, it could be as much as £1000 off!&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;If your team is using any component edition of Visual Studio Team System 2008 (Development Edition, Test Edition, Architecture Edition, or Database Edition), now’s the time to get more out of your development solution. Step up to the complete Visual Studio Team System 2008 Team Suite, and save 30%. That’s a huge savings to give your development team the full suite of tools - and help them collaborate better than ever during the entire application lifecycle.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/visualstudio/default.mspx"&gt;&lt;img style="display: inline; margin-left: 0px; margin-right: 0px" align="right" src="http://www.microsoft.com/visualstudio/images/promo/btn_start_the_team_08.png" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:e898797c-56b1-4208-8a49-c485bcfb473c" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/VSTS" rel="tag"&gt;VSTS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Visual+Studio+Team+System" rel="tag"&gt;Visual Studio Team System&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TFS" rel="tag"&gt;TFS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TS" rel="tag"&gt;TS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Team+System" rel="tag"&gt;Team System&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127182"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127182" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://blog.hinshelwood.com/aggbug/127182.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.martin.hinshelwood.com/~r/VisualStudioTeamSystem/~4/457831750" height="1" width="1"/&gt;</description>
            <dc:creator>Martin Hinshelwood</dc:creator>
            <guid isPermaLink="false">http://blog.hinshelwood.com/archive/2008/11/18/team-suite-on-the-cheap.aspx</guid>
            <pubDate>Tue, 18 Nov 2008 11:23:09 GMT</pubDate>
            <wfw:comment>http://blog.hinshelwood.com/comments/127182.aspx</wfw:comment>
            <comments>http://blog.hinshelwood.com/archive/2008/11/18/team-suite-on-the-cheap.aspx#feedback</comments>
            <wfw:commentRss>http://blog.hinshelwood.com/comments/commentRss/127182.aspx</wfw:commentRss>
            <trackback:ping>http://blog.hinshelwood.com/services/trackbacks/127182.aspx</trackback:ping>
        <feedburner:origLink>http://blog.hinshelwood.com/archive/2008/11/18/team-suite-on-the-cheap.aspx</feedburner:origLink></item>
        <item>
            <title>Composite WPF and Merged Dictionaries</title>
            <link>http://feeds.martin.hinshelwood.com/~r/VisualStudioTeamSystem/~3/451331281/composite-wpf-and-merged-dictionaries.aspx</link>
            <description>&lt;p&gt;If, like me, you like to have changeable resource files in your application. Wither it is for changing the Theme, or interchanging templates you will need to take special care when using the &lt;/p&gt;  &lt;p&gt;&lt;a target="_blank" href="http://www.codeplex.com/CompositeWPF"&gt;&lt;/a&gt; libraries.&lt;/p&gt;  &lt;p&gt;The new version of the &lt;a target="_blank" href="http://hinshelwood.com/TFSStickyBuddy.aspx"&gt;TFS Sticky Buddy&lt;/a&gt; uses both!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/CompositeWPFandMergedDictionaries_9AD7/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/CompositeWPFandMergedDictionaries_9AD7/image_thumb.png" width="404" height="387" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I am using the built in Infragistics theme system, and the first time you select a theme I am just adding a resource file that overrides the default:&lt;/p&gt;  &lt;div class="csharpcode-wrapper"&gt;   &lt;div class="csharpcode"&gt;     &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;Dim&lt;/span&gt; resourceDictionary &lt;span class="kwrd"&gt;As&lt;/span&gt; ResourceDictionary = ThemeManager.GetResourceSet(theme, ThemeManager.AllGroupingsLiteral)&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   2:&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt; &lt;span class="kwrd"&gt;Not&lt;/span&gt; resourceDictionary &lt;span class="kwrd"&gt;Is&lt;/span&gt; &lt;span class="kwrd"&gt;Nothing&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:&lt;/span&gt;    Application.Current.Resources.MergedDictionaries.Add(resourceDictionary)&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   4:&lt;/span&gt; &lt;span class="kwrd"&gt;End&lt;/span&gt; If&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;This causes an error in the ItemsControlRegionAdapter as WPF seams to redo the region adapters and you get a ItemsControlHasItemsSourceException. You need to change the code to the following (notice the commented out areas):&lt;/p&gt;

&lt;div class="csharpcode-wrapper"&gt;
  &lt;div class="csharpcode"&gt;
    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   2:&lt;/span&gt; &lt;span class="rem"&gt;/// Adapts an &amp;lt;see cref="ItemsControl"/&amp;gt; to an &amp;lt;see cref="IRegion"/&amp;gt;.&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:&lt;/span&gt; &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   4:&lt;/span&gt; &lt;span class="rem"&gt;/// &amp;lt;param name="region"&amp;gt;The new region being used.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:&lt;/span&gt; &lt;span class="rem"&gt;/// &amp;lt;param name="regionTarget"&amp;gt;The object to adapt.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   6:&lt;/span&gt; &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Adapt(IRegion region, ItemsControl regionTarget)&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:&lt;/span&gt; {  &lt;span class="rem"&gt;//Modified by Martin Hinshelwood to allow resource file changes...&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;   8:&lt;/span&gt;     &lt;span class="rem"&gt;//if (regionTarget.ItemsSource != null || (BindingOperations.GetBinding(regionTarget, ItemsControl.ItemsSourceProperty) != null))&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:&lt;/span&gt;     &lt;span class="rem"&gt;//    throw new InvalidOperationException(Resources.ItemsControlHasItemsSourceException);&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  10:&lt;/span&gt;  &lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:&lt;/span&gt;     &lt;span class="rem"&gt;//If control has child items, move them to the region and then bind control to region. Can't set ItemsSource if child items exist.&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  12:&lt;/span&gt;     &lt;span class="kwrd"&gt;if&lt;/span&gt; (regionTarget.Items.Count &amp;gt; 0)&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:&lt;/span&gt;     {&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  14:&lt;/span&gt;         &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;object&lt;/span&gt; childItem &lt;span class="kwrd"&gt;in&lt;/span&gt; regionTarget.Items)&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:&lt;/span&gt;         {&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  16:&lt;/span&gt;             region.Add(childItem);&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:&lt;/span&gt;         }&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  18:&lt;/span&gt;         &lt;span class="rem"&gt;//Control must be empty before setting ItemsSource&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:&lt;/span&gt;         regionTarget.ItemsSource = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;/pre&gt;

    &lt;pre class="alteven"&gt;&lt;span class="lnum"&gt;  20:&lt;/span&gt;         &lt;span class="rem"&gt;//regionTarget.Items.Clear();&lt;/span&gt;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span c