...
The network map associates a specific transaction type with the rules and typologies that will be used to evaluate the incoming transaction. The network map allows for a sub-division of typologies according to themes (channels) as may be appropriate for a specific implementation. For example, typologies can be arranged in channels according to the types of financial crime they aim to detect, or typologies can be arranged according to the speed and performance with which they are required to respond, based on the infrastructure onto which the rules are deployed.
...
Network map metadata
A
an array ofmessages
array object that containstransactions, containing
an array of
channels
, containingan array of
typologies
, containingan array of
rules
The network map allows the Channel Router and Setup Processor (CRSP) to:
Identify whether the incoming transaction type should be routed for evaluation (undefined types are not routed at all)
Determine which typologies will be used to evaluate the transaction
Determine which unique rules are required by those typologies
Route the transaction to each of the identified rulesrule processors
The network map defines the route in a hierarchy following the order:
transactions -> channels -> typologies -> rules
and the evaluation is executed along the defined route in reverse order:
rules -> typologies -> channels -> transaction.
Network map metadata
The network map “header” contains metadata that describes the network map. The metadata includes the following attributes:
cfg
is the unique version of the network map. The version allows an investigator or auditor to know which version of the network map was used in a specific evaluation.active
is a flag that identifies the current active network map in use by the platform. There can only ever be one active version of the network map and this flag is updated when a network map is superseded by a new version. The value of this attribute for the current active network istrue
. The value for every inactive version isfalse
. The purpose of this flag is to allow the platform operator to roll back to a previous version of a network map by deactivating the current active network map and activating the older version.
Code Block |
---|
{
"active": true,
"cfg": "1.0.0", |
The messages object
The messages
object is an array that contains information about the transactions that the platform is expected to evaluate. Each element in the messages
object contains the following attributes:
id
is the unique identifier for the Transaction Aggregation and Decisioning Processor (TADProc) that will be used to ultimately conclude the evaluation of a specific transaction. It is possible for a transaction to be routed to a unique TADProc that contains specialized functionality related to summarizing the transaction’s results10.cfg
is the unique version of the deployed TADProc that will be used to conclude the evaluation of the transaction.host
defines the NATS subscription queue for the TADProc where the results of the previous processor in the evaluation flow, the typology processor, will be published. When there is only a single TADProc deployed, the default value of “NATS Server” is used.txTp
defines the transaction 11.txTp
defines the transaction type for which the message element is intended. ThetxTp
value here must match a correspondingTxTp
attribute in the root of the incoming message. If no matchingtxTp
attribute is found in the network map, the transaction will not be routed for evaluation and will simply be ignored by the CRSP.channels
defines the next layer of evaluation destinations along the route laid out by the network map for the evaluation.
The channels
object is a nested array object inside the transaction element in the messages
array object. The channels
array defines the channels within which the typologies are distributed and contains the following information. The channel object contains id
and cfg
attributes, but these are no longer relevant in the platform and will shortly be removed; until then, the attributes must be populated, but the values are irrelevant. It should also be noted that the platform is deployed by default to only contain a single channel.
...
Code Block |
---|
"messages": [
{
"id": "004@1.0.0",
"cfg": "1.0.0",
"host": "TADP",
"txTp": "pacs.002.001.12",
"channels": [ |
The channels object
The channels
object is a nested array object inside the transaction element in the messages
array object. The channels
array defines the channels within which the typologies are distributed. The channel object contains id
and cfg
attributes to differentiate between multiple channels. The platform is deployed by default to only contain a single channel, so the values are typically:
Code Block |
---|
"id": "001@1.0.0",
"cfg": "1.0.0" |
Most importantly, the channels
array contains a typologies
object array that specifies all the typologies that are collected in the specific channel.
Code Block |
---|
{
"id": "001@1.0.0",
"cfg": "1.0.0",
"typologies": [ |
The typology object
The typology object array contains the following attributes:
id
is the unique identifier for the typology processor that will be invoked to aggregate the specified rule results into a typology. It is possible for a transaction to be routed to a unique TADProc typology processor10 that contains specialized functionality related to summarizing the transaction’s results10calculating the specific typology.cfg
is defines the unique typology and the version of the deployed TADProc that will be used to conclude the evaluation of the transaction.host
defines the NATS subscription queue for the TADProc where the results of the previous processor in the evaluation flow, the typology processor, will be published. When there is only a single TADProc deployed, the default value of “NATS Server” is used.txTp
defines the transaction type for which the message element is intended. ThetxTp
value here must match a correspondingTxTp
attribute in the root of the incoming message. If no matchingtxTp
attribute is found in the network map, the transaction will not be routed for evaluation and will simply be ignored by the CRSP.channels
defines the next layer of evaluation destinations along the route laid out by the network map for the evaluation.
As with the definition of other processors in the network map, the elements of the typologies
object array contains id
and cfg
attributes to define the specific typology processor10 and version that will be used to evaluate a particular typology for the transaction, as well as the NATS subscription queue for the typology processor where the results of the previous processors in the evaluation flow, the rule processors, will be published. In full, t
...
its configuration. The typology processor is effectively just a generic engine that processes the typology’s configuration to combine rules into a typology in a specific way. From a certain perspective, the typology configuration is the typology.
rules
defines the first layer of evaluation destinations along the route laid out by the network map for the evaluation.
Code Block |
---|
{
"id": "typology-processor@1.0.0",
"cfg": "001@1.0.0",
"rules": [ |
The rules object
The rules object array contains the following attributes:
id
is the unique identifier for the rule processor and version that will be invoked to evaluate the transaction.cfg
defines the unique rule configuration version that will guide the execution of the rule processor.host
defines the NATS queue that the rule processor will subscribe to so that it can receive the transaction from the CRSP for evaluation11. The NATS publishing destination for the rule processor is presently defined as an environment variable in the processor.
Code Block |
---|
"rules": [ { "id": "002@1.0.0", "host": "RuleRequest002", "cfg": "1.0.0" |
...
|
...
|
...
}, |
Complete network map example
Complete example of a network map
3. Version Management
3.1. Introduction and Basics
...
In its current configuration, the platform only evaluates the pacs.002 as the trigger payload for the rule processors and typologies have only been defined with the final status of a payment transaction in mind.
The typology processor is not currently configured to interdict the transaction when the threshold is breached; only investigations are commissioned once the evaluation of all the typologies are complete.
https://frmscoe.atlassian.net/wiki/spaces/FRMS/pages/76906497/Configuration+management#References%3A
An explicit version reference has been planned for development to make it easier for an operator to link an evaluation result to the specific originating network map.
We have found during our performance testing that the text-based descriptions in our processor results undermines the performance gains we achieved with our ProtoBuff implementation. We will be removing the unabridged reason and processor descriptions from the configuration documents in favor of shorter look-up codes that will then also be used to introduce regionalized/language-specific descriptions.
In its default deployment, the platform contains a single version of the “core” platform processors (the typology processor and TADProc) at a time. Though it is possible to deploy and maintain multiple parallel versions of these processors and manage routing to these processors through the network map, this guide will only focus on singular core processors for now.
Before our implementation of NATS, EKUTA processors were implemented as RESTful micro-services. The
host
attributes in the network map contained the URL where the processors could be addressed. With our initial implementation of NATS, the routing information was moved into environment variables that were read into the processors when they were deployed, or restarted in the event of a processor failure. At some point we will revert the routing information back to the network map so that we can adjust routing more dynamically while processors are in flight.