CSM Reachability - Changes & Fixes
This page covers the changes and fixes provided to CSM Reachability IPF Release 2025.2.0
CSM Reachability API
New
-
New request attributes to
determine-processing-entityendpoint -deriveDirectParticipantandcsmAgentId. -
When
deriveDirectParticipantis set to true, the CSM Reachability service will look up a direct participant associated with provided entity identifier before using the derived direct participant’s identifier to derive the Processing Entity. Default value is false.
CSM Reachability
New
-
New searchable field
agentParticipantCsmAgentIdfor AgentSettings. -
New setting attribute that is used for generation of all API endpoints for a particular setting. They are also used in index-config.<setting-type> construct that is gonna be described below.
-
Processing Entity: SETTING_TYPE = "processingentity".
-
Party Entity: SETTING_TYPE = "partyentity".
-
Generic Processing Settings: SETTING_TYPE = "genericprocessingsettings".
-
Agent Clearing Settings: SETTING_TYPE = "agentclearingsettings".
-
Cs Agent Selection Settings: SETTING_TYPE = "csagentselectionsettings".
-
Agent Settings: SETTING_TYPE = "agentsettings".
-
Agent Settlement Settings: SETTING_TYPE = "agentsettlementsettings".
-
Participant Settings: SETTING_TYPE = "participant".
-
Exclusion List Settings: SETTING_TYPE = "exclusionlist".
-
IbanPlus Settings: SETTING_TYPE = "ibanplus"
-
IbanStructure Settings: SETTING_TYPE = ibanstructure"
-
BicDir2018 Settings: SETTING_TYPE = "bicdir2018"
-
-
DPS v2 allows indexes to be configured through HOCON config. All existing indexes for each setting are added through new configuration parameters:
-
ipf.dps.mongodb.index-config.processingentity -
ipf.dps.mongodb.index-config.partyentity -
ipf.dps.mongodb.index-config.genericprocessingsettings -
ipf.dps.mongodb.index-config.agentclearingsetting -
ipf.dps.mongodb.index-config.csagentselectionsetting -
ipf.dps.mongodb.index-config.agentsettingsettings -
ipf.dps.mongodb.index-config.agentsettlementsettings -
ipf.dps.mongodb.index-config.participant -
ipf.dps.mongodb.index-config.exclusionlist -
ipf.dps.mongodb.index-config.ibanplus -
ipf.dps.mongodb.index-config.ibanstructure -
ipf.dps.mongodb.index-config.bicdir2018
-
-
Indexes can be added through these properties. Just note that fields that are under setting payload must be defined like ["values.payload.fields"]. Example of index creation:
ipf.dps.mongodb.index-config.agentsettlementsettings.index-3 = ["values.payload.agentUniqueId:ASC"]
-
New properties for enabling notifications on setting level:
ipf.csm-reachability.should-send-notification.agent-clearing-settings-settings = false
ipf.csm-reachability.should-send-notification.agent-settings-settings = false
ipf.csm-reachability.should-send-notification.agent-settlement-settings-settings = false
ipf.csm-reachability.should-send-notification.cs-agent-selection-settings-settings = false
ipf.csm-reachability.should-send-notification.generic-processing-settings-settings = false
ipf.csm-reachability.should-send-notification.participant-settings = false
ipf.csm-reachability.should-send-notification.party-entity-settings = false
ipf.csm-reachability.should-send-notification.processing-entity-settings = false
ipf.csm-reachability.should-send-notification.exclusion-list-settings = false
ipf.csm-reachability.should-send-notification.iban-plus-settings = false
ipf.csm-reachability.should-send-notification.iban-structure-settings = false
ipf.csm-reachability.should-send-notification.bicdir2018-settings = false
-
These notifications are disabled by default for each of these settings.
BREAKING CHANGES
-
Setting repository modules are removed from CSM Reachability project. The whole configuration is now under setting domain modules.
-
The following modules are removed:
-
setting-processingentity-repository -
setting-partyentity-repository -
setting-genericprocessingsettings-repository -
setting-agentclearingsettings-repository -
setting-csagentselectionsettings-repository -
setting-agentsettings-repository -
setting-agentsettlementsettings-repository -
setting-participant-repository -
setting-ibanplus-repository -
setting-exclusionlist-repository -
setting-ibanstructure-repository -
setting-bicvalidationfilehandling-repository
-
-
Since DPS v2 provides connectors and direct queries out of the box, following csm-reachability connector configuration is deleted:
-
ipf.csm-reachability.settings-api.connector.processing-entity
-
ipf.csm-reachability.settings-api.connector.party-entity
-
ipf.csm-reachability.settings-api.connector.generic-processing-settings
-
ipf.csm-reachability.settings-api.connector.agent-clearing-settings
-
ipf.csm-reachability.settings-api.connector.cs-agent-selection-settings
-
ipf.csm-reachability.settings-api.connector.agent-settings
-
ipf.csm-reachability.settings-api.connector.agent-settlement-settings
-
ipf.csm-reachability.settings-api.connector.participant
-
ipf.csm-reachability.settings-api.connector.participant-batch
-
ipf.csm-reachability.settings-api.connector.participant-get-ids
-
ipf.csm-reachability.settings-api.connector.exclusion-list
-
ipf.csm-reachability.settings-api.connector.exclusion-list-batch
-
ipf.csm-reachability.settings-api.connector.exclusion-list-get-ids
-
ipf.csm-reachability.settings-api.connector.get-all-iban-plus
-
ipf.csm-reachability.settings-api.connector.get-all-iban-structure
-
ipf.csm-reachability.settings-api.connector.get-batch-iban-structure
-
-
This configuration is used instead:
ipf.dps-api {
http.client {
host = "localhost"
endpoint-url = "/settings-objects/"
port = 8080
}
http.client = ${?settings-api.http.client}
connection = http
connection = ${?settings-api.connection}
connector {
search-setting = ${ipf.dps-api.default-connector}
search-ids-setting = ${ipf.dps-api.default-connector}
search-request-setting = ${ipf.dps-api.default-connector}
delete-setting = ${ipf.dps-api.default-connector}
get-scheduled-settings = ${ipf.dps-api.default-connector}
get-scheduled-setting = ${ipf.dps-api.default-connector}
delete-scheduled-setting = ${ipf.dps-api.default-connector}
update-scheduled-setting = ${ipf.dps-api.default-connector}
create-setting = ${ipf.dps-api.default-connector}
update-setting = ${ipf.dps-api.default-connector}
get-setting = ${ipf.dps-api.default-connector}
setting-schemas = ${ipf.dps-api.default-connector}
history-settings = ${ipf.dps-api.default-connector}
approve-settings = ${ipf.dps-api.default-connector}
get-approvals-setting = ${ipf.dps-api.default-connector}
get-approval-setting = ${ipf.dps-api.default-connector}
reject-setting = ${ipf.dps-api.default-connector}
}
default-connector {
resiliency-settings {
# Determines the maximum number of retries to be made. Note that this includes the first failed attempt.
max-attempts = 2
# Retry if HTTP error code is in the list
retryable-status-codes = [500, 503]
# Determines the minimum number of calls (within a sliding window period) that need to be made before the circuit breaker can calculate the error rate to determine the transport health.
minimum-number-of-calls = 10
}
resiliency-settings = ${?csm-reachability-api.resiliency-settings}
}
}
-
Property
ipf.csm-reachability.settings-api.http.clientis removed and the following configuration for managing the setting management APIs is used:
ipf.dps-api {
http.client {
host = "localhost"
endpoint-url = "/settings-objects/"
port = 8080
}
}
-
At each setting creation, DPS v2 consults the
settings-approvalscollection to check whether that setting is already created and waiting on approval. So, thissettings-approvalscollection must be created. -
DPS v2 introduces scheduled settings and uses Persistence Scheduler for their maintenance. In order to properly configure persistence scheduler there is a need to create two new collections and their indexes.
-
The following configuration should be added to your database (example cosmos-schema.yaml):
- name: settings-approvals
shard_key: _id
throughput: 10000
additional_indexes:
- keys:
- entityId
unique: false
- keys:
- resolvedStatus
unique: false
- keys:
- entityCollection
unique: false
- keys:
- lastUpdatedAt
unique: false
- name: jobSpecification
throughput: 400
default_ttl_seconds: 3600 # should be tied to deleteTime
additional_indexes:
- keys:
- deleteTime
unique: false
- keys:
- _id.jobSpecificationId
- _id.lastUpdated
unique: false
- name: jobExecutionStatus
throughput: 400
default_ttl_seconds: 3600 # should be tied to deleteTime
additional_indexes:
- keys:
- deleteTime
unique: false
- keys:
- _id.jobSpecificationId
- _id.lastUpdated
unique: false
| Clients that use Cosmos need to switch off automatic creation of indexes by setting the following property: |
ipf.mongodb.create-indexes = false
Data Ingestion
Changed
-
DPS v2 provides connectors and direct queries, and in csm-reachability we use that implementation (csm-reachability custom implementation is removed).
-
To configure file ingestion properly, we need to set up the following properties:
# possible options ['direct' | 'connector'], default value is 'direct' from DpsClientDirectAutoConfiguration and DpsClientConnectorAutoConfiguration respectively
ipf.dps-api.client-type = "direct"
# possible options ['direct' | 'http'], default value is 'direct' from ApiDirectQueryConfiguration and CsmSettingsApiConnectorConfiguration respectively
ipf.csm-reachability.settings-api.connection = "direct"
# possible options ['direct' | 'http'], default value is 'direct' from GenericFileConverterConfiguration
ipf.csm-reachability.settings-api.file-handling.connection = "direct"
-
First two properties need to match (direct-direct or connector-http) in order to properly configure direct queries or connector implementation from DPS v2.
Fixed
-
File naming convention for TIPS File Ingestion is fixed, format is
TIPSXXXTTTTYYYYMMDD.-
TTTT is the type, i.e. FULL for the full version and DLTA for the delta version. XXX is the currency related to the records included in the directory; YYYYMMDD specifies the year, month and day as of which the TIPS Directory is valid.
-
BREAKING CHANGES
-
Since DPS v2 provides connectors and direct queries out of the box, following csm-reachability-data-ingestion configuration is deleted:
-
ipf.csm-reachability.settings-api.connector.settings-api-rr -
ipf.csm-reachability.settings-api.http.client
-
-
This configuration is used instead:
ipf.dps-api {
http.client {
host = "localhost"
endpoint-url = "/settings-objects/"
port = 8080
}
}