<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.martin.hinshelwood.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:image="http://purl.org/rss/1.0/modules/image/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
    <channel>
        <title>ALM</title>
        <link>http://blog.hinshelwood.com/category/6136.aspx</link>
        <description>Application Lifecycle Management
Was VSTS:  Whether you’re a development lead or a business stakeholder who depends on IT for business-critical applications, you know about application development challenges:


  Managing shifting business requirements throughout a project 

  Communication gaps between project managers, developers, and testers 

  Adequately testing applications for quality and reliability 

  Gaining visibility into project status to make trade-off decisions and drive predictable project delivery 

  Dealing with global development, regulatory, and compliance requirements 


Sound familiar? These aren’t simple problems to overcome. Many are interrelated and involve multiple team members and stakeholders, sometimes from various professional disciplines. That’s when it’s time to step up to an integrated solution.With Team System, you can defy all these challenges – with fewer resou</description>
        <language>en-GB</language>
        <copyright>Martin Hinshelwood</copyright>
        <managingEditor>martin@hinshelwood.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
        <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.martin.hinshelwood.com/VisualStudioTeamSystem" /><feedburner:info uri="visualstudioteamsystem" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
            <title>Rangers shipped Visual Studio 2010 Database Guide</title>
            <link>http://feeds.martin.hinshelwood.com/~r/VisualStudioTeamSystem/~3/h2tiN8wHnxA/rangers-shipped-visual-studio-2010-database-guide.aspx</link>
            <description>&lt;p&gt;&lt;b&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 20px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="vs2010almRanger" border="0" alt="vs2010almRanger" align="left" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/RangersshippedVisualStudio2010DatabaseGu_C070/vs2010almRanger_eb3d31d1-7f29-4c62-bb43-1f671372fc2c.png" width="102" height="68" /&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Have you ever struggled with the Database Developer (was DataDude) components of Visual Studio? Well I have…and now the ALM Rangers have released a new guide to help us all get the benefits. There is Guidance as well as Hands-On-Labs and even how to do WIX integration for deployment. &lt;/p&gt;  &lt;br clear="all" /&gt;  &lt;hr /&gt;  &lt;p&gt;The &lt;a href="http://vsdatabaseguide.codeplex.com/"&gt;Visual Studio 2010 Database Guide&lt;/a&gt; is available to download from Codeplex and you should try it out and submit some feedback. Wondering what this is all about? Well…&lt;/p&gt;  &lt;h2&gt;Project Description&lt;/h2&gt;  &lt;p&gt;Practical guidance for Visual Studio 2010 Database projects, which is focused on 5 topic areas:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Solution and Project Management &lt;/li&gt;    &lt;li&gt;Source Code Control and Configuration Management &lt;/li&gt;    &lt;li&gt;Integrating External Changes with the Project System &lt;/li&gt;    &lt;li&gt;Build and Deployment Automation with Visual Studio Database Projects &lt;/li&gt;    &lt;li&gt;Database Testing and Deployment Verification &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;This release includes common guidance, usage scenarios, hands on labs, and lessons learned from real world engagements and the community discussions.    &lt;br /&gt;The goal is to deliver examples that can support you in real world scenarios, instead of an in-depth tour of the product features.&lt;/p&gt;  &lt;h2&gt;Visual Studio ALM Rangers&lt;/h2&gt;  &lt;p&gt;This guidance is created by the Visual Studio ALM Rangers, who have the mission to provide out of band solutions for missing features or guidance. This content was created with support from Microsoft Product Group, Microsoft Consulting Services, Microsoft Most Valued Professionals (MVPs) and technical specialists from technology communities around the globe, giving you a real-world view from the field, where the technology has been tested and used.    &lt;br /&gt;For more information on the Rangers please visit &lt;a href="http://msdn.microsoft.com/en-us/vstudio/ee358786.aspx"&gt;http://msdn.microsoft.com/en-us/vstudio/ee358786.aspx&lt;/a&gt; and for more a list of other Rangers projects please see &lt;a href="http://msdn.microsoft.com/en-us/vstudio/ee358787.aspx"&gt;http://msdn.microsoft.com/en-us/vstudio/ee358787.aspx&lt;/a&gt;.&lt;/p&gt;  &lt;h2&gt;What is in the package?&lt;/h2&gt;  &lt;p&gt;The content is packaged in 3 separate zip files to give you the choice of selective downloads, but the default download is the first of the listed packages: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Visual Studio Guidance for Database Projects &lt;b&gt;--&amp;gt; Start here&lt;/b&gt; &lt;/li&gt;    &lt;li&gt;Visual Studio Database Projects Hands-On-Labs document &lt;/li&gt;    &lt;li&gt;Hands-On-Labs (HOLs), including:      &lt;ul&gt;       &lt;li&gt;Solution and Project Management          &lt;ul&gt;           &lt;li&gt;Refactoring a Visual Studio Database Solution to Leverage Shared Code &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;        &lt;li&gt;Source Code Control and Configuration Management          &lt;ul&gt;           &lt;li&gt;Single Team Branching Model &lt;/li&gt;            &lt;li&gt;Multiple Team Branching Model &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;        &lt;li&gt;Integrating External Changes with the Project System          &lt;ul&gt;           &lt;li&gt;Maintaining Linked Servers in a Visual Studio Database Project &lt;/li&gt;            &lt;li&gt;Complex data movement &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;        &lt;li&gt;Build and Deployment Automation          &lt;ul&gt;           &lt;li&gt;WiX-Integration with deployment of databases &lt;/li&gt;            &lt;li&gt;The Integrate with Team Build Scenario &lt;/li&gt;            &lt;li&gt;Building and deploying outside team build &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;        &lt;li&gt;Database Testing and Deployment Verification          &lt;ul&gt;           &lt;li&gt;The “Basic” Create Unit Test Scenario &lt;/li&gt;            &lt;li&gt;The “Advanced” Create Unit Test Scenario &lt;/li&gt;            &lt;li&gt;Find Model drifts Scenario &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;Team&lt;/h2&gt;  &lt;p&gt;Obviously this type of work would not be possible without many people contributing their free time to make it happen.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Contributors:&lt;/strong&gt; Shishir Abhyanker (MSFT), Chris Burrows (MSFT), &lt;a href="http://blogs.msdn.com/b/willy-peter_schaub/archive/2010/08/21/www.dynconcepts.com"&gt;David V Corbin (MVP)&lt;/a&gt;, Ryan Frazier (MSFT), &lt;a href="http://continuouslyintegrating.blogspot.com/"&gt;Larry Guger (MVP)&lt;/a&gt;, Barclay Hill (MSFT), Bob Leithiser (MSFT), Pablo Rincon (MSFT), Scott Sharpe (MSFT), Jens K. Süßmeyer (MSFT), LeRoy Tuttle (MSFT) &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Reviewers:&lt;/strong&gt; Christian Bitter (MSFT), Regis Gimenis (MSFT), Rob Jarrat (MSFT), Bijan Javidi (MSFT), &lt;a href="http://msmvps.com/blogs/molausson/"&gt;Mathias Olausson (MVP)&lt;/a&gt;, Willy-Peter Schaub (MSFT) &lt;/li&gt; &lt;/ul&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:408f6118-5802-4d3b-af43-f74ed76db255" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/ALM" rel="tag"&gt;ALM&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TFS+2010" rel="tag"&gt;TFS 2010&lt;/a&gt;,&lt;a href="http://technorati.com/tags/VS+2010" rel="tag"&gt;VS 2010&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Visual+Studio" rel="tag"&gt;Visual Studio&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=141470"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=141470" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://blog.hinshelwood.com/aggbug/141470.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/VisualStudioTeamSystem/~4/h2tiN8wHnxA" height="1" width="1"/&gt;</description>
            <dc:creator>Martin Hinshelwood</dc:creator>
            <guid isPermaLink="false">http://blog.hinshelwood.com/archive/2010/08/25/rangers-shipped-visual-studio-2010-database-guide.aspx</guid>
            <pubDate>Wed, 25 Aug 2010 13:04:14 GMT</pubDate>
            <wfw:comment>http://blog.hinshelwood.com/comments/141470.aspx</wfw:comment>
            <comments>http://blog.hinshelwood.com/archive/2010/08/25/rangers-shipped-visual-studio-2010-database-guide.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blog.hinshelwood.com/comments/commentRss/141470.aspx</wfw:commentRss>
            <trackback:ping>http://blog.hinshelwood.com/services/trackbacks/141470.aspx</trackback:ping>
        <feedburner:origLink>http://blog.hinshelwood.com/archive/2010/08/25/rangers-shipped-visual-studio-2010-database-guide.aspx</feedburner:origLink></item>
        <item>
            <title>Commit to Visual Studio ALM on Area51</title>
            <link>http://feeds.martin.hinshelwood.com/~r/VisualStudioTeamSystem/~3/woIIKMMPtfo/more-votes-required-for-visual-studio-alm-on-area51.aspx</link>
            <description>&lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" class="wlDisabledImage" title="image" border="0" alt="image" align="left" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/VisualStudioALMonArea51_98A3/image_300c39d4-21d3-4de4-82e8-737504496d8b.png" width="100" height="51" /&gt;&lt;/p&gt;  &lt;p&gt;A few weeks ago I proposed a new community for StackExchange and it has been growing at an exponential rate. We are about half way there, but we need &lt;strong&gt;your&lt;/strong&gt; help to make this community a success.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Update 16th August 2010 – The Proposal has now moved from Proposed to the Committed stage and we need your commitment.     &lt;br /&gt;&lt;a title="http://area51.stackexchange.com/proposals/15894/visual-studio-alm?referrer=vtx1N5_bjYysH8mQCaDCxQ2" href="http://area51.stackexchange.com/proposals/15894/visual-studio-alm?referrer=vtx1N5_bjYysH8mQCaDCxQ2"&gt;http://area51.stackexchange.com/proposals/15894/visual-studio-alm?referrer=vtx1N5_bjYysH8mQCaDCxQ2&lt;/a&gt;      &lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;   &lt;/p&gt;&lt;hr /&gt;  &lt;h3&gt;Monday 16th August 2010 – Commit to Visual Studio ALM on Area51&lt;/h3&gt;  &lt;p&gt;If you are not familiar with StackExchange, it has a community driven voting system for creating new sites like Stack Overflow.&lt;/p&gt;  &lt;p&gt;Thanks everyone for your efforts and excellent questions. Although we suffered a little from question overload at the Proposal stage I think this is a good omen for the future beta. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://area51.stackexchange.com/proposals/15894/visual-studio-alm?referrer=vtx1N5_bjYysH8mQCaDCxQ2"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 20px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/VisualStudioALMonArea51_98A3/clip_image002_615938c5-541a-484d-8b2a-5f2dd17bf430.jpg" width="196" height="226" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We are now in the Commitment stage and need a score of 2000 user points (which gets us to 100%) to proceed to the Beta. This is apparently calculated based on a user’s reputation:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;i&gt;To get a feel for it:&lt;/i&gt;&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;&lt;i&gt;A user with no reputation gets a score of 1&lt;/i&gt;&lt;/li&gt;      &lt;li&gt;&lt;i&gt;A user with 200 reputation on 1 site gets a score of 1.7&lt;/i&gt;&lt;/li&gt;      &lt;li&gt;&lt;i&gt;A user with 200 reputation on 3 sites gets a score of 3.1&lt;/i&gt;&lt;/li&gt;      &lt;li&gt;&lt;i&gt;A user with 10000 reputation on 1 site gets a score of 7.2&lt;/i&gt;&lt;/li&gt;      &lt;li&gt;&lt;i&gt;A user with 10000 reputation on 3 sites gets a score of 19.6 (these are extremely rare)         &lt;br /&gt;&lt;/i&gt;&lt;i&gt;Source &lt;a href="http://meta.stackoverflow.com/questions/53650/area-51-commit-percent"&gt;http://meta.stackoverflow.com/questions/53650/area-51-commit-percent&lt;/a&gt; &lt;/i&gt;&lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;p&gt;So if you are interested in Visual Studio ALM or any of its features, be sure to Commit and send this to anyone you know who might be interested.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://area51.stackexchange.com/proposals/15894/visual-studio-alm?referrer=vtx1N5_bjYysH8mQCaDCxQ2"&gt;Commit to Visual Studio ALM&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Friday 13th August 2010 – Vote for Visual Studio ALM on Area51&lt;/h3&gt;  &lt;p&gt;&lt;a title="http://area51.stackexchange.com/proposals/15894/visual-studio-alm?referrer=vtx1N5_bjYysH8mQCaDCxQ2" href="http://area51.stackexchange.com/proposals/15894/visual-studio-alm?referrer=vtx1N5_bjYysH8mQCaDCxQ2"&gt;Visual Studio ALM StackExchange Proposal&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We have now reached 1 of the three milestones required to get the site to the “commit” stage.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" class="wlDisabledImage" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/VisualStudioALMonArea51_98A3/image_f1657582-f18c-4f1a-9111-b61bf518fcba.png" width="188" height="195" /&gt;     &lt;br /&gt;&lt;b&gt;Figure: We have enough followers but not enough votes&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;We now have question overload and need to concentrate on getting those top 5 On Topic and 5 Off Topic questions to have 20 votes each. &lt;/p&gt;  &lt;h5&gt;Top 5 On-Topic&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;What’s a backup and recovery process for Team Foundation Server 2010? &lt;/li&gt;    &lt;li&gt;How can I automatically version my assemblies in TFS Build 2010? &lt;/li&gt;    &lt;li&gt;How can I sync two Team Foundation Servers? &lt;/li&gt;    &lt;li&gt;How do I do branching if I want to be able to create hotfixes? &lt;/li&gt;    &lt;li&gt;Default value: Are they assigned only when a work item is created? &lt;/li&gt; &lt;/ul&gt;  &lt;h5&gt;Top 5 Off-Topic&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;Do I need to purchase additional Client access Licenses for TFS 2010? &lt;/li&gt;    &lt;li&gt;How do I migrate my TFS content to Visual SourceSafe? &lt;/li&gt;    &lt;li&gt;What and who are the ALM Rangers and what role do they play within Microsoft? &lt;/li&gt;    &lt;li&gt;How do you install Visual Studio 2003? &lt;/li&gt;    &lt;li&gt;How do I debug my WPF application? &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;If everyone can concentrate their votes in at least the current top 10 we should have enough! If you currently have a vote on a question with fewer than 10 votes it may be worth removing it and adding it to one of the questions higher up.&lt;/b&gt;&lt;/p&gt; &lt;a title="http://area51.stackexchange.com/proposals/15894/visual-studio-alm?referrer=vtx1N5_bjYysH8mQCaDCxQ2" href="http://area51.stackexchange.com/proposals/15894/visual-studio-alm?referrer=vtx1N5_bjYysH8mQCaDCxQ2"&gt;Visual Studio ALM StackExchange Proposal&lt;/a&gt;   &lt;br /&gt;You have 5 on-topic and 5 off-topic votes to cast.   &lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=141317"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=141317" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://blog.hinshelwood.com/aggbug/141317.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/VisualStudioTeamSystem/~4/woIIKMMPtfo" height="1" width="1"/&gt;</description>
            <dc:creator>Martin Hinshelwood</dc:creator>
            <guid isPermaLink="false">http://blog.hinshelwood.com/archive/2010/08/15/more-votes-required-for-visual-studio-alm-on-area51.aspx</guid>
            <pubDate>Sun, 15 Aug 2010 10:10:08 GMT</pubDate>
            <wfw:comment>http://blog.hinshelwood.com/comments/141317.aspx</wfw:comment>
            <comments>http://blog.hinshelwood.com/archive/2010/08/15/more-votes-required-for-visual-studio-alm-on-area51.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blog.hinshelwood.com/comments/commentRss/141317.aspx</wfw:commentRss>
            <trackback:ping>http://blog.hinshelwood.com/services/trackbacks/141317.aspx</trackback:ping>
        <feedburner:origLink>http://blog.hinshelwood.com/archive/2010/08/15/more-votes-required-for-visual-studio-alm-on-area51.aspx</feedburner:origLink></item>
        <item>
            <title>Changing the Team Project Collection of the Team Build Controller</title>
            <link>http://feeds.martin.hinshelwood.com/~r/VisualStudioTeamSystem/~3/UCUoc2LJX8A/changing-the-team-project-collection-of-the-team-build-controller.aspx</link>
            <description>&lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" class="wlDisabledImage" title="BuildIcon_Large" border="0" alt="BuildIcon_Large" align="left" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/ab2235c2ab06_E4A0/BuildIcon_Large_97146c16-538d-4b34-9136-d0c459b0d89e.png" width="90" height="80" /&gt;&lt;/p&gt;  &lt;p&gt;When you are doing demos or training for Team Foundation Server 2010 (TFS 2010) you may have multiple Team Project Collections (TPC) for different scenarios or process templates. You may even be attaching a pre-built TPC image so you can start from a particular point. If you try to do create a build you will find that it complains about there not being a Team Build Controller (TBC).&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt;One thing you learn very quickly when working with TFS 2010 is that you can only attach ONE Team Build Controller to ONE Team Project Collection. This one-one relationship can cause issues if you have many Team Project Collections because there can only be one Team Project Collection configured per server.&lt;/p&gt;  &lt;p&gt;&lt;img src="http://blog.qetza.net/wp-content/uploads/2009/11/image12.png" /&gt;     &lt;br /&gt;&lt;strong&gt;Figure: Two Team Project Collections&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This means that if you have 2 Team Project Collection you will need two serve to manage the builds. It can be the same server as your build server, but that depends on your throughput and load.&lt;/p&gt;  &lt;p&gt;In the presentation scenario you will need to reconfigure your Team Build Controller on the fly. But how do you do this.&lt;/p&gt;  &lt;p&gt;If you open the Team Foundation Server Administration Console you will see a “Build Configuration” node. If you select this it will show all of the configuration options for your build server on that box.&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" class="wlDisabledImage" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/ab2235c2ab06_E4A0/image_a05c6498-c41a-4b28-b668-760df9a6bd8b.png" width="800" height="496" /&gt;     &lt;br /&gt;&lt;strong&gt;Figure: Team Build Configuration screen shows the Controller and any Agents running on that server&lt;/strong&gt;&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;In this case this is our TFS server and we only have the Build Controller running with no Agent. We run all of the agents on another box as it takes lots of processor to do a build and we don’t want that impacting our TFS server.&lt;/p&gt;  &lt;p&gt;In order to make the change, we need to alter the options not on the Controller instance itself, but on the Build Service Instance.&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" class="wlDisabledImage" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/ab2235c2ab06_E4A0/image_512c491b-7477-4d77-94e8-a6554cc3fa83.png" width="800" height="496" /&gt;     &lt;br /&gt;&lt;strong&gt;Figure: Change the options on the service instance &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Select the “Properties” option on the Build service and then stop the service to make the changes.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" class="wlDisabledImage" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/ab2235c2ab06_E4A0/image_4983f414-8d6c-4320-9aef-d1f97c89ff8e.png" width="399" height="467" /&gt;     &lt;br /&gt;&lt;strong&gt;Figure: The Build Service Properties are only available when the service is stopped&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" class="wlDisabledImage" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/ab2235c2ab06_E4A0/image_2fa0e487-458d-4cac-b1d7-d353196c7626.png" width="349" height="408" /&gt;     &lt;br /&gt;&lt;strong&gt;Figure: Select any server and then Project Collection you want to bind to&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;You need to select the server and then the Team Project Collection that you want to bind to. In fact you could have this Build Service bind to any Team Foundation Server even if the current server hosts TFS. I don’t know why you would want to, but it is possible.     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Now that you have the Build Service configured to work against your new Team Project Collection the Build Controller and any Build Agents configured under it will now work for that collection.&lt;/p&gt;  &lt;p&gt;You can now go forth and create builds…&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:5b0ab82b-6cfb-4ce8-8e0d-649259b6f08f" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/ALM" rel="tag"&gt;ALM&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TFBS" rel="tag"&gt;TFBS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TFS+2010" rel="tag"&gt;TFS 2010&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=140775"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=140775" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://blog.hinshelwood.com/aggbug/140775.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/VisualStudioTeamSystem/~4/UCUoc2LJX8A" height="1" width="1"/&gt;</description>
            <dc:creator>Martin Hinshelwood</dc:creator>
            <guid isPermaLink="false">http://blog.hinshelwood.com/archive/2010/07/05/changing-the-team-project-collection-of-the-team-build-controller.aspx</guid>
            <pubDate>Mon, 05 Jul 2010 15:57:01 GMT</pubDate>
            <wfw:comment>http://blog.hinshelwood.com/comments/140775.aspx</wfw:comment>
            <comments>http://blog.hinshelwood.com/archive/2010/07/05/changing-the-team-project-collection-of-the-team-build-controller.aspx#feedback</comments>
            <wfw:commentRss>http://blog.hinshelwood.com/comments/commentRss/140775.aspx</wfw:commentRss>
            <trackback:ping>http://blog.hinshelwood.com/services/trackbacks/140775.aspx</trackback:ping>
        <feedburner:origLink>http://blog.hinshelwood.com/archive/2010/07/05/changing-the-team-project-collection-of-the-team-build-controller.aspx</feedburner:origLink></item>
        <item>
            <title>Ghost team foundation build controllers</title>
            <link>http://feeds.martin.hinshelwood.com/~r/VisualStudioTeamSystem/~3/bBovdFZP99s/ghost-team-foundation-build-controllers.aspx</link>
            <description>&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="BuildIcon_Large" border="0" alt="BuildIcon_Large" align="left" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/Gettingridofghostteamfoundationbuildcont_9102/BuildIcon_Large_a027e4d0-2fe2-40f8-906e-354fd31b0be2.png" width="90" height="80" /&gt;   &lt;p&gt;Quite often after an upgrade there are things left over. Most of the time they are easy to delete, but sometimes it takes a little effort. Even rarer are those times when something just will not go away no matter how much you try.&lt;/p&gt;  &lt;p&gt;We have had a ghost team build controller hanging around for a while now, and it had defeated my best efforts to get rid of it. &lt;/p&gt;  &lt;br clear="all" /&gt;  &lt;hr /&gt;  &lt;p&gt;The build controller was from our old TFS server from before our &lt;a href="http://geekswithblogs.net/hinshelm/archive/2009/10/25/deploying-visual-studio-2010-team-foundation-server-beta-2.aspx"&gt;TFS 2010 beta 2 upgrade&lt;/a&gt; and was really starting to annoy me. Every time I try to delete it I get the message:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Controller cannot be deleted because there are build in progress      &lt;br /&gt;-Manage Build Controller dialog&lt;/p&gt; &lt;/blockquote&gt;  &lt;br /&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="SNAGHTMLa942cd" border="0" alt="SNAGHTMLa942cd" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/Gettingridofghostteamfoundationbuildcont_9102/SNAGHTMLa942cd.png" width="762" height="432" /&gt;  &lt;br /&gt;&lt;strong&gt;Figure: Deleting a ghost controller does not always work.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I ended up checking all of our 172 Team Projects for the build that was queued, but did not find anything. &lt;a href="http://blogs.msdn.com/b/jimlamb/"&gt;Jim Lamb&lt;/a&gt; pointed me to the “tbl_BuildQueue” table in the team Project Collection database and sure enough there was the nasty little beggar.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/Gettingridofghostteamfoundationbuildcont_9102/image_d0472736-d368-4b60-82a4-1065053c0f20.png" width="653" height="119" /&gt;     &lt;br /&gt;&lt;strong&gt;Figure: The ghost build was easily spotted&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Adam Cogan asked me:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;“Why did you suspect this one?”&lt;/p&gt; &lt;/blockquote&gt;  &lt;br /&gt;  &lt;p&gt;Well, there are a number of things that led me to suspect it:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;QueueId is very low: Look at the other items, they are in the thousands not single digits &lt;/li&gt;    &lt;li&gt;ControllerId: I know there is only one legitimate controller, and I am assuming that 6 relates to “zzUnicorn” &lt;/li&gt;    &lt;li&gt;DefinitionId: This is a very low number and I looked it up in “tbl_BuildDefinition” and it did not exist &lt;/li&gt;    &lt;li&gt;QueueTime: As we did not upgrade to TFS 2010 until late 2009 a date of 2008 for a queued build is very suspect &lt;/li&gt;    &lt;li&gt;Status: A status of 2 means that it is still queued &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;This build must have been queued long ago when we were using TFS 2008, probably a beta, and it never got cleaned up. As controllers are new in TFS 2010 it would have created the “zzUnicorn” controller to handle any build servers that already exist. I had previously deleted the Agent, but leaving the controller just looks untidy.&lt;/p&gt;  &lt;p&gt;Now that the ghost build has been identified there are two options:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Delete the row&lt;/strong&gt;       &lt;br /&gt;I would not recommend ever deleting anything from the database to achieve something in TFS. It is &lt;em&gt;really&lt;/em&gt; not supported. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Set the Status to cancelled&lt;/strong&gt; (Recommended)       &lt;br /&gt;This is the best option as TFS will then clean it up itself &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;So I set the Status of this build to 2 (cancelled) and sure enough it disappeared after a couple of minutes and I was then able to then delete the “zzUnicorn” controller.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="SNAGHTMLc40486" border="0" alt="SNAGHTMLc40486" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/Gettingridofghostteamfoundationbuildcont_9102/SNAGHTMLc40486.png" width="766" height="300" /&gt;     &lt;br /&gt;&lt;strong&gt;Figure: Almost completely clean&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Now all I have to do is get rid of that untidy “zzBunyip” agent, but that will require rewriting one of our build scripts which will have to wait for now.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:9a28ac0b-e1ff-4089-a50d-2c7bb4400756" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/ALM" rel="tag"&gt;ALM&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TFBS" rel="tag"&gt;TFBS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TFS+2010" rel="tag"&gt;TFS 2010&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=140416"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=140416" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://blog.hinshelwood.com/aggbug/140416.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/VisualStudioTeamSystem/~4/bBovdFZP99s" height="1" width="1"/&gt;</description>
            <dc:creator>Martin Hinshelwood</dc:creator>
            <guid isPermaLink="false">http://blog.hinshelwood.com/archive/2010/06/15/ghost-team-foundation-build-controllers.aspx</guid>
            <pubDate>Tue, 15 Jun 2010 09:54:36 GMT</pubDate>
            <wfw:comment>http://blog.hinshelwood.com/comments/140416.aspx</wfw:comment>
            <comments>http://blog.hinshelwood.com/archive/2010/06/15/ghost-team-foundation-build-controllers.aspx#feedback</comments>
            <wfw:commentRss>http://blog.hinshelwood.com/comments/commentRss/140416.aspx</wfw:commentRss>
            <trackback:ping>http://blog.hinshelwood.com/services/trackbacks/140416.aspx</trackback:ping>
        <feedburner:origLink>http://blog.hinshelwood.com/archive/2010/06/15/ghost-team-foundation-build-controllers.aspx</feedburner:origLink></item>
        <item>
            <title>Why you need to tag your build servers in TFS</title>
            <link>http://feeds.martin.hinshelwood.com/~r/VisualStudioTeamSystem/~3/H-pYMeiNrPE/why-you-need-to-tag-your-build-servers-in-tfs.aspx</link>
            <description>&lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="vs2010alm" border="0" alt="vs2010alm" align="left" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/e6d297adc9ef_12485/vs2010alm_8270b99f-6e7d-43e9-84f4-64c8f0bf2f3e.png" width="88" height="68" /&gt;At SSW we use gated check-in for all of our projects. The benefits are based on the number of developers you have working on your project.&lt;/p&gt;  &lt;p&gt;Lets say you have 30 developers and each developer breaks the build once per month. That could mean that you have a broken build every day! Gated check-ins help, but they have a down side that manifests as queued builds and moaning developers.&lt;/p&gt;  &lt;br clear="all" /&gt;  &lt;hr /&gt;  &lt;p&gt;The way to combat this is to have more build servers, but with that comes complexity. Inevitably you will need to install components that you would expect to be installed on target computers, but how do you keep track of which build servers have which bits?&lt;/p&gt;  &lt;p&gt;What about a geographically diverse team? If you have a centrally controlled infrastructure you might have build servers in multiple regions and you don’t want teams in Sydney copying files from Beijing and vice a versa on a regular basis.&lt;/p&gt;  &lt;p&gt;So, what is the answer. Its Tags. You can add a set of Tags to your agents and then set which tags to look for in the build definition. &lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 20px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/e6d297adc9ef_12485/image_8ce7734f-ed9b-4676-b482-b9e906ca8ea5.png" width="474" height="361" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Figure: Open up your Build Controller Manager&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Select “&lt;strong&gt;Build | Manage Build Controllers…&lt;/strong&gt;” to get a list of all of your controllers and he build agents that are associated with them.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 20px; display: inline; border-top: 0px; border-right: 0px" title="SNAGHTML1d44d1f" border="0" alt="SNAGHTML1d44d1f" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/e6d297adc9ef_12485/SNAGHTML1d44d1f.png" width="762" height="432" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Figure: the list of build agents and their controllers&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Each of these Agents might be subtly different. For example only one of these agents has FTP software installed. This software is required for only one of the many builds we have set up.&lt;/p&gt;  &lt;p&gt;My ethos for build servers is to keep them as clean as possible and not to install anything that is not absolutely necessary. For me that means anything that does not add a *.target file is suspect, and should really be under version control and called via the command line from there.&lt;/p&gt;  &lt;p&gt;So, some of the things you may install are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Silverlight 4 SDK&lt;/li&gt;    &lt;li&gt;Visual Studio 2010 &lt;/li&gt;    &lt;li&gt;Visual Studio 2008&lt;/li&gt;    &lt;li&gt;WIX&lt;/li&gt;    &lt;li&gt;etc&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;You should not install things that will not end up on the target users computer. For a website that means something different to a client than to a server, but I am sure you get the idea.&lt;/p&gt;  &lt;p&gt;One thing you can do to make things easier is to create a tag for each of the things that you install. that way developers can find the things they need. We may change to using a more generic tagging structure (Like “Web Application” or “WinForms Application”) if this gets too unwieldy, but for now the list of tags is limited.&lt;/p&gt; &lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 20px; display: inline; border-top: 0px; border-right: 0px" title="SNAGHTML20e2140" border="0" alt="SNAGHTML20e2140" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/e6d297adc9ef_12485/SNAGHTML20e2140.png" width="518" height="500" /&gt;  &lt;br /&gt;&lt;strong&gt;Figure: Tags associated with one of our build agents&lt;/strong&gt;  &lt;p&gt;Once you have your Build Agents all tagged up ALL your builds will start to fail &lt;img class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/e6d297adc9ef_12485/wlEmoticon-smile_2.png" /&gt;&lt;/p&gt;  &lt;p&gt;This is because the default setting for a build is to look for an Agent that &lt;strong&gt;exactly&lt;/strong&gt; matches the tags for the build, and we have not added any yet. The quick way to fix this is to change the “Tag Comparison Operator” from “ExactMatch” to “MatchAtLease” to get your build immediately working.&lt;/p&gt; &lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 20px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/e6d297adc9ef_12485/image_ddbe44cc-72ee-4f25-bf09-4ba05467525e.png" width="785" height="22" /&gt;  &lt;p&gt;&lt;strong&gt;Figure: Tag Comparison Operator changes to MatchAtLeast to get builds to run.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The next thing to do is look for specific tags. You just select from the list of available tags and the controller will make sure you get to a build agent that uses them.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 20px; display: inline; border-top: 0px; border-right: 0px" title="SNAGHTML2133af7" border="0" alt="SNAGHTML2133af7" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/e6d297adc9ef_12485/SNAGHTML2133af7.png" width="289" height="340" /&gt;    &lt;br /&gt;&lt;strong&gt;Figure: I want Silverlight, VS2010 and WIX, but do not care about Location.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;And there you go, you can now have build agents for different purposes and regions within the same environment.&lt;/p&gt;  &lt;p&gt;You can also use name filtering, so if you have a good Agent naming convention you can filter by that for regions. For example, your Agents might be “SYDVMAPTFSBP01” and “SYDVMAPTFSBP02” so a name filter of “SYD*” would target all of the Sydney build agents.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 20px; display: inline; border-top: 0px; border-right: 0px" title="SNAGHTML215b15e" border="0" alt="SNAGHTML215b15e" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/e6d297adc9ef_12485/SNAGHTML215b15e.png" width="762" height="432" /&gt;    &lt;br /&gt;&lt;strong&gt;Figure: Agent names can be used for filtering as well&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This flexibility will allow you to build better software by reducing the likelihood of not having a certain dependency on the target machines. &lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 20px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/e6d297adc9ef_12485/image_c25d2d7e-9a07-4556-84ec-2b84f8ebfc23.png" width="800" height="574" /&gt;    &lt;br /&gt;&lt;strong&gt;Figure: Setting the name filter based on server location&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;Used in combination there is a lot of power here to coordinate tens of build servers for multiple projects across multiple regions so your developers get the most out of your environment.&lt;/p&gt;    &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:733d13f4-482d-4a0d-9c3e-6f0dd364b9f2" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/ALM" rel="tag"&gt;ALM&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TFBS" rel="tag"&gt;TFBS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TFS+2010" rel="tag"&gt;TFS 2010&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TFS+Admin" rel="tag"&gt;TFS Admin&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=140396"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=140396" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://blog.hinshelwood.com/aggbug/140396.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/VisualStudioTeamSystem/~4/H-pYMeiNrPE" height="1" width="1"/&gt;</description>
            <dc:creator>Martin Hinshelwood</dc:creator>
            <guid isPermaLink="false">http://blog.hinshelwood.com/archive/2010/06/14/why-you-need-to-tag-your-build-servers-in-tfs.aspx</guid>
            <pubDate>Mon, 14 Jun 2010 17:11:55 GMT</pubDate>
            <wfw:comment>http://blog.hinshelwood.com/comments/140396.aspx</wfw:comment>
            <comments>http://blog.hinshelwood.com/archive/2010/06/14/why-you-need-to-tag-your-build-servers-in-tfs.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blog.hinshelwood.com/comments/commentRss/140396.aspx</wfw:commentRss>
            <trackback:ping>http://blog.hinshelwood.com/services/trackbacks/140396.aspx</trackback:ping>
        <feedburner:origLink>http://blog.hinshelwood.com/archive/2010/06/14/why-you-need-to-tag-your-build-servers-in-tfs.aspx</feedburner:origLink></item>
        <item>
            <title>Guidance: How to layout you files for an Ideal Solution</title>
            <link>http://feeds.martin.hinshelwood.com/~r/VisualStudioTeamSystem/~3/FOnn-DPztf8/guidance-how-to-layout-you-files-for-an-ideal-solution.aspx</link>
            <description>&lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="vs2010alm" border="0" alt="vs2010alm" align="left" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/7129adaece20_EC32/vs2010alm_955df016-a48f-4c61-b0bd-5a70d0abc59c.png" width="88" height="68" /&gt;Creating a solution and having it maintainable over time is an art and not a science. I like being pedantic and having a place for everything, no matter how small.&lt;/p&gt;  &lt;p&gt;For setting up the Areas to run Multiple projects under one solution see my post on  &lt;a href="http://blog.hinshelwood.com/archive/2010/03/09/when-should-i-use-areas-in-tfs-instead-of-team.aspx"&gt;When should I use Areas in TFS instead of Team Projects&lt;/a&gt; and for an explanation of branching see &lt;a href="http://blog.hinshelwood.com/archive/2010/04/14/guidance-a-branching-strategy-for-scrum-teams.aspx"&gt;Guidance: A Branching strategy for Scrum Teams&lt;/a&gt;.&lt;/p&gt;  &lt;br clear="all" /&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font color="#ff0000"&gt;Update 17th May 2010&lt;/font&gt; – We are currently trialling running a single Sprint branch to improve our history.&lt;/li&gt;    &lt;li&gt;&lt;font color="#ff0000"&gt;Update 20th May 2010&lt;/font&gt; – Fixing Images&lt;/li&gt;    &lt;li&gt;&lt;font color="#ff0000"&gt;Updated 4th August 2010&lt;/font&gt; – There is now best practice guidance around this that supersedes this post.       &lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb668992.aspx"&gt;How To: Structure Your Source Control Folders in Team Foundation Server&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;hr /&gt;  &lt;p&gt;Whenever I setup a new Team Project I implement the basic version control structure. I put “readme.txt” files in the folder structure explaining the different levels, and a solution file called “[Client].[Product].sln” located at “$/[Client]/[Product]/DEV/Main” within version control.&lt;/p&gt;  &lt;p&gt;Developers should add any projects you need to create to that solution in the format “[Client].[Product].[ProductArea].[Assembly]” and they will automatically be picked up and built automatically when you setup Automated Builds using Team Foundation Build.&lt;/p&gt;  &lt;p&gt;All test projects need to be done using MSTest to get proper IDE and Team Foundation Build integration out-of-the-box and be named for the assembly that it is testing with a naming convention of “[Client].[Product].[ProductArea].[Assembly].Tests”&lt;/p&gt;  &lt;p&gt;Here is a description of the folder layout; this content should be replicated in readme files under version control in the relevant locations so that even developers new to the project can see how to do it.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[3]" border="0" alt="clip_image002[3]" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/7129adaece20_EC32/clip_image002%5B3%5D_d8267385-a648-48d5-8646-3a4b590d7240.jpg" width="264" height="198" /&gt;     &lt;br /&gt;&lt;strong&gt;Figure: The Team Project level - at this level there should be a folder for each the products that you are building if you are &lt;/strong&gt;&lt;a href="http://blog.hinshelwood.com/archive/2010/03/09/when-should-i-use-areas-in-tfs-instead-of-team.aspx" target="_blank"&gt;&lt;strong&gt;using Areas correctly&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; in &lt;a title="Team Foundation Server" href="http://msdn2.microsoft.com/en-us/teamsystem/aa718934.aspx" target="_blank"&gt;TFS&lt;/a&gt; 2010.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You should try very hard to avoided spaces as these things always end up in a URL eventually e.g. "Code Auditor" should be "CodeAuditor". &lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image004[4]" border="0" alt="clip_image004[4]" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/7129adaece20_EC32/clip_image004%5B4%5D_8d2bd65b-06d3-4f81-8373-876b183c279e.jpg" width="264" height="198" /&gt;     &lt;br /&gt;&lt;strong&gt;Figure: Product Level - At this level there should be only 3 folders (DEV, RELESE and SAFE) all of which should be in capitals.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;These folders represent the three stages of your application production line. Each of them may contain multiple branches but this format leaves all of your branches at the same level.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image006[4]" border="0" alt="clip_image006[4]" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/7129adaece20_EC32/clip_image006%5B4%5D_30f1df6e-819c-413e-8f1b-17160d7fa485.jpg" width="264" height="198" /&gt;     &lt;br /&gt;&lt;strong&gt;Figure: The DEV folder is where all of the Development branches reside.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The DEV folder will contain the "Main" branch and all feature branches is they are being used. The DEV designation specifies that all code in every branch under this folder has not been released or made ready for release. And feature branches MUST merge (Forward Integrate) from Main and stabilise prior to merging (Reverse Integration) back down into Main and being decommissioned.&lt;/p&gt; &lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/7129adaece20_EC32/image_84c769b3-19f9-4665-aec8-d4958829e204.png" width="633" height="190" /&gt;   &lt;br /&gt;&lt;strong&gt;Figure: In the Feature branching scenario only merges are allowed onto Main, no development can be done there.&lt;/strong&gt;   &lt;p&gt;Once we have a mature product it is important that new features being developed in parallel are kept separate. This would most likely be used if we had more than one Scrum team working on a single product.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image008[4]" border="0" alt="clip_image008[4]" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/7129adaece20_EC32/clip_image008%5B4%5D_c9bc8e20-da1a-49bd-97b3-3f15be58f702.jpg" width="264" height="198" /&gt;     &lt;br /&gt;&lt;strong&gt;Figure: when we are ready to do a release of our software we will create a release branch that is then stabilised prior to deployment.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This protects the serviceability of of our released code allowing developers to fix bugs and re-release an existing version.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/7129adaece20_EC32/image_d5eeee47-5f5e-4125-b0f9-a03d85f95e71.png" width="655" height="337" /&gt;     &lt;br /&gt;&lt;strong&gt;Figure: All bugs found on a release are fixed on the release.&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;All bugs found in a release are fixed on the release and a new deployment is created. After the deployment is created the bug fixes are then merged (Reverse Integration) into the Main branch. We do this so that we separate out our development from our production ready code.  &lt;/p&gt; &lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image010[4]" border="0" alt="clip_image010[4]" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/7129adaece20_EC32/clip_image010%5B4%5D_a2da864c-6e0f-4446-b80d-b34c67a0151f.jpg" width="264" height="198" /&gt;   &lt;br /&gt;&lt;strong&gt;Figure: SAFE or RTM is a read only record of what you actually released. Labels are not immutable so are useless in this circumstance.&lt;/strong&gt;  &lt;p&gt;When we have completed stabilisation of the release branch and we are ready to deploy to production we create a read-only copy of the code for reference. In some cases this could be a regulatory concern, but in most cases it protects the company building the product from legal entanglements based on what you did or did not release.&lt;/p&gt; &lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/7129adaece20_EC32/image_5527e785-9a91-4964-a6ad-c287fb121175.png" width="651" height="455" /&gt;   &lt;p&gt;&lt;strong&gt;Figure: This allows us to reference any particular version of our application that was ever shipped.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;In addition I am an advocate of having a single solution with all the Project folders directly under the “Trunk”/”Main” folder and using the full name for the project folders..&lt;/p&gt; &lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/7129adaece20_EC32/clip_image002_2.jpg"&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/7129adaece20_EC32/clip_image002_thumb.jpg" width="461" height="395" /&gt;&lt;/a&gt;   &lt;p&gt;&lt;strong&gt;Figure: The ideal solution&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If you must have multiple solutions, because you need to use more than one version of Visual Studio, name the solutions “[Client].[Product][VSVersion].sln” and have it reside in the same folder as the other solution.&lt;/p&gt;  &lt;p&gt;This makes it easier for Automated build and improves the discoverability of your code and its dependencies.&lt;/p&gt;  &lt;p&gt;Send me your feedback!&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:54cb562d-cd68-471b-964b-c94173131b0e" class="wlWriterSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/ALM" rel="tag"&gt;ALM&lt;/a&gt; &lt;a href="http://technorati.com/tags/VS+2010" rel="tag"&gt;VS 2010&lt;/a&gt; &lt;a href="http://technorati.com/tags/VS+2008" rel="tag"&gt;VS 2008&lt;/a&gt; &lt;a href="http://technorati.com/tags/TFS+2010" rel="tag"&gt;TFS 2010&lt;/a&gt; &lt;a href="http://technorati.com/tags/TFS+2008" rel="tag"&gt;TFS 2008&lt;/a&gt; &lt;a href="http://technorati.com/tags/TFBS" rel="tag"&gt;TFBS&lt;/a&gt; &lt;a href="http://technorati.com/tags/Scrum" rel="tag"&gt;Scrum&lt;/a&gt; &lt;a href="http://technorati.com/tags/Branching" rel="tag"&gt;Branching&lt;/a&gt; &lt;a href="http://technorati.com/tags/TFS" rel="tag"&gt;TFS&lt;/a&gt; &lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=139856"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=139856" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://blog.hinshelwood.com/aggbug/139856.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/VisualStudioTeamSystem/~4/FOnn-DPztf8" height="1" width="1"/&gt;</description>
            <dc:creator>Martin Hinshelwood</dc:creator>
            <guid isPermaLink="false">http://blog.hinshelwood.com/archive/2010/05/17/guidance-how-to-layout-you-files-for-an-ideal-solution.aspx</guid>
            <pubDate>Mon, 17 May 2010 10:08:16 GMT</pubDate>
            <wfw:comment>http://blog.hinshelwood.com/comments/139856.aspx</wfw:comment>
            <comments>http://blog.hinshelwood.com/archive/2010/05/17/guidance-how-to-layout-you-files-for-an-ideal-solution.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blog.hinshelwood.com/comments/commentRss/139856.aspx</wfw:commentRss>
            <trackback:ping>http://blog.hinshelwood.com/services/trackbacks/139856.aspx</trackback:ping>
        <feedburner:origLink>http://blog.hinshelwood.com/archive/2010/05/17/guidance-how-to-layout-you-files-for-an-ideal-solution.aspx</feedburner:origLink></item>
        <item>
            <title>Scrum with Team Foundation Server 2010 Done</title>
            <link>http://feeds.martin.hinshelwood.com/~r/VisualStudioTeamSystem/~3/Tu6TFFBaaGM/scrum-with-team-foundation-server-2010-done.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/2139dc5039e8_9EA4/DDD_2.png"&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DDD" border="0" alt="DDD" align="left" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/2139dc5039e8_9EA4/DDD_thumb.png" width="171" height="87" /&gt;&lt;/a&gt;Since I have joined SSW as a Solution Architect its Chief Architect, Adam Cogan, has been mentoring me and pushing me to do better. One of the things that I have been wanting to do since the first DDD Scotland was to present a session. For DDD Scotland 2010 Adam suggested that I submit he double session on “Better project Management with Team Foundation Server 2010”.&lt;/p&gt;  &lt;p&gt;So, with some apprehension I submitted two session as Part A and Part B.&lt;/p&gt;  &lt;br clear="all" /&gt;  &lt;hr /&gt;  &lt;p&gt;&lt;strong&gt;Download &lt;/strong&gt;&lt;a href="http://cid-57599e234f1ebc1c.skydrive.live.com/self.aspx/Public/Presentations/SSW^_Scrum%20with%20TFS%202010^_DDDScotland^_v1.1.pptx" target="_blank"&gt;&lt;strong&gt;DDD Scotland -  Scrum with Team Foundation Server 2010&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;How surprised was I that after the attendees had finished casting their votes that both sessions would be in the top 20 one in the top 5. I an effort to promote diversity in sessions the DDD committee try to make sure that each presenter only have one session. I would have to compress SSW’s presentation into 1 hour.&lt;/p&gt;  &lt;p&gt;Around this time SSW embarked on it continuing adventures with scrum an Microsoft started heavily investing in Scrum for its internal use. I decided to do a slightly different session, but one that would still meet the agenda and goal of the billed session to provide “Better project management with Team Foundation Server 2010”.&lt;/p&gt;  &lt;p&gt;And so &lt;a href="http://blog.hinshelwood.com/archive/2010/04/09/scrum-for-team-foundation-server-2010.aspx" target="_blank"&gt;Scrum with Team Foundation Server 2010&lt;/a&gt; was born. At this stage I really have to thank &lt;a href="http://blogs.msdn.com/aaronbjork" target="_blank"&gt;Aaron Bjork&lt;/a&gt; who provided me with many of the slides and animations as I really can’t work Power Point. &lt;/p&gt;  &lt;p&gt;On the 27th of April I presented the session for the Aberdeen Partner Group and then on 8th May I presented at &lt;a href="http://developerdeveloperdeveloper.com/scotland2010/" target="_blank"&gt;DDD Scotland&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;img title="" alt="dddscot-trademark-shot by Craig Murphy." src="http://farm5.static.flickr.com/4007/4593134708_cf386c551a.jpg" width="500" height="375" /&gt;    &lt;br /&gt;&lt;strong&gt;Figure: Some of the presenters and organisers of DDD Scotland&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I mentioned quite a few of SSW’s &lt;a href="http://sharepoint.ssw.com.au/Standards/Management/RulesToBetterScrumUsingTFS" target="_blank"&gt;Rules to better Scrum Using TFS&lt;/a&gt; and I have uploaded my presentation to Skydrive.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Download &lt;/strong&gt;&lt;a href="http://cid-57599e234f1ebc1c.skydrive.live.com/self.aspx/Public/Presentations/SSW^_Scrum%20with%20TFS%202010^_DDDScotland^_v1.1.pptx" target="_blank"&gt;&lt;strong&gt;DDD Scotland -  Scrum with Team Foundation Server 2010&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;br /&gt;    &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:54cb562d-cd68-471b-964b-c94173131b0e" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Scrum" rel="tag"&gt;Scrum&lt;/a&gt; &lt;a href="http://technorati.com/tags/TFS+2010" rel="tag"&gt;TFS 2010&lt;/a&gt; &lt;a href="http://technorati.com/tags/ALM" rel="tag"&gt;ALM&lt;/a&gt; &lt;a href="http://technorati.com/tags/DDD+Scot" rel="tag"&gt;DDD Scot&lt;/a&gt; &lt;a href="http://technorati.com/tags/Live" rel="tag"&gt;Live&lt;/a&gt; &lt;a href="http://technorati.com/tags/SSW" rel="tag"&gt;SSW&lt;/a&gt; &lt;a href="http://technorati.com/tags/SP+2010" rel="tag"&gt;SP 2010&lt;/a&gt; &lt;a href="http://technorati.com/tags/SharePoint" rel="tag"&gt;SharePoint&lt;/a&gt; &lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=139735"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=139735" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://blog.hinshelwood.com/aggbug/139735.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/VisualStudioTeamSystem/~4/Tu6TFFBaaGM" height="1" width="1"/&gt;</description>
            <dc:creator>Martin Hinshelwood</dc:creator>
            <guid isPermaLink="false">http://blog.hinshelwood.com/archive/2010/05/09/scrum-with-team-foundation-server-2010-done.aspx</guid>
            <pubDate>Sun, 09 May 2010 21:32:39 GMT</pubDate>
            <wfw:comment>http://blog.hinshelwood.com/comments/139735.aspx</wfw:comment>
            <comments>http://blog.hinshelwood.com/archive/2010/05/09/scrum-with-team-foundation-server-2010-done.aspx#feedback</comments>
            <wfw:commentRss>http://blog.hinshelwood.com/comments/commentRss/139735.aspx</wfw:commentRss>
            <trackback:ping>http://blog.hinshelwood.com/services/trackbacks/139735.aspx</trackback:ping>
        <feedburner:origLink>http://blog.hinshelwood.com/archive/2010/05/09/scrum-with-team-foundation-server-2010-done.aspx</feedburner:origLink></item>
        <item>
            <title>Integrate SharePoint 2010 with Team Foundation Server 2010</title>
            <link>http://feeds.martin.hinshelwood.com/~r/VisualStudioTeamSystem/~3/m_or-3yGPg4/integrate-sharepoint-2010-with-team-foundation-server-2010.aspx</link>
            <description>&lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="vs2010alm" border="0" alt="vs2010alm" align="left" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/IntegrateSharePoint2010withTeamFoundatio_A557/vs2010alm_cee0d628-2b99-4935-b277-56cef91fa677.png" width="88" height="68" /&gt;Our client is using a brand new shiny installation of SharePoint 2010, so we need to integrate our upgraded Team Foundation Server 2010 instance into it. In order to do that you need to run the Team Foundation Server 2010 install on the SharePoint 2010 server and choose to install only the “Extensions for SharePoint Products and Technologies”. We want out &lt;a href="http://blog.hinshelwood.com/archive/2010/05/03/upgrading-team-foundation-server-2008-to-2010.aspx"&gt;upgraded Team Project Collection&lt;/a&gt; to create any new portal in this SharePoint 2010 server farm.&lt;/p&gt;  &lt;br clear="all" /&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;Update 4th May 2010&lt;/font&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://lightspeedit.com.au" rel="nofollow"&gt;Nilesh Deshpande&lt;/a&gt; from LightSpeedIT in Sydney was asking how he configures SharePoint integration when he has TFS installed on Windows 7. The answer is easy, if not one he will like. You can’t. When you install on Windows 7 you can only do a basic install and the Admin options you would need to configure SharePoint are not available. You will need to move you ProjectCollection to a TFS instance running on a Server OS to be able to do this.&lt;/li&gt; &lt;/ul&gt;  &lt;hr /&gt;  &lt;p&gt;There a number of goodies above and beyond a solution file that requires the install, with the main one being the TFS2010 client API. These goodies allow proper integration with the creation and viewing of Work Items from SharePoint a new feature with TFS 2010. This works in both SharePoint 2007 and SharePoint 2010 with the level of integration dependant on the version of SharePoint that you are running. There are three levels of integration with “SharePoint Services 3.0” or “SharePoint Foundation 2010” being the lowest. This level only offers reporting services framed integration for reporting along with Work Item Integration and document management. The highest is Microsoft Office SharePoint Services (MOSS) Enterprise with Excel Services integration providing some lovely dashboards.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/IntegrateSharePoint2010withTeamFoundatio_A557/image_2fb7ae58-ee52-4920-8095-d65a793515b8.png" width="789" height="642" /&gt;     &lt;br /&gt;&lt;strong&gt;Figure: Dashboards take the guessing out of Project Planning and estimation. Plus writing these reports would be boring!&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;The Extensions that you need are on the same installation media as the main TFS install and the only difference is the options you pick during the install.&lt;/p&gt; &lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image11" border="0" alt="image11" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/IntegrateSharePoint2010withTeamFoundatio_A557/image11_a82ab407-073b-45af-b209-9c5db3063b96.png" width="800" height="614" /&gt;   &lt;br /&gt;&lt;strong&gt;Figure: Installing the TFS 2010 Extensions for SharePoint Products and Technologies onto SharePoint 2010&lt;/strong&gt;   &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Annoyingly you may need to reboot a couple of times, but on this server the process was MUCH smother than on our internal server. I think this was mostly to do with this being a clean install.&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Once it is installed you need to run the configuration. This will add all of the Solution and Templates that are needed for SharePoint to work properly with TFS.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image14" border="0" alt="image14" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/IntegrateSharePoint2010withTeamFoundatio_A557/image14_9e7a7f90-3840-43a9-a8e5-9ca93698e8ee.png" width="800" height="602" /&gt;     &lt;br /&gt;&lt;strong&gt;Figure: This is where all the TFS 2010 goodies are added to your SharePoint 2010 server and the TFS 2010 object model is installed.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt; &lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image17" border="0" alt="image17" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/IntegrateSharePoint2010withTeamFoundatio_A557/image17_4148c1fc-4e0f-4f3e-a0ee-ed950204cffb.png" width="799" height="604" /&gt;     &lt;br /&gt;&lt;strong&gt;Figure: All done, you have everything installed, but you still need to configure it&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Now that we have the TFS 2010 SharePoint Extensions installed on our SharePoint 2010 server we need to configure them both so that they will talk happily to each other.    &lt;br /&gt;&lt;/p&gt;  &lt;h3&gt;Configuring the SharePoint 2010 Managed path for Team Foundation Server 2010&lt;/h3&gt;  &lt;p&gt;In order for TFS to automatically create your project portals you need a wildcard managed path setup. This is where TFS will create the portal during the creation of a new Team project.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;To find the managed paths page for any application you need to first select the “Managed web applications”  link from the SharePoint 2010 Central Administration screen.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/IntegrateSharePoint2010withTeamFoundatio_A557/image_1b6e5541-c9d0-4036-ba3f-d0353fa7d69e.png" width="800" height="529" /&gt;     &lt;br /&gt;&lt;strong&gt;Figure: Find the “Manage web applications” link under the “Application Management” section.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;On you are there you will see that the “Managed Paths” are there, they are just greyed out and selecting one of the applications will enable it to be clicked.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/IntegrateSharePoint2010withTeamFoundatio_A557/image_f2e33e63-50b9-4da5-bf50-76d6e4e0ee13.png" width="551" height="371" /&gt;     &lt;br /&gt;&lt;strong&gt;Figure: You need to select an application for the SharePoint 2010 ribbon to activate.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/IntegrateSharePoint2010withTeamFoundatio_A557/image_a6255220-0e2d-4e2b-a763-cd0c00340951.png" width="577" height="367" /&gt;     &lt;br /&gt;&lt;strong&gt;Figure: You need to select an application before you can get to the Managed Paths for that application.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Now we need to add a managed path for TFS 2010 to create its portals under. I have gone for the obvious option of just calling the managed path “TFS02” as the TFS 2010 server is the second TFS server that the client has installed, TFS 2008 being the first. This links the location to the server name, and as you can’t have two projects of the same name in two separate project collections there is unlikely to be any conflicts.&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/IntegrateSharePoint2010withTeamFoundatio_A557/image_8e9d3fb4-251f-489d-8efd-0048670c5846.png" width="800" height="562" /&gt;     &lt;br /&gt;&lt;strong&gt;Figure: Add a “tfs02” wildcard inclusion path to your SharePoint site.      &lt;br /&gt;&lt;/strong&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;h3&gt;Configure the Team Foundation Server 2010 connection to SharePoint 2010&lt;/h3&gt;  &lt;p&gt;In order to have you new TFS 2010 Server talk to and create sites in SharePoint 2010 you need to tell the TFS server where to put them. As this TFS 2010 server was installed in out-of-the-box mode it has a SharePoint Services 3.0 (the free one) server running on the same box. But we want to change that so we can use the external SharePoint 2010 instance. Just open the “Team Foundation Server Administration Console” and navigate to the “SharePoint Web Applications” section. Here you click “Add” and enter the details for the Managed path we just created.&lt;/p&gt; &lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/IntegrateSharePoint2010withTeamFoundatio_A557/image_5d0320fe-f29e-4374-88c9-eae8823a0d51.png" width="800" height="570" /&gt;   &lt;br /&gt;&lt;strong&gt;Figure: If you have special permissions on your SharePoint you may need to add accounts to the “Service Accounts” section.&lt;/strong&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Before we can se this new SharePoint 2010 instance to be the default for our upgraded Team Project Collection we need to configure SharePoint to take instructions from our TFS server.&lt;/p&gt;  &lt;h3&gt;Configure SharePoint 2010 to connect to Team Foundation Server 2010&lt;/h3&gt;  &lt;p&gt;On your SharePoint 2010 server open the Team Foundation Server Administration Console and select the “Extensions for SharePoint Products and Technologies” node. Here we need to “grant access” for our TFS 2010 server to create sites. Click the “Grant access” link and  fill out the full URL to the  TFS server, for example &lt;a href="http://servername.domain.com:8080/tfs"&gt;http://servername.domain.com:8080/tfs&lt;/a&gt;, and if need be restrict the path that TFS sites can be created on. Remember that when the users create a new team project they can change the default and point it anywhere they like as long as it is an authorised SharePoint location.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/IntegrateSharePoint2010withTeamFoundatio_A557/image_74b63d15-78fe-4479-8d86-f5a27ecabc2e.png" width="800" height="530" /&gt;     &lt;br /&gt;&lt;strong&gt;Figure: Grant access for your TFS 2010 server to create sites in SharePoint 2010&lt;/strong&gt;     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Now that we have an authorised location for our team project portals to be created we need to tell our Team Project Collection that this is where it should stick sites by default for any new Team Projects created.&lt;/p&gt;  &lt;h3&gt;Configure the Team Foundation Server 2010 Team Project Collection to create new sites in SharePoint 2010&lt;/h3&gt;  &lt;p&gt;Back on out TFS 2010 server we need to setup the defaults for our upgraded Team Project Collection to the new SharePoint 2010 integration we have just set up. On the TFS 2010 server open up the “Team Foundation Server Administration Console” again and navigate to the “Team Project Collections” node. Once you are there you will see a list of all of your TPC’s and in our case we have a DefaultCollection as well as out named and Upgraded collection for TFS 2008.&lt;/p&gt;  &lt;p&gt;If you select the “SharePoint Site” tab we can see that it is not currently configured.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/IntegrateSharePoint2010withTeamFoundatio_A557/image_bc3d6930-dffc-4104-a7e4-41e1b151bc72.png" width="800" height="567" /&gt;     &lt;br /&gt;&lt;strong&gt;Figure: Our new Upgrade TFS2008 Team Project Collection does not have SharePoint configured&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Select to “Edit Default Site Location” and select the new integration point that we just set up for SharePoint 2010. Once you have selected the “SharePoint Web Application” (the thing we just configured) then it will give you an example based on that configuration point and the name of the Team Project Collection that we are configuring.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/IntegrateSharePoint2010withTeamFoundatio_A557/image_fec63e96-ef5a-4202-b661-dd6b737d7c9f.png" width="800" height="567" /&gt;     &lt;br /&gt;&lt;strong&gt;Figure: Set the default location for new Team Project Portals to be created for this Team Project Collection&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This is where the reason for configuring the Extensions on the SharePoint 2010 server before doing this last bit becomes apparent. TFS 2010 is going to create a site at our &lt;a href="http://sharepointserver/tfs02/"&gt;http://sharepointserver/tfs02/&lt;/a&gt; location called &lt;a href="http://sharepointserver/tfs02/[TeamProjectCollection"&gt;http://sharepointserver/tfs02/[TeamProjectCollection&lt;/a&gt;], or whatever we had specified, and it would have had difficulty doing this if we had not given it permission first.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/IntegrateSharePoint2010withTeamFoundatio_A557/image_a03288d3-8655-42c8-b58f-785c8f4524c8.png" width="800" height="568" /&gt;     &lt;br /&gt;&lt;strong&gt;Figure: If there is no Team Project Collection site at this location the TFS 2010 server is going to create one&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;This will create a nice Team Project Collection parent site to contain the Portals for any new Team Projects that are created. It is with noting that it will not create portals for existing Team Projects as this process is run during the Team Project Creation wizard.&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/IntegrateSharePoint2010withTeamFoundatio_A557/image_328c1980-64dc-4d15-b043-f20508b3d1e4.png" width="800" height="512" /&gt;     &lt;br /&gt;&lt;strong&gt;Figure: Just a basic parent site to host all of your new Team Project Portals as sub sites&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;You will need to add all of the users that will be creating Team Projects to be Administrators of this site so that they will not get an error during the Project Creation Wizard. You may also want to customise this as a proper portal to your projects if you are going to be having lots of them, but it is really just a default placeholder so you have a top level site that you can backup and point at.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;You have now integrated SharePoint 2010 and team Foundation Server 2010!&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;You can now go forth and multiple your Team Projects for this Team Project Collection or you can continue to add portals to your other Collections.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:54cb562d-cd68-471b-964b-c94173131b0e" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/TFS+2010" rel="tag"&gt;TFS 2010&lt;/a&gt; &lt;a href="http://technorati.com/tags/SP+2010" rel="tag"&gt;SP 2010&lt;/a&gt; &lt;a href="http://technorati.com/tags/ALM" rel="tag"&gt;ALM&lt;/a&gt; &lt;a href="http://technorati.com/tags/MOSS" rel="tag"&gt;MOSS&lt;/a&gt; &lt;a href="http://technorati.com/tags/TFS+2008" rel="tag"&gt;TFS 2008&lt;/a&gt; &lt;a href="http://technorati.com/tags/TFS" rel="tag"&gt;TFS&lt;/a&gt; &lt;a href="http://technorati.com/tags/SharePoint" rel="tag"&gt;SharePoint&lt;/a&gt; &lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=139644"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=139644" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://blog.hinshelwood.com/aggbug/139644.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/VisualStudioTeamSystem/~4/m_or-3yGPg4" height="1" width="1"/&gt;</description>
            <dc:creator>Martin Hinshelwood</dc:creator>
            <guid isPermaLink="false">http://blog.hinshelwood.com/archive/2010/05/03/integrate-sharepoint-2010-with-team-foundation-server-2010.aspx</guid>
            <pubDate>Mon, 03 May 2010 15:47:36 GMT</pubDate>
            <wfw:comment>http://blog.hinshelwood.com/comments/139644.aspx</wfw:comment>
            <comments>http://blog.hinshelwood.com/archive/2010/05/03/integrate-sharepoint-2010-with-team-foundation-server-2010.aspx#feedback</comments>
            <slash:comments>14</slash:comments>
            <wfw:commentRss>http://blog.hinshelwood.com/comments/commentRss/139644.aspx</wfw:commentRss>
            <trackback:ping>http://blog.hinshelwood.com/services/trackbacks/139644.aspx</trackback:ping>
        <feedburner:origLink>http://blog.hinshelwood.com/archive/2010/05/03/integrate-sharepoint-2010-with-team-foundation-server-2010.aspx</feedburner:origLink></item>
        <item>
            <title>Upgrading Team Foundation Server 2008 to 2010</title>
            <link>http://feeds.martin.hinshelwood.com/~r/VisualStudioTeamSystem/~3/CGNSBPvx420/upgrading-team-foundation-server-2008-to-2010.aspx</link>
            <description>&lt;p&gt;&lt;img title="vs2010alm" border="0" alt="vs2010alm" align="left" width="88" height="68" style="border-right-width: 0px; margin: 0px 20px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/UpgradingtoTeamFoundationServer2010_C1D3/vs2010alm_3bbad1c9-c1cd-4ae4-87bc-68c49d3c0d80.png" /&gt;I am sure you will have seen my &lt;a href="http://blog.hinshelwood.com/archive/2010/04/12/_upgrading-from-tfs-2010-rc-to-tfs-2010-rtm-done.aspx"&gt;posts on upgrading&lt;/a&gt; our internal Team Foundation Server from TFS2008 to TFS2010 Beta 2, RC and RTM, but what about a fresh upgrade of TFS2008 to TFS2010 using the RTM version of TFS. One of our clients is taking the plunge with TFS2010, so I have the job of doing the upgrade.&lt;/p&gt;
&lt;p&gt;&lt;br clear="all" /&gt;
 &lt;/p&gt;
&lt;p&gt;&lt;font color="#ff0000"&gt;Update 4th May 2010&lt;/font&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="http://johnliu.net/"&gt;John Liu&lt;/a&gt; – John can’t find his history after the Upgrade. This is not a feature of the upgrade and indeed all of the history is in tact on the original project. The problem is that you can’t actually change the process template that a project uses. Oh, you can make a really good stab at making it look like it has been upgraded, but under the covers there will be differences from a native project. So the plan is to migrate by creating a new project on the Agile5 template that has a branch of code from the old Conchnago project. This keeps the history in tact, if not in one place. If you look in the history and what you are looking for is before the upgrade data (same as the date of the branch) you need to follow the branch back to the old project and check there. I bet in 6 months you never need to look…&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://translate.google.com/translate?js=y&amp;amp;prev=_t&amp;amp;hl=en&amp;amp;ie=UTF-8&amp;amp;layout=1&amp;amp;eotf=1&amp;amp;u=http%3A%2F%2Fzlgcool.cnblogs.com%2F&amp;amp;sl=zh-CN&amp;amp;tl=en"&gt;Allan Zhou&lt;/a&gt; – I am going to cover the project upgrade process in a future post, but suffice to say you can not remove a template once it has been used. That data will be floating around in the warehouse and cube forever. You can do a certain amount of clean up, but that would require you to “destroy” all of the work item types and projects that use an old template and you would loose history.&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.geekswithblogs.net/wildturtle"&gt;Sam Abraham&lt;/a&gt; – You can indeed connect just fine from Visual Studio 2010 to a Team Foundation Server 2008.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;It is sometimes very useful to have a team member that starts work when most of the Sydney workers are heading home as I can do the upgrade without impacting them. The down side is that if you have any blockers then you can be pretty sure that everyone that can deal with your problem is asleep &lt;img class="wlEmoticon wlEmoticon-sad" alt="Sad" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/UpgradingtoTeamFoundationServer2010_C1D3/wlEmoticon-sad_2.png" /&gt;&lt;/p&gt;
&lt;p&gt;I am starting with an existing blank installation of TFS 2010, but Adam Cogan let slip that he was the one that did the install so I thought it prudent to make sure that it was OK.&lt;/p&gt;
&lt;h3&gt;Verifying Team Foundation Server 2010&lt;/h3&gt;
&lt;p&gt;We need to check that TFS 2010 has been installed correctly. First, check the Admin console and have a root about for any errors.&lt;/p&gt;
&lt;p&gt;&lt;img title="image" border="0" alt="image" width="800" height="451" style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/UpgradingtoTeamFoundationServer2010_C1D3/image_9d0c152b-9c52-438f-a38b-28271c91af35.png" /&gt; &lt;br /&gt;
&lt;strong&gt;Figure: Even the SQL Setup looks good. I don’t know how Adam did it!&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;Backing up the Team Foundation Server 2008 Databases&lt;/h3&gt;
&lt;p&gt;As we are moving from one server to another (&lt;a target="_blank" href="http://sharepoint.ssw.com.au/Standards/TFS/RulesToBetterTFS2010Migration"&gt;recommended method&lt;/a&gt;) we will be taking a backup of our TFS2008 databases and resorting them to the SQL Server for the new TFS2010 Server. Do not just detach and reattach. This will cause problems with the version of the database. If you are running a test migration you just need to create a backup of the TFS 2008 databases, but if you are doing the live migration then you should stop IIS on the TFS 2008 server before you backup the databases. This will stop any inadvertent check-ins or changes to TFS 2008.&lt;/p&gt;
&lt;p&gt;&lt;img title="image" border="0" alt="image" width="659" height="463" style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/UpgradingtoTeamFoundationServer2010_C1D3/image_15659b67-37a3-4072-ad65-0cae32de8adc.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Figure: Stop IIS before you take a backup to prevent any TFS 2008 changes being written to the database.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;It is good to leave a little time between taking the TFS 2008 server offline and commencing the upgrade as there is always one developer who has not finished and starts screaming. This time it was &lt;a target="_blank" href="http://sharepoint.ssw.com.au/AboutUs/Employees/Pages/John.aspx"&gt;John Liu&lt;/a&gt; that needed 10 more minutes to make his changes and check-in, so I always give it 30 minutes and see if anyone screams.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;John Liu [SSW] said: &lt;br /&gt;
  are you doing something to TFS :-O &lt;br /&gt;
MrHinsh [SSW UK][VS ALM MVP] said: &lt;br /&gt;
  I have stopped TFS 2008 as per my emails &lt;br /&gt;
John Liu [SSW] said: &lt;br /&gt;
  haven't finish check in @_@ &lt;br /&gt;
  can we have it for 10mins? :) &lt;br /&gt;
MrHinsh [SSW UK][VS ALM MVP] said: &lt;br /&gt;
  TFS 2008 has been started &lt;br /&gt;
John Liu [SSW] said: &lt;br /&gt;
  I love you!&lt;/p&gt;
&lt;p&gt;-IM conversation at TFS Upgrade +25 minutes&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;After John confirmed that he had everything done I turned IIS off again and made a cup of tea. There were no more screams so the upgrade can continue. &lt;br /&gt;
 &lt;/p&gt;
&lt;p&gt;&lt;img title="image" border="0" alt="image" width="626" height="657" style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/UpgradingtoTeamFoundationServer2010_C1D3/image_31c4d257-6c8f-4a30-bcaa-44beca450eea.png" /&gt; &lt;br /&gt;
&lt;strong&gt;Figure: Backup all of the databases for TFS and include the Reporting Services, just in case.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;img title="image" border="0" alt="image" width="763" height="388" style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/UpgradingtoTeamFoundationServer2010_C1D3/image_1653df68-b9a6-4700-a311-4fa6a3f6a6e2.png" /&gt; &lt;br /&gt;
&lt;strong&gt;Figure: Check that all the backups have been taken&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Once you have your backups, you need to copy them to your new TFS2010 server and restore them. This is a good way to proceed as if we have any problems, or just plain run out of time, then you just turn the TFS 2008 server back on and all you have lost is one upgrade day, and not 10 developer days.&lt;/p&gt;
&lt;p&gt;As per the rules, you should &lt;a target="_blank" href="http://sharepoint.ssw.com.au/Standards/TFS/RulesToBetterTFS2010Migration/Pages/DogfoodStatsBefore.aspx"&gt;record the number of files and the total number of areas and iterations&lt;/a&gt; before the upgrade so you have something to compare to:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;TFS2008&lt;/p&gt;
&lt;p&gt;File count:&lt;/p&gt;
&lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="200"&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
            &lt;td valign="top" width="200"&gt;&lt;strong&gt;Count&lt;/strong&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="200"&gt;1&lt;/td&gt;
            &lt;td valign="top" width="200"&gt;1845&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="200"&gt;2&lt;/td&gt;
            &lt;td valign="top" width="200"&gt;15770&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Areas &amp;amp; Iterations:&lt;/p&gt;
&lt;p&gt;139&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;You can use this to verify that the upgrade was successful. it should however be noted that the numbers in TFS 2010 will be bigger. This is due to some of the sorting out that TFS does during the upgrade process.&lt;/p&gt;
&lt;h3&gt;Restore Team Foundation Server 2008 Databases&lt;/h3&gt;
&lt;p&gt;Restoring the databases is much more time consuming than just attaching them as you need to do them one at a time. But you may be taking a backup of an operational database and need to restore all your databases to a particular point in time instead of to the latest. I am doing latest unless I encounter any problems.&lt;/p&gt;
&lt;p&gt;&lt;img title="image" border="0" alt="image" width="704" height="632" style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/UpgradingtoTeamFoundationServer2010_C1D3/image_20322f1b-b22b-4a11-b679-2aa3816645b3.png" /&gt; &lt;br /&gt;
&lt;strong&gt;Figure: Restore each of the databases to either a latest or specific point in time.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;img title="image" border="0" alt="image" width="286" height="464" style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/UpgradingtoTeamFoundationServer2010_C1D3/image_781d49f5-84d8-4b5d-9900-682433c6ce59.png" /&gt; &lt;br /&gt;
&lt;strong&gt;Figure: Restore all of the required databases&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Now that all of your databases are restored you now need to upgrade them to Team Foundation Server 2010.&lt;/p&gt;
&lt;h3&gt;Upgrade Team Foundation Server 2008 Databases&lt;/h3&gt;
&lt;p&gt;This is probably the easiest part of the process. You need to call a fire and forget command that will go off to the database specified, find the TFS 2008 databases and upgrade them to 2010. During this process all of the 6 main TFS 2008 databases are merged into the TfsVersionControl database, upgraded and then the database is renamed to TFS_[CollectionName]. The rename is only the database and not the physical files, so it is worth going back and renaming the physical file as well. This keeps everything neat and tidy.&lt;/p&gt;
&lt;p&gt;If you plan to keep the old TFS 2008 server around, for example if you are doing a test migration first, then you will need to change the TFS GUID. This GUID is unique to each TFS instance and is preserved when you upgrade. This GUID is used by the clients and they can get a little confused if there are two servers with the same one.&lt;/p&gt;
&lt;p&gt;To kick of the upgrade you need to open a command prompt and change the path to “C:\Program Files\Microsoft Team Foundation Server 2010\Tools” and run the “import” command in  “tfsconfig”.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;TfsConfig import /sqlinstance:&amp;lt;Previous TFS Data Tier&amp;gt; &lt;br /&gt;
                 /collectionName:&amp;lt;Collection Name&amp;gt; &lt;br /&gt;
                 /confirmed&lt;/p&gt;
&lt;p&gt;Imports a TFS 2005 or 2008 data tier as a new project collection.&lt;/p&gt;
&lt;p&gt;Important: This command should only be executed after adequate backups have been performed.&lt;/p&gt;
&lt;p&gt;After you import, you will need to configure portal and reporting settings via the administration console.&lt;/p&gt;
&lt;p&gt;EXAMPLES &lt;br /&gt;
-------- &lt;br /&gt;
TfsConfig import /sqlinstance:tfs2008sql /collectionName:imported /confirmed &lt;br /&gt;
TfsConfig import /sqlinstance:tfs2008sql\Instance /collectionName:imported /confirmed&lt;/p&gt;
&lt;p&gt;OPTIONS: &lt;br /&gt;
-------- &lt;br /&gt;
sqlinstance         The sql instance of the TFS 2005 or 2008 data tier. The TFS databases at that location will be modified directly and will no longer be usable as previous version databases.  Ensure you have back-ups.&lt;/p&gt;
&lt;p&gt;collectionName      The name of the new Team Project Collection.&lt;/p&gt;
&lt;p&gt;confirmed           Confirm that you have backed-up databases before importing.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This command will automatically look for the TfsIntegration database and verify that all the other required databases exist.&lt;/p&gt;
&lt;p&gt;In this case it took around 5 minutes to complete the upgrade as the total database size was under 700MB. This was unlike the upgrade of SSW’s production database with over 17GB of data which took a few hours. At the end of the process you should get no errors and no warnings.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The Upgrade operation on the ApplicationTier feature has completed. There were 0 errors and 0 warnings.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;As this is a new server and not a pure upgrade there should not be a problem with the GUID.&lt;/p&gt;
&lt;p&gt;If you think at any point you will be doing this more than once, for example doing a test migration, or merging many TFS 2008 instances into a single one, then you should go back and rename the physical TfsVersionControl.mdf file to the same as the new collection. This will avoid confusion later down the line.&lt;/p&gt;
&lt;p&gt;To do this, detach the new collection from the server and rename the physical files. Then reattach and change the physical file locations to match the new name.&lt;/p&gt;
&lt;p&gt;You can follow &lt;a title="http://www.mssqltips.com/tip.asp?tip=1122" rel="nofollow" href="http://www.mssqltips.com/tip.asp?tip=1122"&gt;http://www.mssqltips.com/tip.asp?tip=1122&lt;/a&gt; for a more detailed explanation of how to do this.&lt;/p&gt;
&lt;p&gt;&lt;img title="image" border="0" alt="image" width="800" height="532" style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/UpgradingtoTeamFoundationServer2010_C1D3/image_1e9bfbc3-b5b9-4ec3-983c-45fa3e632c04.png" /&gt; &lt;br /&gt;
&lt;strong&gt;Figure: Stop the collection so TFS does not take a wobbly when we detach the database.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When you try to start the new collection again you will get a conflict with project names and will require to remove the Test Upgrade collection. This is fine and it just needs detached.&lt;/p&gt;
&lt;p&gt;&lt;img title="image" border="0" alt="image" width="799" height="601" style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/UpgradingtoTeamFoundationServer2010_C1D3/image_3522cb38-5979-45af-a989-92234cdb5693.png" /&gt; &lt;br /&gt;
&lt;strong&gt;Figure: Detaching the test upgrade from the new Team Foundation Server 2010 so we can start the new Collection again.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You will now be able to start the new upgraded collection and you are ready for testing.&lt;/p&gt;
&lt;p&gt;Do you remember the stats we took off the TFS 2008 server?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;TFS2008&lt;/p&gt;
&lt;p&gt;File count:&lt;/p&gt;
&lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="200"&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
            &lt;td valign="top" width="200"&gt;&lt;strong&gt;Count&lt;/strong&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="200"&gt;1&lt;/td&gt;
            &lt;td valign="top" width="200"&gt;1845&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="200"&gt;2&lt;/td&gt;
            &lt;td valign="top" width="200"&gt;15770&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Areas &amp;amp; Iterations:&lt;/p&gt;
&lt;p&gt;139&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Well, now we need to &lt;a target="_blank" href="http://sharepoint.ssw.com.au/Standards/TFS/RulesToBetterTFS2010Migration/Pages/RunDogFoodStatsAfter.aspx"&gt;compare them to the TFS 2010 stats&lt;/a&gt;, remembering that there will probably be more files under source control.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;TFS2010&lt;/p&gt;
&lt;p&gt;File count:&lt;/p&gt;
&lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="200"&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
            &lt;td valign="top" width="200"&gt;&lt;strong&gt;Count&lt;/strong&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td valign="top" width="200"&gt;1&lt;/td&gt;
            &lt;td valign="top" width="200"&gt;19288&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Areas &amp;amp; Iterations:&lt;/p&gt;
&lt;p&gt;139&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Lovely, the number of iterations are the same, and the number of files is bigger. Just what we were looking for.&lt;/p&gt;
&lt;h3&gt;Testing the upgraded Team Foundation Server 2010 Project Collection&lt;/h3&gt;
&lt;p&gt;Can we connect to the new collection and project?&lt;/p&gt;
&lt;p&gt;&lt;img title="image" border="0" alt="image" width="800" height="564" style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/UpgradingtoTeamFoundationServer2010_C1D3/image_504c5b1f-c35c-4ce5-ae84-30cba3e1fe51.png" /&gt; &lt;br /&gt;
&lt;strong&gt;Figure: We can connect to the new collection and project.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;img title="image" border="0" alt="image" width="800" height="565" style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/UpgradingtoTeamFoundationServer2010_C1D3/image_188bcf8e-d690-4e11-a613-ac7e8047784d.png" /&gt; &lt;br /&gt;
&lt;strong&gt;Figure: make sure you can connect to The upgraded projects and that you can see all of the files.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;img title="image" border="0" alt="image" width="800" height="509" style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/UpgradingtoTeamFoundationServer2010_C1D3/image_7b208a20-3d04-4f8e-a62a-b5c36565d08b.png" /&gt; &lt;br /&gt;
&lt;strong&gt;Figure: Team Web Access is there and working. &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Note that for Team Web Access you now use the same port and URL as for TFS 2010. So in this case as I am running on the local box you need to use &lt;a href="http://localhost:8080/tfs"&gt;http://localhost:8080/tfs&lt;/a&gt; which will redirect you to &lt;a href="http://localhost:8080/tfs/web"&gt;http://localhost:8080/tfs/web&lt;/a&gt; for the web access.&lt;/p&gt;
&lt;p&gt;If you need to connect with a Visual Studio 2008 client you will need to use the full path of the new collection, &lt;a&gt;http://[servername]/tfs/[collectionname&lt;/a&gt;] and this will work with all of your collections.&lt;/p&gt;
&lt;p&gt;With Visual Studio 2005 you will only be able to connect to the Default collection and in both VS2008 and VS2005 you will need to install the forward compatibility updates.&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=22215e4c-af6f-4e2f-96df-20e94d762689&amp;amp;displaylang=en"&gt;Visual Studio Team System 2005 Service Pack 1 Forward Compatibility Update for Team Foundation Server 2010&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=CF13EA45-D17B-4EDC-8E6C-6C5B208EC54D&amp;amp;displaylang=en"&gt;Visual Studio Team System 2008 Service Pack 1 Forward Compatibility Update for Team Foundation Server 2010&lt;/a&gt;
    &lt;p&gt;To make sure that you have everything up to date, make sure that you run &lt;a target="_blank" href="http://www.ssw.com.au/ssw/Diagnostics"&gt;SSW Diagnostics&lt;/a&gt; and get all green ticks.&lt;/p&gt;
    &lt;p&gt;&lt;strong&gt;Upgrade Done!&lt;/strong&gt;&lt;/p&gt;
    &lt;p&gt;At this point you can send out a notice to everyone that the upgrade is complete and and give them the connection details. You need to remember that at this stage we have 2008 project upgraded to run under TFS 2010 but it is still running under that same process template that it was running before. You can only “enable” 2010 features in a process template you can’t upgrade. So what to do? Well, you need to create a new project and migrate things you want to keep across.&lt;/p&gt;
    &lt;p&gt;Souse code is easy, you can move or Branch, but Work Items are more difficult as you can’t move them between projects. This instance is complicated more as the old project uses the Conchango/EMC Scrum for Team System template and I will need to write a script/application to get the work items across with their attachments in tact.&lt;/p&gt;
    &lt;p&gt;That is my next task!&lt;/p&gt;

&lt;/li&gt;&lt;/ul&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:54cb562d-cd68-471b-964b-c94173131b0e" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/TFS+2010" rel="tag"&gt;TFS 2010&lt;/a&gt; &lt;a href="http://technorati.com/tags/TFS+2008" rel="tag"&gt;TFS 2008&lt;/a&gt; &lt;a href="http://technorati.com/tags/ALM" rel="tag"&gt;ALM&lt;/a&gt; &lt;a href="http://technorati.com/tags/SSW" rel="tag"&gt;SSW&lt;/a&gt; &lt;a href="http://technorati.com/tags/Scrum" rel="tag"&gt;Scrum&lt;/a&gt; &lt;a href="http://technorati.com/tags/VS+2010" rel="tag"&gt;VS 2010&lt;/a&gt; &lt;a href="http://technorati.com/tags/VS+2008" rel="tag"&gt;VS 2008&lt;/a&gt; &lt;a href="http://technorati.com/tags/SP+2010" rel="tag"&gt;SP 2010&lt;/a&gt; &lt;a href="http://technorati.com/tags/TFS" rel="tag"&gt;TFS&lt;/a&gt; &lt;a href="http://technorati.com/tags/SharePoint" rel="tag"&gt;SharePoint&lt;/a&gt; &lt;a href="http://technorati.com/tags/TFS+2005" rel="tag"&gt;TFS 2005&lt;/a&gt; &lt;a href="http://technorati.com/tags/VS+2005" rel="tag"&gt;VS 2005&lt;/a&gt; &lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=139638"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=139638" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://blog.hinshelwood.com/aggbug/139638.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/VisualStudioTeamSystem/~4/CGNSBPvx420" height="1" width="1"/&gt;</description>
            <dc:creator>Martin Hinshelwood</dc:creator>
            <guid isPermaLink="false">http://blog.hinshelwood.com/archive/2010/05/03/upgrading-team-foundation-server-2008-to-2010.aspx</guid>
            <pubDate>Mon, 03 May 2010 12:04:01 GMT</pubDate>
            <wfw:comment>http://blog.hinshelwood.com/comments/139638.aspx</wfw:comment>
            <comments>http://blog.hinshelwood.com/archive/2010/05/03/upgrading-team-foundation-server-2008-to-2010.aspx#feedback</comments>
            <slash:comments>7</slash:comments>
            <wfw:commentRss>http://blog.hinshelwood.com/comments/commentRss/139638.aspx</wfw:commentRss>
            <trackback:ping>http://blog.hinshelwood.com/services/trackbacks/139638.aspx</trackback:ping>
        <feedburner:origLink>http://blog.hinshelwood.com/archive/2010/05/03/upgrading-team-foundation-server-2008-to-2010.aspx</feedburner:origLink></item>
        <item>
            <title>Guidance: A Branching strategy for Scrum Teams</title>
            <link>http://feeds.martin.hinshelwood.com/~r/VisualStudioTeamSystem/~3/B8QdIzxov7I/guidance-a-branching-strategy-for-scrum-teams.aspx</link>
            <description>&lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="vs2010alm" border="0" alt="vs2010alm" align="left" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/ABranchingstrategyfor_E931/vs2010alm_69b4ff48-1f7e-4e53-b814-742bf2cf910a.png" width="88" height="68" /&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" align="right" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/ABranchingstrategyfor_E931/image_6ac6821d-9e94-4d1b-ae79-409aa8bc16a6.png" width="301" height="218" /&gt;Having a good branching strategy will save your bacon, or at least your code. Be careful when deviating from your branching strategy because if you do, you may be worse off than when you started!&lt;/p&gt;  &lt;p&gt;This is one possible branching strategy for Scrum teams and I will not be going in depth with Scrum but you can find out more about Scrum by reading the &lt;a href="http://www.scrum.org/scrumguides/" target="_blank"&gt;Scrum Guide&lt;/a&gt; and you can even assess your Scrum knowledge by having a go at the &lt;a href="http://www.scrum.org/scrumopen/" target="_blank"&gt;Scrum Open Assessment&lt;/a&gt;. You can also read SSW’s &lt;a href="http://sharepoint.ssw.com.au/Standards/Management/RulesToBetterScrumUsingTFS/Pages/default.aspx" target="_blank"&gt;Rules to Better Scrum using TFS&lt;/a&gt; which have been developed during our own Scrum implementations.&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;Acknowledgements&lt;/font&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/billheys/" target="_blank"&gt;Bill Heys&lt;/a&gt; – Bill offered some good feedback on this post and helped soften the language.       &lt;br /&gt;Note: Bill is a &lt;a href="http://msdn.microsoft.com/en-us/vstudio/ee358786.aspx" target="_blank"&gt;VS ALM Ranger&lt;/a&gt; and co-wrote the &lt;a href="http://tfsbranchingguideiii.codeplex.com/ " target="_blank"&gt;Branching Guidance&lt;/a&gt; for TFS 2010 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/willy-peter_schaub/" target="_blank"&gt;Willy-Peter Schaub&lt;/a&gt; – Willy-Peter is an ex Visual Studio ALM MVP turned blue badge and has been involved in most of the guidance including the &lt;a href="http://tfsbranchingguideiii.codeplex.com/ " target="_blank"&gt;Branching Guidance&lt;/a&gt; for TFS 2010 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/chrisbirmele/" target="_blank"&gt;Chris Birmele&lt;/a&gt; – Chris wrote some of the early TFS &lt;a href="http://msdn.microsoft.com/en-us/library/aa730834(VS.80).aspx" target="_blank"&gt;Branching and Merging Guidance&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://sharepoint.ssw.com.au/AboutUs/Employees/Pages/Paul.aspx" target="_blank"&gt;Dr Paul Neumeyer&lt;/a&gt;, Ph.D Parallel Processes, ScrumMaster and SSW Solution Architect – Paul wanted to have feature branches coming from the release branch as well. We agreed that this is really a spin-off that needs own project, backlog, budget and Team.       &lt;br /&gt;Scenario: A product is developed RTM 1.0 is released and gets great sales.  Extra features are demanded but the new version will have double to price to pay to recover costs, work is approved by the guys with budget and a few sprints later RTM 2.0 is released.  Sales a very low due to the pricing strategy. There are lots of clients on RTM 1.0 calling out for patches. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;As I keep getting Reverse Integration and Forward Integration mixed up and Bill keeps slapping my wrists I thought I should have a reminder:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;i&gt;You still seemed to use reverse and/or forward integration in the wrong context. I would recommend reviewing your document at the end to ensure that it agrees with the common understanding of these terms merge (forward integration) from parent to child (same direction as the branch), and merge  (reverse integration) from child to parent (the reverse direction of the branch).        &lt;br /&gt;- one of my many slaps on the wrist from &lt;a href="http://blogs.msdn.com/billheys/" target="_blank"&gt;Bill Heys&lt;/a&gt;.&lt;/i&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;Updates 15th April 2010&lt;/font&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/iceicys/" target="_blank"&gt;Ian Ceicys&lt;/a&gt; – Ian provided some corrections and clarity improvements as well as some good discussion on wither you should delete a sprint once it is complete. This I think is a preference thing as deleting a branch does not remove the history, just the future. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;Update 17th May 2010&lt;/font&gt; – We are currently trialling running a single Sprint branch to improve our history.&lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;As I &lt;a title="Create a branch for every sprint" href="http://blog.hinshelwood.com/archive/2010/04/08/creating-a-branch-for-every-sprint.aspx" target="_blank"&gt;mentioned previously&lt;/a&gt; we are using a single feature branching strategy in our current project. &lt;/p&gt;  &lt;p&gt;The &lt;strong&gt;single biggest mistake&lt;/strong&gt; developers make is developing against the “Main” or “Trunk” line. This ultimately leads to messy code as things are added and never finished. Your only alternative is to NEVER check in unless your code is 100%, but this does not work in practice, even with a single developer. Your ADD will kick in and your half-finished code will be finished enough to pass the build and the tests. You do &lt;a title="Do you know the minimum builds to create on any branch?" href="http://blog.hinshelwood.com/archive/2010/03/18/do-you-know-the-minimum-builds-to-create-on-any.aspx" target="_blank"&gt;use builds&lt;/a&gt; don’t you?&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;i&gt;Sadly, this is a very common scenario and I have had people argue that branching merely adds complexity. Then again I have seen the other side of the universe ... branching  structures from he... We should somehow convince everyone that there is a happy between no-branching and too-much-branching.        &lt;br /&gt;- &lt;a href="http://blogs.msdn.com/willy-peter_schaub/" target="_blank"&gt;&lt;strong&gt;Willy-Peter Schaub&lt;/strong&gt;&lt;/a&gt;, VS ALM Ranger, Microsoft&lt;/i&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;i&gt;A key benefit of branching for development is to isolate changes from the stable Main branch. Branching adds sanity more than it adds complexity. We do try to stress in our guidance that it is important to justify a branch, by doing a cost benefit analysis. The primary cost is the effort to do merges and resolve conflicts. A key benefit is that you have a stable code base in Main and accept changes into Main only after they pass quality gates, etc.        &lt;br /&gt;- &lt;a href="http://blogs.msdn.com/billheys/" target="_blank"&gt;&lt;strong&gt;Bill Heys&lt;/strong&gt;&lt;/a&gt;, VS ALM Ranger &amp;amp; TFS Branching Lead, Microsoft&lt;/i&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The &lt;strong&gt;second biggest mistake&lt;/strong&gt; developers make is branching anything other than the WHOLE “Main” line. If you branch parts of your code and not others it gets out of sync and can make integration a nightmare. You should have your Source, Assets, Build scripts deployment scripts and dependencies inside the “Main” folder and branch the whole thing. Some departments within MSFT even go as far as to add the environments used to develop the product in there as well; although I would not recommend that unless you have a massive SQL cluster to house your source code.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;i&gt;We tried the “add environment” back in South-Africa and while it was “phenomenal”, especially when having to switch between environments, the disk storage and processing requirements killed us. We opted for virtualization to skin this cat of keeping a ready-to-go environment handy.        &lt;br /&gt;- &lt;a href="http://blogs.msdn.com/willy-peter_schaub/" target="_blank"&gt;&lt;strong&gt;Willy-Peter Schaub&lt;/strong&gt;&lt;/a&gt;, VS ALM Ranger, Microsoft&lt;/i&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;i&gt;I think people often think that you should have separate branches for separate environments (e.g. Dev, Test, Integration Test, QA, etc.). I prefer to think of deploying to environments (such as from Main to QA) rather than branching for QA).        &lt;br /&gt;- &lt;a href="http://blogs.msdn.com/billheys/" target="_blank"&gt;&lt;strong&gt;Bill Heys&lt;/strong&gt;&lt;/a&gt;, VS ALM Ranger &amp;amp; TFS Branching Lead, Microsoft&lt;/i&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;You can read about SSW’s &lt;a title="http://www.ssw.com.au/ssw/Standards/Rules/RulesToBetterSourceControlwithTFS.aspx" href="http://www.ssw.com.au/ssw/Standards/Rules/RulesToBetterSourceControlwithTFS.aspx" target="_blank"&gt;Rules to better Source Control&lt;/a&gt; for some additional information on what Source Control to use and how to use it.&lt;/p&gt;  &lt;p&gt;There are also a number of branching Anti-Patterns that should be avoided at all costs:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;You know you are on the wrong track if you experience one or more of the following symptoms in your development environment: &lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;&lt;b&gt;Merge Paranoia&lt;/b&gt;—avoiding merging at all cost, usually because of a fear of the consequences. &lt;/li&gt;      &lt;li&gt;&lt;b&gt;Merge Mania&lt;/b&gt;—spending too much time merging software assets instead of developing them. &lt;/li&gt;      &lt;li&gt;&lt;b&gt;Big Bang Merge&lt;/b&gt;—deferring branch merging to the end of the development effort and attempting to merge all branches simultaneously. &lt;/li&gt;      &lt;li&gt;&lt;b&gt;Never-Ending Merge&lt;/b&gt;—continuous merging activity because there is always more to merge. &lt;/li&gt;      &lt;li&gt;&lt;b&gt;Wrong-Way Merge&lt;/b&gt;—merging a software asset version with an earlier version. &lt;/li&gt;      &lt;li&gt;&lt;b&gt;Branch Mania&lt;/b&gt;—creating many branches for no apparent reason. &lt;/li&gt;      &lt;li&gt;&lt;b&gt;Cascading Branches&lt;/b&gt;—branching but never merging back to the main line. &lt;/li&gt;      &lt;li&gt;&lt;b&gt;Mysterious Branches&lt;/b&gt;—branching for no apparent reason. &lt;/li&gt;      &lt;li&gt;&lt;b&gt;Temporary Branches&lt;/b&gt;—branching for changing reasons, so the branch becomes a permanent temporary workspace. &lt;/li&gt;      &lt;li&gt;&lt;b&gt;Volatile Branches&lt;/b&gt;—branching with unstable software assets shared by other branches or merged into another branch.         &lt;br /&gt;&lt;b&gt;Note&lt;/b&gt;   Branches are volatile most of the time while they exist as independent branches. That is the point of having them. The difference is that you should not share or merge branches while they are in an unstable state. &lt;/li&gt;      &lt;li&gt;&lt;b&gt;Development Freeze&lt;/b&gt;—stopping all development activities while branching, merging, and building new base lines. &lt;/li&gt;      &lt;li&gt;&lt;b&gt;Berlin Wall&lt;/b&gt;—using &lt;i&gt;&lt;/i&gt;branches to divide the development team members, instead of dividing the work they are performing. &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;-&lt;a href="http://msdn.microsoft.com/en-us/library/aa730834(VS.80).aspx" target="_blank"&gt;Branching and Merging Primer&lt;/a&gt; by Chris Birmele - Developer Tools Technical Specialist at Microsoft Pty Ltd in Australia&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;i&gt;In fact, this can result in a merge exercise no-one wants to be involved in, merging hundreds of thousands of change sets and trying to get a consolidated build. Again, we need to find a happy medium.        &lt;br /&gt;- &lt;a href="http://blogs.msdn.com/willy-peter_schaub/" target="_blank"&gt;&lt;strong&gt;Willy-Peter Schaub&lt;/strong&gt;&lt;/a&gt; on &lt;b&gt;Merge Paranoia&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;   &lt;i&gt;&lt;/i&gt;&lt;/blockquote&gt;  &lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;i&gt;Merge conflicts are generally the result of making changes to the same file in both the target and source branch. If you create merge conflicts, you will eventually need to resolve them. Often the resolution is manual. Merging more frequently allows you to resolve these conflicts close to when they happen, making the resolution clearer. Waiting weeks or months to resolve them, the Big Bang approach, means you are more likely to resolve conflicts incorrectly.        &lt;br /&gt;- &lt;a href="http://blogs.msdn.com/billheys/" target="_blank"&gt;&lt;strong&gt;Bill Heys&lt;/strong&gt;&lt;/a&gt;, VS ALM Ranger &amp;amp; TFS Branching Lead, Microsoft&lt;/i&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/ABranchingstrategyfor_E931/image_38.png"&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/ABranchingstrategyfor_E931/image_thumb_18.png" width="600" height="90" /&gt;&lt;/a&gt;     &lt;br /&gt;&lt;strong&gt;Figure: Main line, this is where your stable code lives&lt;em&gt; &lt;/em&gt;and where any build has known entities, always passes and has a happy test that passes as well?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Many development projects consist of, a single “Main” line of source and artifacts. This is good; at least there is source control &lt;img class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/ABranchingstrategyfor_E931/wlEmoticon-smile_2.png" /&gt;. There are however a couple of issues that need to be considered. &lt;/p&gt;  &lt;p&gt;What happens if:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;you and your team are working on a new set of features and the customer wants a change to his current version? &lt;/li&gt;    &lt;li&gt;you are working on two features and the customer decides to abandon one of them? &lt;/li&gt;    &lt;li&gt;you have two teams working on different feature sets and their changes start interfering with each other? &lt;/li&gt;    &lt;li&gt;I just use labels instead of branches? &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;That's a lot of “what if’s”, but there is a simple way of preventing this. Branching…&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;i&gt;In TFS, labels are not immutable. This does not mean they are not useful. But labels do not provide a very good development isolation mechanism. Branching allows separate code sets to evolve separately (e.g. Current with hotfixes, and vNext with new development). I don’t see how labels work here.        &lt;br /&gt;- &lt;a href="http://blogs.msdn.com/billheys/" target="_blank"&gt;&lt;strong&gt;Bill Heys&lt;/strong&gt;&lt;/a&gt;, VS ALM Ranger &amp;amp; TFS Branching Lead, Microsoft&lt;/i&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/ABranchingstrategyfor_E931/image_695fc933-2e76-44f6-aa8c-e4ccb407a2ee.png" width="630" height="204" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Figure: Creating a single feature branch means you can isolate the development work on that branch.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Its standard practice for large projects with lots of developers to use Feature branching and you can check the &lt;a href="http://tfsbranchingguideiii.codeplex.com/ " target="_blank"&gt;Branching Guidance&lt;/a&gt; for the latest recommendations from the Visual Studio ALM Rangers for other methods.&lt;/p&gt;  &lt;p&gt;In the diagram above you can see my recommendation for branching when using Scrum development with TFS 2010. It consists of a single Sprint branch to contain all the changes for the current sprint. The main branch has the permissions changes so contributors to the project can only Branch and Merge with “Main”. This will prevent accidental check-ins or checkouts of the “Main” line that would contaminate the code. The developers continue to develop on sprint one until the completion of the sprint.&lt;/p&gt;  &lt;p&gt;Note: In the real world, starting a new Greenfield project, this process starts at Sprint 2 as at the start of Sprint 1 you would not have artifacts in version control and no need for isolation.&lt;/p&gt;  &lt;p&gt; &lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/ABranchingstrategyfor_E931/image_4fa3f316-a790-46ce-88ee-c94395214208.png" width="630" height="207" /&gt;     &lt;br /&gt;&lt;strong&gt;Figure: Once the sprint is complete the Sprint 1 code can then be merged back into the Main line.&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;There are always good practices to follow, and one is to always do a Forward Integration from Main into Sprint 1 before you do a Reverse Integration from Sprint 1 back into Main. In this case it may seem superfluous, but this builds good muscle memory into your developer’s work ethic and means that no bad habits are learned that would interfere with additional Scrum Teams being added to the Product.&lt;/p&gt;  &lt;p&gt;The process of completing your sprint development:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;The Team completes their work according to their definition of done. &lt;/li&gt;    &lt;li&gt;Merge from “Main” into “Sprint1” (Forward Integration) &lt;/li&gt;    &lt;li&gt;Stabilize your code with any changes coming from other Scrum Teams working on the same product. If you have one Scrum Team this should be quick, but there may have been bug fixes in the Release branches. (we will talk about release branches later) &lt;/li&gt;    &lt;li&gt;Merge from “Sprint1” into “Main” to commit your changes. (Reverse Integration) &lt;/li&gt;    &lt;li&gt;Check-in &lt;/li&gt;    &lt;li&gt;Delete the Sprint1 branch      &lt;br /&gt;Note: The Sprint 1 branch is no longer required as its useful life has been concluded.       &lt;br /&gt;Note: In TFS deleting the Sprint 1 branch does not remove access to the to the history it just removes a future for that branch.       &lt;br /&gt;Note: If you do not like this option you can lock the files on the branch or change it to read only. &lt;/li&gt;    &lt;li&gt;Check-in &lt;/li&gt;    &lt;li&gt;Done &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;But you are not yet done with the Sprint. The goal in Scrum is to have a “potentially shippable product” at the end of every Sprint, and we do not have that yet, we only have finished code.&lt;/p&gt;  &lt;p&gt; &lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/ABranchingstrategyfor_E931/image_a31fb654-2e05-44e1-b5cf-aab22942ed2b.png" width="634" height="317" /&gt;     &lt;br /&gt;&lt;strong&gt;Figure: With Sprint 1 merged you can create a Release branch and run your final packaging and testing&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;i&gt;In 99% of all projects I have been involved in or watched, a “shippable product” only happens towards the end of the overall lifecycle, especially when sprints are short. The in-between releases are great demonstration releases, but not shippable. Perhaps it comes from my 80’s brain washing that we only ship when we reach the agreed quality and business feature bar.        &lt;br /&gt;- &lt;a href="http://blogs.msdn.com/willy-peter_schaub/" target="_blank"&gt;&lt;strong&gt;Willy-Peter Schaub&lt;/strong&gt;&lt;/a&gt;, VS ALM Ranger, Microsoft&lt;/i&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Although you should have been testing and packaging your code all the way through your Sprint 1 development, preferably using an automated process, you still need to test and package with stable unchanging code. This is where you do what at SSW we call a “Test Please”. This is first an internal test of the product to make sure it meets the needs of the customer and you generally use a resource external to your Team. Then a “Test Please” is conducted with the Product Owner to make sure he is happy with the output.&lt;/p&gt;  &lt;p&gt;You can read about how to conduct a Test Please on our &lt;a href="http://www.ssw.com.au/ssw/Standards/Rules/RulestoSuccessfulProjects.aspx" target="_blank"&gt;Rules to Successful Projects&lt;/a&gt;:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="http://www.ssw.com.au/ssw/Standards/Rules/RulestoSuccessfulProjects.aspx#TestPlease" href="http://www.ssw.com.au/ssw/Standards/Rules/RulestoSuccessfulProjects.aspx#TestPlease" target="_blank"&gt;Do you conduct an internal "test please" prior to releasing a version to a client?&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt; &lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/ABranchingstrategyfor_E931/image_7fac377a-1c04-4e7d-8442-e9de2c706554.png" width="634" height="311" /&gt;     &lt;br /&gt;&lt;strong&gt;Figure: If you find a deviation from the expected result you fix it on the Release branch. &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If during your final testing or your “Test Please” you find there are issues or bugs then you should fix them on the release branch. If you can’t fix them within the time box of your Sprint, then you will need to create a Bug and put it onto the backlog for prioritization by the Product owner. Make sure you leave plenty of time between your merge from the development branch to find and fix any problems that are uncovered.&lt;/p&gt;  &lt;p&gt;This process is commonly called Stabilization and should always be conducted once you have completed all of your User Stories and integrated all of your branches. Even once you have stabilized and released, you should not delete the release branch as you would with the Sprint branch. It has a usefulness for servicing that may extend well beyond the limited life you expect of it.&lt;/p&gt;  &lt;p&gt;Note: Don't get forced by the business into adding features into a Release branch instead that indicates the unspoken requirement is that they are asking for a product spin-off. In this case you can create a new Team Project and branch from the required Release branch to create a new Main branch for that product. And you create a whole new backlog to work from.&lt;/p&gt;  &lt;p&gt; &lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/ABranchingstrategyfor_E931/image_eb80c89e-3732-4b46-a224-0daf57bdd6f9.png" width="634" height="434" /&gt;     &lt;br /&gt;&lt;strong&gt;Figure: When the Team decides it is happy with the product you can create a RTM branch.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Once you have fixed all the bugs you can, and added any you can’t to the Product Backlog, and you Team is happy with the result you can create a Release. This would consist of doing the final Build and Packaging it up ready for your Sprint Review meeting. &lt;/p&gt;  &lt;p&gt;You would then create a read-only branch that represents the code you “shipped”, commonly referred to as RTM(Released to Market). This is really an Audit trail branch that is optional, but is good practice.This is really an Audit trail branch that is optional, but is good practice. &lt;/p&gt;  &lt;p&gt;You could use a Label, but Labels are not Auditable and if a dispute was raised by the customer you can produce a verifiable version of the source code for an independent party to check. Rare I know, but you do not want to be at the wrong end of a legal battle. Like the Release branch the RTM branch should never be deleted, or only deleted according to your companies legal policy, which in the UK is usually 7 years.&lt;/p&gt;  &lt;p&gt; &lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/ABranchingstrategyfor_E931/image_93c79151-dedd-41fe-bcaa-e064c7dff01e.png" width="634" height="434" /&gt;     &lt;br /&gt;&lt;strong&gt;Figure: If you have made any changes in the Release you will need to merge back up to Main in order to finalise the changes.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Nothing is really ever done done until it is in Main. (see common misconceptions of done &lt;a href="http://www.scrumalliance.org/articles/150-beware-of-the-evil--done"&gt;here&lt;/a&gt; and &lt;a href="http://edgehopper.com/is-it-donedone-the-elusive-potentially-shippable-product-increment/"&gt;here&lt;/a&gt;). You need to do a Reverse Integration merge from the Release Branch into Main to carry the bug fixes over into the next sprint.&lt;/p&gt;  &lt;p&gt;Your Sprint is now nearly complete, and you can have a Sprint Review meeting knowing that you have made every effort and taken every precaution to protect your customer’s investment. &lt;/p&gt;  &lt;p&gt;Note: In order to really achieve protection for both you and your client you would add Automated Builds, Automated Tests, Automated Acceptance tests, Acceptance test tracking, Unit Tests, Load tests, Web test and all the other good engineering practices that help produce reliable software.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;After branching Main to Release, we generally recommend not doing any subsequent merging (FI) from Main into the release branch. &lt;/p&gt;    &lt;p&gt;In our guidance we suggest that once you are ready to release your code, you would branch Main to Release (making the vCurrent). This allows you to open Main for vNext development and stabilization. &lt;/p&gt;    &lt;p&gt;If you later decide to merge hotfixes or service pack changes from Release to Main, you should be careful how you do this. It would probably NOT be a good idea to follow the same pattern we recommend for development (do one last FI from Main to Dev before doing the RI from Dev to Main). Doing one last FI from Main to Release would risk bringing vNext changes into Release. &lt;/p&gt;    &lt;p&gt;Note – vNext might mean sprintNext, but I think the same considerations apply. For vCurrent, especially after doing some hotfixes, the Release branch should be at a higher level of quality and stability than the Main branch. You don’t want to bring vNext code into the vCurrent Release branch any more than you want to bring vNext Feature code from Dev to Main before it passes quality gates in the Feature branch.&lt;/p&gt;    &lt;p&gt;- &lt;a href="http://blogs.msdn.com/billheys/" target="_blank"&gt;&lt;strong&gt;Bill Heys&lt;/strong&gt;&lt;/a&gt;, VS ALM Ranger &amp;amp; TFS Branching Lead, Microsoft&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Bill’s comments are quite pertinent here as you may think it is a good idea to do another forward integration to bring new features from Main into an existing Release. You can do it, its not recommended, but be very very careful.&lt;/p&gt;  &lt;p&gt; &lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/ABranchingstrategyfor_E931/image_642dadbb-64ab-41b2-8873-1026a41cce9b.png" width="634" height="434" /&gt;     &lt;br /&gt;&lt;strong&gt;Figure: After the Sprint Planning meeting the process begins again.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Where the Sprint Review and Retrospective meetings mark the end of the Sprint, the Sprint Planning meeting marks the beginning. After you have completed your Sprint Planning and you know what you are trying to achieve in Sprint 2 you can create your new Branch to develop in.&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;/p&gt;  &lt;hr /&gt;  &lt;h2&gt;How do we handle a bug(s) in production that can’t wait?&lt;/h2&gt;  &lt;p&gt;Although in Scrum the only work done should be on the backlog there should be a little buffer added to the Sprint Planning for contingencies. One of these contingencies is a bug in the current release that can’t wait for the Sprint to finish. But how do you handle that?&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/willy-peter_schaub/" target="_blank"&gt;&lt;strong&gt;Willy-Peter Schaub&lt;/strong&gt;&lt;/a&gt; asked an excellent question on the release activities:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;i&gt;In reality Sprint 2 starts when sprint 1 ends + weekend. Should we not cater for a possible parallelism between Sprint 2 and the release activities of sprint 1? It would introduce FI’s from main to sprint 2, I guess. Your “&lt;/i&gt;&lt;strong&gt;Figure: Merging Sprint 2 back into Main.&lt;/strong&gt;&lt;i&gt;” covers, what I tend to believe to be reality in most cases.        &lt;br /&gt;- &lt;a href="http://blogs.msdn.com/willy-peter_schaub/" target="_blank"&gt;&lt;strong&gt;Willy-Peter Schaub&lt;/strong&gt;&lt;/a&gt;, VS ALM Ranger, Microsoft&lt;/i&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I agree, and if you have a single Scrum team then your resources are limited. The Scrum Team is responsible for packaging and release, so at least one run at stabilization, package and release should be included in the Sprint time box. If more are needed on the current production release during the Sprint 2 time box then resource needs to be pulled from Sprint 2. &lt;/p&gt;  &lt;p&gt;The Product Owner and the Team have four choices (in order of disruption/cost):&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;Backlog&lt;/strong&gt;: Add the bug to the backlog and fix it in the next Sprint &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Buffer Time&lt;/strong&gt;: Use any buffer time included in the current Sprint to fix the bug quickly &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Make time&lt;/strong&gt;: Remove a Story from the current Sprint that is of equal value to the time lost fixing the bug(s) and releasing.       &lt;br /&gt;Note: The Team must agree that it can still meet the Sprint Goal. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Cancel Sprint&lt;/strong&gt;: Cancel the sprint and concentrate all resource on fixing the bug(s)       &lt;br /&gt;Note: This can be a very costly if the current sprint has already had a lot of work completed as it will be lost. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;The choice will depend on the complexity and severity of the bug(s) and both the Product Owner and the Team need to agree. In this case we will go with option #2 or #3 as they are uncomplicated but severe bugs.&lt;/p&gt; &lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/ABranchingstrategyfor_E931/image_760c1234-3150-4be4-af01-ca9fea847079.png" width="634" height="434" /&gt;   &lt;p&gt;&lt;strong&gt;Figure: Real world issue where a bug needs fixed in the current release.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If the bug(s) is urgent enough then then your only option is to fix it in place. You can edit the release branch to find and fix the bug, hopefully creating a test so it can’t happen again. Follow the prior process and conduct an internal and customer “Test Please” before releasing.&lt;/p&gt;  &lt;p&gt;You can read about how to conduct a Test Please on our &lt;a href="http://www.ssw.com.au/ssw/Standards/Rules/RulestoSuccessfulProjects.aspx" target="_blank"&gt;Rules to Successful Projects&lt;/a&gt;:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="http://www.ssw.com.au/ssw/Standards/Rules/RulestoSuccessfulProjects.aspx#TestPlease" href="http://www.ssw.com.au/ssw/Standards/Rules/RulestoSuccessfulProjects.aspx#TestPlease" target="_blank"&gt;Do you conduct an internal "test please" prior to releasing a version to a client?&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;br /&gt;  &lt;p&gt; &lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/ABranchingstrategyfor_E931/image_80fae6d0-a6f9-4dce-aadf-b9562d0f4edc.png" width="634" height="434" /&gt;     &lt;br /&gt;&lt;strong&gt;Figure: After you have fixed the bug you need to ship again.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You then need to again create an RTM branch to hold the version of the code you released in escrow. &lt;/p&gt;  &lt;p&gt; &lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/ABranchingstrategyfor_E931/image_3b9cb1da-ea3c-4a5f-9ab7-1340e21836aa.png" width="634" height="434" /&gt;     &lt;br /&gt;&lt;strong&gt;Figure: Main is now out of sync with your Release.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;We now need to get these new changes back up into the Main branch. Do a reverse and then forward merge again to get the new code into Main. But what about the branch, are developers not working on Sprint 2? Does Sprint 2 now have changes that are not in Main and Main now have changes that are not in Sprint 2? Well, yes… and this is part of the hit you take doing branching. But would this scenario even have been possible without branching?&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;/p&gt;  &lt;p&gt; &lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/ABranchingstrategyfor_E931/image_adaf812c-d797-463d-9436-3bab905206ab.png" width="634" height="434" /&gt;     &lt;br /&gt;&lt;strong&gt;Figure: Getting the changes in Main into Sprint 2 is very important.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The Team now needs to do a Forward Integration merge into their Sprint and resolve any conflicts that occur. Maybe the bug has already been fixed in Sprint 2, maybe the bug no longer exists! This needs to be identified and resolved by the developers before they continue to get further out of Sync with Main.&lt;/p&gt;  &lt;p&gt;Note: Avoid the “&lt;a href="http://msdn.microsoft.com/en-us/library/aa730834(VS.80).aspx#branchandmerge_antipatterns" target="_blank"&gt;Big bang merge&lt;/a&gt;” at all costs.&lt;/p&gt;  &lt;p&gt; &lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/ABranchingstrategyfor_E931/image_cdc6c5ae-9502-4c5c-ad89-4958c1b35fa1.png" width="634" height="434" /&gt;     &lt;br /&gt;&lt;strong&gt;Figure: Merging Sprint 2 back into Main, the Forward Integration, and R0 terminates.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Sprint 2 now merges (Reverse Integration) back into Main following the procedures we have already established.&lt;/p&gt;  &lt;p&gt; &lt;img style="border-right-width: 0px; margin: 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/hinshelm/WindowsLiveWriter/ABranchingstrategyfor_E931/image_b4584e55-5b63-4f1d-ada1-3e9dd6238c28.png" width="654" height="434" /&gt;     &lt;br /&gt;&lt;strong&gt;Figure: The logical conclusion.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This then allows the creation of the next release.&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;By now you should be getting the big picture and hopefully you learned something useful from this post. I know I have enjoyed writing it as I find these exploratory posts coupled with real world experience really help harden my understanding.  &lt;/p&gt;  &lt;p&gt;Branching is a tool; it is not a silver bullet. Don’t over use it, and avoid “Anti-Patterns” where possible. Although the diagram above looks complicated I hope showing you how it is formed simplifies it as much as possible. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Both branches and workspaces (i.e. single branch) allow you to ‘isolate’ code – a branch isolates code on the ‘server side’, a workspace isolates code on the ‘client side’.  Yes it’s true code is isolated only as long s it lives in your workspace, so you might break the build once the code is checked in.  But the same is true for branches.  A branch is not used by individuals but typically by entire teams so the likelihood of conflicts exists just the same, but now you also have the potential of merge conflicts.&lt;/p&gt;    &lt;p&gt;There are good reasons to use branches (for example if you have the need to maintain multiple releases) but in many cases there is no real need.   Whether or not you have conflicts has a lot to do with your system architecture or work practices.  Changes made to a poorly architected solution will ripple through your solution and affect other team members, no matter how elaborate your branching structure is.  If multiple team members modify the same components it inevitable to have lots of broken builds.  The solution is not to create a fancy branching structure, but to restructure your team around the components and/or improve the system architecture (if possible of course).&lt;/p&gt;    &lt;p&gt;The question should not be “what is the most appropriate branching structure?”, but what is the best way to minimize code conflicts.  Branching is ONE option to achieve this.      &lt;br /&gt;-&lt;a href="http://blogs.msdn.com/chrisbirmele/" target="_blank"&gt;Chris Birmele&lt;/a&gt;, Visual Studio ALM Ranger, Microsoft&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:54cb562d-cd68-471b-964b-c94173131b0e" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Branching" rel="tag"&gt;Branching&lt;/a&gt; &lt;a href="http://technorati.com/tags/Scrum" rel="tag"&gt;Scrum&lt;/a&gt; &lt;a href="http://technorati.com/tags/ALM" rel="tag"&gt;ALM&lt;/a&gt; &lt;a href="http://technorati.com/tags/TFS+2010" rel="tag"&gt;TFS 2010&lt;/a&gt; &lt;a href="http://technorati.com/tags/VS+2010" rel="tag"&gt;VS 2010&lt;/a&gt; &lt;a href="http://technorati.com/tags/SSW" rel="tag"&gt;SSW&lt;/a&gt; &lt;a href="http://technorati.com/tags/SP+2010" rel="tag"&gt;SP 2010&lt;/a&gt; &lt;a href="http://technorati.com/tags/TFS" rel="tag"&gt;TFS&lt;/a&gt; &lt;a href="http://technorati.com/tags/SharePoint" rel="tag"&gt;SharePoint&lt;/a&gt; &lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=139267"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=139267" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://blog.hinshelwood.com/aggbug/139267.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/VisualStudioTeamSystem/~4/B8QdIzxov7I" height="1" width="1"/&gt;</description>
            <dc:creator>Martin Hinshelwood</dc:creator>
            <guid isPermaLink="false">http://blog.hinshelwood.com/archive/2010/04/14/guidance-a-branching-strategy-for-scrum-teams.aspx</guid>
            <pubDate>Wed, 14 Apr 2010 19:11:36 GMT</pubDate>
            <wfw:comment>http://blog.hinshelwood.com/comments/139267.aspx</wfw:comment>
            <comments>http://blog.hinshelwood.com/archive/2010/04/14/guidance-a-branching-strategy-for-scrum-teams.aspx#feedback</comments>
            <slash:comments>6</slash:comments>
            <wfw:commentRss>http://blog.hinshelwood.com/comments/commentRss/139267.aspx</wfw:commentRss>
            <trackback:ping>http://blog.hinshelwood.com/services/trackbacks/139267.aspx</trackback:ping>
        <feedburner:origLink>http://blog.hinshelwood.com/archive/2010/04/14/guidance-a-branching-strategy-for-scrum-teams.aspx</feedburner:origLink></item>
    </channel>
</rss>
