The IPF Reachability Domain
The IPF Reachability Domain is an external library representation of basic interaction with CSM reachability to be used within a flow.
It has two predefined functions for use:
Select CSM Agent
The select csm agent function provides support for invoking select csm agent reachability endpoint. The supported input of the function is either PAIN.001 or PACS.008, it maps the message to request parameters input and verifies if agent is reachable or not.
Once this function is triggered as a part of the flow, input payment message is mapped to the requested input parameters in the following priority order:
-
if IBAN is provided in the payment message, it is extracted from the message and sent in request to CSM reachability
-
if IBAN is not provided, but BIC is provided - it is extracted from the message and sent in request to CSM reachability
-
if IBAN and BIC are not provided, but NCC is provided - it is extracted from the message and sent in request to CSM reachability CSM reachability response of this operation is then processed with the function adapter - where the default implementation behaves in a following manner:
| Condition on response data | Is Reachable | Reason Code | CSM Business Data on Event |
|---|---|---|---|
IF HighestOrderReachableCSM.reachabilityResponse.reachable = YES |
Yes |
AgentReachable |
Map from highestOrderReachableCSM.reachabilityResponse.agentUniqueId |
IF HighestOrderReachableCSM.reachabilityResponse.reachable = NO |
No |
AgentNotReachable |
None |
IF any instance of matchingCSMAgents.CSMAgent.reachable = YES |
Yes |
AgentReachable |
Map from matchingCSMAgents.agentUniqueId from the first instance of matchingCSMAgents |
IF HighestOrderReachableCSM.reachabilityResponse.reachable = NO |
No |
AgentNotReachable |
None |
For more details on how this CSM reachability endpoint works under the hood, check CSM reachability docs.
Validate Intra Entity Reachability
This function is used to validate if the payment can be settled within the processing entity itself, without using an external CSM agent. For more details on how this CSM reachability endpoint works under the hood, check CSM reachability docs.
Currently supported input of the function is either PAIN.001 or PACS.008. Once this function is triggered as a part of the flow, input payment message is mapped to the requested input parameters in the following priority order:
-
if IBAN is provided in the payment message, it is extracted from the message and sent in request to CSM reachability
-
if IBAN is not provided, but BIC is provided - it is extracted from the message and sent in request to CSM reachability
-
if IBAN and BIC are not provided, but NCC is provided - it is extracted from the message and sent in request to CSM reachability
Finally, the result of this function can be either: Agent Reachable or Agent Not Reachable.
Default Mapping Functions
The following default mapping functions are provided:
| CSM Operation | Default Mapping Function Name | ISO 20022 Message Type | Field from which identifier is extracted | Supported Counterparty Identifier Types |
|---|---|---|---|---|
Select CSM Agent |
performMapPacs008ToCSMAgentRequest |
PACS.008 |
CdtTrfTxInf[0].CdtrAcct.Id.IBAN CdtTrfTxInf[0].CdtrAgt.FinInstnId.BICFI CdtTrfTxInf[0].CdtrAgt.FinInstnId.ClrSysMmbId.MmbId |
IBAN,BIC,NCC |
Select CSM Agent |
performMapPain001ToCSMAgentRequest |
PAIN.001 |
PmtInf[0].CdtTrfTxInf[0].CdtrAcct.Id.IBAN PmtInf[0].CdtTrfTxInf[0].CdtrAgt.FinInstnId.BICFI PmtInf[0].CdtTrfTxInf[0].CdtrAgt.FinInstnId.ClrSysMmbId.MmbId |
IBAN,BIC,NCC |
Validate Intra Entity Reachability |
performMapPacs008ToCSMValidateIntraEntityReachabilityRequest |
PACS.008 |
CdtTrfTxInf[0].CdtrAcct.Id.IBAN CdtTrfTxInf[0].CdtrAgt.FinInstnId.BICFI CdtTrfTxInf[0].CdtrAgt.FinInstnId.ClrSysMmbId.MmbId |
IBAN,BIC,NCC |
Validate Intra Entity Reachability |
performMapPain001ToCSMValidateIntraEntityReachabilityRequest |
PAIN.001 |
PmtInf[0].CdtTrfTxInf[0].CdtrAcct.Id.IBAN PmtInf[0].CdtTrfTxInf[0].CdtrAgt.FinInstnId.BICFI PmtInf[0].CdtTrfTxInf[0].CdtrAgt.FinInstnId.ClrSysMmbId.MmbId |
IBAN,BIC,NCC |
For all mapping functions, the counterparty identifier is extracted in the following priority order: first IBAN if provided, then BIC if IBAN is not provided, and finally NCC if neither IBAN nor BIC are provided. Currently, Validate Intra Entity Reachability endpoint accepts only a single counterparty identifier in request, hence limiting the behavior of business function as well.
It is possible to override any of these mapping functions by providing a custom bean that overrides default IPFReachabilityMappingsMappingPort interface implementation. For more details on how to override a mapping function - check out this page.