Personio logoaNewSpring logo

Training and certificates

Personio to aNewSpring integration: learners and groups from Personio, last completed course back in the profile

With an integration between Personio and aNewSpring, every employee in Personio automatically becomes a learner in aNewSpring, in the group of their department or team and with their supervisor as instructor. When they complete a course, KoppelHet puts the name and date in a custom field in their Personio profile.

What the integration does

Organisations that use Personio for HR and run internal training in aNewSpring often maintain learners and groups by hand. After a team change the group is wrong, and a supervisor cannot see in Personio which mandatory course someone has already passed.

  1. Personio reports a change; KoppelHet acknowledges straight away and then fetches the person and the employment.
  2. Departments and teams become groups in aNewSpring, with the same parent unit as in Personio.
  3. The employee becomes a learner in their group, with their language and legal entity; their supervisor becomes instructor.
  4. After a completed course KoppelHet writes name and date into two custom fields of the person in Personio.
  5. After the last working day KoppelHet archives the learner.
Personio → KoppelHet → aNewSpringSOURCEPersonioTARGETaNewSpringKoppelHetmapping · logging · monitoringPersonio → KoppelHet → aNewSpringSOURCEPersonioTARGETaNewSpringKoppelHetmapping · logging · monitoring
Out: Learner with the Personio ID as external ID, with language and entity · Groups from departments and teams, with parent unit · Supervisor as instructor
Back: Name and date of the last completed course

What to watch for with Personio and aNewSpring

  • Personio expects an answer to a webhook within three seconds and then retries up to six times in three days. aNewSpring gives ten seconds and retries up to ten times, up to sixteen hours later. KoppelHet acknowledges both notifications straight away and processes them afterwards, so neither system resends needlessly.
  • Personio supports German and Finnish among others as an employee's language; aNewSpring offers Dutch, English, French, Italian, Spanish, Swedish and Chinese, but no German or Finnish. KoppelHet gives those employees English, so nobody gets an environment in a language they did not choose.
  • Personio has no training table in the API, but custom fields per person can be written with the personio:persons:write scope. KoppelHet puts the name and date of the last completed aNewSpring course in two of those fields; the full history stays in aNewSpring.
  • Departments and teams in Personio each have a parent unit. aNewSpring groups can also have a parent group. KoppelHet creates the groups with the Personio ID of the unit as external ID, so a renamed department stays the same group.
  • Personio distinguishes the contract end date and the last working day. KoppelHet archives the learner after the last working day, so someone released early does not stay in a course group for weeks.
  • One Personio account can contain several legal entities. KoppelHet puts the entity in the learner's company field in aNewSpring, so instructors and reports can filter per entity.
  • If the integration was down, Personio can redeliver notifications. KoppelHet requests those missed notifications instead of running all employees through aNewSpring again, so groups and instructors are not rewritten needlessly.

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

Why only the last completed course in Personio?

A custom field in Personio holds one value. If HR wants every course as a document in the profile, that can follow later as an extension through Personio's document feature.

Which permissions does the integration need in Personio?

Read access to persons, employments and units, and write access to persons for the two custom fields. Salary and address do not need to be open.

Can external learners stay in aNewSpring?

Yes. KoppelHet only manages learners with a Personio ID as external ID and leaves other learners alone.

Technical details for IT

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

  • Personio API v2 with OAuth 2.0 client credentials: webhooks (answer within 3 seconds, up to 6 attempts in 3 days, POST /v2/webhooks/{id}/redelivery), GET /v2/persons/{id}/employments (position, org_units, supervisor, legal_entity, termination with last_working_day), org units with parent, and PATCH /v2/persons/{id} with custom_attributes and the personio:persons:write scope. language_code from en, de, es, fr, nl, it, sv, fi.
  • aNewSpring API with an API key: POST /addOrUpdateUser/{userID} (login, firstName, lastName, function, company, locale from nl, en_GB, en_US, fr, it, es, sv, zh, archived), POST /addGroup/{groupID} with parent, /addGroupUsers and /deleteGroupUsers, POST /setTeacherStudents/{teacherID}. Webhook CourseCompleted with X-WebHook-Signature.

Which fields are transferred

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

Field in PersonioField in aNewSpringNotes
person iduserID (extern ID)
emaillogin
first_name / preferred_name en last_namefirstName en lastName
language_codelocalede and fi do not exist in aNewSpring; then en_GB
positionfunction
legal_entitycompany
org_units (department, team) met parentGroep van het type Student met parent
supervisorsetTeacherStudents
termination.last_working_dayarchived = true na die dag
CourseCompleted: name en completeDatecustom_attributes (twee eigen velden)Return path to Personio

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.