# Concur

### Overview

Concur is an enterprise-level expense management platform that automates expense reports, approvals, and payments. The integration facilitates data exchange between Veza and Concur, for user and role discovery.

### Configuring Concur

#### Pre-requisites

Before configuring Concur, you must create a new integration application within Concur and generate OAuth 2.0 credentials. Follow these steps:

1. Navigate to the [OAuth 2.0 Application Management screen](https://www.concursolutions.com/nui/ocstool) in Concur and create a new app.
   * Provide a name and description for the app.
2. Add allowed grants:
   * `refresh_token`, `password`
3. Add allowed scopes:
   * `openid`, `identity.user.core.read`, `identity.user.enterprise.read`, `identity.user.ids.read`, `identity.company.core.read`, `spend.user.general.read`, `identity.user.coresensitive.read`.
4. Submit and note down the Client ID and Client Secret values.
5. Go to the [Company Request Token](https://www.concursolutions.com/nui/authadmin/companytokens) page. Enter the app ID and click submit.
6. Note the Company UUID and Request Token. You will exchange the temporary token for a refresh token prior to configuring the integration in Veza.

#### Generating a Refresh Token

Use the `curl` command to obtain a refresh token. This command must be run within 24 hours of generating the request token.

Replace placeholders with the actual Client ID, Client Secret, Company UUID, and Request Token:

```shell
# Replace placeholders with actual values
curl --location 'https://us.api.concursolutions.com/oauth2/v0/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_id=YOUR_CLIENT_ID' \
--data-urlencode 'client_secret=YOUR_CLIENT_SECRET' \
--data-urlencode 'grant_type=password' \
--data-urlencode 'username=YOUR_COMPANY_UUID' \
--data-urlencode 'password=YOUR_REQUEST_TOKEN' \
--data-urlencode 'credtype=authtoken'
```

From the response, collect the `refresh_token` value, and use it to configure the integration in Veza.

### Configuring Concur in Veza

1. In Veza, open the **Integrations** page.
2. Click *Add New* and pick Concur as the type of integration to add
3. Enter the Client ID, Client Secret, and Refresh Token, then *Save* the configuration

| Field         | Notes                             |
| ------------- | --------------------------------- |
| Client ID     | Obtained from Concur app settings |
| Client Secret | Obtained from Concur app settings |
| Refresh Token | Obtained using `curl` command     |

### Supported Entities and Properties

#### Concur User

A user account within the Concur system, typically for submitting, managing, and reporting business expenses. The connector supports user attributes:

* `is_active`: True if User is active on Concur
* `cost_center`: User’s cost center
* `employee_number`: User’s employee number if set in Concur
* `start_date`: User’s start date
* `termination_date`: User’s termination date
* `email`: User's email address

#### Concur Role

Concur Roles determine what level of access and abilities a user has within the system. Built-in roles include approver, processor, or administrator.

The Concur connector currently discovers user roles for:

* Base Concur application
* Concur Spend integration


---

# Agent Instructions: 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:

```
GET https://docs.veza.com/4yItIzMvkpAvMVFAamTf/integrations/integrations/concur.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
