# Step-by-step deployment guide

## Step-by-step deployment guide

### 1. Which data is imported from ADP?

The integration with ADP imports the following data per Worker:

<table><thead><tr><th width="294.396484375">Attribute</th></tr></thead><tbody><tr><td>Object ID</td></tr><tr><td>Personnel Number</td></tr><tr><td>First Name</td></tr><tr><td>Last Name</td></tr><tr><td>Formatted Name</td></tr><tr><td>Email</td></tr><tr><td>Organizational Unit</td></tr><tr><td>Employment Subgroup</td></tr><tr><td>Cost Center</td></tr><tr><td>Cost Center Name</td></tr><tr><td>External</td></tr><tr><td>Start Date</td></tr><tr><td>End Date</td></tr><tr><td>Management Position</td></tr><tr><td>Manager Name</td></tr><tr><td>Job Title</td></tr><tr><td>Position</td></tr><tr><td>Position ID</td></tr><tr><td>Status</td></tr><tr><td>Worker Type Name</td></tr><tr><td>Worker Type Code</td></tr></tbody></table>

The connector calls the ADP Workers API (`/hr/v2/workers`) and pages through every worker. For each worker it picks the most relevant work assignment (the most recent active assignment, or the most recently terminated one if no active assignment exists) and maps the attributes above.

### 2. Request API access from ADP

The connector authenticates against ADP using the **OAuth 2.0 client credentials flow combined with mutual TLS** (see ADP's [Introduction to Mutual SSL](https://developers.adp.com/articles/general/introduction-mutual-ssl) for background). The certificate and private key are required because ADP only accepts API calls that present a valid client certificate during the TLS handshake. Without them the connector cannot obtain an access token.&#x20;

You generate the key pair and the matching Certificate Signing Request (CSR) yourself, then submit only the CSR to ADP for signing. See [Generating a Certificate Signing Request](https://developers.adp.com/articles/general/generate-a-certificate-signing-request) for the step-by-step process to follow.

In the end you should have the following configuration values:

* A `client_id`
* A `client_secret`
* A client certificate (e.g. a `.pem` or `.crt` file)
* The matching private key (e.g. a`.pem` or `.key` file)

> **Tip:** Before continuing, you can confirm your `client_id`, `client_secret`, certificate and private key actually work by making a quick test call with Postman. ADP's [Making your first API call using Postman](https://developers.adp.com/learn/how-to-articles/make-your-first-api-call-using-postman-1) walks through this. If Postman can fetch a token, the connector will too.

### 3. Configure the source in Elimity Insights

You can now register the connector in Elimity Insights:

1. Go to **Sources** in the left navigation bar and click **Add Source**.
2. Search for **Custom** and click **Set Up**.
3. Click **Set Up** again and give the source a name (e.g. `ADP`).
4. Select **Upload export file**, click **Continue** and upload the data model file: `monuta-adp-data-model.json`.

{% file src="/files/vCUR5kNuWMsejh2lVz71" %}

5. Open the **Config** tab and click **Edit**.
6. Check the **Enable automatic imports via custom gateway** and fill in the Gateway URL: `https://adp-gateway-1027270379075.europe-west1.run.app`
7. Click **Add configuration value** and add the four entries below.

| Key               | Type          |
| ----------------- | ------------- |
| `adpClientId`     | `Text`        |
| `adpClientSecret` | `Password`    |
| `adpKey`          | `Secret file` |
| `adpCert`         | `Secret file` |

All four keys are required. If any of them is missing or incorrect, the connector will fail to authenticate against ADP and the import will not start.&#x20;

8. Click **Save and run** to launch your first import. You can monitor the progress in the **Logs** tab, and the **Imports** tab will show the summary for each run.


---

# 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.elimity.com/adp-hr/step-by-step-deployment-guide.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.
