ODS Modelo de Persistencia
Este documento describe el IPF Operational Data Store (ODS) implementado en MongoDB.
Diagrama de Visión General
A continuación se presenta una vista simplificada de las principales relaciones entre las colecciones; no contiene la lista completa de campos, sino solo aquellos que se relacionan con asociaciones con otras colecciones a través de identidades.
Patrones de Uso
ODSestá centrado en un Unit of Work(uow). Un uow representa una transacción única que ha sido procesada a través de una implementación de IPF y tiene límites bien definidos. Las Unidades de Trabajo más comunes son Pagos y Devoluciones, pero también puede haber otras acciones como trabajos de Procesamiento de Archivos o Tareas Humanas.
El uowId el campo es proporcionado por el software de procesamiento de pagos (IPF) en todos los elementos de datos emitidos a la ODS a través de la IPF Processing Data Salida. Una vez que hayamos identificado el uowId para una unidad de trabajo dada, entonces es trivial capturar todos los puntos de datos relacionados con ella, desde el MDS, el PDS, el proceso y el custom colección.
Desde una perspectiva de consulta de datos, la ruta común es identificar el registro de resumen asociado, que actúa como una "columna vertebral" agregando campos importantes de los diversos puntos de datos para una unidad de trabajo dada. Esta agregación, tal como se aplica en todos los flujos de procesamiento de IPF, es IPF services - Los valores capturados aquí son los campos clave que un usuario o un sistema puede querer buscar (con un enfoque inicial en pagos/devoluciones).
Esquema del Documento Versioning
Los documentos en cada una de estas colecciones que ODS utiliza un esquema descrito a continuación en el Descripción General de la Colección.
ODSpersiste un schemaVersion campo en estos documentos para indicar qué versión del esquema se utiliza, y esta versión se incrementa a medida que el esquema evoluciona.
Ver el ODS estrategia de versionado de esquemas para más información.
| Si un documento no contiene versionado de esquema, se asume que es V1, excepto en el caso de la colección pds donde hay varias variaciones del esquema sin schemaVersion campo (cambios que precedieron a la versionado del esquema). ODSdetectará la versión del esquema para estos documentos al leer. |
Descripción General de la Colección
Pagos
Nombre de la colección:`payments`
Almacena individual MDS objetos creados en la iniciación del pago y actualizados a través del ciclo de vida del procesamiento de pagos.
Un " MDS "Objeto" se identifica por su paymentObjectId, dentro del alcance de un dado unitOfWorkId.
La colección está modelada como un registro de solo anexado con actualizaciones a un MDS objeto con un dado paymentObjectId representado como múltiples entradas, diferenciadas por el processObjectReference, que es la tercera parte del índice compuesto único:`uowId_mdsObjectId_processObjectReference`
Versión del Esquema 1
| Field | Description | Example |
|---|---|---|
_id |
PK - Autogenerated by MongoDB |
63e0d35dcbd3c015141aad53 |
createdAt |
Timestamp at which this object was originally created by the originating system (This is NOT the time that the ODS received the object) |
2023-02-06T10:15:54.711+0000 |
schemaVersion |
The version of the schema that this document conforms to. If this field is missing the version is assumed to be 1. |
1 |
unitOfWorkId |
Part of the Processing Context. A unique IPF identifier for a given transaction/request that has been submitted to IPF and who’s uniqueness is only guaranteed by the generator and not enforced by IPF. For Instant payments this relates to a single Payment Process, for Bulk/SCT there would be different unitOfWorkId for each level of processing (Group, Instruction, and Transaction) |
624d7fa649f0f4b37093fe30 |
clientRequestId |
Part of the Processing Context. An external identifier may have been provided to IPF by a client during Payment Initiation to identify a payment within IPF. |
d708ef96-e25f-4da2-82e1-4172c0358899 |
associationId |
Part of the Processing Context. An identifier that associates the object with a specific business process such as a Process Flow |
InitiationFlow|88a40683-107f-480f-bec2-b9aaef24d3bb |
primaryAssociation |
Most often the persistenceId of an IPF Processing Flow |
InitiationFlow|88a40683-107f-480f-bec2-b9aaef24d3bb |
processingEntity |
Part of the Processing Context. The financial entity responsible for the payment processing. |
UNKNOWN |
source |
The source system that provided this object to the ODS, could most likely be an IPF Service but may be a Bank System/Operator directly. |
ipf-flow |
checkpoint |
The object that caused this ISO20022 object |
PROCESS_FLOW_EVENT|IpftutorialflowV2|6b1b4ab0-dead-4032-b62b-eb66f677c0f1|8 |
processObjectReference |
Identifier of the originating process object, on all current scenarios this is the EventId of the Domain Event |
InitiationFlow|88a40683-107f-480f-bec2-b9aaef24d3bb|1 |
sequenceNumber |
The internal sequence for the mds object, usually derived via the sequence for the source ProcessObject, e.g. the Domain Event in the context of its associated Process Flow. |
2 |
paymentObjectId |
A unique identifier of the mds object, provided by the payment processing service (IPF). The current identify function being used is uowId + businessDataFieldname + eventSequence + mdsObjectTypeName |
bc3d6020-02c2-43e1-84ad-662267e32ba3|PaymentInitiation|1|PaymentInstruction |
parentPaymentObjectId |
Reference to the parent’s PaymentObjectId |
bc3d6020-02c2-43e1-84ad-662267e32ba3|PaymentInitiation|0|CustomerCreditTransferInitiation |
objectType |
Identifies the type of mds object, i.e. which ISO20022 fundamental message component |
PAIN_001_PAYMENT_INSTRUCTION |
typeName |
TODO |
FIToFICustomerCreditTransfer |
messageDefinition |
The top-level message definition name |
pacs.008.001.08 |
content.* |
A JSON subdocument of content |
<json subdocument of the content> |
content.json |
The JSON representation of the ISO20022 object |
- |
metadata.* |
A JSON subdocument of metadata for the ISO20022 object. Simple key-value pairs where both key and value are strings |
<json subdocument of the metadata> |
searchFields.()* |
A Set of common searchable (indexed) fields for ISO objects |
- |
A continuación se muestra un registro de un pain.001 Bloque de Instrucciones de Pago.
{
"_id": {
"$oid": "675f0c96f58c972c1d30bac2"
},
"createdAt": {
"$date": "2023-02-07T10:31:36.718+0000"
},
"schemaVersion": 1,
"unitOfWorkId": "7515b096-b126-4e01-a732-c28d1b5f0ea6",
"clientRequestId": "UNKNOWN",
"associationId": "InitiationFlow|f0a9684a-467e-4e60-9e6e-efe00a860305",
"primaryAssociation": "InitiationFlow|f0a9684a-467e-4e60-9e6e-efe00a860305",
"processingEntity": "UNKNOWN",
"source": "ipf-flow",
"checkpoint": "PROCESS_FLOW_EVENT|f0a9684a-467e-4e60-9e6e-efe00a860305|1",
"processObjectReference": "InitiationFlow|f0a9684a-467e-4e60-9e6e-efe00a860305|1",
"sequenceNumber": 1,
"paymentObjectId": "7515b096-b126-4e01-a732-c28d1b5f0ea6|PaymentInitiation|1|PaymentInstruction",
"parentPaymentObjectId": "7515b096-b126-4e01-a732-c28d1b5f0ea6|PaymentInitiation|0|CustomerCreditTransferInitiation",
"objectType": "PAIN_001_PAYMENT_INSTRUCTION",
"typeName": "PaymentInstruction",
"messageDefinition": "pain.001.001.09",
"content": {
"json": "{\"pmtInfId\":\"ApwciBTlXXQGNckhDuhlJDnygEoDtKAbzun\",\"nbOfTxs\":\"1\",\"ctrlSum\":7.16,\"pmtTpInf\":{\"svcLvl\":[{\"cd\":\"SEPA\"}],\"lclInstrm\":{\"cd\":\"INST\"}},\"reqdExctnDt\":{\"dt\":\"2023-02-07\"},\"dbtr\":{\"nm\":\"Isabelle Mitchell\",\"id\":{\"orgId\":{\"anyBIC\":\"ICONGBM0\"}}},\"dbtrAcct\":{\"id\":{\"iban\":\"GB74FBNFUHQJRNHBRHMXGBZCGIVRDY\"}},\"dbtrAgt\":{\"finInstnId\":{\"bicfi\":\"ICONGBA1\"}}}"
},
"metadata": {
"key": "value"
},
"searchFields": {
"debtorBIC": "icongbm0",
"debtorAccount": "gb74fbnfuhqjrnhbrhmxgbzcgivrdy",
"paymentInstructionId": "ApwciBTlXXQGNckhDuhlJDnygEoDtKAbzun",
"messageId": "XIrNfxNPubaUGFvnuntjTYWnintRDfYLKFT",
"debtorName": "isabelle mitchell",
"debtorAgentBIC": "icongba1"
}
}
Búsqueda e Indexación
MDSse pueden buscar objetos a través de la searchFields.* campos. Estos abarcan versiones de esquema, y como resultado, también lo hacen los índices. A veces, se requerirá un índice para soportar versiones de esquema más antiguas, y puede que sea necesario añadir índices para soportar versiones de esquema más nuevas.
| Field | Example |
|---|---|
searchFields.accountServicerReference |
|
searchFields.amount |
7.16 |
searchFields.assignmentId |
|
searchFields.bankTransactionCode |
|
searchFields.bookingDate |
|
searchFields.cancellationId |
|
searchFields.cancellationStatusId |
|
searchFields.creationDateTime |
|
searchFields.creditorAccount |
gb24adkgjwyyhujwrobfjpgdhgtiki |
searchFields.creditorAgentBIC |
icongba1 |
searchFields.creditorBIC |
icongbl0 |
searchFields.creditorName |
adam white |
searchFields.creditDebitIndicator |
|
searchFields.currency |
USD |
searchFields.debtorAccount |
gb74fbnfuhqjrnhbrhmxgbzcgivrdy |
searchFields.debtorAgentBIC |
icongba1 |
searchFields.debtorBIC |
icongbm0 |
searchFields.debtorName |
isabelle mitchell |
searchFields.endToEndId |
ANVnAMEdBCwvsNsCDUtlBRnOBMPTXGMcpaR |
searchFields.entryReference |
|
searchFields.initiatingPartyName |
|
searchFields.initiatingPartyId |
|
searchFields.instructedAgent |
|
searchFields.instructingAgent |
|
searchFields.instructionId |
|
searchFields.messageId |
XIrNfxNPubaUGFvnuntjTYWnintRDfYLKFT |
searchFields.notificationIdentifier |
|
searchFields.originalmessageId |
|
searchFields.paymentInstructionId |
ApwciBTlXXQGNckhDuhlJDnygEoDtKAbzun |
searchFields.reasonCode |
|
searchFields.reportingAccount |
|
searchFields.returnId |
|
searchFields.status |
|
searchFields.statusCode |
|
searchFields.statusRequestId |
|
searchFields.transactionId |
|
searchFields.uetr |
A continuación se presentan los índices requeridos para el payments colección. Esta no es una lista completa, sino el mínimo absoluto para un funcionamiento correcto. Consulte Indexación Para más información y la lista completa de índices.
| Index Name | Fields | Options |
|---|---|---|
id |
_id |
unique |
unitOfWorkId_1_paymentObjectId_1_processObjectReference_1 |
unitOfWorkId (ascending) - paymentObjectId (ascending) - procesObjectReference (ascending) |
unique |
PDS
Nombre de la colección:`pds`
Tiendas PDS objetos que han sido capturados durante el procesamiento de pagos. PDSlos objetos pueden ser tipos definidos por IPF, o específicos del cliente custom PDS tipos.
A PDS El objeto se identifica por la unidad de trabajo a la que pertenece y su nombre. Diferentes versiones de eso PDS Los objetos se distinguen por el número de secuencia de evento del que se originaron. El mayor número de secuencia entre un conjunto de PDS la versión del objeto es la última versión de eso PDS objeto.
El PDS la colección es solo de adición.
Versión del Esquema 3
Cambios notables de V2:
-
Añadir
typeNamecampo -
Añadir
versioncampo -
Añadir
metadatacampo -
Añadir
schemaVersioncampo -
El
contentcampo JSON ya no contiene el envoltorio como se veía en versiones anteriores, y ahora es solo el valor dentro de él.
| Field | Description | Example |
|---|---|---|
_id |
PK - Generated by MongoDB |
63e0d35dcbd3c015141aad53 |
createdAt |
Timestamp at which this object was originally created by the originating system (This is NOT the time that the ODS received the object) |
2023-02-06T10:15:54.711+0000 |
schemaVersion |
The version of the PDS schema that this document conforms to. If this field is not present, ODS will figure out the version from the rest of the fields. |
3 |
unitOfWorkId |
A unique IPF identifier for a given transaction/request that has been submitted to IPF and who’s uniqueness is only guaranteed by the generator and not enforced by IPF. For Instant payments this relates to a single Payment Process, for Bulk/SCT there would be different unitOfWorkId for each level of processing (Group, Instruction, and Transaction) |
624d7fa649f0f4b37093fe30 |
clientRequestId |
An external identifier may have been provided to IPF by a client during Payment Initiation to identify a payment within IPF |
d708ef96-e25f-4da2-82e1-4172c0358899 |
associationId |
An identifier that associates the object with a specific business process such as a Process Flow |
InitiationFlow|88a40683-107f-480f-bec2-b9aaef24d3bb |
primaryAssociation |
Usually the persistenceId of an IPF Processing Flow |
InitiationFlow|88a40683-107f-480f-bec2-b9aaef24d3bb |
processingEntity |
The financial entity responsible for the payment processing. |
UNKNOWN |
source |
The source system that provided this object to the ODS, could most likely be an IPF Service but may be a Bank System/Operator directly. |
ipf-flow |
checkpoint |
The object that caused this ISO20022 object |
PROCESS_FLOW_EVENT|IpftutorialflowV2|6b1b4ab0-dead-4032-b62b-eb66f677c0f1|8 |
eventId |
Identifier of the originating event |
InitiationFlow|88a40683-107f-480f-bec2-b9aaef24d3bb|1 |
sequenceNumber |
The internal sequence for the PDS object, usually derived via the sequence for the source event, |
2 |
name |
Identifies the PDS object, typically the same as typeName, but may differ. |
Csm |
typeName |
The type of the PDS object |
Csm |
pdsContent |
The JSON representation of the content |
{'value'} |
version |
The version of the PDS object |
1 |
metadata |
The metadata of the PDS object. Key/value pairs where key and value are strings" |
{'key1': 'value1'}" |
Ejemplo:
{
"_id": {
"$oid": "6489b5822fad5002d37baf1f"
},
"createdAt": {
"$date": "2023-06-09T09:01:00.000Z"
},
"schemaVersion": 3,
"unitOfWorkId": "7afec0ea-66e7-40d6-8492-3f5c811118ea",
"clientRequestId": "UNKNOWN",
"associationId": "some-association-id",
"primaryAssociation": "InitiationFlow|f0a9684a-467e-4e60-9e6e-efe00a860305",
"processingEntity": "UNKNOWN",
"source": "ipf-flow",
"checkpoint": "PROCESS_FLOW_EVENT|InitiationFlow|f0a9684a-467e-4e60-9e6e-efe00a860305|2",
"eventId": "InitiationFlow|f0a9684a-467e-4e60-9e6e-efe00a860305|2",
"sequenceNumber": 2,
"name": "Csm",
"typeName": "Csm",
"pdsContent": "{\"value\": \"RT1\"}",
"version": "1",
"metadata": {
"key1": "value1"
}
}
Versión del Esquema 2
Cambios notables de V1:
-
Dejar caer
typeNamecampo -
Cambiar tipo de
contentcampo de un objeto a un String -
Renombrar
contentcampo apdsContent
| Field | Description | Example |
|---|---|---|
_id |
PK - Generated by MongoDB |
63e0d35dcbd3c015141aad53 |
createdAt |
Timestamp at which this object was originally created by the originating system (This is NOT the time that the ODS received the object) |
2023-02-06T10:15:54.711+0000 |
unitOfWorkId |
A unique IPF identifier for a given transaction/request that has been submitted to IPF and who’s uniqueness is only guaranteed by the generator and not enforced by IPF. For Instant payments this relates to a single Payment Process, for Bulk/SCT there would be different unitOfWorkId for each level of processing (Group, Instruction, and Transaction) |
624d7fa649f0f4b37093fe30 |
clientRequestId |
An external identifier may have been provided to IPF by a client during Payment Initiation to identify a payment within IPF |
d708ef96-e25f-4da2-82e1-4172c0358899 |
associationId |
An identifier that associates the object with a specific business process such as a Process Flow |
InitiationFlow|88a40683-107f-480f-bec2-b9aaef24d3bb |
primaryAssociation |
Usually the persistenceId of an IPF Processing Flow |
InitiationFlow|88a40683-107f-480f-bec2-b9aaef24d3bb |
processingEntity |
The financial entity responsible for the payment processing. |
UNKNOWN |
source |
The source system that provided this object to the ODS, could most likely be an IPF Service but may be a Bank System/Operator directly. |
ipf-flow |
checkpoint |
The object that caused this ISO20022 object |
PROCESS_FLOW_EVENT|IpftutorialflowV2|6b1b4ab0-dead-4032-b62b-eb66f677c0f1|8 |
eventId |
Identifier of the originating event |
InitiationFlow|88a40683-107f-480f-bec2-b9aaef24d3bb|1 |
sequenceNumber |
The internal sequence for the PDS object, usually derived via the sequence for the source event, |
2 |
name |
Identifies the PDS object, typically the same as typeName, but may differ. |
Csm |
content.* |
A JSON subdocument of content |
<json subdocument of the content> |
pdsContent |
The JSON representation of the content |
{'@type': 'CSM', 'value': 'RT1', 'typeName': 'Csm'} |
Ejemplo:
{
"_id": {
"$oid": "6489b5822fad5002d37baf1f"
},
"createdAt": {
"$date": "2023-06-09T09:01:00.000Z"
},
"unitOfWorkId": "7afec0ea-66e7-40d6-8492-3f5c811118ea",
"clientRequestId": "UNKNOWN",
"associationId": "some-association-id",
"primaryAssociation": "InitiationFlow|f0a9684a-467e-4e60-9e6e-efe00a860305",
"processingEntity": "UNKNOWN",
"source": "ipf-flow",
"checkpoint": "PROCESS_FLOW_EVENT|InitiationFlow|f0a9684a-467e-4e60-9e6e-efe00a860305|2",
"eventId": "InitiationFlow|f0a9684a-467e-4e60-9e6e-efe00a860305|2",
"sequenceNumber": 2,
"name": "Csm",
"pdsContent": "{\"@type\": \"CSM\", \"value\": \"RT1\", \"typeName\": \"Csm\"}"
}
Versión del Esquema 1
| Field | Description | Example |
|---|---|---|
_id |
PK - Generated by MongoDB |
63e0d35dcbd3c015141aad53 |
createdAt |
Timestamp at which this object was originally created by the originating system (This is NOT the time that the ODS received the object) |
2023-02-06T10:15:54.711+0000 |
unitOfWorkId |
A unique IPF identifier for a given transaction/request that has been submitted to IPF and who’s uniqueness is only guaranteed by the generator and not enforced by IPF. For Instant payments this relates to a single Payment Process, for Bulk/SCT there would be different unitOfWorkId for each level of processing (Group, Instruction, and Transaction) |
624d7fa649f0f4b37093fe30 |
clientRequestId |
An external identifier may have been provided to IPF by a client during Payment Initiation to identify a payment within IPF |
d708ef96-e25f-4da2-82e1-4172c0358899 |
associationId |
An identifier that associates the object with a specific business process such as a Process Flow |
InitiationFlow|88a40683-107f-480f-bec2-b9aaef24d3bb |
primaryAssociation |
Usually the persistenceId of an IPF Processing Flow |
InitiationFlow|88a40683-107f-480f-bec2-b9aaef24d3bb |
processingEntity |
The financial entity responsible for the payment processing. |
UNKNOWN |
source |
The source system that provided this object to the ODS, could most likely be an IPF Service but may be a Bank System/Operator directly. |
ipf-flow |
checkpoint |
The object that caused this ISO20022 object |
PROCESS_FLOW_EVENT|IpftutorialflowV2|6b1b4ab0-dead-4032-b62b-eb66f677c0f1|8 |
eventId |
Identifier of the originating event |
InitiationFlow|88a40683-107f-480f-bec2-b9aaef24d3bb|1 |
sequenceNumber |
The internal sequence for the PDS object, usually derived via the sequence for the source event, |
2 |
name |
Identifies the PDS object, typically the same as typeName, but may differ. |
Csm |
typeName |
The type of the PDS object |
Csm |
content.* |
A JSON subdocument of content |
<json subdocument of the content> |
content.type |
The fully-qualified type of the content |
com.iconsolutions.ipf.processingdata.pds.Csm |
content.json |
The JSON representation of the content |
{'@type': 'CSM', 'value': 'RT1', 'typeName': 'Csm'} |
Ejemplo:
{
"_id": {
"$oid": "6489b5822fad5002d37baf1f"
},
"createdAt": {
"$date": "2023-06-09T09:01:00.000Z"
},
"unitOfWorkId" : "7afec0ea-66e7-40d6-8492-3f5c811118ea",
"clientRequestId" : "UNKNOWN",
"associationId" : "some-association-id",
"primaryAssociation" : "InitiationFlow|f0a9684a-467e-4e60-9e6e-efe00a860305",
"processingEntity" : "UNKNOWN",
"source" : "ipf-flow",
"checkpoint" : "PROCESS_FLOW_EVENT|InitiationFlow|f0a9684a-467e-4e60-9e6e-efe00a860305|2",
"eventId" : "InitiationFlow|f0a9684a-467e-4e60-9e6e-efe00a860305|2",
"sequenceNumber" : 2,
"name" : "Csm",
"typeName": "Csm",
"content": {
"type": "com.iconsolutions.ipf.processingdata.pds.Csm",
"json": "{\"@type\": \"CSM\", \"value\": \"RT1\", \"typeName\": \"Csm\"}"
}
}
Indexación
A continuación se presentan los índices requeridos para el pds colección. Esta no es una lista completa, sino el mínimo absoluto para un funcionamiento correcto. Consulte Indexación Para más información y la lista completa de índices.
| Index Name | Fields | Options |
|---|---|---|
id |
_id |
unique |
unitOfWorkId_1_name_1_sequenceNumber_1 |
unitOfWorkId (ascending) - name (ascending) - sequenceNumber (ascending) |
unique |
pdsObjectId_1 |
pdsObjectId (ascending) |
Procesos
Nombre de la Colección:`processes`
Almacena objetos de proceso individuales (captura de registro de mensajes, evento del sistema o domain event etc.) que han sido capturados durante el procesamiento de pagos o en interacciones con sistemas/funciones/etc. externos al flujo de procesamiento de pagos. Los objetos de proceso son de solo anexado con una restricción única en unitOfWork y idempotencyKey/objectIdentifier.
Los diferentes tipos de objetos de proceso se describen a continuación, cada uno con su propio esquema y documento de ejemplo; sin embargo, todos los documentos de objetos de proceso se almacenan en la misma colección y comparten parte de su esquema, añadiendo a la vez sus propios campos específicos del tipo.
| Además de los campos comunes entre tipos, la versionado de esquemas se aplica a todos los tipos de objetos de proceso a la vez; por ejemplo, si el esquema del registro de mensajes fue modificado e incrementado de v1 a v2, TODOS los demás tipos se incrementan a v2, incluso si no cambian. Puede ver ejemplos de documentos a continuación para diferentes versiones de un objeto de proceso que no han cambiado en absoluto. |
Versión del Esquema 1
ProcessFlowEvent
| Field | Description | Example |
|---|---|---|
_id |
PK - Autogenerated by MongoDB |
63e0d35ccbd3c015141aad30 |
createdAt |
Timestamp at which this object was originally created by the originating system (This is NOT the time that the ODS received the object). The date-time notation as defined by https://tools.ietf.org/html/rfc3339#section-5.6. |
2023-02-06T10:15:54.711+0000 |
schemaVersion |
The version of the schema for this object |
1 |
unitOfWorkId |
Part of the Processing Context. A unique IPF identifier for a given transaction/request that has been submitted to IPF and who’s uniqueness is only guaranteed by the generator and not enforced by IPF. For Instant payments this relates to a single Payment Process, for Bulk/SCT there would be different unitOfWorkId for each level of processing (Group, Instruction, and Transaction) |
bc3d6020-02c2-43e1-84ad-662267e32ba3 |
clientRequestId |
Part of the Processing Context. An external identifier may have been provided to IPF by a client during Payment Initiation to identify a payment within IPF. |
d708ef96-e25f-4da2-82e1-4172c0358899 |
associationId |
Part of the Processing Context. An identifier that associates the object with a specifc business process such as a Process Flow |
IpftutorialflowV2|d4964685-f134-40db-9bc8-77d79202cb99 |
primaryAssociation |
Processing Context associationId, most often the persistenceId of an IPF Processing Flow |
bc3d6020-02c2-43e1-84ad-662267e32ba3 |
processingEntity |
Part of the Processing Context. The financial processing entity responsible for processing during the settlement of the payment. |
UNKNOWN |
source |
The source system that provided this object to the ODS, could most likely be an IPF Service but may be a Bank System/Operator directly. |
0.0.0.0 |
checkpoint |
The checkpoint at which this object was persisted |
|
idempotencyKey |
An identifier, unique within the scope of a unit of work, that unambiguously identifies this Process Object |
bc3d6020-02c2-43e1-84ad-662267e32ba3|639bcb7a-866d-4982-9245-b905a7b2177f |
objectType |
An ODS label for the type of Process Object "SYSTEM_EVENT, PROCESS_FLOW_DEFINITION, MESSAGE_LOG, PROCESS_FLOW_EVENT" |
SYSTEM_EVENT |
content |
The raw content of the original data capture (e.g original Domain Event) |
<string of json raw content of the original System Event> |
metadata |
Metadata associated with the Process Object |
|
hash |
The hash value of the associated processing flow, can be compared with the hash of the ProcessFlowDefinition. |
-101444374 |
commandName |
The name of the Command |
InitiateFlow |
eventId |
A unique identifier that unambiguously identifies an event |
IpftutorialflowV2|d4964685-f134-40db-9bc8-77d79202cb99|2 |
eventName |
The name of the Process Flow Event |
Flow Initiated |
processFlowDefinitionId |
A unique identifier of the payment object, is provided by the payment processing service (IPF). |
IpftutorialflowV2 |
processFlowId |
The Date on which the source Domain Event was created |
IpftutorialflowV2|d4964685-f134-40db-9bc8-77d79202cb99 |
causedBy |
ProcessFlowSpecific - eventId of the causing event for the ProcessEvent |
InitiationFlow|88a40683-107f-480f-bec2-b9aaef24d3bb|1 |
processFlowSequence |
Sequence identifier to track causal ordering of Process Flow Events within the context of a Unit of Work. |
2 |
status |
||
paymentJourneyType |
||
paymentType |
||
reasonCode |
||
reasonText |
||
responseCode |
Accepted |
|
originalReasonCode |
||
originalReasonText |
||
originalResponseCode |
||
labels |
A list of labels associated with this event |
{
"_id": {
"$oid": "675f0c96f58c972c1d30bac2"
},
"createdAt": {
"$date": "2025-11-16T09:15:00Z"
},
"schemaVersion": 1,
"unitOfWorkId": "unit-of-work-id-1234567890",
"clientRequestId": "client-request-id",
"associationId": "association-id",
"primaryAssociation": "primary-association",
"processingEntity": "processing-entity",
"source": "source",
"checkpoint": "checkpoint",
"objectType": "PROCESS_FLOW_EVENT",
"idempotencyKey": "idempotency-key-123",
"content": "process flow event content is always a string",
"metadata": {
"key1": "value1"
},
"hash": "hash",
"commandName": "command-name",
"eventId": "event-id",
"eventName": "event-name",
"processFlowDefinitionId": "process-flow-definition-id",
"processFlowId": "process-flow-id",
"causedBy": "caused-by",
"processFlowSequence": 42,
"status": {
"originatingStatus": "originating-status",
"resultingStatus": "resulting-status",
"globalStatus": "global-status"
},
"terminalIndicator": "SUCCESS",
"paymentJourneyType": "payment-journey-type",
"paymentType": "payment-type",
"reasonCode": "reason-code",
"reasonText": "reason-text",
"responseCode": "response-code",
"originalReasonCode": "original-reason-code",
"originalReasonText": "original-reason-text",
"originalResponseCode": "original-response-code",
"labels": [
"label-1"
]
}
MessageLog
| Field | Description | Example |
|---|---|---|
_id |
PK - Autogenerated by MongoDB |
63e0d35ccbd3c015141aad30 |
createdAt |
Timestamp at which this object was originally created by the originating system (This is NOT the time that the ODS received the object). The date-time notation as defined by https://tools.ietf.org/html/rfc3339#section-5.6. |
2023-02-06T10:15:54.711+0000 |
schemaVersion |
The version of the schema for this object |
1 |
unitOfWorkId |
Part of the Processing Context. A unique IPF identifier for a given transaction/request that has been submitted to IPF and who’s uniqueness is only guaranteed by the generator and not enforced by IPF. For Instant payments this relates to a single Payment Process, for Bulk/SCT there would be different unitOfWorkId for each level of processing (Group, Instruction, and Transaction) |
bc3d6020-02c2-43e1-84ad-662267e32ba3 |
clientRequestId |
Part of the Processing Context. An external identifier may have been provided to IPF by a client during Payment Initiation to identify a payment within IPF. |
d708ef96-e25f-4da2-82e1-4172c0358899 |
associationId |
Part of the Processing Context. An identifier that associates the object with a specifc business process such as a Process Flow |
IpftutorialflowV2|d4964685-f134-40db-9bc8-77d79202cb99 |
primaryAssociation |
Processing Context associationId, most often the persistenceId of an IPF Processing Flow |
bc3d6020-02c2-43e1-84ad-662267e32ba3 |
processingEntity |
Part of the Processing Context. The financial processing entity responsible for processing during the settlement of the payment. |
UNKNOWN |
source |
The source system that provided this object to the ODS, could most likely be an IPF Service but may be a Bank System/Operator directly. |
0.0.0.0 |
checkpoint |
The checkpoint at which this object was persisted |
|
idempotencyKey |
An identifier, unique within the scope of a unit of work, that unambiguously identifies this Process Object |
bc3d6020-02c2-43e1-84ad-662267e32ba3|639bcb7a-866d-4982-9245-b905a7b2177f |
objectType |
An ODS label for the type of Process Object "SYSTEM_EVENT, PROCESS_FLOW_DEFINITION, MESSAGE_LOG, PROCESS_FLOW_EVENT" |
SYSTEM_EVENT |
content |
The raw content of the original data capture (e.g original Domain Event) |
<string of json raw content of the original System Event> |
metadata |
Metadata associated with the Process Object |
|
messageType |
The type of message as defined by the submitting application |
PaymentInitiationRequest |
direction |
The direction of the message relative to the processing of the submitting application (Sent/Received) |
RECEIVED |
reference |
The reference of the message |
1234567890 |
supportingData |
Generic map of additional data fields |
{"key": "value"} |
{
"_id": {
"$oid": "675f0c96f58c972c1d30bac2"
},
"createdAt": {
"$date": "2025-11-16T09:15:00Z"
},
"schemaVersion": 1,
"unitOfWorkId": "unit-of-work-id-1234567890",
"clientRequestId": "client-request-id",
"associationId": "association-id",
"primaryAssociation": "primary-association",
"processingEntity": "processing-entity",
"source": "source",
"checkpoint": "checkpoint",
"objectType": "MESSAGE_LOG",
"idempotencyKey": "idempotency-key-123",
"content": "{\"requestId\":\"ANVnAMEdBCwvsNsCDUtlBRnOBMPTXGMcpaR\",\"processingContext\":null,\"version\":{\"major\":1,\"minor\":2,\"patch\":3},\"createdAt\":\"2023-02-07T10:31:36.255751Z\",\"payload\":{\"content\":{\"grpHdr\":{\"msgId\":\"XIrNfxNPubaUGFvnuntjTYWnintRDfYLKFT\",\"creDtTm\":\"2023-02-07T10:31:36.253122Z\",\"authstn\":[],\"nbOfTxs\":\"1\",\"ctrlSum\":7.16,\"initgPty\":null,\"fwdgAgt\":null},\"pmtInf\":[{\"pmtInfId\":\"ApwciBTlXXQGNckhDuhlJDnygEoDtKAbzun\",\"pmtMtd\":null,\"btchBookg\":null,\"nbOfTxs\":\"1\",\"ctrlSum\":7.16,\"pmtTpInf\":{\"instrPrty\":null,\"svcLvl\":[{\"cd\":\"SEPA\",\"prtry\":null}],\"lclInstrm\":{\"cd\":\"INST\",\"prtry\":null},\"ctgyPurp\":null},\"reqdExctnDt\":{\"dt\":\"2023-02-07\",\"dtTm\":null},\"poolgAdjstmntDt\":null,\"dbtr\":{\"nm\":\"Isabelle Mitchell\",\"pstlAdr\":null,\"id\":{\"orgId\":{\"anyBIC\":\"ICONGBM0\",\"lei\":null,\"othr\":[]},\"prvtId\":null},\"ctryOfRes\":null,\"ctctDtls\":null},\"dbtrAcct\":{\"id\":{\"iban\":\"GB74FBNFUHQJRNHBRHMXGBZCGIVRDY\",\"othr\":null},\"tp\":null,\"ccy\":null,\"nm\":null,\"prxy\":null},\"dbtrAgt\":{\"finInstnId\":{\"bicfi\":\"ICONGBA1\",\"clrSysMmbId\":null,\"lei\":null,\"nm\":null,\"pstlAdr\":null,\"othr\":null},\"brnchId\":null},\"dbtrAgtAcct\":null,\"instrForDbtrAgt\":null,\"ultmtDbtr\":null,\"chrgBr\":null,\"chrgsAcct\":null,\"chrgsAcctAgt\":null,\"cdtTrfTxInf\":[{\"pmtId\":{\"instrId\":null,\"endToEndId\":\"ANVnAMEdBCwvsNsCDUtlBRnOBMPTXGMcpaR\",\"uetr\":null},\"pmtTpInf\":null,\"amt\":{\"instdAmt\":{\"value\":7.16,\"ccy\":\"USD\"},\"eqvtAmt\":null},\"xchgRateInf\":null,\"chrgBr\":\"SLEV\",\"chqInstr\":null,\"ultmtDbtr\":null,\"intrmyAgt1\":null,\"intrmyAgt1Acct\":null,\"intrmyAgt2\":null,\"intrmyAgt2Acct\":null,\"intrmyAgt3\":null,\"intrmyAgt3Acct\":null,\"cdtrAgt\":{\"finInstnId\":{\"bicfi\":\"ICONGBA1\",\"clrSysMmbId\":null,\"lei\":null,\"nm\":null,\"pstlAdr\":null,\"othr\":null},\"brnchId\":null},\"cdtrAgtAcct\":null,\"cdtr\":{\"nm\":\"Adam White\",\"pstlAdr\":null,\"id\":{\"orgId\":{\"anyBIC\":\"ICONGBL0\",\"lei\":null,\"othr\":[]},\"prvtId\":null},\"ctryOfRes\":null,\"ctctDtls\":null},\"cdtrAcct\":{\"id\":{\"iban\":\"GB24ADKGJWYYHUJWROBFJPGDHGTIKI\",\"othr\":null},\"tp\":null,\"ccy\":null,\"nm\":null,\"prxy\":null},\"ultmtCdtr\":null,\"instrForCdtrAgt\":[],\"instrForDbtrAgt\":null,\"purp\":null,\"rgltryRptg\":[],\"tax\":null,\"rltdRmtInf\":[],\"rmtInf\":null,\"splmtryData\":[]}]}],\"splmtryData\":[]},\"version\":null},\"replyTo\":\"replyTo\",\"customBusinessData\":{\"SINGLE_REQUEST\":\"true\",\"MySpecificKey\":\"MySpecificValue\"}}",,
"metadata": {
"key1": "value1"
},
"messageType": "message-type",
"direction": "direction",
"reference": "reference",
"supportingData": {
"someString": "string",
"someBoolean": true,
"someNumber": 42
}
}
SystemEvent
| Field | Description | Example |
|---|---|---|
_id |
PK - Autogenerated by MongoDB |
63e0d35ccbd3c015141aad30 |
createdAt |
Timestamp at which this object was originally created by the originating system (This is NOT the time that the ODS received the object). The date-time notation as defined by https://tools.ietf.org/html/rfc3339#section-5.6. |
2023-02-06T10:15:54.711+0000 |
schemaVersion |
The version of the schema for this object |
1 |
unitOfWorkId |
Part of the Processing Context. A unique IPF identifier for a given transaction/request that has been submitted to IPF and who’s uniqueness is only guaranteed by the generator and not enforced by IPF. For Instant payments this relates to a single Payment Process, for Bulk/SCT there would be different unitOfWorkId for each level of processing (Group, Instruction, and Transaction) |
bc3d6020-02c2-43e1-84ad-662267e32ba3 |
clientRequestId |
Part of the Processing Context. An external identifier may have been provided to IPF by a client during Payment Initiation to identify a payment within IPF. |
d708ef96-e25f-4da2-82e1-4172c0358899 |
associationId |
Part of the Processing Context. An identifier that associates the object with a specifc business process such as a Process Flow |
IpftutorialflowV2|d4964685-f134-40db-9bc8-77d79202cb99 |
primaryAssociation |
Processing Context associationId, most often the persistenceId of an IPF Processing Flow |
bc3d6020-02c2-43e1-84ad-662267e32ba3 |
processingEntity |
Part of the Processing Context. The financial processing entity responsible for processing during the settlement of the payment. |
UNKNOWN |
source |
The source system that provided this object to the ODS, could most likely be an IPF Service but may be a Bank System/Operator directly. |
0.0.0.0 |
checkpoint |
The checkpoint at which this object was persisted |
|
idempotencyKey |
An identifier, unique within the scope of a unit of work, that unambiguously identifies this Process Object |
bc3d6020-02c2-43e1-84ad-662267e32ba3|639bcb7a-866d-4982-9245-b905a7b2177f |
objectType |
An ODS label for the type of Process Object "SYSTEM_EVENT, PROCESS_FLOW_DEFINITION, MESSAGE_LOG, PROCESS_FLOW_EVENT" |
SYSTEM_EVENT |
content |
The raw content of the original data capture (e.g original Domain Event) |
<string of json raw content of the original System Event> |
metadata |
Metadata associated with the Process Object |
|
name |
The name of the system event |
FlowStarted |
level |
The level of event (reflected as log-levels) |
ERROR |
type |
The type of event, technical or function |
FUNCTIONAL |
{
"_id": {
"$oid": "675f0c96f58c972c1d30bac2"
},
"createdAt": {
"$date": "2025-11-16T09:15:00Z"
},
"schemaVersion": 1,
"unitOfWorkId": "unit-of-work-id-1234567890",
"clientRequestId": "client-request-id",
"associationId": "association-id",
"primaryAssociation": "primary-association",
"processingEntity": "processing-entity",
"source": "source",
"checkpoint": "checkpoint",
"objectType": "SYSTEM_EVENT",
"idempotencyKey": "idempotency-key-123",
"content": "{\"name\":\"FlowStarted\",\"level\":\"DEBUG\",\"createdAt\":\"2023-02-06T10:15:55.457Z\",\"version\":{\"major\":1,\"minor\":0,\"patch\":0},\"type\":\"FUNCTIONAL\",\"processingContext\":{\"associationId\":\"IpftutorialflowV2|d4964685-f134-40db-9bc8-77d79202cb99\",\"unitOfWorkId\":\"bc3d6020-02c2-43e1-84ad-662267e32ba3\",\"clientRequestId\":\"d708ef96-e25f-4da2-82e1-4172c0358899\",\"processingEntity\":\"UNKNOWN\"},\"source\":\"0.0.0.0\",\"payload\":{\"behaviour\":\"IpftutorialflowV2\",\"callingFlowId\":\"InitiationFlow|88a40683-107f-480f-bec2-b9aaef24d3bb\"}}",,
"metadata": {
"key1": "value1"
},
"name": "name",
"level": "level",
"type": "type"
}
ProcessFlowDefinition
| Field | Description | Example |
|---|---|---|
_id |
PK - Autogenerated by MongoDB |
63e0d35ccbd3c015141aad30 |
createdAt |
Timestamp at which this object was originally created by the originating system (This is NOT the time that the ODS received the object). The date-time notation as defined by https://tools.ietf.org/html/rfc3339#section-5.6. |
2023-02-06T10:15:54.711+0000 |
schemaVersion |
The version of the schema for this object |
1 |
unitOfWorkId |
Part of the Processing Context. A unique IPF identifier for a given transaction/request that has been submitted to IPF and who’s uniqueness is only guaranteed by the generator and not enforced by IPF. For Instant payments this relates to a single Payment Process, for Bulk/SCT there would be different unitOfWorkId for each level of processing (Group, Instruction, and Transaction) |
bc3d6020-02c2-43e1-84ad-662267e32ba3 |
clientRequestId |
Part of the Processing Context. An external identifier may have been provided to IPF by a client during Payment Initiation to identify a payment within IPF. |
d708ef96-e25f-4da2-82e1-4172c0358899 |
associationId |
Part of the Processing Context. An identifier that associates the object with a specifc business process such as a Process Flow |
IpftutorialflowV2|d4964685-f134-40db-9bc8-77d79202cb99 |
primaryAssociation |
Processing Context associationId, most often the persistenceId of an IPF Processing Flow |
bc3d6020-02c2-43e1-84ad-662267e32ba3 |
processingEntity |
Part of the Processing Context. The financial processing entity responsible for processing during the settlement of the payment. |
UNKNOWN |
source |
The source system that provided this object to the ODS, could most likely be an IPF Service but may be a Bank System/Operator directly. |
0.0.0.0 |
checkpoint |
The checkpoint at which this object was persisted |
|
idempotencyKey |
An identifier, unique within the scope of a unit of work, that unambiguously identifies this Process Object |
bc3d6020-02c2-43e1-84ad-662267e32ba3|639bcb7a-866d-4982-9245-b905a7b2177f |
objectType |
An ODS label for the type of Process Object "SYSTEM_EVENT, PROCESS_FLOW_DEFINITION, MESSAGE_LOG, PROCESS_FLOW_EVENT" |
SYSTEM_EVENT |
metadata |
Metadata associated with the Process Object |
|
hash |
The hash of the flow definition |
|
content |
The flow definition content as a complex object |
|
content._id |
The identifier of a Process Flow, which is a combination of name, and if present, version |
IpftutorialflowV1 |
content.name |
The name of a Process Flow |
Ipftutorialflow |
content.version |
The (optional) version of a Process Flow |
1 |
content.model |
The name of the IPF Model in which the Process Flow Definition resides. |
Ipftutorialmodel |
content.hash |
The hash value of the Process Flow Definition itself |
"-756900467" |
content.basicGraph |
Graph information for the Process Flow that can be overlayed with Domain Events to show the progress of a transaction |
<string base64 encoded binary of JGraphT representation of the Process Flow> |
content.fullGraph |
Graph information for the Process Flow that can be overlayed with Domain Events to show the progress of a transaction |
<string base64 encoded binary of JGraphT representation of the Process Flow with ActionTimeouts and other additional detail included> |
content.content |
The raw content of the original ProcessFlowDefinition object |
<string toString() of a Java representation of ProcessFlowDefinition> |
content.terminalGlobalStates |
A List of GlobalStates that have been assigned as terminal within the MPS flow implementation |
[ Completed, Failed ] |
content.failureGlobalStates |
A List of GlobalStates that have been assigned as failure within the MPS flow implementation |
[ Failed ] |
content.states |
Metadata for all State Definitions implemented within the MPS flow definition |
[ { name : Initial, labels : [ CRITICAL_PATH_START, CLIENT_SPECIFIC_LABEL ] } ] |
content.events |
Metadata for all Event Definitions implemented within the MPS flow definition |
[ { name : Payment Initiation Started, labels : [ MY_CUSTOM_LABEL ] } ] |
{
"_id": {
"$oid": "675f0c96f58c972c1d30bac2"
},
"createdAt": {
"$date": "2025-11-16T09:15:00Z"
},
"schemaVersion": 1,
"unitOfWorkId": "UNKNOWN",
"clientRequestId": "UNKNOWN",
"associationId": "not usually set",
"primaryAssociation": "IpftutorialflowV1",
"processingEntity": "UNKNOWN",
"source": "source",
"checkpoint": "not usually set",
"objectType": "PROCESS_FLOW_DEFINITION",
"idempotencyKey": "IpftutorialflowV1_-756900467",
"content": {
"_id": "IpftutorialflowV1",
"name": "Ipftutorialflow",
"version": "1",
"model": "Ipftutorialmodel",
"hash": "-756900467",
"basicGraph": "rO0ABXNyADdjb20uaWNvbnNvbHV0aW9ucy5pcGYuY29yZS5mbG93LmdyYXBoLlNlcmlhbGl6YWJsZUdyYXBomSwtqEQKN9MCAAFMAAVncmFwaHQAE0xvcmcvamdyYXBodC9HcmFwaDt4cHNyAC1vcmcuamdyYXBodC5ncmFwaC5EaXJlY3RlZFdlaWdodGVkUHNldWRvZ3JhcGi9utVw72YX1QIAAHhyACVvcmcuamdyYXBodC5ncmFwaC5EaXJlY3RlZFBzZXVkb2dyYXBomHRRs4CysX8CAAB4cgAjb3JnLmpncmFwaHQuZ3JhcGguQWJzdHJhY3RCYXNlR3JhcGjOSM5wTe/23QIABkwADGVkZ2VTdXBwbGllcnQAHUxqYXZhL3V0aWwvZnVuY3Rpb24vU3VwcGxpZXI7TAAWZ3JhcGhTcGVjaWZpY3NTdHJhdGVneXQAKkxvcmcvamdyYXBodC9ncmFwaC9HcmFwaFNwZWNpZmljc1N0cmF0ZWd5O0wAF2ludHJ1c2l2ZUVkZ2VzU3BlY2lmaWNzdAArTG9yZy9qZ3JhcGh0L2dyYXBoL0ludHJ1c2l2ZUVkZ2VzU3BlY2lmaWNzO0wACXNwZWNpZmljc3QAJ0xvcmcvamdyYXBodC9ncmFwaC9zcGVjaWZpY3MvU3BlY2lmaWNzO0wABHR5cGV0ABdMb3JnL2pncmFwaHQvR3JhcGhUeXBlO0wADnZlcnRleFN1cHBsaWVycQB+AAZ4cHNyADpjb20uaWNvbnNvbHV0aW9ucy5pcGYuY29yZS5mbG93LmdyYXBoLkRlZmF1bHRGbG93R3JhcGhFZGdlQk439CdjAN8CAAB4cHNyADJvcmcuamdyYXBodC5ncmFwaC5GYXN0TG9va3VwR3JhcGhTcGVjaWZpY3NTdHJhdGVnebPMgvHiXDU4AgAAeHBzcgAxb3JnLmpncmFwaHQuZ3JhcGguV2VpZ2h0ZWRJbnRydXNpdmVFZGdlc1NwZWNpZmljc0nuHGHO9d4KAgAAeHIALW9yZy5qZ3JhcGh0LmdyYXBoLkJhc2VJbnRydXNpdmVFZGdlc1NwZWNpZmljc//lXF1igq2rAgABTAAHZWRnZU1hcHQAD0xqYXZhL3V0aWwvTWFwO3hwc3IAF2phdmEudXRpbC5MaW5rZWRIYXNoTWFwNMBOXBBswPsCAAFaAAthY2Nlc3NPcmRlcnhyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVzaG9sZHhwP0AAAAAAAAx3CAAAABAAAAAMc3IAM2NvbS5pY29uc29sdXRpb25zLmlwZi5jb3JlLmZsb3cuZ3JhcGguRmxvd0dyYXBoRWRnZQUYqIey1KBMAgAETAAEY29kZXQAEkxqYXZhL2xhbmcvU3RyaW5nO0wAAmlkcQB+ABhMAAVsYWJlbHEAfgAYTAAEdHlwZXQAOkxjb20vaWNvbnNvbHV0aW9ucy9pcGYvY29yZS9mbG93L2dyYXBoL0Zsb3dHcmFwaEVkZ2UkVHlwZTt4cHB0ACQ5YTFlNzIxMy0yZDMzLTRmYzAtOWE5OS1kNTFiNGRlYWQ1ZjF0AA5GbG93IEluaXRpYXRlZH5yADhjb20uaWNvbnNvbHV0aW9ucy5pcGYuY29yZS5mbG93LmdyYXBoLkZsb3dHcmFwaEVkZ2UkVHlwZQAAAAAAAAAAEgAAeHIADmphdmEubGFuZy5FbnVtAAAAAAAAAAASAAB4cHQABUV2ZW50c3IAJ29yZy5qZ3JhcGh0LmdyYXBoLkludHJ1c2l2ZVdlaWdodGVkRWRnZSgdPgxUvOFlAgABRAAGd2VpZ2h0eHIAH29yZy5qZ3JhcGh0LmdyYXBoLkludHJ1c2l2ZUVkZ2UtODE5NTIyNwIAAkwABnNvdXJjZXQAEkxqYXZhL2xhbmcvT2JqZWN0O0wABnRhcmdldHEAfgAjeHBzcgA1Y29tLmljb25zb2x1dGlvbnMuaXBmLmNvcmUuZmxvdy5ncmFwaC5GbG93R3JhcGhWZXJ0ZXj/JVqP2n1+uAIAAkwABG5hbWVxAH4AGEwABHR5cGV0ADxMY29tL2ljb25zb2x1dGlvbnMvaXBmL2NvcmUvZmxvdy9ncmFwaC9GbG93R3JhcGhWZXJ0ZXgkVHlwZTt4cHQAB0luaXRpYWx+cgA6Y29tLmljb25zb2x1dGlvbnMuaXBmLmNvcmUuZmxvdy5ncmFwaC5GbG93R3JhcGhWZXJ0ZXgkVHlwZQAAAAAAAAAAEgAAeHEAfgAedAAFU3RhdGVzcQB+ACV0ABJEdXBsaWNhdGUgQ2hlY2tpbmdxAH4AKj/wAAAAAAAAc3EAfgAXcHQAJGM3ZmEyZjViLWM4NDQtNDcwMC05NjA2LTcxZDI1ZWMzZDA4M3QAFkR1cGxpY2F0ZSBDaGVjayBQYXNzZWRxAH4AH3NxAH4AIXNxAH4AJXEAfgAtcQB+ACpzcQB+ACV0ABJWYWxpZGF0aW5nIEFjY291bnRxAH4AKj/wAAAAAAAAc3EAfgAXcHQAJDQxYzQxZGUxLWQ4ODItNDUyNC04OWU0LThkZTgwNGIzMzg2MXQAFkR1cGxpY2F0ZSBDaGVjayBGYWlsZWRxAH4AH3NxAH4AIXNxAH4AJXEAfgAtcQB+ACpzcQB+ACV0AAhSZWplY3RlZH5xAH4AKXQADVRlcm1pbmFsU3RhdGU/8AAAAAAAAHNxAH4AF3B0ACRmNmQ4NDg2My05NGJmLTRjZDItOTBiOC1kYzlhOTY5NzJhMGF0ABlBY2NvdW50IFZhbGlkYXRpb24gUGFzc2VkcQB+AB9zcQB+ACFzcQB+ACVxAH4ANHEAfgAqc3EAfgAldAAPUnVuIEZyYXVkIENoZWNrcQB+ACo/8AAAAAAAAHNxAH4AF3B0ACQwNjJkYjdlOC1jZDRkLTRjZmQtYjhiZC0xNTdlNWY5YTEyZTR0AAB+cQB+AB10AAtQYXNzVGhyb3VnaHNxAH4AIXNxAH4AJXEAfgBEcQB+ACpzcQB+ACVxAH4ARH5xAH4AKXQACERlY2lzaW9uP/AAAAAAAABzcQB+ABdwdAAkNzMzMjc5OGMtZDhjZS00NDRlLWE3MjctNDQxMmQ3OTY3MDc3dAAeUnVuIEZyYXVkIENoZWNrIEZSQVVEX1JFUVVJUkVEcQB+AB9zcQB+ACFzcQB+ACVxAH4ARHEAfgBNc3EAfgAldAAOQ2hlY2tpbmcgRnJhdWRxAH4AKj/wAAAAAAAAc3EAfgAXcHQAJDBiODYzMzEzLTE2NGQtNDkwMS05Njk2LTkzMjE2YmNjNDg3OHQAGlJ1biBGcmF1ZCBDaGVjayBTS0lQX0ZSQVVEcQB+AB9zcQB+ACFzcQB+ACVxAH4ARHEAfgBNc3EAfgAldAAIQ29tcGxldGVxAH4APD/wAAAAAAAAc3EAfgAXcHQAJGZhMmY3NDM4LWUzYzAtNDk0Yy1iNDE5LTMyY2I1NGViMTdhZHQAGUFjY291bnQgVmFsaWRhdGlvbiBGYWlsZWRxAH4AH3NxAH4AIXNxAH4AJXEAfgA0cQB+ACpzcQB+ACVxAH4AO3EAfgA8P/AAAAAAAABzcQB+ABdwdAAkODk3ODFiY2UtMGFlMi00MGIxLTlmN2EtYTdhZWFjOGExOGQ5dAARQWNjb3VudCBOb3QgRm91bmRxAH4AH3NxAH4AIXNxAH4AJXEAfgA0cQB+ACpzcQB+ACVxAH4AO3EAfgA8P/AAAAAAAABzcQB+ABdwdAAkMGUxYzYzNmQtMjRhYy00OGQ2LWEwMjMtMGY3MGM1MmM2MDMydAASRnJhdWQgQ2hlY2sgUGFzc2VkcQB+AB9zcQB+ACFzcQB+ACVxAH4AVXEAfgAqc3EAfgAlcQB+AFxxAH4APD/wAAAAAAAAc3EAfgAXcHQAJDRjNTkwYmIyLTQyNWUtNDhlMS1iNjM5LWZiZTU5OTM4MjYyMHQAEkZyYXVkIENoZWNrIEZhaWxlZHEAfgAfc3EAfgAhc3EAfgAlcQB+AFVxAH4AKnNxAH4AJXEAfgA7cQB+ADw/8AAAAAAAAHNxAH4AF3B0ACRmOWMxNzVjMS0xYTI3LTQwZGUtOGY3ZS1lMzgxZDZlNTU1ZTh0ABxDaGVja0ZyYXVkQWN0aW9uVGltZW91dEV2ZW50cQB+AB9zcQB+ACFzcQB+ACVxAH4AVXEAfgAqc3EAfgAldAAJVGltZWQgT3V0cQB+ADw/8AAAAAAAAHgAc3IAN29yZy5qZ3JhcGh0LmdyYXBoLnNwZWNpZmljcy5GYXN0TG9va3VwRGlyZWN0ZWRTcGVjaWZpY3M4v1lVIW8eFwIAAUwAGXRvdWNoaW5nVmVydGljZXNUb0VkZ2VNYXBxAH4AEnhyAC1vcmcuamdyYXBodC5ncmFwaC5zcGVjaWZpY3MuRGlyZWN0ZWRTcGVjaWZpY3NSx0ECUR67UwIAA0wADmVkZ2VTZXRGYWN0b3J5dAAiTG9yZy9qZ3JhcGh0L2dyYXBoL0VkZ2VTZXRGYWN0b3J5O0wABWdyYXBocQB+AAFMAAl2ZXJ0ZXhNYXBxAH4AEnhwc3IAPG9yZy5qZ3JhcGh0LmdyYXBoLnNwZWNpZmljcy5BcnJheVVuZW5mb3JjZWRTZXRFZGdlU2V0RmFjdG9yeVJkHazxcOrhAgAAeHBxAH4AC3NxAH4AFD9AAAAAAAAMdwgAAAAQAAAACnNxAH4AJXEAfgAocQB+ACpz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",
"fullGraph": "rO0ABXNyADdjb20uaWNvbnNvbHV0aW9ucy5pcGYuY29yZS5mbG93LmdyYXBoLlNlcmlhbGl6YWJsZUdyYXBomSwtqEQKN9MCAAFMAAVncmFwaHQAE0xvcmcvamdyYXBodC9HcmFwaDt4cHNyAC1vcmcuamdyYXBodC5ncmFwaC5EaXJlY3RlZFdlaWdodGVkUHNldWRvZ3JhcGi9utVw72YX1QIAAHhyACVvcmcuamdyYXBodC5ncmFwaC5EaXJlY3RlZFBzZXVkb2dyYXBomHRRs4CysX8CAAB4cgAjb3JnLmpncmFwaHQuZ3JhcGguQWJzdHJhY3RCYXNlR3JhcGjOSM5wTe/23QIABkwADGVkZ2VTdXBwbGllcnQAHUxqYXZhL3V0aWwvZnVuY3Rpb24vU3VwcGxpZXI7TAAWZ3JhcGhTcGVjaWZpY3NTdHJhdGVneXQAKkxvcmcvamdyYXBodC9ncmFwaC9HcmFwaFNwZWNpZmljc1N0cmF0ZWd5O0wAF2ludHJ1c2l2ZUVkZ2VzU3BlY2lmaWNzdAArTG9yZy9qZ3JhcGh0L2dyYXBoL0ludHJ1c2l2ZUVkZ2VzU3BlY2lmaWNzO0wACXNwZWNpZmljc3QAJ0xvcmcvamdyYXBodC9ncmFwaC9zcGVjaWZpY3MvU3BlY2lmaWNzO0wABHR5cGV0ABdMb3JnL2pncmFwaHQvR3JhcGhUeXBlO0wADnZlcnRleFN1cHBsaWVycQB+AAZ4cHNyADpjb20uaWNvbnNvbHV0aW9ucy5pcGYuY29yZS5mbG93LmdyYXBoLkRlZmF1bHRGbG93R3JhcGhFZGdlQk439CdjAN8CAAB4cHNyADJvcmcuamdyYXBodC5ncmFwaC5GYXN0TG9va3VwR3JhcGhTcGVjaWZpY3NTdHJhdGVnebPMgvHiXDU4AgAAeHBzcgAxb3JnLmpncmFwaHQuZ3JhcGguV2VpZ2h0ZWRJbnRydXNpdmVFZGdlc1NwZWNpZmljc0nuHGHO9d4KAgAAeHIALW9yZy5qZ3JhcGh0LmdyYXBoLkJhc2VJbnRydXNpdmVFZGdlc1NwZWNpZmljc//lXF1igq2rAgABTAAHZWRnZU1hcHQAD0xqYXZhL3V0aWwvTWFwO3hwc3IAF2phdmEudXRpbC5MaW5rZWRIYXNoTWFwNMBOXBBswPsCAAFaAAthY2Nlc3NPcmRlcnhyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVzaG9sZHhwP0AAAAAAABh3CAAAACAAAAAQc3IAM2NvbS5pY29uc29sdXRpb25zLmlwZi5jb3JlLmZsb3cuZ3JhcGguRmxvd0dyYXBoRWRnZQUYqIey1KBMAgAETAAEY29kZXQAEkxqYXZhL2xhbmcvU3RyaW5nO0wAAmlkcQB+ABhMAAVsYWJlbHEAfgAYTAAEdHlwZXQAOkxjb20vaWNvbnNvbHV0aW9ucy9pcGYvY29yZS9mbG93L2dyYXBoL0Zsb3dHcmFwaEVkZ2UkVHlwZTt4cHB0ACQ1NTdhZWNlMy1kOWE0LTRhYjQtODRiMy02MGI5OGRkM2MwNzd0AAB+cgA4Y29tLmljb25zb2x1dGlvbnMuaXBmLmNvcmUuZmxvdy5ncmFwaC5GbG93R3JhcGhFZGdlJFR5cGUAAAAAAAAAABIAAHhyAA5qYXZhLmxhbmcuRW51bQAAAAAAAAAAEgAAeHB0AAtQYXNzVGhyb3VnaHNyACdvcmcuamdyYXBodC5ncmFwaC5JbnRydXNpdmVXZWlnaHRlZEVkZ2UoHT4MVLzhZQIAAUQABndlaWdodHhyAB9vcmcuamdyYXBodC5ncmFwaC5JbnRydXNpdmVFZGdlLTgxOTUyMjcCAAJMAAZzb3VyY2V0ABJMamF2YS9sYW5nL09iamVjdDtMAAZ0YXJnZXRxAH4AI3hwc3IANWNvbS5pY29uc29sdXRpb25zLmlwZi5jb3JlLmZsb3cuZ3JhcGguRmxvd0dyYXBoVmVydGV4/yVaj9p9frgCAAJMAARuYW1lcQB+ABhMAAR0eXBldAA8TGNvbS9pY29uc29sdXRpb25zL2lwZi9jb3JlL2Zsb3cvZ3JhcGgvRmxvd0dyYXBoVmVydGV4JFR5cGU7eHB0ABJEdXBsaWNhdGUgQ2hlY2tpbmd+cgA6Y29tLmljb25zb2x1dGlvbnMuaXBmLmNvcmUuZmxvdy5ncmFwaC5GbG93R3JhcGhWZXJ0ZXgkVHlwZQAAAAAAAAAAEgAAeHEAfgAedAAFU3RhdGVzcQB+ACV0AA9EdXBsaWNhdGUgQ2hlY2t+cQB+ACl0AAdSZXF1ZXN0P/AAAAAA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MjQzYzdjdAAcQ2hlY2tGcmF1ZEFjdGlvblRpbWVvdXRFdmVudHEAfgAzc3EAfgAhc3EAfgAlcQB+AGVxAH4AKnNxAH4AJXQACVRpbWVkIE91dHEAfgAqP/AAAAAAAAB4AHNyADdvcmcuamdyYXBodC5ncmFwaC5zcGVjaWZpY3MuRmFzdExvb2t1cERpcmVjdGVkU3BlY2lmaWNzOL9ZVSFvHhcCAAFMABl0b3VjaGluZ1ZlcnRpY2VzVG9FZGdlTWFwcQB+ABJ4cgAtb3JnLmpncmFwaHQuZ3JhcGguc3BlY2lmaWNzLkRpcmVjdGVkU3BlY2lmaWNzUsdBAlEeu1MCAANMAA5lZGdlU2V0RmFjdG9yeXQAIkxvcmcvamdyYXBodC9ncmFwaC9FZGdlU2V0RmFjdG9yeTtMAAVncmFwaHEAfgABTAAJdmVydGV4TWFwcQB+ABJ4cHNyADxvcmcuamdyYXBodC5ncmFwaC5zcGVjaWZpY3MuQXJyYXlVbmVuZm9yY2VkU2V0RWRnZVNldEZhY3RvcnlSZB2s8XDq4QIAAHhwcQB+AAtzcQB+ABQ/QAAAAAAAGHcIAAAAIAAAAA5zcQB+ACVxAH4AN3EAfgAqc3IAMW9yZy5qZ3JhcGh0LmdyYXBoLnNwZWNpZmljcy5EaXJlY3RlZEVkZ2VDb250YWluZXJoAOWdxXLOwgIAAkwACGluY29taW5ndAAPTGphdmEvdXRpbC9TZXQ7TAAIb3V0Z29pbmdxAH4AoXhwc3IAI29yZy5qZ3JhcGh0LnV0aWwuQXJyYXlVbmVuZm9yY2VkU2V0mR7YQWZ1cNoCAAB4cgATamF2YS51dGlsLkFycmF5TGlzdHiB0h2Zx2GdAwABSQAEc2l6ZXhwAAAAAXcEAAAAAXEAfgA5eHNxAH4AowAAAAF3BAAAAAFxAH4AMHhzcQB+ACV0AAdBYm9ydGVkcQB+ACpzcQB+AKBzcQB+AKMAAAAAdwQAAAAAeHNxAH4AowAAAAB3BAAAAAB4c3EAfgAlcQB+AGxxAH4AKnNxAH4AoHNxAH4AowAAAAJ3BAAAAAJxAH4AZnEAfgB/eHNxAH4AowAAAAB3BAAAAAB4c3EAfgAlcQB+AChxAH4AKnNxAH4AoHNxAH4AowAAAAF3BAAAAAFxAH4AMHhzcQB+AKMAAAABdwQAAAABcQB+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",
"content": "FlowDescriptor(name=Ipftutorialflow, version=1, id=IpftutorialflowV1, hash=-756900467, model=Ipftutorialmodel, basicGraph=com.iconsolutions.ipf.core.flow.graph.SerializableGraph@17c48692, fullGraph=com.iconsolutions.ipf.core.flow.graph.SerializableGraph@e5d1be14, terminalStates=null)",
"terminalGlobalStates": [
"Completed",
"Failed"
],
"states": [
{
"name": "Initial",
"labels": [
"CRITICAL_PATH_START",
"CLIENT_SPECIFIC_LABEL"
]
},
{
"name": "Executing"
},
{
"name": "Complete",
"labels": [
"CRITICAL_PATH_END"
]
}
],
"events": [
{
"name": "Payment Initiation Started"
},
{
"name": "Payment Complete",
"labels": [
"CLIENT_SPECIFIC_LABEL"
]
}
]
},
"metadata": {
"key1": "value1"
},
"hash": "hash"
}
Índices
A continuación se presentan los índices requeridos para el processes colección. Esta no es una lista completa, sino el mínimo absoluto para un funcionamiento correcto. Consulte Indexación Para más información y la lista completa de índices.
| Index Name | Fields | Options |
|---|---|---|
id |
_id |
unique |
unitOfWork_1_idempotencyKey_1 |
unitOfWorkId (ascending) idempotencyKey (ascending) |
unique |
Objetos Personalizados
Nombre de la colección:`customObjects`
Tiendas custom objetos que han sido capturados durante el procesamiento de pagos de manera similar a la recolección de los pagos, pero reservados para datos que son específicos del cliente. Los objetos personalizados son de solo adición con una restricción única en unitOfWork y idempotencyKey/objectIdentifier.
Versión del Esquema 1
| Field | Description | Example |
|---|---|---|
_id |
PK - Autogenerated by MongoDB |
624d7fa649f0f4b37093fe30 |
createdAt |
The Date on which the source Domain Event was created |
2023-02-06T10:15:54.711+0000 |
schemaVersion |
The version of the schema used to persist this object |
1 |
idempotencyKey |
An identifier, unique within the scope of a unit of work, that unambiguously identifies this Process Object |
7afec0ea-66e7-40d6-8492-3f5c811118ea|InitiationFlow|64a259e5-501c-4329-be9f-4602389f87b7|1|ExampleData|0 |
unitOfWorkId |
Part of the Processing Context. A unique IPF identifier for a given transaction/request that has been submitted to IPF and who’s uniqueness is only guaranteed by the generator and not enforced by IPF. For Instant payments this relates to a single Payment Processing, for Bulk/SCT there would be different unitOfWorkIds for each level of processing (Group, Instruction, and Transaction) |
624d7fa649f0f4b37093fe30 |
clientRequestId |
Part of the Processing Context. An external identifier may have been provided to IPF by a client during Payment Initiation to identify a payment within IPF. |
df2e3f10-943c-4f12-8572-85b17740d9ce |
primaryAssociation |
Processing Context associationId, most often the persistenceId of an IPF Processing Flow |
InitiationFlow|64a259e5-501c-4329-be9f-4602389f87b7 |
associationId |
Part of the Processing Context. An identifier that associates the object with a specific business process such as a Process Flow |
InitiationFlow|64a259e5-501c-4329-be9f-4602389f87b7 |
processingEntity |
Part of the Processing Context. The financial processing entity is responsible for processing during the settlement of the payment. |
UNKNOWN |
source |
Label of the source service/system/file that created this payment object |
ipf-flow |
checkpoint |
Label of the checkpoint within the source service/system/file that created this payment object |
|
processObjectReference |
Identifier of the originating process object, on all current scenarios this is the EventId of the Domain Event |
InitiationFlow|88a40683-107f-480f-bec2-b9aaef24d3bb|1 |
category |
||
objectType |
Custom Object type label, (KEY_VALUE, SEARCHABLE_KEY_VALUE, COMPLEX_TYPE) |
COMPLEX_TYPE |
name |
The identifying name of the custom data point. |
ExampleData |
content |
The value of the custom object payload, either as a primitive or JSON object, dependent on objectType |
{ "stringField" : "Test", "intField" : 7 } |
version |
The version of the object |
1 |
metadata |
The metadata of the object as key/value pairs of strings |
{
"_id": {
"$oid": "675f0c96f58c972c1d30bac2"
},
"createdAt": {
"$date": "2025-11-16T09:15:00Z"
},
"schemaVersion": 1,
"idempotencyKey": "7afec0ea-66e7-40d6-8492-3f5c811118ea|InitiationFlow|64a259e5-501c-4329-be9f-4602389f87b7|1|ExampleData|0",
"unitOfWorkId": "7afec0ea-66e7-40d6-8492-3f5c811118ea",
"clientRequestId": "df2e3f10-943c-4f12-8572-85b17740d9ce",
"processingEntity": "UNKNOWN",
"primaryAssociation": "InitiationFlow|f0a9684a-467e-4e60-9e6e-efe00a860305",
"associationId": "some association id",
"checkpoint": "checkpoint",
"source": "ipf-flow",
"processObjectReference": "InitiationFlow|f0a9684a-467e-4e60-9e6e-efe00a860305|1",
"category": "category",
"name": "SomeCustomObject",
"objectType": "COMPLEX_TYPE",
"content": {
"someKey": {
"anotherKey": "someValue"
}
},
"version": 42,
"metadata": {
"key": "value"
}
}
Índices
A continuación se presentan los índices requeridos para el customObjects colección. Esta no es una lista completa, sino el mínimo absoluto para un funcionamiento correcto. Consulte Indexación Para más información y la lista completa de índices.
| Index Name | Fields | Options |
|---|---|---|
id |
_id |
unique |
unitOfWork_1_idempotencyKey_1 |
unitOfWorkId (ascending) idempotencyKey (ascending) |
Resúmenes
Nombre de la colección:`summaries`
Almacena un único registro para un pago dado a lo largo de su ciclo de vida. Sirve como la "columna vertebral" de la información agregada de diversas emisiones de datos de IPF para un dado unitOfWork, según lo asociado por el Contexto de Procesamiento.
Campos
A continuación se presentan los campos para el objeto de resúmenes. Estas son propiedades que son candidatas comunes para búsquedas de consulta, la mayoría de las propiedades se implementan como valor y lastSequenceNumber pares. Esto es para asegurar que el resumen capture los valores de datos "más recientes" como eventos de diferentes servicios que pueden llegar fuera de orden.
| Field | Description | Example |
|---|---|---|
_id |
PK - Generated by MongoDB |
63e0d35dcbd3c015141aad53 |
schemaVersion |
Version of the schema |
1 |
unitOfWorkId |
Part of the Processing Context. A unique IPF identifier for a given transaction/request that has been submitted to IPF and who’s uniqueness is only guaranteed by the generator and not enforced by IPF. For Instant payments this relates to a single Payment Processing, for Bulk/SCT there would be different unitOfWorkIds for each level of processing (Group, Instruction, and Transaction) |
bc3d6020-02c2-43e1-84ad-662267e32ba3 |
clientRequestId |
Part of the Processing Context. An external identifier may have been provided to IPF by a client during Payment Initiation to identify a payment within IPF. |
d708ef96-e25f-4da2-82e1-4172c0358899 |
processingEntity |
Part of the Processing Context. The financial processing entity is responsible for processing during the settlement of the payment. |
|
journeyType |
PAYMENT |
|
relatedUnitOfWorkId |
The parent unit of work id, e.g. the id of the batch |
|
terminal |
Indicates the terminal status of this payment |
true |
failure |
Indicates the failure status of this payment |
false |
archivedAt |
The timestamp the unit of work represented by this summary was archived |
2023-02-06T10:15:54.711+0000 |
startedAt.lastSequenceNumber |
1 |
|
startedAt.value |
ISO Datetime |
2023-02-06T10:15:54.711+0000 |
instructionId.lastSequenceNumber |
1 |
|
instructionId.value |
||
originalInstructionId.lastSequenceNumber |
1 |
|
originalInstructionId.value |
||
transactionId.lastSequenceNumber |
1 |
|
transactionId.value |
||
originalTransactionId.lastSequenceNumber |
1 |
|
originalTransactionId.value |
||
messageId.lastSequenceNumber |
1 |
|
messageId.value |
||
originalMessageId.lastSequenceNumber |
1 |
|
originalMessageId.value |
||
uetr.lastSequenceNumber |
1 |
|
uetr.value |
||
returnId.lastSequenceNumber |
1 |
|
returnId.value |
||
cancellationId.lastSequenceNumber |
1 |
|
cancellationId.value |
||
originalEndToEndId.lastSequenceNumber |
1 |
|
originalEndToEndId.value |
||
paymentInformationId.lastSequenceNumber |
1 |
|
paymentInformationId.value |
||
instructionReceivedAt.lastSequenceNumber |
1 |
|
instructionReceivedAt.value |
Datetime |
2023-02-07T00:00:00.000+0000 |
executionStartedAt.lastSequenceNumber |
1 |
|
executionStartedAt.value |
Datetime |
2023-02-07T00:00:00.000+0000 |
interbankSettlementDate.lastSequenceNumber |
1 |
|
interbankSettlementDate.value |
Date only as a string |
2023-02-07 |
originalInterbankSettlementDate.lastSequenceNumber |
1 |
|
originalInterbankSettlementDate.value |
Date only as a string |
2023-02-07 |
acceptanceDateTime.lastSequenceNumber |
1 |
|
acceptanceDateTime.value |
Datetime as a string |
2023-02-07T00:00:00.000+0000 |
requestedExecutionDate.lastSequenceNumber |
1 |
|
requestedExecutionDate.value |
Datetime as a string |
2023-02-07T00:00:00.000+0000 |
instructedAmount.lastSequenceNumber |
1 |
|
instructedAmount.value |
Decimal |
7.16 |
instructedAmountCurrency.lastSequenceNumber |
1 |
|
instructedAmountCurrency.value |
USD |
|
transactionAmount.lastSequenceNumber |
1 |
|
transactionAmount.value |
Decimal |
7.16 |
transactionAmountCurrency.lastSequenceNumber |
1 |
|
transactionAmountCurrency.value |
USD |
|
originalTransactionAmount.lastSequenceNumber |
1 |
|
originalTransactionAmount.value |
Decimal |
7.16 |
originalTransactionAmountCurrency.lastSequenceNumber |
1 |
|
originalTransactionAmountCurrency.value |
USD |
|
convertedTransactionAmount.lastSequenceNumber |
1 |
|
convertedTransactionAmount.value |
Decimal |
7.16 |
convertedTransactionAmountCurrency.lastSequenceNumber |
1 |
|
convertedTransactionAmountCurrency.value |
USD |
|
exchangeRate.lastSequenceNumber |
1 |
|
exchangeRate.value |
Decimal |
7.16 |
returnedAmount.lastSequenceNumber |
1 |
|
returnedAmount.value |
Decimal |
7.16 |
returnedAmountCurrency.lastSequenceNumber |
1 |
|
returnedAmountCurrency.value |
USD |
|
chargeAmount.lastSequenceNumber |
1 |
|
chargeAmount.value |
Decimal |
7.16 |
chargeAmountCurrency.lastSequenceNumber |
1 |
|
chargeAmountCurrency.value |
USD |
|
creditAmount.lastSequenceNumber |
1 |
|
creditAmount.value |
Decimal |
7.16 |
creditAmountCurrency.lastSequenceNumber |
1 |
|
creditAmountCurrency.value |
USD |
|
debitAmount.lastSequenceNumber |
1 |
|
debitAmount.value |
Decimal |
7.16 |
debitAmountCurrency.lastSequenceNumber |
1 |
|
debitAmountCurrency.value |
USD |
|
totalAmount.lastSequenceNumber |
1 |
|
totalAmount.value |
Decimal |
7.16 |
totalAmountCurrency.lastSequenceNumber |
1 |
|
totalAmountCurrency.value |
USD |
|
creditorAccount.lastSequenceNumber |
1 |
|
creditorAccount.value |
GB24ADKGJWYYHUJWROBFJPGDHGTIKI |
|
creditorBIC.lastSequenceNumber |
1 |
|
creditorBIC.value |
ICONGBL0 |
|
creditorAgentBIC.lastSequenceNumber |
1 |
|
creditorAgentBIC.value |
ICONGBA1 |
|
creditorName.lastSequenceNumber |
1 |
|
creditorName.value |
||
debtorAccount.lastSequenceNumber |
1 |
|
debtorAccount.value |
GB74FBNFUHQJRNHBRHMXGBZCGIVRDY |
|
debtorBIC.lastSequenceNumber |
1 |
|
debtorBIC.value |
ICONGBM0 |
|
debtorAgentBIC.lastSequenceNumber |
1 |
|
debtorAgentBIC.value |
ICONGBA1 |
|
debtorName.lastSequenceNumber |
1 |
|
debtorName.value |
Isabelle Mitchell |
|
creditAccount.lastSequenceNumber |
1 |
|
creditAccount.value |
||
debitAccount.lastSequenceNumber |
1 |
|
debitAccount.value |
||
instructingParty.lastSequenceNumber |
1 |
|
instructingParty.value |
||
instructedParty.lastSequenceNumber |
1 |
|
instructedParty.value |
||
instructingAgent.lastSequenceNumber |
1 |
|
instructingAgent.value |
||
instructedAgent.lastSequenceNumber |
1 |
|
instructedAgent.value |
||
initiatingPartyName.lastSequenceNumber |
1 |
|
initiatingPartyName.value |
||
csm.lastSequenceNumber |
1 |
|
csm.value |
||
timeZone.lastSequenceNumber |
1 |
|
timeZone.value |
||
reasonCode.lastSequenceNumber |
1 |
|
reasonCode.value |
||
reasonText.lastSequenceNumber |
1 |
|
reasonText.value |
returnId.lastSequenceNumber |
|
1 |
globalStatus.lastSequenceNumber |
|
1 |
globalStatus.value |
|
ACCEPTED |
paymentType.lastSequenceNumber |
|
1 |
paymentType.value |
|
priority.lastSequenceNumber |
||
1 |
priority.value |
|
numberOfTransactions.lastSequenceNumber |
||
1 |
numberOfTransactions.value |
|
11 |
batchBooking.lastSequenceNumber |
|
1 |
batchBooking.value |
|
true |
controlSum.lastSequenceNumber |
|
1 |
controlSum.value |
|
123.45 |
customFields.* |
|
alternativeIds.* |
||
searchFields.* |
||
See table below |
{
"_id": {
"$oid": "675f0c96f58c972c1d30bac2"
},
"schemaVersion" : 1,
"unitOfWorkId" : "7515b096-b126-4e01-a732-c28d1b5f0ea6",
"clientRequestId": "client-request-id",
"processingEntity": "processing-entity",
"journeyType" : "PAYMENT",
"relatedUnitOfWorkId" : "7515b096-b126-4e01-a762-c11a1c5f0ea7",
"terminal": true,
"failure": true,
"archivedAt": {
"$date": "2023-02-07T10:31:36.718+0000"
},
"instructionId": {
"lastSequenceNumber": 42,
"value": "instruction-id"
},
"originalInstructionId": {
"lastSequenceNumber": 42,
"value": "original-instruction-id"
},
"transactionId": {
"lastSequenceNumber": 42,
"value": "transaction-id"
},
"originalTransactionId": {
"lastSequenceNumber": 42,
"value": "original-transaction-id"
},
"messageId": {
"lastSequenceNumber": 42,
"value": "message-id"
},
"uetr": {
"lastSequenceNumber": 42,
"value": "uetr"
},
"returnId": {
"lastSequenceNumber": 42,
"value": "return-id"
},
"cancellationId": {
"lastSequenceNumber": 42,
"value": "cancellation-id"
},
"originalMessageId": {
"lastSequenceNumber": 42,
"value": "original-message-id"
},
"originalEndToEndId": {
"lastSequenceNumber": 42,
"value": "original-end-to-end-id"
},
"paymentInformationId": {
"lastSequenceNumber": 42,
"value": "payment-information-id"
},
"instructionReceivedAt": {
"lastSequenceNumber": 42,
"value": {
"$date": "2025-11-14T12:00:00Z"
}
},
"executionStartedAt": {
"lastSequenceNumber": 42,
"value": {
"$date": "2025-11-14T12:00:00Z"
}
},
"settlementCompletedAt": {
"lastSequenceNumber": 42,
"value": {
"$date": "2025-11-14T12:00:00Z"
}
},
"interbankSettlementDate": {
"lastSequenceNumber": 42,
"value": "2025-11-14"
},
"originalInterbankSettlementDate": {
"lastSequenceNumber": 42,
"value": "2025-11-14"
},
"acceptanceDateTime": {
"lastSequenceNumber": 42,
"value": "2025-11-14T12:00:00Z"
},
"requestedExecutionDate": {
"lastSequenceNumber": 42,
"value": "2025-11-14T12:00:00Z"
},
"instructedAmount": {
"lastSequenceNumber": 42,
"value": {
"$numberDecimal": "123.45"
}
},
"instructedAmountCurrency": {
"lastSequenceNumber": 42,
"value": "instructed-amount-currency"
},
"transactionAmount": {
"lastSequenceNumber": 42,
"value": {
"$numberDecimal": "123.45"
}
},
"transactionAmountCurrency": {
"lastSequenceNumber": 42,
"value": "transaction-amount-currency"
},
"originalTransactionAmount": {
"lastSequenceNumber": 42,
"value": {
"$numberDecimal": "123.45"
}
},
"originalTransactionAmountCurrency": {
"lastSequenceNumber": 42,
"value": "original-transaction-amount-currency"
},
"convertedTransactionAmount": {
"lastSequenceNumber": 42,
"value": {
"$numberDecimal": "123.45"
}
},
"convertedTransactionAmountCurrency": {
"lastSequenceNumber": 42,
"value": "converted-transaction-amount-currency"
},
"exchangeRate": {
"lastSequenceNumber": 42,
"value": {
"$numberDecimal": "123.45"
}
},
"returnedAmount": {
"lastSequenceNumber": 42,
"value": {
"$numberDecimal": "123.45"
}
},
"returnedAmountCurrency": {
"lastSequenceNumber": 42,
"value": "returned-amount-currency"
},
"chargeAmount": {
"lastSequenceNumber": 42,
"value": {
"$numberDecimal": "123.45"
}
},
"chargeAmountCurrency": {
"lastSequenceNumber": 42,
"value": "charge-amount-currency"
},
"creditAmount": {
"lastSequenceNumber": 42,
"value": {
"$numberDecimal": "123.45"
}
},
"creditAmountCurrency": {
"lastSequenceNumber": 42,
"value": "credit-amount-currency"
},
"debitAmount": {
"lastSequenceNumber": 42,
"value": {
"$numberDecimal": "123.45"
}
},
"debitAmountCurrency": {
"lastSequenceNumber": 42,
"value": "debit-amount-currency"
},
"totalAmount": {
"lastSequenceNumber": 42,
"value": {
"$numberDecimal": "123.45"
}
},
"totalAmountCurrency": {
"lastSequenceNumber": 42,
"value": "total-amount-currency"
},
"creditorAccount": {
"lastSequenceNumber": 42,
"value": "creditor-account"
},
"creditorBIC": {
"lastSequenceNumber": 42,
"value": "creditor-bic"
},
"creditorAgentBIC": {
"lastSequenceNumber": 42,
"value": "creditor-agent-bic"
},
"creditorName": {
"lastSequenceNumber": 42,
"value": "creditor-name"
},
"debtorAccount": {
"lastSequenceNumber": 42,
"value": "debtor-account"
},
"debtorBIC": {
"lastSequenceNumber": 42,
"value": "debtor-bic"
},
"debtorAgentBIC": {
"lastSequenceNumber": 42,
"value": "debtor-agent-bic"
},
"debtorName": {
"lastSequenceNumber": 42,
"value": "debtor-name"
},
"creditAccount": {
"lastSequenceNumber": 42,
"value": "credit-account"
},
"debitAccount": {
"lastSequenceNumber": 42,
"value": "debit-account"
},
"instructingParty": {
"lastSequenceNumber": 42,
"value": "instructing-party"
},
"instructedParty": {
"lastSequenceNumber": 42,
"value": "instructed-party"
},
"instructingAgent": {
"lastSequenceNumber": 42,
"value": "instructing-agent"
},
"instructedAgent": {
"lastSequenceNumber": 42,
"value": "instructed-agent"
},
"initiatingPartyName": {
"lastSequenceNumber": 42,
"value": "initiating-party-name"
},
"startedAt": {
"lastSequenceNumber": 42,
"value": {
"$date": "2025-11-14T12:00:00Z"
}
},
"csm": {
"lastSequenceNumber": 42,
"value": "csm"
},
"timeZone": {
"lastSequenceNumber": 42,
"value": "time-zone"
},
"reasonCode": {
"lastSequenceNumber": 42,
"value": "reason-code"
},
"reasonText": {
"lastSequenceNumber": 42,
"value": "reason-text"
},
"globalStatus": {
"lastSequenceNumber": 42,
"value": "global-status"
},
"paymentType": {
"lastSequenceNumber": 42,
"value": "payment-type"
},
"priority": {
"lastSequenceNumber": 42,
"value": "priority"
},
"numberOfTransactions": {
"lastSequenceNumber": 42,
"value": 123
},
"batchBooking": {
"lastSequenceNumber": 42,
"value": true
},
"controlSum": {
"lastSequenceNumber": 42,
"value": {
"$numberDecimal": "123.45"
}
},
"customFields": {
"customStringField": {
"lastSequenceNumber": 42,
"value": "some custom value"
}
},
"alternativeIds" : [
{
"name": "CLIENT_REQUEST_ID",
"value": "client-request-id-x18kl2k5ot"
},
{
"name": "alternative-identifier-name",
"value": "alternative-identifier-value"
}
],
"searchFields" : {
"debtorAccount" : "gb74fbnfuhqjrnhbrhmxgbzcgivrdy",
"creditorName" : "adam white",
"debtorName" : "isabelle mitchell",
"instructedAmountCurrency" : "USD",
"transactionAmountCurrency" : "USD",
"creditorBIC" : "icongbl0",
"debtorBIC" : "icongbm0",
"creditorAccount" : "gb24adkgjwyyhujwrobfjpgdhgtiki",
"transactionAmount" : 7.16,
"instructedAmount" : 7.16,
"creditorAgentBIC" : "icongba1",
"debtorAgentBIC" : "icongba1",
"interbankSettlementDate": {
"$date": "2025-11-14T00:00:00Z"
}
}
}
A continuación se presentan los campos relacionados con el *searchFields*subObject del resumen. Prácticamente todos los campos se están extrayendo actualmente en el searchFields Bloque
| Field | Description | Example |
|---|---|---|
searchFields.acceptanceDateTime |
||
searchFields.batchBooking |
||
searchFields.cancellationId |
||
searchFields.controlSum |
||
searchFields.creditAccount |
||
searchFields.creditAmount |
||
searchFields.creditAmountCurrency |
||
searchFields.creditorAccount |
gb24adkgjwyyhujwrobfjpgdhgtiki |
|
searchFields.creditorAgentBIC |
icongba1 |
|
searchFields.creditorBIC |
icongbl0 |
|
searchFields.creditorName |
adam white |
|
searchFields.debitAccount |
||
searchFields.debitAmount |
||
searchFields.debitAmountCurrency |
||
searchFields.debtorAccount |
gb74fbnfuhqjrnhbrhmxgbzcgivrdy |
|
searchFields.debtorAgentBIC |
icongba1 |
|
searchFields.debtorBIC |
icongbm0 |
|
searchFields.debtorName |
isabelle mitchell |
|
searchFields.instructedAgent |
||
searchFields.instructedAmount |
7.16 |
|
searchFields.instructedAmountCurrency |
USD |
|
searchFields.instructedParty |
||
searchFields.instructingAgent |
||
searchFields.instructingParty |
||
searchFields.instructionId |
||
searchFields.interbankSettlementDate |
2023-02-07T00:00:00.000+0000 |
|
searchFields.messageId |
||
searchFields.originalEndToEndId |
||
searchFields.originalInterbankSettlementDate |
||
searchFields.originalMessageId |
||
searchFields.paymentInformationId |
||
searchFields.reasonCode |
||
searchFields.reasonText |
||
searchFields.requestedExecutionDate |
||
searchFields.returnId |
||
searchFields.returnedAmount |
||
searchFields.returnedAmountCurrency |
||
searchFields.transactionAmount |
7.16 |
|
searchFields.transactionAmountCurrency |
USD |
|
searchFields.transactionId |
||
searchFields.uetr |
Índices
A continuación se presentan los índices requeridos para el summaries colección. Esta no es una lista completa, sino el mínimo absoluto para un funcionamiento correcto. Consulte Indexación Para más información y la lista completa de índices.
| Index Name | Fields | Options |
|---|---|---|
id |
_id |
unique |
unitOfWorkId_1 |
unitOfWorkId (ascending) |
unique |
UnitOfWorks
Nombre de la colección:`unitOfWorks`
Almacena un único registro para un dado unitOfWork a lo largo de su vida útil. Sirve como metadatos para un unitOfWork, según lo asociado por el Contexto de Procesamiento. Utilizado para identificar el inicio y el final de un dado unitOfWork, y para identificar los datos asociados para eso unitOfWork.
Versión del Esquema 1
| Field | Description | Example |
|---|---|---|
_id |
PK - Generated by MongoDB |
63e0d35dcbd3c015141aad53 |
schemaVersion |
The version of the persistence model |
1 |
unitOfWorkId |
Part of the Processing Context. A unique IPF identifier for a given transaction/request that has been submitted to IPF and who’s uniqueness is only guaranteed by the generator and not enforced by IPF. For Instant payments this relates to a single Payment Processing, for Bulk/SCT there would be different unitOfWorkIds for each level of processing (Group, Instruction, and Transaction) |
bc3d6020-02c2-43e1-84ad-662267e32ba3 |
journeyType |
The journey type of the unit of work |
PAYMENT |
startedAt |
The datetime of the first process flow event created for this unitOfWork |
2023-02-07T00:00:00.000+0000 |
finishedAt |
The datetime of the process flow event that identifies this unitOfWork has moved into a terminal global status |
2023-02-07T00:00:01.000+0000 |
archivedAt |
The datetime the unit of work was successfully archived |
2023-02-07T00:00:00.000+0000 |
{
"_id": {
"$oid": "675f0c96f58c972c1d30bac2"
},
"schemaVersion": 1,
"unitOfWorkId": "6af46e3f-e026-4587-87f8-b7fe1ebc2280",
"journeyType": "PAYMENT",
"startedAt": {
"$date": "2025-11-16T09:15:00Z"
},
"finishedAt": {
"$date": "2025-11-16T09:16:00Z"
},
"archivedAt": {
"$date": "2025-11-16T09:16:00Z"
}
}
Índices
A continuación se presentan los índices requeridos para el unitOfWorks colección. Esta no es una lista completa, sino el mínimo absoluto para un funcionamiento correcto. Consulte Indexación Para más información y la lista completa de índices.
| Index Name | Fields | Options |
|---|---|---|
id |
_id |
unique |
unitOfWorkId_1 |
unitOfWorkId (ascending) |
unique |
startedAt_1 |
startedAt (ascending) |
|
finishedAt_1 |
finishedAt (ascending) |
|
archivedAt_1 |
archivedAt (ascending) |
|
journeyType_1 |
journeyType (ascending) |
Ejemplo de Registro
A continuación se presenta un ejemplo UnitOfWork registro para un Pago
{
"_id": {
"$oid": "675f0c96f58c972c1d30bac2"
},
"schemaVersion": 1,
"unitOfWorkId": "6af46e3f-e026-4587-87f8-b7fe1ebc2280",
"journeyType": "PAYMENT",
"startedAt": {
"$date": "2025-11-16T09:15:00Z"
},
"finishedAt": {
"$date": "2025-11-16T09:16:00Z"
},
"archivedAt": {
"$date": "2025-11-16T09:16:00Z"
}
}
Informes de purga
Nombre de la colección:`purgeReports`
Almacena objetos de informe de purga que son creados y actualizados a lo largo de ODS-Purging. Un informe individual contendrá detalles sobre la fecha de ejecución, la configuración utilizada para la purga, el número de Resúmenes purgados y el tiempo empleado en la purga. Los informes de purga no están asociados a otras colecciones.
Campos
A continuación se presentan los campos para el PurgeReport objeto.
| Field | Description | Example |
|---|---|---|
executionDate |
The date which this purge was executed. This will be unique for each PurgeReport |
2021-05-17T00:00:00.000Z |
retentionPeriod |
The configured |
P2Y |
retentionPeriodLowerBound |
The date-time lower bound for the retention period. A unit-of-work-id passes one of the criteria to be purged if its |
2021-05-17T00:00:00.000Z |
terminalUnitOfWorksOnly |
The configured |
false |
archivedDependentJourneyTypes |
The configured |
[PAYMENT, RECALL] |
unitOfWorksToDelete |
The number of Summary documents that have been identified as outside the retention period and should be deleted during this purge execution |
1234567 |
unitOfWorksDeleted |
The number of Summary documents that have actually been deleted. This value is incremented as the purge is ongoing |
1234567 |
startedAt |
The date-time at which purging began for this execution date (will nearly always be the start of the day) |
2023-05-17T00:00:02.170Z |
finishedAt |
The date-time at which all the data that should be deleted for a given execution date has been deleted |
2023-05-17T00:32:03.180Z |
duration |
The duration of time taken to complete a purge. Calculated by comparing the |
PT32M1.01S |
Índices
A continuación se presentan los índices para el purgeReports colección
| Index Name | Fields | Options |
|---|---|---|
id |
_id |
unique |
executionDate_1 |
executionDate (ascending) |
unique |
Ejemplo de Registro
{
"_id": "64660536a311867424e4b049",
"executionDate": "2023-05-17T00:00:00.000+0000",
"retentionPeriod": "P2Y",
"retentionPeriodLowerBound": "2021-05-17T00:00:00.000+0000",
"terminalUnitOfWorksOnly" : true,
"startedAt": "2023-05-17T11:00:06.850+0000",
"summariesDeleted": 1234567,
"summariesToDelete": 1234567,
"duration": "PT0.13508S",
"finishedAt": "2023-05-17T11:00:06.985+0000"
}
Informes de Caducidad
Nombre de la colección:`expiryReports`
Almacena el número de unitOfWorks que expirará en n días. (configurado a través de la configuración ods.purging.query-unit-of-works-expire-in-days). Se crea únicamente para el tipo de purga TTL cuando se utiliza Cosmos DB.
Campos
A continuación se presentan los campos para el ExpiryReport objeto.
| Field | Description | Example |
|---|---|---|
expiryDate |
The date when given unitOfWorks will expire. This will be unique for each ExpiryReport |
2024-05-17T00:00:00.000Z |
numberOfUnitOfWorksToExpire |
Number of unitOfWorks that will expire in a given days |
10 |
Archivo de Selección de Candidatos State
Nombre de la colección:`archiverCandidateSelectionState`
Almacena el estado del archivo selección de candidatos.
Contiene un único documento que representa el estado actual de selección de candidatos.
Campos
| Field | Description | Example |
|---|---|---|
date |
The date of the current candidate selection window |
|
hour |
The hour of the current candidate selection window within [0..23] |
|
checkpoint |
The id of the last candidate seen in the current selection window |
|
notificationSequence |
The sequence number for the current selection window - incremented on each execution - resets to |
1 |