Another version of configuring TFS for team work
- Tutorial
Publication structure
- A little bit about - why so?
- The scheme of work of development teams for which customization is done
- Customize XML-ek
- Saving XML
- Configuring TFS via the interface

TFS 2015 was used, but much is true for earlier versions.
A little bit about - why so?
For long-term projects, even for a small team, a system for planning and working with tasks, as well as a version control system, are required. There are ready-made development methods (Agile, Scrum, etc.) for which there are templates in TFS, but not all enterprises are ready to implement them. This is especially true for enterprises where development is not a new product, and the refinement of an existing one according to the requirements of the business. It doesn’t matter to business that your sprint has not ended and you can’t add anything else to it. Maybe you want to talk about iterations. If a new important and certainly urgent task appears, you will do it. And somehow make out in TFS, spending time. Here, of course, someone will object that it is necessary to properly organize the structure of the IT department, for example, to create a special “fire brigade”. Or use a different approach, to fit into one of the standard methods. Yes, you can discuss this in the comments.
The scheme of work of development teams for which customization is done
So, suppose there are several development teams. Each team is organized on the principle of an “operational team”, in which there are different specialists. Each team has its own area of responsibility, its own development area. Sometimes it’s convenient to start non-development departments in TFS.
Suppose we need three levels of tasks:
- Lower - the tasks themselves are of several types. Each type must correspond to the specialty of the developer. They are created by the developers themselves. As a result of decomposition or otherwise.
- Medium - tasks from the customer. This is the Product Backlog item level. Or Story. Here, each element contains Wishlist requirements. Suppose they are created by either the customer or the team manager.
- Upper - projects or major goals. This is the Features level. Here you can group "Wishlist".
We also assume that before taking on a task, it must be agreed with someone. This may be the head of IT, the department of business analysis, the head of the department for which automation is performed, all at once or someone else.
Suppose that each task goes through 4 stages:
- expectation,
- development
- checking and laying out in production,
- done.
Suppose that each task or project goes through 3 stages:
- new,
- in work
- done.
Finally, suppose you need to transfer tasks to adjacent development teams so that you can see it on your boards. So that on your board you understand that the tasks are given to another team. And the other team saw that these were third-party tasks.
Let's say this is all that is required from the "Work" tab of your TFS. Next is how to set it up.
Customize XML-ek
1. Settings must be started if you do not already have tasks. Otherwise, there will be many mistakes and intractable situations.
2. First you need to create a collection and several commands in TFS, to give out rights.
3. Next, you must install Visual Studio, if you have not already installed it.
4. Launch Visual Studio.

5. Poke “Service / Extensions and Updates”. Next, select “Online.” Further “Visual Studio Gallery”. We find and install from there. Or download and install “Microsoft Visual Studio Team Foundation Server 2015 Power Tools” from the site. This is a free utility.
6. Next, launch the console. We type this:
cd c:\Program…\Microsoft Visual Studio 14.0\Common7\IDE\
Here the path to your studio will be clear. Next, we type this, replacing the paths, project names and collections.
witadmin exportprocessconfig /f:"c:\work\tfs2015\ProcessConfig.xml" /p:projectname /collection:"http://tfs2015:8080/tfs/CollectionName"
7. The file "ProcessConfig.XML" is created. Its text needs to be changed. Like this:
ProcessConfig.XML
<?xml version="1.0" encoding="utf-8"?><ProjectProcessConfiguration><FeedbackRequestWorkItemscategory="Microsoft.FeedbackRequestCategory"pluralName="Запросы на отзыв"singularName="Запрос отзыва"><States><Statetype="InProgress"value="Активный" /><Statetype="Complete"value="Закрыто" /></States></FeedbackRequestWorkItems><FeedbackResponseWorkItemscategory="Microsoft.FeedbackResponseCategory"pluralName="Ответы на отзывы"singularName="Ответ на отзыв"><States><Statetype="InProgress"value="Активный" /><Statetype="Complete"value="Закрыто" /></States></FeedbackResponseWorkItems><PortfolioBacklogs><PortfolioBacklogcategory="Microsoft.EpicCategory"pluralName="Ситуации"singularName="Ситуация"workItemCountLimit="1000"><AddPanel><Fields><Fieldrefname="System.Title" /></Fields></AddPanel><Columns><Columnwidth="100"refname="System.WorkItemType" /><Columnwidth="400"refname="System.Title" /><Columnwidth="100"refname="System.State" /><Columnwidth="50"refname="Microsoft.VSTS.Scheduling.Effort" /><Columnwidth="50"refname="Microsoft.VSTS.Common.BusinessValue" /><Columnwidth="100"refname="Microsoft.VSTS.Common.ValueArea" /><Columnwidth="200"refname="System.Tags" /></Columns><States><Statetype="Proposed"value="Новый" /><Statetype="InProgress"value="Активный" /><Statetype="InProgress"value="Разрешено" /><Statetype="Complete"value="Закрыто" /></States></PortfolioBacklog><PortfolioBacklogcategory="Microsoft.FeatureCategory"parent="Microsoft.EpicCategory"pluralName="Projects"singularName="Project"workItemCountLimit="1000"><AddPanel><Fields><Fieldrefname="System.Title" /></Fields></AddPanel><Columns><Columnwidth="100"refname="System.WorkItemType" /><Columnwidth="400"refname="System.Title" /><Columnwidth="100"refname="System.State" /><Columnwidth="50"refname="Microsoft.VSTS.Scheduling.Effort" /><Columnwidth="50"refname="Microsoft.VSTS.Common.BusinessValue" /><Columnwidth="100"refname="Microsoft.VSTS.Common.ValueArea" /><Columnwidth="200"refname="System.Tags" /></Columns><States><Statetype="Proposed"value="New" /><Statetype="InProgress"value="In progress" /><Statetype="Complete"value="Done" /></States></PortfolioBacklog></PortfolioBacklogs><RequirementBacklogcategory="Microsoft.RequirementCategory"parent="Microsoft.FeatureCategory"pluralName="Stories"singularName="Story"workItemCountLimit="1000"><AddPanel><Fields><Fieldrefname="System.Title" /></Fields></AddPanel><Columns><Columnwidth="100"refname="System.WorkItemType" /><Columnwidth="400"refname="System.Title" /><Columnwidth="100"refname="System.State" /><Columnwidth="50"refname="Microsoft.VSTS.Scheduling.StoryPoints" /><Columnwidth="100"refname="Microsoft.VSTS.Common.ValueArea" /><Columnwidth="200"refname="System.IterationPath" /><Columnwidth="200"refname="System.Tags" /></Columns><States><Statetype="Proposed"value="New" /><Statetype="InProgress"value="In progress" /><Statetype="Complete"value="Done" /></States></RequirementBacklog><TaskBacklogcategory="Microsoft.TaskCategory"parent="Microsoft.RequirementCategory"pluralName="Задачи"singularName="Задача"workItemCountLimit="1000"><AddPanel><Fields><Fieldrefname="System.Title" /></Fields></AddPanel><Columns><Columnwidth="400"refname="System.Title" /><Columnwidth="100"refname="System.State" /><Columnwidth="100"refname="System.AssignedTo" /><Columnwidth="50"refname="Microsoft.VSTS.Scheduling.RemainingWork" /></Columns><States><Statetype="Proposed"value="ToDo" /><Statetype="InProgress"value="In progress" /><Statetype="InProgress"value="Review" /><Statetype="Complete"value="Done" /></States></TaskBacklog><TypeFields><TypeFieldrefname="Microsoft.VSTS.Common.Activity"type="Activity" /><TypeFieldrefname="Microsoft.VSTS.Common.StackRank"type="Order" /><TypeFieldrefname="Microsoft.VSTS.Feedback.ApplicationLaunchInstructions"type="ApplicationLaunchInstructions" /><TypeFieldrefname="Microsoft.VSTS.Feedback.ApplicationStartInformation"type="ApplicationStartInformation" /><TypeFieldrefname="Microsoft.VSTS.Feedback.ApplicationType"type="ApplicationType"><TypeFieldValues><TypeFieldValuetype="ClientApp"value="Клиентское приложение" /><TypeFieldValuetype="RemoteMachine"value="Удаленный компьютер" /><TypeFieldValuetype="WebApp"value="Веб-приложение" /></TypeFieldValues></TypeField><TypeFieldformat="{0} ч"refname="Microsoft.VSTS.Scheduling.RemainingWork"type="RemainingWork" /><TypeFieldrefname="Microsoft.VSTS.Scheduling.StoryPoints"type="Effort" /><TypeFieldrefname="System.AreaPath"type="Team" /></TypeFields><Weekends><DayOfWeek>Sunday</DayOfWeek><DayOfWeek>Saturday</DayOfWeek></Weekends><Properties><Propertyname="HiddenBacklogs"value="Microsoft.EpicCategory" /><Propertyname="BugsBehavior"value="AsTasks" /></Properties><WorkItemColors><WorkItemColorprimary="FF30A062"secondary="FF50D092"name="1C task" /><WorkItemColorprimary="FFF2CB1D"secondary="FFF6F5D2"name="C# task" /><WorkItemColorprimary="FFC0C0C0"secondary="FFC8C8C8"name="SQL task" /><WorkItemColorprimary="FF009CCC"secondary="FFD6ECF2"name="Story" /><WorkItemColorprimary="FF773B93"secondary="FFEEE2F2"name="Project" /><WorkItemColorprimary="FFFF9D00"secondary="FFFCEECF"name="Запрос на проверку кода" /><WorkItemColorprimary="FFFF9D00"secondary="FFFCEECF"name="Запрос отзыва" /><WorkItemColorprimary="FFFF9D00"secondary="FFFCEECF"name="Набор тестов" /><WorkItemColorprimary="FFFF9D00"secondary="FFFCEECF"name="Общие шаги" /><WorkItemColorprimary="FFFF9D00"secondary="FFFCEECF"name="Общий параметр" /><WorkItemColorprimary="FFFF9D00"secondary="FFFCEECF"name="Ответ на отзыв" /><WorkItemColorprimary="FFFF9D00"secondary="FFFCEECF"name="Отклик на проверку кода" /><WorkItemColorprimary="FFCC293D"secondary="FFFAEAE5"name="Ошибка" /><WorkItemColorprimary="FFFF9D00"secondary="FFFCEECF"name="План тестирования" /><WorkItemColorprimary="FFFF9D00"secondary="FFFCEECF"name="Проблема" /><WorkItemColorprimary="FFFF7B00"secondary="FFFFD7B5"name="Ситуация" /><WorkItemColorprimary="FFFF9D00"secondary="FFFCEECF"name="Тестовый случай" /></WorkItemColors></ProjectProcessConfiguration>
Here I removed everything that can be removed. This file describes the settings of the boards, left panel, list and the panel for adding items. The colors of the elements are listed below. Please note that the description uses the Russian version of TFS. In English, “Tasks” and “Task” will be called “Tasks” and “Task”, respectively. The same goes for the rest.
8. Next, in the console, type:
cd c:\Program…\Microsoft Visual Studio 14.0\Common7\IDE\witadmin exportcategories /f:"c:\work\tfs2015\Categories.xml" /p:projectname /collection: "http://tfs2015:8080/tfs/CollectionName"
9. We replace the contents of the file with:
Categories.XML
<?xml version="1.0" encoding="utf-8"?><cat:CATEGORIESxmlns:cat="http://schemas.microsoft.com/VisualStudio/2008/workitemtracking/categories"><CATEGORYrefname="Microsoft.BugCategory"name="Категория ошибки"><DEFAULTWORKITEMTYPEname="Ошибка" /></CATEGORY><CATEGORYrefname="Microsoft.EpicCategory"name="Категория ситуации"><DEFAULTWORKITEMTYPEname="Ситуация" /></CATEGORY><CATEGORYrefname="Microsoft.FeatureCategory"name="Категория компонента"><DEFAULTWORKITEMTYPEname="Project" /></CATEGORY><CATEGORYrefname="Microsoft.RequirementCategory"name="Категория требований"><DEFAULTWORKITEMTYPEname="Story" /></CATEGORY><CATEGORYrefname="Microsoft.TestCaseCategory"name="Категория тестовых случаев"><DEFAULTWORKITEMTYPEname="Тестовый случай" /></CATEGORY><CATEGORYrefname="Microsoft.SharedStepCategory"name="Категория общих шагов"><DEFAULTWORKITEMTYPEname="Общие шаги" /></CATEGORY><CATEGORYrefname="Microsoft.SharedParameterCategory"name="Категория общих параметров"><DEFAULTWORKITEMTYPEname="Общий параметр" /></CATEGORY><CATEGORYrefname="Microsoft.CodeReviewRequestCategory"name="Категория запроса проверки кода"><DEFAULTWORKITEMTYPEname="Запрос на проверку кода" /></CATEGORY><CATEGORYrefname="Microsoft.CodeReviewResponseCategory"name="Категория отклика на проверку кода"><DEFAULTWORKITEMTYPEname="Отклик на проверку кода" /></CATEGORY><CATEGORYrefname="Microsoft.FeedbackRequestCategory"name="Категория запроса отзыва"><DEFAULTWORKITEMTYPEname="Запрос отзыва" /></CATEGORY><CATEGORYrefname="Microsoft.FeedbackResponseCategory"name="Категория отзыва"><DEFAULTWORKITEMTYPEname="Ответ на отзыв" /></CATEGORY><CATEGORYrefname="Microsoft.TestPlanCategory"name="Категория плана тестирования"><DEFAULTWORKITEMTYPEname="План тестирования" /></CATEGORY><CATEGORYrefname="Microsoft.TestSuiteCategory"name="Категория набора тестов"><DEFAULTWORKITEMTYPEname="Набор тестов" /></CATEGORY><CATEGORYrefname="Microsoft.TaskCategory"name="Категория задачи"><DEFAULTWORKITEMTYPEname="SQL task" /><WORKITEMTYPEname="C# task" /><WORKITEMTYPEname="1C task" /></CATEGORY><CATEGORYrefname="Microsoft.HiddenCategory"name="Категория скрытых типов"><DEFAULTWORKITEMTYPEname="Запрос на проверку кода" /><WORKITEMTYPEname="Отклик на проверку кода" /><WORKITEMTYPEname="Запрос отзыва" /><WORKITEMTYPEname="Ответ на отзыв" /><WORKITEMTYPEname="Общие шаги" /><WORKITEMTYPEname="Общий параметр" /><WORKITEMTYPEname="План тестирования" /><WORKITEMTYPEname="Набор тестов" /><WORKITEMTYPEname="Ошибка" /><WORKITEMTYPEname="Ситуация" /></CATEGORY></cat:CATEGORIES>
There are more than 3 element classes in TFS. Among them: tasks, errors, test cases and more. This file describes what we need from this and how many variants of elements there can be for each class. For example, we ask that there will be three types of tasks. Below we list what we do not need.
10. Next, we need to configure the interface of the elements, as well as their life cycle. To do this, in Visual Studio, click “Service / Process Editor / Work Item Types / Export WIT”

11. In the window that opens, set the parameters for connecting to your TFS.
12. Select the "Task" element from the list.

13. Save to a file with the same name. We agree further. Click OK.
14. Next, repeat for the type of "User History" (Product Backlog) and "Opportunity" (Feature).
15. Next, replace the resulting XML task with this and save it with the name “SQL task”:
SQL task.XML
<q1:WITDapplication="Work item type editor"version="1.0"xmlns:q1="http://schemas.microsoft.com/VisualStudio/2008/workitemtracking/typedef"><WORKITEMTYPEname="SQL task"><DESCRIPTION>Отслеживание требуемых работ.</DESCRIPTION><FIELDS><FIELDname="Путь итерации"refname="System.IterationPath"type="TreePath"reportable="dimension"><HELPTEXT>Итерация, в которой будет завершена эта задача</HELPTEXT></FIELD><FIELDname="Идентификатор итерации"refname="System.IterationId"type="Integer" /><FIELDname="Подсчет внешних ссылок"refname="System.ExternalLinkCount"type="Integer" /><FIELDname="Командный проект"refname="System.TeamProject"type="String"reportable="dimension" /><FIELDname="Подсчет гиперссылок"refname="System.HyperLinkCount"type="Integer" /><FIELDname="Подсчет вложенных файлов"refname="System.AttachedFileCount"type="Integer" /><FIELDname="Имя узла"refname="System.NodeName"type="String" /><FIELDname="Путь к области"refname="System.AreaPath"type="TreePath"reportable="dimension"><HELPTEXT>Область продукта, в которой задействована эта задача</HELPTEXT></FIELD><FIELDname="Дата последнего изменения"refname="System.RevisedDate"type="DateTime"reportable="detail" /><FIELDname="Дата изменения"refname="System.ChangedDate"type="DateTime"reportable="dimension" /><FIELDname="Идентификатор"refname="System.Id"type="Integer"reportable="dimension" /><FIELDname="Идентификатор области"refname="System.AreaId"type="Integer" /><FIELDname="Авторизован как"refname="System.AuthorizedAs"type="String"syncnamechanges="true" /><FIELDname="Название"refname="System.Title"type="String"reportable="dimension"><REQUIRED /><HELPTEXT>Требуемая работа и как будет реализована пользовательская история</HELPTEXT></FIELD><FIELDname="Состояние"refname="System.State"type="String"reportable="dimension"><HELPTEXT>Новый = новая работа, которая пока не активирована; Активный = оставшаяся работа, которую нужно выполнить; Закрыто = протестировано и возвращено.</HELPTEXT></FIELD><FIELDname="Дата авторизации"refname="System.AuthorizedDate"type="DateTime" /><FIELDname="Филигрань"refname="System.Watermark"type="Integer" /><FIELDname="Вер"refname="System.Rev"type="Integer"reportable="dimension" /><FIELDname="Кем изменено"refname="System.ChangedBy"type="String"syncnamechanges="true"reportable="dimension"><ALLOWEXISTINGVALUE /><VALIDUSER /></FIELD><FIELDname="Причина"refname="System.Reason"type="String"reportable="dimension"><HELPTEXT>Причина, по которой задача находится в текущем состоянии</HELPTEXT></FIELD><FIELDname="Кому назначено"refname="System.AssignedTo"type="String"syncnamechanges="true"reportable="dimension"><ALLOWEXISTINGVALUE /><VALIDUSER /><HELPTEXT>Лицо, которое в настоящее время занимается решением этой задачи</HELPTEXT></FIELD><FIELDname="Тип рабочего элемента"refname="System.WorkItemType"type="String"reportable="dimension" /><FIELDname="Дата создания"refname="System.CreatedDate"type="DateTime"reportable="dimension" /><FIELDname="Кем создано"refname="System.CreatedBy"type="String"syncnamechanges="true"reportable="dimension" /><FIELDname="Описание"refname="System.Description"type="HTML"><HELPTEXT>Что предполагается сделать, указатели на ресурсы и входные данные, заметки разработки, условия выхода</HELPTEXT></FIELD><FIELDname="Журнал"refname="System.History"type="History"><HELPTEXT>Поток дискуссии плюс автоматическая запись изменений</HELPTEXT></FIELD><FIELDname="Подсчет связанных ссылок"refname="System.RelatedLinkCount"type="Integer" /><FIELDname="Теги"refname="System.Tags"type="PlainText" /><FIELDname="Столбец доски"refname="System.BoardColumn"type="String"reportable="dimension" /><FIELDname="Готовый столбец доски"refname="System.BoardColumnDone"type="Boolean"reportable="dimension" /><FIELDname="Строка доски"refname="System.BoardLane"type="String"reportable="dimension" /><FIELDname="Оставшаяся работа"refname="Microsoft.VSTS.Scheduling.RemainingWork"type="Double"reportable="measure"><HELPTEXT>Оценка числа единиц работы, оставшихся до завершения выполнения задачи</HELPTEXT></FIELD><FIELDname="Исходная оценка"refname="Microsoft.VSTS.Scheduling.OriginalEstimate"type="Double"reportable="measure"><HELPTEXT>Начальное значение оставшейся работы - задается единожды, при начале работы</HELPTEXT></FIELD><FIELDname="Завершенная работа"refname="Microsoft.VSTS.Scheduling.CompletedWork"type="Double"reportable="measure"><HELPTEXT>Количество единиц работы, потраченных на эту задачу</HELPTEXT></FIELD><FIELDname="Активность"refname="Microsoft.VSTS.Common.Activity"type="String"reportable="dimension"><SUGGESTEDVALUESexpanditems="true"><LISTITEMvalue="Документация" /><LISTITEMvalue="Проектирование" /><LISTITEMvalue="Развертывание" /><LISTITEMvalue="Разработка" /><LISTITEMvalue="Тестирование" /><LISTITEMvalue="Требования" /></SUGGESTEDVALUES><HELPTEXT>Тип связанной работы</HELPTEXT></FIELD><FIELDname="Дата изменения состояния"refname="Microsoft.VSTS.Common.StateChangeDate"type="DateTime"><WHENNOTCHANGEDfield="System.State"><READONLY /></WHENNOTCHANGED><WHENCHANGEDfield="System.State"><SERVERDEFAULTfrom="clock" /></WHENCHANGED></FIELD><FIELDname="Дата активации"refname="Microsoft.VSTS.Common.ActivatedDate"type="DateTime"reportable="dimension"><WHENNOTCHANGEDfield="System.State"><READONLY /></WHENNOTCHANGED></FIELD><FIELDname="Кем активировано"refname="Microsoft.VSTS.Common.ActivatedBy"type="String"syncnamechanges="true"reportable="dimension"><WHENNOTCHANGEDfield="System.State"><ALLOWEXISTINGVALUE /><READONLY /></WHENNOTCHANGED></FIELD><FIELDname="Дата закрытия"refname="Microsoft.VSTS.Common.ClosedDate"type="DateTime"reportable="dimension"><WHENNOTCHANGEDfield="System.State"><READONLY /></WHENNOTCHANGED></FIELD><FIELDname="Кем закрыто"refname="Microsoft.VSTS.Common.ClosedBy"type="String"syncnamechanges="true"reportable="dimension"><WHENNOTCHANGEDfield="System.State"><ALLOWEXISTINGVALUE /><READONLY /></WHENNOTCHANGED></FIELD><FIELDname="Приоритет"refname="Microsoft.VSTS.Common.Priority"type="Integer"reportable="dimension"><DEFAULTfrom="value"value="2" /><ALLOWEDVALUESexpanditems="true"><LISTITEMvalue="1" /><LISTITEMvalue="2" /><LISTITEMvalue="3" /><LISTITEMvalue="4" /></ALLOWEDVALUES><HELPTEXT>Производственная важность</HELPTEXT></FIELD><FIELDname="Ранг стека"refname="Microsoft.VSTS.Common.StackRank"type="Double"reportable="dimension"><HELPTEXT>Сначала обработайте элементы с меньшим значением ранга стека. Установить в рассмотрении.</HELPTEXT></FIELD><FIELDname="Сборка интеграции"refname="Microsoft.VSTS.Build.IntegrationBuild"type="String"reportable="dimension"><SUGGESTEDVALUESexpanditems="true"><LISTITEMvalue="<Нет>" /></SUGGESTEDVALUES><HELPTEXT>Сборка, в которой ошибка была исправлена</HELPTEXT></FIELD><FIELDname="Дата начала"refname="Microsoft.VSTS.Scheduling.StartDate"type="DateTime"reportable="dimension"><HELPTEXT>Дата начала задачи</HELPTEXT></FIELD><FIELDname="Дата завершения"refname="Microsoft.VSTS.Scheduling.FinishDate"type="DateTime"reportable="dimension"><HELPTEXT>
Also popular now:
-
IPhone Navigation
-
Sociological meat
-
The terms of the deal with Yahoo!
-
How Eset Loses Customers
-
Using deb packages to distribute code
-
User motivation for creating content
-
Text at all costs: PPT. Second take
-
Test for a strong JS programmer
-
MediaMarkt Opening, Lemmings and Consumer Protection Law
-
The place of opinion leaders in the individual infosphere in modern society