AFAS Profit logoDy

Leave, absence and time

AFAS to Dyflexis integration: employees per employer to scheduling, paid hours back as payroll changes

With an integration between AFAS Profit and Dyflexis, new employees and employments from AFAS appear automatically in Dyflexis scheduling, with employer, cost centre and hours and days per week. After a payroll period is locked, the hours and allowances from Dyflexis go to the right employment in AFAS as payroll changes.

What the integration does

Employers that run HR and payroll in AFAS Profit and schedule in Dyflexis enter new staff twice, first in AFAS and then in Dyflexis. After every month payroll imports an hours file, and with several employers in AFAS it has to work out which lines belong to which employer.

  1. HR enters the new employee in AFAS with employment, employer, cost centre and schedule.
  2. KoppelHet sends the employee with employer and the employment as a contract to Dyflexis; an administrator links new employees once.
  3. The planner schedules, employees register their hours and the planner locks the period and sends it on.
  4. KoppelHet fetches the period, sums the hours per pay component and employment and posts them as payroll changes under the right employer in AFAS.
  5. The result goes back to Dyflexis. If AFAS refuses a line, the planner sees the reason on the period.
AFAS Profit → KoppelHet → DyflexisSOURCEAFAS ProfitTARGETDyflexisDyflexisKoppelHetmapping · logging · monitoringAFAS Profit → KoppelHet → DyflexisSOURCEAFAS ProfitTARGETDyflexisDyflexisKoppelHetmapping · logging · monitoring
Out: Employee with employee number, employer and cost centre · Employment as contract with hours and days per week · End of probation and end date
Back: Paid hours per pay component as payroll change · Allowances and expenses as payroll change · Status per period back in Dyflexis

What to watch for with AFAS Profit and Dyflexis

  • AFAS can hold several employers in one environment, and Dyflexis keeps an employer reference per employee. KoppelHet fills it with the AFAS employer, so after locking, the hours of a location land as payroll changes under that location's employer.
  • A payroll change that enters AFAS through an integration gets no warning on a duplicate posting. Dyflexis gives every locked period its own number in the queue. KoppelHet remembers which numbers have been posted, so a period sent on again is not paid twice.
  • If AFAS refuses a payroll change, for example because a pay component does not fit the collective agreement, KoppelHet puts the reason in the status of that period in Dyflexis. The planner sees the problem where they work, instead of it only surfacing in the payroll run.
  • The Dyflexis API has no way to create leave; only sickness registrations can be read and updated there. Leave approved in AFAS InSite therefore does not reach the schedule through the integration. We agree per customer whether leave is requested in AFAS or in Dyflexis.
  • Dyflexis can also store marital status, partner name and place of birth for an employee, and AFAS holds that data. A dedicated GetConnector only returns what scheduling needs, so that private data does not leave AFAS.
  • A contract in Dyflexis can carry an hourly wage, so the planner sees the wage cost of a schedule. That wage lives in AFAS. KoppelHet only sends it if you want wage cost in scheduling; otherwise the field stays empty.

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

Can we keep leave in AFAS?

Yes, but then it does not appear in the schedule automatically, because Dyflexis does not accept leave through the API. An alternative is requesting leave in Dyflexis, with hours taken going back to AFAS as a pay component.

What if a wage component from Dyflexis does not exist in AFAS?

Then the line is not posted, the period in Dyflexis gets the status partial and the reason is in the platform. Payroll assigns a pay component and the line still goes through.

Technical details for IT

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

  • AFAS through a dedicated app connector with a GetConnector on employees and employments, filtered on change date. Payroll changes go to AFAS through the HrCompMut UpdateConnector. The AFAS classic token expires on 31 August 2027; new integrations use OAuth.
  • Dyflexis through the Dyflexis API with a token and scopes per part. Employees with POST /api2/external-employees/{employeeReference} (personnelNumber, employerReferenceId, costCenter, probationDate, employmentStart, employmentEnd), contracts with POST .../contracts (contractReference, office, type, hours, days, salary).
  • Hours through the queue GET /api2/payroll/queue/from/{lastQueueId} or the payrollPeriodReady webhook, then GET /api/payroll/v3/hours-per-day per office, contract type group and period. Status back with POST /api2/payroll/queue/{queueId}/status (in progress, success, failed, partial; message up to 1000 characters).

Which fields are transferred

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

Field in AFAS ProfitField in DyflexisNotes
Medewerker (personeelsnummer)personnelNumber en employeeReferenceFixed key in Dyflexis
WerkgeveremployerReferenceIdDetermines which employer the hours return to
KostenplaatscostCenter
Volgnummer dienstverbandcontractReferenceEach employment its own contract in Dyflexis
Uren en dagen per week (rooster)hours en days
Einddatum proeftijdprobationDate
Datum in en uit dienstemploymentStart en employmentEnd
components per dag (terug)Looncomponent in de loonmutatieThrough a translation table from Dyflexis wage components to AFAS pay components

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.