Nedap ONS logoPing Identity logo

Identity and access management

Nedap ONS to PingOne integration: care staff and teams as users and groups

With an integration between Nedap ONS and Ping Identity (PingOne), every care employee from ONS gets a user in PingOne, in the right population and in groups per team and expertise. When the last contract in ONS ends, KoppelHet disables the user in PingOne, so sign-in to the care applications stops.

What the integration does

Organisations that have Nedap ONS as the source for their care staff and PingOne as the access layer often create users and groups in PingOne by hand. As an HR source PingOne itself only reads a few large HR systems, and ONS is not one of them.

  1. The care organisation requests the integration through the Ons API Dashboard; Nedap reviews the request.
  2. At the start KoppelHet creates a population for own staff and one for externals in PingOne, with groups per team and expertise.
  3. A notification from ONS makes KoppelHet fetch the current record and create or update the user in PingOne.
  4. When a team assignment starts or ends, KoppelHet adjusts the membership of the team group on that date.
  5. After the last contract KoppelHet disables the user; deletion only follows after the retention period you choose.
Nedap ONS → KoppelHet → Ping IdentitySOURCENedap ONSTARGETPing IdentityKoppelHetmapping · logging · monitoringNedap ONS → KoppelHet → Ping IdentitySOURCENedap ONSTARGETPing IdentityKoppelHetmapping · logging · monitoring
Out: PingOne user per care employee · Population for own staff and externals · Group per team and per expertise · Disabling after the last contract

What to watch for with Nedap ONS and Ping Identity

  • PingOne's SCIM entry point has no endpoint for groups; a request to it returns 501. Teams and expertise from ONS therefore go through the regular PingOne API, and only the users themselves through SCIM.
  • A list from PingOne's SCIM entry point returns at most 200 users and has no next page. With hundreds of care employees KoppelHet therefore cannot compare PingOne with ONS as a list. KoppelHet looks up each employee directly and keeps its own record of which users come from ONS.
  • Every user in PingOne belongs to exactly one population. ONS distinguishes own employees from externals; KoppelHet puts each group in its own population, so a stricter sign-in policy can apply to flex workers and freelancers.
  • A notification from ONS only carries an id and does not always arrive in order. KoppelHet fetches the current record on every notification, so PingOne never gets a change for an employee who does not exist yet.
  • The username in PingOne follows the birth name from ONS. If someone uses a different surname after marriage, only the display name changes and the sign-in name for the care applications stays the same.
  • A team assignment in ONS has an end date. KoppelHet removes the employee from the team group in PingOne on that day, even if the contract continues, so a relief worker no longer has access to that team's applications after their period.
  • ONS does not retry a missed notification itself and keeps it for 24 hours. KoppelHet's nightly comparison catches what was not processed in that time, so a leaver does not stay active in PingOne.

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

Can PingOne read Nedap ONS as an HR source itself?

No, not that we have found. KoppelHet delivers the ONS data through PingOne's SCIM and platform APIs.

Can PingOne then create accounts in care applications?

Yes, with PingOne's outbound provisioning, based on the groups KoppelHet fills.

Does client data go to PingOne?

No. The integration only reads employees, contracts and their assignments.

Technical details for IT

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

  • Nedap ONS through the Ons API with webhooks (metadata with id only, HMAC-SHA512 in X-Signature-SHA512, 200 within 3 seconds, no automatic retry, kept for 24 hours) and /v0/xstream/api/employees/data for the complete picture. Client certificate signed by Nedap.
  • PingOne SCIM 2.0 (/v2/Users) for users, with userName required, population.id in the PingOne extension and active for enabled or disabled; no paging, at most 200 results, no sortBy or startIndex; /v2/Groups and /v2/Bulk return 501. Groups and memberships through the PingOne Platform API (groups and group memberships).

Which fields are transferred

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

Field in Nedap ONSField in Ping IdentityNotes
identificationNoexternalId
birthName en birthNamePrefixuserNameRequired in PingOne; follows the birth name
Roepnaam en achternaam volgens naamgebruikname.givenName en name.familyName
type (0 Regular, 1 External)population.idPopulation for own staff or externals
TeamAssignment (team, begin, einde)Lidmaatschap teamgroep
ExpertiseProfileAssignmentLidmaatschap deskundigheidsgroep
Einde laatste contractactive = false

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.