The GiroPro Data Lake

The GiroPro platform records everything that happens - an investor is onboarded, an order is placed, a price is updated - as events: plain JSONL documents delivered to your own cloud storage. Each event carries an envelope and a payload:

{
  "Id": "36524e3b-9ef4-413c-9e14-2ad2a203a904",
  "TopicName": "common_c_data_duplication_ledgeritem_changed",
  "TimeStampSend": "2026-05-27T10:52:19.1716653Z",
  "DefinitionVersion": "1.0.25",
  "LabelId": "e38a3720-5cb9-486a-a550-d8f1b0cc3b3d",
  "PayloadType": "Ledger_MS.BaseControllers.LedgerItem",
  "Payload": { "...": "the entity, see the Glossary for its meaning" }
}

The payload is an entity as defined in the Glossary - a Ledger, a JournalEntry, an Asset, and so on.

Important Note:

  • It is highly recommended to not process the payload at all in the first layer of your data lake. (E.g. Staging or Bronze).
    • This allows for any issues or mistakes in Silver to be easily corrected with a backfill from the first layer.
  • Events are adds & updates (for communication items: deletes too). The same update can be delivered more than once, and every update carries the full entity. To build current state: deduplicate on the envelope Id, then keep the latest event per Payload.id (ordered by TimeStampSend).

In this section

More guides (delivery guarantees, schema evolution) will follow.


Table of contents


Back to top

© 2026 Pengine.