Documentation for a newer release is available. View Latest

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-entity endpoint - deriveDirectParticipant and csmAgentId.

  • When deriveDirectParticipant is 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 agentParticipantCsmAgentId for 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.client is 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-approvals collection to check whether that setting is already created and waiting on approval. So, this settings-approvals collection 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
      }
    }