Bij een overstap naar Selection Lab migreer je historische assessmentscores, kandidaat-ID's en rapportlinks via CSV, JSON of API naar je ATS. Records waarvan de bewaartermijn is verlopen of waarvoor geen toestemming aantoonbaar is, worden geweigerd. Proctoringopnames en PDF-rapporten van de oude leverancier gaan niet mee. Je ATS blijft de bron van waarheid.
Van assessmentleverancier wisselen is meer dan een instelling omzetten. Je verplaatst privacygevoelige data, je wilt de historische scores behouden waar hiring managers op vertrouwen en je ATS moet tijdens de hele overgang het leidende systeem blijven. Dit artikel legt uit hoe Selection Lab een migratie van leverancier naar leverancier aanpakt, wat er met je historische assessmentdata gebeurt en welke verplichtingen daar onder de AVG bij horen.
Let op. Een aantal technische details in dit artikel (exacte API-endpoints, versies van het JSON-schema, rate limits per veld en goedgekeurde curl- en Postman-voorbeelden) wacht nog op bevestiging van Engineering en Customer Success van Selection Lab. Onderdelen met [nog te bevestigen door engineering] lees je als structuur, niet als definitieve specificatie. Je implementatiemanager heeft de actuele referentie.
Voordat je iets exporteert of importeert, bepaal je de grens van de migratie. Selection Lab onderscheidt drie soorten historische data.
Alle persoonsgegevens die Selection Lab verwerkt staan in Frankfurt. Toestemming wordt per verwerkingsdoel vastgelegd en bewaartermijnen gelden op recordniveau (Selection Lab Main Deck 2026). Hoe de AVG bij recruitment skill tests verder werkt, staat in een apart artikel. Voor de migratie betekent het dit. Records waarvan de bewaartermijn voorbij is, of waarvoor je geen geldige toestemming kunt aantonen, horen niet in een importbatch.
Selection Lab ondersteunt export in CSV en JSON, plus programmatische toegang via de API [nog te bevestigen door engineering, exacte endpoints]. Voor een migratie zijn dit de relevante objecten.
| Object | Omschrijving |
|---|---|
Candidate | Vaste identifier, naam, contactvelden, externalCandidateId |
Application | Koppeling tussen kandidaat en vacature, met jobId / roleId |
AssessmentResult | Scores, competentie-indicatoren, assessmentTypeId, status |
Scorecard | Indicatoren per categorie (bijvoorbeeld persoonlijkheidsdimensies, skillscores) |
ReportMetadata | Link naar het gehoste rapport, tijdstip van aanmaak, versie van het rapportformaat |
SchedulingEvent | Interviewplanning gekoppeld aan een assessmentuitkomst |
Zonder vaste identifiers lukt de mapping niet. Gebruikte je oude leverancier een ander ID-systeem, bijvoorbeeld losse UUID's zonder verwijzing naar je ATS, dan heb je vooraf een koppelbestand nodig dat oude ID's aan je ATS-kandidaat-ID's verbindt. Het implementatieteam van Selection Lab helpt daarbij tijdens de onboarding, die volgens de Main Deck 2026 twee tot tien weken duurt.
Alle tijdstempels moeten in ISO-8601 staan (YYYY-MM-DDTHH:MM:SSZ). Selection Lab houdt per assessmentrecord vier tijdstempels bij.
invitedAt, het moment waarop de kandidaat de uitnodiging kreegstartedAt, het moment waarop de kandidaat het assessment opendecompletedAt, het moment waarop de kandidaat het assessment inleverdescoredAt, het moment waarop de scoring een resultaat opleverde[Nog te bevestigen door engineering] De API van Selection Lab gebruikt een OAuth 2.0 client credentials flow voor server-to-server dataverkeer. Je implementatiemanager levert een client_id en client_secret die alleen voor migratie werken. Het token haal je op bij /oauth/token, het bearer token stuur je mee in de Authorization-header van elke migratie-aanroep.
De belangrijkste regels voor imports.
(externalCandidateId, jobId, assessmentTypeId, completedAt). Stuur je een record met dezelfde sleutel nog eens, dan ontstaat geen duplicaat. Je krijgt het bestaande record terug met 200 OK en de vlag "action": "skipped".413 Payload Too Large."dryRun": true in de request body valideer je de veldmapping en krijg je een overzicht van fouten zonder dat er iets in de database wordt geschreven.De tabel hieronder laat het algemene patroon zien. De precieze veldnamen van je oude leverancier verschillen [check met je CS-contact].
| Veld oude leverancier | Importveld Selection Lab | Bestemming in ATS |
|---|---|---|
candidate_id | externalCandidateId | ID van het kandidaatrecord |
vacancy_id | jobId | Vacature-ID |
test_type | assessmentTypeId | Label van het assessmenttype |
total_score (0-100) | normalizedScore (0-100) | Score zichtbaar in ATS |
percentile_rank | percentileRank | Aanvullend veld |
dimension_scores[] | indicators[] | Scorecarddimensies |
report_url | reportLink | Rapportlink in ATS |
completed_date | completedAt (ISO-8601) | Tijdstip van afronding |
Over het omrekenen van scores. Gebruikte je oude leverancier een andere schaal, bijvoorbeeld 0 tot 10 of ruwe stanines, zet dan de oorspronkelijke schaal in het veld sourceScoreScale zodat een auditor de conversie kan volgen. Selection Lab rekent scores nooit stilzwijgend om. De omrekenregels leg je vast in het importmanifest.
Over lege velden. Een verplicht veld dat leeg is laat het record afkeuren, het verschijnt dan in het foutenrapport. Optionele velden, zoals startedAt en percentileRank, mag je weglaten. Ook een gedeeltelijke migratie is geldig, bijvoorbeeld persoonlijkheidsresultaten zonder bijbehorende hard-skillsmeting. Het ATS toont dan de assessmenttypes die er wel zijn.
Na de import zet Selection Lab het volledige rapport en de losse scores direct in je ATS. De attributen worden automatisch in het kandidaatrecord gevuld, net als bij de standaard ATS-integratie (Selection Lab Main Deck 2026). Recruiters zien historische records in dezelfde omgeving als nieuwe assessments, zonder dat hun werkwijze verandert.
Historische assessmentdata is een compliance-onderwerp, niet alleen een archief. Selection Lab past deze regels toe op geïmporteerde records.
RETENTION_EXPIRED.consentTimestamp of consentPurpose in de payload, worden geweigerd met CONSENT_MISSING.Je ATS is het leidende systeem voor assessmentuitkomsten. De rol van Selection Lab bij een overstap is dat systeem correct en binnen de regels aanvullen, en daarna het live scoren overnemen.
Loop na elke importbatch deze controles door.
importSummary.totalProcessed in de API-respons. Elk verschil onderzoek je voordat je de migratie afsluit.assessmentTypeId, zodat je zeker weet dat geen enkel type stilzwijgend is weggevallen.importErrors[] uit de respons. De meest voorkomende foutcodes.MISSING_REQUIRED_ID, externalCandidateId, jobId of assessmentTypeId ontbreekt.DUPLICATE_KEY, er bestaat al een record met dezelfde samengestelde sleutel (alleen relevant als idempotentie niet goed is gebruikt).TIMESTAMP_FORMAT_INVALID, de tijdstempel staat niet in ISO-8601.SCORE_OUT_OF_RANGE, normalizedScore valt buiten de opgegeven schaal.ASSESSMENT_TYPE_UNKNOWN, assessmentTypeId komt niet overeen met een type in je Selection Lab-account.Een Postman-collectie en goedgekeurde curl-voorbeelden voor de migratie-endpoints zijn op aanvraag beschikbaar bij je implementatiemanager [komt in de publieke documentatie na akkoord van engineering].
Ja. Afgeronde assessments met scores, competentie-indicatoren en matchuitkomsten zijn het hoofddoel van een migratie. Ze worden via CSV, JSON of API ingelezen en verschijnen in je ATS naast nieuwe assessments, zodat recruiters oude en nieuwe resultaten in dezelfde omgeving zien.
Selection Lab importeert geen mediabestanden van proctoringsystemen van derden, zoals sessieopnames, schermafbeeldingen of PDF-rapporten. Links naar rapporten kunnen als metadata worden opgeslagen, de bestanden zelf blijven bij de oude leverancier.
Die worden geweigerd. Records buiten de bewaartermijn geven de foutcode RETENTION_EXPIRED, records zonder consentTimestamp of consentPurpose geven CONSENT_MISSING. Beide haal je uit de importbatch voordat je migreert.
Gebruikte de oude leverancier een andere schaal, zoals 0 tot 10 of stanines, dan zet je de oorspronkelijke schaal in het veld sourceScoreScale en leg je de omrekenregel vast in het importmanifest. Selection Lab rekent scores nooit stilzwijgend om, zodat een auditor de conversie altijd kan volgen.
Vergelijk het aantal records in je exportbestand met importSummary.totalProcessed, splits de aantallen uit per assessmentTypeId, loop de lijst importErrors[] door op geweigerde records en bewaar de auditlog die Selection Lab per batch aanmaakt.

Bij een overstap naar Selection Lab migreer je historische assessmentscores, kandidaat-ID's en rapportlinks via CSV, JSON of API naar je ATS. Records waarvan de bewaartermijn is verlopen of waarvoor geen toestemming aantoonbaar is, worden geweigerd. Proctoringopnames en PDF-rapporten van de oude leverancier gaan niet mee. Je ATS blijft de bron van waarheid.
Van assessmentleverancier wisselen is meer dan een instelling omzetten. Je verplaatst privacygevoelige data, je wilt de historische scores behouden waar hiring managers op vertrouwen en je ATS moet tijdens de hele overgang het leidende systeem blijven. Dit artikel legt uit hoe Selection Lab een migratie van leverancier naar leverancier aanpakt, wat er met je historische assessmentdata gebeurt en welke verplichtingen daar onder de AVG bij horen.
Let op. Een aantal technische details in dit artikel (exacte API-endpoints, versies van het JSON-schema, rate limits per veld en goedgekeurde curl- en Postman-voorbeelden) wacht nog op bevestiging van Engineering en Customer Success van Selection Lab. Onderdelen met [nog te bevestigen door engineering] lees je als structuur, niet als definitieve specificatie. Je implementatiemanager heeft de actuele referentie.
Voordat je iets exporteert of importeert, bepaal je de grens van de migratie. Selection Lab onderscheidt drie soorten historische data.
Alle persoonsgegevens die Selection Lab verwerkt staan in Frankfurt. Toestemming wordt per verwerkingsdoel vastgelegd en bewaartermijnen gelden op recordniveau (Selection Lab Main Deck 2026). Hoe de AVG bij recruitment skill tests verder werkt, staat in een apart artikel. Voor de migratie betekent het dit. Records waarvan de bewaartermijn voorbij is, of waarvoor je geen geldige toestemming kunt aantonen, horen niet in een importbatch.
Selection Lab ondersteunt export in CSV en JSON, plus programmatische toegang via de API [nog te bevestigen door engineering, exacte endpoints]. Voor een migratie zijn dit de relevante objecten.
| Object | Omschrijving |
|---|---|
Candidate | Vaste identifier, naam, contactvelden, externalCandidateId |
Application | Koppeling tussen kandidaat en vacature, met jobId / roleId |
AssessmentResult | Scores, competentie-indicatoren, assessmentTypeId, status |
Scorecard | Indicatoren per categorie (bijvoorbeeld persoonlijkheidsdimensies, skillscores) |
ReportMetadata | Link naar het gehoste rapport, tijdstip van aanmaak, versie van het rapportformaat |
SchedulingEvent | Interviewplanning gekoppeld aan een assessmentuitkomst |
Zonder vaste identifiers lukt de mapping niet. Gebruikte je oude leverancier een ander ID-systeem, bijvoorbeeld losse UUID's zonder verwijzing naar je ATS, dan heb je vooraf een koppelbestand nodig dat oude ID's aan je ATS-kandidaat-ID's verbindt. Het implementatieteam van Selection Lab helpt daarbij tijdens de onboarding, die volgens de Main Deck 2026 twee tot tien weken duurt.
Alle tijdstempels moeten in ISO-8601 staan (YYYY-MM-DDTHH:MM:SSZ). Selection Lab houdt per assessmentrecord vier tijdstempels bij.
invitedAt, het moment waarop de kandidaat de uitnodiging kreegstartedAt, het moment waarop de kandidaat het assessment opendecompletedAt, het moment waarop de kandidaat het assessment inleverdescoredAt, het moment waarop de scoring een resultaat opleverde[Nog te bevestigen door engineering] De API van Selection Lab gebruikt een OAuth 2.0 client credentials flow voor server-to-server dataverkeer. Je implementatiemanager levert een client_id en client_secret die alleen voor migratie werken. Het token haal je op bij /oauth/token, het bearer token stuur je mee in de Authorization-header van elke migratie-aanroep.
De belangrijkste regels voor imports.
(externalCandidateId, jobId, assessmentTypeId, completedAt). Stuur je een record met dezelfde sleutel nog eens, dan ontstaat geen duplicaat. Je krijgt het bestaande record terug met 200 OK en de vlag "action": "skipped".413 Payload Too Large."dryRun": true in de request body valideer je de veldmapping en krijg je een overzicht van fouten zonder dat er iets in de database wordt geschreven.De tabel hieronder laat het algemene patroon zien. De precieze veldnamen van je oude leverancier verschillen [check met je CS-contact].
| Veld oude leverancier | Importveld Selection Lab | Bestemming in ATS |
|---|---|---|
candidate_id | externalCandidateId | ID van het kandidaatrecord |
vacancy_id | jobId | Vacature-ID |
test_type | assessmentTypeId | Label van het assessmenttype |
total_score (0-100) | normalizedScore (0-100) | Score zichtbaar in ATS |
percentile_rank | percentileRank | Aanvullend veld |
dimension_scores[] | indicators[] | Scorecarddimensies |
report_url | reportLink | Rapportlink in ATS |
completed_date | completedAt (ISO-8601) | Tijdstip van afronding |
Over het omrekenen van scores. Gebruikte je oude leverancier een andere schaal, bijvoorbeeld 0 tot 10 of ruwe stanines, zet dan de oorspronkelijke schaal in het veld sourceScoreScale zodat een auditor de conversie kan volgen. Selection Lab rekent scores nooit stilzwijgend om. De omrekenregels leg je vast in het importmanifest.
Over lege velden. Een verplicht veld dat leeg is laat het record afkeuren, het verschijnt dan in het foutenrapport. Optionele velden, zoals startedAt en percentileRank, mag je weglaten. Ook een gedeeltelijke migratie is geldig, bijvoorbeeld persoonlijkheidsresultaten zonder bijbehorende hard-skillsmeting. Het ATS toont dan de assessmenttypes die er wel zijn.
Na de import zet Selection Lab het volledige rapport en de losse scores direct in je ATS. De attributen worden automatisch in het kandidaatrecord gevuld, net als bij de standaard ATS-integratie (Selection Lab Main Deck 2026). Recruiters zien historische records in dezelfde omgeving als nieuwe assessments, zonder dat hun werkwijze verandert.
Historische assessmentdata is een compliance-onderwerp, niet alleen een archief. Selection Lab past deze regels toe op geïmporteerde records.
RETENTION_EXPIRED.consentTimestamp of consentPurpose in de payload, worden geweigerd met CONSENT_MISSING.Je ATS is het leidende systeem voor assessmentuitkomsten. De rol van Selection Lab bij een overstap is dat systeem correct en binnen de regels aanvullen, en daarna het live scoren overnemen.
Loop na elke importbatch deze controles door.
importSummary.totalProcessed in de API-respons. Elk verschil onderzoek je voordat je de migratie afsluit.assessmentTypeId, zodat je zeker weet dat geen enkel type stilzwijgend is weggevallen.importErrors[] uit de respons. De meest voorkomende foutcodes.MISSING_REQUIRED_ID, externalCandidateId, jobId of assessmentTypeId ontbreekt.DUPLICATE_KEY, er bestaat al een record met dezelfde samengestelde sleutel (alleen relevant als idempotentie niet goed is gebruikt).TIMESTAMP_FORMAT_INVALID, de tijdstempel staat niet in ISO-8601.SCORE_OUT_OF_RANGE, normalizedScore valt buiten de opgegeven schaal.ASSESSMENT_TYPE_UNKNOWN, assessmentTypeId komt niet overeen met een type in je Selection Lab-account.Een Postman-collectie en goedgekeurde curl-voorbeelden voor de migratie-endpoints zijn op aanvraag beschikbaar bij je implementatiemanager [komt in de publieke documentatie na akkoord van engineering].
Ja. Afgeronde assessments met scores, competentie-indicatoren en matchuitkomsten zijn het hoofddoel van een migratie. Ze worden via CSV, JSON of API ingelezen en verschijnen in je ATS naast nieuwe assessments, zodat recruiters oude en nieuwe resultaten in dezelfde omgeving zien.
Selection Lab importeert geen mediabestanden van proctoringsystemen van derden, zoals sessieopnames, schermafbeeldingen of PDF-rapporten. Links naar rapporten kunnen als metadata worden opgeslagen, de bestanden zelf blijven bij de oude leverancier.
Die worden geweigerd. Records buiten de bewaartermijn geven de foutcode RETENTION_EXPIRED, records zonder consentTimestamp of consentPurpose geven CONSENT_MISSING. Beide haal je uit de importbatch voordat je migreert.
Gebruikte de oude leverancier een andere schaal, zoals 0 tot 10 of stanines, dan zet je de oorspronkelijke schaal in het veld sourceScoreScale en leg je de omrekenregel vast in het importmanifest. Selection Lab rekent scores nooit stilzwijgend om, zodat een auditor de conversie altijd kan volgen.
Vergelijk het aantal records in je exportbestand met importSummary.totalProcessed, splits de aantallen uit per assessmentTypeId, loop de lijst importErrors[] door op geweigerde records en bewaar de auditlog die Selection Lab per batch aanmaakt.