Pasos de Migración para IPF-2025.2.0
Esta página cubre los pasos de migración requeridos para la versión de IPF 2025.2.0
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-flujo-de-salida-api-ipf-bulker-flujo-salida-local-ipf-bulker-flujo-salida-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 campo triggerCommand 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.
Mientras que 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 'core' modelos.
Migración para IPF Scheduler Floclient
Scheduler FloClient Comandos
Si usted utilizó anteriormente PaymentAsyncScheduleCompletedCommand from the Scheduler Floclient comandos, usted debe ahora 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 Scheduler API, Floclient y Core.
IPF Persistent Scheduler Dominio Externo
El dominio externo IPF Persistent Scheduler solicitudes Schedule Instruction Release y Schedule Transaction Release puede ahora devolver las respuestas Scheduled Instruction Release Completion y Scheduled Transaction Release Completion respectivamente.
Estas nuevas respuestas son notifications que el scheduled la liberación de la instrucción/transacción ha sido triggered para la ejecución.
Estas respuestas difieren de las existentes Scheduled Instruction Release Response y Scheduled Transaction Release Response, que informan el flujo que la liberación de la instrucción/transacción ha sido scheduled(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 Scheduler aplicación (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, requiriendo 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
Bean definition cambios
TransactionReleaserService bean definition debe ser reemplazado por un PaymentEntriesProcessingServiceImpl bean definition. Esta clase ahora depende de processingStrategyProvider— esto bean ya se está definiendo en core PaymentEntriesProcessor, solo necesita ser conectado 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 a processInstruction y processTransaction
A través de la PaymentEntriesProcessor(renombrado de PaymentReleaser) interfaz,PaymentReleaserController y las interfaces ClientPort (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 desde el 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.
CreadorDeSolicitudDePago
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 ahora devuelve 'RetrievePartyDetailsResponse.names', que ahora es una lista de nombres. Esto reemplaza el campo 'RetrievePartyDetailsResponse.nm'.
Verificación del Pagador Respondedor
-
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}
]
}
}
Publicación 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 con default in 2025.2.0 para denotar la entidad de procesamiento predeterminada |
Publicación 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 de IPF 2025.2, CSM Reachability service se está integrando con DPS V2 biblioteca (en comparación con integrada con DPS V2 before).
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 Partes (Directorio Bancario Plus, Maestro Bancario 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 datos que no están actualizados 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 esto a JUnit Júpiter Extensiones y Suites,
respectivamente.
La tabla a continuación muestra comunes JUnit 4 usos en el test framework, y sus JUnit 5 equivalente:
| Característica | Test Framework JUnit 4 fragmento | JUnit 5 Equivalente |
|---|---|---|
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. |