My 2 cents on Areas and Iterations in Team Foundation Server
There’s not a huge amount of best practice info out there regarding areas and iterations. One interesting place to look at is a blog post that describes how the Visual Studio team uses them (https://blogs.msdn.com/ericlee/archive/2006/08/09/when-to-use-team-projects.aspx)
So here are my 2 cents (you can see how much that's worth these days!) on Areas and Iterations.
Areas
To me, areas are ways of tagging or organizing objects within a Team Project. Typically, areas are used to define either logical, physical, or functional boundaries. It’s a way to slice and dice a normally large project effort into more manageable, reportable, and easily identifiable pieces.
For example, let’s say we have a tiered web application managed in a single TFS project called “MySite”. There are 3 major components to this app: the web site, a web service, and a database. If this is a decent-sized application, you might have 1,200 tasks in the system for this project. But how do you know to which component a given task belongs? What if I only wanted to see tasks for the web service piece? Areas are a convenient way to handle this. Set up areas like this:
MySite
\Web Site
\Web Service
\Database
Now you can specify an area of assignment for each task (work item), making it easy to effectively filter what you want to look at/work on. You can use areas in both queries and reports as well.
You may optionally want to further dissect those major components to be even more specific:
MySite
\Web Site
\Layout & Design
\Navigation
\Pages
\Contact Us
\Homepage
\Links
\Web Service
\Performance
\Security
\Database
\Performance
\Security
\Schema
One final aspect of Areas to consider is security. You can set security options on each Area node which can dictate not only who can change the areas, but also who can view or edit work items in a particular Area.
Iterations
So if you think of Areas as slicing and dicing by “space”, think of Iterations as slicing and dicing by “time”. Iterations are like “phases” of a lifecycle, which can dissect the timeline of a project effort into more manageable time-based pieces.
So going back to the “MySite” example, say the project management team wants to split the entire project into 3 cycles, Phase 1, Phase 2, and Phase 3. Thus, your Iterations can mirror that:
\MySite
\Phase 1
\Phase 2
\Phase 3
These Iterations can be phases within the entire life of a project, or phases within a given release of a project. So if “MySite” is going to have multiple releases over time, my Iterations might look lik this
\MySite
\Release 1.0
\Phase 1
\Phase 2
\Phase 3
\Release 2.0
\Phase 1
\Phase 2
\Phase 3
Now you have categorization options for both space and time (now if only we had a continuum..) for your project, allowing you to assign your tasks or other work items not only to the appropriate functional area (Area), but also to the phase (time cycle) of the project.
Comments
Anonymous
February 19, 2007
"allowing you to assign your tasks or other work items not only to the appropriate functional area (Area), but also to the phase (time cycle) of the project." How! I've been searching for hours and can find no instructions 'HOW to assign work items to areas and iterations'. As an alternative, if I was using some sort of RUP like process I might want to assign disciplines to areas (Business, Requirements, etc) and phases to iterations (Inception, Elaboration, Construction, Transition).Anonymous
February 19, 2007
Leslei - You set the area and iteration in the Area Path and Iteration Path fields. In this example, the Task work item type in the MSF for Agile process template displays the Area and Iteration fields in the Classification. See this image: http://socalteamsystem.com/images/SettingAandIs.png Once you set this, you can filter reports based on the area or the iteration to report on a particular cross-section of your project's work items. Regarding your RUP-like idea, that should be just fine. However, by default work items can also leverage a built-in Discipline field (you'll find it in the same image above, at the top-right of the dialog), which can be customized to represent the disciplines of your choice. And you definitely can map iterations to phases if you want (or it you want further granularity, you can create a custom "Phase" field).Anonymous
April 06, 2007
so how and where do I create these customized sub-areas? All I can see is the name of my team project...Anonymous
April 09, 2007
You can edit your areas (ie create sub-areas) and iterations (ie create multiple/sub-iterations) from the Team Explorer panel. In Team Explorer, right-click on your project and select Team Project Settings -> Areas and Iterations. This will bring up the Areas and Iterations dialog where you can add/edit/delete areas and iterations for this project. (Just note that areas and iterations are cached on the client side, so once you make changes here, you'll want to click the Refresh button at the top of the Team Explorer panel to be able to use your changes immediately.)Anonymous
May 01, 2007
Looks like yours is the most informative blog entry on Areas and Iterations. Hopefully you can help me. It seems wrong that Areas and Iterations sort alphabetically in the Work Item drop-downs. I initially spent time sorting them how I wanted them in the A&I dialog, only to find them all scrambled up when I actually tried to apply them in a WI. So what good does ordering them in the dialog do? And is there a way to get that ordering to be used in the drop-downs for Work Items? Any insight you could provide would be appreciated!Anonymous
May 01, 2007
I agree that it's a pesky, annoying thing that areas & iterations are listed alphabetically. I can't even give you a great, eye-opening explanation as to why it's this way. I would expect this to be updated/fixed at some point. As a workaround, I'd suggest prefixing your areas & iterations with numbers so they order the way you want. Not elegant, but it's doable. I'll update the post when I hear that this is getting updated.Anonymous
January 13, 2008
Thank you for very nice explanation about Area and Iteration. Really helpful!Anonymous
May 08, 2008
Hi slange, I can not see the image you have left its link on your comment. By the way, I found your article very useful, thanks, EralperAnonymous
May 14, 2008
You're right, that link in the comment is gone. That site was taken down a while back and I couldn't get to the content prior. The was basically a screenshot showing a work item dialog with the Area and Iteration fields highlighted.Anonymous
November 21, 2008
Great post, it's exactly what I search. There are no realy good samples into the tfs's doc. Thanks!Anonymous
March 02, 2009
That was the best description regarding Areas and Iterations, I found. ThanksAnonymous
March 02, 2009
You're very welcome.. I'm glad to see that this post is helpful over two years after it was first posted!Anonymous
March 20, 2009
Can you let me know how to add mulitple levels ? I need to add this : Request RequestPriceCheck RequestBook Response ResponseFilldata ResponseDoSomethingElse. I can add the Request nodes, but I can't work out how to add the Response element ?Anonymous
March 20, 2009
Hi Tim, You have to have a single root Area node, so my suggestion would be to do something like: MyApplication MyApplicationRequest MyApplicationRequestPriceCheck MyApplicationRequestBook MyApplicationResponse MyApplicationResponseFilldata MyApplicationResponseDoSomethingElse Does that make sense?Anonymous
May 13, 2009
Your post is still helpful ofcourse,but can you tell if there has been any changes to the Iteration Path in TFS2008, is there any way of sorting the values non-alphabetically yet?Anonymous
July 09, 2009
FYI - The issue with Areas and Iterations (sorting) does not seem to occur with Team Explorer 2008 (sp1 applied). BTW - This post has been very informative on the issue of Areas and Iterations. Thanks!Anonymous
October 20, 2009
Helpful post and I can see how it could be helpful to our group as we have many small projects which dont all necessarily need a separate Team Project. But what I am not able to figure out is how do I customize the reports to see information only assigned to a particular area. (I am using the Scrum for TFS template - and it has an option for filtering by iteration, but not by area). Are there any MS supplied templates that will allow me to view my reports by area and iteration. Thanks again for your helpful post. Denver Area TFS userAnonymous
November 16, 2009
Thank you very much slange for this very useful post.Anonymous
November 26, 2009
So helpful post!! I learned a lot from this "simple" post. Thank you very much, slange! By the way, happy Thinksgiving!Anonymous
January 03, 2010
how do you add multiple iteration dates at once? our iteration structure is as follows: iteration 2010-01-01 2010-02-01 2010-03-01 2010-04-01 2010-05-01 can I do this directly in the TFS database?Anonymous
January 04, 2010
Luis, Are you asking how you can add iterations in bulk? I would definitely not recommend going directly into the TFS database. One option would be to use the SDK. You'll want to do so using the ICommonStructureService.CreateNode method in the TFS SDK: http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.server.icommonstructureservice.createnode.aspx This post should help you get started: http://teamfoundation.blogspot.com/2008/09/how-to-deal-with-areas-or-iterations.html However, depending on how many iterations you want to add, it may just be more time-efficient to enter them manually. Hope this helps!Anonymous
August 06, 2010
I hope you can help me. We have set up permissions on Areas and Iterations within each Team Project. We have multiple levels of Areas and Iterations. For example, we have a Parent Iteration, a Child, and a Sub-Child. When I assign permissions to Jane Doe to Parent Iteration she does not get access to Child and Sub-Child. Is this correct? I was thinking assigning permissions to Parent should give her permissions to Parent and everything underneath (children). Thanks for any help you can provideAnonymous
October 21, 2010
Hi, Let say I have the following Iteration tree: MySite Release 1 Phase 1 - Aug 1-15, 2010 Phase 2 - Aug 16 - 30, 2010 Phase 3 - Sept 1 - 15, 2010 Phase 4 - Sept 16 - 30, 2010 Release 2 Phase 1 - Oct 1 - 15, 2010 Phase 2 - Oct 16 - 31, 2010 And some urgent bug from customer and we need a hotfix for Release 1 while Release 2 development is on going. How should I capture and plan for the hotfix effort? Should I i) create MySiteRelease 1Phase 5 - Oct 16 - 31, 2010 so that it'll have the same time frame as MySiteRelease 2Phase 2 - Oct 16 - 31, 2010 ii) include work items in Release 2 -> Sprint 2 - Oct 16 - 31, 2010 (will have to distinguish the work items somehow?) Thanks,Anonymous
December 13, 2010
Seems to me that areas are redundant with the source project organization and iterations redundant with release versions. How are areas and iterations supposed to work in conjunctions with the source tree organization for branching? Thanks!Anonymous
December 14, 2010
@Dave - they can be redundant if you want them to be. However, the souce tree structure doesn't always represent the functional hierarchy or structure of a project. Letting areas be an independent field provides more flexibility when working with work items. The main intersection (IMHO) between the source control structure is with Iterations. Yes, you can replicate Iterations with your releases/branches in source control. In Iterations, you can even further dissect releases into sprints, etc. to better help track progress for a given release. Work items are associated with code in two ways: by linking (work item to changeset or versioned item), or by build (completed work items are associated with a build). Because of these other manners to align the two types of artifacts, you are free to use Areas & Iterations as you see fit - either closely mirroring the source tree, or in a more logical hierarchy that makes sense for your reports, and your business. Hope this helps a little..Anonymous
April 05, 2011
Thanks, nice over view of areas and iterations. Now to go make my own :)Anonymous
January 30, 2013
Awesome explanation ! Thank you ..Anonymous
September 22, 2014
Nice 1... excellent discription.... nowhere i found this much good explanation about area and iteration....Anonymous
January 17, 2015
Your post exactly explains the usage of Area and Iterations - exactly what I was searching forAnonymous
March 09, 2016
Hi, How do we assign a given team member (resource) to an area so as he/she will see only tasks and bugs linked to that area ?Anonymous
March 13, 2016
@Lionel - you can either use some security settings to filter what that person can see, or you can take advantage of the "team" concept in TFS to let team resource (individual or several people) have their own backlogs, queries, dashboards, etc. More here: msdn.microsoft.com/.../multiple-teams