IPF-SWIFT-Configuración de AGI-GATEWAY

Este documento explica cómo configurar el IPF Swift AGI Gateway. Se divide en varias partes que deben ser configuradas para comunicarse con IPF en un extremo, y Swift en el otro extremo.

Docker Imágenes

Transporte Nombre de la imagen Consulta de la última versión en Nexus

Kafka

registry.ipf.iconsolutions.com/ipf-swift-agi-gateway-application-kafka:[versión]

Haga clic

IBM MQ

registry.ipf.iconsolutions.com/ipf-swift-agi-gateway:[versión]

Haga clic

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 un archivo de configuración y actualizando el almacén de claves.

En el archivo de configuración ipf-swift En -agi-gateway.conf podemos configurar/cambiar propiedades que definen las ubicaciones del archivo de información de claves LAU, el keystore 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 establezca 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 el com.iconsolutions.gateway.swift Herramienta.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". 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 Administrador de Cola a las que conectarse. Estas pueden ser configuradas en ipf-swift-agi-gateway.conf así:
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
}

Configurando la entidad del cliente (entidad de procesamiento) a DN mapping

El IPF Swift La puerta de enlace AGI utiliza el concepto de un nombre distinguido (DN)mapping para convertir entidades de cliente (entidades de procesamiento) de IPF a Swift DNs. 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"
    }
  ]
}

Configurando 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

El IPF Swift La aplicación 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 dependiendo del tipo de event publicado (vea a continuación)

Lista de Events

El IPF Swift La aplicación AGI publica lo siguiente events:

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 uno 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.sin-id-de-clave

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 lanzamiento 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-rede-agi

ReceiveIndicationSentToClient

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 de recibo técnico. Este event 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.notificar

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

Ejemplo events

Aquí hay algunos ejemplos event mensajes:

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"
  }
}