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.
- Personio reports a change; KoppelHet acknowledges straight away and then fetches the person and the employment.
- Departments and teams become groups in aNewSpring, with the same parent unit as in Personio.
- The employee becomes a learner in their group, with their language and legal entity; their supervisor becomes instructor.
- After a completed course KoppelHet writes name and date into two custom fields of the person in Personio.
- After the last working day KoppelHet archives the learner.
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 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.
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 Personio | Field in aNewSpring | Notes |
|---|---|---|
person id | userID (extern ID) | |
email | login | |
first_name / preferred_name en last_name | firstName en lastName | |
language_code | locale | de and fi do not exist in aNewSpring; then en_GB |
position | function | |
legal_entity | company | |
org_units (department, team) met parent | Groep van het type Student met parent | |
supervisor | setTeacherStudents | |
termination.last_working_day | archived = true na die dag | |
CourseCompleted: name en completeDate | custom_attributes (twee eigen velden) | Return path to Personio |
Related
Ashby → Personio
Ashby to Personio integration: hires with hours and entity as new employees in Personio
Bullhorn → Personio
Bullhorn to Personio integration: placements as a person with employment in Personio
Carerix → Personio
Carerix to Personio integration: successful placement as a new employee in Personio
Greenhouse → Personio
Greenhouse to Personio integration: hired candidates as employees in Personio