My company uses TFS 2008 with the MSF for Agile process template. We are in the process of planning an upgrade for TFS 2010. We use Scenarios as a container for functional requirements with linked development tasks, bugs, etc.
In order to save the state of a Scenario as 'Resolved' or 'Closed', I would like to enforce that any development task or bug that is linked to the scenario is also closed. With TFS 2008, these are links, in TFS 2010 we plan to use child work items.
I have been reviewing the work item type definition schema and MSDN documentation, but nothing is jumping out at me as a solution to this problem.
Can it be done? Thanks in advance for any help!
What you want cannot be done directly. The saving of a work item is what is called a Notification (rather than a Decision). That means that you can only do TFS API stuff in an event after it is done. You cannot block it.
However, there are ways to get the "effect" of what you are looking for. If you modified your template so that your parent work item (I think you called it Scenario) had the State control (not the field) as read only that would make it so that only clients that don't use the normal Visual Studio controls can change that value. (This could be worked around by your users, but it would take some effort to break the rules).
But there is one more step. You need to get the parent work item to "Resolved" somehow. For this I recommend a open source tool that I wrote called TFS Aggregator. (Or if you plan to "roll your own" you could use the code there as a starting point.)
You can find TFS Aggregatoron codeplex here: http://tfsaggregator.codeplex.com/
It is a great tool for rolling up changes and totals to parent work items. You could put in a rule that when your child items are all "done" to move the Parent to "Resolved".
EDIT: I realize now from your question that you have more than one type of Work Item as a child of the parent Item. TFS Aggregator does not support that right now (but it may in the future). It was written to aggregate tasks to Bugs or PBIs. Still, it would probably be easier to modify the code of that project than to start from scratch.
I don't think this is possible "out of the box". I would recommend you write a query to find cases where the "rule" is violated and handle it that way.
If you MUST automate this - You could use the TFS Eventing Service which can invoke a Web Service.
Set it up for when a Task or Bug is closed - query the database for the Scenario and if all the Task/Bugs are closed - use the TFS API to advance the Status to Resolved or Closed. You could limit the allowed user to make advancement to the account the Service runs under.
Related
I am looking for guidance on process template switching.
Is this the best help page for change methology in an ongoing project?:
https://www.visualstudio.com/en-us/docs/work/process/manage-process
We are using the hosted (online) version of TFS, and would like to work WIP-limited and contiuous planning (Kanban) instead of time-boxed (Scrum), because we are a very small team and have rapidly changing requirements.
I guess this means we need to change our current process template from Scrum to Agile, correct? And that this not possible to do for an ongoing tfs project. You can start a new project but then you will loose all history.
But I have seen a help page showing that you can import new templates to an existing project, and that will make the same changes for you as starting a new project would have done.
Victor
This is quite broad, but I'll do my best...
We are using the hosted (online) version of TFS, and would like to
work WIP-limited and contiuous planning (Kanban) instead of time-boxed
(Scrum), because we are a very small team and have rapidly changing
requirements.
You've not outlined the process of how you work or what you need, but if you want to use a Kanban Process you should be able to use the "Board" under "WORK" and set WIP limits on columns using the "Configuration" options there:
You can then customise columns and WIP limits:
I guess this means we need to change our current process template from
Scrum to Agile, correct? And that this not possible to do for an
ongoing tfs project. You can start a new project but then you will
loose all history.
There's no need to change, see this post from Marin Hinshelwood where he says:
TL;DR – Select the Scrum template if you have an agile team and want
to reduce friction. Don’t create unnecessary friction for your move to
agility by selecting either the CMMI or Agile templates that suffer
from the legacy of the Microsoft Solution Framework (MSF).
This takes me back to the original question:
Is this the best help page for change methology in an ongoing
project?:
The answers is yes, BUT only if you need to make heavy customisations, start by changing the Kanban board in the "Board" view and only come back to the Process Template customisation if you need to make more changes. You can add / change Kanban columns instead of adding "states".
In TFS 2013, for every work item (product backlog item, bug etc.) a task has to be created. So every time a bug is created or a backlog item is added, at least one additional linked task needs to be created.
This makes it quite cumbersome to maintain the system. Is there a way to just create one work item that goes from the backlog to being developed to being tested without having to create additional tasks?
Maybe this could be done via a different process template? I’ve tried both scrum and agile build in templates from Microsoft.
There is a new article on MSDN that addresses this, at least for bugs. It shows how to make bugs act as tasks in TFS. You could theoretically expand it for any work item (although I'm not sure this is advisable).
I wanted to know if there is any place I can look for and find out whats the intended purpose of TFS work item type 'Issue'?
TFS 2010 says Issue work item type Tracks an obstacle to progress.
Has any one used this work item type in TFS and if yes for what purpose?
A team can use the issue work item to track an event or situation that might block work or is blocking work on the product. Issues differ from risks in that teams identify issues spontaneously, generally during daily team meetings.Teams should review each issue work item and analyze it to create one or more tasks to resolve it. After the team takes corrective action by completing the tasks, the team resolves the issue. Finally, if the team decides that the corrective action is acceptable, the team closes the Issue.
This is likely by design for big teams with proper QA departments, but we are only 3 devs and do round robin QA on each others work.
The problem is say person A creates a bug, and assign it to person B, and the person B resolves the bug, TFS reassigns the bug to the creator.
This makes keeping track of your own fixed bugs nigh impossible.
Is there any way to change this behavior?
Thanks
leppie
The easiest way to make changes like this is with the TFS Power Tools. Among many other things, it will add a "Process Editor" area under your Tools menu in VS. Use the "open WIT from server" feature to download the work item type that's bothering you, make the changes you want (under the Workflow tab in your case), then run "import WIT" to upload it back to the server.
The complete XML specification for work item types is documented on MSDN, but as usual it's quite dense. Here's a series of blog posts that walks you through the possibilities.
In the default TFS setup there are three work item types: scenario, task and bug. That last one is quite straightforward, and task also: it's a specific job for a team member to complete. But I think scenario is a bit vague.
I usually create a scenario for larger and more general units of work: for example "Create functionality to add employee lines to an employer." Smaller, more specific work items would then be tasks, for example: "Create detail form.", "Create save method on server.", etc
When I check in changes I link the changeset to the scenario AND to the specific task. Is this a good habit? How do you deal with tasks and scenarios? Any resources to best practices?
I've also heard scenarios are actually meant for use cases, is this so?
Scenarios can be any user story.
You only need to check in to the task.
When tasks are created, they should be linked to a Scenario first, before assigned to developers.
That way the association between checkins and scenario is automatic (and reportable).
No point double handling
In the MSF Agile template, Scenarios can also be thought of as "User Story" - kinda like a lightweight agile use case.
The Scenario details the broad picture of the functionality that is wanted to be implemented, recording a single path of a users interaction with a part of the system. For example, in Stack Overflow a couple of Scenarios might be "Ask a Question" or "Answer a Question". Scenarios and Quality of Service Requirements can be thought of as top level work items in MSF Agile (i.e. the work items that define the system) with Scenarios being functional requirements and Quality of Service being non-functional requirements.
I tend to create multiple tasks from each scenario and typically only record my check-ins against the task. In TFS 2010 properly hierarchical work items are coming which will make this way of working easier to report on. Currently work item associations are bi-directional (i.e. you can say that a task is associated with a scenario but you cannot say that it is a child of it).
There is nothing wrong with marking your check-in against the task and scenario, just that it creates more work for you when checking in. Also, the scenario might be getting delivered by a number of developers were-as a task tends to be down at the granularity of individual person activities.
If you are doing a lot of associating of a work item to a scenario, then the following tip might be handy for you (http://www.woodwardweb.com/vsts/top_tfs_tip_3_r.html). It shows you how to modify the standard MSF Agile process template to remove the ability for check-in's to resolve the Scenario but just associate the check-in with that work item. Resolving on check-in for a long running work item like a Scenario is nearly always not what you want to happen - but is the default behavior out of the box.
Hope that helps.
If by "default TFS setup" you mean the "MSF for Agile Software Development" project template, then a scenario is defined as follows:
A scenario is a type of work item,
recording a single path of user
interaction through the system. As the
persona attempts to reach a goal, the
scenario records the specific steps
that they will take in attempting to
reach that goal. Some scenarios will
record a successful path; others will
record an unsuccessful one. When
writing scenarios, be specific as
there are many possible paths.
To get a bit more info on this, have a good look at the "Documents/Process Guidance" folder under the project in team explorer - it explains the recommended process fairly well
You can think of scenarios as representing the users perspective, whereas tasks are the developers perspective. According to the MSF Agile documentation a scenario "represents a single path of user interaction through the system you are building.", and a task "identifies a specific item of work for a team member to perform."
Tasks can be linked to scenarios. When checking in you, as a developer, have solved a task, not the scenario, so you should relate the changeset to this task.