Core - Changes & Fixes
This page details everything required to get going on IPF Release 2025.3.0
New
IPF Common Starter
Core
-
Added ability to mask sensitive configuration displayed via Spring’s
InfoContributor, see Masking Config
Connectors & Transports
-
System events to reflect connector statuses (see System Events)
-
ConnectorStarted -
ConnectorAvailable -
ConnectorStopped -
ConnectorShutdownInitiated -
ConnectorUnavailable
-
-
System event to distinguish between a transport being available (existing
TransportAvailable) and when it has started processing (newTransportStarted) -
Added ability to mask sensitive configuration when using the connector-operations-api, see Connector Operations
Bank Filtering Cache
-
Added configuration allowing to disable cache in
bank-filtering-parent. By default, cache is enabled, see Cache Config.
Changed
Connectors
-
Correlation index creation now supports specifying the custom commit quorum configuration, can be done by providing value for
ipf.connector.correlation.commit-quorumproperty -
Reworked how connector health is determined with a new connector health event processor utilising connector and transport health system events
-
Having at least one transport
UPwith a circuit breaker in aCLOSEDstate will result in a connector reportingUP
-
-
Added a new configuration property
timestamp-archived-and-failed-filesthat is used inLocalDirectoryConnectorTransport. When set totrue, files moved to /archive or /failed directory are automatically timestamped (i.e.file_20251020_143530.xml). The default value isfalseto preserve existing behavior.
Payment Entries Processor (formerly Payment Releaser)
The following changes were made so the Payments Entries Processor can match warehoused payments against supplied ProcessingEntity:
-
OpenAPI specification updated:
-
All HTTP requests can optionally include a
ProcessingEntityin the request body. Enables the matching of warehoused payments against theProcessingEntityfields. If theProcessingEntityis not provided in the request body, then no matching logic takes place. -
All HTTP request bodies are now optional
-
-
Java interfaces implemented by the
PaymentReleaserControllerupdated (generated from the updated OpenAPI specification):-
the
prepareReleaseInstructionmethod takesMono<PrepareReleaseInstructionRequest>as an argument -
the
releaseInstructionandreleaseTransactionmethods no longer takeMono<SupportingContext>as an argument -
the
releaseInstructionandreleaseTransactionmethods takeMono<ReleaseRequest>as a method argument
-
-
PaymentEntriesProcessorjava interface changes:-
the
prepareInstructionmethod takesProcessingEntityas an (optional) method argument -
the
processInstructionmethod takesProcessingEntityas an (optional) method argument -
the
processTransactionmethod takesProcessingEntityas an (optional) method argument
-
-
the
ExecutionInfojava object (returned byprocessInstructionandprocessTransactionmethods in thePaymentEntriesProcessorinterface) has been refactored:-
introduction of
PaymentHandlingInfo paymentHandlingInfofield -
movement of the
ProcessingActionType actionTypeandSupportingContext supportingDatafields fromExecutionInfoobject intoPaymentHandlingInfoobject. -
addition of
ProcessingEntity processingEntityfield toPaymentHandlingInfoobject.
-
-
PaymentDataSourcejava interface method signatures updated:-
the
getPaymentInitiation,getPaymentInstruction,getPaymentTransactionsandgetPaymentTransactionmethods all required a (nullable)ProcessingEntitymethod argument
-
-
the
BasePaymentWarehouseDataSourceclass logic to return a Payment Entry can now match onProcessingEntity, with logic as follows:-
if a
ProcessingEntityis supplied by the caller, then theProcessingEntityon the Payment Entry must match to be returned. -
if a
ProcessingEntityis not supplied by the caller, then theProcessingEntityon the Payment Entry is not taken into consideration.
-
File Manager
-
FileWriterAPIwriteandreactiveWritemethods now return a wrappedWriteResponseobject that contains aversionstring field.-
For the S3 File Manager, the
versionrepresents the versionId of the uploaded S3 file if the S3 bucket has Versioning enabled. If the S3 bucket does not have Versioning enabled, theversionfield will be null. -
For the Local File Manager, the
versionfield will be null.
-
Breaking Changes
Serialization
-
The IPF Akka serializer has been updated to align with the SerializationHelper implementation. The configured Jackson JsonFactory Visibility has changed from
ANYtoDEFAULT.-
See com.fasterxml.jackson.annotation.PropertyAccessor and com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility Enum values for more information.
-
The previous setting of
ANYmeant all fields (including private and protected) are serialized. -
In particular, this may impact Java fields where one of the first two characters is uppercase (e.g.
aFieldNameorBFieldName).-
With
FIELD = DEFAULTconfigured, the above example fields are serialized toafieldNameandbfieldNamerespectively which can cause issues during deserialization.
-
-
This is a known Jackson issue (fixed in Jackson 3.0), where the advice is to use the
@JsonPropertyannotation for these fields. -
If that is not an ideal solution, you can revert to using the previous setting by configuring:
-
akka.serialization.jackson.ipf-akka-serializer.visibility.FIELD = ANY
-
For more information on the IPF Akka serializer, see the serialization documentation.
Connectors
Transport Message Headers
-
Deprecated
ProcessingContextheader keys have been removed. -
Deprecated
MessageHeaders.fromProcessingContext()andMessageHeaders.toProcessingContext()methods have been removed
See Migration notes for additional details.
Correlation index creation
-
Name of configuration property
ipf.correlation.index-creation.enabled(for enabling/disabling automatic creation of a correlation index) is changed toipf.connector.correlation.create-indexes -
Name of configuration property
ipf.connector.correlation-timestamp-field-name(for specifying a creation timestamp column name) is changed toipf.connector.correlation.timestamp-field-name -
Name of configuration property
ipf.connector.correlation-expiry(for specifying a creation timestamp column name) is changed toipf.connector.correlation.time-to-live
Processing Context
-
Deprecated message header keys
uowId,requestId,processingEntityandassociationIdare removed in favor of keys defined inContextPropagationSettingsclass. See Migration notes for additional details.
API
-
ConnectorHealthclass no longer contains a list ofTransportHealth, it now takes in a String for the connector name
File Manager
-
FileWriterAPI breaking changes below. See API Reference for details on theWriteResponseobject.-
writemethod returnsCompletionStage<WriteResponse>, previously this returnedCompletionStage<Void> -
reactiveWritemethod returnsMono<WriteResponse>, previously this returnedMono<Void>
-
Kafka Message Logger
-
Kafka Message Logger previously only logged exceptions (and did not propagate) (PAY-15687)