ODS Persistence Model
Este documento describe el IPF Operational Data Store (ODS) implementado en MongoDB.
Diagrama de visión general
A continuación se muestra una vista simplificada de las principales relaciones entre las colecciones; no contiene las listas completas de campos, solo aquellos que se relacionan con asociaciones con otras colecciones a través de identidades.
Patrones de uso
ODS se centra en una Unit of Work (uow). Una uow representa una única transacción que se ha procesado a través de una implementación de IPF y tiene límites bien definidos. Las Units of Work más comunes son Payments y Returns, pero una uow también puede ser otras acciones como trabajos de File Processing o Human Tasks.
El campo uowId es proporcionado por el software de procesamiento de pagos (IPF) en todos los elementos de datos emitidos al ODS a través del IPF Processing Data Egress. Una vez que hemos identificado el uowId para una unidad de trabajo dada, es trivial capturar todos los puntos de datos relacionados con ella, desde MDS, PDS, process y la colección custom.
Desde la perspectiva de consulta de datos, la ruta común es identificar el registro summary 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 a todos los IPF processing flows, son servicios IPF: los valores capturados aquí son los campos clave por los que un usuario o sistema puede querer buscar (con un enfoque inicial en payments/returns).
Visión general de colecciones
Payments
Nombre de la colección: payments
Almacena objetos MDS individuales creados en la iniciación del pago y actualizados a lo largo del ciclo de vida del procesamiento del pago. Un "MDS Object" se identifica por su mdsObjectId, dentro del ámbito de un uowId dado. La colección está modelada como un log de solo anexado con actualizaciones a un mdsObject representadas como múltiples entradas, diferenciadas por el processObjectReference, que es la tercera parte del índice compuesto único: uowId_mdsObjectId_processObjectReference
Campos
A continuación se muestran los campos para el MdsObject.
| Field | Description | Example |
|---|---|---|
_id |
PK - Autogenerated by MongoDB |
63e0d35dcbd3c015141aad53 |
_class |
Fully Qualified Java Class name of the domain type for the document entry |
com.iconsolutions.ipf.ods.MdsEntry |
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 |
content.* |
A JSON subdocument of content |
<json subdocument of the content> |
content._class |
Fully Qualified Java Class name of the payload content |
com.iconsolutions.ipf.payments.domain.payment_initiation.pain001.CustomerCreditTransferInitiation |
context.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 |
context.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 |
context.processingEntity |
Part of the Processing Context. The financial processing entity is responsible for processing during the settlement of the payment. |
UNKNOWN |
context.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 |
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 |
objectType |
Identifies the type of mds object, i.e. which ISO20022 fundamental message component |
PAIN_001_PAYMENT_INSTRUCTION |
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 |
primaryAssociation |
Processing Context associationId, 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 |
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 |
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 |
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 |
searchFields.()* |
A Set of common searchable (indexed) fields for ISO objects |
- |
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 |
A continuación se muestran los campos relacionados con el subobjeto searchFields del MdsObject; se muestran en una tabla separada únicamente para facilitar la lectura.
| 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 |
Registros de ejemplo
A continuación se muestra un registro de ejemplo de un bloque Payment Instruction de pain.001.
{
"_id" : "63e2288bbdb3835de45e3616",
"_class" : "com.iconsolutions.ipf.ods.persistence.mongo.mds.MdsEntry",
"clientRequestId" : "UNKNOWN",
"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\"}}}",
"type" : "com.iconsolutions.ipf.payments.domain.payment_initiation.pain001.PaymentInstruction"
},
"context" : {
"associationId" : "InitiationFlow|f0a9684a-467e-4e60-9e6e-efe00a860305",
"clientRequestId" : "UNKNOWN",
"processingEntity" : "UNKNOWN",
"unitOfWorkId" : "7515b096-b126-4e01-a732-c28d1b5f0ea6"
},
"createdAt" : "2023-02-07T10:31:36.718+0000",
"objectType" : "PAIN_001_PAYMENT_INSTRUCTION",
"parentPaymentObjectId" : "7515b096-b126-4e01-a732-c28d1b5f0ea6|PaymentInitiation|0|CustomerCreditTransferInitiation",
"paymentObjectId" : "7515b096-b126-4e01-a732-c28d1b5f0ea6|PaymentInitiation|1|PaymentInstruction",
"primaryAssociation" : "InitiationFlow|f0a9684a-467e-4e60-9e6e-efe00a860305",
"processObjectReference" : "InitiationFlow|f0a9684a-467e-4e60-9e6e-efe00a860305|1",
"processingEntity" : "UNKNOWN",
"searchFields" : {
"debtorBIC" : "icongbm0",
"debtorAccount" : "gb74fbnfuhqjrnhbrhmxgbzcgivrdy",
"amount" : 7.16,
"paymentInstructionId" : "ApwciBTlXXQGNckhDuhlJDnygEoDtKAbzun",
"messageId" : "XIrNfxNPubaUGFvnuntjTYWnintRDfYLKFT",
"debtorName" : "isabelle mitchell",
"debtorAgentBIC" : "icongba1"
},
"sequenceNumber" : 1,
"source" : "ipf-flow",
"unitOfWorkId" : "7515b096-b126-4e01-a732-c28d1b5f0ea6"
}
Índices
A continuación se muestran los índices para la colección Payments.
| Index Name | Fields | Options |
|---|---|---|
id |
_id |
unique |
clientRequestId_1 |
clientRequestId (ascending) |
|
createdAt_1__id_-1 |
createdAt (ascending) - _id (descending) |
|
parentPaymentObjectId_1 |
parentPaymentObjectId (ascending) |
|
paymentObjectId_1 |
paymentObjectId (ascending) |
|
primaryAssociations_1 |
primaryAssociations (ascending) |
|
lastUpdated_1 |
lastUpdated (ascending) |
|
searchFields.assignmentId_1 |
searchFields.assignmentId (ascending) |
|
searchFields.cancellationId_1 |
searchFields.cancellationId (ascending) |
|
searchFields.cancellationStatusId_1 |
searchFields.cancellationStatusId (ascending) |
|
searchFields.creditorAccount_1__id_-1 |
searchFields.creditorAccount (ascending) - _id (descending) |
|
searchFields.creditorAgentBIC_1__id_-1 |
searchFields.creditorAgentBIC (ascending) - _id (descending) |
|
searchFields.creditorName_1__id_-1 |
searchFields.creditorName (ascending) = -_id (descending) |
|
searchFields.debtorAccount_1__id_-1 |
searchFields.debtorAccount (ascending) - _id (descending) |
|
searchFields.debtorAgentBIC_1__id_-1 |
searchFields.debtorAgentBIC (ascending) - _id (descending) |
|
searchFields.debtorName_1__id_-1 |
searchFields.debtorName (ascending) - _id (descending) |
|
searchFields.endToEndId_1 |
searchFields.endToEndId (ascending) |
|
searchFields.initiatingPartyId_1__id_-1 |
searchFields.initiatingPartyId (ascending) - _id (descending) |
|
searchFields.initiatingPartyName_1__id_-1 |
searchFields.initiatingPartyName (ascending) - _id (descending) |
|
searchFields.instructedAgent_1__id_-1 |
searchFields.instructedAgent (ascending) - _id (descending) |
|
searchFields.instructingAgent_1__id_-1 |
searchFields.instructingAgent (ascending) - _id (descending) |
|
searchFields.instructionId_1 |
searchFields.instructionId (ascending) |
|
searchFields.messageId_1 |
searchFields.messageId (ascending) |
|
searchFields.originalMessageId_1 |
searchFields.originalMessageId (ascending) |
|
searchFields.paymentInstructionId_1 |
searchFields.paymentInstructionId (ascending) |
|
searchFields.returnId_1 |
searchFields.returnId (ascending) |
|
searchFields.statusRequestId_1 |
searchFields.statusRequestId (ascending) |
|
searchFields.transactionId_1 |
searchFields.transactionId (ascending) |
|
searchFields.uetr_1 |
searchFields.uetr (ascending) |
|
unitOfWorkId_1 |
unitOfWorkId (ascending) |
|
unitOfWorkId_1_paymentObjectId_1_processObjectReference_1 |
unitOfWorkId (ascending) - paymentObjectId (ascending) - procesObjectReference (ascending) |
unique |
PDS
Nombre de la colección: pds
Almacena objetos PDS que se han capturado durante el procesamiento de pagos. Los objetos PDS pueden ser tipos definidos por IPF o tipos PDS personalizados específicos del cliente.
Un objeto PDS se identifica por la unidad de trabajo a la que pertenece y su nombre. Las distintas versiones de ese objeto PDS se distinguen por el número de secuencia del evento del que se originaron. El mayor número de secuencia entre un conjunto de versiones de objeto PDS es la versión más reciente de ese objeto PDS.
La colección PDS es de solo anexado.
Campos
| Field | Description | Example |
|---|---|---|
_id |
PK - Generated by MongoDB |
63e0d35dcbd3c015141aad53 |
createdAt |
Timestamp at which this object was originally created by the originating system, which is the time the original event was raised. The date-time notation as defined by https://tools.ietf.org/html/rfc3339#section-5.6. |
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 |
primaryAssociation |
Usually the persistenceId of an IPF Processing Flow |
InitiationFlow|88a40683-107f-480f-bec2-b9aaef24d3bb |
associationId |
An identifier that associates the object with a specific business process such as a Process Flow |
InitiationFlow|88a40683-107f-480f-bec2-b9aaef24d3bb |
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 |
processingEntity |
The financial entity responsible for the payment processing. |
UNKNOWN |
eventId |
Identifier of the originating event |
InitiationFlow|88a40683-107f-480f-bec2-b9aaef24d3bb|1 |
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 |
name |
Identifies the PDS object, either an IPF type, such as 'Csm, or a client specific type, such as 'ClientDataType' |
Csm |
sequenceNumber |
The internal sequence for the PDS object, usually derived via the sequence for the source event, |
2 |
content.* |
A JSON subdocument of content |
<json subdocument of the content> |
Ejemplo de registro PDS personalizado
{
"_id" : "6489b5822fad5002d37baf1f",
"clientRequestId" : "UNKNOWN",
"content" : {
"clientSpecificFieldName" : "A value important to the client during payment processing"
},
"createdAt" : "2023-06-09T09:01:00.000Z",
"eventId" : "InitiationFlow|f0a9684a-467e-4e60-9e6e-efe00a860305|1",
"name" : "SpecialClientBusinessData",
"primaryAssociation" : "InitiationFlow|f0a9684a-467e-4e60-9e6e-efe00a860305",
"processingEntity" : "UNKNOWN",
"sequenceNumber" : 1,
"source" : "ipf-flow",
"unitOfWorkId" : "7afec0ea-66e7-40d6-8492-3f5c811118ea"
}
Ejemplo de registro IPF PDS
{
"_id" : "6489b5822fad5002d37baf1f",
"clientRequestId" : "UNKNOWN",
"content" : {
"value" : "RT1"
},
"createdAt" : "2023-06-09T09:01:00.000Z",
"eventId" : "InitiationFlow|f0a9684a-467e-4e60-9e6e-efe00a860305|2",
"name" : "Csm",
"primaryAssociation" : "InitiationFlow|f0a9684a-467e-4e60-9e6e-efe00a860305",
"processingEntity" : "UNKNOWN",
"sequenceNumber" : 2,
"source" : "ipf-flow",
"unitOfWorkId" : "7afec0ea-66e7-40d6-8492-3f5c811118ea"
}
Processes
Nombre de la colección: processes
Almacena objetos de proceso individuales (captura de message log, system event o domain event, etc.) que se han capturado durante el procesamiento de pagos o en interacciones con sistemas/funciones/etc. externos al payment processing flow. Los objetos de proceso son de solo anexado con una restricción única sobre unitOfWork e idempotencyKey/objectIdentifier.
Campos
A continuación se muestran los campos para la colección processes; hay tablas separadas para campos adicionales que son condicionales al objectType. Las entradas de Processes se modelan actualmente a través de herencia de un tipo base Process Object. Aunque planeamos pasar a composición, como en la colección payments.
| Field | Description | Example |
|---|---|---|
_id |
PK - Autogenerated by MongoDB |
63e0d35ccbd3c015141aad30 |
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 |
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 |
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 |
content |
The raw content of the original data capture (e.g original Domain Event) |
<string of json raw content of the original System Event> |
objectType |
An ODS label for the type of Process Object "SYSTEM_EVENT, PROCESS_FLOW_DEFINITION, MESSAGE_LOG, PROCESS_FLOW_EVENT" |
SYSTEM_EVENT |
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 |
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 |
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 |
ProcessFlowEvent
Campos
| Field | Description | Example |
|---|---|---|
causedBy |
ProcessFlowSpecific - eventId of the causing event for the ProcessEvent |
InitiationFlow|88a40683-107f-480f-bec2-b9aaef24d3bb|1 |
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 |
hash |
The hash value of the associated processing flow, can be compared with the hash of the ProcessFlowDefinition. |
-101444374 |
originalReasonCode |
||
originalReasonText |
||
originalResponseCode |
||
paymentJourneyType |
||
paymentType |
||
processFlowId |
The Date on which the source Domain Event was created |
IpftutorialflowV2|d4964685-f134-40db-9bc8-77d79202cb99 |
processFlowSequence |
Sequence identifier to track causal ordering of Process Flow Events within the context of a Unit of Work. |
2 |
processFlowDefinitionId |
A unique identifier of the payment object, is provided by the payment processing service (IPF). |
IpftutorialflowV2 |
reasonCode |
Reference to the parent’s PaymentObjectId |
|
reasonText |
Processing Context associationId, most often the persistenceId of an IPF Processing Flow |
|
responseCode |
The |
Accepted |
status |
Various Status Identifiers |
"status" : { "originatingStatus" : "Initial", "resultingStatus" : "Duplicate Checking", "globalStatus" : "PENDING" } |
Registro de ejemplo
{
"_id" : "63e2288cbdb3835de45e3623",
"_class" : "com.iconsolutions.ipf.ods.persistence.mongo.process.ProcessFlowEventEntry",
"associationId" : "InitiationFlow|f0a9684a-467e-4e60-9e6e-efe00a860305",
"causedBy" : "IpftutorialflowV2|6b1b4ab0-dead-4032-b62b-eb66f677c0f1|8",
"clientRequestId" : "UNKNOWN",
"content" : "{\"@class\":\"com.iconsolutions.ipf.tutorial.ipftutorialmodel.initiation_flow.events.IpftutorialflowV2Complete\",\"createdAt\":\"2023-02-07T10:31:37.785Z\",\"originalCommandId\":\"HandleCallIpftutorialflowV2Response|e69a7620-6d8f-4aa9-8751-e55c6ae783a2|70c71b38-2cc8-4f08-a778-66968882724f\",\"status\":{\"originatingStatus\":\"Call Execution\",\"resultingStatus\":\"Complete\",\"globalStatus\":\"ACCEPTED\"},\"eventId\":\"InitiationFlow|f0a9684a-467e-4e60-9e6e-efe00a860305|9\",\"processingContext\":{\"associationId\":\"InitiationFlow|f0a9684a-467e-4e60-9e6e-efe00a860305\",\"unitOfWorkId\":\"7515b096-b126-4e01-a732-c28d1b5f0ea6\",\"clientRequestId\":\"UNKNOWN\",\"processingEntity\":\"UNKNOWN\"},\"initiatingId\":\"f0a9684a-467e-4e60-9e6e-efe00a860305\",\"causedByEventId\":\"IpftutorialflowV2|6b1b4ab0-dead-4032-b62b-eb66f677c0f1|8\",\"responseCode\":\"IpftutorialflowV2Complete\",\"hash\":\"-101444374\",\"failureResponse\":false}",
"createdAt" : "2023-02-07T10:31:37.785+0000",
"eventId" : "InitiationFlow|f0a9684a-467e-4e60-9e6e-efe00a860305|9",
"eventName" : "Ipftutorialflow (V2) Complete",
"hash" : "-101444374",
"idempotencyKey" : "7515b096-b126-4e01-a732-c28d1b5f0ea6|InitiationFlow|f0a9684a-467e-4e60-9e6e-efe00a860305|9",
"objectType" : "PROCESS_FLOW_EVENT",
"primaryAssociation" : "InitiationFlow|f0a9684a-467e-4e60-9e6e-efe00a860305",
"processFlowDefinitionId" : "InitiationFlow",
"processFlowId" : "InitiationFlow|f0a9684a-467e-4e60-9e6e-efe00a860305",
"processFlowSequence" : 9,
"processingEntity" : "UNKNOWN",
"responseCode" : "IpftutorialflowV2Complete",
"source" : "ipf-flow",
"status" : {
"globalStatus" : "ACCEPTED",
"originatingStatus" : "Call Execution",
"resultingStatus" : "Complete"
},
"unitOfWorkId" : "7515b096-b126-4e01-a732-c28d1b5f0ea6"
}
UnitOfWorks
Nombre de la colección: unitOfWorks
Almacena metadatos a nivel de unit of work que permiten correlacionar y consultar todos los objetos relacionados.
Campos
| Field | Description | Example |
|---|---|---|
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 |
Summaries
Nombre de la colección: summaries
Vista resumida y agregada por unit of work para búsquedas y reporting.
Campos
| Field | Description | Example |
|---|---|---|
acceptanceDateTime.lastSequenceNumber |
1 |
|
acceptanceDateTime.value |
2023-02-07T00:00:00.000+0000 |
|
archivedAt.value |
2023-02-06T10:15:54.711+0000 |
|
batchBooking.lastSequenceNumber |
1 |
|
batchBooking.value |
true |
|
cancellationId.lastSequenceNumber |
1 |
|
cancellationId.value |
||
chargeAmount.lastSequenceNumber |
1 |
|
chargeAmount.value |
7.16 |
|
chargeAmountCurrency.lastSequenceNumber |
1 |
|
chargeAmountCurrency.value |
USD |
|
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 |
controlSum.lastSequenceNumber |
1 |
|
controlSum.value |
123.45 |
|
creditAccount.lastSequenceNumber |
1 |
|
creditAccount.value |
||
creditAmount.lastSequenceNumber |
1 |
|
creditAmount.value |
7.16 |
|
creditAmountCurrency.lastSequenceNumber |
1 |
|
creditAmountCurrency.value |
USD |
|
creditorAccount.lastSequenceNumber |
1 |
|
creditorAccount.value |
GB24ADKGJWYYHUJWROBFJPGDHGTIKI |
|
creditorAgentBIC.lastSequenceNumber |
1 |
|
creditorAgentBIC.value |
ICONGBA1 |
|
creditorBIC.lastSequenceNumber |
1 |
|
creditorBIC.value |
ICONGBL0 |
|
creditorName.lastSequenceNumber |
1 |
|
creditorName.value |
||
csm.lastSequenceNumber |
1 |
|
csm.value |
||
debitAccount.lastSequenceNumber |
1 |
|
debitAccount.value |
||
debitAmount.lastSequenceNumber |
1 |
|
debitAmount.value |
||
debitAmountCurrency.lastSequenceNumber |
1 |
|
debitAmountCurrency.value |
||
debtorAccount.lastSequenceNumber |
1 |
|
debtorAccount.value |
GB74FBNFUHQJRNHBRHMXGBZCGIVRDY |
|
debtorAgentBIC.lastSequenceNumber |
1 |
|
debtorAgentBIC.value |
ICONGBA1 |
|
debtorBIC.lastSequenceNumber |
1 |
|
debtorBIC.value |
ICONGBM0 |
|
debtorName.lastSequenceNumber |
1 |
|
debtorName.value |
Isabelle Mitchell |
|
executionStartedAt.lastSequenceNumber |
1 |
|
executionStartedAt.value |
||
globalStatus.lastSequenceNumber |
1 |
|
globalStatus.value |
ACCEPTED |
|
id |
63e0d35dcbd3c015141aad57 |
|
instructedAgent.lastSequenceNumber |
1 |
|
instructedAgent.value |
||
instructedAmount.lastSequenceNumber |
1 |
|
instructedAmount.value |
7.16 |
|
instructedAmountCurrency.lastSequenceNumber |
1 |
|
instructedAmountCurrency.value |
USD |
|
instructedParty.lastSequenceNumber |
1 |
|
instructedParty.value |
||
instructingAgent.lastSequenceNumber |
1 |
|
instructingAgent.value |
||
instructingParty.lastSequenceNumber |
1 |
|
instructingParty.value |
||
instructionId.lastSequenceNumber |
1 |
|
instructionId.value |
||
instructionReceivedAt.lastSequenceNumber |
1 |
|
instructionReceivedAt.value |
2023-02-06T10:15:54.711+0000 |
|
interbankSettlementDate.lastSequenceNumber |
1 |
|
interbankSettlementDate.value |
||
journeyType.lastSequenceNumber |
1 |
|
journeyType.value |
PAYMENT |
|
lastUpdated |
Updated each time a summary changes. Used to determine candidates for purging |
2023-02-06T10:15:54.711+0000 |
messageId.lastSequenceNumber |
1 |
|
messageId.value |
||
numberOfTransactions.lastSequenceNumber |
1 |
|
numberOfTransactions.value |
11 |
|
originalEndToEndId.lastSequenceNumber |
1 |
|
originalEndToEndId.value |
||
originalInterbankSettlementDate.lastSequenceNumber |
1 |
|
originalInterbankSettlementDate.value |
||
originalMessageId.lastSequenceNumber |
1 |
|
originalMessageId.value |
||
paymentInformationId.lastSequenceNumber |
1 |
|
paymentInformationId.value |
||
paymentType.lastSequenceNumber |
1 |
|
paymentType.value |
||
priority.lastSequenceNumber |
1 |
|
priority.value |
||
processingEntity |
Part of the Processing Context. The financial processing entity is responsible for processing during the settlement of the payment. |
|
reasonCode.lastSequenceNumber |
1 |
|
reasonCode.value |
||
reasonText.lastSequenceNumber |
1 |
|
reasonText.value |
||
relatedUnitOfWorkId |
||
requestedExecutionDate.lastSequenceNumber |
1 |
|
requestedExecutionDate.value |
2023-02-06T10:15:54.711+0000 |
|
returnId.lastSequenceNumber |
1 |
|
returnId.value |
||
returnedAmount.lastSequenceNumber |
1 |
|
returnedAmount.value |
||
returnedAmountCurrency.lastSequenceNumber |
1 |
|
returnedAmountCurrency.value |
||
searchFields.* |
See table below |
|
settlementCompletedAt.lastSequenceNumber |
1 |
|
settlementCompletedAt.value |
||
startedAt.lastSequenceNumber |
1 |
|
startedAt.value |
||
timeZone.lastSequenceNumber |
1 |
|
timeZone.value |
||
transactionAmount.lastSequenceNumber |
1 |
|
transactionAmount.value |
||
transactionAmountCurrency.lastSequenceNumber |
1 |
|
transactionAmountCurrency.value |
||
transactionId.lastSequenceNumber |
1 |
|
transactionId.value |
||
uetr.lastSequenceNumber |
1 |
|
uetr.value |
||
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 |
Índices
| Index Name | Fields | Options |
|---|---|---|
id |
_id |
unique |
alternativeIds.value_1 |
alternativeIds.value (ascending) |
|
clientRequestId_1 |
clientRequestId (ascending) |
|
globalStatus.value_1+paymentType.vaue_1__id_-1 |
globalStatus.value (ascending) - paymentType.value (ascending) - _id (descending) |
|
paymentJourneyType.value_1__id-1 |
paymentJourneyType.value (ascending) - _id (descending) |
|
paymentType.value_1__id-1 |
paymentType.value (ascending) - _id (descending) |
|
lastUpdated_1 |
lastUpdated (ascending) |
|
searchFields.amount_1__id_-1 |
searchFields.amount (ascending) - _id (descending) |
|
searchFields.creditorAccount_1__id_-1 |
searchFields.creditorAccount (ascending) - _id (descending) |
|
searchFields.creditorAgentBIC_1__id_-1 |
searchFields.creditorAgentBIC - _id (descending) |
|
searchFields.creditorName_1__id_-1 |
searchFields.creditorName - _id (descending) |
|
searchFields.currency_1_searchFields.amount_1__id_-1 |
searchFields.currency (ascending) - searchFields.amount (ascending) - _id (descending) |
|
searchFields.debtorAccount_1__id_-1 |
searchFields.debtorAccount (ascending) - _id (descending) |
|
searchFields.debtorAgentBIC_1__id_-1 |
searchFields.debtorAgentBIC - _id (descending) |
|
searchFields.debtorName_1__id_-1 |
searchFields.debtorName - _id (descending) |
|
searchFields.instructionId_1 |
searchFields.instructionId (ascending) |
|
searchFields.reasonCode_1__id_-1 |
searchFields.reasonCode (ascending)Â - _id (descending) |
|
searchFields.transactionId_1 |
searchFields.transactionId (ascending) |
|
searchFields.uetr_1 |
searchFields.uetr (ascending) |
|
startedAt.value_1__id_-1 |
startedAt.value (ascending) = _id (descending) |
|
unitOfWorkId_1 |
unitOfWorkId (ascending) |
unique |
Custom Objects
Nombre de la colección: customobjects
Almacena attachments y otros datos personalizados relacionados con la unidad de trabajo (los custom data objects ya no se ingieren como tales, pero los attachments siguen soportados).
Campos
| Field | Description | Example |
|---|---|---|
_id |
PK - Autogenerated by MongoDB |
624d7fa649f0f4b37093fe30 |
_class |
Fully Qualified Java Class name of the domain type for the document entry |
com.iconsolutions.ipf.ods.CustomEntry |
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 |
createdAt |
The Date on which the source Domain Event was created |
2023-02-06T10:15:54.711+0000 |
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 } |
objectType |
Custom Object type label, (KEY_VALUE, SEARCHABLE_KEY_VALUE, COMPLEX_TYPE) |
COMPLEX_TYPE |
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 |
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 |
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 |
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 |
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 |
Índices
| Index Name | Fields | Options |
|---|---|---|
id |
_id |
unique |
associationId_1 |
associationId (ascending) |
|
clientRequestId_1 |
clientRequestId (ascending) |
|
createdAt_1__id_-1 |
createdAt (ascending) - _id (descending) |
|
idempotencyKey_1 |
idempotencyKey (ascending) |
|
objectType_1_entityId_1 |
objectType (ascending) entityId (ascending) |
|
primaryAssociation_1 |
primaryAssociation (ascending) |
|
unitOfWorkId_1 |
unitOfWorkId (ascending) |
Relación entre colecciones
-
Los campos
uowIdy otros identificadores (p. ej.,mdsObjectId,processObjectReference) permiten correlación entre colecciones. -
La colección
summariesagrega y expone campos de búsqueda clave de las otras colecciones.
Consideraciones de diseño
-
Modelo de solo anexado para MDS/PDS/Processes para mantener historiales completos.
-
Índices dedicados para acelerar búsquedas por campos clave en
summariesypayments. -
Las diferencias entre motores (MongoDB vs CosmosDB) pueden afectar opciones de indexación; consulta Persistence para detalles.