# Coupa Contingent Workforce

### Overview

The Veza integration for Coupa Contingent Workforce (CCW) connects to a single CCW environment to discover and map contingent worker identities and relationships. The integration provides visibility into your organization's contingent workforce alongside regular employees.

The integration supports:

* Discovery of contingent workers with detailed attributes
* Mapping of organizational structures (Account Segments, Cost Centers, Departments)
* Visualization of reporting relationships between contingent workers and hiring managers
* Support for Veza Lifecycle Management by ingesting workforce data

### Requirements

#### Prerequisites

* Coupa CCW environment
* User account with Customer Integration Admin privileges
* Network [connectivity](/4yItIzMvkpAvMVFAamTf/integrations/connectivity.md) from Veza to your Coupa CCW instance

#### Permissions

The integration requires an API consumer application with the following scope:

* `ccw.contingent_workers`

### Configuring Coupa Contingent Workforce

Veza collects information from Coupa CCW by executing REST API calls to interact with the Coupa CCW instance.\
Before adding the integration to Veza, create an API consumer application on the Coupa CCW platform for the connection.

1. Log into the Coupa CCW platform as a user with Customer Integration Admin privileges.
2. Navigate to **Integration Toolkit -> API Consumer Apps** and click **Create**.
3. Provide the following information to create an API app:
   1. **Application Name**: Enter a name that identifies the API app
   2. **Application Description**: Describe what the app is used for
   3. **Contact First/Last/Email Address**: The technical contact responsible for the application
   4. **Application Type**: Select **Machine to Machine** (Only OpenId Connect apps that require faceless Machine to Machine integrations with Client Credential grant types are supported)
   5. **Application Category**: Partner
   6. **Active**: Check this to enable the application
   7. **Credential Type**: Shared Secret
   8. **Client ID**: This field is autogenerated; copy its value for later use
   9. **API User**: Choose a pre-defined API user
   10. **Scopes**: `ccw.contingent_workers`
4. Click **Save** and record the Client Secret displayed in the green flash message banner

> **Note:** The client secret is only displayed once. Be sure to copy it somewhere secure immediately.

### Configuring Coupa Contingent Workforce on the Veza Platform

To enable Veza to gather contingent workforce metadata:

1. Log into Veza as an administrator.
2. Navigate to the **Integrations** page.
3. Click **Add New** and select **CoupaCCW** as the type of integration to add.
4. Enter the required information:
   1. **Url**: The URL of your Coupa CCW instance (e.g., `https://yourcompany.coupacloud.com`)
   2. **Client ID**: The API consumer app client ID recorded earlier
   3. **Client Secret**: The API consumer app client secret recorded earlier
   4. **Is Staging**: Check this if the Coupa CCW tenant is non-production
5. Click **Save** to create the integration.

### Verifying Integration Status

After configuring the integration:

1. Navigate to the **Integrations** page in Veza.
2. Locate the Coupa CCW integration in the list.
3. Check the **Status** column to confirm the integration is connected.
4. Click on the integration to view detailed extraction status on the **Data Sources** tab.
5. After a successful extraction, check the **Integration Overview** to verify that contingent worker data appears in Veza Graph as expected.

## Enable Lifecycle Management

Coupa CCW can serve as a source of identity information for Veza [Lifecycle Management](/4yItIzMvkpAvMVFAamTf/features/lifecycle-management.md). As an authoritative system for contingent worker data, Coupa CCW provides identity details that can be synchronized to target applications based on employment status, organizational assignments, and contract details.

When enabled for Lifecycle Management, Coupa CCW supports:

* **Identity synchronization** to downstream systems based on contingent worker attributes
* **Organizational mapping** using Account Segments, Cost Centers, and Departments for access decisions
* **Status-based provisioning** triggered by employment status changes (active, terminated)
* **Manager relationships** for approval workflows and access reviews

No additional permissions beyond the basic `ccw.contingent_workers` scope are required for Lifecycle Management functionality.

To enable Lifecycle Management for your Coupa CCW integration, check the **Enable usage for Lifecycle Management** box in the Veza integration configuration. For detailed information about supported capabilities and workflow examples, see the [Coupa CCW Lifecycle Management guide](/4yItIzMvkpAvMVFAamTf/integrations/integrations/coupa-ccw/provisioning.md).

| Configuration Option                  | Description                                                                                                                     |
| ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| Enable Usage for Lifecycle Management | Toggle to enable [Lifecycle Management](/4yItIzMvkpAvMVFAamTf/integrations/integrations/coupa-ccw/provisioning.md) capabilities |

### Technical Notes

#### Authentication

The Veza integration for Coupa CCW uses OAuth2 to authenticate to the Coupa instance.

Staging/non-production instances employ a separate authentication endpoint from production instances.

If your Coupa CCW instance is a non-production instance, be sure to select **Is Staging** when configuring the integration to ensure that the proper authentication endpoint is used.

#### Data Synchronization

Data from Coupa CCW is synchronized on a scheduled basis. The integration performs an initial full extraction when first configured, followed by incremental updates based on your Veza platform's configured [sync schedule](/4yItIzMvkpAvMVFAamTf/integrations/configuration/extraction.md).

### Supported Entities and Attributes

The Veza integration for Coupa CCW discovers the following entities and attributes:

#### Contingent Employee

| Attribute          | Notes                                                                          |
| ------------------ | ------------------------------------------------------------------------------ |
| Account            | The employee is added to group(s) that represent the assigned account segments |
| Cost Center        | The employee is added to a group that represents the cost center               |
| Department         | The employee is added to a group that represents the department                |
| Email              | The employee's email address                                                   |
| EmployeeId         | `EmployeeNumber` on the Veza platform                                          |
| Employment Status  | `ACTIVE` or `TERMINATED`                                                       |
| Employment Type    | `CONTRACT`                                                                     |
| First Name         | The employee's first name                                                      |
| ID                 | The Coupa `EmployeeId`                                                         |
| IsActive           | Set true if the employee is marked active on the Coupa platform                |
| Job Title          | The Job title listed in the employee's current contract                        |
| Manager            | A relationship is created between the contingent worker and the hiring manager |
| Name               | The employee's first and last names, joined with a space                       |
| Site Location Code | The site location code of the employee's current contract                      |
| StartDate          | The employee's start date                                                      |
| Supplier Email     | The email address of the supplier contact on the employee's current contract   |
| TerminationDate    | The employee's termination date                                                |

#### Account Segment / Cost Center / Department

Account Segments, Cost Centers, and Departments are represented as groups on the Veza platform to which contingent workers can be assigned.\
This allows for powerful querying and easy visualization in the Veza Access Graph.

The Veza integration discovers the following attributes for these groups:

| Attribute | Notes                                             |
| --------- | ------------------------------------------------- |
| Code      | The numeric code of the entity                    |
| Name      | The name of the entity                            |
| Type      | `Account Segment`, `Cost Center`, or `Department` |

#### Hiring Manager

Hiring managers are represented as Full Time employees on the Veza platform to which contingent workers can be associated.

The Veza integration discovers the following attributes for these employees:

| Attribute         | Notes                                                           |
| ----------------- | --------------------------------------------------------------- |
| Email             | The employee's email address                                    |
| EmployeeNumber    | The `HiringManagerUserName` value                               |
| Employment Status | `Unavailable`                                                   |
| Employment Type   | `FULL_TIME`                                                     |
| First Name        | The employee's first name                                       |
| ID                | The `HiringManagerUserName` value                               |
| IsActive          | Set true if the employee is marked active on the Coupa platform |
| Name              | The employee's first and last names, joined with a space        |


---

# 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/coupa-ccw.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.
