Release 2027 (pre-release) · Schemaversie001.05 · Actief
SIVI-bericht 3 (0001c): Pensioenprojectie (VB-PUO)
Bericht 3 bevat de geprojecteerde toekomstige pensioenuitkeringen per cohort en per uitkeringsdatum, plus de met het afdekkingspercentage gewogen bedragen. Daarmee kan de fiduciair of LDI-manager de renteafdekking (beschermingsportefeuille) inrichten op de werkelijke verplichtingenstructuur van het fonds.
Berichtstructuur
Entiteiten met cardinaliteit [min..max] en aantal attributen; klik voor de entiteitpagina.
- chunking.default[0..1] · 4 attr.
- commonFunctional.default[1..1] · 4 attr.
- commonTechnical.default[1..1] · 3 attr.
- party.receiver[1..1] · 3 attr.
- party.sender[1..1] · 4 attr.
- party.contact[0..9] · 2 attr.
- document.default[0..99] · 3 attr.
- party.pensionProvider[1..1] · 3 attr.
- pension.scheme[1..999] · 2 attr.
- financialInformation.reportingPeriod[1..1] · 1 attr.
- financialTransaction.payment[1..99999] · 4 attr.
- pension.cohort[0..99999] · 8 attr.
- financialTransaction.payment[0..9999] · 4 attr.
- pension.scheme[1..999] · 2 attr.
Attributen(45)
| Entiteit | Attribuut | Type | V/O | Codelijst | Omschrijving |
|---|---|---|---|---|---|
| chunking.default | currentChunkId | string | V | Unieke referentie van de huidige chunk. | |
| chunking.default | chunkSequenceNumber | integer | V | Volgnummer van de huidige chunk. | |
| chunking.default | totalNumberOfChunks | integer | V | Totale aantal chunks waarin het bericht is opgesplitst. | |
| chunking.default | chunkFragmentPaths | array[string] | V | Array van JMESPath-verwijzingen naar de berichtdelen die gebruikt zijn binnen deze chunk. | |
| commonFunctional.default | afdDefinitionVersion | string · max 80 | V | 001.05 | Met AFD definitieversienummer wordt aangegeven over welke versie van de (product)definitie wordt gecommuniceerd. |
| commonFunctional.default | afdDefinitionName | string · max 80 | V | De AFD definitienaam van o.a. webservices en verzekeringsproducten. | |
| commonFunctional.default | originalMessageId | string · max 70 | O | MessageId van het oorspronkelijke bericht, dat wordt vervangen door dit bericht. | |
| commonFunctional.default | function | string | V | ADNFUN | Berichtfunctie |
| commonTechnical.default | creationDateTime | string · format date-time | V | Datum en tijd van het aanmaken van het bericht. | |
| commonTechnical.default | messageId | string · max 70 | V | Unique identification of the message. (AFD 2.0 only) | |
| commonTechnical.default | testMessage | boolean | O | Indicatie of sprake is van een testbericht. | |
| party.receiver | refKey | string · max 70 | V | Entiteitsreferentie is een unieke referentie sleutel die aan een entiteit wordt toegekend. | |
| party.receiver | organizationName | string · max 60 | V | Naam beroeps of branche organisatie. | |
| party.receiver | rsinNumber | string · max 9 | O | Governmental identification number for legal entities and associations. (AFD 2.0 only) | |
| party.sender | refKey | string · max 70 | V | Entiteitsreferentie is een unieke referentie sleutel die aan een entiteit wordt toegekend. | |
| party.sender | applicationSenderName | string · max 60 | O | Naam van de applicatie die de gegevens verzendt. | |
| party.sender | organizationName | string · max 60 | V | Naam beroeps of branche organisatie. | |
| party.sender | rsinNumber | string · max 9 | O | Governmental identification number for legal entities and associations. (AFD 2.0 only) | |
| party.contact | workPhoneNumber | string · max 60 | V | Telefoonnummer werk | |
| party.contact | emailWork | string · max 60 | V | E-mail adres werk | |
| document.default | refKey | string · max 70 | V | Entiteitsreferentie is een unieke referentie sleutel die aan een entiteit wordt toegekend. | |
| document.default | fileExtension | string | V | pdf | csv | txt | Extensienaam van het bestand waaronder de bijlage kan worden opgeslagen. Bijvoorbeeld "PDF", "DOC", etc. |
| document.default | fileName | string · max 60 | V | Naam van het bestand waaronder de bijlage kan worden opgeslagen. | |
| party.pensionProvider | organizationName | string · max 60 | V | Naam beroeps of branche organisatie. | |
| party.pensionProvider | rsinNumber | string · max 9 | O | Governmental identification number for legal entities and associations. (AFD 2.0 only) | |
| party.pensionProvider | puvCode | string | V | AFDIDP | Pensioenuitvoerder |
| pension.scheme | refKey | string · max 70 | V | Entiteitsreferentie is een unieke referentie sleutel die aan een entiteit wordt toegekend. | |
| pension.scheme | pensionSchemeName | string · max 60 | V | Naam van de pensioenregeling. | |
| financialInformation.reportingPeriod | projectionDate | string · format date | V | Datum van projectie van pensioenuitkeringen. | |
| financialTransaction.payment | refKey | string · max 70 | V | Entiteitsreferentie is een unieke referentie sleutel die aan een entiteit wordt toegekend. | |
| financialTransaction.payment | hedgedExpectedPensionPaymentAmount | number · multipleOf 0.01 | V | Af te dekken kasstromen per periode. | |
| financialTransaction.payment | expectedPensionPaymentDate | string · format date | V | Pensioenuitkeringsmoment (eventueel per regeling). | |
| financialTransaction.payment | amount | number · multipleOf 0.01 | V | Bedrag | |
| pension.cohort | refKey | string · max 70 | V | Entiteitsreferentie is een unieke referentie sleutel die aan een entiteit wordt toegekend. | |
| pension.cohort | description | string · max 60 | V | Omschrijving | |
| pension.cohort | reserveDescription | string · max 60 | O | Omschrijving van het reserve. | |
| pension.cohort | reserveType | string | O | AFDRES | Type reserve |
| pension.cohort | reserveIndicator | boolean | V | Indicatie of een reserve aanwezig is / van toepassing is. | |
| pension.cohort | startAge | number · multipleOf 1 | O | Beginleeftijd. | |
| pension.cohort | endAge | number · multipleOf 1 | O | Eindleeftijd. | |
| pension.cohort | participationStatus | string | O | ADNDNS | Deelname status |
| financialTransaction.payment | refKey | string · max 70 | V | Entiteitsreferentie is een unieke referentie sleutel die aan een entiteit wordt toegekend. | |
| financialTransaction.payment | hedgedExpectedPensionPaymentAmount | number · multipleOf 0.01 | O | Af te dekken kasstromen per periode. | |
| financialTransaction.payment | expectedPensionPaymentDate | string · format date | V | Pensioenuitkeringsmoment (eventueel per regeling). | |
| financialTransaction.payment | amount | number · multipleOf 0.01 | V | Bedrag |
Voorbeeldbericht
Bron voorbeeld: SIVI voorbeeldbericht (Voorbeeldbericht_3). Waarden zijn fictief.
{
"commonTechnical": [
{
"entityType": "default",
"creationDateTime": "2023-12-29T12:30:00Z",
"messageId": "msg987654",
"testMessage": true,
"party": [
{
"entityType": "sender",
"refKey": "send001",
"organizationName": "Insurance Company B",
"rsinNumber": "987654321",
"applicationSenderName": "InsurAppV3"
},
{
"entityType": "receiver",
"refKey": "recv001",
"organizationName": "Pension Fund A",
"rsinNumber": "123456789"
}
]
}
],
"commonFunctional": [
{
"entityType": "default",
"afdDefinitionName": "VBPUO-001.00-Bericht_3._Pensioenprojectie_(0001c)",
"afdDefinitionVersion": "001.05",
"function": "01",
"originalMessageId": "orig123456"
}
],
"party": [
{
"entityType": "pensionProvider",
"organizationName": "Pension Provider XYZ",
"rsinNumber": "555666779",
"puvCode": "U0003",
"pension": [
{
"entityType": "scheme",
"refKey": "scheme01",
"pensionSchemeName": "Standard Retirement Plan",
"financialInformation": [
{
"entityType": "reportingPeriod",
"projectionDate": "2024-01-01"
}
],
"financialTransaction": [
{
"entityType": "payment",
"refKey": "pay001",
"hedgedExpectedPensionPaymentAmount": 150000,
"expectedPensionPaymentDate": "2045-01-01",
"amount": 300000
}
]
},
{
"entityType": "scheme",
"refKey": "scheme02",
"pensionSchemeName": "Advanced Retirement Plan",
"financialInformation": [
{
"entityType": "reportingPeriod",
"projectionDate": "2025-01-01"
}
],
"financialTransaction": [
{
"entityType": "payment",
"refKey": "pay002",
"hedgedExpectedPensionPaymentAmount": 200000,
"expectedPensionPaymentDate": "2045-01-01",
"amount": 400000
}
],
"pension": [
{
"entityType": "cohort",
"refKey": "cohort2030",
"description": "2030 Retirement Group",
"participationStatus": "16",
"reserveIndicator": false,
"startAge": 360,
"endAge": 840,
"financialTransaction": [
{
"entityType": "payment",
"refKey": "pay010",
"hedgedExpectedPensionPaymentAmount": 48000,
"expectedPensionPaymentDate": "2060-01-01",
"amount": 100000
},
{
"entityType": "payment",
"refKey": "pay020",
"hedgedExpectedPensionPaymentAmount": 135000,
"expectedPensionPaymentDate": "2050-01-01",
"amount": 300000
}
]
}
]
}
]
}
]
}Regels en verbandscontroles
- Per cohort wordt per toekomstige uitkeringsdatum een bedrag (amount) en een afgedekt bedrag (hedgedExpectedPensionPaymentAmount) opgenomen; de som van de gewogen geprojecteerde uitkeringen per cohort is gelijk aan de totale afdekkings-cashflow per toekomstige periode.
- Het aantal uitkeringen per cohort is 0 tot 9999 (sinds Release 2026); lege cohorten expliciet met 0 of weglaten.
- expectedPensionPaymentDate is de verwachte uitkeringsdatum (documentatie-update oktober 2025, issue #80); jaarcohorten worden beschreven met startAge en endAge (issue #88).
- De projectie betreft de totale populatie; deelprojecties per cohort volgen dezelfde tijdas.
Valkuilen
- Bericht 3 is het grootste bericht in de keten: honderden cohorten maal tientallen jaren aan uitkeringsdatums. SIVI publiceert juist voor dit bericht chunking-voorbeelden; gebruik ze.
- Een projectie in nominale bedragen zonder het afgedekte bedrag is voor de LDI-manager onbruikbaar; vul beide velden.
Fouten en oplossingen
- 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'.
- 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.
- 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.
- 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.
- 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.
- Som van gewogen geprojecteerde uitkeringen ongelijk aan de afdekkings-cashflow (bericht 3)De LDI-manager kan de afdekking niet aansluiten; schema-valide.
- Chunking: chunkSequenceNumber of totalNumberOfChunks inconsistentDe ontvanger kan de reeks niet sluiten: volgnummer hoger dan het totaal, dubbel volgnummer of wisselend totaal binnen één currentChunkId.
- Chunking: ontbrekende chunk bij de ontvangerDe reeks blijft open; de inhoud wordt niet verwerkt en de verzender krijgt alleen feedback per ontvangen chunk.
Veelgestelde vragen
Waarom staat de pensioenprojectie in een apart bericht?
Omdat de ontvanger anders is: de renteafdekking wordt door de fiduciair of een gespecialiseerde LDI-manager ingericht, terwijl vermogen en cashflow vooral de beleggingsadministratie voeden.
Hoe ver vooruit projecteer ik?
De standaard legt geen horizon vast; in de praktijk volgt de horizon de rentetermijnstructuur en het afdekkingsbeleid van het fonds, vaak 60 jaar of meer.
Wijzigingsgeschiedenis
- v1.2.0 (november 2024): maximaal 9999 uitkeringen per cohort.
- v1.3.0 (Release 2026): cardinaliteit 0 tot 9999; chunking; documentatie issues #80 en #88.
- v1.4.0 (Release 2027): JSON Schema 2020-12.
Schema-bestand: VBPUO-001.00-Bericht_3._Pensioenprojectie_(0001c)_v5.json · JSON-schema (001.05) · GitHub
