Search Results for

    Show / Hide Table of Contents

    Azure DevOps – Process Modification

    A Process Modification Object defines how to customize an Azure DevOps process. It allows you to extend or modify one or more Work Item Types (WITs) with custom fields, layouts, states, rules, and more.

    Customers, who want to create new process-modifications, should create a ConfigMap (see alpaca-example) named process-modification and add the modifications under the data section. This ConfigMap should be placed in the customer configuration repository.

    Main Components:

    • procModProcess: Root object representing the customized process.
    • workItemTypes: List of WITs (e.g., Bug, User Story) to modify.
    • pages → sections → groups → controls: Nested layout structure for UI field placement.
    • rules: Conditional logic (e.g., required fields, autofill values).
    • states: New or modified workflow states.
    • extensions: Optional DevOps Marketplace extensions.
    • ChildTasksTemplate: Optional Template of Child Tasks, that can be overridden during the customization
    • name / description / owner: Metadata for identification and ownership.

    Root Object

    Field Type Description Required
    name string Unique name of the configuration required
    description string Description of the customization purpose required
    owner string Responsible team or contact mail required
    procModProcess object Main definition of the process required
    ChildTasksTemplate object Child tasks template optional

    Example

    {
      "procModProcess": {},
      "ChildTasksTemplate": {},
      "description": "Process modifications description",
      "name": "process-sample",
      "owner": "owner@sample.com"
    }
    

    Process

    Field Type Description Required
    name string Internal name of the process required
    workItemTypes array List of Work Item Types (WITs) required

    Example

    "procModProcess": {
      "name": "name-of-process",
      "workItemTypes": []
    }
    

    Work Item Types

    Field Type Description Required
    name string Internal name of the work item type (e.g., Bug) required
    pages array Layout definition (tabs, sections, groups, controls) optional
    rules array Business rules (rules for fields/behavior) optional
    cards object Card layout and color rules optional
    templates array Predefined item templates optional
    states array Workflow states optional

    Example

    [
      {
        "name": "User Story",
        "pages": [],
        "rules": [],
        "cards": {},
        "templates": [],
        "states": []
      }
    ]
    

    Pages

    Field Type Description Required
    label string Display name required
    sections object Section definitions required

    Example

    "pages": [
        {
          "label": "Documentation",
          "sections": []
        }
      ]
    

    Sections

    Field Type Description Required
    name string Internal name of the control required
    groups object Groups definitions required

    Example

    "sections": [
      {
        "name": "Section1",
        "groups": []
      }
    ]
    

    Groups

    Field Type Description Required
    label string Label of group required
    controls object Control definitions required

    Example

    "groups": [
      {
        "label": "Documentation Group",
        "controls": []
      }
    ]
    

    Controls

    Field Type Description Required
    name string Internal name of the control optional
    id string Unique control ID optional
    label string Display name optional
    description string Tooltip text optional
    type string Field type (e.g., Text_SingleLine, Picklist) optional
    itemsForPicklist array List of values for dropdowns optional
    hideFromLayout boolean Hides the control in the UI if true optional
    required boolean Marks the field as required optional
    order integer Order within the group optional
    defaultValue string Default value optional

    Example

    
    "controls": [
        {
        "order": 0,
        "type": 1,
        "label": "Documentation Title",
        "name": "Documentation Title",
      },
      {
        "type": 1,
        "order": 1,
        "label": "Documentation Status",
        "name": "Documentation Status",
        "itemsForPicklist": [
            "Not necessary",
            "Awaiting feedback",
            "Done"
        ]
      }
    ]
    
    

    Rules

    Field Type Description Required
    name string Internal name of the rule required
    actions array List of actions to perform required
    conditions array Conditions that trigger the rule required
    isDisabled boolean Rule is disabled if true optional
    label string Display name optional

    Example

    "rules": [
      {
        "name": "Require Documentation Status on Close",
        "isDisabled": false,
        "actions": [],
        "conditions": []
      }
    ]
    

    Actions

    Field Type Description Required
    actionType string Type of action to take when the rule is triggered. MS Types required
    targetField string Field on which the action should be taken. required
    value string Value to apply on target field, once the action is taken. required

    Example

    "actions": [
      {
        "actionType": "makeRequired",
        "targetField": "Custom.DocumentationStatus",
        "value": ""
      }
    ]
    

    Conditions

    Field Type Description Required
    conditionType string Type of condition. MS Types required
    field string Field that defines condition. required
    value string Value of field to define the condition for rule. required

    Example

    "cards": {
      [
        {
        "conditionType": "when",
        "field": "System.State",
        "value": "Closed"
        }
      ]
    }
    

    Cards

    Field Type Description Required
    fields array List of fields displayed on the board card required
    cardRules array Visual customization depending on conditions optional

    Example

    "cards": {
      "fields": [
        "Microsoft.VSTS.Scheduling.OriginalEstimate",
        "Custom.DocumentationStatus"
      ],
      "cardRules": [
        {
          "filter": "[System.Tags] CONTAINS 'Blocked'",
          "name": "Highlight blocked",
          "isEnabled": "true",
          "settings": {
            "background-color": "#de5e5e",
            "title-color": "#000000",
            "title-font-weight": "bold"
          }
        }
      ]
    }
    

    Templates

    Field Type Description Required
    name string Name of the template required
    description string Purpose of the template required
    fields object Default values for the fields, with a rich-text (HTML) description of the workflow required

    Example

    {
      "name": "Example Workflow",
      "description": "Simple workflow example",
      "fields": {
        "System.Title": "Workflow: Customer Notification",
        "System.Description": "<div><b>Solution:</b> CRM Notification System<br><b>Entity:</b> Contact<br><b>Run:</b> synchronous<br><b>Scope:</b> Organization<br><b>Trigger:</b> Create<br><b>Logic:</b> Send welcome email to new contact</div>"
      }
    }
    

    States of the WIT

    Field Type Description Required
    name string Display name of the state required
    color string State color (hex) optional
    stateCategory string Category (Proposed, InProgress, Completed) required
    order integer Order in the workflow optional

    Example

    "states": [
      {
        "name": "Blocked",
        "stateCategory": "Proposed",
        "color": "db552c",
        "order": 2
      },
      {
        "name": "Ready",
        "stateCategory": "Proposed",
        "color": "cccccc",
        "order": 3
      }
    ]
    

    BoardColumns

    Field Type Description Required
    name string Name of the column required
    order integer Position of the column required
    updateColumn string Update an existing column optional
    itemLimit integer WIP limit optional
    isSplit boolean Split column into Doing/Done optional
    stateMappings object Mapping of work item states to this column optional
    columnType string Column behavior optional

    Example

    "boardColumns": [
      {
        "name": "Evaluation",
        "order": 1,
        "description": "",
        "columnType": "inProgress",
        "isSplit": false,
        "itemLimit": 0,
        "stateMappings": {
          "Bug": "Active",
          "User Story": "Evaluation"
        }
      }
    ]
    

    Extensions

    Field Type Description Required
    publisherId string Publisher ID of the extension required
    extensionId string ID of the extension required

    Example

    "extensions": [
      {
        "publisherId": "publisherId",
        "extensionId": "extensionId"
      }
    ]
    

    BoardSwimlanes

    Field Type Description Required
    boardSwimlanes array List of custom swimlane names optional

    Example

    "boardSwimlanes": [
      "Waiting"
    ]
    

    ChildTasksTemplate

    ChildTasksTemplate

    Field Type Description Required
    Version integer Version of the template format required
    Templates array of object List of task templates required

    Templates

    Field Type Description Required
    Name string Name of the template required
    Tasks array of object List of child tasks required

    Tasks

    Field Type Description Required
    Name string Name of the child task required
    Fields array of object Fields for the child task required

    Field

    Field Type Description Required
    Name string Field name required
    Value string Field value required

    Example

    "ChildTasksTemplate": {
      "Version": 1,
      "Templates": [
        {
          "Name": "Default Tasks",
          "Tasks": [
            {
              "Name": "Review Documentation",
              "Fields": [
                { "Name": "System.Title", "Value": "Review Documentation" },
                { "Name": "System.Description", "Value": "Ensure documentation is up to date." }
              ]
            },
            {
              "Name": "Update Wiki",
              "Fields": [
                { "Name": "System.Title", "Value": "Update Wiki" },
                { "Name": "System.Description", "Value": "Update the project wiki with latest changes." }
              ]
            }
          ]
        }
      ]
    }
    

    ConfigMap Process-modification "alpaca-example"

    This example shows a minimal yet functional process modification:

    • Adds new fields: "Documentation Title" and "Documentation Status".
    • Requires "Documentation Status" when the state is Closed.
    • Introduces two new states: Blocked and Ready.

    Example ConfigMap

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: process-modifications
    data:
      process-modifications: |-
        {
        "description": "(Alpaca example) Adds documentation fields, a mandatory rule, and new states",
        "name": "alpaca-example-customization",
        "owner": "alpaca@example.com"
            "procModProcess": {
            "name": "ExampleProcess",
            "workItemTypes": [
                {
                "name": "User Story",
                "pages": [
                    {
                    "label": "Documentation",
                    "sections": [
                        {
                        "name": "Section1",
                        "groups": [
                            {
                            "label": "Documentation Group",
                            "controls": [
                                {
                                "order": 0,
                                "type": 1,
                                "label": "Documentation Title",
                                "name": "Documentation Title"
                                },
                                {
                                "type": 1,
                                "order": 1,
                                "label": "Documentation Status",
                                "name": "Documentation Status",
                                "itemsForPicklist": [
                                    "Not necessary",
                                    "Awaiting feedback",
                                    "Done"
                                ]
                                }
                            ]
                            }
                        ]
                        }
                    ]
                    }
                ],
                "rules": [
                    {
                    "name": "Require Documentation Status on Close",
                    "isDisabled": false,
                    "conditions": [
                        {
                        "conditionType": "when",
                        "field": "System.State",
                        "value": "Closed"
                        }
                    ],
                    "actions": [
                        {
                        "actionType": "makeRequired",
                        "targetField": "Custom.DocumentationStatus",
                        "value": ""
                        }
                    ]
                    }
                ],
                "states": [
                    {
                    "name": "Blocked",
                    "stateCategory": "Proposed",
                    "color": "db552c",
                    "order": 2
                    },
                    {
                    "name": "Ready",
                    "stateCategory": "Proposed",
                    "color": "cccccc",
                    "order": 3
                    }
                ]
                }
            ]
            },
        }
    
    In This Article
    Back to top 2025 © COSMO CONSULT - Data protection - Imprint