ADP iHCM logoJumpCloud logo

Identity and access management

ADP iHCM to JumpCloud integration: employees from iHCM as JumpCloud users, suspended on departure

With an integration between ADP iHCM and JumpCloud, every employee from iHCM arrives as a JumpCloud user, with job title, department, cost centre and manager, and is suspended once they have left in iHCM. KoppelHet sets up the import on the workerID and the status values of iHCM, or supplies its own list where that fits better.

What the integration does

Organisations that use ADP iHCM for their European employees and JumpCloud for accounts and devices want the accounts to follow the HR system. An import on the associateOID misses employees who do not have one, and a state rule on the wrong values does not suspend leavers.

  1. With ADP we arrange API access for iHCM, with client ID, secret and certificate, and enable the Worker API in the Consumer Application Registry.
  2. Beforehand KoppelHet tests with your data whether every employee has an associateOID and which status values occur.
  3. If that holds, we set up JumpCloud's Custom API import with a state rule on the iHCM values; if not, JumpCloud reads a list from KoppelHet.
  4. After a trial run with the preview we switch on the scheduled import.
  5. KoppelHet monitors the certificate, which expires after two years, and the last successful import.
ADP iHCM → KoppelHet → JumpCloudSOURCEADP iHCMTARGETJumpCloudKoppelHetmapping · logging · monitoringADP iHCM → KoppelHet → JumpCloudSOURCEADP iHCMTARGETJumpCloudKoppelHetmapping · logging · monitoring
Out: User with the workerID as key · Job title, department, cost centre and company · Manager ('Reports to') · State activated or suspended

What to watch for with ADP iHCM and JumpCloud

  • ADP writes in the iHCM guide that not every employee in iHCM has an associateOID. KoppelHet therefore uses the workerID as the unique key in the import, so no employee silently drops out of the import.
  • A state rule on Terminated, Retired or Deceased suspends those users and activates everyone else. The iHCM guide uses the value current for active employees. KoppelHet builds the rule on the values that occur in your iHCM, so a leaver really is suspended.
  • The import requests ADP in pages of fifty with $top and $skip, and reads the total from meta.totalNumber. iHCM allows at most one hundred per call and signals the end with an empty response. ADP does not describe whether iHCM returns that total; if it does not, we set the total in JumpCloud to not available.
  • In iHCM an employee can have a 'Reports to' and a supervisor, and ADP sends leave requests to 'Reports to'. KoppelHet maps 'Reports to' as manager; JumpCloud only fills that field once the manager already exists as a user.
  • For the import JumpCloud needs a client ID and secret from the ADP API package plus a certificate for mutual TLS, valid for two years. If the certificate expires, the import stops. KoppelHet puts the expiry date in monitoring and requests a new certificate in time.
  • Filtering on work assignment is not possible in the iHCM Worker API, so not on country either. If not all iHCM countries belong in this JumpCloud environment, KoppelHet supplies its own list with only the right countries, which JumpCloud reads with the same Custom API import.

This integration is also part of joiner, mover, leaver.

How we build and run it

  • The integration runs on the KoppelHet platform, hosted in a data centre in the EU.
  • Every sync and every error is visible in the functional log; on an error your administrator is notified.
  • A change that cannot go through is not half-applied but queued for another attempt.
  • KoppelHet is ISO 27001 certified. Data travels encrypted and stays on the platform no longer than needed.
  • After go-live we manage the integration and adjust it when your process changes.
  • The integration fits next to your existing integration layer. Only the fields in the design are transferred; the platform keeps no register of its own.

Implementation, architecture and compliance

Implementation and price

This is not an app you switch on. We build the integration for your organisation on our platform, with building blocks we reuse on every project. So it is custom work that does not start from scratch.

A consultant prepares the intake and analyses both systems. We then record the mapping and exceptions field by field, test in the test or acceptance environment and go live at a moment you choose. Costs are a one-off amount for the setup and a monthly amount for platform, monitoring and support.

Price indication · Basic

Leave your work email and you see the price indication right away.

We only use your address to follow up on your question about this integration.

Frequently asked questions

Is a leaver deleted from JumpCloud?

No, the state rule suspends them. Deleting remains IT's choice.

What if the ADP certificate expires?

Then the import stops. KoppelHet monitors the expiry date and requests a new certificate in time.

Technical details for IT

For those who want to know how it works under the hood: APIs, fields and sources used.

  • JumpCloud Custom API import: Base URL https://api.adp.com/hr/v2, token URL https://accounts.adp.com/auth/oauth/v2/token, OAuth 2.0 Client Credentials, mutual TLS with certificate and private key (PEM), endpoint /workers?count=true, Resource Location workers, offset pagination $top 50 and $skip from 0, total through meta.totalNumber; Unique ID workerID; State through manageUserState on workerStatus.statusCode.codeValue.
  • ADP iHCM Worker Management API: GET /hr/v2/workers with $top (default and maximum 100, an error above that) and $skip, empty response at the end; per person on associateOID or, without associateOID, on workerID; filter workerStatus/statusCode/codeValue eq 'current'; no filters on WorkAssignment; access through the Consumer Application Registry (CAR).

Which fields are transferred

The key fields. The full mapping is agreed per customer.

Field in ADP iHCMField in JumpCloudNotes
workerID (idValue)Unique ID en employeeIdentifierInstead of associateOID
person.legalNamefirstname, lastname
businessCommunication.emailCompany email en Username
workAssignments (primair): jobTitlejobTitle
workAssignments (primair): homeOrganizationalUnitsdepartment
assignmentCostCenterscostCenter
reportsTo ('Reports to')manager
workerStatus.statusCode.codeValueState via manageUserState

Related

Which systems do you want to connect?

Tell us which systems you use and what should happen automatically. Together we define the smallest working solution, with a clear design and a quote before building.