> For the complete documentation index, see [llms.txt](https://docs.expel.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.expel.io/connect-your-technology/l-p-integrations/palo-alto-networks/palo-alto-networks-cortex-xdr-pro-setup-for-workbench.md).

# Palo Alto Networks Cortex XDR Pro Setup for Workbench

{% hint style="info" %}
***This guide is for XDR Pro only. Expel does not support XDR Prevent.***

Integrating your technology with Expel Workbench requires advanced user privileges that some products don't offer. PAN Cortex XDR Prevent has limitations on read/write privileges that prevent full communication with Expel Workbench.
{% endhint %}

## Step 1: Enable Console Access

Having read-only access to the interface of your technology allows Expel to dig deeper during incident investigations. Our device health team uses this access to investigate potential health issues with your tech. For more information, see [Why Expel Asks for Console Access](/connect-your-technology/about-integrations/why-expel-asks-for-console-access.md).

1. Log in to Cortex XDR Pro.
2. In a new tab, open the [Palo Alto Customer Support Portal](https://support.paloaltonetworks.com/).
3. Navigate to **Members > Create New User**.
4. Create a new user for the Expel SOC:
   * **Display Name** - enter "Expel SOC".
   * **Password** - enter a temporary password.
   * **First Name** - enter "Expel".
   * **Last Name** - enter "SOC".
   * **Email address** - enter "soc+\<Your\_Organization\_Name>@expel.io.
     * For example, if your organization were Acme Corp, the format would be "<soc+acme_corp@expel.io>".
5. Expel receives the account activation email and sets a new password.
6. In the Cortex XDR console, navigate to **Settings > Configuration > Access Management > Users**.
7. Confirm that the newly created Expel SOC user is present and edit the user to add the **Privileged Security Admin** role from the [list of predefined roles](https://docs-cortex.paloaltonetworks.com/r/Cortex-XDR/Cortex-XDR-3.x-Documentation/Assign-user-roles-and-groups).

## Step 2: Generate API credentials

To integrate the technology with Workbench, you must create secure credentials to the API.

1. In the Cortex XDR Pro console, navigate to **Settings > Configurations > Integrations > API Keys**.
2. Select **Copy URL** and save the output in a safe place for use in a later step.
3. In the upper right corner, select **New Key**.
4. In the Generate API Key window, make sure that the Security Level is set as **Advanced**. Make sure that the role includes all “Investigation” options selected. We recommend **Instance Administrator** as it selects all of the options that we need to complete investigative action.
5. Select **Generate**.
6. Copy and save the following credentials for use in the next section:
   * URL
   * API Key
7. In the API Keys table, **locate the ID field and copy and save the value as your API Key ID**. You will also need this value in the next section.

## Step 3: Add PAN Cortex XDR Pro as a Security Device in Workbench

Now that you have the correct access configured and noted the credentials, you can integrate your tech with Workbench.

1. [Log in to Workbench](https://workbench.expel.io/auth/login?orig=%2F).
2. Navigate to Settings and select **Security Devices**.
3. At the top of the page, select **Add Security Device**.
4. Search for and select **Cortex XDR Pro**.<br>

   <div align="left"><figure><img src="/files/ADntjPsylhjbRCjK06qn" alt="PAN Cortex XDR Pro security device configuration form in Workbench." width="332"><figcaption></figcaption></figure></div>
5. Complete the fields as follows:
   * **Name** - enter a name that might help you more easily identify this integration, such as "CompanyName PAN Cortex XDR Pro"; this name will display in Workbench under the Name column, and is a text string that you can filter on.
   * **Location** - enter the location of your integration, for example "cloud." This is also a text string that you can filter on, so we recommend being consistent with location naming across your Expel integrations.
   * **URL** - enter your Cortex XDR Pro URL.
   * **API key** - the API key generated in [Step 2](#step-2-generate-api-credentials).
   * **API key ID** - enter the Key ID noted in [Step 2](#step-2-generate-api-credentials).
6. Select **Save**.

Your device should be created successfully within a few seconds. A few reminders:

* After your connection is healthy, it will take some time for your device to begin polling and receiving data.
* To check on the status, select the downward arrow for your device in the first column and choose **View details**.
* Polling will happen first; data will be received after that. **You must refresh the page to see updates.**
* If your device does not begin polling within 15 minutes, and does not begin receiving data within 30 minutes, [contact our support team for help](/support/how-to-reach-us.md).
* To check if alerts are coming through, navigate to **Dashboards > Alert Analysis**. Scroll to the device you want to check, and select the **Expel Alerts** tab to reveal more alert information. It can take 36 to 72 hours for alerts to appear after setup, as we [tune your device](/workbench-reference/alerts/how-expel-alerts-work.md#device-tuning).

## Reference

### Cortex API Routes Expel Uses

| Route                                                | Permission                    |
| ---------------------------------------------------- | ----------------------------- |
| /public\_api/v1/incidents/get\_incidents             | VIEW PRIVILEGES:Investigation |
| /public\_api/v1/incidents/get\_incident\_extra\_data | VIEW PRIVILEGES:Investigation |
| /public\_api/v1/endpoints/get\_endpoint              | VIEW PRIVILEGES:Investigation |

### Status Syncing

Expel supports alert status syncing between Workbench and Palo Alto Networks Cortex XDR Pro. Specifically, when an ingested alert or incident from Cortex XDR results in the creation of an Expel Alert, the Expel Alert status (e.g. Open, Investigating, Closed) are reflected back in Cortex XDR as Expel’s SOC works the Expel Alert. Syncing is keyed off the original Cortex XDR alert ID that was ingested.&#x20;

Syncing is currently one-way and Workbench serves as the source of truth. This means statuses in Cortex XDR are updated by Workbench, but Workbench is not informed or updated by status  changes made in Cortex XDR.

If you would like to enable alert status syncing in your environment, please [contact support](/support/how-to-reach-us.md).

#### Object Mappings

| Workbench Object | Syncing Key         | Cortex XDR Object |
| ---------------- | ------------------- | ----------------- |
| Expel Alert      | Cortex XDR alert ID | Alert             |
| Expel Alert      | Cortex XDR alert ID | Incident          |
| Investigation    | N/A                 | N/A               |
| Incident         | N/A                 | N/A               |

#### State Mappings

| Expel Alert State or Action              | Cortex Console Update                                             |
| ---------------------------------------- | ----------------------------------------------------------------- |
| ***Investigating States***               |                                                                   |
| Assigned to Analyst                      | UNDER\_INVESTIGATION                                              |
| Moved to Investigating                   | UNDER\_INVESTIGATION                                              |
| Added to Investigation                   | UNDER\_INVESTIGATION                                              |
| Add or move Expel Alert to Open Incident | UNDER\_INVESTIGATION (as long as Workbench Incident remains open) |
| Reopen Closed Expel Alert                | UNDER\_INVESTIGATION                                              |
| ***Closed States***                      |                                                                   |
| Closed / PUP/PUA                         | RESOLVED\_OTHER                                                   |
| Closed / Possible Policy Violation       | RESOLVED\_OTHER                                                   |
| Closed / Testing                         | RESOLVED\_SECURITY\_TESTING                                       |
| Closed / Activity Blocked                | RESOLVED\_OTHER                                                   |
| Closed / Attack Failed                   | RESOLVED\_OTHER                                                   |
| Closed / IT misconfiguration             | RESOLVED\_OTHER                                                   |
| Closed / Benign                          | RESOLVED\_OTHER                                                   |
| Closed / Suppressed by Ruxie             | RESOLVED\_OTHER                                                   |
| Move Expel Alert to Closed Incident      | RESOLVED\_TRUE\_POSITIVE                                          |
| Move Alert to Closed Investigation       | Match close reason mapping above                                  |
| Move Alert to Closed Incident            | RESOLVED\_TRUE\_POSITIVE                                          |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.expel.io/connect-your-technology/l-p-integrations/palo-alto-networks/palo-alto-networks-cortex-xdr-pro-setup-for-workbench.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
