Leave, absence and time
Personio to vPlan integration: employees and approved absences from Personio in the plan
With an integration between Personio and vPlan, employees from Personio become resources in vPlan, with their weekly hours spread over their working days, and absences approved in Personio appear as a deviation in their schedule. Absences still awaiting approval stay out of the plan.
What the integration does
Organisations that use Personio for HR and plan work, projects or technicians in vPlan maintain employees and leave in two systems. The planner only notices a sick note or holiday from Personio when they call to ask why someone is not there.
- Personio reports a new or changed employee; KoppelHet fetches the employment with weekly hours, office and status.
- Employees of the agreed offices become resources in vPlan, with the Personio ID as external reference.
- Every few minutes KoppelHet fetches the absences that changed in Personio, and only puts approved ones in vPlan as a deviation.
- KoppelHet updates or removes a moved or deleted absence.
- On departure the resource gets the last working day as end date.
What to watch for with Personio and vPlan
- For absences Personio only sends notifications on creation, moving and deletion, not on approval. KoppelHet therefore requests the absences updated since the previous run every few minutes, so a holiday is in vPlan shortly after approval.
- An absence in Personio can also have the status deletion pending or substitute requested. KoppelHet keeps an approved absence in vPlan as long as the deletion has not been approved, so the planner does not count on someone who may still be away.
- Long-term sickness has no end date in Personio while it is ongoing. A deviation in vPlan does require an end date. KoppelHet sets the deviation up to an agreed date ahead and extends it until the end date is in Personio.
- Personio returns the start and end of an absence in the employee's time zone, with an indication for the first or second half of the day. vPlan counts leave in minutes per day. KoppelHet sets half the hours of that working day on a half day, so the planner can still fill the other half.
- The employment in Personio gives the weekly hours and the hours of a full-time week, but not how they are spread across the days. vPlan wants hours per weekday. KoppelHet spreads the weekly hours by a rule per office or team chosen by planning, and the planner records exceptions in Personio.
- An employment in Personio has the status onboarding before someone starts, and a type internal or external. KoppelHet already creates a resource with the start date for someone in onboarding, and only includes externals if you want to plan them in vPlan.
- On termination Personio has both an employment end date and a last working day. Someone taking their last weeks as holiday can no longer be scheduled after the last working day. KoppelHet uses the last working day as the resource's end date.
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
Does the planner see whether someone is sick or on holiday?
No. vPlan only receives that the employee is away and for how many hours. The type of absence stays in Personio.
Do planned hours from vPlan go back to Personio?
No. Hours from vPlan as attendance in Personio can be added later as an extension.
Technical details for IT
For those who want to know how it works under the hood: APIs, fields and sources used.
- Personio through the API v2 with client credentials. Persons and employments (status ACTIVE, ONBOARDING, LEAVE or INACTIVE; type INTERNAL or EXTERNAL; weekly_working_hours, full_time_weekly_working_hours, office, legal_entity, org_units, employment_start_date, termination.last_working_day) through notifications and queries on updated_at. Absences through GET /v2/absence-periods with updated_at.gte, limit up to 100 and cursor (approval.status PENDING, APPROVED, DELETION_PENDING or SUBSTITUTE_REQUESTED; starts_from and ends_at with FIRST_HALF or SECOND_HALF; ends_at null for ongoing absence; timezone_id). Webhooks absence-period.created, absence-period.updated.timerange and absence-period.deleted.
- vPlan through the vPlan API (https://api.vplan.com/v1). POST /resource (type employee, name, start_date, end_date, workdays with keys 1 to 7, integration_schedule true, external_ref unique; a duplicate returns 422). Absences through POST /resource/{resource_id}/schedule_deviation/ (type leave, start_date, end_date, time_per_day in minutes, skip_non_workday, external_ref).
Which fields are transferred
The key fields. The full mapping is agreed per customer.
| Field in Personio | Field in vPlan | Notes |
|---|---|---|
person.id | external_ref van de resource | |
Voornaam en achternaam | name | |
weekly_working_hours | workdays (1 tot 7) | Spread over the working days per office |
employment_start_date | start_date | |
termination.last_working_day | end_date | |
absence-period met approval.status APPROVED | schedule_deviation type leave | |
starts_from.type en ends_at.type (FIRST_HALF, SECOND_HALF) | time_per_day op de eerste en laatste dag | |
absence-period id | external_ref van de afwijking |
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