
Training and certificates
AFAS to LinkedIn Learning integration: licences per job and unit, revoked after the termination date
With an integration between AFAS Profit and LinkedIn Learning, an employee from AFAS automatically gets a LinkedIn Learning licence according to the rules you set per job, unit or employer, with their unit and employer as groups for the reports. On the day after the termination date the integration sets the licence to inactive, so no paid seat is left behind.
What the integration does
Organisations that run HR in AFAS Profit and offer LinkedIn Learning to part of their employees often manage licences with a list HR and IT keep next to AFAS. New colleagues wait for an invitation, and leavers keep their licence until someone cleans up the list.
- You decide which jobs, units or employers get a licence.
- KoppelHet reads the changes from AFAS and builds a file in LinkedIn Learning's format.
- New employees are already in LinkedIn Learning before the start, without a licence and without a welcome email; on the start date the licence is switched on.
- KoppelHet sends the file to LinkedIn, follows the processing and reports rejected rows to HR.
- The day after the termination date the licence is set to inactive.
What to watch for with AFAS Profit and LinkedIn Learning
- LinkedIn Learning only supports SCIM from Entra ID and Okta, and AFAS does not deliver SCIM. Without an identity provider in between, KoppelHet uses LinkedIn's file delivery over HTTPS. In the manual mode of that delivery KoppelHet can follow the processing and read the number of errors per file.
- LinkedIn sends a welcome email as soon as a learner with an active licence is added, and not for an inactive one. AFAS often knows the start date in advance. KoppelHet therefore first puts new employees in the file as inactive and switches the licence on on the first working day, so the invitation only arrives then.
- According to LinkedIn the unique ID must exactly match the ID single sign-on uses, including capitals. If your organisation signs in with the email address from Entra ID, KoppelHet aligns the unique ID with that instead of sending the AFAS employee number, so sign-in and delivery hit the same learner.
- A group in LinkedIn Learning appears automatically as soon as a group/<name> column is in the file. If an organisational unit in AFAS gets a new name, a second group would therefore appear next to the old one. In that case KoppelHet sets everyone in the old group to 0 and reports the new group to the administrator.
- LinkedIn wants a value in every column sent for every learner and an email address per row. In AFAS the work email is sometimes missing for employees without a computer workstation. KoppelHet holds such rows back and reports them to HR, so the rest of the file is processed normally.
- A licence rule in AFAS terms, for example only employees with a permanent employment or only certain jobs, is applied again by KoppelHet every day. If someone moves from a temporary to a permanent contract, they get a licence without manual work if your rule says so.
- The token for the HTTPS delivery is created by an administrator with full rights in LinkedIn Learning, and LinkedIn shows it only once. KoppelHet stores it encrypted in the platform; if it expires or is revoked, the integration reports that at the first failed upload.
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
Do completed courses come back to AFAS?
Not in the first version. LinkedIn has an API for learning activity; completed courses as a course on the employee in AFAS can be added later as an extension.
Why not through Entra ID with SCIM?
That works if AFAS already runs through Entra ID and the licence rules fit there. Without that intermediate step KoppelHet delivers directly from AFAS, with the rules in AFAS terms.
What if we already have learners in LinkedIn Learning?
Then we first set the unique ID on existing learners, based on the email address, in a separate upload. After that the daily delivery starts.
Technical details for IT
For those who want to know how it works under the hood: APIs, fields and sources used.
- AFAS is read with a dedicated GetConnector on employees, employments and organisational units, filtered on change date, through an app connector with only that connector.
- LinkedIn Learning HTTPS Org Sync - upload to api.linkedin.com/media/upload with media_type=enterprise_csv_upload and auto_notify=false, processing through enterpriseUploadJobs?action=processFile, status and resultStats (updatedCount, errorCount) through enterpriseUploadJobs/{id}, result file through resultMedia. CSV in UTF-8 with lowercase headers, group/<name> with 0 or 1 and the product's licence column.
Which fields are transferred
The key fields. The full mapping is agreed per customer.
| Field in AFAS Profit | Field in LinkedIn Learning | Notes |
|---|---|---|
Medewerker | unique_user_id | Or the value your single sign-on uses as ID; case-sensitive |
E-mail werk | primary_email_address | |
Roepnaam | preferred_first_name | |
Voorvoegsel + Achternaam | preferred_last_name | |
Functie (omschrijving) | work_title | |
Organisatorische eenheid | group/<eenheid> | 0 or 1 |
Werkgever | group/<werkgever> | |
Licentieregel, Datum in dienst, Datum uit dienst | Licentiekolom van het product (active of inactive) |
Related
ADP Workforce Now → AFAS Profit
ADP Workforce Now to AFAS integration: Dutch employees from the US HR system in AFAS Profit
AFAS Profit → 4PS Construct
AFAS to 4PS Construct integration: payroll journal per employer in the right 4PS company
AFAS Profit → Adobe Creative Cloud
AFAS to Adobe Creative Cloud integration: users and product profiles from AFAS Profit
AFAS Profit → AG5
AFAS to AG5 integration: employees, employments and absence from AFAS Profit in the skills matrix