IPF-SWIFT-Configuración de AGI-GATEWAY
Este documento explica cómo configurar el Gateway AGI de IPF Swift. Se divide en varias partes que deben ser configuradas para comunicarse con IPF en un extremo y con Swift en el otro extremo.
Configuración
Rutas
| Transporte | Configurar la ubicación de montaje |
|---|---|
Kafka |
/ipf-swift-agi-gateway-application-kafka/conf/ipf-swift-agi-gateway.conf |
IBM MQ |
/ipf-swift-agi-gateway/conf/ipf-swift-agi-gateway.conf |
Configuración de LAU
Configuración de claves LAU para IPF-SWIFT-AGI-GATEWAY consiste en dos partes, proporcionando el archivo de configuración y actualizando el almacén de claves.
En el archivo de configuración ipf-swift-agi-gateway.conf podemos establecer/cambiar propiedades que definen las ubicaciones de la información de las claves LAU en el archivo.conf, el almacén de claves y las contraseñas apropiadas. Estos parámetros tienen valores predeterminados y se ven así:
lauKeys = {
keyStore = {
keyStorePath = "classpath:swiftAgiKeyStore.jks"
keyStorePassword = "keyStorePassword"
keyPassword = "keyPassword"
}
configPath = "classpath:swiftAgiKeyInfo.conf"
}
Configuración del archivo de información clave
validity=P24M
overlap=PT12H
lauKeyInfos = [
{
id="keyA"
startDate="2017-12-17T09:30:47Z" #in ISO 8601 format
}
{
id="keyB"
startDate="2019-12-16T21:30:47Z"
}
]
Este archivo contiene información adicional para las claves LAU, como la validez, la superposición y las fechas de inicio para cada clave. lauKeyInfos puede tener uno o dos elementos.
Configuración del almacén de claves
La configuración también incluye un almacén de claves que debe contener una SecretKeyEntry cuyo alias coincida con el ID de clave LAU en el archivo de configuración descrito anteriormente. Tenga cuidado en este paso porque si los IDs de un archivo y el alias que establece en un almacén de claves no coinciden, la aplicación no se configurará correctamente. Puede utilizar una combinación de keytool para crear/renombrar el SeretKeyEntry existente, y la herramienta com.iconsolutions.gateway.swift.crypto. LauKeystoreUpdater para actualizar la clave LAU en un almacén de claves existente.
La clave LAU se suministra generalmente en dos partes: una parte "izquierda" y una parte "derecha". Usted debe concatenar las dos partes y ejecutar el KeystoreSecretKeyUpdater para actualizar un almacén de claves existente y utilizar la nueva clave LAU. La clave es en realidad solo un arreglo de bytes y se proporciona a una aplicación en formato HEX.
El uso de muestra de la utilidad sería:
java -cp '[dir containing ipf-swift-agi-gateway-core-[version].jar]/*' com.iconsolutions.gateway.swift.crypto. LauKeystoreUpdater \
--pathToKeyStore [path to keystore] \
--keyStorePassword [keystore password] \
--secretKeyAlias [the alias of the existing LAU key to modify] \
--secretKey [the combined left and right parts of the LAU key] \
--secretKeyPassword [the key password]
Configurando la comunicación con SWIFT AGI
Swift AGI puede proporcionar múltiples IBM MQ Conexiones del Gestor de Cola a las que conectarse. Estas pueden ser configuradas en ipf-swift-agi-gateway.conf de la siguiente manera:
ipf-agi-jms = {
ibmmq {
truststore.path = "/path/to/my/truststore.p12"
truststore.password = "password"
truststore.type = "PKCS12"
keystore.path = "/path/to/my/keystore.p12"
keystore.password = "password"
keystore.type = "PKCS12"
}
gateways = [
{
jms-component-name = jmsOne
hostname = ibmmq-1
port = 1414
queue-manager = QM1
channel = C1. TO. QM1
ssl-enabled = true
}
{
jms-component-name = jmsTwo
hostname = ibmmq-2
port = 1415
queue-manager = QM2
channel = C1. TO. QM1. 2
ssl-enabled = true
}
]
}
ipf-agi.jms-gateways = ["jmsOne", "jmsTwo"]
//queue names
ipf-agi.queue {
send-data = "AGI. SEND. DATA. QUEUE" // IPF AGI to Swift
receive-data = "AGI. RECEIVE. DATA. QUEUE" // Swift to IPF AGI
receive-ack = "AGI. RECEIVE. ACK. QUEUE" // Swift to IPF AGI
event = "AGI. EVENTS. DATA. QUEUE" // Swift to IPF AGI
}
Configuración de la entidad cliente (entidad de procesamiento) a DN mapping
El gateway IPF Swift AGI utiliza el concepto de un nombre distinguido (DN)mapping para convertir entidades de cliente (entidades de procesamiento) de IPF a DNs de Swift. Los nombres de las entidades (nombre en el ejemplo a continuación) se recuperan del valor NETWORK_SENDER_ID en los mensajes entrantes (que se enviarán a Swift), y los DNs (valor en el ejemplo a continuación) son proporcionados por Swift. Un ejemplo podría ser:
ipf-agi = {
client-entity-to-dn-mapping = [
{
name = "MyBank",
value ="cn=chasus33, ou=ips,o=swhqbebb,o=swift"
}
{
name = "EBA",
value ="cn=agi009, ou=csm,o=swhqbebb,o=swift"
}
]
}
Configuración de la comunicación con IPF: Kafka
IPF AGI admite Kafka y JMS(IBM MQ) al hablar con el cliente, por ejemplo, IPF. Puede configurar lo habitual Kafka propiedades de consumidor/productor así:
common-kafka-config {
bootstrap.servers = "kafka:9094"
ssl.keystore.location = /path/to/my/kafka.client.keystore.p12
ssl.keystore.password = password
ssl.truststore.location = /path/to/my/kafka.client.truststore.p12
ssl.truststore.password = password
ssl.key.password = password
security.protocol = SSL
}
akka.kafka.consumer.kafka-clients = ${common-kafka-config}
akka.kafka.producer.kafka-clients = ${common-kafka-config}
//topic names
ipf-agi.client {
topic {
send = "SCTI. SEND. QUEUE" // IPF to IPF AGI
receive = "SCTI. RECEIVE. QUEUE" // IPF AGI to IPF
outcome = "SCTI. OUTCOME. QUEUE" // IPF AGI to IPF
event = "AGI. EVENTS. DATA. QUEUE" // IPF AGI to [events consumer]
}
}
Puede intercambiar la autenticación con mTLS por Kerberos, añadir configuraciones adicionales de consumidor/productor, dividir la configuración, etc. según lo considere necesario.
Configurando la comunicación con IPF:IBM MQ
La aplicación IPF Swift AGI asume que-cuando se ejecuta en IBM MQ modo - El mismo gestor de colas se está utilizando para comunicarse en ambos lados (cliente y AGI). Por lo tanto, no se requiere configuración adicional. Sin embargo, para configurar los nombres de las colas (se muestran los valores predeterminados):
ipf-agi.client = {
queue {
send = "SCTI. SEND. QUEUE" // IPF to IPF AGI
receive = "SCTI. RECEIVE. QUEUE" // IPF AGI to IPF
outcome = "SCTI. OUTCOME. QUEUE" // IPF AGI to IPF
event = "AGI. EVENTS. DATA. QUEUE" // IPF AGI to [events consumer]
}
}
Event Esquema (Kafka only)
Al ejecutar en Kafka modo, se publican como JSON y tienen el siguiente esquema:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"eventCode": {
"type": "string"
},
"description": {
"type": "string"
},
"level": {
"type": "string"
},
"id": {
"type": "string"
},
"eventTime": {
"type": "string"
},
"payload": {
}
}
}
El payload el campo difiere según el tipo de evento publicado (véase a continuación)
Lista de Events
La aplicación IPF Swift AGI publica los siguientes eventos:
| Event | Descripción | Event Código |
|---|---|---|
DNMapping Faltante |
Se genera cuando no podemos mapear la entidad al DN (o viceversa). |
ipf.swift-agi-gateway.dn-mapping.missing |
DNMapping No Configurado |
Se genera al iniciar la aplicación si no hay mapping configurado para ipf-agi.bank-entity-to-dn-mapping or _ipf-agi.client-entity-to-dn-mapping |
ipf.swift-agi-gateway.dn-mapping.no-configurado |
InvalidHMAC |
Se genera cuando recibimos el mensaje ReceiveIndication (un mensaje recibido de SWIFT la red) y el HMAC calculado no coincide con el de los encabezados |
ipf.swift-agi-gateway.hmac.inválido |
NoHMACKeyId |
Se genera cuando no tenemos la clave LAU correspondiente configurada, por lo que no podemos realizar el cálculo de HMAC. |
ipf.swift-agi-gateway.hmac.no-key-id |
No hay claves de Lau configuradas. |
Se genera cuando no hay claves LAU configuradas. |
ipf.swift-agi-gateway.lau-keys.no-configurados |
No se han configurado claves de lenguaje válidas. |
Se genera cuando no hay al menos una clave LAU válida. |
ipf.swift-agi-gateway.lau-keys.no válido |
NoValidLauKey |
Se genera cuando ipf-agi recibe un mensaje, pero no hay una clave lau válida para generar hmac. |
ipf.swift-agi-gateway.lau-keys.no-valid-key |
Indicación Recibida |
Se genera cada vez que se recibe un nuevo mensaje (ReceiveIndication) de la red AGI. |
ipf.swift-agi-gateway.recibir-indicación.recibido-de-red-agi |
Recibir Indicación Enviada Al Cliente |
Se genera cada vez que se recibe un nuevo mensaje (ReceiveIndication) de la red AGI, todas las verificaciones son correctas y el mensaje se envía a un cliente. |
ipf.swift-agi-gateway.recibir-indicación.enviado-al-cliente |
SolicitudDeEnvioRecibida |
Se genera cuando IPF SWIFT AGI recibe un mensaje del cliente (SendRequest), antes de enviar el mensaje a la red AGI. |
ipf.swift-agi-gateway.enviar-solicitud.recibida |
SendRequestSent |
Elevado justo antes de enviar el mensaje al cliente (SendRequest) a la red AGI. |
ipf.swift-agi-gateway.enviar-solicitud.enviada |
MQNo Disponible |
Se genera al enviar o recibir un mensaje de MQ cuando falla debido a errores de MQ o indisponibilidad. |
ipf.swift-agi-gateway.mq.no disponible |
Acuse Técnico Recibido |
Se genera cuando se recibe un acuse técnico. Este evento es enviado por el lado remoto. |
ipf.swift-agi-gateway.technical-ack |
Notificación Recibida |
Se genera cuando se recibe una notificación. La notificación también es enviada por el software AGI local. |
ipf.swift-agi-gateway.notify |
MandatoryHeaderEmpty |
Se genera cuando recibimos un mensaje del software AGI, o del cliente, y ese mensaje tiene encabezados faltantes. |
ipf.swift-agi-gateway.cabecera-mandatoria.vacía |
Ejemplos de eventos
Aquí hay algunos ejemplos de mensajes de eventos:
HMACInválido
{
"eventCode": "ipf.swift-agi-gateway.hmac.invalid",
"description": "IPF Swift AGI Gateway Event",
"level": "ERROR",
"id": "ec706af9-e91e-4916-8c4c-af2a6a57887b",
"eventTime": "2024-04-05T11:05:30.098989459Z",
"payload": {
"JMS_IBM_Character_Set": "UTF-8",
"JMSMessageID": "ID:414d5120514d31202020202020202020e8da0f660e0c0b23",
"HMAC": "NotValidHmac",
"JMSRedelivered": false,
"JMS_IBM_Encoding": 273,
"MsgNetworkRef": "0be9545b-8652-4555-a577-3826ac8ffa8b",
"JMSDeliveryMode": 2,
"JMS_IBM_PutApplType": 28,
"SendTimestamp": "2018-08-13T12:15:54.651Z",
"JMS_IBM_Format": " ",
"JMSXDeliveryCount": 1,
"Version": "1",
"PrimitiveType": "ReceiveIndication",
"JMS_IBM_PutTime": "11053007",
"MsgRef": "VqjJHgXnz366Ud3KErx7mnJd9QDba330Dsk",
"JMS_IBM_MsgType": 8,
"JMSExpiration": 0,
"HMACKeyId": "keyB",
"JMSXUserID": "app ",
"JMSTimestamp": 1712315130075,
"Service": "csm.msg.ins",
"Receiver": "cn=agi009,ou=bank,o=swhqbebb,o=swift",
"MsgType": "PACS.008.001.03",
"JMSXAppID": "er-20240405110452635_302.jar",
"ReceiveTimestamp": "2018-08-13T12:15:54.726Z",
"Sender": "cn=agi009,ou=csm,o=swhqbebb,o=swift",
"JMSPriority": 4,
"JMS_IBM_PutDate": "20240405",
"JMSDestination": {
"CCSID": 1208,
"brokerCCDurSubQueue": "SYSTEM.JMS.D.CC.SUBSCRIBER.QUEUE",
"JMS_IBM_Unmappable_Action": "REPORT",
"failIfQuiesce": 1,
"destDescription": null,
"alternateUserId": null,
"readAheadClosePolicy": 2,
"JMS_IBM_Unmappable_Replacement": 63,
"mdWriteEnabled": false,
"XMSC_WMQ_QUEUE_MANAGER": "",
"timeToLive": -2,
"putAsyncAllowed": -1,
"deliveryMode": -2,
"readAheadAllowed": -1,
"XMSC_DESTINATION_NAME": "AGI.RECEIVE.DATA.QUEUE",
"wildcardFormat": 0,
"mdReadEnabled": false,
"messageBody": 2,
"XMSC_WMQ_BROKER_PUBQ": "",
"XMSC_ADMIN_OBJECT_TYPE": 33,
"priority": -2,
"encoding": 273,
"brokerVersion": 0,
"version": 7,
"brokerDurSubQueue": "SYSTEM.JMS.D.SUBSCRIBER.QUEUE",
"XMSC_CONNECTION_TYPE_NAME": "com.ibm.msg.client.jakarta.wmq",
"XMSC_WMQ_REPLYTO_STYLE": 0,
"targetClient": 0,
"mdMessageContext": 0,
"XMSC_WMQ_BROKER_PUBQ_QMGR": "",
"XMSC_CONNECTION_TYPE": 5
},
"messagePayload": "{\"content\":\"xtjubHNdsBEtmySAnAUXRRTTffeWTpyyzChOeOOkludqmBGQdluFmHsZZmcMmIiicbLWYBVXkgUnGDtfWzkBQbBsJUHGBNLfHPwY\"}"
}
}
No se han configurado claves de lenguaje válidas.
{
"eventCode": "ipf.swift-agi-gateway.lau-keys.not-valid",
"description": "IPF Swift AGI Gateway Event",
"level": "ERROR",
"id": "4febbca7-225c-4cf7-abcc-23f2835e1377",
"eventTime": "2024-04-05T11:05:13.626138341Z",
"payload": {
"invalidLauKeys": [
{
"id": "keyB",
"key": {
"algorithm": "HmacSHA256",
"encoded": "bdVRpMsSZSgzVjf56+1fEQ==",
"format": "RAW",
"destroyed": false
},
"validFrom": "2017-06-16T21:30:47Z",
"validTo": "2019-06-16T21:30:47Z",
"valid": false
},
{
"id": "keyA",
"key": {
"algorithm": "HmacSHA256",
"encoded": "bfVRpMoSZSgzVjf56+1fmA==",
"format": "RAW",
"destroyed": false
},
"validFrom": "2015-12-17T09:30:47Z",
"validTo": "2017-06-17T09:30:47Z",
"valid": false
}
]
}
}
Indicación Recibida
{
"eventCode": "ipf.swift-agi-gateway.receive-indication.received-from-agi-network",
"description": "IPF Swift AGI Gateway Event",
"level": "INFO",
"id": "91ac6d40-2483-425b-91b0-8de4f77db658",
"eventTime": "2024-04-05T11:05:28.041257893Z",
"payload": {
"JMS_IBM_Character_Set": "UTF-8",
"JMSMessageID": "ID:414d5120514d31202020202020202020e8da0f6603080b23",
"HMAC": "sde5gvCTSKiShmQfJWlxLMm4J0JVxDONHPsBJ++MMOs=",
"JMSRedelivered": false,
"JMS_IBM_Encoding": 273,
"MsgNetworkRef": "0be9545b-8652-4555-a577-3826ac8ffa8b",
"JMSDeliveryMode": 2,
"JMS_IBM_PutApplType": 28,
"SendTimestamp": "2018-08-13T12:15:54.651Z",
"JMS_IBM_Format": " ",
"JMSXDeliveryCount": 1,
"Version": "1",
"PrimitiveType": "ReceiveIndication",
"JMS_IBM_PutTime": "11052801",
"MsgRef": "",
"JMS_IBM_MsgType": 8,
"JMSExpiration": 0,
"HMACKeyId": "keyA",
"JMSXUserID": "app ",
"JMSTimestamp": 1712315128006,
"Service": "csm.msg.ins",
"Receiver": "cn=agi009,ou=bank,o=swhqbebb,o=swift",
"MsgType": "PACS.008.001.03",
"JMSXAppID": "er-20240405110452635_302.jar",
"ReceiveTimestamp": "2018-08-13T12:15:54.726Z",
"Sender": "cn=agi009,ou=csm,o=swhqbebb,o=swift",
"JMSPriority": 4,
"JMS_IBM_PutDate": "20240405",
"JMSDestination": {
"CCSID": 1208,
"brokerCCDurSubQueue": "SYSTEM.JMS.D.CC.SUBSCRIBER.QUEUE",
"JMS_IBM_Unmappable_Action": "REPORT",
"failIfQuiesce": 1,
"destDescription": null,
"alternateUserId": null,
"readAheadClosePolicy": 2,
"JMS_IBM_Unmappable_Replacement": 63,
"mdWriteEnabled": false,
"XMSC_WMQ_QUEUE_MANAGER": "",
"timeToLive": -2,
"putAsyncAllowed": -1,
"deliveryMode": -2,
"readAheadAllowed": -1,
"XMSC_DESTINATION_NAME": "AGI.RECEIVE.DATA.QUEUE",
"wildcardFormat": 0,
"mdReadEnabled": false,
"messageBody": 2,
"XMSC_WMQ_BROKER_PUBQ": "",
"XMSC_ADMIN_OBJECT_TYPE": 33,
"priority": -2,
"encoding": 273,
"brokerVersion": 0,
"version": 7,
"brokerDurSubQueue": "SYSTEM.JMS.D.SUBSCRIBER.QUEUE",
"XMSC_CONNECTION_TYPE_NAME": "com.ibm.msg.client.jakarta.wmq",
"XMSC_WMQ_REPLYTO_STYLE": 0,
"targetClient": 0,
"mdMessageContext": 0,
"XMSC_WMQ_BROKER_PUBQ_QMGR": "",
"XMSC_CONNECTION_TYPE": 5
},
"messagePayload": "{\"content\":\"xGmpxiEMwpNVKfAcdKbvKYLyUFQheCqBXKWIzxMMNkGjGRMBVrDRkvcTUQOKLhLTQrseIvwNtruEpxkxqTvgyPtcwcTqMBPbkUjC\"}"
}
}
SendRequestSent
{
"eventCode": "ipf.swift-agi-gateway.send-request.sent",
"description": "IPF Swift AGI Gateway Event",
"level": "INFO",
"id": "f6b4b640-b89f-472f-b9a4-48abbea7d7ea",
"eventTime": "2024-04-05T11:05:30.293994531Z",
"payload": {
"HMAC": "nj+OfKbNew7R/5sCWZAFCFP6MeGUCRPdoiSQ2PkNJyE=",
"HMACKeyId": "keyB",
"Service": "csm.msg.ins",
"Receiver": "cn=agi009,ou=csm,o=swhqbebb,o=swift",
"MsgType": "PACS.008.001.03",
"TechnicalAckRequired": "A",
"Sender": "cn=agi009,ou=bank,o=swhqbebb,o=swift",
"Version": "1",
"messagePayload": "eyJjb250ZW50IjoiWWhiYmp1TktkYVNveVRleXNHaFhER0daQ09CSmRKaUpQa1hmS3JkcWFhZExmb0dscUZEbGdLY29wT01wUHN4c21SbXlOcnVYVmVWSHNEZVR4dnhnTWdQV0VvVFdmU0hjVnJwYyJ9",
"PossibleDuplicate": "N",
"PrimitiveType": "SendRequest",
"MsgRef": "CFqdIbdpZMkFaPSBys3pWfRuCieX86AIiUO",
"NotificationRequired": "A"
}
}
Notificación Recibida (fallo)
{
"eventCode": "ipf.swift-agi-gateway.notify",
"description": "IPF Swift AGI Gateway Event",
"level": "ERROR",
"id": "04c2bc17-7b8e-42ca-9616-97158c95aff7",
"eventTime": "2024-04-05T11:05:30.694896246Z",
"payload": {
"JMS_IBM_Character_Set": "UTF-8",
"JMSMessageID": "ID:414d5120514d32202020202020202020e8da0f6608170125",
"HMAC": "fiZfR0sNH1+dkWwxuTVJ9k6GUk67twIGBz7nofK1J0g=",
"JMSRedelivered": false,
"JMS_IBM_Encoding": 273,
"MsgNetworkRef": "0be9545b-8652-4555-a577-3826ac8ffa8b",
"JMSDeliveryMode": 2,
"JMS_IBM_PutApplType": 28,
"SendTimestamp": "2018-08-13T12:15:54.651Z",
"JMS_IBM_Format": " ",
"JMSXDeliveryCount": 1,
"Version": "1",
"PrimitiveType": "Notify",
"JMS_IBM_PutTime": "11053067",
"CorrelationId": "UzQZ2V6BTU14N0SRYvVe771rXn78Tg2mTkq",
"MsgRef": "UzQZ2V6BTU14N0SRYvVe771rXn78Tg2mTkq",
"JMS_IBM_MsgType": 8,
"JMSExpiration": 0,
"HMACKeyId": "keyB",
"PrimitiveErrorText": "error text",
"JMSXUserID": "app ",
"JMSTimestamp": 1712315130678,
"Service": "csm.msg.ins",
"Receiver": "cn=agi009,ou=bank,o=swhqbebb,o=swift",
"MsgType": "PACS.008.001.03",
"PrimitiveErrorCode": "status_code",
"JMSXAppID": "er-20240405110452635_302.jar",
"ReceiveTimestamp": "2018-08-13T12:15:54.726Z",
"Sender": "cn=agi009,ou=csm,o=swhqbebb,o=swift",
"JMSPriority": 4,
"JMS_IBM_PutDate": "20240405",
"JMSDestination": {
"CCSID": 1208,
"brokerCCDurSubQueue": "SYSTEM.JMS.D.CC.SUBSCRIBER.QUEUE",
"JMS_IBM_Unmappable_Action": "REPORT",
"failIfQuiesce": 1,
"destDescription": null,
"alternateUserId": null,
"readAheadClosePolicy": 2,
"JMS_IBM_Unmappable_Replacement": 63,
"mdWriteEnabled": false,
"XMSC_WMQ_QUEUE_MANAGER": "",
"timeToLive": -2,
"putAsyncAllowed": -1,
"deliveryMode": -2,
"readAheadAllowed": -1,
"XMSC_DESTINATION_NAME": "AGI.RECEIVE.ACK.QUEUE",
"wildcardFormat": 0,
"mdReadEnabled": false,
"messageBody": 2,
"XMSC_WMQ_BROKER_PUBQ": "",
"XMSC_ADMIN_OBJECT_TYPE": 33,
"priority": -2,
"encoding": 273,
"brokerVersion": 0,
"version": 7,
"brokerDurSubQueue": "SYSTEM.JMS.D.SUBSCRIBER.QUEUE",
"XMSC_CONNECTION_TYPE_NAME": "com.ibm.msg.client.jakarta.wmq",
"XMSC_WMQ_REPLYTO_STYLE": 0,
"targetClient": 0,
"mdMessageContext": 0,
"XMSC_WMQ_BROKER_PUBQ_QMGR": "",
"XMSC_CONNECTION_TYPE": 5
},
"messagePayload": "{\"content\":\"HhZvwtQeDlngEBNKnECjfxAgMkMgUjhceTHagKVPyMaoHPmKgltQdRphVnguUlrVsjhvCiFOClQXXJOkbbPlMqHxzUgPBlezFolT\"}",
"PrimitiveReturnCode": "Fatal"
}
}
Notificación Recibida (éxito)
{
"eventCode": "ipf.swift-agi-gateway.notify",
"description": "IPF Swift AGI Gateway Event",
"level": "INFO",
"id": "fbb58aff-79f2-4d96-9a73-2d524c88cb5d",
"eventTime": "2024-04-05T11:05:30.760903994Z",
"payload": {
"JMS_IBM_Character_Set": "UTF-8",
"JMSMessageID": "ID:414d5120514d32202020202020202020e8da0f660a170125",
"HMAC": "52Yp1RErpnlvCC6O2UGlPeo3SyyujNbv6BfdG3QCimw=",
"JMSRedelivered": false,
"JMS_IBM_Encoding": 273,
"MsgNetworkRef": "3lQ237fra8nBOCipcEio1PiHPWBOPy14Ctx",
"JMSDeliveryMode": 2,
"JMS_IBM_PutApplType": 28,
"SendTimestamp": "2018-08-13T12:15:54.651Z",
"JMS_IBM_Format": " ",
"JMSXDeliveryCount": 1,
"Version": "1",
"PrimitiveType": "Notify",
"JMS_IBM_PutTime": "11053074",
"CorrelationId": "3lQ237fra8nBOCipcEio1PiHPWBOPy14Ctx",
"MsgRef": "3lQ237fra8nBOCipcEio1PiHPWBOPy14Ctx",
"JMS_IBM_MsgType": 8,
"JMSExpiration": 0,
"HMACKeyId": "keyB",
"JMSXUserID": "app ",
"JMSTimestamp": 1712315130742,
"Service": "<service>",
"Receiver": "cn=agi009,ou=bank,o=swhqbebb,o=swift",
"MsgType": "PACS.008.001.03",
"JMSXAppID": "er-20240405110452635_302.jar",
"Sender": "cn=agi009,ou=csm,o=swhqbebb,o=swift",
"JMSPriority": 4,
"JMS_IBM_PutDate": "20240405",
"JMSDestination": {
"CCSID": 1208,
"brokerCCDurSubQueue": "SYSTEM.JMS.D.CC.SUBSCRIBER.QUEUE",
"JMS_IBM_Unmappable_Action": "REPORT",
"failIfQuiesce": 1,
"destDescription": null,
"alternateUserId": null,
"readAheadClosePolicy": 2,
"JMS_IBM_Unmappable_Replacement": 63,
"mdWriteEnabled": false,
"XMSC_WMQ_QUEUE_MANAGER": "",
"timeToLive": -2,
"putAsyncAllowed": -1,
"deliveryMode": -2,
"readAheadAllowed": -1,
"XMSC_DESTINATION_NAME": "AGI.RECEIVE.ACK.QUEUE",
"wildcardFormat": 0,
"mdReadEnabled": false,
"messageBody": 2,
"XMSC_WMQ_BROKER_PUBQ": "",
"XMSC_ADMIN_OBJECT_TYPE": 33,
"priority": -2,
"encoding": 273,
"brokerVersion": 0,
"version": 7,
"brokerDurSubQueue": "SYSTEM.JMS.D.SUBSCRIBER.QUEUE",
"XMSC_CONNECTION_TYPE_NAME": "com.ibm.msg.client.jakarta.wmq",
"XMSC_WMQ_REPLYTO_STYLE": 0,
"targetClient": 0,
"mdMessageContext": 0,
"XMSC_WMQ_BROKER_PUBQ_QMGR": "",
"XMSC_CONNECTION_TYPE": 5
},
"messagePayload": "{\"content\":\"zBezYRohFAVEOevSRxwcNTeWEXnyoQhqYaOESoomsRsPPweyHjsKWjtRWBoaDmoMsGvHJxkkjWPNITvkojORFtOfemOUXnmqgFgY\"}",
"PrimitiveReturnCode": "Success"
}
}
Confirmación Técnica Recibida (éxito)
{
"eventCode": "ipf.swift-agi-gateway.technical-ack",
"description": "IPF Swift AGI Gateway Event",
"level": "INFO",
"id": "b1c499b5-cda6-46fb-94ad-3b6f8a66534d",
"eventTime": "2024-04-05T11:05:30.898883257Z",
"payload": {
"JMS_IBM_Character_Set": "UTF-8",
"JMSMessageID": "ID:414d5120514d31202020202020202020e8da0f66180c0b23",
"HMAC": "gy2+jkznrjlbQq3FYRTpSjxmRVdM/lBFD1slHuT/TrU=",
"JMSRedelivered": false,
"JMS_IBM_Encoding": 273,
"MsgNetworkRef": "2rjcfWu5sBxqSA57s5bQL8nKwhaKJdquZld",
"JMSDeliveryMode": 2,
"JMS_IBM_PutApplType": 28,
"SendTimestamp": "2018-08-13T12:15:54.651Z",
"JMS_IBM_Format": " ",
"JMSXDeliveryCount": 1,
"Version": "1",
"PrimitiveType": "TechnicalAck",
"JMS_IBM_PutTime": "11053089",
"CorrelationId": "2rjcfWu5sBxqSA57s5bQL8nKwhaKJdquZld",
"MsgRef": "2rjcfWu5sBxqSA57s5bQL8nKwhaKJdquZld",
"JMS_IBM_MsgType": 8,
"JMSExpiration": 0,
"HMACKeyId": "keyB",
"JMSXUserID": "app ",
"JMSTimestamp": 1712315130892,
"Service": "<service>",
"Receiver": "cn=agi009,ou=bank,o=swhqbebb,o=swift",
"MsgType": "PACS.008.001.03",
"JMSXAppID": "er-20240405110452635_302.jar",
"Sender": "cn=agi009,ou=csm,o=swhqbebb,o=swift",
"JMSPriority": 4,
"JMS_IBM_PutDate": "20240405",
"JMSDestination": {
"CCSID": 1208,
"brokerCCDurSubQueue": "SYSTEM.JMS.D.CC.SUBSCRIBER.QUEUE",
"JMS_IBM_Unmappable_Action": "REPORT",
"failIfQuiesce": 1,
"destDescription": null,
"alternateUserId": null,
"readAheadClosePolicy": 2,
"JMS_IBM_Unmappable_Replacement": 63,
"mdWriteEnabled": false,
"XMSC_WMQ_QUEUE_MANAGER": "",
"timeToLive": -2,
"putAsyncAllowed": -1,
"deliveryMode": -2,
"readAheadAllowed": -1,
"XMSC_DESTINATION_NAME": "AGI.RECEIVE.ACK.QUEUE",
"wildcardFormat": 0,
"mdReadEnabled": false,
"messageBody": 2,
"XMSC_WMQ_BROKER_PUBQ": "",
"XMSC_ADMIN_OBJECT_TYPE": 33,
"priority": -2,
"encoding": 273,
"brokerVersion": 0,
"version": 7,
"brokerDurSubQueue": "SYSTEM.JMS.D.SUBSCRIBER.QUEUE",
"XMSC_CONNECTION_TYPE_NAME": "com.ibm.msg.client.jakarta.wmq",
"XMSC_WMQ_REPLYTO_STYLE": 0,
"targetClient": 0,
"mdMessageContext": 0,
"XMSC_WMQ_BROKER_PUBQ_QMGR": "",
"XMSC_CONNECTION_TYPE": 5
},
"messagePayload": "{\"content\":\"RgxPDSFyOWuSTmwymHyVFpvZWbrffNgFKyZLOOCCfOYsdFvHlgJGFuPuTzFUvSRzXHoBAIJdfuMqFyBCsDEugYkckoPvoSCtbKpE\"}",
"PrimitiveReturnCode": "Success"
}
}