Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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 messages array object that contains

    an array of

    transactions, containing

    • an array of channels, containing

      • an array of typologies, containing

        • an array of rules

The network map allows the Channel Router and Setup Processor (CRSP) to:

  1. Identify whether the incoming transaction type should be routed for evaluation (undefined types are not routed at all)

  2. Determine which typologies will be used to evaluate the transaction

  3. Determine which unique rules are required by those typologies

  4. 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 is true. The value for every inactive version is false. 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. The txTp value here must match a corresponding TxTp attribute in the root of the incoming message. If no matching txTp 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. The txTp value here must match a corresponding TxTp attribute in the root of the incoming message. If no matching txTp 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

...

  1. 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.

  2. 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.

  3. https://frmscoe.atlassian.net/wiki/spaces/FRMS/pages/76906497/Configuration+management#References%3A

  4. https://frmscoe.atlassian.net/wiki/spaces/FRMS/pages/6586489/Rule+Processor+Overview#4.1.-Read-rule-config

  5. https://frmscoe.atlassian.net/wiki/spaces/FRMS/pages/1740494/Typology+Processing#5.5.-Read-typology-configuration

  6. https://frmscoe.atlassian.net/wiki/spaces/FRMS/pages/6259944/Transaction+Aggregation+and+Decisioning+Processor+TADProc#7.4.2.-Read-transaction-configuration

  7. https://frmscoe.atlassian.net/wiki/spaces/FRMS/pages/6520927/Channel+Router+and+Setup+Processor+CRSP#3.1.-Read-Network-Map

  8. 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.

  9. 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.

  10. 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.

  11. 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.