<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.microsoft.co.il/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Shai Raiten&amp;#39;s Blog : DEV, TFS</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/TFS/default.aspx</link><description>Tags: DEV, TFS</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>איך להגדיר ימי חופש של סבב פיתוח - יום שישי במקום ראשון</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2013/03/03/1776335.aspx</link><pubDate>Sun, 03 Mar 2013 10:42:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1776335</guid><dc:creator>shair</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=1776335</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2013/03/03/1776335.aspx#comments</comments><description>&lt;p dir="rtl"&gt;אחד השינויים ב – TFS 11 מאפשר לנו להגדיר קבוצות פיתוח והגדרה של סבבי פיתוח עם תאריך התחלה וסיום (Sprint, Iteration וכו).&lt;/p&gt;

&lt;p dir="rtl"&gt;כאשר מתחילים לתכנן סבב פיתוח נראה חישוב של סה”כ ימי העבודה בסבב הנוכחי, אך סה”כ הימים לא יסתדר לכם כי הוא מחשב שיום ראשון אינו יום עבודה.&lt;/p&gt;

&lt;p dir="rtl"&gt;זאת שאלה שאני מקבל מהרבה לקוחות – איך אני משנה את תצוגת ה – Backlog שתתאים לימי המנוחה בארץ (שישי ושבת ולא שבת וראשון).&lt;/p&gt;

&lt;p dir="rtl"&gt;לדוגמא – אם הגדרנו סבב פיתוח מה – 3 לפברואר עד ה – 14 לפברואר – מדובר על &lt;strong&gt;12&lt;/strong&gt; &lt;u&gt;ימים סה”כ&lt;/u&gt; ו-&lt;strong&gt;10&lt;/strong&gt;&amp;#160;&lt;u&gt;ימי פיתוח&lt;/u&gt; אבל אנחנו נראה סה”כ 9 ימי פיתוח. (שני ימי ראשון + יום שבת = שלושה ימי חופש).&lt;/p&gt;

&lt;p dir="rtl"&gt;&lt;a&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/photos/shair/images/1776318/original.aspx" width="858" height="459" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p dir="rtl"&gt;על מנת לסגר את TFS 11 שיתמוך בימי החופש בארץ נצטרך להשתמש בפקודת – witadmin שתאפשר לנו לשלוף את קובץ ההגדרות עבור ניהול הפרוייקט.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;witadmin&lt;/strong&gt; &lt;strong&gt;exportcommonprocessconfig&lt;/strong&gt; /&lt;strong&gt;collection&lt;/strong&gt;:&lt;a href="http://tfsServer:8080/tfs"&gt;http://tfsServer:8080/tfs&lt;/a&gt; /&lt;strong&gt;f&lt;/strong&gt;:e:\projectConfig.xml /&lt;strong&gt;p&lt;/strong&gt;:ProjectName&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p dir="rtl"&gt;לאחר שהרצנו פקודה זאת ניפתח את הקובץ ונחפש את הטקסט הבא:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="csharpcode"&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Weekends&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;DayOfWeek&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Sunday&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;DayOfWeek&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;DayOfWeek&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Saturday&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;DayOfWeek&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Weekends&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;CommonProjectConfiguration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p dir="rtl"&gt;נשנה את הערך -&amp;#160; Sunday ל – Friday, נשמור את הקובץ.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="csharpcode"&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Weekends&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;DayOfWeek&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;font style="background-color:#ffff00;"&gt;Friday&lt;/font&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;DayOfWeek&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;DayOfWeek&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Saturday&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;DayOfWeek&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Weekends&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;CommonProjectConfiguration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p dir="rtl"&gt;לבסוף יש להריץ את אותה הפקודה אך במקום export נכתוב import:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;witadmin&lt;/strong&gt; &lt;strong&gt;importcommonprocessconfig&lt;/strong&gt; /&lt;strong&gt;collection&lt;/strong&gt;:&lt;a href="http://tfsServer:8080/tfs"&gt;http://tfsServer:8080/tfs&lt;/a&gt; /&lt;strong&gt;f&lt;/strong&gt;:e:\projectConfig.xml /&lt;strong&gt;p&lt;/strong&gt;:ProjectName&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p dir="rtl"&gt;עכשיו אפשר להתחיל לעבוד!&lt;/p&gt;

&lt;p dir="rtl"&gt;&lt;a&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/photos/shair/images/1776319/original.aspx" width="848" height="475" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p dir="rtl"&gt;תהנו!&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1776335" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS/default.aspx">TFS</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+Administration/default.aspx">TFS Administration</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/WorkItem+Tracking/default.aspx">WorkItem Tracking</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Work+Items/default.aspx">Work Items</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TECH/default.aspx">TECH</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Web+Access/default.aspx">Web Access</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Questions/default.aspx">Questions</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Scrum/default.aspx">Scrum</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/How+To/default.aspx">How To</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/witadmin/default.aspx">witadmin</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/ALM/default.aspx">ALM</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Agile/default.aspx">Agile</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+11/default.aspx">TFS 11</category></item><item><title>TFS API Part 49 – Delete Team Project</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2013/02/20/tfs-api-part-49-delete-team-project.aspx</link><pubDate>Wed, 20 Feb 2013 19:08:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1757008</guid><dc:creator>shair</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=1757008</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2013/02/20/tfs-api-part-49-delete-team-project.aspx#comments</comments><description>&lt;div class="wlWriterHeaderFooter" style="float:none;margin:0px;padding:4px 0px 4px 0px;"&gt;&lt;iframe src="http://www.facebook.com/widgets/like.php?href=http://blogs.microsoft.co.il/blogs/shair/archive/2013/02/21/tfs-api-part-49-delete-team-project.aspx" scrolling="no" frameborder="0" style="border:none;width:450px;height:80px;"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;p&gt;There are many improvements in TFS API for 2012 version, in my previous post I’ve talked about &lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/2013/02/20/tfs-api-part-48-workitemcontrol-and-bypass-work-item-rules.aspx" target="_blank"&gt;TFS API Part 48 – WorkItemControl And Bypass Work Item Rules&lt;/a&gt; that allow work item creation with &lt;strong&gt;bypass&lt;/strong&gt; rule mode in WorkItemStore that allow you to create and change any field value without applying the WorkItem template rules.&lt;/p&gt;  &lt;p&gt;in this post I’ll show how to delete Team Project using TFS API, be aware Delete Team Project is unrecoverable!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_028946EC.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_32337746.png" width="449" height="554" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/1756990/download.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Step 1: Connect TFS and Getting Team Projects&lt;/h2&gt;  &lt;p&gt;Create WPF Application, and add the basic code for connecting TFS and collecting all Team Projects under that collection.&lt;/p&gt;  &lt;blockquote&gt;   &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; TfsTeamProjectCollection _tfs;
&lt;span class="kwrd"&gt;private&lt;/span&gt; WorkItemStore _store;
&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; btnConnect_Click(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)
{
    var tpp = &lt;span class="kwrd"&gt;new&lt;/span&gt; TeamProjectPicker(TeamProjectPickerMode.NoProject, &lt;span class="kwrd"&gt;false&lt;/span&gt;);
    tpp.ShowDialog();

    &lt;span class="kwrd"&gt;if&lt;/span&gt; (tpp.SelectedTeamProjectCollection != &lt;span class="kwrd"&gt;null&lt;/span&gt;)
    {
        _tfs = tpp.SelectedTeamProjectCollection;
        _store = &lt;span class="kwrd"&gt;new&lt;/span&gt; WorkItemStore(_tfs);
        GetTeamProjects();
    }
}

&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GetTeamProjects()
{
    projectsList.ItemsSource = _store.Projects;
}&lt;/pre&gt;
&lt;/blockquote&gt;



&lt;h2&gt;Step 2: Using TeamProjectDeleter&lt;/h2&gt;

&lt;p&gt;To delete Team Project we need to use a new API called – &lt;strong&gt;TeamProjectDeleter, &lt;/strong&gt;you can find this dll here - &lt;em&gt;C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ReferenceAssemblies\v4.5\Microsoft.TeamFoundation.DeleteTeamProject.dll..&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;First create new &lt;strong&gt;TeamProjectDeleter&lt;/strong&gt; object and pass the &lt;strong&gt;TfsCollection&lt;/strong&gt;, &lt;strong&gt;Team Project name&lt;/strong&gt; and &lt;strong&gt;force&lt;/strong&gt; property.&lt;/p&gt;

&lt;p&gt;You can also specify if you want to delete the Team Project WSS and finally calling the delete method to perform the Team Project delete operation.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; btnDelete_Click(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)
{
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (projectsList.SelectedItem == &lt;span class="kwrd"&gt;null&lt;/span&gt;) &lt;span class="kwrd"&gt;return&lt;/span&gt;;

    var project = (Project)projectsList.SelectedItem;

    var force = chxForce.IsChecked == &lt;span class="kwrd"&gt;true&lt;/span&gt; ? &lt;span class="kwrd"&gt;true&lt;/span&gt; : &lt;span class="kwrd"&gt;false&lt;/span&gt;;
    &lt;span class="kwrd"&gt;try&lt;/span&gt;
    {
        var deleter = &lt;span class="kwrd"&gt;new&lt;/span&gt; TeamProjectDeleter(_tfs, project.Name, force);
        deleter.StatusEvent += deleter_StatusEvent;

        &lt;span class="kwrd"&gt;if&lt;/span&gt; (deleter.HasWssToDelete)
            deleter.ExcludeWss = chxExcludeWss.IsChecked == &lt;span class="kwrd"&gt;true&lt;/span&gt; ? &lt;span class="kwrd"&gt;true&lt;/span&gt; : &lt;span class="kwrd"&gt;false&lt;/span&gt;;

        var result = MessageBox.Show(&lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;&amp;quot;You are about to delete \&amp;quot;{0}\&amp;quot; project, are you sure you want to continue?&amp;quot;&lt;/span&gt;,
            project.Name), &lt;span class="str"&gt;&amp;quot;Delete Team Project&amp;quot;&lt;/span&gt;, MessageBoxButton.OKCancel, MessageBoxImage.Warning);
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (result == MessageBoxResult.OK)
        {
            var t = &lt;span class="kwrd"&gt;new&lt;/span&gt; Thread(&lt;span class="kwrd"&gt;new&lt;/span&gt; ThreadStart(deleter.Delete));
            t.Start();
        }
    }
    &lt;span class="kwrd"&gt;catch&lt;/span&gt; (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

&lt;span class="kwrd"&gt;void&lt;/span&gt; deleter_StatusEvent(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, TeamProjectDeleter.StatusEventArgs e)
{
    Execute ex = &lt;span class="kwrd"&gt;delegate&lt;/span&gt;()
    {
        txtLog.Text = e.message + Environment.NewLine + txtLog.Text;
    };
    &lt;span class="kwrd"&gt;this&lt;/span&gt;.Dispatcher.Invoke(ex);
}&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/1756990/download.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1757008" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS/default.aspx">TFS</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+Administration/default.aspx">TFS Administration</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+Utilities/default.aspx">TFS Utilities</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TECH/default.aspx">TECH</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+API/default.aspx">TFS API</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET+4.5/default.aspx">.NET 4.5</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+2012/default.aspx">TFS 2012</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+2012/default.aspx">Visual Studio 2012</category></item><item><title>TFS API Part 48 – WorkItemControl And Bypass Work Item Rules</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2013/02/20/tfs-api-part-48-workitemcontrol-and-bypass-work-item-rules.aspx</link><pubDate>Wed, 20 Feb 2013 17:28:30 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1756712</guid><dc:creator>shair</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=1756712</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2013/02/20/tfs-api-part-48-workitemcontrol-and-bypass-work-item-rules.aspx#comments</comments><description>&lt;div class="wlWriterHeaderFooter" style="float:none;margin:0px;padding:4px 0px 4px 0px;"&gt;&lt;iframe src="http://www.facebook.com/widgets/like.php?href=http://blogs.microsoft.co.il/blogs/shair/archive/2013/02/20/tfs-api-part-48-workitemcontrol-and-bypass-work-item-rules.aspx" scrolling="no" frameborder="0" style="border:none;width:450px;height:80px;"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;p&gt;It’s been a while since I wrote about TFS API, not because there is no more about it is because I worked on Windows Store for the past couple of months so I didn’t had the time.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+API/default.aspx" target="_blank"&gt;More About TFS API&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So today post will be about two changes in TFS 2012, the first one is &lt;strong&gt;&lt;u&gt;WorkItemControl &lt;/u&gt;&lt;/strong&gt;based on WPF that replaced the &lt;strong&gt;WorkItemFormControl &lt;/strong&gt;based on WinForms, the second will be about &lt;strong&gt;WorkItemStore&lt;/strong&gt; bypass rule – Allowing you to save and change work item values without obeying the work item rules.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_53BD4600.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_3757B615.png" width="1112" height="346" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/1756707/download.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Step 1: Connect TFS&lt;/h2&gt;  &lt;p&gt;First create WPF application using Visual Studio 2012 and connect TFS using &lt;strong&gt;TeamProjectPicker&lt;/strong&gt; API.&lt;/p&gt;  &lt;blockquote&gt;   &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; btnConnect_Click(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)
{
    var pick = &lt;span class="kwrd"&gt;new&lt;/span&gt; TeamProjectPicker(TeamProjectPickerMode.NoProject, &lt;span class="kwrd"&gt;false&lt;/span&gt;);
    pick.AcceptButtonText = &lt;span class="str"&gt;&amp;quot;I want this Team Project!&amp;quot;&lt;/span&gt;;
    pick.ShowDialog();

    &lt;span class="kwrd"&gt;if&lt;/span&gt; (pick.SelectedTeamProjectCollection != &lt;span class="kwrd"&gt;null&lt;/span&gt;)
    {
        _tfs = pick.SelectedTeamProjectCollection;
        &lt;span class="rem"&gt;//WorkItemStoreFlags - Enum used to determine behavior of work item store object&lt;/span&gt;
        _store = &lt;span class="kwrd"&gt;new&lt;/span&gt; WorkItemStore(_tfs, WorkItemStoreFlags.BypassRules);
        btnShowWits.IsEnabled = &lt;span class="kwrd"&gt;true&lt;/span&gt;;
    }
    &lt;span class="kwrd"&gt;else&lt;/span&gt;
    {
        MessageBox.Show(&lt;span class="str"&gt;&amp;quot;Please select Team Project&amp;quot;&lt;/span&gt;);
    }
}&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;pre class="csharpcode"&gt;&amp;#160;&lt;/pre&gt;

&lt;h2&gt;Step 2: Query Work Items&lt;/h2&gt;

&lt;p&gt;No just for demo purpose I using the Store object to query all items in the collection.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; btnShowWits_Click(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)
{
    var workItems = _store.Query(&lt;span class="str"&gt;&amp;quot;SELECT [System.Id] FROM WorkItems&amp;quot;&lt;/span&gt;);

    &lt;span class="kwrd"&gt;if&lt;/span&gt; (workItems.Count &amp;gt; 0)
    {
        btnShowWit.IsEnabled = &lt;span class="kwrd"&gt;true&lt;/span&gt;;
        workItemsList.ItemsSource = workItems;
    }
}&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;h2&gt;Step 3: Bypass WorkItemStore Rules&lt;/h2&gt;

&lt;p&gt;The interesting part in TFS 2012 that you can create the &lt;strong&gt;WorkItemStore&lt;/strong&gt; object and specify if you want to work in &lt;strong&gt;BypassRule &lt;/strong&gt;mode.&lt;/p&gt;

&lt;p&gt;The Bypass Rule allow you to modify the work item fields without any restrictions, for example you can change “&lt;strong&gt;Created Date&lt;/strong&gt;”, or “&lt;strong&gt;Created By&lt;/strong&gt;” – that normally are blocked for changes.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; chxBypassRules_Checked(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)
{
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (_tfs == &lt;span class="kwrd"&gt;null&lt;/span&gt;) &lt;span class="kwrd"&gt;return&lt;/span&gt;;
    _store = &lt;span class="kwrd"&gt;new&lt;/span&gt; WorkItemStore(_tfs, WorkItemStoreFlags.BypassRules);
}

&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; chxBypassRules_Unchecked(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)
{
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (_tfs == &lt;span class="kwrd"&gt;null&lt;/span&gt;) &lt;span class="kwrd"&gt;return&lt;/span&gt;;
    _store = &lt;span class="kwrd"&gt;new&lt;/span&gt; WorkItemStore(_tfs, WorkItemStoreFlags.None);
}&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;h2&gt;Step 4: Show Work Item Control&lt;/h2&gt;

&lt;p&gt;After we specify the WorkItemStore mode we want to work with and have selected a Work Item from the list we want to display him outside Visual Studio using &lt;strong&gt;WorkItemControl.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;WorkItemControl &lt;/strong&gt;needs the Item property set to the work item you want to display (or new work item), then create new Window object and set the &lt;strong&gt;WorkItemControl &lt;/strong&gt;as the new Windows Content.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; btnShowWit_Click(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)
{
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (workItemsList.SelectedItem == &lt;span class="kwrd"&gt;null&lt;/span&gt;) &lt;span class="kwrd"&gt;return&lt;/span&gt;;

    _witControl = &lt;span class="kwrd"&gt;new&lt;/span&gt; WorkItemControl();
    _witControl.Item = (WorkItem)workItemsList.SelectedItem;


    _container = &lt;span class="kwrd"&gt;new&lt;/span&gt; Window();
    _container.Content = _witControl;

    _container.Show();

    btnShowErrors.IsEnabled = &lt;span class="kwrd"&gt;true&lt;/span&gt;;
}

&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; btnShowErrors_Click(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)
{
    _witControl.ShowAllFieldErrors(&lt;span class="str"&gt;&amp;quot;Error Title&amp;quot;&lt;/span&gt;, 99);
}&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;pre class="csharpcode"&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/1756707/download.aspx" target="_blank"&gt;&lt;font size="3" face="Arial"&gt;Download Demo Project&lt;/font&gt;&lt;/a&gt;&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;&lt;font face="Arial"&gt;Enjoy&lt;/font&gt;&lt;/pre&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1756712" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS/default.aspx">TFS</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+Administration/default.aspx">TFS Administration</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/WorkItem+Tracking/default.aspx">WorkItem Tracking</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Work+Items/default.aspx">Work Items</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TECH/default.aspx">TECH</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+API/default.aspx">TFS API</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+2012/default.aspx">TFS 2012</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+2012/default.aspx">Visual Studio 2012</category></item><item><title>Getting Started With Git-TF Tool</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2012/12/31/getting-started-with-git-tf-tool.aspx</link><pubDate>Mon, 31 Dec 2012 11:12:17 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1613063</guid><dc:creator>shair</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=1613063</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2012/12/31/getting-started-with-git-tf-tool.aspx#comments</comments><description>&lt;div class="wlWriterHeaderFooter" style="float:none;margin:0px;padding:4px 0px 4px 0px;"&gt;&lt;iframe src="http://www.facebook.com/widgets/like.php?href=http://blogs.microsoft.co.il/blogs/shair/archive/2012/12/31/getting-started-with-git-tf-tool.aspx" scrolling="no" frameborder="0" style="border:none;width:450px;height:80px;"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Git-TF &lt;/strong&gt;tool release by Microsoft allowing developers to work locally using Git repository without any connection to TFS, if you wanted to work on your files locally (In case you don’t have internet connection) you had reopen the solution and work offline. TFS 2012 comes with new feature called – Local Workspace allowing developers to work locally on their files but without tracking the changes history – here comes Git-TF tool.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/b/bharry/archive/2012/08/13/announcing-git-integration-with-tfs.aspx" target="_blank"&gt;Brian Harry’s Blog&lt;/a&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Distributed Version Control (DVCS) has a growing following. It enables a set of workflows that can be very handy and Git is an increasingly popular DVCS solution.&amp;#160; Today, we are announcing Git-tf, a solution that enables you to work locally with a Git repo – edit, commit, revert, branch, merge, etc.&amp;#160; and then “sync up” with a central TFS repository.&amp;#160; In this way, you can have the best of both DVCS and TFS.&lt;/p&gt; &lt;/blockquote&gt;  &lt;h2&gt;Getting Started with Git-TF Tool&lt;/h2&gt;  &lt;h3&gt;Prerequisites&lt;/h3&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=30474" target="_blank"&gt;Download Microsoft Git-TF for Visual Studio Team Foundation Server 2012&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Extract the zip content to &lt;strong&gt;C:\git-tf &lt;/strong&gt;(or any other place) &lt;/li&gt;    &lt;li&gt;Add the path where you extracted Git-TF (i.e. C:\git-tf) to your PATH environment variable.      &lt;blockquote&gt;       &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_16543D39.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_6A079087.png" width="727" height="450" /&gt;&lt;/a&gt;           &lt;br /&gt;          &lt;br /&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_56B6B41B.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_5499B552.png" width="453" height="505" /&gt;&lt;/a&gt;           &lt;br /&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/SNAGHTML3c733c_4D2DCFD8.png"&gt;           &lt;br /&gt;&lt;img title="SNAGHTML3c733c" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="SNAGHTML3c733c" src="http://blogs.microsoft.co.il/blogs/shair/SNAGHTML3c733c_thumb_6478D449.png" width="696" height="442" /&gt;&lt;/a&gt;&lt;/p&gt;     &lt;/blockquote&gt;   &lt;/li&gt;    &lt;li&gt;Download Java from &lt;a href="http://www.java.com/"&gt;http://www.java.com&lt;/a&gt; and add the Java path to your PATH environment variable.&amp;#160; (Step 2)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://git-scm.com/download/win" target="_blank"&gt;Download Git for Windows&lt;/a&gt;, and install it.&lt;/li&gt; &lt;/ol&gt;  &lt;h4&gt;Setup Git User Information&lt;/h4&gt;  &lt;ol&gt;   &lt;li&gt;Open PowerShell and execute the following commands:&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;PS C:\&amp;gt; &lt;u&gt;git&lt;/u&gt; &lt;strong&gt;config &lt;/strong&gt;--global user.email &amp;quot;shai.raiten[at]mail.com&amp;quot;     &lt;br /&gt;PS C:\&amp;gt; &lt;u&gt;git&lt;/u&gt; &lt;strong&gt;config&lt;/strong&gt; --global user.name &amp;quot;Shai Raiten&amp;quot;&lt;/p&gt;  &lt;h4&gt;TFS Source Control&lt;/h4&gt;  &lt;p&gt;I’ve create new Team Project called – Agile, and added new console application under Main folder.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_61EFA28B.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_3970C077.png" width="900" height="332" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The first thing before we can start using Git-TF tool is initializes a new git repo from an existing path in a TFS server using the &lt;strong&gt;clone &lt;/strong&gt;command.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;u&gt;&lt;strong&gt;Run:&lt;/strong&gt;&lt;/u&gt; &lt;u&gt;git-tf&lt;/u&gt; &lt;strong&gt;clone&lt;/strong&gt; &lt;a href="http://TFSServerName:8080/tfs"&gt;http://TFSServerName:8080/tfs&lt;/a&gt; &amp;quot;$/Agile/Main”&lt;/p&gt;    &lt;p&gt;&lt;u&gt;&lt;strong&gt;Result:&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;    &lt;p&gt;PS C:\Users\Shai\Dev&amp;gt; git-tf clone &lt;a href="http://lucy:8080/tfs"&gt;http://lucy:8080/tfs&lt;/a&gt; &amp;quot;$/Agile/Main&amp;quot;       &lt;br /&gt;Connecting to TFS...       &lt;br /&gt;Cloning $/Agile/Main into C:\Users\Shai\Dev\Main: 100%, done.       &lt;br /&gt;Cloned changeset 19 as 6195f2e       &lt;br /&gt;PS C:\Users\Shai\Dev&amp;gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Change some files under your new Git repository.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_0B36C4BD.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_7C1FE5E2.png" width="398" height="224" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I’ve also create new file (Program – Duplicate.cs)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_21A96344.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_4732E0A5.png" width="694" height="271" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;To apply new change we’ll use the &lt;strong&gt;commit &lt;/strong&gt;command:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Run&lt;/strong&gt;: &lt;u&gt;git&lt;/u&gt; &lt;strong&gt;commit&lt;/strong&gt; -a -m &amp;quot;Add new file and new comment...&amp;quot;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Result&lt;/strong&gt;:&lt;/p&gt;    &lt;p&gt;PS C:\Users\Shai\Main&amp;gt; git commit -a -m &amp;quot;Add new file and new comment...&amp;quot;      &lt;br /&gt;[master 2feccf1] Add new file and new comment...       &lt;br /&gt;&lt;font style="background-color:#ffff00;"&gt;1 file changed, 1 insertion(+)&lt;/font&gt;       &lt;br /&gt;PS C:\Users\Shai\Main&amp;gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Now, let’s make things more complicated, I’ve checked in new change from TFS (Adding new comment)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_30245F69.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_0EC4B9CD.png" width="464" height="341" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Before you checked in your local git repository changes to TFS you want to fetches changes made in TFS as a new commit in Git, and merges the commit with the latest commit in the current branch.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Run&lt;/strong&gt;: &lt;u&gt;git-tf&lt;/u&gt; pull –rebase&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Result&lt;/strong&gt;:&lt;/p&gt;    &lt;p&gt;PS C:\Users\Shai\Main&amp;gt; git-tf pull --rebase      &lt;br /&gt;Connecting to TFS...       &lt;br /&gt;jgit : Obtaining commits that need to be cherry-picked       &lt;br /&gt;jgit : Rewinding to commit Add new Comment - TFS       &lt;br /&gt;jgit : Applying Add new file and new comment...       &lt;br /&gt;Fetching and merging changes in $/Agile/Main at latest changeset: 100%, done.       &lt;br /&gt;&lt;font style="background-color:#ffff00;"&gt;All files were fetched to commit 1f59bb6. The rebase operation was stopped, please fix the issues and run &amp;quot;git rebase --        &lt;br /&gt;&lt;/font&gt;&lt;font style="background-color:#ffff00;"&gt;continue&amp;quot; to complete the operation.&lt;/font&gt;       &lt;br /&gt;PS C:\Users\Shai\Main&amp;gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;We can see we have a conflict with TFS, if you open the the conflicted file you’ll see TFS and Git changes separated by OURS and THIERS comments.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_5AB01A79.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_2B7E2EE2.png" width="465" height="356" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Modify the file to resolve the conflict, and run &lt;font style="background-color:#ffff00;"&gt;git rebase –&lt;/font&gt;&lt;font style="background-color:#ffff00;"&gt;continue &lt;/font&gt;&lt;font&gt;command to fix the conflict.&lt;/font&gt;&lt;font style="background-color:#ffff00;"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_7E88CC06.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_086DBD72.png" width="467" height="315" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;After we make sure there is no more conflict we can check in the Git repository changes to TFS by running the following command:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Run&lt;/strong&gt;: &lt;u&gt;git-tf&lt;/u&gt; &lt;strong&gt;checkin&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Result&lt;/strong&gt;:&lt;/p&gt;    &lt;p&gt;PS C:\Users\Shai\main&amp;gt; git-tf checkin      &lt;br /&gt;Connecting to TFS...       &lt;br /&gt;Checking in to $/Agile/Main: 100%, done.       &lt;br /&gt;Checked commit de1ca4c in as changeset 21       &lt;br /&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Now we can see Git changes in TFS Source Control.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_7B936753.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_3A18B4FA.png" width="480" height="460" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Enjoy.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1613063" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS/default.aspx">TFS</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+Utilities/default.aspx">TFS Utilities</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Source+Control/default.aspx">Source Control</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TECH/default.aspx">TECH</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+2010/default.aspx">TFS 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+11/default.aspx">Visual Studio 11</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+2012/default.aspx">TFS 2012</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+2012/default.aspx">Visual Studio 2012</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Git/default.aspx">Git</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/PowerShell/default.aspx">PowerShell</category></item><item><title>Visual Studio\TFS 2012 Update 1 is available</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2012/11/28/visual-studio-2012-update-1-is-available.aspx</link><pubDate>Wed, 28 Nov 2012 13:37:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1490970</guid><dc:creator>shair</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=1490970</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2012/11/28/visual-studio-2012-update-1-is-available.aspx#comments</comments><description>&lt;p&gt;In previous post “&lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/2012/09/25/visual-studio-2012-news-iphone-web-test-management-260-limit-and-more.aspx" target="_blank"&gt;Visual Studio 2012–News (iPhone, Web Test Management, 260 Limit and more)&lt;/a&gt;” I talked about the new Visual Studio 2012 Update 1 and what’s new for Visual Studio and TFS 2012.&lt;/p&gt;

&lt;p&gt;So today Microsoft release :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Visual Studio 2012 Update 1 – &lt;a href="http://www.microsoft.com/visualstudio/eng/downloads#d-visual-studio-2012-update" target="_blank"&gt;Download&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;TFS 2012 Update 1 – &lt;a href="http://www.microsoft.com/visualstudio/eng/downloads" target="_blank"&gt;Download&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;u&gt;&lt;strong&gt;Update:&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://stackoverflow.com/questions/13615812/error-when-installing-tfs-2012-update-1-dbo-typ-buildcontrollertablev2-is-inco"&gt;Error when installing TFS 2012 Update 1 - dbo.typ_BuildControllerTableV2 is incompatible with dbo.typ_BuildControllerTable&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;&lt;strong&gt;260 Character Path Limit&lt;/strong&gt;&lt;/h5&gt;

&lt;blockquote&gt;
  &lt;p&gt;Some call this Microsoft “Achilles’ heel” but I’ll not do so far, this is with no doubt a very annoying bug that not once cause me to change and modify entire environments.&lt;/p&gt;

  &lt;p&gt;This will allow us more flexibility in Source Control usage.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;&lt;font size="2"&gt;Windows Development&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Somasegar’s blog - A big focus area for us when designing Visual Studio 2012 was in enabling developers to build stellar apps for Windows, and that trend continues with Update 1, with which we’ve improved Windows development in a variety of areas.&amp;#160; Back in June, we &lt;a href="http://blogs.msdn.com/b/vcblog/archive/2012/06/15/10320645.aspx"&gt;announced&lt;/a&gt; we would enable C++ applications to target Windows XP from Visual Studio 2012, and that support is now available as part of Update 1. For Windows Store applications for Windows 8, Visual Studio 2012 Update 1 includes support for both mixed-mode managed/native debugging and for native ARM dump debugging.&amp;#160; Update 1 also includes improved diagnostics and testing support for Windows Store apps, such as with a JavaScript memory analysis tool, support for data-driven unit tests, and C++ unit testing enhancements. Additionally, for developers &lt;a href="http://blogs.msdn.com/b/somasegar/archive/2012/10/30/building-apps-for-windows-phone-8.aspx"&gt;building apps for Windows Phone 8&lt;/a&gt;, we’ve enabled code analysis to help improve the quality of their phone apps.&lt;a href="https://sdq96a.bay.livefilestore.com/y1pviek7HgeeKEm7Ov3CgdbTL_wYjT2zCVNKVz-dqIt9FGOCU2LyyYXl-sSyr4Ycj4VOZTuNejuT6gYBv0zlAJ8WUVgIzcsMQAd/image3.png?psid=1"&gt;&lt;img border="0" alt="" src="https://sdq96a.bay.livefilestore.com/y1pviek7HgeeKEm7Ov3CgdbTL_wYjT2zCVNKVz-dqIt9FGOCU2LyyYXl-sSyr4Ycj4VOZTuNejuT6gYBv0zlAJ8WUVgIzcsMQAd/image3.png?psid=1" width="657" height="376" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h5&gt;Developer Productivity&lt;/h5&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;Brian Harry - Code Map&lt;/strong&gt; – Code Map is a super cool new feature in the architecture tools that allows me to incrementally build up an architecture/dependency diagram as I explore code.&amp;#160; It makes walking into an existing code base and exploring it WAY easier than it ever has been before.&amp;#160; You can incrementally lay out a diagram one element at a time (class, method, etc) as you explore the code.&amp;#160; You can “query” to expand the diagram – like adding all derived classes or all referencing methods, etc to incrementally understand the code dependencies.&lt;/p&gt;

  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-36-52-metablogapi/8802.codemap_5F00_screenshot_5F00_67951FC7.png"&gt;&lt;img title="codemap_screenshot" border="0" alt="codemap_screenshot" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-36-52-metablogapi/2438.codemap_5F00_screenshot_5F00_thumb_5F00_7FB88A22.png" width="804" height="459" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Additional Reading:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/bharry/archive/2012/11/26/visual-studio-2012-update-1-is-available.aspx" target="_blank"&gt;Brian Harry’s blog&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/somasegar/archive/2012/11/26/visual-studio-2012-update-1-now-available.aspx"&gt;Soma’s blog&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1490970" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS/default.aspx">TFS</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Windows+8/default.aspx">Windows 8</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+2012/default.aspx">TFS 2012</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+2012/default.aspx">Visual Studio 2012</category></item><item><title>Visual Studio 2012–News (iPhone, Web Test Management, 260 Limit and more)</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2012/09/25/visual-studio-2012-news-iphone-web-test-management-260-limit-and-more.aspx</link><pubDate>Tue, 25 Sep 2012 15:19:42 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1309668</guid><dc:creator>shair</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=1309668</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2012/09/25/visual-studio-2012-news-iphone-web-test-management-260-limit-and-more.aspx#comments</comments><description>&lt;p&gt;With Visual Studio 2012 and TFS 2012 we have a lot of new stuff for Developers, Testers, Managers customers and more, and this is not the end….&lt;/p&gt;  &lt;p&gt;Microsoft continues to develop new features for 2012 version.&lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;Test Case Management On The Web&lt;/strong&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Brian Harry - &lt;/strong&gt;We’ve heard from a number of customers that in final acceptance testing, they don’t want to install anything on the test environment that’s not going to be in the production environment.&amp;#160; That’s understandable.&amp;#160; In our first update, we will be shipping a basic web based test case management and manual testing experience that will enable this scenario from a browser.&amp;#160; This won’t be in the first CTP but should appear in the next.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-36-52-metablogapi/3108.clip_5F00_image001_5F00_53E83633.png"&gt;&lt;img title="clip_image001" border="0" alt="clip_image001" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-36-52-metablogapi/0572.clip_5F00_image001_5F00_thumb_5F00_2C41BA09.png" width="800" height="344" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;260 Character Path Limit&lt;/strong&gt;&lt;/h3&gt;  &lt;p&gt;Some call this Microsoft “Achilles’ heel” but I’ll not do so far, this is with no doubt a very annoying bug that not once cause me to change and modify entire environments.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/b/bharry/archive/2012/09/12/visual-studio-update-this-fall.aspx" target="_blank"&gt;Brian Harry&lt;/a&gt; wrote that after “CTP 1” there will be a fix that will increase the 260 characters limit to &lt;strong&gt;400 characters&lt;/strong&gt;. &lt;/p&gt;  &lt;p&gt;This will allow us more flexibility in Source Control usage.&lt;/p&gt;  &lt;h3&gt;Project Management Improvements&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Brian Harry - Kanban support&lt;/strong&gt; – You may have seen the &lt;a href="http://tfspreview.com/en-us/home/news/2012/aug-13/"&gt;new kanban feature&lt;/a&gt; we introduced on our cloud service recently.&amp;#160; In our first update, we’ll be bringing that and some additional improvements.&amp;#160; This will give you an even broader set of choices for managing your project.&amp;#160; You can use our Scrum based Agile Project Management tools, Kanban or Project and Project Server – or a combination of them.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;img title="Work in progress limits" alt="Work in progress limits" src="http://tfspreview.com/Media/Home/News/news120813c.png" /&gt;&lt;/p&gt;  &lt;h3&gt;iOS, iPhone and iPad Shapes&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_07608059.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;float:right;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" align="right" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_728E87D8.png" width="189" height="351" /&gt;&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;Microsoft released new icons and shapes for PowerPoint StoryBoarding tool available in Visual Studio 2012.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;To use:&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Download Packs:      &lt;ul&gt;       &lt;li&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/14530351-fa4f-4e90-a378-741c924cc4e6" target="_blank"&gt;iOS Icons&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/79d59a31-3763-407c-adfd-e447c63dca9b" target="_blank"&gt;iPhone Shapes&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/f3119c8e-ffd7-479a-a7e7-df6177b8df95" target="_blank"&gt;iPad Shapes&lt;/a&gt; &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Open PowerPoint. &lt;/li&gt;    &lt;li&gt;Navigate to the Storyboarding tab. &lt;/li&gt;    &lt;li&gt;Click the &amp;#39;Import Shapes&amp;#39; button and select this file.      &lt;br /&gt;Now your shapes will be imported into your Storyboard Shapes library for you to use. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/hh409276(v=vs.110).aspx" target="_blank"&gt;Learn more about PowerPoint Storyboarding.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/site/search?f%5B0%5D.Type=RootCategory&amp;amp;f%5B0%5D.Value=StoryboardShapes" target="_blank"&gt;More Storyboard Shapes&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Developer Productivity&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Brian Harry - Code Map&lt;/strong&gt; – Code Map is a super cool new feature in the architecture tools that allows me to incrementally build up an architecture/dependency diagram as I explore code.&amp;#160; It makes walking into an existing code base and exploring it WAY easier than it ever has been before.&amp;#160; You can incrementally lay out a diagram one element at a time (class, method, etc) as you explore the code.&amp;#160; You can “query” to expand the diagram – like adding all derived classes or all referencing methods, etc to incrementally understand the code dependencies.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-36-52-metablogapi/8802.codemap_5F00_screenshot_5F00_67951FC7.png"&gt;&lt;img title="codemap_screenshot" border="0" alt="codemap_screenshot" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-36-52-metablogapi/2438.codemap_5F00_screenshot_5F00_thumb_5F00_7FB88A22.png" width="804" height="459" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Microsoft Visual Studio Team Foundation Server 2012 Power Tools&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/b1ef7eb2-e084-4cb8-9bc7-06c3bad9148f" target="_blank"&gt;Download from here&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You can read more at the following blogs:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="http://tfspreview.com/en-us/home/news/" href="http://tfspreview.com/en-us/home/news/"&gt;http://tfspreview.com/en-us/home/news/&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a title="Brian Harry’s blog" href="http://blogs.msdn.com/b/bharry/"&gt;Brian Harry’s blog&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1309668" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS/default.aspx">TFS</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+Administration/default.aspx">TFS Administration</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+Utilities/default.aspx">TFS Utilities</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Testing/default.aspx">Testing</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TECH/default.aspx">TECH</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+2012/default.aspx">TFS 2012</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+2012/default.aspx">Visual Studio 2012</category></item><item><title>Visual Studio/TFS 2012 Release Candidate Available</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2012/06/01/visual-studio-tfs-2012-release-candidate-available.aspx</link><pubDate>Fri, 01 Jun 2012 13:39:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1108765</guid><dc:creator>shair</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=1108765</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2012/06/01/visual-studio-tfs-2012-release-candidate-available.aspx#comments</comments><description>&lt;div class="share-buttons"&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;PADDING-RIGHT:15px;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;&lt;a class="twitter-share-button" href="http://blogs.microsoft.co.il/blogs/shair/archive/2012/06/01/visual-studio-tfs-2012-release-candidate-available.aspx"&gt;Tweet&lt;/a&gt;&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;PADDING-RIGHT:25px;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;
&lt;script type="IN/Share"&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;&lt;iframe style="BORDER-BOTTOM:medium none;BORDER-LEFT:medium none;WIDTH:100px;HEIGHT:21px;OVERFLOW:hidden;BORDER-TOP:medium none;BORDER-RIGHT:medium none;" src="http://www.facebook.com/plugins/like.php?href=http://blogs.microsoft.co.il/blogs/shair/archive/2012/06/01/visual-studio-tfs-2012-release-candidate-available.aspx&amp;amp;send=false&amp;amp;layout=button_count&amp;amp;width=450&amp;amp;show_faces=false&amp;amp;action=like&amp;amp;colorscheme=light&amp;amp;font=segoe+ui&amp;amp;height=21&amp;amp;appId=184186808308137" frameborder="0"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;
&lt;div class="g-plusone"&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_38A935A4.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;float:right;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" align="right" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_445E7CD6.png" width="229" height="45" /&gt;&lt;/a&gt;Couple of hours ago &lt;a href="http://blogs.msdn.com/b/bharry/archive/2012/05/31/visual-studio-tfs-2012-release-candidate-available-today.aspx" target="_blank"&gt;Brian Harry&lt;/a&gt; post about the RC version for VS and TFS 2010 + Alex Golesh post about &lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2012/05/31/windows-8-release-preview.aspx"&gt;Windows 8 Release Preview&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;As we know VS/TFS 2012 comes with many great improvements and new features that push forward the ALM platform allowing more and more people to work as team more easily and much more productively. &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=240162"&gt;Visual Studio Product website&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://dl.microsoft.com/eclipse/tfs/preview"&gt;Eclipse update site for the latest Team Explorer Everywhere preview&lt;/a&gt; or &lt;a href="http://go.microsoft.com/fwlink/?LinkID=237275"&gt;the download page&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb386063(v=vs.110)"&gt;Overall summary of changes since the Beta&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/jasonz/archive/2012/05/31/announcing-the-release-candidate-rc-of-visual-studio-2012-and-net-framework-4-5.aspx"&gt;Jason’s blog post on the RC release&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;For filing bugs&lt;b&gt;: &lt;/b&gt;&lt;a href="http://connect.microsoft.com/visualstudio"&gt;Visual Studio and TFS&lt;/a&gt;, &lt;a href="http://connect.microsoft.com/lightswitch"&gt;LightSwitch&lt;/a&gt;, or &lt;a href="http://connect.microsoft.com/blend"&gt;Blend&lt;/a&gt; Connect sites &lt;/li&gt;    &lt;li&gt;For asking questions&lt;b&gt;:&lt;/b&gt; &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/vsvnext"&gt;Visual Studio and TFS&lt;/a&gt; or &lt;a href="http://social.msdn.microsoft.com/Forums/en-us/category/windowsapps"&gt;Windows&lt;/a&gt; forums&lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Query launcher in Pending Changes&lt;/strong&gt; – We heard the feedback that people wanted an easier way to associate work items on checkin.&amp;#160; We added a Queries drop down to pending changes allowing you to launch a query and then drag &amp;amp; drop a work item into the associated work items list.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/7115.image_thumb_6FF32731_1049DD83.png"&gt;&lt;img title="7115.image_thumb_6FF32731" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="7115.image_thumb_6FF32731" src="http://blogs.microsoft.co.il/blogs/shair/7115.image_thumb_6FF32731_thumb_31995D52.png" width="753" height="354" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Color, theming, and icons&lt;/strong&gt; – We made some additional improvements to our colors and theming – a particularly good example is Source Control Explorer in dark theme.&amp;#160; It looked horrible in the Beta and it looks pretty good in the RC.&amp;#160; Some of our tool windows still don’t look good in dark but we’ve tried to get the most common ones for now and will get the remaining ones as soon as we can.&amp;#160; There are still a few improvements to come for RTM but we’re getting close.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/4786.image_thumb_798B6F9A_35FFB84C.png"&gt;&lt;img title="4786.image_thumb_798B6F9A" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="4786.image_thumb_798B6F9A" src="http://blogs.microsoft.co.il/blogs/shair/4786.image_thumb_798B6F9A_thumb_068123B3.png" width="752" height="381" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://blogs.msdn.com/b/bharry/archive/2012/05/31/visual-studio-tfs-2012-release-candidate-available-today.aspx" target="_blank"&gt;Read the full article from Brian Harry&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1108765" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS/default.aspx">TFS</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+Administration/default.aspx">TFS Administration</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Testing/default.aspx">Testing</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TECH/default.aspx">TECH</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+2012/default.aspx">TFS 2012</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+2012/default.aspx">Visual Studio 2012</category></item><item><title>TFS API Part 47 (VS11) – Manage Iterations Dates</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2012/05/28/tfs-api-part-47-vs11-manage-iterations-dates.aspx</link><pubDate>Mon, 28 May 2012 15:26:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1105155</guid><dc:creator>shair</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=1105155</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2012/05/28/tfs-api-part-47-vs11-manage-iterations-dates.aspx#comments</comments><description>&lt;div class="share-buttons"&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;PADDING-RIGHT:15px;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;&lt;a class="twitter-share-button" href="http://blogs.microsoft.co.il/blogs/shair/archive/2012/05/28/tfs-api-part-47-vs11-manage-iterations-dates.aspx"&gt;Tweet&lt;/a&gt;&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;PADDING-RIGHT:25px;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;
&lt;script type="IN/Share"&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;&lt;iframe style="BORDER-BOTTOM:medium none;BORDER-LEFT:medium none;WIDTH:100px;HEIGHT:21px;OVERFLOW:hidden;BORDER-TOP:medium none;BORDER-RIGHT:medium none;" src="http://www.facebook.com/plugins/like.php?href=http://blogs.microsoft.co.il/blogs/shair/archive/2012/05/28/tfs-api-part-47-vs11-manage-iterations-dates.aspx&amp;amp;send=false&amp;amp;layout=button_count&amp;amp;width=450&amp;amp;show_faces=false&amp;amp;action=like&amp;amp;colorscheme=light&amp;amp;font=segoe+ui&amp;amp;height=21&amp;amp;appId=184186808308137" frameborder="0"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;
&lt;div class="g-plusone"&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;Over the last posts I talked about “&lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/2012/05/23/tfs-api-part-46-vs11-team-settings.aspx" target="_blank"&gt;TFS API Part 46 (VS11) – Team Settings&lt;/a&gt;”, in this post I’ll show how to get and change Iteration Dates from TFS API.&lt;/p&gt;  &lt;p&gt;We’ll show all Teams under a specific Team Project and once you click on a Team you will see its Iterations and Dates.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_759F5D2A.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_1EC6F569.png" width="771" height="435" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_00B8C1A8.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_3ED1DC59.png" width="764" height="270" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/1097395/download.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Step 1: Create Project and Add Reference&lt;/h2&gt;  &lt;p&gt;Create an WPF application and add the following references:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;First add reference for:&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Microsoft.TeamFoundation.Build.Client (11.0.0.0) &lt;/li&gt;    &lt;li&gt;Microsoft.TeamFoundation.Build.Common.dll&amp;#160; (11.0.0.0) &lt;/li&gt;    &lt;li&gt;System.Windows.Forms.dll &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;(C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ReferenceAssemblies\v2.0\)&lt;/p&gt;  &lt;h2&gt;Step 2: Connect and Get Teams&lt;/h2&gt;  &lt;p&gt;We need to get the &lt;span&gt;&lt;font color="#2b91af"&gt;TeamSettingsConfigurationService &lt;/font&gt;&lt;font color="#000000"&gt;so we’ll have all teams settings&lt;/font&gt;&lt;/span&gt; and also we need to obtain the &lt;span&gt;&lt;font color="#2b91af"&gt;ICommonStructureService4 &lt;/font&gt;&lt;/span&gt;service - Defines methods for working with the common structures Areas and Iterations.&lt;/p&gt;  &lt;div class="code" style="background:white;"&gt;   &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:10pt;"&gt;private&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:10pt;"&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt; btnConnect_Click(&lt;span&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;/span&gt; sender, &lt;span&gt;&lt;font color="#2b91af"&gt;RoutedEventArgs&lt;/font&gt;&lt;/span&gt; e)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; tpp = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;TeamProjectPicker&lt;/font&gt;&lt;/span&gt;(&lt;span&gt;&lt;font color="#2b91af"&gt;TeamProjectPickerMode&lt;/font&gt;&lt;/span&gt;.SingleProject, &lt;span&gt;&lt;font color="#0000ff"&gt;false&lt;/font&gt;&lt;/span&gt;);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; tpp.ShowDialog();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (tpp.SelectedTeamProjectCollection == &lt;span&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;) &lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; tfs = tpp.SelectedTeamProjectCollection;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; projectInfo = tpp.SelectedProjects[0];&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; teamConfig = tfs.GetService&amp;lt;&lt;span&gt;&lt;font color="#2b91af"&gt;TeamSettingsConfigurationService&lt;/font&gt;&lt;/span&gt;&amp;gt;();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; css = tfs.GetService&amp;lt;&lt;span&gt;&lt;font color="#2b91af"&gt;ICommonStructureService4&lt;/font&gt;&lt;/span&gt;&amp;gt;();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; GetTeams();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;The &lt;strong&gt;GetTeams &lt;/strong&gt;method use the &lt;strong&gt;GetTeamConfigurationsForUser&lt;/strong&gt; method from &lt;span&gt;&lt;font color="#2b91af"&gt;TeamSettingsConfigurationService &lt;/font&gt;&lt;font color="#000000"&gt;to get all teams settings.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;div class="code" style="background:white;"&gt;   &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:10pt;"&gt;void&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:10pt;"&gt; GetTeams()&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; configs = teamConfig.GetTeamConfigurationsForUser(&lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;[] { projectInfo.Uri });&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; listTeams.ItemsSource = configs;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;h2&gt;Step 3: Get Team Iterations&lt;/h2&gt;  &lt;p&gt;More on Iterations and Areas:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/2009/01/30/tfs-api-part-9-get-area-iteration-programmatically.aspx"&gt;TFS API Part 9: Get Area/Iteration Programmatically&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/2009/01/30/tfs-api-part-10-add-area-iteration-programmatically.aspx"&gt;TFS API Part 10: Add Area/Iteration Programmatically&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/2009/02/02/tfs-api-part-11-get-area-iteration-security-settings-using-iauthorizationservice.aspx"&gt;TFS API Part 11: Get Area/Iteration Security Settings Using IAuthorizationService&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Using the &lt;span&gt;&lt;font color="#2b91af"&gt;ICommonStructureService4 &lt;/font&gt;&lt;font color="#000000"&gt;we can pull and add new Iterations and Area to TFS.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&lt;font color="#000000"&gt;When the user click on the Team List and select one team, can take the Team Settings and export the related iterations for that Team.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;div class="code" style="background:white;"&gt;   &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:10pt;"&gt;private&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:10pt;"&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt; listTeams_SelectionChanged(&lt;span&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;/span&gt; sender, &lt;span&gt;&lt;font color="#2b91af"&gt;SelectionChangedEventArgs&lt;/font&gt;&lt;/span&gt; e)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (listTeams.SelectedItem == &lt;span&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;) &lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; treeIterations.Items.Clear();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; teamSettings = listTeams.SelectedItem &lt;span&gt;&lt;font color="#0000ff"&gt;as&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;TeamConfiguration&lt;/font&gt;&lt;/span&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; root = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;TreeViewItem&lt;/font&gt;&lt;/span&gt;();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; root.Header = teamSettings.TeamName;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; BuildIterationTree(teamSettings.TeamSettings.IterationPaths, root);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; treeIterations.Items.Add(root);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Now, instead on parsing the Xml (Ugly….) you can just convert the XmlNode to NodeInfo object, the NodeInfo contains Start, End Date and everything else related to the Iteration.&lt;/p&gt;  &lt;div class="code" style="background:white;"&gt;   &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:10pt;"&gt;namespace&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:10pt;"&gt; Microsoft.TeamFoundation.Server&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; [&lt;span&gt;&lt;font color="#2b91af"&gt;Serializable&lt;/font&gt;&lt;/span&gt;]&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;class&lt;/font&gt;&lt;/span&gt; &lt;/font&gt;&lt;span&gt;&lt;font style="font-size:10pt;" color="#2b91af"&gt;NodeInfo&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;DateTime&lt;/font&gt;&lt;/span&gt;? FinishDate;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; Name;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; ParentUri;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; Path;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; ProjectUri;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;Property&lt;/font&gt;&lt;/span&gt;[] Properties;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;DateTime&lt;/font&gt;&lt;/span&gt;? StartDate;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; StructureType;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; Uri;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; NodeInfo();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; NodeInfo(&lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; uri, &lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; name, &lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; structureType, &lt;span&gt;&lt;font color="#2b91af"&gt;Property&lt;/font&gt;&lt;/span&gt;[] properties, &lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; parentUri, &lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; projectUri, &lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; path);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; NodeInfo(&lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; uri, &lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; name, &lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; structureType, &lt;span&gt;&lt;font color="#2b91af"&gt;Property&lt;/font&gt;&lt;/span&gt;[] properties, &lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; parentUri, &lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; projectUri, &lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; path, &lt;span&gt;&lt;font color="#2b91af"&gt;DateTime&lt;/font&gt;&lt;/span&gt;? startDate, &lt;span&gt;&lt;font color="#2b91af"&gt;DateTime&lt;/font&gt;&lt;/span&gt;? finishDate);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;override&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; ToString();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;So in order to get the NodeInfo we can use two ways:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;GetNodeFromPath – Path&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;GetNode – Id&lt;/strong&gt;&amp;#160; (I’ll show how in Step 4) &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Now if you choose to use Path you need to add the “Iteration” word after the team project name.&lt;/p&gt;  &lt;div class="code"&gt;   &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:10pt;"&gt;void&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:10pt;"&gt; BuildIterationTree(&lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt;[] paths, &lt;span&gt;&lt;font color="#2b91af"&gt;TreeViewItem&lt;/font&gt;&lt;/span&gt; item)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;foreach&lt;/font&gt;&lt;/span&gt; (&lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; nodePath &lt;span&gt;&lt;font color="#0000ff"&gt;in&lt;/font&gt;&lt;/span&gt; paths)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; projectNameIndex = nodePath.IndexOf(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;\\&amp;quot;&lt;/font&gt;&lt;/span&gt;, 2);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; fullPath = nodePath.Insert(projectNameIndex, &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;\\Iteration&amp;quot;&lt;/font&gt;&lt;/span&gt;);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;span&gt;&lt;font style="font-size:10pt;" color="#008000"&gt;//Project Name\\Iteration\Iteration 1&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; nodeInfo = css.GetNodeFromPath(fullPath);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; subTreeItem = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;TreeViewItem&lt;/font&gt;&lt;/span&gt;();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; subTreeItem.Header = &lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt;.Format(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;{0} - Start: {1} - Finish: {2}&amp;quot;&lt;/font&gt;&lt;/span&gt;, nodeInfo.Name, nodeInfo.StartDate, nodeInfo.FinishDate);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; item.Items.Add(subTreeItem);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;h2&gt;Step 4: Get All Iteration Tree&lt;/h2&gt;  &lt;p&gt;So as we took the Iterations from specific Team we can take all Iterations under Team Project and build the full tree includes Iteration dates.&lt;/p&gt;  &lt;p&gt;I’ve add a button on the top right corner of the application, when you click on that button we using the &lt;span&gt;&lt;font color="#2b91af"&gt;ICommonStructureService4 &lt;strong&gt;&lt;font color="#000000"&gt;ListStructures&lt;/font&gt; &lt;/strong&gt;&lt;/font&gt;&lt;font color="#000000"&gt;method to get the iteration tree and then export the nodes under the iteration (the list structure has Area and Iteration inside it)&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;div class="code" style="background:white;"&gt;   &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:10pt;"&gt;private&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:10pt;"&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt; btnFullTree_Click(&lt;span&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;/span&gt; sender, &lt;span&gt;&lt;font color="#2b91af"&gt;RoutedEventArgs&lt;/font&gt;&lt;/span&gt; e)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; treeIterations.Items.Clear();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#2b91af"&gt;NodeInfo&lt;/font&gt;&lt;/span&gt;[] structures = css.ListStructures(projectInfo.Uri);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#2b91af"&gt;NodeInfo&lt;/font&gt;&lt;/span&gt; iterations = structures.FirstOrDefault(n =&amp;gt; n.StructureType.Equals(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;ProjectLifecycle&amp;quot;&lt;/font&gt;&lt;/span&gt;));&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#2b91af"&gt;XmlElement&lt;/font&gt;&lt;/span&gt; iterationsTree = css.GetNodesXml(&lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;[] { iterations.Uri }, &lt;span&gt;&lt;font color="#0000ff"&gt;true&lt;/font&gt;&lt;/span&gt;);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; root = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;TreeViewItem&lt;/font&gt;&lt;/span&gt;();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; root.Header = projectInfo.Name;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; BuildIterationTree(iterationsTree.ChildNodes, root);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; treeIterations.Items.Add(root);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Now as we did for the Team Iterations (there we passed string[]) now we’re passing list of nodes.&lt;/p&gt;  &lt;p&gt;The easiest way here to obtain the &lt;strong&gt;NodeInfo&lt;/strong&gt; object is using &lt;strong&gt;GetNode&lt;/strong&gt; method (by id), so I extract the Node Id from the Node Xml and using that ID I can get the NodeInfo.&lt;/p&gt;  &lt;div class="code" style="background:white;"&gt;   &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:10pt;"&gt;void&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:10pt;"&gt; BuildIterationTree(&lt;span&gt;&lt;font color="#2b91af"&gt;XmlNodeList&lt;/font&gt;&lt;/span&gt; subItems, &lt;span&gt;&lt;font color="#2b91af"&gt;TreeViewItem&lt;/font&gt;&lt;/span&gt; item)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;foreach&lt;/font&gt;&lt;/span&gt; (&lt;span&gt;&lt;font color="#2b91af"&gt;XmlNode&lt;/font&gt;&lt;/span&gt; node &lt;span&gt;&lt;font color="#0000ff"&gt;in&lt;/font&gt;&lt;/span&gt; subItems)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; nodeId = GetNodeID(node.OuterXml);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; nodeInfo = css.GetNode(nodeId);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; subTreeItem = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;TreeViewItem&lt;/font&gt;&lt;/span&gt;();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; subTreeItem.Header = &lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt;.Format(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;{0} - Start: {1} - Finish: {2}&amp;quot;&lt;/font&gt;&lt;/span&gt;, nodeInfo.Name, nodeInfo.StartDate, nodeInfo.FinishDate);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; item.Items.Add(subTreeItem);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (node.ChildNodes.Count &amp;gt; 0)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; BuildIterationTree(node.ChildNodes, subTreeItem);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/1097395/download.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Enjoy.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1105155" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS/default.aspx">TFS</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+Administration/default.aspx">TFS Administration</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TECH/default.aspx">TECH</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+API/default.aspx">TFS API</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+11/default.aspx">TFS 11</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET+4.5/default.aspx">.NET 4.5</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TfsTeamService/default.aspx">TfsTeamService</category></item><item><title>TFS API Part 46 (VS11) – Team Settings</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2012/05/23/tfs-api-part-46-vs11-team-settings.aspx</link><pubDate>Wed, 23 May 2012 16:35:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1100367</guid><dc:creator>shair</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=1100367</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2012/05/23/tfs-api-part-46-vs11-team-settings.aspx#comments</comments><description>&lt;div class="share-buttons"&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;PADDING-RIGHT:15px;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;&lt;a class="twitter-share-button" href="http://blogs.microsoft.co.il/blogs/shair/archive/2012/05/23/tfs-api-part-46-vs11-team-settings.aspx"&gt;Tweet&lt;/a&gt;&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;PADDING-RIGHT:25px;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;
&lt;script type="IN/Share"&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;&lt;iframe style="BORDER-BOTTOM:medium none;BORDER-LEFT:medium none;WIDTH:100px;HEIGHT:21px;OVERFLOW:hidden;BORDER-TOP:medium none;BORDER-RIGHT:medium none;" src="http://www.facebook.com/plugins/like.php?href=http://blogs.microsoft.co.il/blogs/shair/archive/2012/05/23/tfs-api-part-46-vs11-team-settings.aspx&amp;amp;send=false&amp;amp;layout=button_count&amp;amp;width=450&amp;amp;show_faces=false&amp;amp;action=like&amp;amp;colorscheme=light&amp;amp;font=segoe+ui&amp;amp;height=21&amp;amp;appId=184186808308137" frameborder="0"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;
&lt;div class="g-plusone"&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;In the previous posts “&lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/2012/05/21/tfs-api-part-45-vs11-modify-teams-and-team-members.aspx"&gt;TFS API Part 45 (VS11) – Modify Teams and Team Members&lt;/a&gt;” I talked about Teams, from getting all team to modify and creating new Team using TFS API.&lt;/p&gt;  &lt;p&gt;Now, Teams are more than just a “Security Group”, they hold specific settings such as relevant Areas/Iteration for that Team.&lt;/p&gt;  &lt;p&gt;The “Team” can be assigned to Backlog Iteration (Set as Team’s backlog Iteration), this takes all paths under that iteration and add them to the team backlog. You can also change the Iteration backlog to another path (not just the root), you just need at least one child below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_032293A2.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_101C73B3.png" width="194" height="153" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_679D919E.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_254A795B.png" width="448" height="154" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_1870233D.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_1DDE93E1.png" width="627" height="303" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And from TFS 11 you can define &lt;strong&gt;Start Date &lt;/strong&gt;and &lt;strong&gt;End Date &lt;/strong&gt;for &lt;strong&gt;Iterations&lt;/strong&gt;, and there is a cool fact – those dates are not just for beauty – TFS takes those iterations and automatically show you what is the current Iteration that you working on, what iterations you completed (past) and what iterations are next. you might have overlap iterations but for some reason you can only have one “Current” iteration. &lt;/p&gt;  &lt;p&gt;The “Current” iteration is defined by the iteration for which the start date is less than or equal to today’s date and the end date is greater than or equal to today and than is just sorted by Name.&lt;/p&gt;  &lt;p&gt;After you define the Iterations for the Project and for each Team you might want to define the Areas for the Team, you can also define a Default Area – Means that each work item you open&amp;#160; under that Team.&lt;/p&gt;  &lt;p&gt;When you define “Area\s” for Team this means that when you enter your Product Backlog (not query) you will only see work items under that “Area” (you choose if to include sub-areas)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_3FE6EFA7.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_128559D7.png" width="630" height="432" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now, after we understand what and why let’s talk about How using TFS API.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_3B40BF20.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_000CE355.png" width="756" height="436" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/1097291/download.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;&lt;strong&gt;Step 1: Create Project and Add Reference&lt;/strong&gt;&lt;/h2&gt;  &lt;p&gt;Create an WPF application and add the following references:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;First add reference for:&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Microsoft.TeamFoundation.Build.Client (11.0.0.0) &lt;/li&gt;    &lt;li&gt;Microsoft.TeamFoundation.Build.Common.dll&amp;#160; (11.0.0.0) &lt;/li&gt;    &lt;li&gt;System.Windows.Forms.dll &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;(C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ReferenceAssemblies\v2.0\)&lt;/p&gt;  &lt;h2&gt;Step 2: Connect and Get Teams Settings&lt;/h2&gt;  &lt;p&gt;In the previous posts we used &lt;span&gt;&lt;font color="#2b91af"&gt;TfsTeamService &lt;/font&gt;&lt;font color="#000000"&gt;to get all teams under the Team Project. another way is to use the &lt;span&gt;&lt;font color="#2b91af"&gt;TeamSettingsConfigurationService.&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;font color="#2b91af"&gt;The TeamSettingsConfigurationService has two methods:&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;GetTeamConfigurationsForUser &lt;/li&gt;    &lt;li&gt;SetTeamSettings &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;We’ll use the &lt;strong&gt;GetTeamConfigurationsForUser&lt;/strong&gt; passing the Project Uri, this will return all Teams under that project.&lt;/p&gt;  &lt;div class="code" style="background:white;"&gt;   &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:10pt;"&gt;private&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:10pt;"&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt; btnConnect_Click(&lt;span&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;/span&gt; sender, &lt;span&gt;&lt;font color="#2b91af"&gt;RoutedEventArgs&lt;/font&gt;&lt;/span&gt; e)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; tpp = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;TeamProjectPicker&lt;/font&gt;&lt;/span&gt;(&lt;span&gt;&lt;font color="#2b91af"&gt;TeamProjectPickerMode&lt;/font&gt;&lt;/span&gt;.SingleProject, &lt;span&gt;&lt;font color="#0000ff"&gt;false&lt;/font&gt;&lt;/span&gt;);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; tpp.ShowDialog();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (tpp.SelectedTeamProjectCollection == &lt;span&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;) &lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; tfs = tpp.SelectedTeamProjectCollection;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; projectInfo = tpp.SelectedProjects[0];&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; teamConfig = tfs.GetService&amp;lt;&lt;span&gt;&lt;font color="#2b91af"&gt;TeamSettingsConfigurationService&lt;/font&gt;&lt;/span&gt;&amp;gt;();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; GetTeams();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:10pt;"&gt;void&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:10pt;"&gt; GetTeams()&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; configs = teamConfig.GetTeamConfigurationsForUser(&lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;[] { projectInfo.Uri });&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; listTeams.ItemsSource = configs;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;h2&gt;Step 3: Get Team Settings&lt;/h2&gt;  &lt;p&gt;Now when you select a Team from the Teams list we’ll use the &lt;strong&gt;TeamSettings&lt;/strong&gt; object to pull the Areas + Iterations for that Team. You will also have the BacklogIterationPath and CurrentiterationPath properties (as we talked above).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_63434872.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_07882CF5.png" width="803" height="177" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="code" style="background:white;"&gt;   &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:10pt;"&gt;private&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:10pt;"&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt; listTeams_SelectionChanged(&lt;span&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;/span&gt; sender, &lt;span&gt;&lt;font color="#2b91af"&gt;SelectionChangedEventArgs&lt;/font&gt;&lt;/span&gt; e)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (listTeams.SelectedItem == &lt;span&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;) &lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; teamConfig = listTeams.SelectedItem &lt;span&gt;&lt;font color="#0000ff"&gt;as&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;TeamConfiguration&lt;/font&gt;&lt;/span&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; txtBacklogIteration.Text = teamConfig.TeamSettings.BacklogIterationPath;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; txtCurrentIteration.Text = teamConfig.TeamSettings.CurrentIterationPath;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; listIterations.ItemsSource = teamConfig.TeamSettings.IterationPaths;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; listAreas.ItemsSource = teamConfig.TeamSettings.TeamFieldValues;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_1747C1F9.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_5B3B8043.png" width="756" height="436" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/1097291/download.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Enjoy&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1100367" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS/default.aspx">TFS</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+Administration/default.aspx">TFS Administration</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TECH/default.aspx">TECH</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+API/default.aspx">TFS API</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+11/default.aspx">TFS 11</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET+4.5/default.aspx">.NET 4.5</category></item><item><title>TFS API Part 45 (VS11) – Modify Teams and Team Members</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2012/05/21/tfs-api-part-45-vs11-modify-teams-and-team-members.aspx</link><pubDate>Mon, 21 May 2012 12:42:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1098159</guid><dc:creator>shair</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=1098159</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2012/05/21/tfs-api-part-45-vs11-modify-teams-and-team-members.aspx#comments</comments><description>&lt;div class="share-buttons"&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;PADDING-RIGHT:15px;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;&lt;a class="twitter-share-button" href="http://blogs.microsoft.co.il/blogs/shair/archive/2012/05/21/tfs-api-part-45-vs11-modify-teams-and-team-members.aspx"&gt;Tweet&lt;/a&gt;&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;PADDING-RIGHT:25px;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;
&lt;script type="IN/Share"&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;&lt;iframe style="BORDER-BOTTOM:medium none;BORDER-LEFT:medium none;WIDTH:100px;HEIGHT:21px;OVERFLOW:hidden;BORDER-TOP:medium none;BORDER-RIGHT:medium none;" src="http://www.facebook.com/plugins/like.php?href=http://blogs.microsoft.co.il/blogs/shair/archive/2012/05/21/tfs-api-part-45-vs11-modify-teams-and-team-members.aspx&amp;amp;send=false&amp;amp;layout=button_count&amp;amp;width=450&amp;amp;show_faces=false&amp;amp;action=like&amp;amp;colorscheme=light&amp;amp;font=segoe+ui&amp;amp;height=21&amp;amp;appId=184186808308137" frameborder="0"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;
&lt;div class="g-plusone"&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;In my previous post “&lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/2012/05/20/tfs-api-part-44-vs11-teams-and-team-members.aspx" target="_blank"&gt;Teams and Team Members&lt;/a&gt;”&amp;#160; I talked about new Service in TFS API called – TfsTeamService. Using this service we can control Teams and Team Members under TFS.&lt;/p&gt;  &lt;p&gt;We can create and remove Teams and Team Members using TFS API. I know this can be quite confusing but Teams in TFS are simply Group (Security Group), same as Contributors, Administrators etc.&lt;/p&gt;  &lt;p&gt;If you open Security tab under TFS Web Management you can see that there is two separate lists of Groups – Teams and TFS Groups, I’ll show how to separate between Teams and Groups.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_46FEC180.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_12EA222D.png" width="210" height="306" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In order to add members or remove them from specific Team we need to use the &lt;strong&gt;&lt;u&gt;IGroupSecurityService.&lt;/u&gt;&lt;/strong&gt; You can read more here:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/2011/12/07/tfs-api-part-41-manage-groups-and-members.aspx" target="_blank"&gt;TFS API Part 41–Manage Groups and Members&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/2010/11/24/tfs-api-part-32-add-and-remove-users-from-application-groups.aspx" target="_blank"&gt;TFS API Part 32 – Add and Remove Users From Application Groups&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The application below will show you two lists: Groups and Teams.    &lt;br /&gt;Then you will be able to Remove the Team or Group and for each you can get the members under it.     &lt;br /&gt;You can also create new Team.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_1A45E1DA.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_3180C07E.png" width="747" height="481" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/shair/entry1097183.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;&lt;strong&gt;Step 1: Create Project and Add Reference&lt;/strong&gt;&lt;/h2&gt;  &lt;p&gt;Create an WPF application and add the following references:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;First add reference for:&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Microsoft.TeamFoundation.Build.Client (11.0.0.0) &lt;/li&gt;    &lt;li&gt;Microsoft.TeamFoundation.Build.Common.dll&amp;#160; (11.0.0.0) &lt;/li&gt;    &lt;li&gt;System.Windows.Forms.dll &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;font size="2"&gt;(C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ReferenceAssemblies\v2.0\)&lt;/font&gt;&lt;/p&gt;  &lt;h2&gt;Step 2: Connect Team Foundation Server&lt;/h2&gt;  &lt;p&gt;Connect to TFS and obtain the &lt;span&gt;&lt;font color="#2b91af"&gt;TfsTeamService &lt;font color="#000000"&gt;so we get the Team list and we need the &lt;/font&gt;&lt;span&gt;&lt;font color="#2b91af"&gt;&lt;font color="#000000"&gt;&lt;span&gt;&lt;font color="#2b91af"&gt;IGroupSecurityService &lt;/font&gt;&lt;/span&gt;so we can add / remove Members and Groups.&lt;/font&gt;&amp;#160;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;div class="code" style="background:white;"&gt;   &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:10pt;"&gt;private&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:10pt;"&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt; btnConnect_Click(&lt;span&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;/span&gt; sender, &lt;span&gt;&lt;font color="#2b91af"&gt;RoutedEventArgs&lt;/font&gt;&lt;/span&gt; e)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; tpp = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;TeamProjectPicker&lt;/font&gt;&lt;/span&gt;(&lt;span&gt;&lt;font color="#2b91af"&gt;TeamProjectPickerMode&lt;/font&gt;&lt;/span&gt;.SingleProject, &lt;span&gt;&lt;font color="#0000ff"&gt;false&lt;/font&gt;&lt;/span&gt;);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; tpp.ShowDialog();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (tpp.SelectedTeamProjectCollection == &lt;span&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;) &lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; tfs = tpp.SelectedTeamProjectCollection;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; teamService = tfs.GetService&amp;lt;&lt;span&gt;&lt;font color="#2b91af"&gt;TfsTeamService&lt;/font&gt;&lt;/span&gt;&amp;gt;();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; projectInfo = tpp.SelectedProjects[0];&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; gss = (&lt;span&gt;&lt;font color="#2b91af"&gt;IGroupSecurityService&lt;/font&gt;&lt;/span&gt;)tfs.GetService(&lt;span&gt;&lt;font color="#0000ff"&gt;typeof&lt;/font&gt;&lt;/span&gt;(&lt;span&gt;&lt;font color="#2b91af"&gt;IGroupSecurityService&lt;/font&gt;&lt;/span&gt;));&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; GetTeams();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; GetGroups();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;To get the Teams list you only need to use the &lt;u&gt;TFSTeamService&lt;/u&gt; and call the &lt;strong&gt;QueryTeams&lt;/strong&gt; method.&lt;/p&gt;  &lt;p&gt;For getting the Project Groups we’ll use the &lt;span&gt;&lt;font color="#2b91af"&gt;IGroupSecurityService &lt;font color="#000000"&gt;calling&lt;/font&gt; &lt;font color="#000000"&gt;&lt;strong&gt;ListApplicationGroups&lt;/strong&gt;&lt;/font&gt; &lt;/font&gt;&lt;font color="#000000"&gt;passing the project uri, this will return all groups under that Team Project (also the teams), in order to exclude teams from that list I did a query to verify for each item that his Sig doesn&amp;#39;t exists in the TeamsList.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;div class="code" style="background:white;"&gt;   &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:10pt;"&gt;void&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:10pt;"&gt; GetTeams()&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; _teams = teamService.QueryTeams(projectInfo.Uri).ToList();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; listTeams.ItemsSource = _teams;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:10pt;"&gt;void&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:10pt;"&gt; GetGroups()&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#2b91af"&gt;Identity&lt;/font&gt;&lt;/span&gt;[] groups = gss.ListApplicationGroups(projectInfo.Uri);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; query = &lt;span&gt;&lt;font color="#0000ff"&gt;from&lt;/font&gt;&lt;/span&gt; _group &lt;span&gt;&lt;font color="#0000ff"&gt;in&lt;/font&gt;&lt;/span&gt; groups&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;where&lt;/font&gt;&lt;/span&gt; _group.Type == &lt;span&gt;&lt;font color="#2b91af"&gt;IdentityType&lt;/font&gt;&lt;/span&gt;.ApplicationGroup&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;amp;&amp;amp; !_teams.Any(t =&amp;gt; t.Identity.Descriptor.Identifier.Equals(_group.Sid))&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt;&lt;/span&gt; _group;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; listGroups.ItemsSource = query;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;h2&gt;Step 3: Add And Remove &lt;/h2&gt;  &lt;p&gt;Now to the easy part, to Create new Team just use the TfsTeamService and use the &lt;strong&gt;CreateTeam &lt;/strong&gt;method.&lt;/p&gt;  &lt;p&gt;Use the &lt;span&gt;&lt;font color="#2b91af"&gt;IGroupSecurityService &lt;/font&gt;&lt;font color="#000000"&gt;to Add members to Team or Group (The Same…) remove team/groups – you can ream more here - &lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/2011/12/07/tfs-api-part-41-manage-groups-and-members.aspx" target="_blank"&gt;TFS API Part 41–Manage Groups and Members&lt;/a&gt; &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;div class="code" style="background:white;"&gt;   &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;teamService.CreateTeam(projectInfo.Uri, txtTitle.Text, txtDescription.Text, &lt;span&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;         &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font size="2" face="Consolas"&gt;&lt;/font&gt;&lt;/p&gt;    &lt;div style="background:white;"&gt;     &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;gss.DeleteApplicationGroup(teamSid);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;   &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&lt;span&gt;&lt;font color="#2b91af" size="3"&gt;&lt;strong&gt;&lt;u&gt;TfsTeamService&lt;/u&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;div class="code" style="background:white;"&gt;   &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:10pt;"&gt;namespace&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:10pt;"&gt; Microsoft.TeamFoundation.Client&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;class&lt;/font&gt;&lt;/span&gt; &lt;/font&gt;&lt;span&gt;&lt;font style="font-size:10pt;" color="#2b91af"&gt;TfsTeamService&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; TfsTeamService();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;TeamFoundationTeam&lt;/font&gt;&lt;/span&gt; CreateTeam(&lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; projectId, &lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; name, &lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; description, &lt;span&gt;&lt;font color="#2b91af"&gt;IDictionary&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt;, &lt;span&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;/span&gt;&amp;gt; properties);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;TeamFoundationTeam&lt;/font&gt;&lt;/span&gt; GetDefaultTeam(&lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; projectUri, &lt;span&gt;&lt;font color="#2b91af"&gt;List&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt;&amp;gt; propertyNameFilters);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;Guid&lt;/font&gt;&lt;/span&gt; GetDefaultTeamId(&lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; projectUri);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt; Initialize(&lt;span&gt;&lt;font color="#2b91af"&gt;TfsConnection&lt;/font&gt;&lt;/span&gt; tfsConnection);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;IEnumerable&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span&gt;&lt;font color="#2b91af"&gt;TeamFoundationTeam&lt;/font&gt;&lt;/span&gt;&amp;gt; QueryTeams(&lt;span&gt;&lt;font color="#2b91af"&gt;IdentityDescriptor&lt;/font&gt;&lt;/span&gt; descriptor);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;IEnumerable&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span&gt;&lt;font color="#2b91af"&gt;TeamFoundationTeam&lt;/font&gt;&lt;/span&gt;&amp;gt; QueryTeams(&lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; projectId);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;IEnumerable&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span&gt;&lt;font color="#2b91af"&gt;TeamFoundationTeam&lt;/font&gt;&lt;/span&gt;&amp;gt; QueryTeams(&lt;span&gt;&lt;font color="#2b91af"&gt;IdentityDescriptor&lt;/font&gt;&lt;/span&gt; descriptor, &lt;span&gt;&lt;font color="#2b91af"&gt;List&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt;&amp;gt; propertyNameFilters);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;TeamFoundationTeam&lt;/font&gt;&lt;/span&gt; ReadTeam(&lt;span&gt;&lt;font color="#2b91af"&gt;Guid&lt;/font&gt;&lt;/span&gt; teamId, &lt;span&gt;&lt;font color="#2b91af"&gt;List&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt;&amp;gt; propertyNameFilters);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;TeamFoundationTeam&lt;/font&gt;&lt;/span&gt; ReadTeam(&lt;span&gt;&lt;font color="#2b91af"&gt;IdentityDescriptor&lt;/font&gt;&lt;/span&gt; descriptor, &lt;span&gt;&lt;font color="#2b91af"&gt;List&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt;&amp;gt; propertyNameFilters);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;TeamFoundationTeam&lt;/font&gt;&lt;/span&gt; ReadTeam(&lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; projectId, &lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; teamName, &lt;span&gt;&lt;font color="#2b91af"&gt;List&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt;&amp;gt; propertyNameFilters);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt; SetDefaultTeam(&lt;span&gt;&lt;font color="#2b91af"&gt;TeamFoundationTeam&lt;/font&gt;&lt;/span&gt; team);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt; SetDefaultTeamId(&lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; projectUri, &lt;span&gt;&lt;font color="#2b91af"&gt;Guid&lt;/font&gt;&lt;/span&gt; teamId);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt; UpdateTeam(&lt;span&gt;&lt;font color="#2b91af"&gt;TeamFoundationTeam&lt;/font&gt;&lt;/span&gt; team);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/shair/entry1097183.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1098159" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS/default.aspx">TFS</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+Administration/default.aspx">TFS Administration</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+Utilities/default.aspx">TFS Utilities</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TECH/default.aspx">TECH</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+API/default.aspx">TFS API</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+11/default.aspx">TFS 11</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+11/default.aspx">Visual Studio 11</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET+4.5/default.aspx">.NET 4.5</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TfsTeamService/default.aspx">TfsTeamService</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/IGroupSecurityService/default.aspx">IGroupSecurityService</category></item><item><title>TFS API Part 44 (VS11) – Teams and Team Members</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2012/05/20/tfs-api-part-44-vs11-teams-and-team-members.aspx</link><pubDate>Sun, 20 May 2012 12:31:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1097107</guid><dc:creator>shair</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=1097107</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2012/05/20/tfs-api-part-44-vs11-teams-and-team-members.aspx#comments</comments><description>&lt;div class="share-buttons"&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;PADDING-RIGHT:15px;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;&lt;a class="twitter-share-button" href="http://blogs.microsoft.co.il/blogs/shair/archive/2012/05/20/tfs-api-part-44-vs11-teams-and-team-members.aspx"&gt;Tweet&lt;/a&gt;&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;PADDING-RIGHT:25px;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;
&lt;script type="IN/Share"&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;&lt;iframe style="BORDER-BOTTOM:medium none;BORDER-LEFT:medium none;WIDTH:100px;HEIGHT:21px;OVERFLOW:hidden;BORDER-TOP:medium none;BORDER-RIGHT:medium none;" src="http://www.facebook.com/plugins/like.php?href=http://blogs.microsoft.co.il/blogs/shair/archive/2012/05/20/tfs-api-part-44-vs11-teams-and-team-members.aspx&amp;amp;send=false&amp;amp;layout=button_count&amp;amp;width=450&amp;amp;show_faces=false&amp;amp;action=like&amp;amp;colorscheme=light&amp;amp;font=segoe+ui&amp;amp;height=21&amp;amp;appId=184186808308137" frameborder="0"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;
&lt;div class="g-plusone"&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;TFS 11 comes with many great changes for software development, the first and super important is &lt;strong&gt;Teams,&lt;/strong&gt; until TFS 11 Task work item or any other work item has to be assign to individual, means that you can’t assign a Task to a Scrum Team etc…&lt;/p&gt;  &lt;p&gt;So many people has built customize solution to handle this but no need! because TFS 11 comes with this great Feature! In TFS Web Management site you can add as many teams as you want under &lt;u&gt;One&lt;/u&gt; Team Project.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_1ED98E15.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_431E7297.png" width="597" height="271" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If your team works with Scrum then you should have a product backlog, but how you can manage two or more backlogs for each team? Working without backlog for teams will make it very difficult to keep track on what our team already completed and the progress on each other Task. &lt;/p&gt;  &lt;p&gt;To Solve this you need to Assign Working &lt;strong&gt;Area &lt;/strong&gt;and/or &lt;strong&gt;Iteration&lt;/strong&gt; for &lt;strong&gt;Teams.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_5924DE29.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_3E0C0F1B.png" width="596" height="594" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now when you create a new Team there is a new &lt;strong&gt;Area&lt;/strong&gt; created with the Team Name, this allow you to assign stuff for that Area path so the team can easily the relevant tasks for her. You can also define a different Area for Each team.&lt;/p&gt;  &lt;p&gt;Now to the coding Part….. How to control teams from TFS API..&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_16C1A019.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_2D343EA0.png" width="591" height="295" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/shair/entry1097106.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;&lt;strong&gt;Step 1: Create Project and Add Reference&lt;/strong&gt;&lt;/h2&gt;  &lt;p&gt;Create an WPF application and add the following references:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;First add reference for:&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Microsoft.TeamFoundation.Build.Client &lt;font color="#ff0000"&gt;(11.0.0.0)&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;Microsoft.TeamFoundation.Build.Common.dll&amp;#160; &lt;font color="#ff0000"&gt;(11.0.0.0)&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;System.Windows.Forms.dll &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;font size="2"&gt;(C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ReferenceAssemblies\v2.0\)&lt;/font&gt;&lt;/p&gt;  &lt;h2&gt;Step 2: Connect Team Foundation Server&lt;/h2&gt;  &lt;p&gt;Now, this part should be familiar, &lt;u&gt;connecting to TFS server&lt;/u&gt;, there is plenty but the once I love the most if using TeamProjectPicker. After connect TFS we need to get a new service called – &lt;strong&gt;TfsTeamService – &lt;/strong&gt;as you can understand from the name it has relation to Teams…&lt;/p&gt;  &lt;p&gt;Using the Team Service we can query, add, remove and more but for now we’ll see how to get the full teams list and get team members.&lt;/p&gt;  &lt;p&gt;After I receive the teamservice I used &lt;strong&gt;QueryTeams&lt;/strong&gt; method with the Team Project Uri (the team project you picked using TeamProjectPicker)&lt;/p&gt;  &lt;div class="code" style="background:white;"&gt;   &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:10pt;"&gt;private&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:10pt;"&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt; btnConnect_Click(&lt;span&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;/span&gt; sender, &lt;span&gt;&lt;font color="#2b91af"&gt;RoutedEventArgs&lt;/font&gt;&lt;/span&gt; e)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; tpp = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;TeamProjectPicker&lt;/font&gt;&lt;/span&gt;(&lt;span&gt;&lt;font color="#2b91af"&gt;TeamProjectPickerMode&lt;/font&gt;&lt;/span&gt;.SingleProject, &lt;span&gt;&lt;font color="#0000ff"&gt;false&lt;/font&gt;&lt;/span&gt;);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; tpp.ShowDialog();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (tpp.SelectedTeamProjectCollection == &lt;span&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;) &lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; tfs = tpp.SelectedTeamProjectCollection;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;   &lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;        &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; teamService = tfs.GetService&amp;lt;&lt;span&gt;&lt;font color="#2b91af"&gt;TfsTeamService&lt;/font&gt;&lt;/span&gt;&amp;gt;();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; listTeams.ItemsSource =&amp;#160; teamService.QueryTeams(tpp.SelectedProjects[0].Uri);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;h2&gt;Step 3: Get Members For Team&lt;/h2&gt;  &lt;p&gt;Now when you click on one team this will get the Team object we call &lt;strong&gt;GetMembers&lt;/strong&gt; method to get all Team Members for that Team.&lt;/p&gt;  &lt;p&gt;GetMembers method will return array of TeamFoundationIdentity, you can also change the MemberShipQuery enum to Extended in order to get Groups &amp;amp; Users.&lt;/p&gt;  &lt;div class="code" style="background:white;"&gt;   &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:10pt;"&gt;private&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:10pt;"&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt; listTeams_SelectionChanged(&lt;span&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;/span&gt; sender, &lt;span&gt;&lt;font color="#2b91af"&gt;SelectionChangedEventArgs&lt;/font&gt;&lt;/span&gt; e)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (listTeams.SelectedItem == &lt;span&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;) &lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; team = listTeams.SelectedItem &lt;span&gt;&lt;font color="#0000ff"&gt;as&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;TeamFoundationTeam&lt;/font&gt;&lt;/span&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; listMembers.ItemsSource = team.GetMembers(tfs, &lt;span&gt;&lt;font color="#2b91af"&gt;MembershipQuery&lt;/font&gt;&lt;/span&gt;.Direct);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/shair/entry1097106.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Enjoy&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1097107" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS/default.aspx">TFS</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+Administration/default.aspx">TFS Administration</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TECH/default.aspx">TECH</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+API/default.aspx">TFS API</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+11/default.aspx">TFS 11</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TfsTeamService/default.aspx">TfsTeamService</category></item><item><title>TFS API Part 43–Delete Work Item Tool</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2012/04/06/tfs-api-part-43-delete-work-item-tool.aspx</link><pubDate>Fri, 06 Apr 2012 17:28:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1056030</guid><dc:creator>shair</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=1056030</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2012/04/06/tfs-api-part-43-delete-work-item-tool.aspx#comments</comments><description>&lt;div class="share-buttons"&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;PADDING-RIGHT:15px;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;&lt;a class="twitter-share-button" href="http://blogs.microsoft.co.il/blogs/shair/archive/2012/04/06/tfs-api-part-43-delete-work-item-tool.aspx"&gt;Tweet&lt;/a&gt;&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;PADDING-RIGHT:25px;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;
&lt;script type="IN/Share"&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;&lt;iframe style="BORDER-BOTTOM:medium none;BORDER-LEFT:medium none;WIDTH:100px;HEIGHT:21px;OVERFLOW:hidden;BORDER-TOP:medium none;BORDER-RIGHT:medium none;" src="http://www.facebook.com/plugins/like.php?href=http://blogs.microsoft.co.il/blogs/shair/archive/2012/04/06/tfs-api-part-43-delete-work-item-tool.aspx&amp;amp;send=false&amp;amp;layout=button_count&amp;amp;width=450&amp;amp;show_faces=false&amp;amp;action=like&amp;amp;colorscheme=light&amp;amp;font=segoe+ui&amp;amp;height=21&amp;amp;appId=184186808308137" frameborder="0"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;
&lt;div class="g-plusone"&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;In previous post - &lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/2010/02/19/tfs-api-part-21-delete-work-item-using-workitemstore-demo-application.aspx"&gt;TFS API Part 21: Delete Work Item using WorkItemStore (Demo Application)&lt;/a&gt; I showed how to delete Work Items from TFS using TFS API. &lt;/p&gt;  &lt;p&gt;My problem was that it not easy to delete work items one by one so I decided to build a tool based on TFS Queries to allow me easily select the work items I want to delete.&lt;/p&gt;  
 &lt;p&gt;You can download executable from &lt;a href="http://beta.blogs.microsoft.co.il/files/folders/1057904/download.aspx" target="_blank"&gt;&lt;strong&gt;Here&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can download  Source Code from &lt;a href="http://blogs.microsoft.co.il/files/folders/1056029/download.aspx" target="_blank"&gt;&lt;strong&gt;Here&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;*** Deleting Work Item Action Is Not Recoverable ***&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_3ABBAC3C.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_66F83320.png" width="554" height="366" /&gt;&lt;/a&gt;  &lt;p&gt;Enjoy&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1056030" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS/default.aspx">TFS</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/ITPRO/default.aspx">ITPRO</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+API/default.aspx">TFS API</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Tools/default.aspx">Tools</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+11/default.aspx">TFS 11</category></item><item><title>The Git Hole</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2012/01/25/the-git-hole.aspx</link><pubDate>Wed, 25 Jan 2012 14:31:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:997006</guid><dc:creator>shair</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=997006</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2012/01/25/the-git-hole.aspx#comments</comments><description>&lt;div class="share-buttons"&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;PADDING-RIGHT:15px;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;&lt;a class="twitter-share-button" href="http://blogs.microsoft.co.il/blogs/shair/archive/2012/01/25/the-git-hole.aspx"&gt;Tweet&lt;/a&gt;&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;PADDING-RIGHT:25px;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;
&lt;script type="IN/Share"&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;&lt;iframe style="BORDER-BOTTOM:medium none;BORDER-LEFT:medium none;WIDTH:100px;HEIGHT:21px;OVERFLOW:hidden;BORDER-TOP:medium none;BORDER-RIGHT:medium none;" src="http://www.facebook.com/plugins/like.php?href=http://blogs.microsoft.co.il/blogs/shair/archive/2012/01/25/the-git-hole.aspx&amp;amp;send=false&amp;amp;layout=button_count&amp;amp;width=450&amp;amp;show_faces=false&amp;amp;action=like&amp;amp;colorscheme=light&amp;amp;font=segoe+ui&amp;amp;height=21&amp;amp;appId=184186808308137" frameborder="0"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;
&lt;div class="g-plusone"&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;I consider myself a calm person with plenty of tolerance, I believe in productive discussion and love it – Part of my job as a consultant is to talk with Teams and explain them why you should choose a specific product over another, in 99.9% of those meetings there is one guy that don’t like the change (No One Like Changes) and you need in a calm way to explain and show him the benefits of the new tool – Forcing someone to do something is never a good thing.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://www.fwb21.com/wp-content/uploads/2011/08/change-1.jpg" width="231" height="258" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;But sometimes there is no wining side in a discussion, you might say discussion are not about winning is about &lt;u&gt;Accepting&lt;/u&gt; and &lt;u&gt;Understanding,&lt;/u&gt; but Imagine yourself this scenario - You are a religious man, how about a discussion with a non-religious about “Does God Exists”?&lt;/p&gt;
&lt;p&gt;You can throw billion argumentation&amp;#39;s but nothing will matter because in this discussion there is not &lt;strong&gt;Logic&lt;/strong&gt; but &lt;strong&gt;Faith&lt;/strong&gt; and &lt;strong&gt;Emotions&lt;/strong&gt;, so you can spend hours but in the end the non-religious will not believe and the religious will.&lt;/p&gt;
&lt;p&gt;&lt;img style="DISPLAY:inline;MARGIN-LEFT:0px;MARGIN-RIGHT:0px;" src="http://www.stuartduncan.name/wp-content/uploads/2011/09/emotions.jpg" width="144" height="145" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Even when you talk about Technology there is emotions if you like it or not – If you not believe me you should read some theory&amp;#39;s from &lt;a href="http://en.wikipedia.org/wiki/Lawrence_Kohlberg" target="_blank"&gt;Lawrence Kohlberg&lt;/a&gt;,&amp;nbsp; &lt;a href="http://en.wikipedia.org/wiki/Carol_Gilligan" target="_blank"&gt;Carol Gilligan&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Sub_judice" target="_blank"&gt;Sub Judice&lt;/a&gt;&lt;a href="http://en.wikipedia.org/wiki/Sub_judice" target="_blank"&gt;, (Latin for &amp;quot;under judgment&amp;quot;)&lt;/a&gt;, I hope in this discussion you’ll understand you are not the first and for sure not the last how think he can control his emotions when you make a choice.&lt;/p&gt;
&lt;p&gt;So why I told you all about that? &lt;strong&gt;Lately I’ve being asked about why TFS and Not Git?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;First I think Git is a wonderful &lt;u&gt;version control system&lt;/u&gt; and I even use it for several projects, I use SVN and several other Open Source Version Control Systems.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://www.somethingon.com/media/theme/soorange/cgpeople/changes400x300.jpg" width="226" height="170" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;The reason sometimes I’m using other systems than TFS, is for specific projects: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Project I do by myself and I don’t need work assignment or project management.&lt;/li&gt;
&lt;li&gt;Projects that doesn’t have Testers, Product Manager or anyone else besides Developers.&lt;/li&gt;
&lt;li&gt;Projects that doesn&amp;#39;t care about team collaboration and think that Email is a great solution for tracking the team.&lt;/li&gt;
&lt;li&gt;Project that doesn&amp;#39;t have the money to buy TFS (&lt;a href="https://www.dreamspark.com/default.aspx" target="_blank"&gt;Dream Spark&lt;/a&gt;) &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;The question itself implies that the person didn’t understand what is TFS, and just think about saving his praised code. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.software-powertools.com/tfs-power-tools1.html"&gt;&lt;strong&gt;Team Foundation Server &lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;– This is a suite of development tools all within a single platform &lt;br /&gt;&lt;/strong&gt;The idea of one platform for the entire team is brilliant. Microsoft created tools for each individual position on the team; there are tools for Requirements Management, design tools for Architects, Developer tools and of course testing tools ranging from manual test to automation and load testing. All is this is now under one platform. When the entire team works on the same platform the collaboration and integration become easy and fluent, collecting data to generate reports no longer needs to take a lot of time. The team’s efforts are now integrated as part of the platform. Synchronizing between different tools is no longer necessary because all are working together in one place.&lt;/p&gt;
&lt;p&gt;So after I explain what is TFS the person told me –&amp;gt; but TFS doesn’t have &lt;strong&gt;distributed version control.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;SO WHAT? &lt;/u&gt;&lt;/strong&gt;Git doesn’t have Bug Management, Load Testing, UML Designer, Build Machine and a lot more. It’s not all about &lt;u&gt;&lt;strong&gt;Code!&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;So developers think that everything about the Product is up to them – &lt;strong&gt;and they are wrong!&lt;/strong&gt; the product is something that everyone is part of, the Project Manager, the Business Analysis, the Developers, Tester and more.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Sometimes one less feature is best for the Team than one extra feature just for you!&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Now, let’s go back to the &lt;strong&gt;discussion, &lt;/strong&gt;even after I explain TFS the person still want Git (although his company bought TFS) and in that point I understand that this is the same discussion as “Does God Exists” because the person has &lt;strong&gt;HMS &lt;/strong&gt;(Hate Microsoft Syndrome) and this is what he believes.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://chetangole.com/blog/wp-content/uploads/2008/09/we-hate-microsoft-google-chrome.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Is there a cure? I really don’t know. But I do know that &lt;strong&gt;Emotions&lt;/strong&gt; overcome common sense and facts.&lt;/p&gt;
&lt;p&gt;&lt;u&gt;&lt;strong&gt;I Love Microsoft and I really Love TFS&lt;/strong&gt;&lt;/u&gt;, but TFS is not the only tool at the market today that gives teams the ability to work together under a single platform, there is IBM Jazz or HP ALM Solution, but with not doubt TFS is mature and most popular ALM tool today and I will continue recommend TFS and I’ll not surrender the &lt;strong&gt;HMS!!!&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;God, give me the strength to accept the things I cannot change, &lt;br /&gt;Courage to change the things I can, &lt;br /&gt;and the Wisdom to distinguish the one from the other.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Thanks&lt;/p&gt;&lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=997006" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Team+Build/default.aspx">Team Build</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS/default.aspx">TFS</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/WorkItem+Tracking/default.aspx">WorkItem Tracking</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Work+Items/default.aspx">Work Items</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Testing/default.aspx">Testing</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Process+Template/default.aspx">Process Template</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Reports/default.aspx">Reports</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Source+Control/default.aspx">Source Control</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TECH/default.aspx">TECH</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/ITPRO/default.aspx">ITPRO</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Questions/default.aspx">Questions</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Scrum/default.aspx">Scrum</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Team+System+2010/default.aspx">Team System 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+2010/default.aspx">TFS 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Scrum+3.0/default.aspx">Scrum 3.0</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Modeling/default.aspx">Modeling</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/ALM/default.aspx">ALM</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Agile/default.aspx">Agile</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+11/default.aspx">Visual Studio 11</category></item><item><title>TFS API Part 42 – Getting Started With Lab Management API</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2011/12/22/tfs-api-part-42-getting-started-with-lab-management-api.aspx</link><pubDate>Thu, 22 Dec 2011 17:12:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:965381</guid><dc:creator>shair</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=965381</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2011/12/22/tfs-api-part-42-getting-started-with-lab-management-api.aspx#comments</comments><description>&lt;div class="share-buttons"&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;PADDING-RIGHT:15px;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;&lt;a class="twitter-share-button" href="http://twitter.com/share?url=http://blogs.microsoft.co.il/blogs/shair/archive/2011/12/22/tfs-api-part-42-getting-started-with-lab-management-api.aspx"&gt;Tweet&lt;/a&gt;&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;PADDING-RIGHT:25px;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;
&lt;script type="IN/Share"&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;&lt;iframe style="WIDTH:100px;HEIGHT:21px;" src="http://www.facebook.com/plugins/like.php?href=http://blogs.microsoft.co.il/blogs/shair/archive/2011/12/22/tfs-api-part-42-getting-started-with-lab-management-api.aspx&amp;amp;send=false&amp;amp;layout=button_count&amp;amp;width=450&amp;amp;show_faces=false&amp;amp;action=like&amp;amp;colorscheme=light&amp;amp;font=segoe+ui&amp;amp;height=21&amp;amp;appId=184186808308137" scrolling="no" frameborder="0" style="border:none;overflow:hidden;width:450px;height:21px;"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;
&lt;div class="g-plusone"&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;I did some cool things lately with TFS Lab Management API, from connecting it to TFS Web Access and allow REST access to the lab (if you want to ask why – The customer is always right &lt;img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://blogs.microsoft.co.il/blogs/shair/wlEmoticon-smile_6207A0F6.png" /&gt;).&lt;/p&gt;  &lt;p&gt;So this part of TFS API will deal with Lab Management API, although Lab Management API is not public I’ll show some cool things you can do but this will be under your own risk.&lt;/p&gt;  &lt;p&gt;Again, this is just the beginning of the Lab Management API, so let’s get started&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_35EAA405.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_1C52F10B.png" width="751" height="384" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/957845/download.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Step 1: Located “&lt;strong&gt;Microsoft.TeamFoundation.Lab.Client.dll&lt;/strong&gt;” &lt;/h3&gt;  &lt;p&gt;This dll cannot be found under Public, Private or ReferenceAssemblies it can only be found under GAC, so navigate here - &lt;font size="2"&gt;C:\Windows\assembly\GAC_MSIL\Microsoft.TeamFoundation.Lab.Client\10.0.0.0__b03f5f7f11d50a3a\      &lt;br /&gt;Microsoft.TeamFoundation.Lab.Client.dll&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Add this dll as reference to your project.&lt;/font&gt;&lt;/p&gt;  &lt;h3&gt;Step 2: Connect TFS and Obtain LabService&lt;/h3&gt;  &lt;p&gt;After connecting to TFS you need to obtain the Lab Service at the same way we did for all other services under TFS.&lt;/p&gt;  &lt;p&gt;If created a combo box with all team project for later use.&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:12pt;"&gt;private&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt;&amp;#160;&lt;span&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt; BtnConnectClick(&lt;span&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;/span&gt; sender, &lt;span&gt;&lt;font color="#2b91af"&gt;RoutedEventArgs&lt;/font&gt;&lt;/span&gt; e)&lt;br /&gt;{&lt;br /&gt;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; tpp = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#2b91af"&gt;TeamProjectPicker&lt;/font&gt;&lt;/span&gt;(&lt;span&gt;&lt;font color="#2b91af"&gt;TeamProjectPickerMode&lt;/font&gt;&lt;/span&gt;.NoProject,&lt;span&gt;&lt;font color="#0000ff"&gt;false&lt;/font&gt;&lt;/span&gt;);&lt;br /&gt;&amp;#160;&amp;#160; tpp.ShowDialog();&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (tpp.SelectedTeamProjectCollection == &lt;span&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;) &lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;&amp;#160;&amp;#160; _tfs = tpp.SelectedTeamProjectCollection;&lt;br /&gt;&amp;#160;&amp;#160; _lab = (&lt;span&gt;&lt;font color="#2b91af"&gt;LabService&lt;/font&gt;&lt;/span&gt;)_tfs.GetService(&lt;span&gt;&lt;font color="#0000ff"&gt;typeof&lt;/font&gt;&lt;/span&gt;(&lt;span&gt;&lt;font color="#2b91af"&gt;LabService&lt;/font&gt;&lt;/span&gt;));&lt;br /&gt;  &lt;br /&gt;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; store = (&lt;span&gt;&lt;font color="#2b91af"&gt;WorkItemStore&lt;/font&gt;&lt;/span&gt;)_tfs.GetService&amp;lt;&lt;span&gt;&lt;font color="#2b91af"&gt;WorkItemStore&lt;/font&gt;&lt;/span&gt;&amp;gt;();&lt;br /&gt;&amp;#160;&amp;#160; listProjects.ItemsSource = store.Projects;&lt;br /&gt;}&lt;/font&gt;&lt;/pre&gt;

&lt;h3&gt;&lt;font size="3"&gt;Step 3: Get Collection Hosts and &lt;/font&gt;Library Share&lt;/h3&gt;

&lt;p&gt;Before we start dealing with Team Projects and their Lab Vm’s and templates the below code will show how to pull the Lab Management Hosts and Library Share from the TFS Collection.&lt;/p&gt;

&lt;p&gt;Using the Lab Service and a QuerySpec object (we’ll use those a lot), we need to call QueryTeamProjectCollectionHostGroups method (right now we don’t need to add anything to the Query).&lt;/p&gt;

&lt;pre class="code"&gt;&lt;font color="#008000"&gt;&lt;span&gt;&lt;font style="font-size:12pt;"&gt;//public class TeamProjectCollectionHostGroupQuerySpec&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt;&lt;br /&gt;&lt;span&gt;//{&lt;/span&gt;&lt;br /&gt;&lt;span&gt;//&amp;#160; public TeamProjectCollectionHostGroupQuerySpec();&lt;/span&gt;&lt;br /&gt;&lt;span&gt;//&amp;#160; public Uri Location { get; set; }&lt;/span&gt;&lt;br /&gt;&lt;span&gt;//&amp;#160; public string Name { get; set; }&lt;/span&gt;&lt;br /&gt;&lt;span&gt;//}&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="font-size:12pt;"&gt;&lt;br /&gt;listHostGroups.ItemsSource = _lab.QueryTeamProjectCollectionHostGroups(&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#2b91af"&gt;TeamProjectCollectionHostGroupQuerySpec&lt;/font&gt;&lt;/span&gt;());&lt;br /&gt; &lt;br /&gt;&lt;font color="#008000"&gt;&lt;span&gt;//public class TeamProjectCollectionLibraryShareQuerySpec&lt;/span&gt;&lt;br /&gt;&lt;span&gt;//{&lt;/span&gt;&lt;br /&gt;&lt;span&gt;//&amp;#160; public TeamProjectCollectionLibraryShareQuerySpec();&lt;/span&gt;&lt;br /&gt;&lt;span&gt;//&amp;#160; public Uri Location { get; set; }&lt;/span&gt;&lt;br /&gt;&lt;span&gt;//&amp;#160; public string Name { get; set; }&lt;/span&gt;&lt;br /&gt;&lt;span&gt;//}&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;listLibraryShares.ItemsSource = _lab.&lt;br /&gt;          QueryTeamProjectCollectionLibraryShares(&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#2b91af"&gt;TeamProjectCollectionLibraryShareQuerySpec&lt;/font&gt;&lt;/span&gt;());&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="border-bottom-style:none;padding-bottom:0px;line-height:normal;background-color:transparent;border-left-style:none;padding-left:0px;padding-right:0px;border-top-style:none;border-right-style:none;padding-top:0px;" class="code"&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;h3&gt;Step 4: Get Lab Management Details For Team Project&lt;/h3&gt;

&lt;p&gt;Now, when you choose a Team Project we’ll call the GetProjectLabDetails method to extract all relevant lab information on that project.&lt;/p&gt;

&lt;p&gt;But first we’ll use the LabService.IsLabConfigured method to see if this project has any lab configurations, if it does then using the QuerySpec we can pull all Environments and Templates for that team project.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:12pt;"&gt;void&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt; GetProjectLabDetails(&lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; projectName)&lt;br /&gt;{&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#008000"&gt;//Does this Team Project has Lab configure?&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (!_lab.IsLabConfigured(projectName)) &lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#008000"&gt;//Creating Query for lab environments under a specific project name.&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; labQuerySpec = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#2b91af"&gt;LabEnvironmentQuerySpec&lt;/font&gt;&lt;/span&gt;{Project = projectName};&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#008000"&gt;//public class LabEnvironmentQuerySpec&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#008000"&gt;//{&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#008000"&gt;//&amp;#160; public LabEnvironmentQuerySpec();&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#008000"&gt;//&amp;#160; public LabEnvironmentDisposition Disposition { get; set; }&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#008000"&gt;//&amp;#160; public Uri Location { get; set; }&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#008000"&gt;//&amp;#160; public string Project { get; set; }&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#008000"&gt;//}&lt;/font&gt;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; listEnvironments.ItemsSource =_lab.QueryLabEnvironments(labQuerySpec);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; listTemplates.ItemsSource = _lab.QueryLabTemplates(&lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;br /&gt;    &lt;span&gt;&lt;font color="#2b91af"&gt;LabTemplateQuerySpec&lt;/font&gt;&lt;/span&gt;() { Project = projectName });&lt;br /&gt;}&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/957845/download.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enjoy.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=965381" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS/default.aspx">TFS</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+Utilities/default.aspx">TFS Utilities</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TECH/default.aspx">TECH</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+API/default.aspx">TFS API</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Team+System+2010/default.aspx">Team System 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+2010/default.aspx">TFS 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Lab+Management/default.aspx">Lab Management</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET+4/default.aspx">.NET 4</category></item><item><title>TFS API Part 41–Manage Groups and Members</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2011/12/07/tfs-api-part-41-manage-groups-and-members.aspx</link><pubDate>Wed, 07 Dec 2011 21:11:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:950429</guid><dc:creator>shair</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=950429</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2011/12/07/tfs-api-part-41-manage-groups-and-members.aspx#comments</comments><description>&lt;div class="share-buttons"&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;PADDING-RIGHT:15px;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;&lt;a class="twitter-share-button" href="http://twitter.com/share?url=http://blogs.microsoft.co.il/blogs/shair/archive/2011/12/07/tfs-api-part-41-manage-groups-and-members.aspx"&gt;Tweet&lt;/a&gt;&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;PADDING-RIGHT:25px;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;
&lt;script type="IN/Share"&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;&lt;iframe style="WIDTH:100px;HEIGHT:21px;" src="http://www.facebook.com/plugins/like.php?href=http://blogs.microsoft.co.il/blogs/shair/archive/2011/12/07/tfs-api-part-41-manage-groups-and-members.aspx&amp;amp;send=false&amp;amp;layout=button_count&amp;amp;width=450&amp;amp;show_faces=false&amp;amp;action=like&amp;amp;colorscheme=light&amp;amp;font=segoe+ui&amp;amp;height=21&amp;amp;appId=184186808308137" scrolling="no" frameborder="0" style="border:none;overflow:hidden;width:450px;height:21px;"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;
&lt;div class="g-plusone"&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;In the past I’ve showed some examples on how to work with TFS IGroupSecurityService for getting users list, but you can do much more, Create new Group, Add or Remove users from group etc…&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/2010/06/16/tfs-api-part-25-get-tfs-user-list-mail-sid-account-domain-tfs-2010.aspx" target="_blank"&gt;TFS API Part 25: Get TFS User List (Mail Sid, Account, Domain) – TFS 2010&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/2009/01/14/tfs-api-part-4-get-tfs-user-list-mail-sid-account-domain.aspx" target="_blank"&gt;TFS API Part 4: Get TFS User List (Mail, Sid, Account, Domain)&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_5ED63986.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_4A7073FB.png" width="743" height="392" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/950425/download.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Step 1: Connect To TFS and Get All Users and Projects&lt;/h3&gt;  &lt;p&gt;As always we need to start with connecting to TFS, but here we’ll also obtain 2 important services for our demo &lt;strong&gt;IGroupSecurityService&lt;/strong&gt; and &lt;strong&gt;ICommonStructureService&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;Using &lt;u&gt;&lt;strong&gt;ICommonStructureService&lt;/strong&gt;&lt;/u&gt; we’ll be able to extract all Team Projects under the collection you choose, this is not the only way to do that.&lt;/p&gt;  &lt;p&gt;Using &lt;u&gt;&lt;strong&gt;IGroupSecurityService&lt;/strong&gt; &lt;/u&gt;will allow us to get all users under the “Project Collection Valid Users” category.     &lt;br /&gt;&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:12pt;"&gt;private&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt;&amp;#160;&lt;span&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt; BtnConnectClick(&lt;span&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;/span&gt; sender, &lt;span&gt;&lt;font color="#2b91af"&gt;RoutedEventArgs&lt;/font&gt;&lt;/span&gt; e)&lt;br /&gt;{&lt;br /&gt;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; tpp = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#2b91af"&gt;TeamProjectPicker&lt;/font&gt;&lt;/span&gt;(&lt;span&gt;&lt;font color="#2b91af"&gt;TeamProjectPickerMode&lt;/font&gt;&lt;/span&gt;.NoProject, &lt;span&gt;&lt;font color="#0000ff"&gt;false&lt;/font&gt;&lt;/span&gt;);&lt;br /&gt;&amp;#160; tpp.ShowDialog();&lt;br /&gt;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (tpp.SelectedTeamProjectCollection == &lt;span&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;) &lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;  &lt;br /&gt;_tfs= tpp.SelectedTeamProjectCollection;&lt;br /&gt;_css= (&lt;span&gt;&lt;font color="#2b91af"&gt;ICommonStructureService&lt;/font&gt;&lt;/span&gt;)_tfs.GetService&amp;lt;&lt;span&gt;&lt;font color="#2b91af"&gt;ICommonStructureService&lt;/font&gt;&lt;/span&gt;&amp;gt;();&lt;br /&gt;_gss= (&lt;span&gt;&lt;font color="#2b91af"&gt;IGroupSecurityService&lt;/font&gt;&lt;/span&gt;)_tfs.GetService&amp;lt;&lt;span&gt;&lt;font color="#2b91af"&gt;IGroupSecurityService&lt;/font&gt;&lt;/span&gt;&amp;gt;();&lt;br /&gt; &lt;br /&gt;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; allSids = _gss.ReadIdentity(&lt;span&gt;&lt;font color="#2b91af"&gt;SearchFactor&lt;/font&gt;&lt;/span&gt;.AccountName, &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;Project Collection Valid Users&amp;quot;&lt;/font&gt;&lt;/span&gt;, &lt;span&gt;&lt;font color="#2b91af"&gt;QueryMembership&lt;/font&gt;&lt;/span&gt;.Expanded);&lt;br /&gt; &lt;br /&gt;&amp;#160; listAllUsers.ItemsSource = _gss.ReadIdentities(&lt;span&gt;&lt;font color="#2b91af"&gt;SearchFactor&lt;/font&gt;&lt;/span&gt;.Sid,&lt;br /&gt;  allSids.Members, &lt;span&gt;&lt;font color="#2b91af"&gt;QueryMembership&lt;/font&gt;&lt;/span&gt;.None).Where(a=&amp;gt;a.Type == &lt;br /&gt;  &lt;span&gt;&lt;font color="#2b91af"&gt;IdentityType&lt;/font&gt;&lt;/span&gt;.WindowsUser || a.Type == &lt;span&gt;&lt;font color="#2b91af"&gt;IdentityType&lt;/font&gt;&lt;/span&gt;.WindowsGroup);&lt;br /&gt; &lt;br /&gt;&amp;#160; listProjects.ItemsSource = _css.ListAllProjects();&lt;br /&gt;}&lt;/font&gt;&lt;/pre&gt;

&lt;h3&gt;Step 2: Get All Application Groups Under a Team Project&lt;/h3&gt;

&lt;p&gt;Once you choose a project we’ll use Project Uri and ListApplicationGroups method under &lt;strong&gt;&lt;u&gt;IGroupSecurityService&lt;/u&gt;&lt;/strong&gt; to get all Groups under that project.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:12pt;"&gt;private&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt;&amp;#160;&lt;span&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt; ListProjectsSelectionChanged(&lt;span&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;/span&gt; sender,&lt;br /&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;SelectionChangedEventArgs&lt;/font&gt;&lt;/span&gt; e)&lt;br /&gt;{&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (listProjects.SelectedItem == &lt;span&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;) &lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; project = listProjects.SelectedItem &lt;span&gt;&lt;font color="#0000ff"&gt;as&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#2b91af"&gt;ProjectInfo&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; listGroups.ItemsSource = _gss.ListApplicationGroups(project.Uri);&lt;br /&gt;}&lt;/font&gt;&lt;/pre&gt;

&lt;h3&gt;Step 3: Get Users From Specific Group&lt;/h3&gt;

&lt;p&gt;When you select a specific group we’ll use the group SID to get all members under that group.&lt;/p&gt;

&lt;p&gt;Make sure to change the SearchFactor to SID instead on AccountName, this will prevent getting users from another Project where the Group Name is not unique.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:12pt;"&gt;private&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt;&amp;#160;&lt;span&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt; ListGroupsSelectionChanged(&lt;span&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;/span&gt; sender, &lt;br /&gt;&lt;span&gt;&lt;font color="#2b91af"&gt;SelectionChangedEventArgs&lt;/font&gt;&lt;/span&gt; e)&lt;br /&gt;{&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (listGroups.SelectedItem == &lt;span&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;) &lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; group = listGroups.SelectedItem &lt;span&gt;&lt;font color="#0000ff"&gt;as&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#2b91af"&gt;Identity&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; sids = _gss.ReadIdentity(&lt;span&gt;&lt;font color="#2b91af"&gt;SearchFactor&lt;/font&gt;&lt;/span&gt;.Sid, group.Sid, &lt;br /&gt;               &lt;span&gt;&lt;font color="#2b91af"&gt;QueryMembership&lt;/font&gt;&lt;/span&gt;.Expanded);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (sids == &lt;span&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt; || sids.Members.Length == 0)&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; listUsers.ItemsSource = &lt;span&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; listUsers.ItemsSource = _gss.ReadIdentities(&lt;span&gt;&lt;font color="#2b91af"&gt;SearchFactor&lt;/font&gt;&lt;/span&gt;.Sid, &lt;br /&gt;                                 sids.Members, &lt;span&gt;&lt;font color="#2b91af"&gt;QueryMembership&lt;/font&gt;&lt;/span&gt;.None);&lt;br /&gt;}&lt;/font&gt;&lt;/pre&gt;

&lt;h3&gt;Step 4: Add New Application Group&lt;/h3&gt;

&lt;p&gt;This part is very simple, you just need to obtain the Project Uri and call &lt;strong&gt;CreateApplicationGroup&lt;/strong&gt; under &lt;strong&gt;&lt;u&gt;IGroupSecurityService&lt;/u&gt;&lt;/strong&gt; with the Project Uri and the new Group Name.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:12pt;"&gt;private&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt;&amp;#160;&lt;span&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt; BtnAddGroupClick(&lt;span&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;/span&gt; sender, &lt;span&gt;&lt;font color="#2b91af"&gt;RoutedEventArgs&lt;/font&gt;&lt;/span&gt; e)&lt;br /&gt;{&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (&lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt;.IsNullOrEmpty(txtGroupName.Text) || &lt;br /&gt;               listProjects.SelectedItem == &lt;span&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;) &lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; project = listProjects.SelectedItem &lt;span&gt;&lt;font color="#0000ff"&gt;as&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#2b91af"&gt;ProjectInfo&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; groupname = txtGroupName.Text;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;try&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; result = _gss.CreateApplicationGroup(project.Uri, groupname,&lt;br /&gt;                      &lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;Your Group Description&amp;quot;&lt;/font&gt;&lt;/span&gt;);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ListProjectsSelectionChanged(sender, &lt;span&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;catch&lt;/font&gt;&lt;/span&gt; (&lt;span&gt;&lt;font color="#2b91af"&gt;Exception&lt;/font&gt;&lt;/span&gt; ex)&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#2b91af"&gt;MessageBox&lt;/font&gt;&lt;/span&gt;.Show(ex.Message);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;br /&gt;}&lt;/font&gt;&lt;/pre&gt;

&lt;h3&gt;Step 5: Remove Application Group&lt;/h3&gt;

&lt;p&gt;This part is also very simple, you need to call DeleteApplicationGroup method under &lt;strong&gt;&lt;u&gt;IGroupSecurityService&lt;/u&gt;&lt;/strong&gt; with the Group sid you want to delete.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:12pt;"&gt;private&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt;&amp;#160;&lt;span&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt; BtnRemoveGroupClick(&lt;span&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;/span&gt; sender, &lt;span&gt;&lt;font color="#2b91af"&gt;RoutedEventArgs&lt;/font&gt;&lt;/span&gt; e)&lt;br /&gt;{&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (listGroups.SelectedItem == &lt;span&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;) &lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; result = &lt;span&gt;&lt;font color="#2b91af"&gt;MessageBox&lt;/font&gt;&lt;/span&gt;.Show(&lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;You are about to remove application &lt;br /&gt;    group from TFS, press yes to continue&amp;quot;&lt;/font&gt;&lt;/span&gt;,&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;Remove Group&amp;quot;&lt;/font&gt;&lt;/span&gt;, &lt;span&gt;&lt;font color="#2b91af"&gt;MessageBoxButton&lt;/font&gt;&lt;/span&gt;.YesNo, &lt;span&gt;&lt;font color="#2b91af"&gt;MessageBoxImage&lt;/font&gt;&lt;/span&gt;.Question);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;    &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (result == &lt;span&gt;&lt;font color="#2b91af"&gt;MessageBoxResult&lt;/font&gt;&lt;/span&gt;.No) &lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; group = listGroups.SelectedItem &lt;span&gt;&lt;font color="#0000ff"&gt;as&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#2b91af"&gt;Identity&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; _gss.DeleteApplicationGroup(group.Sid);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ListProjectsSelectionChanged(sender, &lt;span&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;);&lt;br /&gt;}&lt;/font&gt;&lt;/pre&gt;

&lt;h3&gt;Step 6: Add User To Application Group&lt;/h3&gt;

&lt;p&gt;For this you need to obtain the User sid and Group sid and again using the &lt;strong&gt;&lt;u&gt;IGroupSecurityService&lt;/u&gt;&lt;/strong&gt; add call AddMemberToApplicationGroup method passing those values.&lt;/p&gt;

&lt;p&gt;If the User already exists in that Group you will receive a soap exception.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:12pt;"&gt;private&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt;&amp;#160;&lt;span&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt; BtnAddUserToGroupClick(&lt;span&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;/span&gt; sender, &lt;span&gt;&lt;font color="#2b91af"&gt;RoutedEventArgs&lt;/font&gt;&lt;/span&gt; e)&lt;br /&gt;{&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (listAllUsers.SelectedItem == &lt;span&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt; &lt;br /&gt;     || listGroups.SelectedItem == &lt;span&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;) &lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; group = listGroups.SelectedItem &lt;span&gt;&lt;font color="#0000ff"&gt;as&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#2b91af"&gt;Identity&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; user = listAllUsers.SelectedItem &lt;span&gt;&lt;font color="#0000ff"&gt;as&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#2b91af"&gt;Identity&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;try&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; _gss.AddMemberToApplicationGroup(group.Sid, user.Sid);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ListGroupsSelectionChanged(sender, &lt;span&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;catch&lt;/font&gt;&lt;/span&gt; (&lt;span&gt;&lt;font color="#2b91af"&gt;Exception&lt;/font&gt;&lt;/span&gt; ex)&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;span&gt;&lt;font color="#008000"&gt;//TF50235: The group Test Group already has a member Administrators.&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#2b91af"&gt;MessageBox&lt;/font&gt;&lt;/span&gt;.Show(ex.Message);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;br /&gt;}&lt;/font&gt;&lt;/pre&gt;

&lt;h3&gt;Step 7: Remove User From Application Group&lt;/h3&gt;

&lt;p&gt;It’s the same as Adding a user to a group, just call RemoveMemberFromApplicationGroup method.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:12pt;"&gt;private&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt;&amp;#160;&lt;span&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt; BtnRemoveUserFromGroupClick(&lt;span&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;/span&gt; sender, &lt;span&gt;&lt;font color="#2b91af"&gt;RoutedEventArgs&lt;/font&gt;&lt;/span&gt; e)&lt;br /&gt;{&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (listUsers.SelectedItem == &lt;span&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt; || &lt;br /&gt;       listGroups.SelectedItem == &lt;span&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;) &lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; group = listGroups.SelectedItem &lt;span&gt;&lt;font color="#0000ff"&gt;as&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#2b91af"&gt;Identity&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; user = listUsers.SelectedItem &lt;span&gt;&lt;font color="#0000ff"&gt;as&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#2b91af"&gt;Identity&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; _gss.RemoveMemberFromApplicationGroup(group.Sid,user.Sid);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ListGroupsSelectionChanged(sender, &lt;span&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;);&lt;br /&gt;}&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/950425/download.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enjoy.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=950429" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS/default.aspx">TFS</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+Administration/default.aspx">TFS Administration</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+Utilities/default.aspx">TFS Utilities</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TECH/default.aspx">TECH</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+API/default.aspx">TFS API</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Team+System+2010/default.aspx">Team System 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+2010/default.aspx">TFS 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET+4/default.aspx">.NET 4</category></item></channel></rss>