Core - Changes & Fixes
This page covers core changes and fixes provided in release IPF-2025.2.0.
MongoDB
Changed
This release adds support for MongoDB Client-Side Field Level Encryption (CSFLE). For more details see Mongo DB Starter.
Connector
Changed
-
The transport’s exception type has changed from IllegalStateException to NoAvailableTransportException which extends IllegalStateException.
-
Messages only try each transport once before failing. Previously it would try every transport until all the circuit breakers open.
Fixed
-
The
RequestReplySendConnectornow throws an exception, instead of returning the response to the caller, when response bean validation is enabled and the validation check(s) specified by the provided response bean validator fail(s). -
DeadLetterAppenderinterface stage return type changed fromCompletableFuture<Void>toCompletionStage<Void>
Payment Entries Processor (renamed from Payment Releaser)
Payment Releaser has become a generic Payment Entries Processor, able to do more than just releasing payment entries for the execution. Other than resilient releasing of instructions and individual transactions for the execution which was already supported, it is now possible to cancel all transactions of an instruction scheduled for the execution.
Added
-
New module: payment-scheduler-adaptor-kafka. Adaptor for the scheduler-received-connector-kafka. Enables the consumption of Kafka messages published by the Persistent Scheduler applications that use the scheduler-external-trigger-kafka module. The consumption of this message triggers the
prepareInstructionorprocessTransaction(renamed fromreleaseTransaction) methods of thePaymentEntriesProcessor(renamed fromPaymentReleaser), with overridable default configuration. Details can be found at How to trigger the Releaser from Persistent Scheduler via Kafka -
Actual applying of RELEASE and/or CANCEL processing actions to Payment Entries is done via
ProcessingStrategyinterface implementations. To make the Payment Entries Processor able to process an Action (RELEASE, CANCEL or any custom one), you have to provide a bean implementing theProcessingStrategyinterface. You should also provide implementations ofProcessingRequestCreatorandRequestProcessorinterfaces, and use them in yourProcessingStrategyimplementation.
Changed
Multiple changes in the process of making Payment Releaser generic:
-
ipf.core.payment-releaserconfig root path changed toipf.core.payment-entry-processor -
releaseExecutionInfosdatabase collection renamed toexecutionInfos -
Interfaces and classes renamed:
-
PaymentReleaserinterface renamed toPaymentEntriesProcessor -
AkkaPaymentReleaserclass renamed toAkkaPaymentEntriesProcessor -
ReleaserExecutorclass renamed toInstructionExecutorActor -
PaymentRequestCreatorinterface renamed toProcessingRequestCreator -
PaymentRequestSenderinterface renamed toRequestProcessor -
ReleaserStoreinterface renamed toExecutionInfoStore -
MongoReleaserStoreclass renamed toMongoExecutionInfoStore
-
Ability to pass in additional information for the downstream execution service. Includes the following breaking changes:
-
PaymentEntriesProcessor(renamed fromPaymentReleaser) interface method signatures updated:-
the
processInstruction(renamed fromreleaseInstruction) andprocessTransaction(renamed fromreleaseTransaction) method has an additional argument of SupportingContext to accept supporting data for the execution of the payment
-
-
OpenAPI specification updated, generating updated Java interfaces and therefore affecting the
PaymentReleaserControllermethod signatures-
the
prepareReleaseInstructionmethod no longer takesMono<SupportingBusinessDataMapForPrepareOperation>as an argument -
the
processInstruction(renamed fromreleaseInstruction) method no longer takesMono<SupportingBusinessDataMapForReleaseOperation>as an argument -
the
processInstruction(renamed fromreleaseInstruction) method takesMono<SupportingContext>as a method argument -
the
processTransaction(renamed fromreleaseTransaction) method takesMono<SupportingContext>as a method argument
-
-
OpenAPI specification updated, requiring updates to the ClientPort interfaces to accommodate:
-
the
PrepareInstructionClientPortinterface methods no longer takeSupportingBusinessDataMapForPrepareOperationas an argument -
the
ReleaseInstructionClientPortinterface methods no longer take theSupportingBusinessDataMapForReleaseOperationas an argument -
the
ReleaseInstructionClientPortinterface methods can takeSupportingContextas an argument -
the
ReleaseTransactionClientPortinterface methods can takeSupportingContextas an argument
-
-
OpenAPI specification changes mean ProcessingContext is no longer required in the request body for:
-
POST /api/v1/payment-releaser/instruction/{instructionUnitOfWorkID}/prepare-release
-
POST /api/v1/payment-releaser/instruction/{instructionUnitOfWorkID}/release
-
-
ProcessingRequestCreator(renamed fromPaymentRequestCreator) takes inSupportingContext, enabling the constructed Payment Request to incorporate supporting data before being passed on to the execution service-
Change to method signature
getPaymentInitiation()inPaymentDataSource; now it returnsMono<Optional<INIT>> -
initationAggregatorFunction, supplied toBasePaymentWarehouseDataSourceis now an optional bean, since not all users will be required to supply an initiation function.
-
IPF Persistent Scheduler
Added
-
New module: scheduler-external-trigger-kafka. Enables an
ExternalTriggerCommand(implementation ofSchedulingCommand) to be sent out over a Kafka SendConnector to be processed up by another service at the scheduled date-time. -
New module: scheduler-received-connector-kafka. Enables the receiving of
ExternalTriggerCommand's via kafka. This module is to be brought in as a dependency in receiving systems. -
Scheduler Floclient support for sending/receiving executed scheduled-releases through means of a specific
ExternalSchedulingHelperthat triggers the domain and provides a 'completion' input command when theExternalSchedulingCommandis executed.
Changed
-
Breaking: the
SchedulerConnectorInterface(from thescheduler-client-connector-httpmaven artefact) uses HTTP API models as method arguments, as opposed to 'core' models. -
Breaking: HTTP API takes the
ExternalTriggerCommandobject in the nested payload for scheduling new jobs -
Scheduler Floclient: renamed
PaymentAsyncScheduleCompletedCommandtoSchedulePaymentReleaseCommand
Human Task Manager
Changed
Previously, the Task Manager flow emitted an additional domain event, Registered, in response to the Flow Initiated domain event.
There are no changes to the flow’s states or execution path. The only modification is that the Registered domain event has been removed,
and the Flow Initiated domain event has been renamed to Registered. As a result, newly created tasks will no longer have the Flow Initiated domain event stored in the database.
This change does not affect application functionality, as an appropriate event adapter has been provided.
If any consumers were relying on the Flow Initiated domain event, they can safely use the Registered domain event instead,
as it contains the same business data.
|
Test Framework
Changed
The test framework now runs exclusively on JUnit 5 (Jupiter). You may face compilation failures if using JUnit-4-specific annotations or assertion classes. See migration for more specific migration steps.