HoorayHR logoOkta logo

Identity and access management

HoorayHR to Okta integration: HoorayHR as HR source for Okta users and groups

With an integration between HoorayHR and Okta, every employee from HoorayHR becomes an Okta user with job title, entity, contract type and the teams as groups, so Okta assigns the right apps. After the end date of the employment in HoorayHR Okta deactivates the user, and BSN, bank details and private address never reach Okta.

What the integration does

Organisations that do HR in HoorayHR and use Okta as their access layer now create Okta users by hand based on a Teams notification or an email. A team change in HoorayHR changes nothing about the apps in Okta, and an intern gets the same access as a permanent employee.

  1. An admin in HoorayHR creates an API key with read scopes only; Okta gets a custom HR source with a service app for KoppelHet.
  2. Every round KoppelHet reads all employees, contracts, teams and entities and drops sensitive fields immediately.
  3. KoppelHet compares the list with the previous state and puts only new and changed employees, groups and memberships into one Okta session.
  4. Okta creates or updates the users and assigns apps through the groups.
  5. After the end date KoppelHet delivers the employee as a deletion, and Okta deactivates the user.
HoorayHR → KoppelHet → OktaSOURCEHoorayHRTARGETOktaKoppelHetmapping · logging · monitoringHoorayHR → KoppelHet → OktaSOURCEHoorayHRTARGETOktaKoppelHetmapping · logging · monitoring
Out: Okta user from a custom HR source · Group per team and per multi-select field · Contract type and start date as text attributes · Deactivating after the end date

What to watch for with HoorayHR and Okta

  • KoppelHet uses the entry point Okta offers for a custom HR source, Anything-as-a-Source. HoorayHR then becomes the source in Okta for who works there.
  • HoorayHR only lets you filter employees by ID, not by change date, and Okta only accepts changes for a custom HR source. KoppelHet therefore reads the full list every round, compares it with the previous state and delivers only the differences to Okta, in one session.
  • A HoorayHR API key works with the rights of the admin who created it, and an admin sees BSN, bank account number and private address. KoppelHet discards those fields as soon as they arrive, so they do not end up in logs or in Okta.
  • Teams are stored in HoorayHR as a list on the employee, but Okta only accepts plain text from a custom HR source, no lists. KoppelHet makes each team an Okta group with memberships, and only puts the team you designate as department into the department field.
  • Extra fields in HoorayHR can be selection lists with several values, and they only come along when the integration asks for them separately. KoppelHet puts a single-value field as a text attribute in Okta and turns a multi-select field into groups, so custom fields can also drive access.
  • A contract in HoorayHR is fixed-term, permanent or internship, with the status future, active or inactive. KoppelHet puts the contract type as text in Okta, so an intern gets other apps through a group rule, and already delivers an employee with only a future contract along with their start date.
  • HoorayHR can hide users from non-admins and has an archived status. KoppelHet agrees whether hidden users go to Okta, and treats an archived employee without an end date as a signal for HR instead of deactivating them in Okta straight away.

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

What happens when the API key expires?

The expiry date is fixed at creation. KoppelHet warns well in advance, so an admin creates a new key.

Does the Okta address go back to HoorayHR?

No. HoorayHR's API cannot update an existing employee.

Technical details for IT

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

  • HoorayHR through api.hoorayhr.io with a personal API key (pk_…, admin role, scopes and expiry date not editable afterwards) as Bearer token: GET /users (filter only on id; fields id, employeeNumber, firstName, nickName, formattedLastName, email, jobTitle, entityId, teams, status 0 to 3, isHidden, companyStartDate, companyEndDate; extraFields only with includeExtraFields), /contracts (type, status ACTIVE/FUTURE/INACTIVE), /teams-information and /entities. A 403 for an inactive subscription stops the round.
  • Okta through the Identity Sources API (Custom Identity Source) with a service app: sessions (one at a time per source, expire after 24 hours of inactivity, INCREMENTAL only), bulk upsert with externalId and text attributes only (200 per request, 50 requests per session), groups and memberships separately, bulk delete deactivates the user.

Which fields are transferred

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

Field in HoorayHRField in OktaNotes
id (HoorayHR)externalIdFixed and immutable
employeeNumberemployeeNumber
nickName of firstNamefirstName
formattedLastNamelastName
Naamgevingsregel of emailemail en loginNever emailPrivate
jobTitletitle
entityId (naam uit entities)organization
teamsGroep per team
Contracttype (1, 2 of 3)userType
companyStartDateEigen attribuut startdatum (tekst)
companyEndDateUit de HR-bron (deactiveren)

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.