Files
richard-churchman 5f6bbe45f7 A major refactoring of the software to make model IDs less volatile between Import, Export, and Peek (comparison) of the model configuration environment. As part of the extensive refactor, most tables have been updated to include a GUID field, which is consistent across Import, irrespective of the IDs remaining volatile. The consistent GUID allows for the separation of production (i.e., Case, Transaction, and Counter data), Redis cache data and quasi-production data(i.e, Lists, Suppressions, and Dictionaries) from the configuration environment. Significant rework of Controllers, Repositories and POCOs to support GUID as an access path rather than ID.
Major bug fixes relating to the Redis implementation in Reprocessing and Search Key Cache were identified and fixed as part of the rekeying development.

Included functionality to stop the Exhaustive training.  Fixed the Unsupervised learning functionality in Exhaustive Training.  Embedded the Mock Data CSV data into a class to make it compatible with Docker without needing to modify the Dockerfile (i.e, build).  Included a new table that stores training data to enhance support capabilities for Exhaustive.

Reintroduced and validated the Multitenancy functionality.

Postgres is now fully deprecated in place of Redis for cache, and all implementations of the Interfaces for Postgres have been removed.  No migrations exist to support this deprecation, and Postgres as a cache is now wholly unsupported.  Removed the Indexing background thread,  as Redis does not require it, given that it is a key-value pair database.

Created a RedisCommandFlag Environment Variable to support Fire and Forget write to Redis in Invocation.

Implemented functionality to Export, Peek and Download configuration environments using a secure, encrypted scheme.  Created a permission to access the functionality via the user interface.  Extensive database-based logging is included to provide for a comprehensive audit.  Created functionality to Import the encrypted Export file inside a database transaction to ensure consistency.

As Docker is now the primary deployment model, log4net instantiation has been moved to an approach that primarily uses programmatic instantiation of the ConsoleLogger and RollingFileAppender given Environment Variables. Implemented functionality to support remote \ mounted Log4Net XML Serialisation files for more advanced log4net configurations.

Reintroduced access to counters via the user interface and created a permission.

Took the opportunity to implement ReSharper linter suggestions.

Disabled the Lock button across the whole application, with that functionality being reserved for future use. It is intended that locking happens programmatically on the basis of dependencies in future commits.

Fixed several significant end-use bugs which became apparent during testing of the refactored code relating to case management and visualisations.  Fixed certain other minor bugs that came up during testing.

Brought documentation up to date for this commit.

Brought the Docker Compose file up to date for this commit.

Removed Redundant Environment Variables for this commit.

Made the README file less verbose and unnecessary.
2025-08-13 19:01:08 +03:00

5.0 KiB

layout, title, nav_order, parent, grand_parent
layout title nav_order parent grand_parent
default Activation Rules Suppression 18 Models Configuration

🚀Speed up implementation with hands-on, face-to-face training from the developer.

Activation Rules Suppression

In the previous procedure the Response Elevation was set as the result of an Activation Rule matching. Response Elevations are commonly used initiate the decline of a transaction in real time.

Consider the scenario where a customer has been declined in real time for foreign transactions, yet it transpires upon investigation, that that the customer is on holiday. In such a circumstance, it would be desirable to suppress any actions as the result of an Activation Rule match, for that account.

To help illustrate, repeat the HTTP POST to endpoint https://localhost:5001/api/invoke/EntityAnalysisModel/90c425fd-101a-420b-91d1-cb7a24a969cc for response as follows:

Image

It can be seen that there is a Response Elevation being returned, which would be inferred as a transaction decline.

Note that the IP in the JSON transaction message is "123.456.789.200":

Image

To enable the IP for Suppression matching, navigate to the IP in the Request XPath:

Image

To allow IP to be used in Suppression, toggle the Enable Suppression switch:

Image

Update the Request XPath to create a new version including the Enable Suppression flag:

Image

Synchronise the models to ensure that suppression is recognised in the real-time processing. Suppression is available in the top level menu:

Image

To add a suppression at the model level, which will suppress on all rules, navigate to the Suppression page:

Image

It can be seen in the Suppression Key drop down that the distinct list of all Request XPath elements designated for suppression:

Image

It follows that the suppression value must be for the IP for which suppression is required. To add a suppression for the IP, simply type in the IP in the Suppression Key Value:

Image

Click the Fetch button to return suppression for the IP 123.456.789.200:

Image

Upon clicking the Fetch button, all models will be returned for which IP is eligible, overlay with a switch to indicate the suppression status for the IP 123.456.789.200:

Image

To suppress for the IP value 123.456.789.200, simply toggle the switch next to the model name to indicate that all Activation Rules belonging to the model should be suppressed:

Image

Suppression (as Lists and Dictionary) do not require an explicit synchronisation, rather they will be synchronised in the engine as a matter of routine.

Repeat the HTTP POST to endpoint https://localhost:5001/api/invoke/EntityAnalysisModel/90c425fd-101a-420b-91d1-cb7a24a969cc for response as follows:

Image

It can be seen that the Activation Rule has still matched - which is to be expected - but note that the following actions are suppressed:

  • Response Elevations.
  • Notifications.
  • Case Creation.
  • Activation Watcher.

TTL Counter increments will not be suppressed.

In the response, locate the Response Elevation:

Image

It can be seen that the Response Elevation is zero - as it has been suppressed - and will no longer drive a decline (being a Response Elevation value other than zero).

To remove the suppression, simply toggle off the switch after having fetched the IP of 123.456.789.200 from the suppression tab:

Image

To validate removal of suppression, repeat the HTTP POST to endpoint https://localhost:5001/api/invoke/EntityAnalysisModel/90c425fd-101a-420b-91d1-cb7a24a969cc for response as follows:

Image

It can be seen that the Response Elevation is now active - given that the suppression has now been removed.

It is also possible to specify just a specific activation rule for suppression.

To expose the Activation Rules rolling up to model, click on the arrow to the left hand side of the grid:

Image

Click on the arrow to expand Activation Rules:

Image

The suppression process works in the same manner as at the model level with a simple toggle switch to be immediately synchronised, but suppression will be targeted to a rule name and not encompass the whole model processing of the transaction or event.