Inleiding
Diensten die arbeidsgegevens, zoals informatie over loopbanen en werkrelaties, bevatten.
Use cases
-
Loon- en arbeidstijdgegevens van een werknemer opvragen ter voorbereiding van een inkomenstoets bij een sociale aanvraag.
-
Nagaan of een zelfstandige een actieve of afgesloten loopbaan heeft (bv. bij een aanvraag die rekening houdt met het zelfstandigenstatuut).
-
De arbeidsrelaties van een aanvrager raadplegen (via DIMONA-aangiftes), bijvoorbeeld om een tewerkstellingsvoorwaarde te controleren.
-
Nagaan of een aanvrager via interimcontracten tewerkgesteld is (of was), relevant voor premies die rekening houden met de aard van de tewerkstelling.
Setup
Idem als bij alle MAGDA-connectoren. Zie MAGDA algemene setup.
Specifieke applicatie eigenschappen
Geen.
Services en functies
Overzicht
|
Functie |
Retourtype |
Info |
|---|---|---|
|
|
Loon- en arbeidstijdgegevens van een werknemer, met de standaard aansluitingsconfiguratie of met expliciete opgave van de hoedanigheid |
|
|
|
Loopbaangegevens van een zelfstandige |
|
|
|
Arbeidsrelaties van een persoon (DIMONA-aangiftes), al dan niet inclusief interimcontracten |
Elke functie hieronder is, naast de workflow expressie, ook rechtstreeks aanroepbaar vanuit Java-code door MagdaCamundaConnector (bean magda) te injecteren in je klasse. Zie MAGDA gebruik voor een volledig voorbeeld met dependency injection. De "Java-code"-snippets per functie tonen enkel de effectieve aanroep zelf.
giveDmfa
Gegevens opvragen met betrekking tot loon- en arbeidstijdgegevens voor een bepaalde persoon. giveDmfa gebruikt de standaard aansluitingsconfiguratie; geefDmfaVoorWerknemer laat je de hoedanigheid expliciet meegeven — beide spreken exact dezelfde onderliggende dienst aan en retourneren hetzelfde objecttype.
Workflow expressie 1
${magda.giveDmfa(String insz, String uri, String begin, String end, String dossierId)}
Valt terug op de standaard aansluitingsconfiguratie voor MAGDA.
Workflow expressie 2
${magda.geefDmfaVoorWerknemer(String insz, String uri, String hc, String begin, String end, String dossierId)}
Hoedanigheid expliciet meegeven.
Java-code 1
GeefDmfaVoorWerknemerResponse response = magda.giveDmfa(insz, uri, begin, end, dossierId);
Valt terug op de standaard aansluitingsconfiguratie voor MAGDA.
Java-code 2
GeefDmfaVoorWerknemerResponse response = magda.geefDmfaVoorWerknemer(insz, uri, hc, begin, end, dossierId);
Hoedanigheid expliciet meegeven.
Input
|
Inputparameters |
Data type |
Voorbeeld |
Uitleg |
|---|---|---|---|
|
|
String |
‘85010212345’ |
Rijksregisternummer |
|
|
String |
'https://authenticatie.vlaanderen.be/op/v1/afnemers/mijnOrganisatie' |
Aansluiting bij Magda (deze info verkrijg je tijdens het onboardingproces bij Magda) |
|
|
String |
‘2020-01-01’ |
Startdatum referteperiode |
|
|
String |
‘2025-07-31' |
Einddatum referteperiode |
|
|
String (GUID) |
'550e8400-e29b-41d4-a716-446655440000' |
Unieke id van het dossier binnen de Skryv applicatie (met oog op logging van de call) |
Magda-documentatie
Technische info GeefDmfaVoorWerknemer-03.00.
Output
Je krijgt een getypeerd GeefDmfaVoorWerknemerResponse-object terug met een lijst Attesten — elk Attest is een DMFA-kwartaalaangifte met betrekking tot de werknemer. Een attest bevat:
-
Identificatie— nummer/versie van het attest, en de status (0nieuw,1wijziging,3annulatie,4heractivatie); -
AangifteWerkgever— het kwartaal (Kwartaal), het RSZ-nummer en KBO-nummer van de werkgever, en de gegevens van de werknemer zelf (Werknemer/INSZ, naam), met daarbinnen deWerknemerslijn:Categorie(werkgeverscategorie),Kerngetal(type werknemer), dePeriodevan het kwartaal, en — het belangrijkste onderdeel —Tewerkstellingen, met de effectieve loon- en arbeidstijdgegevens per tewerkstelling. -
Anomalieën— eventuele fouten die de RSZ zelf al gesignaleerd heeft bij de aangifte (enkel bij de meest recente situatie van een attest).
Let op — paginering: als niet alle attesten in één antwoord passen, krijg je een VolgendAttest-nummer mee (en/of de informatiecode 40217, "het antwoord is partieel, een extra opvraging is noodzakelijk"). Je moet dan een vervolgvraag doen met dat volgnummer om de rest op te halen.
Belangrijke beperking: een aantal gedetailleerde blokken (verminderingen, bijdragen, sommige naamswijzigingen, aanvullende vergoedingen) zijn via deze Geef-dienst niet beschikbaar — die worden enkel ontsloten via de aparte PubliceerDmfaVoorWerknemer-dienst, na een aanvraag in batch.
Gepseudonimiseerd voorbeeld:
<Antwoord>
<Referte>550e8400-e29b-41d4-a716-446655440000</Referte>
<Inhoud>
<Attesten>
<Attest>
<Identificatie>
<Nummer>1</Nummer>
<Versie>1</Versie>
<Status>
<Code>0</Code>
<Omschrijving>Nieuw</Omschrijving>
</Status>
<DatumCreatie>2024-04-15</DatumCreatie>
</Identificatie>
<AangifteWerkgever>
<Kwartaal>2024-1</Kwartaal>
<RSZNummer>1234567</RSZNummer>
<Ondernemingsnummer>0123456789</Ondernemingsnummer>
<Werknemer>
<INSZ>850102XXX45</INSZ>
<Werknemerslijn>
<Categorie>015</Categorie>
<Kerngetal>495</Kerngetal>
<Periode>
<Begin>2024-01-01</Begin>
<Einde>2024-03-31</Einde>
</Periode>
<!-- Tewerkstellingen bevat de eigenlijke loon-/arbeidstijdgegevens, zie apart Type DMFA Attest - Tewerkstelling -->
</Werknemerslijn>
</Werknemer>
</AangifteWerkgever>
</Attest>
</Attesten>
</Inhoud>
</Antwoord>
Error-handling
Voor een compleet overzicht, kan je terecht op de MAGDA-foutcodepagina.
|
Code |
Type |
Toelichting |
|---|---|---|
|
20002 |
FOUT |
INSZ in de vraag heeft een ongeldige structuur |
|
30001 |
FOUT |
Geen gegevens gevonden voor de vraag |
|
30002 |
FOUT |
INSZ geannuleerd |
|
30003 |
FOUT |
Onbestaand INSZ |
|
30004 |
FOUT |
Persoon heeft een nieuw INSZ verkregen |
|
40003 |
FOUT |
Geen inschrijving aanwezig voor het INSZ in de vraag |
|
40080 |
FOUT |
Begin- of eindkwartaal is te klein of te groot |
|
30040 |
INFORMATIE |
Meer gegevens beschikbaar |
|
40217 |
INFORMATIE |
Het antwoord is partieel — een extra opvraging is noodzakelijk |
Bij sommige errors wil je het proces niet laten vastlopen. In dat geval vorm je de technische error (foutcode) om naar een BPMN-error en vang je deze op via een error boundary event.
// Voorbeeld: uitzondering opvangen en gooien als BpmnError
GeefDmfaVoorWerknemerResponse response = magda.giveDmfa(insz, uri, begin, end, dossierId);
List<UitzonderingType> uitzonderingen = response.getRepliek()
.getAntwoorden().getAntwoord().getUitzonderingen().getUitzondering();
for (UitzonderingType uitzondering : uitzonderingen) {
String code = uitzondering.getIdentificatie();
if ("30001".equals(code) || "40003".equals(code)) {
throw new BpmnError("MAGDA_DMFA_NIET_GEVONDEN", uitzondering.getDiagnose());
}
if ("30002".equals(code) || "30003".equals(code) || "30004".equals(code)) {
throw new BpmnError("MAGDA_INSZ_PROBLEEM", uitzondering.getDiagnose());
}
if ("20002".equals(code)) {
throw new BpmnError("MAGDA_ONGELDIG_INSZ", uitzondering.getDiagnose());
}
if ("40080".equals(code)) {
throw new BpmnError("MAGDA_ONGELDIG_KWARTAAL", uitzondering.getDiagnose());
}
if ("40217".equals(code)) {
// Geen blokkerende fout: paginering, vervolgvraag nodig met VolgendAttest-nummer
String volgnummer = response.getRepliek().getAntwoorden().getAntwoord().getInhoud().getVolgendAttest();
// herhaal de aanvraag met dit volgnummer
}
}
geefLoopbaanARZA
Vraag loopbaangegevens op voor een zelfstandige.
Workflow expressie
${magda.geefLoopbaanARZA(String ssin, String uri, String startDate, String endDate, String hoedanigheid)}
Java-code
GeefLoopbaanARZAResponse response = magda.geefLoopbaanARZA(ssin, uri, startDate, endDate, hoedanigheid);
Input
|
Inputparameters |
Data type |
Voorbeeld |
Uitleg |
|---|---|---|---|
|
|
String |
‘85010212345’ |
Rijksregisternummer |
|
|
String |
'https://authenticatie.vlaanderen.be/op/v1/afnemers/mijnOrganisatie' |
Aansluiting bij Magda (deze info verkrijg je tijdens het onboardingproces bij Magda) |
|
|
String |
‘2020-01-01’ |
Startdatum voor de referteperiode |
|
|
String |
‘2025-07-31' |
Einddatum voor de referteperiode |
|
|
String |
‘12345’ |
IDPC-code, uniek aansluitingsnummer bij Magda (deze info verkrijg je tijdens het onboardingproces bij Magda) |
Magda-documentatie
Technische documentatie GeefLoopbaanARZA-02.01.
Output
Je krijgt een getypeerd GeefLoopbaanARZAResponse-object terug met Inhoud/Zelfstandige — enkel aanwezig als er effectief informatie gevonden werd voor de opgegeven zelfstandige. Dit bevat:
-
INSZ— het rijksregisternummer van de zelfstandige; -
Ondernemingsnummer— het laatst gekende ondernemingsnummer (optioneel, kan ontbreken bij oudere dossiers). Belangrijke nuance: als dit veld ontbreekt terwijl er wel een actieve periode als zelfstandige teruggegeven wordt, gaat het om een vennootschap met rechtspersoonlijkheid, niet om een eenmanszaak; -
Aansluitingen— een lijst van aansluitingen, elk met:-
SociaalVerzekeringsfonds(Code + Omschrijving + Ondernemingsnummer van het fonds); -
Loopbanen— een lijst vanLoopbaan-segmenten, elk metBijdragereeks(type tewerkstelling, bv. "Hoofdberoep"),Periode(Begin/Einde), optioneelPeriodeGelijkgesteld(bv. bij ziekte),Beroep,Hoedanigheid(bv. "Activiteit in eigen naam" of "Meewerkende echtgenote") enDatumOndertekening.
-
Let op bij Code/Omschrijving-paren: enkel bij SociaalVerzekeringsfonds bepaalt MAGDA zelf de juiste omschrijving bij de code. Bij alle andere paren (Bijdragereeks, PeriodeGelijkgesteld, Beroep, Hoedanigheid) wordt de omschrijving rechtstreeks van de KSZ overgenomen, in de taal van je vraag indien beschikbaar — anders krijg je de eerst beschikbare taal, samen met foutcode 25002 als signaal dat de gevraagde taal niet gevonden werd.
Gepseudonimiseerd voorbeeld:
<Antwoord>
<Referte>550e8400-e29b-41d4-a716-446655440000</Referte>
<Inhoud>
<Zelfstandige>
<INSZ>850102XXX45</INSZ>
<Ondernemingsnummer>0765432198</Ondernemingsnummer>
<Aansluitingen>
<Aansluiting>
<SociaalVerzekeringsfonds>
<Code>003</Code>
<Omschrijving Oorsprong="MAGDA" TaalCode="nl">S.V.M.B.</Omschrijving>
<Ondernemingsnummer>0409088689</Ondernemingsnummer>
</SociaalVerzekeringsfonds>
<Loopbanen>
<Loopbaan>
<Bijdragereeks>
<Code>100</Code>
<Omschrijving Oorsprong="KSZ">Hoofdberoep</Omschrijving>
</Bijdragereeks>
<Periode>
<Begin>2015-01-01</Begin>
<Einde>2023-12-31</Einde>
</Periode>
<Beroep>
<Code>307107</Code>
<Omschrijving Oorsprong="KSZ">Bakker</Omschrijving>
</Beroep>
<Hoedanigheid>
<Code>100</Code>
<Omschrijving Oorsprong="KSZ">Activiteit in eigen naam</Omschrijving>
</Hoedanigheid>
<DatumOndertekening>2015-01-05</DatumOndertekening>
</Loopbaan>
</Loopbanen>
</Aansluiting>
</Aansluitingen>
</Zelfstandige>
</Inhoud>
</Antwoord>
Error-handling
Voor een compleet overzicht, kan je terecht op de MAGDA-foutcodepagina.
Aan deze functie gerelateerde foutcodes:
|
Code |
Toelichting |
|---|---|
|
20002 |
INSZ in de vraag heeft een ongeldige structuur |
|
25001 |
De opgegeven taal wordt niet ondersteund door deze dienst |
|
25002 |
Omschrijving niet gevonden in de opgegeven taal (zie kanttekening bij Output) |
|
30001 |
Geen gegevens gevonden voor de vraag |
|
30003 |
Onbestaand INSZ |
|
30004 |
Persoon heeft een nieuw INSZ verkregen |
|
40003 |
Geen inschrijving aanwezig voor het INSZ in de vraag |
Bij sommige errors wil je het proces niet laten vastlopen. In dat geval vorm je de technische error (foutcode) om naar een BPMN-error en vang je deze op via een error boundary event.
// Voorbeeld: uitzondering opvangen en gooien als BpmnError
GeefLoopbaanARZAResponse response = magda.geefLoopbaanARZA(ssin, uri, startDate, endDate, hoedanigheid);
List<UitzonderingType> uitzonderingen = response.getRepliek()
.getAntwoorden().getAntwoord().getUitzonderingen().getUitzondering();
for (UitzonderingType uitzondering : uitzonderingen) {
String code = uitzondering.getIdentificatie();
if ("30001".equals(code) || "40003".equals(code)) {
throw new BpmnError("MAGDA_LOOPBAAN_NIET_GEVONDEN", uitzondering.getDiagnose());
}
if ("30003".equals(code) || "30004".equals(code)) {
throw new BpmnError("MAGDA_INSZ_PROBLEEM", uitzondering.getDiagnose());
}
if ("20002".equals(code)) {
throw new BpmnError("MAGDA_ONGELDIG_INSZ", uitzondering.getDiagnose());
}
// 25002 is informatief (vertaalprobleem bij de bron) - niet blokkerend, wel te loggen
}
geefWerkrelaties
Zoek arbeidsrelaties op voor een persoon (DIMONA-aangifte).
Workflow expressie 1
${magda.geefWerkrelaties(String uri, String hoedanigheid, String insz, String startDate, String endDate, UUID referte)}
Enkel gewone contracten.
Workflow expressie 2
${magda.geefWerkrelatiesWithInterim(String uri, String hoedanigheid, String insz, String startDate, String endDate, UUID referte)}
Gewone contracten én interimcontracten.
Java-code 1
GeefWerkrelatiesResponse response = magda.geefWerkrelaties(uri, hoedanigheid, insz, startDate, endDate, referte);
Enkel gewone contracten.
Java-code 2
GeefWerkrelatiesResponse response = magda.geefWerkrelatiesWithInterim(uri, hoedanigheid, insz, startDate, endDate, referte);
Gewone contracten én interimcontracten.
Input
|
Inputparameters |
Data type |
Voorbeeld |
Uitleg |
|---|---|---|---|
|
|
String |
'https://authenticatie.vlaanderen.be/op/v1/afnemers/mijnOrganisatie' |
Aansluiting bij Magda (deze info verkrijg je tijdens het onboardingproces bij Magda) |
|
|
String |
‘12345’ |
IDPC-code, uniek aansluitingsnummer bij Magda (deze info verkrijg je tijdens het onboardingproces bij Magda) |
|
|
String |
‘85010212345’ |
Rijksregisternummer |
|
|
String |
‘2020-01-01’ |
Startdatum referteperiode |
|
|
String |
‘2025-07-31' |
Einddatum referteperiode |
|
|
UUID |
'550e8400-e29b-41d4-a716-446655440000' |
Unieke referte van de vraag (wordt door MAGDA niet gevalideerd) — in tegenstelling tot bij andere connectoren moet je dit hier zelf als UUID meegeven, in plaats van dat de connector dit automatisch genereert. |
Magda-documentatie
Technische documentatie GeefWerkrelaties-02.00.
Output
Je krijgt een getypeerd GeefWerkrelatiesResponse-object terug met een lijst Contracten (max. 2000 per antwoord). Elk Contract bestaat uit vijf blokken:
-
Relatie— identificatie van werkgever (RSZ- of KBO-nummer) en werknemer (INSZ, naam, voornaam, enIdentificatiePersoonGevalideerd: geeft aan of de identificatie via het INSZ correct verliep); -
Bron— of de gegevens uit de RSZ- of de DIBISS-gegevensbank komen; -
Aangifte— hetDimonaNummer(unieke identificatie van het contract), dePeriodeTijdstip(Begin/Einde), hetParitairComite, optioneelAardWerknemer(bv. "STU" voor student), of het contractGeannuleerdis, en deDimonaActie(I = indienst, O = uitdienst, U = wijziging, C = annulatie, B = verwijdering); -
InterimOnderneming(optioneel) — bij een contract via een interimkantoor, de identificatie van de eigenlijke opdrachtgever; -
PlaatsTewerkstelling(optioneel) — enkel relevant voor studenten: het effectieve adres van tewerkstelling.
Belangrijk om te weten: als het aantal gevonden contracten te groot is, krijg je geen antwoord maar een foutmelding (30005, "te veel gegevens gevonden, verfijn de zoekcriteria") — er is geen automatische paginering zoals bij sommige andere diensten.
Gepseudonimiseerd voorbeeld:
<Antwoord>
<Referte>550e8400-e29b-41d4-a716-446655440000</Referte>
<Inhoud>
<Contracten>
<Contract>
<Relatie>
<Werkgever>
<RSZNummer>0123456789</RSZNummer>
</Werkgever>
<Werknemer>
<INSZ>850102XXX45</INSZ>
<IdentificatiePersoonGevalideerd Beschrijving="Identificatie persoon OK">1</IdentificatiePersoonGevalideerd>
<Naam>Peeters</Naam>
<Voornaam>Anna</Voornaam>
</Werknemer>
</Relatie>
<Bron Beschrijving="Rijksdienst voor sociale zekerheid">RSZ</Bron>
<Aangifte>
<DimonaNummer>7765432178</DimonaNummer>
<PeriodeTijdstip>
<Begin>
<Datum>2022-01-08</Datum>
</Begin>
<Einde>
<Datum>2024-02-28</Datum>
</Einde>
</PeriodeTijdstip>
<ParitairComite>124</ParitairComite>
<Geannuleerd>0</Geannuleerd>
<DimonaActie Beschrijving="Uitdienst">O</DimonaActie>
</Aangifte>
</Contract>
</Contracten>
</Inhoud>
</Antwoord>
Error-handling
Voor een compleet overzicht, kan je terecht op de MAGDA-foutcodepagina.
Aan deze functie gerelateerde foutcodes:
|
Code |
Toelichting |
|---|---|
|
20002 |
INSZ in de vraag heeft een ongeldige structuur |
|
20003 |
Begindatum van de periode moet kleiner of gelijk zijn aan de einddatum |
|
20007 |
Ondernemingsnummer in de vraag heeft een ongeldige structuur |
|
30001 |
Geen gegevens gevonden voor de vraag |
|
30002 |
Persoonsnummer geannuleerd |
|
30003 |
Onbestaand persoonsnummer |
|
30004 |
Persoon heeft een nieuw INSZ verkregen |
|
30005 |
Te veel gegevens gevonden, verfijn de zoekcriteria |
|
40035 |
Ongeldige combinatie van selectiecriteria |
Bij sommige errors wil je het proces niet laten vastlopen. In dat geval vorm je de technische error (foutcode) om naar een BPMN-error en vang je deze op via een error boundary event.
// Voorbeeld: uitzondering opvangen en gooien als BpmnError
GeefWerkrelatiesResponse response = magda.geefWerkrelaties(uri, hoedanigheid, insz, startDate, endDate, referte);
List<UitzonderingType> uitzonderingen = response.getRepliek()
.getAntwoorden().getAntwoord().getUitzonderingen().getUitzondering();
for (UitzonderingType uitzondering : uitzonderingen) {
String code = uitzondering.getIdentificatie();
if ("30001".equals(code)) {
throw new BpmnError("MAGDA_WERKRELATIES_NIET_GEVONDEN", uitzondering.getDiagnose());
}
if ("30005".equals(code)) {
throw new BpmnError("MAGDA_TE_VEEL_RESULTATEN", uitzondering.getDiagnose());
}
if ("30002".equals(code) || "30003".equals(code) || "30004".equals(code)) {
throw new BpmnError("MAGDA_INSZ_PROBLEEM", uitzondering.getDiagnose());
}
if ("20002".equals(code) || "20007".equals(code)) {
throw new BpmnError("MAGDA_ONGELDIGE_IDENTIFICATIE", uitzondering.getDiagnose());
}
if ("40035".equals(code)) {
throw new BpmnError("MAGDA_ONGELDIGE_CRITERIA", uitzondering.getDiagnose());
}
}