> ## Documentation Index
> Fetch the complete documentation index at: https://www.c1.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Set up an ADP Workforce Now connector

> C1 provides identity governance for ADP Workforce Now. Integrate your ADP Workforce Now instance with C1 for unified visibility and governance over user access.

## Availability

This connector requires **ADP API Central**. You cannot use this connector successfully if the ADP API Central add-on is not part of your ADP Workforce Now plan.

## Capabilities

The ADP Workforce Now connector syncs the following resources:

| Resource | Sync                                                          | Provision |
| :------- | :------------------------------------------------------------ | :-------- |
| Worker   | <Icon icon="square-check" iconType="solid" color="#c937ae" /> |           |

*ADP Workforce Now has internal portal security roles (Security Administrator, User Master, etc.), but the ADP API does not expose security role assignments. These roles are managed exclusively through the ADP portal UI and cannot be synced.*

## Worker profile fields

Each synced worker is exposed as a user resource. The following keys are written to the user profile when the corresponding ADP field is populated. Empty values are omitted.

| Profile key             | ADP source                                                                 | Notes                                                                                                                                                                                                                                                                                   |
| :---------------------- | :------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `associate_oid`         | `worker.associateOID`                                                      | Always set. Also used as the user's `ExternalID`.                                                                                                                                                                                                                                       |
| `worker_id`             | `worker.workerID.idValue`                                                  | The displayed worker number.                                                                                                                                                                                                                                                            |
| `original_hire_date`    | `worker.workerDates.originalHireDate`                                      |                                                                                                                                                                                                                                                                                         |
| `adjusted_service_date` | `worker.workerDates.adjustedServiceDate`                                   |                                                                                                                                                                                                                                                                                         |
| `raw_status`            | `worker.workerStatus.statusCode.codeValue`                                 | Literal status (`Active`, `Inactive`, `Terminated`). The SDK enabled/disabled mapping collapses `Inactive` and `Terminated` together; this field preserves the distinction.                                                                                                             |
| `reports_to_worker_id`  | `workAssignments[<active>].reportsTo[0].workerID.idValue`                  | Manager's worker number.                                                                                                                                                                                                                                                                |
| `manager_id`            | `workAssignments[<active>].reportsTo[0].associateOID`                      | Manager's ADP `associateOID`. C1's directory manager mapper resolves this against the manager user's `ExternalID`, so the manager relationship is automatically populated in the C1 user graph. Both this field and `reports_to_worker_id` are derived from the same `reportsTo` entry. |
| `job_title`             | `workAssignments[<active>].jobTitle`                                       |                                                                                                                                                                                                                                                                                         |
| `department`            | `workAssignments[<active>].homeOrganizationalUnits[<Department>].nameCode` |                                                                                                                                                                                                                                                                                         |
| `location`              | `workAssignments[<active>].homeWorkLocation.nameCode`                      | Assigned work location. Prefers `shortName`, falls back to `codeValue`.                                                                                                                                                                                                                 |

When a worker has multiple work assignments, fields drawn from `workAssignments[]` come from the first non-terminated assignment, falling back to any assignment if all are terminated.

## Gather ADP Workforce Now credentials

<Warning>
  To configure the ADP Workforce Now connector, you need administrator permissions in ADP Workforce Now.
</Warning>

<Steps>
  <Step>
    Navigate to the ADP Marketplace Developer portal and register your application.
  </Step>

  <Step>
    Obtain your OAuth2 client credentials:

    1. Copy the **Client ID** and **Client Secret**
    2. Download the **SSL client certificate** (PEM-encoded `.pem` or `.crt` file)
    3. Download the **SSL private key** (PEM-encoded `.pem` or `.key` file)
    4. Save these credentials securely — ADP requires mTLS authentication
  </Step>
</Steps>

## Configure the ADP Workforce Now connector

<Tabs>
  <Tab title="Cloud-hosted">
    Follow these instructions to use a built-in, no-code connector hosted by C1.

    <Steps>
      <Step>
        In C1, navigate to **Integrations** > **Connectors** and click **Add connector**.
      </Step>

      <Step>
        Search for **ADP Workforce Now** and click **Add**.
      </Step>

      <Step>
        Choose how to set up the new ADP Workforce Now connector:

        * Add the connector to a currently unmanaged app
        * Add the connector to a managed app
        * Create a new managed app
      </Step>

      <Step>
        Set the owner for this connector.
      </Step>

      <Step>
        Click **Next**.
      </Step>

      <Step>
        Find the **Settings** area of the page and click **Edit**.
      </Step>

      <Step>
        Enter the required configuration:

        * **Client ID** (`adp-workforce-now-client-id`): Your ADP OAuth2 client ID
        * **Client Secret** (`adp-workforce-now-client-secret`): Your ADP OAuth2 client secret
        * **SSL Certificate** (`adp-workforce-now-ssl-cert`): PEM-encoded SSL client certificate for mTLS
        * **SSL Key** (`adp-workforce-now-ssl-key`): PEM-encoded SSL client private key for mTLS
        * **Base URL** (`adp-workforce-now-base-url`): The ADP API base URL (default: `https://api.adp.com`)
      </Step>

      <Step>
        Click **Save**.
      </Step>

      <Step>
        The connector's label changes to **Syncing**, followed by **Connected**. You can view the logs to ensure that information is syncing.
      </Step>
    </Steps>

    **Done.** Your ADP Workforce Now connector is now pulling access data into C1.
  </Tab>

  <Tab title="Self-hosted">
    Follow these instructions to use the [ADP Workforce Now](https://dist.conductorone.com/ConductorOne/baton-adp-workforce-now) connector, hosted and run in your own environment.

    When running in service mode on Kubernetes, a self-hosted connector maintains an ongoing connection with C1, automatically syncing and uploading data at regular intervals.

    ### Step 1: Set up a new ADP Workforce Now connector

    <Steps>
      <Step>
        In C1, navigate to **Integrations** > **Connectors** > **Add connector**.
      </Step>

      <Step>
        Search for **Baton** and click **Add**.
      </Step>

      <Step>
        Choose how to set up the new ADP Workforce Now connector:

        * Add the connector to a currently unmanaged app
        * Add the connector to a managed app
        * Create a new managed app
      </Step>

      <Step>
        Set the owner for this connector.
      </Step>

      <Step>
        Click **Next**.
      </Step>

      <Step>
        In the **Settings** area of the page, click **Edit**.
      </Step>

      <Step>
        Click **Rotate** to generate a new Client ID and Secret.

        Carefully copy and save these credentials.
      </Step>
    </Steps>

    ### Step 2: Create Kubernetes configuration files

    Create two Kubernetes manifest files for your ADP Workforce Now connector deployment:

    #### Secrets configuration

    ```yaml expandable theme={"theme":{"light":"css-variables","dark":"css-variables"}}
    # baton-adp-workforce-now-secrets.yaml
    apiVersion: v1
    kind: Secret
    metadata:
      name: baton-adp-workforce-now-secrets
    type: Opaque
    stringData:
      # C1 credentials
      BATON_CLIENT_ID: <C1 client ID>
      BATON_CLIENT_SECRET: <C1 client secret>

      # ADP Workforce Now credentials
      BATON_ADP_WORKFORCE_NOW_CLIENT_ID: <ADP OAuth2 client ID>
      BATON_ADP_WORKFORCE_NOW_CLIENT_SECRET: <ADP OAuth2 client secret>
      BATON_ADP_WORKFORCE_NOW_SSL_CERT: <path to PEM SSL client certificate>
      BATON_ADP_WORKFORCE_NOW_SSL_KEY: <path to PEM SSL private key>
    ```

    See the connector's README or run `--help` to see all available configuration flags and environment variables.

    #### Deployment configuration

    ```yaml expandable theme={"theme":{"light":"css-variables","dark":"css-variables"}}
    # baton-adp-workforce-now.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: baton-adp-workforce-now
      labels:
        app: baton-adp-workforce-now
    spec:
      selector:
        matchLabels:
          app: baton-adp-workforce-now
      template:
        metadata:
          labels:
            app: baton-adp-workforce-now
            baton: "true"
            baton-app: adp-workforce-now
        spec:
          containers:
          - name: baton-adp-workforce-now
            image: public.ecr.aws/conductorone/baton-adp-workforce-now:latest
            imagePullPolicy: IfNotPresent
            env:
            - name: BATON_HOST_ID
              value: baton-adp-workforce-now
            envFrom:
            - secretRef:
                name: baton-adp-workforce-now-secrets
    ```

    ### Step 3: Deploy the connector

    <Steps>
      <Step>
        Create a namespace in which to run C1 connectors (if desired), then apply the secret config and deployment config files.
      </Step>

      <Step>
        Check that the connector data uploaded correctly. In C1, click **Applications**. On the **Managed apps** tab, locate and click the name of the application you added the ADP Workforce Now connector to. ADP Workforce Now data should be found on the **Entitlements** and **Accounts** tabs.
      </Step>
    </Steps>

    **Done.** Your ADP Workforce Now connector is now pulling access data into C1.
  </Tab>
</Tabs>

***

<Tip>
  All versions of this connector are available at [dist.conductorone.com](https://dist.conductorone.com/ConductorOne/baton-adp-workforce-now).
</Tip>
