Visma Peple logoOkta logo

Identity and access management

Visma Peple to Okta integration: employees and substitutes from Peple as the HR source for Okta

With an integration between Visma Peple and Okta, every employee from Peple becomes an Okta user, with organisational unit, job and manager, and a substitute only gets access while their replacement runs. After the end date of the contract or replacement Okta deactivates the user, without any personal data from Peple reaching Okta.

What the integration does

Organisations that use Visma Peple for HR and Okta for access often enter new colleagues and substitutes twice. Okta therefore lags behind Peple, and a substitute keeps access long after their replacement has ended.

  1. In Visma Connect KoppelHet gets a client with only the export scopes for employees, contracts, organisational units and replacements; in Okta the account team enables a custom HR source.
  2. KoppelHet starts the exports in Peple and waits until the files are ready.
  3. KoppelHet compares the rows with the previous state and delivers only real changes to Okta in one session.
  4. Okta creates or changes the user and assigns apps through the groups per organisational unit.
  5. After the last contract or the last replacement KoppelHet delivers the removal and Okta deactivates the user.
Visma Peple → KoppelHet → OktaSOURCEVisma PepleTARGETOktaKoppelHetmapping · logging · monitoringVisma Peple → KoppelHet → OktaSOURCEVisma PepleTARGETOktaKoppelHetmapping · logging · monitoring
Out: Okta user with employee number · Groups per organisational unit · Job, cost centre and manager · Substitute access for the duration of the replacement

What to watch for with Visma Peple and Okta

  • Peple delivers data as an export that is started first and is ready as a file later. An Okta session for a custom HR source expires after 24 hours without activity. KoppelHet only opens the Okta session once all Peple files are in, so a half-filled session is never left hanging.
  • According to Visma, an incremental Peple export sometimes contains employees who did not change. An empty upload leaves an Okta session in created status, and triggering it then gives an error. KoppelHet filters out the false changes and does not open a session when nothing has changed.
  • Peple has a separate export for replacements, with start and end date. KoppelHet adds a substitute to the HR source when the replacement starts and removes them when it ends; Okta then deactivates the user, even if the contract in Peple continues.
  • Okta only accepts fields from a custom HR source as single text values, without lists. If someone works under contracts at two schools, KoppelHet puts the school of the main contract in the department field and the other schools as group membership, so the apps of both schools still follow.
  • In Peple the manager is a user ID on the contract. Okta has the managerId field, which expects the key of another user. KoppelHet looks up the employee number for that user ID, so the manager in Okta points to the right colleague.
  • Okta wants an email address for every user. Peple returns the business address without an extra scope, while private contact details and BSN require their own scope. KoppelHet does not request those scopes, so Okta never gets a private address as a login.
  • Peple allows a full export twice a day per resource. With a custom HR source Okta only processes what is delivered and does not see a missing employee as a departure. KoppelHet uses the nightly full export to detect leavers itself and delivers them as removals.

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

Do BSN or private address reach Okta?

No. The integration does not request the scopes for contact and tax data.

What happens on Saturday evening, when Peple has maintenance?

KoppelHet then waits the time Peple specifies and delivers afterwards. Okta keeps the previous state meanwhile.

Technical details for IT

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

  • Peple through the Visma.net HRM & Payroll Reporting API (Visma Connect client credentials) with scopes for the exports of employees, contracts, organizationunits and employeereplacement: POST /v1/command/nl/hrm/..., result through GET /v1/query/nl/hrm/.../{jobId}; incremental with changeTimestampAfter; two full refreshes per endpoint per tenant per 24 hours; 503 with Retry-After during maintenance.
  • Okta through the Identity Sources API (Custom Identity Source): one session at a time, bulk-upsert for users (externalId, text attributes only, at most 200 per request and 50 requests per session), groups and memberships separately, bulk-delete deactivates; a session expires after 24 hours without activity; importType INCREMENTAL only.

Which fields are transferred

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

Field in Visma PepleField in OktaNotes
PersoneelsnummerexternalId en employeeNumberFixed, never changes
VoornaamfirstName
Achternaam en partnername volgens nameusagelastName en displayName
businessemailaddress of naamgevingsregelemail en login
functionname (contract)title
costcenter (contract)costCenter
orgunit met orgunitparentidGroep per eenheid en department
manageruseridmanagerIdConverted to employee number
replacement_startdate en replacement_enddateOpnemen in of verwijderen uit de HR-bron

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.