Pasos de migración para IPF-2025.2.0
Esta página cubre los pasos de migración requeridos para la versión 2025.2.0 de IPF.
Migración para Conectores
Cualquier clase que haya implementado previamente com.iconsolutions.ipf.core.connector.receive.deadletter. DeadletterAppender tendrá un fallo de compilación. Para solucionarlo, cambie el tipo de retorno del append método de CompletableFuture<Void> a CompletionStage<Void>.
Migración para Kafka Conectores
akka.kafka.consumer.restart-settings`ahora se establece como predeterminado a `ipf.connector.default-transport-settings.restart-settings.
Desde que todo Kafka la configuración predeterminada, especificando que los ajustes del consumidor ahora heredan de esta configuración.restart-settings cuando se declara un Kafka el transporte de consumidores ya no es un requisito necesario.
Si solía establecer su restart-settings to akka.kafka.consumer.health-check-settings.restart-settings or ipf.connector.default-transport-settings.restart-settings, siéntase libre de eliminar ahora esas líneas de su HOCON.
Migración para HTTP Conectores
El interno com.iconsolutions.ipf.core.connector.transport. HttpErrors. HttpStatusErrorException las excepciones ahora tienen una encapsulación más fuerte, y sus constructores ya no pueden ser accedidos públicamente.
Si necesita crear una instancia para sus propósitos de prueba, por favor utilice com.iconsolutions.ipf.core.connector.transport. HttpErrors#from(StatusCode,TransportMessage).
Migración para Bulker
Se recomienda descontinuar el uso de las siguientes dependencias:
-
ipf-bulker-output-stream-api-ipf-bulker-output-stream-local-ipf-bulker-output-stream-s3
ipf-file-manager`ahora proporciona funcionalidad equivalente a las dependencias anteriores a través de un nuevo `write método que acepta un reactor.core.publisher. Flux<ByteBuffer>. También se ha añadido un nuevo método a ipf-file-manager que permite leer el contenido del archivo en un reactor.core.publisher. Flux<ByteBuffer>. Para más detalles, consulte el Administrador de Archivos API Referencia.
Elimine los siguientes parámetros de configuración si están definidos en su configuración:
ipf.bulker.outputstream.local.enabled
ipf.bulker.outputstream.s3.enabled
Anteriormente, la configuración del sistema de archivos de salida requería deshabilitar el que no estaba en uso. Esto ahora se ha simplificado con una única propiedad.ipf.bulker.output.file-system que permite especificar el sistema de archivos de destino para la salida de manera explícita.
Ver Bulk Productor para obtener detalles adicionales
Migración para IPF Persistent Scheduler
HTTP API
El triggerCommand campo en el cuerpo de la solicitud de POST /api/v1/schedule-job y POST /api/v1/update-job puntos finales, así como en las respuestas de los cuatro HTTP API las operaciones, ha cambiado.
Donde anteriormente era una API modelo de SchedulingCommand con un @class campo, ahora es una API modelo de ExternalTriggerCommand.
Este modelo ya no tiene el @class campo y tiene campos adicionales requeridos para scheduling la liberación de pagos.
SchedulerConnectorInterface
Si usted utiliza SchedulerConnectorInterface para interactuar con el HTTP RequestReplySendConnectors en el scheduler-client-connector-http artefacto, deberá migrar los modelos pasados como argumentos del método y utilizados como tipos de retorno.
Los modelos son ahora de la HTTP API especificación en oposición a los modelos 'núcleo'.
Migración para el Programador IPF Floclient
Programador FloClient Comandos
Si usted utilizó anteriormente PaymentAsyncScheduleCompletedCommand Desde los comandos del Scheduler Floclient, ahora debe utilizar el SchedulePaymentReleaseCommand objeto.
Esto extiende el ExternalTriggerCommand desde el HTTP API modelos, que a su vez implementa el existente SchedulingCommand interfaz.
priority`y `scheduleDate los campos ya no están incluidos en el PaymentAsyncScheduleCompletedCommand objeto (que ha sido refactorizado a SchedulePaymentReleaseCommand).
Estos campos fueron, y siguen siendo, no utilizados por el Programador. API, Floclient y Core.
IPF Persistent Scheduler Dominio Externo
El dominio externo IPF Persistent Scheduler solicitudes Schedule Instruction Release y Schedule Transaction Release ahora puede devolver las respuestas Scheduled Instruction Release Completion y Scheduled Transaction Release Completion respectivamente.
Estas nuevas respuestas son notificaciones de que la liberación de la instrucción/transacción programada ha sido triggered para la ejecución.
Estas respuestas difieren de las existentes Scheduled Instruction Release Response y Scheduled Transaction Release Response, que informan que el flujo de la liberación de la instrucción/transacción ha sido programado (pero no triggered para la ejecución).
Estos nuevos comandos están conectados automáticamente si usted está utilizando el scheduler-external-trigger-kafka módulo en su aplicación Scheduler (descrito en release/IPF-2025-2-0/release-IPF-2025-2-0-core.adoc#_ipf_persistent_scheduler_added sección).
Si no está utilizando el scheduler-external-trigger-kafka módulo, puede emitir estas respuestas modificando su existente SchedulingHelper implementaciones para llamar al IPFPaymentSchedulerInputPort.handle(ScheduledInstructionReleaseCompletionInput scheduledInstructionReleaseCompletion) método (o equivalente de transacción) en el execute método.
Migración para el Liberador de Pagos (Procesador de Entradas de Pago)
Refactorización del Liberador de Pagos para convertirse en un Procesador de Entradas de Pago genérico
La implementación de liberación existente debe realizar los siguientes ajustes para que funcione con el nuevo procesador genérico:
Cambios de configuración
-
La ruta raíz de configuración debe ser cambiada de
ipf.core.payment-releasertoipf.core.payment-entry-processor -
El procesador de entrada de pagos ahora utiliza un nuevo
executionInfoscolección de base de datos, que requiere un nuevo compuestounitOfWorkId_1_actionType_1índice a ser añadido. ElreleaseExecutionInfosLa colección ya no se utiliza y puede ser eliminada, a menos que su contenido sea necesario para datos históricos, en cuyo caso puede ser archivada en algún lugar antes de la eliminación.
Renombrar referencias
-
Todo
PaymentReleaserlas referencias deben ser reemplazadas porPaymentEntriesProcessorreferencia -
Todo
ReleaserExecutorlas referencias deben ser reemplazadas porInstructionExecutorActorreferencia -
Todo
PaymentRequestCreatorlas referencias deben ser reemplazadas porProcessingRequestCreatorreferencia -
Todo
PaymentRequestSenderlas referencias deben ser reemplazadas porRequestProcessorreferencia -
Todo
ReleaserStorelas referencias deben ser reemplazadas porExecutionInfoStorereferencia -
Todo
TransactionReleaseServicelas referencias deben ser reemplazadas porPaymentEntriesProcessingServicereferencia -
Todo
ReleaserExecutorPropertieslas referencias deben ser reemplazadas porPaymentEntryProcessorPropertiesreferencia -
Todo
InstructionReleaseCompletionServicelas referencias deben ser reemplazadas porInstructionProcessingCompletionServicereferencia
Cambios en la definición de Bean
TransactionReleaserService bean la definición debe ser reemplazada por un PaymentEntriesProcessingServiceImpl bean definición. Esta clase ahora depende de processingStrategyProvider— esto bean ya se está definiendo en el núcleo PaymentEntriesProcessor, solo necesita ser cableado aquí.
Implementación de la estrategia de procesamiento
Usted necesita crear una implementación del ProcessingStrategy interfaz, y conéctelo como un bean. Su implementación debe utilizar ProcessingActionTypes. RELEASE tipo de acción para especificar la acción de liberación y devolver su existente ProcessingRequestCreator y RequestProcessor implementaciones de interfaz. Para más detalles sobre Estrategias de Procesamiento, consulte la Documentos de Estrategia de Procesamiento.
Añadiendo SupportingContext to processInstruction y processTransaction
A través de la PaymentEntriesProcessor(renombrado de PaymentReleaser) interfaz,PaymentReleaserController y el ClientPort interfaces (por ejemplo,ReleaseInstructionClientPort) y su implementación HTTP Send Connector s (por ejemplo ReleaseInstructionConnector) el processInstruction y processTransaction los métodos deben actualizarse para incluir un SupportingContext.
Estos métodos en estas clases tienen un argumento adicional de SupportingContext para pasar datos adicionales del servicio que llama al servicio de ejecución objetivo.
Si no tiene uso para este campo durante la migración, puede omitirlo.null or SupportingContext.empty().
En el caso de la PaymentReleaserController, está envuelto en un Mono como Mono<SupportingContext>, para que pueda pasar un Mono.empty() si este campo no es obligatorio en su migración.
Las opciones anteriores (nulas o vacías) serán manejadas de manera adecuada.
PaymentRequestCreator
Su implementación de la ProcessingRequestCreator(renombrado de PaymentRequestCreator) la interfaz ahora incluirá un SupportingContext argumento del método en el create método.
Esto es para permitir la provisión de datos adicionales al servicio de ejecución objetivo.
En su migración, puede optar por utilizar o ignorar el proporcionado SupportingContext al crear su solicitud de pago.
Migración para la Verificación del Beneficiario VoP)
Gestión de Cuentas API
-
Actualice su servicio implementando esto. API hasta ahora devolver 'RetrievePartyDetailsResponse.names', que ahora es una lista de nombres. Esto reemplaza el 'RetrievePartyDetailsResponse.nm' campo.
Verificación del Pagador Responder
-
Anteriormente, los umbrales de coincidencia se definían solo por tipo de cuenta. En esta versión, los umbrales de coincidencia deben definirse por entidad de procesamiento y tipo de cuenta.
Pre 2025.2.0:
ipf.verification-of-payee.responder {
name-match {
thresholds = [
{type: "default", score-lowerbound = 0.40, score-upperbound = 0.90}
{type: "individual", score-lowerbound = 0.85, score-upperbound = 0.95}
{type: "corporate", score-lowerbound = 0.75, score-upperbound = 0.85}
]
}
}
Post 2025.2.0 equivalente:
ipf.verification-of-payee.responder.name-match {
thresholds = [
{
processing-entity: "default", (1)
scorings: [ (2)
{ type: "default", lowerbound = 0.40, upperbound = 0.90 } (3) (4)
{ type: "individual", lowerbound = 0.85, upperbound = 0.95 }
{ type: "corporate", lowerbound = 0.75, upperbound = 0.85 }
]
},
{
processing-entity: "Processing Entity A",
scorings: [
{ type: "default", lowerbound = 0.70, upperbound = 0.80 }
{ type: "individual", lowerbound = 0.75, upperbound = 0.85 }
{ type: "corporate", lowerbound = 0.65, upperbound = 0.75 }
]
}
]
}
| 1 | Se debe definir una entidad de procesamiento predeterminada. |
| 2 | La estructura de configuración se ha cambiado para incluir scoring en jerarquía
<3>`score-lowerbound` renombrado a lowerbound
<4>`score-upperbound` renombrado a upperbound |
Verificación del Solicitante de Pago
-
Configuración
ipf.verification-of-payee.requester.scheme-membership-idsha sido eliminado de la jerarquía. Los clientes que sobrescriben valores (por ejemplo,processing-entities) debajo de esta ruta debe eliminarscheme-membership-idsdesde la ruta. -
El código de entidad de procesamiento predeterminado era anteriormente "". Esto ha sido actualizado a
defaulten lugar de cadena vacía, consistente con VoP Responder -
rvmel parámetro debe ser especificado además denamepara la configuración del esquema
Pre 2025.2.0:
ipf.verification-of-payee.requester {
scheme-membership-ids { (1)
schemes = [
{
name: "EPC"
processing-entities = [
{processing-entity-code: "", scheme-membership-id: "ICONUK00XXX"} (2)
{processing-entity-code: "001", scheme-membership-id: "ICONUK01XXX"}
]
}
]
}
}
| 1 | Esto se elimina en 2025.2.0 |
| 2 | "" ha sido reemplazado por default en 2025.2.0 para denotar la entidad de procesamiento predeterminada |
Post 2025.2.0 equivalente:
ipf.verification-of-payee.requester {
schemes = [
{
name: EPC (1)
rvm: FPAD (2)
processing-entities = [
{processing-entity-code: "default", scheme-membership-id: "ICONUK00XXX"} (3)
{processing-entity-code: "001", scheme-membership-id: "ICONUK01XXX"}
]
}
]
}
| 1 | Ahora definido como un Enum en lugar de String |
| 2 | Anteriormente, el EPC utilizando FPAD como un RVM fue configurado con solo el name parámetro de configuración. Ahora rvm: FPAD también debe ser especificado y se define como un Enum |
| 3 | La entidad de procesamiento predeterminada ahora se identifica como "default" |
Migración para Dynamic Processing Settings(DPS)
Como parte de la versión 2025.2 de IPF, CSM Reachability el servicio se está integrando con DPS V2 biblioteca (en comparación con integrada con DPS V2 antes).
Las estructuras de registros de configuración dinámica difieren entre DPS V1 y DPS V2. Esto no afecta la carga útil de la configuración dinámica. Desde el punto de vista de la compatibilidad hacia atrás, ambos DPS V1 y DPS V2 los registros formateados pueden coexistir al mismo tiempo que DPS V2 puede interactuar con los registros creados utilizando DPS V1.
Sin embargo, al tratar con configuraciones dinámicas de gran volumen, si los registros en la colección siguen todos DPS V1 formato, esto puede afectar ligeramente el rendimiento. Por esta razón, se recomienda que tales configuraciones dinámicas en CSM Reachability(ej. configuraciones dinámicas de datos de la industria), se actualizan para seguir DPS V2 formato.
El principal beneficio de esta migración es la mejora en el rendimiento de las consultas a la base de datos.
Pasos para la migración
-
Se recomienda que la implementación del cliente ingiera archivos COMPLETOS a las configuraciones dinámicas de datos de la industria después de absorber DPS V2 integrado CSM Reachability:
-
Directorio de Entidades de Parte (Directorio Bancario Plus, Banco Maestro 3.0)
-
IBAN Plus, Lista de Exclusión, Estructura del IBAN
-
-
El siguiente conjunto de archivos que se van a incorporar en CSM Participante después de absorber DPS V2 integrado CSM Reachability deben ser archivos COMPLETOS.
-
PASO2 CST, RT1, CONSEJOS, SicInst
-
-
Para cada DPS verifique si hay algún dato que no esté actualizado utilizando el siguiente script
db.[<collection-name>].find({ "_class": { $regex: "^com.iconsolutions.ipf.dynamicsettings.repository" } }) -
Si hay documentos que no han sido actualizados, por favor, genere un ticket de soporte.
Migración para Test Framework
Como resultado de la JUnit 5 migración, si usted está incluyendo cualquiera de JUnit 4 Reglas utilizando el @ClassRule anotación en sus pruebas, o
ejecución de suites de prueba utilizando el @Suite anotación, por favor migre estos a JUnit Júpiter Extensiones y Suites,
respectivamente.
La tabla a continuación muestra comunes JUnit 4 usos en el marco de prueba, y su JUnit 5 equivalente:
| Característica | Test Framework JUnit 4 fragmento | Equivalente de JUnit 5 |
|---|---|---|
Suites |
|
|
Reglas (Extensiones) |
|
|
| Puede estar utilizando otros JUnit 4 Reglas no listadas arriba. Consulte la documentación de las bibliotecas que está utilizando. para su JUnit 5 equivalentes. |