I have diff project in the same organization each team has his own project and i want to automate the creation of userstory from one project to another for exemple if i have Userstory X in Project 1 assigned to Team1 and i need the intervention of team 2 so we will create a new related userstory in project 1 . i want that new US to be created automatically in the project2 of the second team .
You can try to use the webhook based triggers to meet your demands with following configurations in project1:
Go to "Project Settings" > "Service hooks" to create a web hook with the "Work item updated
" event.
The request URL is with the format like as below.
https://dev.azure.com/<ADO Organization>/_apis/public/distributedtask/webhooks/<WebHook Name>?api-version=6.0-preview
For example: https://dev.azure.com/MyOrg/_apis/public/distributedtask/webhooks/UsAssignedToTeam1?api-version=6.0-preview
Go to "Project Settings" > "Service connections" to create a new "Incoming Webhook
" service connection. Ensure the WebHook Name
is consistent with that in the request URL.
Set up a YAML pipeline like as below.
resources:
webhooks:
- webhook: UsAssignedToTeam1
connection: UsAssignedToTeam1Connetion
stages:
- stage: A
jobs:
- job: A1
steps:
- checkout: none
- task: Bash@3
displayName: 'Create User Story'
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
inputs:
targetType: inline
script: |
echo "Get the details of the User Story assigned to Team1 in Project1:"
workItemId=${{ parameters.UsAssignedToTeam1.resource.workItemId }}
workItemUrl=${{ parameters.UsAssignedToTeam1.resource._links.parent.href }}
echo "workItemId = $workItemId"
echo "workItemUrl = $workItemUrl"
echo "------------------------------------------"
echo "Create a new User Story in Project2:"
url="https://dev.azure.com/{organization}/{project}/_apis/wit/workitems/\$User%20Story?api-version=7.0"
curl -X POST -u :$SYSTEM_ACCESSTOKEN $url \
-H 'Content-Type: application/json-patch+json' \
-d '[
# Set the title of the new User Story.
{
"op": "add",
"path": "/fields/System.Title",
"value": "New User Story in Project2 related to User Story ($workItemId) in project1"
},
# Set the Area Path of the new User Story. e.g.: Project2\\AreaTeam2\\SubArea
{
"op": "add",
"path": "/fields/System.AreaPath",
"value": "{Area Path of Team2 in Project2}"
},
# Set the Iteration Path of the new User Story. e.g.: Project2\\Iteration2024\\SubIteration
{
"op": "add",
"path": "/fields/System.IterationPath",
"value": "{Iteration Path in Project2}"
},
# Link the User Story in project1 as 'Related' on the new User Story.
{
"op": "add",
"path": "/relations/-",
"value": {
"rel": "System.LinkTypes.Related",
"url": "$workItemUrl",
"attributes": {
"isLocked": false,
"name": "Related"
}
}
}
]'
By this, when a User Story was assigned to the area path of Team1 in project1, it will trigger the web hook, then the web hook will trigger the YAML pipeline. The pipeline will call the RESI API "Work Items - Create" to create a new User Story in project2 and link the User Story in project1 as the "Related
" type.