---
title: Example: Logging Azure DevOps Pipeline Runs
slug: neurons-for-itsm/admin-user-help/enu/latest/example-logging-azure-devops-pipeline-runs
createdAt: 2026-07-14T19:16:38.514Z
---

## Scenario

A company has a number of development build pipelines that it uses to run code against. This example shows how developers use existing Azure DevOps (ADO) events functionality and Ivanti Neurons for ITSM webhooks to send pipeline data to ITSM. This process transfers valuable information about runs on a particular pipeline into ITSM business objects.

### Prerequisites

To recreate this example, you need an Administrator Role for ITSM and ADO pipelines. You also need to set up your Azure DevOps instance to send pipeline results to the webhook that you've created. However, even without an ADO installation, you can understand the principles at work here.

:::ExpandableHeading
## Create a Business Object in ITSM

1. In ITSM, create a business object called **Pipeline Run**. Create the following fields to hold ADO information from a pipeline run:

| Field       | Description                                                                                                                                                                                                                          |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Build ID    | The ID for the development build that ran.                                                                                                                                                                                           |
| Message     | Messages about build status appear in this field.                                                                                                                                                                                    |
| Build Link  | An HTTPS link to open the build in Visual Studio (in this example).                                                                                                                                                                  |
| Git Hash    | The Git hash is a unique content name made up of the following:<br />- The commit message.<br />- The file changes.<br />- The commit author (and committer- they can be different).<br />- The date.<br />- The parent commit hash. |
| Description | User friendly version of the message from the Message field.                                                                                                                                                                         |
:::

::::ExpandableHeading
## Create an Action in ITSM

1. Open the **Graphical Action Designer**.

:::Paragraph{indent="1"}
See: [Using the Graphical Action Designer (GAD)](docId:2Wq6ihUN2zxiR21eA3M7g).
:::

:::hint{type="info"}
**Tip:&#x20;**&#x59;ou can use the **Classic Action Designer** if you prefer.
:::

2. Create a new block using the **Update Variables and Stored Values** Action block type. This block updates the stored values and variables used in your Action.

::Image[]{src="https://api.archbee.com/api/optimize/parib0MC3hVoUNdfQdnac/DjE8MiYZyFa4lgCZ3V5hz_ado-eg-blocks1.png" position="flex-start" size="40" initialPath="images/ado-eg-blocks1.png" githubPath="Content/Configure/Webhooks/images/ado-eg-blocks1.png" showCaption="false" indent="1"}

:::Paragraph{indent="1"}
For more help see: [Update Stored Values and Variables Quick Action](docId\:DofJmmkz8_OmkTCcL485K)
:::

3. Configure the **Update Variables and Stored Values** Action block to store the data given to the webhook endpoint in the required variable **WebhookBody**. Edit the values as follows:

| Field         | Value       |
| ------------- | ----------- |
| Variable Type | Variable    |
| Name          | WebhookBody |
| Data Type     | JSON        |
| Value         | \{}         |

::Image[]{src="https://api.archbee.com/api/optimize/parib0MC3hVoUNdfQdnac/ZLL6iR3EIUjKTz1snoRFe_csm-eg-itsm-qa1.png" position="flex-start" size="40" initialPath="images/csm-eg-itsm-qa1.png" githubPath="Content/Configure/Webhooks/images/csm-eg-itsm-qa1.png" showCaption="false" indent="1"}

4. Create a new block using the **Create a New Record** block type, name it **New action - InsertObject**, and attach it to the **Update Stored Values and Variables Action** block.

::Image[]{src="https://api.archbee.com/api/optimize/parib0MC3hVoUNdfQdnac/NFb6HIXYlcLAzYSda9WF__ado-eg-blocks2.png" position="flex-start" size="40" initialPath="images/ado-eg-blocks2.png" githubPath="Content/Configure/Webhooks/images/ado-eg-blocks2.png" showCaption="false" indent="1"}

5. Edit the **New action - InsertObject** block.

:::Paragraph{indent="1"}
For EACH field, create an expression using the Simplified Expression Editor to use the variable in the **Update Variables and Stored Values** Action block to populate that particular field. The expression retrieves a value for the JSON path and uses it to populate the field. For example, use this expression to populate the **Build ID** field:
:::

:::Paragraph{indent="1"}
$(JSONPathValue(Variable("WebhookBody"), "$.id"))
:::

::Image[]{src="https://api.archbee.com/api/optimize/parib0MC3hVoUNdfQdnac/sL-HKRfKoB-xXhtn_dArc_ado-eg-blocks3.png" position="flex-start" size="40" initialPath="images/ado-eg-blocks3.png" githubPath="Content/Configure/Webhooks/images/ado-eg-blocks3.png" showCaption="false" indent="1"}

:::Paragraph{indent="1"}
For help, see: [Using the Simplified Expression Editor](docId\:AYcVgwQ-XAxop0oFPGL9H)
:::

6. Save your Action as **CreateBuildRun**.
::::

::::ExpandableHeading
## Create the Webhook in ITSM

1. Create a webhook to trigger the **CreateBuildRun** Action when data is sent to the appropriate endpoint. In the **Settings&#x20;**&#x6D;enu, click on **Webhooks Manager** in the **Build&#x20;**&#x73;ection.

:::Paragraph{indent="1"}
The **Webhooks Manager** opens.
:::

::Image[]{src="https://api.archbee.com/api/optimize/parib0MC3hVoUNdfQdnac/0YWP5EdRGlpA7Lh8oi5l0_creatingwebhook.png" position="flex-start" size="40" initialPath="images/creating_webhook.png" githubPath="Content/Configure/Webhooks/images/creating_webhook.png" showCaption="false" indent="1"}

2. Click **Add a Webhook**.
3. Enter information into the fields:

| Field                  | Value                                                                                     |
| ---------------------- | ----------------------------------------------------------------------------------------- |
| Name                   | Log a Completed Pipeline                                                                  |
| Description            | This webhook will create a "Pipeline Run" business object record using the provided data. |
| Endpoint Extension     | CompletedPipeline<br />**Note:** The endpoint extension is case-sensitive.                |
| Full Endpoint          | https\://\{tenant url}/api/rest/Webhooks/Execute?extension=CompletedPipeline              |
| Select Business Object | Pipeline Runs (PipelineFailure)                                                           |
| Select Action          | CreateBuildRun (Composite Action)                                                         |

::Image[]{src="https://api.archbee.com/api/optimize/parib0MC3hVoUNdfQdnac/I5wgN2IEMWlwygnw_VL4z_addwebhook1blanks.png" position="flex-start" size="40" initialPath="images/add_webhook1_blanks.png" githubPath="Content/Configure/Webhooks/images/add_webhook1_blanks.png" showCaption="false" indent="1"}

4. Click **Save**.

:::Paragraph{indent="1"}
A confirmation message appears saying **Webhook successfully created**. Your webhook appears in the list and is enabled by default.
:::
::::

:::ExpandableHeading
## Verify your Webhook Works

1. To see your webhook in action and test it, find a recently logged build in ADO.

::Image[]{src="https://api.archbee.com/api/optimize/parib0MC3hVoUNdfQdnac/Obbi7oi89KN6XjxFSdZ3G_ado-eg-pipeline1.png" position="flex-start" size="40" initialPath="images/ado-eg-pipeline1.png" githubPath="Content/Configure/Webhooks/images/ado-eg-pipeline1.png" showCaption="false" indent="1"}

2. In ITSM open the **Pipeline Runs** business object and select **Refresh** to check for new records.

::Image[]{src="https://api.archbee.com/api/optimize/parib0MC3hVoUNdfQdnac/NFhCTwM3JaGKGA8Ef-fne_ado-eg-pipeline2.png" position="flex-start" size="40" initialPath="images/ado-eg-pipeline2.png" githubPath="Content/Configure/Webhooks/images/ado-eg-pipeline2.png" showCaption="false" indent="1"}

3. Open one of the records and check the fields. The record has been created automatically by th&#x65;**&#x20;CreateBuildRun** Action invoked by the **Log a Completed Pipeline** webhook.

::Image[]{src="https://api.archbee.com/api/optimize/parib0MC3hVoUNdfQdnac/RSZRlfroA97Vr9ia89NxD_ado-eg-pipeline3.png" position="flex-start" size="40" initialPath="images/ado-eg-pipeline3.png" githubPath="Content/Configure/Webhooks/images/ado-eg-pipeline3.png" showCaption="false" indent="1"}
:::
