Fouten en oplossingen
VB-PUO-fouten en hun oplossing
52 fouten uit schemavalidatie, verbandscontroles en het feedbackprotocol van de SIVI-berichten, elk met symptoom, oorzaak, oplossing en een fout en goed voorbeeld.
Schemafout
- messageId ontbreekt, is leeg of langer dan 70 tekensSchemafout op commonTechnical/0/messageId: 'must have required property' of 'must NOT have more than 70 characters'.
- originalMessageId ontbreekt in feedback of herverzendingFeedbackbericht wordt zelf afgewezen: 'must have required property originalMessageId'. Bij een herverzending (berichtfunctie 54) zonder originalMessageId ziet de ontvanger niet welk bericht opnieuw is gezonden; de validator geeft daarvoor een waarschuwing.
- afdDefinitionName onjuist (vaste waarde sinds de definitieve Release 2027)Schemafout 'must be equal to constant' op afdDefinitionName; de validator van WTP Data Lab noemt de verwachte waarde. Typisch voor een bericht dat op de pre-release van juli 2026 is gebouwd: het vermeldt de juiste versie 001.05 en valt toch af.
- afdDefinitionVersion onjuist (001.04 versus 001.05)Schemafout 'must be equal to one of the allowed values' op afdDefinitionVersion, of de ontvanger valideert tegen het verkeerde schema en meldt onbekende velden.
- Berichtfunctie ongeldig (ADNFUN 01, 02, 09 of 54)Schemafout op commonFunctional/0/function: waarde niet toegestaan.
- creationDateTime geen geldige date-timeSchemafout 'must match format date-time'.
- puvCode onbekend in codelijst AFDIDPSchemafout 'must match exactly one schema in oneOf' op party/0/puvCode.
- rsinNumber niet 9 positiesSchemafout op rsinNumber (lengte) bij sender, receiver of pensionProvider.
- party.sender: refKey of organizationName ontbreektSchemafout 'must have required property' op de verzendende partij.
- party.contact: emailWork of workPhoneNumber ontbreektSchemafout op de contactpersoon onder de verzender.
- pension.scheme: refKey ontbreekt of pensionSchemeName langer dan 60Schemafout op de regeling.
- startAmount niet in twee decimalen (multipleOf 0.01)Schemafout 'must be multiple of 0.01'.
- Percentages met meer dan twaalf decimalenSchemafout 'must be multiple of' op returnPercentage, protectionReturnPercentage of excessReturnPercentage.
- Cohort-cardinaliteit overschreden (minContains / maxContains)Schemafout 'must contain at least 1 valid item' of 'must contain at most 99999 valid items' op pension.
- participationStatus ongeldig (ADNDNS)Schemafout 'must match exactly one schema in oneOf' op pension.cohort.participationStatus.
- reserveType ongeldig (AFDRES)Schemafout 'must match exactly one schema in oneOf' op reserveType.
- netAmount of netDate ontbreekt in een cashflowblok (bericht 2)Schemafout 'must have required property' op netDate of netAmount, bij een cohort, bij de cashflow onder de regeling of bij een beleggingsportefeuille. Een generieke JSON Schema-validator ziet de fout bij een cohort vaak niet.
- switchType ongeldig (AFDSWI)Schemafout op switchType.
- buySellId ongeldigSchemafout 'must be equal to one of the allowed values' op buySellId.
- collectionAccountIban ongeldig of te langSchemafout op de maximale lengte van het IBAN, of een functionele afwijzing door de fiduciair.
- Meerdere betalingen per regeling of een volledig IBAN onder Release 2026 (bericht 14)Schemafout op het aantal betalingen (hoogstens één item met entityType payment) of op de lengte van collectionAccountIban, bij afdDefinitionVersion 001.04.
- corporateActionType ongeldig (AFDCOA)Schemafout op corporateActionType: de waarde komt niet voor in de codelijst. Bij een bericht dat op de pre-release is gebouwd meestal samen met een fout op het onbekende veld financialInformation.
- originalMessageType 00557 afgewezen: feedback getoetst tegen het schema van de pre-releaseEen feedbackbericht op een corporate action (bericht 15) met originalMessageType = 00557 geeft een schemafout op originalMessageType.
- currencyType geen ISO 4217-codeSchemafout op currencyType (codelijst ISOVAL).
- Onbekend veld (additionalProperties = false)Schemafout 'must NOT have additional properties' met de naam van het extra veld.
- entityType komt niet overeen met de vaste waardeSchemafout 'must be equal to constant' op entityType, vaak gevolgd door 'must contain at least 1 valid item' op de bovenliggende array.
- Bijlage: fileExtension niet pdf, csv of txt, of fileName langer dan 60Schemafout op document.
- Feedback: statusType niet 0 of 8Schemafout op statusType van het feedbackbericht.
- errorCodeExplanation langer dan 1000 tekensHet feedbackbericht zelf wordt afgewezen op lengte.
- Vervallen bericht (7, 8, 9, 11 of 12) verzonden onder Release 2027De ontvanger op Release 2027 kent het berichttype niet: 404 op het endpoint of een afwijzing op afdDefinitionName.
- Schema-draft mismatch: definitions versus $defs, draft 2019-09 versus 2020-12De validator meldt 'can't resolve reference', MissingRefError of 'no schema with key or ref' bij het laden van het schema, nog vóór het bericht wordt getoetst.
Verbandscontrole
- reportingPeriod: endDate ligt vóór startDateHet schema accepteert het bericht; de ontvanger wijst het functioneel af of boekt de stromen in de verkeerde periode.
- reserveIndicator zonder reserveType, of reserveType 99 zonder reserveDescriptionOnder Release 2027 een fout van de verbandscontrole bij reserveType. Onder Release 2026 schema-valide, maar de ontvanger kan de reserve niet typeren en boekt hem als gewoon cohort; bij reserveType 99 zonder omschrijving weet hij niet welke reserve is bedoeld.
- endAge kleiner dan startAge, of geen geheel getalBij decimalen een schemafout 'must be integer'; bij verwisselde grenzen accepteert het schema en wijst de ontvanger af.
- Cohortsom wijkt af van het regelingtotaalSchema-valide, maar de fiduciair of beleggingsadministrateur meldt een reconciliatieverschil op regelingniveau.
- Som van gewogen geprojecteerde uitkeringen ongelijk aan de afdekkings-cashflow (bericht 3)De LDI-manager kan de afdekking niet aansluiten; schema-valide.
- netAmount is niet het saldo van contributionAmount en withdrawalAmountSchema-valide; de ontvanger weet niet welk bedrag leidend is, of telt de stromen dubbel.
- Regeling met cohorten én portefeuilles, of zonder uitsplitsing of cashflow (berichten 2 en 3)Schema-valide, maar de ontvanger kan de stromen of de projectie niet aan de juiste route toewijzen. De validator van WTP Data Lab meldt een fout bij de regeling.
- tradeAmount en tradeQuantity beide gevuld of beide leeg (bericht 5)De ontvanger wijst de order functioneel af (feedback statusType 0) of voert een onbedoelde hoeveelheid uit.
- switchfrom zonder switchto, of financialInformationRef ontbreektDe ontvanger kan het switchpaar niet vormen en wijst de order af.
- tradeAmount of tradeQuantity negatiefSchema-valide, maar de ontvanger interpreteert het teken verschillend van de bedoeling.
- tradeQuantity × tradePrice is niet tradeAmount (bericht 6)Schema-valide, maar de PUO kan de bevestiging niet sluitend in de unit-administratie verwerken. De validator van WTP Data Lab meldt een fout bij tradeAmount.
- collectionAccountBic ongeldigFunctionele afwijzing van de betaalinstructie.
- Chunking: chunkSequenceNumber of totalNumberOfChunks inconsistentDe ontvanger kan de reeks niet sluiten: volgnummer hoger dan het totaal, dubbel volgnummer of wisselend totaal binnen één currentChunkId.
Proces / protocol
- Dubbele messageId na acceptatie (HTTP 400 met feedback)De ontvanger antwoordt HTTP 400 met een feedbackbericht (statusType 0) op een bericht dat inhoudelijk correct lijkt.
- originalMessageId verwijst naar een onbekend berichtDe ontvanger kan de feedback of correctie niet plaatsen en meldt functioneel 'onbekend bericht'.
- testMessage = true in productieHet bericht wordt geaccepteerd maar niet verwerkt, of juist als test genegeerd terwijl het productie was.
- Chunking: ontbrekende chunk bij de ontvangerDe reeks blijft open; de inhoud wordt niet verwerkt en de verzender krijgt alleen feedback per ontvangen chunk.
- HTTP 400 bij synchrone validatie: hoe lees je het feedbackberichtHet endpoint antwoordt 400 Bad Request met een JSON-body.
- HTTP 202 zonder callback: de asynchrone feedback blijft uitNa 202 Accepted volgt geen feedbackbericht met geaccepteerd of afgewezen.
- Panic-scenario: de callback zelf wordt afgewezenDe ontvanger stuurt zijn feedback (geaccepteerd of afgewezen) als callback en krijgt daarop 400 terug.
- Fout ontdekt na acceptatie: het correctieprotocolEen geaccepteerd en verwerkt bericht blijkt inhoudelijk fout (verkeerd bedrag, verkeerd cohort).
