Share via


Defining the Root Tasks Using the Process Template Plug-in File

By customizing ProcessTemplate.xml, you can add, remove, or change the sequence in which process template plug-ins are processed. The ProcessTemplate.xml is the root file that defines the entire process template and all subordinate XML files. This file contains all of the task groups that must run to successfully create a team project. Each task group references a subordinate XML file (often in a subfolder) where the specific tasks are defined. In general, you specify one task group for each plug-in.

In this topic

  • Structure of the ProcessTemplate.xml File

  • Defining the Plug-ins and Task Groups

  • Example Process Template File

For an overview of the contents of a process template, see Working with Process Template Files

Structure of the ProcessTemplate.xml File

In each ProcessTemplate.xml file, you define metadata and task groups. The metadata describes the template and specifies the plug-ins to be processed, as the following example shows

<metadata>
    <name>MSF for Agile Software Development v5.0</name>
    <description>You can use this template to organize and track the progress and health of a small-to-medium sized agile project.</description>
    <plugins>
      <plugin name="Microsoft.ProjectCreationWizard.Classification" wizardPage="false" />
      <plugin name="Microsoft.ProjectCreationWizard.Reporting" wizardPage="false" />
      <plugin name="Microsoft.ProjectCreationWizard.Portal" wizardPage="true" />
. . .
    </plugins>
</metadata>

The task groups specify the dependencies and tasks to be performed for each plug-in, as the following example shows:

<groups>
    <group id="Classification" description="Structure definition for the project." completionMessage="Project Structure uploaded.">
      <dependencies></dependencies>
      <taskList filename="Classification\Classification.xml" />
    </group>
    <group id="Groups" description="Create groups and assign permissions." completionMessage="Groups created and permissions assigned.">
      <dependencies>
        <dependency groupId="Classification" />
      </dependencies>
      <taskList filename="Groups and Permissions\GroupsandPermissions.xml" />
    </group>
. . .
</groups>

Back to top

Defining the Plug-ins and Task Groups

You customize the ProcessTemplate.xml file by using the ProcessTemplate element and its child elements. For more information about the syntax of each element, see ProcessTemplate XML Elements Reference.

You define the plug-ins and root tasks to be processed by specifying the following information in the indicated sequence:

  1. name. You use this element to assign a label to the process template. In the New Team Project Wizard, you specify the process template based on its name, as the following example shows:

    <name>Simplified Process</name>
    

    This element is required. The name appears not only in the process template list in the New Team Project Wizard but also in the Process Template Manager dialog box. The name of each process template must be unique within a team project collection, and each template name must contain no more than 254 Unicode characters. If you upload a template that is the same name as an existing template, the existing template will be overwritten.

  2. description. You use this element to define the text that describes the process template in the New Team Project Wizard, as the following example shows:

    <description>Choose the simple process for projects that require little or no overhead and have very low cost.</description>
    

    This text appears on the Select a Process Template screen in the New Team Project Wizard when a project lead or administrator is deciding which process template to use. In general, try to describe what kinds of projects for which the process template is useful in terms of team size, length, cost, and other factors.

  3. Plug-ins. You use the plugins and plugin elements to define the set of plug-ins that the process template uses. You must make sure that if any subordinate XML file references a plug-in, that plug-in appears in this list. You must also specify the wizardPage attribute (a true or false value) to indicate whether the plug-in requires a page on the New Team Project Wizard. You must specify the set of a plug-ins that will be processed when you create a team project and whether the plug-in should have a visible page in the New Team Project Wizard.

    The following XML shows the correct values to use for each of the nine plug-ins that Visual Studio Application Lifecycle Management (ALM) includes.

    <plugins>   <plugin name="Microsoft.ProjectCreationWizard.Classification" wizardPage="false"/>   <plugin name="Microsoft.ProjectCreationWizard.Reporting" wizardPage="false"/>   <plugin name="Microsoft.ProjectCreationWizard.Portal" wizardPage="true"/>   <plugin name="Microsoft.ProjectCreationWizard.Groups" wizardPage="false"/>   <plugin name="Microsoft.ProjectCreationWizard.WorkItemTracking" wizardPage="false"/>   <plugin name="Microsoft.ProjectCreationWizard.VersionControl" wizardPage="true"/>   <plugin name="Microsoft.ProjectCreationWizard.TestManagement" wizardPage="false" />   <plugin name="Microsoft.ProjectCreationWizard.Build" wizardPage="false" />   <plugin name="Microsoft.ProjectCreationWizard.Lab" wizardPage="false" /></plugins>
    
  4. Task Groups. You use the groups and group elements to define task groups. Each task group defines information that is necessary to process each plug-in. Each task group specifies the file that contains the set of tasks to process and optional dependencies that the group has on other task groups. The most common and easiest strategy is to create one taskList element per group per plug-in.

    The following example shows how a task group creates the default groups and permissions. The specific tasks are defined in the referenced file (GroupsandPermissions.xml). This task group has a dependency that the tasks in the Classification group successfully complete.

    <group id="Groups" description="Create groups and assign permissions." completionMessage="Groups created and permissions assigned.">   <dependencies>      <dependency groupId="Classification" />   </dependencies>   <taskList filename="Groups and Permissions\GroupsandPermissions.xml" /></group>
    

    For each task group, you define the following information:

    1. ID. A unique identification that is assigned to the plug-in.

    2. Description. The text that describes the plug-in tasks in the New Team Project Wizard.

    3. Completion message. The message to appear in the New Team Project Wizard when all tasks for the plug-in successfully complete.

    4. (Optional) Failure message. The message to appear in the New Team Project Wizard when one or more tasks for the plug-in fails to complete.

    5. (Optional) Plug-in dependencies. You use the dependencies and dependency elements to define the set of dependencies for a plug-in to be processed. A dependency corresponds to a plug-in that must successfully complete before the current plug-in tasks can be processed.

    6. Task file. You use the tasklist element to specify the file that contains the set of tasks to process the plug-in.

Back to top

Example Process Template File

The following syntax lists the contents of the ProcessTemplate.xml file for Microsoft Visual Studio Scrum 1.0. You can access this template from the following page on the Microsoft website: Microsoft Visual Studio Scrum 1.0.

<?xml version="1.0" encoding="utf-8"?>
<ProcessTemplate>
  <metadata>
    <name>Microsoft Visual Studio Scrum 1.0</name>
    <description>By using this template, you can organize and track the progress and health of a small-to-medium sized Scrum project.</description>
    <plugins>
      <plugin name="Microsoft.ProjectCreationWizard.Classification" wizardPage="false" />
      <plugin name="Microsoft.ProjectCreationWizard.Reporting" wizardPage="false" />
      <plugin name="Microsoft.ProjectCreationWizard.Portal" wizardPage="true" />
      <plugin name="Microsoft.ProjectCreationWizard.Groups" wizardPage="false" />
      <plugin name="Microsoft.ProjectCreationWizard.WorkItemTracking" wizardPage="false" />
      <plugin name="Microsoft.ProjectCreationWizard.VersionControl" wizardPage="true" />
      <plugin name="Microsoft.ProjectCreationWizard.TestManagement" wizardPage="false" />
      <plugin name="Microsoft.ProjectCreationWizard.Build" wizardPage="false" />
      <plugin name="Microsoft.ProjectCreationWizard.Lab" wizardPage="false" />
    </plugins>
  </metadata>
  <groups>
    <group id="Classification" description="Structure definition for the project." completionMessage="Project structure uploaded.">
      <dependencies></dependencies>
      <taskList filename="Classification\Classification.xml" />
    </group>
    <group id="Groups" description="Create groups and assign permissions." completionMessage="Groups created and permissions assigned.">
      <dependencies>
        <dependency groupId="Classification" />
      </dependencies>
      <taskList filename="Groups and Permissions\GroupsAndPermissions.xml" />
    </group>
    <group id="WorkItemTracking" description="Work item definitions uploading." completionMessage="Work item tracking tasks completed.">
      <dependencies>
        <dependency groupId="Classification" />
        <dependency groupId="Groups" />
      </dependencies>
      <taskList filename="WorkItem Tracking\WorkItems.xml" />
    </group>
    <group id="VersionControl" description="Creating version control." completionMessage="Version control task completed.">
      <dependencies>
        <dependency groupId="Classification" />
        <dependency groupId="Groups" />
        <dependency groupId="WorkItemTracking" />
      </dependencies>
      <taskList filename="Version Control\VersionControl.xml" />
    </group>
    <group id="Build" description="Build default processes uploading." completionMessage="Build default processes uploaded.">
      <dependencies>
        <dependency groupId="VersionControl" />
        <dependency groupId="Groups" />
      </dependencies>
      <taskList filename="Build\Build.xml" />
    </group>
    <group id="Lab" description="Creating Lab." completionMessage="Lab task completed.">
      <dependencies>
        <dependency groupId="Classification" />
        <dependency groupId="Groups" />
        <dependency groupId="WorkItemTracking" />
        <dependency groupId="Build" />
      </dependencies>
      <taskList filename="Lab\Lab.xml" />
    </group>
    <group id="TestManagement" description="Test Management default configurations uploading." completionMessage="Test Management default configurations uploaded.">
      <dependencies>
        <dependency groupId="Classification" />
        <dependency groupId="Groups" />
        <dependency groupId="WorkItemTracking" />
      </dependencies>
      <taskList filename="Test Management\TestManagement.xml" />
    </group>
    <group id="Reporting" description="Project reports uploading." completionMessage="Project reporting tasks completed.">
      <dependencies>
        <dependency groupId="Classification" />
        <dependency groupId="WorkItemTracking" />
        <dependency groupId="VersionControl" />
      </dependencies>
      <taskList filename="Reports\ReportsTasks.xml" />
    </group>
    <group id="Portal" description="Creating project portal site" completionMessage="Project portal tasks completed.">
      <dependencies>
        <dependency groupId="Classification" />
        <dependency groupId="Reporting" />
      </dependencies>
      <taskList filename="Windows SharePoint Services\WssTasks.xml" />
    </group>
  </groups>
</ProcessTemplate>

Back to top

See Also

Concepts

Working with Process Template Files

Customizing Process Templates

Other Resources

ProcessTemplate XML Elements Reference

Change History

Date

History

Reason

April 2011

Revised to provide a sequence for defining the root syntax and to provide an example of the ProcessTemplate syntax structure.

Information enhancement.