IPF Processing Data

IPF Processing Data project consists of several modules responsible for producing and consuming data generated by IPF applications via different transports (currently kafka and http are supported).

Producing or exporting data is referred to as egress, whereas consuming data is referred to as ingress.

Data belonging, or resulting from, a transaction flow, such as a MDS Object, is egressed by IPF processing nodes throughout its lifecycle.

A simple example is an instant payment. Initiated by the bank with a pain.001, settled via the CSM with a pacs.008/pacs.002, and completed with a pain.002 notification to the bank. A simple flow like this contains many steps, involves receiving and sending messages to other systems, in addition to writing events, and surfacing business specific data elements at each step.

An instance of this flow would potentially produce 4 domain events, 10 MDS objects, 4 message log entries, custom data elements, and additional identifiers, not to mention the numerous system events. The flow itself is also data related to the transaction, including its version, the states, and its graph.

The following table demonstrates the data types produced, excluding system events.

Description Data Types Produced

Flow application starts up and produces flow definitions

a ProcessFlowDefinition describing the payment flow.

Bank sends a pain.001 and initiates the Flow

pain.001 MessageLog, first ProcessFlowEvent in the flow, 3 x MdsObject representing the pain.001, an optional custom identifier for the payment, and any other optional CustomData objects

Flow sends a pacs.008 to the CSM

pacs.008 MessageLog, a ProcessFlowEvent, 2 x MdsObject representing the pacs.008

CSM responds with a pacs.002

pacs.002 MessageLog, a ProcessFlowEvent, 2 x MdsObject representing the pacs.002

Flow sends a pain.002 to the Bank

pain.002 MessageLog, a ProcessFlowEvent, 3 x MdsObject representing the pain.002

You can read more about the Data Types and Objects in the Concepts section.