SIVI chunking explained

Some messages, particularly Message 3 (Pensioenprojectie), can get large. The standard therefore lets a sender split a large message into smaller sub-messages, called chunks.

When to chunk

When a message exceeds the size agreed with the receiver. The standard’s default is 4 MB, and the actual limit is agreed between the parties; many agree a higher limit such as 10 MB. Message 3 (Pensioenprojectie) is often 10–15 MB and can be much larger, so chunking is part of normal operations. The standard sets no maximum number of chunks. Feedback messages are never chunked.

The rules

  • Each chunk is a complete message. It carries the full commonTechnical and commonFunctional blocks and is valid against the schema on its own.
  • All chunks share one messageId, the identifier of the overall logical message. This is the only case where messages share a messageId.
  • Each chunk has a chunking block containing currentChunkId, chunkSequenceNumber, totalNumberOfChunks and chunkFragmentPaths. When the block is present, all of these are mandatory.
  • chunkFragmentPaths are JMESPath expressions that tell the receiver which parts of the message the chunk carries.

Reassembly

The receiver collects chunks by messageId, uses chunk 1 as the template, places the fragments from the other chunks, and treats the message as complete when it has received totalNumberOfChunks chunks. Chunks may arrive in any order.

When something goes wrong

One failed or missing chunk makes the whole logical message invalid. The sender must resubmit the complete message, with a new messageId and a new set of chunks. There is no “resend chunk 73”.

Your own systems may need smaller pieces

Chunking is about the exchange between parties. Inside your organisation, systems may have tighter limits (some core systems accept only about 2 MB). That is a separate step: split the received message into pieces each system can process, on business boundaries, with control totals and a manifest, so nothing goes missing. Unlike SIVI chunks, a failed internal piece can be resent on its own.

Practical tips

  • Measure size on the actual bytes you send, including headers, and agree whether “4 MB” means 4,000,000 bytes or 4 MiB, compressed or not.
  • Split along the repeating lists (for example cohorts and their payments). If one indivisible item exceeds the limit on its own, stop with a clear error rather than produce an invalid message.
  • Agree with each counterparty how fragment paths are written and how long to wait for missing chunks.

Source: VB-PUO manual §2 and §7.6. Bron: SIVI – VB-PUO Standaard.