I'm confused by all the stuff in TFS. Can someone please explain how all this fits together?
Team project collection
Team project
Team
Area
Iteration
From this page, I think a (team) project collection can contain multiple (team) projects, which can contain multiple teams. Is that right? Can projects contain other sub-projects? Can teams contain other sub-teams? The team defines a set of people (team members). Anything else?
I think the team can define its own area and iterations, or else inherit them from its parent. Is that right?
Is it possible to parse the area path? For example, when area path is "DSS\ADC\MML" does that always mean that "DSS" is the Project, and "ADC\MML" is the Team?
A Team Project Collection is a database containing a collection of Team Projects.
A Team Project is an organizational unit for source code, work items, build definitions, release definitions, manual tests, etc. You can have multiple Team Projects per Collection. A Team Project can best be thought of as "a collection of software applications and all of the associated artifacts necessary to plan work, build, test, and release the applications".
A Team is an organizational unit within a Team Project allowing multiple teams to work concurrently on different aspects of the software portfolio. Each team can have its own backlog, dashboards, etc. Teams are associated to Areas.
An Area is an organizational unit within a Team Project used for grouping similar work together. An area can be assigned to a Team, meaning any work items that appear in that area are in the domain of that team. Areas can have any hierarchy you want, and the names do not necessarily map to anything like a Team Project name or a Team name.
An Iteration is used for defining your work item backlogs and sprints/iterations. A team is usually assigned a backlog iteration, and then sub-iterations define the sprints and associated start/end dates for work.
Daniel has provided a good answer, but I want to clarify further.
Team, Area, and Iteration are independent partitions of work items.
When you see Area Path = DSS\ADC\MML you should think: Area is ADC\MML within Project DSS.
Likewise, when you see Iteration Path = DSS\ADC\Sprint 23 you should think: Iteration is ADC\Sprint 23 within Project DSS.
Each Work Item belongs to exactly one area and exactly one iteration. You can imagine all the work items within a two dimensional grid of Area and Iteration, as below.
Just like Area and Iteration, a Team exists within a single Project. When you see Team = DSS/MML Dev you should think: Team is MML Dev within Project DSS. Notice that, unlike Area and Iteration, the Team uses forward slashes and the Team cannot be hierarchical.
The Work Items are not associated with a Team. Instead each Team can be associated with any subset of Areas and/or Iterations with the project. (To change the Areas and Iterations assigned to a Team, click the Manage Team gear icon in the top right corner of the web page). Therefore the Team is indirectly associated with a set of Work Items. The relation between Team and Work Item is many-to-many.
Related
I've got a TFS server in which team projects exists. These team projects have area paths below them. These area paths represents projects of certain customers. We want to give customers access to their area path.
The problem is when we do that they automatically gain access to all other area paths withing that team project. Is there a way of limiting access so the customers can only see their area path and nothing else?
No such a feature to limit users in team project level with the area path set.
Area path only restricts the users on work items:
Area paths allow you to group work items by team, product, or feature
area. Whereas, iteration paths allow you to group work into sprints,
milestones, or other event-specific or time-related period. Both these
fields allow you to define a hierarchy of paths.
Please see About area and iteration paths (aka sprints) for details.
So, if you don't want to the users see the specific team projects, then you just need to remove the users from the related TFS groups.
If you just want to restrict the users on manage the sources/files or source control on specific Repository/branches, then you can create teams or groups and set the permission accordingly. Please see below articles for details:
Add teams and team members
Permissions and groups in VSTS and TFS
As mentioned in this thread, by design a team can access other teams backlogs and work items.
To deny different teams access to other teams work items I used a workaround which might work for you as well.
The workaround is to use TFS security groups to limit teams access to area paths. By default, every team is created as a member of the default security group [project]\Contributors which gives the team access to all area paths.
Here are the steps I followed:
Create a new security group for every team
Make the new groups members of the Contributors default group
Add every team as a member of its new respective security group
Remove all teams from the Contributors group
In the project's areas admin screen, open each area's context menu and click the security option (check this article)
In the security view, add the newly created security groups
For each group, allow/deny the permissions based on your requirements
Please note, this workaround will not hide other area paths from the users in the not allowed groups. They still can navigate to backlogs of other groups but they will not view or edit the work items. This behavior is same for reports and dashboards as well
Is it possible in TFS to create three backlogs within the same project and move user stories from each of the backlogs into an iteration?
For example, if the team supports three different applications and therefore has three different backlogs and may do user stories for each of the applications for a given sprint.
If this is not possible in TFS, what is the best way to setup the project/backlog/areas to reflect the team working on user stories for three different applications? Because the other alternative seems to be having three separate projects, backlogs, team board and burndown charts which is not ideal due to the overhead of updating each board.
If you team supports different applications you may create three TFS teams for each application on one project with the same (or not) set of team members. In this case your team members just select needed TFS team and get backlogs, boards, dashboards for needed application: Add teams and team members, Switch team project or team focus, Work with multi-team ownership of backlog items, Visibility across teams
Sorry the poor English.
I'm using Visual Studio Team Services for a first time, and I follow the guided tour where I created three work items as example. Basic conceptions learned, I then deleted these first example work items and started to Create my own work items. Their numbering was sequential to the three first ones.
I managed to delete my Project to start a new one. I was think a new Project will start its work items from number 1 onwards, but the numbering from the deleted one is being used. I tried creating the repository with another Project name but no success.
I wasn't able to find how this is occurring, and it's very annoying to me. Someone has any idea about what's going on and how to correct this behavior (unless this is a feature)? Thanks in advance.
In TFS you have a Collection Database, that has a WorkItem table, all Work Item Id's are sequential in that table. A Collection contain one or more Team Projects. To reset the numbers you would have to create a new Collection.
In VSTS Collections are not a concept that you can manage, you have an account instead, you would probably have to delete and re-create your account - I don't think there is any way to create a new Collection in your account - I may be wrong, I'm only a personal user of VSTS.
I wouldn't worry too much about what ID's each work item has. I don't think it matters that much, you will soon lose control of them. Every WI you create has a new incremental ID, you you get Bug #1, Test Case #2, PBI #3, and so on. If you have >1 Team Project you will also end up with that taking ID's from you.
I have two separate branches created for a project with two users - each user only has access to their branch.
I have created the project backlog items, however each user when logged into Visual Studio Online can see the backlog items - which is ok. However once one user completes an item in their branch, I don't want that item to affect the other user's ability to continue working on that item.
I want to test how each developer creates a new UI on their respective branches. Essentially the work is the same, but the way they implement would be different.
For example, an item may be "Update website front page".
Essentially I want them both to do the same thing but on their own branch. Can we separate backlog items by branch?
Sounds like you have some crazy Hunger Games development scenario going on and as Daniel said, better to develop in one branch and merge to the other.
However, if you want to restrict Work Items across Teams or TFS Groups then you can restrict the Area Path. So, either set up a team for each developer or simply create an Area Path for each branch and set security on it.
Have a look at Customize area and iteration paths and the section on "Set permissions to restrict access to work items"
I use TFS 2013 with one team collection and I have a Project.
This project uses area paths to differentiate between teams.
So I have an area Path/Team lets call it "Inventing".
This Inventing team has a Product Owner who should only do what a product owner is supposed to do in scrum.
I can add this particular person to the area path and allow him the rights.
I want to say: he is the product owner of this AreaPath.
Do I need to create for every area path a TFS Group called "product owner inventing" and add/remove the persons for that TFS Group?
Or is there a better solution?
There is no way you can isolate a specific user role like this from the create wizard by default. So yes, you'll need to create a group for the product owner. Remember that work items have links to change sets, so it might be hard to isolate the product owner completely from viewing any code it's not a simple checkbox to tick.
BTW we often do trust external people with the code they're basically owner of. Non Disclosure Agreements and contracts can get a long way in legally closing that loop. I'd expect that the product owner will look over the shoulder of team members, will have opportunity once in a while to access developer workstations, no matter how hard you secure everything. Trust is important in Scrum and Agile, this is one aspect of trust.