Errors and fixes
VB-PUO errors and their fixes
48 errors from schema validation, consistency checks and the feedback protocol of the SIVI messages, each with symptom, cause, fix and a wrong and right example.
Schema error
- messageId missing, empty or longer than 70 charactersSchema error on commonTechnical/0/messageId: 'must have required property' or 'must NOT have more than 70 characters'.
- originalMessageId missing in feedback or resendFeedback message is itself rejected: 'must have required property originalMessageId'. On a resend the receiver cannot link the correction.
- afdDefinitionName incorrectThe receiver routes the message incorrectly or rejects it; in the feedback message afdDefinitionName is a fixed value (const) and a deviation yields a schema error.
- afdDefinitionVersion incorrect (001.04 versus 001.05)Schema error 'must be equal to one of the allowed values' on afdDefinitionVersion, or the receiver validates against the wrong schema and reports unknown fields.
- Message function invalid (ADNFUN 01, 02, 09 or 54)Schema error on commonFunctional/0/function: value not allowed.
- creationDateTime not a valid date-timeSchema error 'must match format date-time'.
- puvCode unknown in code list AFDIDPSchema error 'must match exactly one schema in oneOf' on party/0/puvCode.
- rsinNumber not 9 positionsSchema error on rsinNumber (length) at sender, receiver or pensionProvider.
- party.sender: refKey or organizationName missingSchema error 'must have required property' on the sending party.
- party.contact: emailWork or workPhoneNumber missingSchema error on the contact under the sender.
- pension.scheme: refKey missing or pensionSchemeName longer than 60Schema error on the scheme.
- startAmount not in two decimals (multipleOf 0.01)Schema error 'must be multiple of 0.01'.
- Percentages with more than twelve decimalsSchema error 'must be multiple of' on returnPercentage, protectionReturnPercentage or excessReturnPercentage.
- Cohort cardinality exceeded (minContains / maxContains)Schema error 'must contain at least 1 valid item' or 'must contain at most 99999 valid items' on pension.
- participationStatus invalid (ADNDNS)Schema error 'must match exactly one schema in oneOf' on pension.cohort.participationStatus.
- reserveType invalid (AFDRES)Schema error 'must match exactly one schema in oneOf' on reserveType.
- switchType invalid (AFDSWI)Schema error on switchType.
- buySellId invalidSchema error 'must be equal to one of the allowed values' on buySellId.
- collectionAccountIban invalid or too longSchema error on the maximum length of the IBAN, or a functional rejection by the fiduciary.
- corporateActionType invalid (AFDCAE, becoming AFDCOA)Schema error 'must match exactly one schema in oneOf' on corporateActionType.
- originalMessageType 00557 not accepted by feedback schema 001.02A feedback message on a corporate action (message 15) with originalMessageType = 00557 gives a schema error on originalMessageType.
- currencyType not an ISO 4217 codeSchema error on currencyType (code list ISOVAL).
- Unknown field (additionalProperties = false)Schema error 'must NOT have additional properties' with the name of the extra field.
- entityType does not match the fixed valueSchema error 'must be equal to constant' on entityType, often followed by 'must contain at least 1 valid item' on the parent array.
- Attachment: fileExtension not pdf, csv or txt, or fileName longer than 60Schema error on document.
- Feedback: statusType not 0 or 8Schema error on statusType of the feedback message.
- errorCodeExplanation longer than 1000 charactersThe feedback message itself is rejected on length.
- Discontinued message (7, 8, 9, 11 or 12) sent under Release 2027The receiver on Release 2027 does not know the message type: 404 on the endpoint or a rejection on afdDefinitionName.
- Schema draft mismatch: definitions versus $defs, draft 2019-09 versus 2020-12The validator reports 'can't resolve reference' or 'no schema with key or ref' when loading the schema, before the message is tested.
Consistency check
- reportingPeriod: endDate before startDateThe schema accepts the message; the receiver rejects it functionally or books the flows in the wrong period.
- reserveIndicator without reserveType or reserveDescriptionSchema-valid, but the receiver cannot type the reserve and books it as an ordinary cohort.
- endAge smaller than startAge, or not an integerWith decimals a schema error 'must be integer'; with swapped bounds the schema accepts and the receiver rejects.
- Cohort sum deviates from the scheme total (consistency check)Schema-valid, but the fiduciary or investment administrator reports a reconciliation difference at scheme level.
- Sum of weighted projected payments unequal to the hedging cashflow (message 3)The LDI manager cannot reconcile the hedge; schema-valid.
- contributionAmount/withdrawalAmount and netAmount filled togetherSchema-valid; the receiver double-counts the flows or does not know which is leading.
- tradeAmount and tradeQuantity both filled or both empty (message 5)The broker rejects the order functionally (feedback statusType 0) or executes an unintended quantity.
- switchfrom without switchto, or financialInformationRef missingThe broker cannot form the switch pair and rejects the order.
- tradeAmount or tradeQuantity negativeSchema-valid, but the receiver interprets the sign differently from the intention.
- collectionAccountBic invalidFunctional rejection of the payment instruction.
- Chunking: chunkSequenceNumber or totalNumberOfChunks inconsistentThe receiver cannot close the series: sequence number higher than the total, duplicate sequence number or varying total within one currentChunkId.
Process / protocol
- Duplicate messageId after acceptance (HTTP 400 with feedback)The receiver answers HTTP 400 with a feedback message (statusType 0) to a message that looks correct in content.
- originalMessageId refers to an unknown messageThe receiver cannot place the feedback or correction and reports 'unknown message' functionally.
- testMessage = true in productionThe message is accepted but not processed, or ignored as a test while it was production.
- Chunking: missing chunk at the receiverThe series stays open; the content is not processed and the sender only gets feedback per received chunk.
- HTTP 400 on synchronous validation: how to read the feedback messageThe endpoint answers 400 Bad Request with a JSON body.
- HTTP 202 without callback: the asynchronous feedback does not arriveAfter 202 Accepted no feedback message with accepted or rejected follows.
- Panic scenario: the callback itself is rejectedThe receiver sends its feedback (accepted or rejected) as a callback and gets 400 back on it.
- Error discovered after acceptance: the correction protocolAn accepted and processed message turns out to be wrong in content (wrong amount, wrong cohort).
