Files
richard-churchman 811c938462 Improved Case Automation POST body conext and other minor issues:
* Pushed Case Workflow Display HTML rendering logic down into a controller for improved security and consistent tokenisation of the Jube token format against context. Included a migration to update the default demo entry to use proper tokenisation. Updated the repository to support fetching CaseWorkflowDisplay with appropriate security.
* Implemented improved tokenisation of the EntityAnalysisModelInstanceEntryPayload model via a common extension method on EntityAnalysisModelInstanceEntryPayload, used consistently across the system for serialisation and storage.
* Included a migration to update the tokenisation format for full CaseWorkflowDisplay support.
* Fixed an issue where CaseWorkflowFilter was incorrectly filtering on CaseWorkflowStatus.Guid instead of CaseWorkflowStatus.Name, causing the GUID to be returned rather than the display name on the template/demo model. (The remainder was fixed in GitHub issue #6.) Included a migration with a corrective SQL statement.
* Fixed an issue where tokens were not being stored alongside CaseWorkflowFilter definition configuration. It now behaves identically to CaseSearch. Note: migrating missing tokens is not feasible as it requires JS-side parsing via JQueryBuilder.
* Reduced the size of the CaseWorkflowForm invocation to include only the required fields given the new POST body context being rendered server side. Improved API serialisation by using a dictionary for form payload keys and values.
* Consolidated JSON serialisation settings into DI and updated usages throughout.
* Updated EntityAnalysisModelInstanceEntryPayload write serialisers to handle deserialisation, which is required to support tokenisation of new Case Automation POST bodies.
* Created an extension method on the EntityAnalysisModelInstanceEntryPayload to centralise tokenisation of strings across Activation and Case Automation on a consistent basis. Simplified Case Notification and Case HTTP dispatch by removing tokenisation logic from those classes.
* Removed a redundant field from the CaseWorkflowFormEntry POCO (database left unchanged for now).
* Fixed a bug in Case session SQL rebuilding where the rebuild date was not being correctly checked for null or default value, which caused a failure in the last migration.
* Made minor modifications to the Create Case process and method signature to skip serialisation when the payload object required for tokenisation is already available on the thread (e.g. during synchronous reprocessing).
* Updated Case Workflow Macro processing to fetch the archive payload for the case from the database, improving security of that invocation endpoint.
* Removed what appeared to be a duplicate EntityAnalysisModelInstanceEntryPayload model introduced during refactoring.
* Fixed a but in Case Worfkflow Display Role assigment owing to volatile Guid in its update.
2026-02-22 13:08:42 +02:00

37 KiB

layout, title, nav_order, parent, grand_parent
layout title nav_order parent grand_parent
default Creating Automation 25 Case Management Configuration

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

Creating Automation

The case management module supports basic automation and integration using Notifications and HTTP Endpoint hooks in the following cases workflow configuration items:

  • Cases Workflow Status.
  • Cases Workflow Form.
  • Cases Workflow Action.
  • Cases Workflow Macro.

Navigate Models >> Cases Workflows >> Cases Workflow Status, adding a new entry:

Image

Note the check boxes Enable HTTP Endpoint and Notification.

The purpose of both HTTP Endpoints and Notifications is to provide a means to integrate to external system and business processes within the context of the action being taken in the Case page.

For the purposes of tokenization, the parameters available will be, at a minimum, the values displayed in the default section of the case:

Image

Furthermore, the Case Key and Case Key Value will always be embedded in the payload values made available to Notification or HTTP Endpoint functionality:

Image

By way of example, upon the invocation of either a Notification or HTTP Endpoint where the above data is available, the string "AccountID: [@AccountID@]" would be replaced to become "AccountID: Test1".

HTTP Endpoint Introduction

HTTP Endpoint functionality brings together parameters and makes a POST or GET to a HTTP endpoint. The construction of the URL fully supports tokenization for the purposes of crafting querystring parameters.

Locate the HTTP Endpoint in the Cases Workflows Status configuration:

Image

Expand on the HTTP Endpoint switch:

Image

A HTTP Endpoint will upon invocation (in this example the submission of the form that was created in previous training procedures) compile all values into a JSON document \ message and submit to a remote HTTP endpoint.

In this example the Toptal Post Bin service will be used (https://www.toptal.com/developers/postbin/) and the following bin has been created:

https://www.toptal.com/developers/postbin/1665212514812-5780224471818

The above HTTP endpoint will promiscuously accept the posts emitted synchronously from the case management functions.

The HTTP endpoint functionality is intended for the purposes of performing complex integrations and automations for which a bridge \ middleware must usually be created for that specific purpose.

The page accepts the following parameters for HTTP Endpoint (which is common across all cases workflow entries that process HTTP endpoints):

Value Description Example
HTTP Endpoint Type The type of HTTP endpoint request. If POST then the values will be compiled in a JSON document and submitted in the POST body. If GET only the URL will be used in the HTTP request (although keep in mind that the URL is tokenization). POST
HTTP Endpoint https://www.toptal.com/developers/postbin/1665212514812-5780224471818 True

To start, perform a POST by completing the form as above and below:

Image

Scroll down the page, click to update to create a version of the Cases Workflows Status:

Image

Navigate to a case:

Image

Notice the Case Status Bar, specifically the Status:

Image

Change Case Status to the newly created status:

Image

On selection of the status, there will be no obvious sign that a HTTP Endpoint integration has taken place from the form submission response, instead for the purposes of evidence the logs will be inspected to understand the interchange between the HTTP endpoint:

Image

On refresh of the post bin endpoint however, it can be seen that the data has been posted and received:

Image

In the case of GET, the Post body would not be available, instead, data would be transposed to the query. For this reason, the querystring fully supports tokenization.

Navigate to the Cases Workflow Status:

Image

Locate the HTTP Endpoint type set:

Image

Update the HTTP Endpoint Type to GET and alter the HTTP Endpoint to include a resource as follows:

[https://www.toptal.com/developers/postbin/1665212514812-5780224471818?Example=@AccountId@

Image

Scroll down and click update to create a version of the Cases Workflows Status:

Image

Navigate to a case, changing status back to something else need be:

Image

Change the status to that updated:

Image

On inspection of the Post Bin, the GET can be observed with the query string values properly tokenized:

Image

Notifications are the sending of Email or SMS messages as a consequence of an event being raised in the Case page. The notification functionality fully supports Tokenization in the Body, Subject and Destination fields which will replace tokenized values with the values in the parameters from the triggering event. From the Cases Workflows Status:

Image

Locate the switch for Notification:

Image

Switch Notification to expose properties:

Image

Complete a notification using tokenization on the AccountId (keep in mind that all fields support tokenization):

Image

Scroll down and click Update to create a version of the Cases Workflows Status:

Image

The process to change to this status is as laid out above, however in addition to a HTTP GET (or POST) being made, an email (or SMS if that Notification Type has been selected) will be dispatched having been appropriately tokenized:

Image

The Notification Type SMS expects a destination or telephone number, using the + country code designation, and subject will be ignored.

As both the email and SMS notifications are on the basis of being straight through and synchronous, nothing needs to be enabled in the engine. However, the following values need to be considered as Environment Variables:

SMTPHost=email.emailhost.com
SMTPPort=587
SMTPUser=UsernameExample
SMTPPassword=PasswordExample
[email protected]
Value Description
SMTPHost The SMTP host name.
SMTPPort The SMTP port name.
SMTPUser The SMTP user name for authentication.
SMTPPassword The SMTP password for authentication.
SMTPFrom The email address where the email will be received from.

Likewise the Clickatell gateway in the case of SMS, using the values in the using a value set Environment Variable as:

ClickatellAPIKey=APIKeyFromClickatell
Value Description
ClickatellAPIKey The API Key provided by Clickatell.

POST Body Context

HTTP POST's can be made in the following parts of the case management system:

Event Description Context
Case Workflow Action Creation of a Case Note by the end user alongside a Case Workflow Action. Case Note including Case Workflow Action name, context of Case including Case Workflow Status Name and context of full Archive payload on case creation.
Case Workflow Status On allocation of a status in Activation Rule Case Creation, Elevation or updates being made by the end user. Case including Case Workflow Status Name and context of full Archive payload on case creation.
Case Workflow Macro Invocation of the Case Workflow macro by the end user Case Workflow Macro definition including Case Workflow Form name, context of Case entry including Case Workflow Status Name and context of full Archive payload on case creation.
Case Workflow Form On submission of a Case Workflow Form. Case Workflow Form deinition including Case Workflow Form name and payload, context of Case including Case Workflow Status Name and context of full Archive payload on case creation.

Case Workflow Action:

{
  "id": 1,
  "note": "Hello",
  "actionId": 3,
  "priorityId": 1,
  "createdDate": "0001-01-01T00:00:00",
  "caseKey": "AccountId",
  "caseKeyValue": "Test20",
  "caseId": 1,
  "caseWorkflowActionName": "Escalation",
  "case": {
    "id": 1,
    "entityAnalysisModelInstanceEntryGuid": "909c1cac-de56-4f02-ab55-f514df3c1f6d",
    "diaryDate": "2026-02-20T09:19:46.5265",
    "caseWorkflowGuid": "957c6ab0-ef2b-4d06-a7a5-e923762dd917",
    "caseWorkflowStatusGuid": "faf5c83a-5c3e-4a62-b224-aea9e2e1efa6",
    "createdDate": "2026-02-20T09:19:46.526214",
    "locked": 0,
    "closedStatusId": 0,
    "caseKey": "AccountId",
    "diary": 0,
    "rating": 0,
    "caseKeyValue": "Test20",
    "caseWorkflowStatus": "First Line Review",
    "payload": {
      "payload": {
        "IP": "Test",
        "OS": "Lollypop",
        "MAC": "94:23:44f:2:d3",
        "OTP": "466923",
        "Is3D": "False",
        "Brand": "ZTE",
        "Email": "[email protected]",
        "IsAPM": "True",
        "Model": "Barby",
        "TxnId": "0987654321",
        "BankId": "57",
        "System": "Android",
        "OrderId": "10607324128",
        "Storage": "True",
        "Currency": "826",
        "DeviceId": "OlaRoseGoldPhone3",
        "IsRebill": "False",
        "AccountId": "Test20",
        "AmountEUR": "100",
        "AmountGBP": "86.5866",
        "AmountUSD": "113.055",
        "ChannelId": "1",
        "Jailbreak": "True",
        "ActionDate": "2019-04-17T04:18:15.0000000+03:00",
        "BillingZip": "123456",
        "IsCascaded": "False",
        "IsCredited": "False",
        "IsModified": "False",
        "JoinedName": "Robert Mugabe",
        "Resolution": "720*1280",
        "BillingCity": "Address Line 2",
        "ServiceCode": "DID",
        "ToAccountId": "MTN",
        "TwoFATypeId": "SMS",
        "TxnDateTime": "2024-12-01T21:41:37.2480000+02:00",
        "APMAccountId": "",
        "BillingPhone": "1234567890",
        "BillingState": "",
        "ResponseCode": "0",
        "AmountEURRate": "1",
        "AmountGBPRate": "0.8658658602",
        "AmountUSDRate": "1.1305502954",
        "BusinessModel": "Sports betting",
        "AppVersionCode": "12.34",
        "BillingAddress": "Address Line 1",
        "BillingCountry": "DE",
        "CreditCardHash": "0xDA39A3EE5E6B4B0JJJ1890AFD80709",
        "CurrencyAmount": "123.45",
        "IsModification": "False",
        "OriginalAmount": "100",
        "AccountCurrency": "566",
        "AccountLatitude": "5.3536",
        "BillingLastName": "Mugabe",
        "FingerprintHash": "jhjkhjkhsjh2hjhjkhj2k",
        "TwoFAResponseId": "1",
        "AccountLongitude": "36.1408",
        "AcquirerBankName": "Caixa",
        "BillingFirstName": "Robert",
        "DebuggerAttached": "True",
        "OriginalCurrency": "EUR",
        "SettlementAmount": "100000",
        "SimulatorAttached": "True",
        "TransactionTypeId": "False",
        "IsCurrencyConverted": "False",
        "TransactionResultId": "1006",
        "ToAccountExternalRef": "ChurchmanR",
        "TransactionExternalResponseId": "0"
      },
      "responseElevation": {
        "value": 2.0,
        "redirect": "https://www.jube.io",
        "foreColor": "#fb0707",
        "backColor": "#f5f2cb",
        "content": "Declined for \"VolumeThresholdByAccountId\"",
        "createdDate": "2026-02-20T09:19:46.0658815+02:00"
      },
      "r": 0.0,
      "createdDate": "2026-02-20T09:19:46.0732995+02:00",
      "entityAnalysisModelGuid": "90c425fd-101a-420b-91d1-cb7a24a969cc",
      "entityAnalysisModelName": "Detailed_Account_Financial_Transactions",
      "entityAnalysisModelInstanceGuid": "00000000-0000-0000-0000-000000000000",
      "entityAnalysisModelInstanceEntryGuid": "909c1cac-de56-4f02-ab55-f514df3c1f6d",
      "entityInstanceEntryId": "0987654321",
      "responseElevationLimit": 10.0,
      "referenceDate": "2024-12-01T21:41:37.248",
      "archiveEnqueueDate": "2026-02-20T09:19:46.4475738+02:00",
      "matchedGatewayRule": true,
      "prevailingEntityAnalysisModelActivationRuleId": 5,
      "entityAnalysisModelActivationRuleCount": 2,
      "dictionary": {
        "VolumeThresholdByAccountId": 0.0
      },
      "ttlCounter": {
        "TtlCounterAll": 0
      },
      "sanction": {
        "FuzzyMatchDistance2JoinedName": 0.0
      },
      "abstraction": {
        "ResponseCodeEqual0Volume": 1111.0500000000002,
        "NotResponseCodeEqual0Volume": 0.0
      },
      "abstractionCalculation": {
        "ResponseCodeVolumeRatio": 0.0
      },
      "httpAdaptation": {},
      "exhaustiveAdaptation": {},
      "activation": {
        "VolumeThresholdByAccountId": {
          "visible": true
        },
        "ThresholdSanctionsDistance": {
          "visible": true
        },
        "IncrementTtlCounterAll": {
          "visible": false
        }
      },
      "createCase": {
        "caseWorkflowGuid": "957c6ab0-ef2b-4d06-a7a5-e923762dd917",
        "caseWorkflowStatusGuid": "faf5c83a-5c3e-4a62-b224-aea9e2e1efa6",
        "caseKeyValue": "Test20",
        "caseKey": "AccountId",
        "suspendBypass": false,
        "suspendBypassDate": "2026-02-20T09:19:46.3793539+02:00"
      },
      "tag": {},
      "invokeTaskPerformance": {
        "computeTimes": {
          "parse": 48677,
          "inlineFunction": 79002,
          "inlineScript": 86319,
          "gateway": 88247,
          "sanctionsAsync": 117393,
          "dictionaryKvPsAsync": 100138,
          "ttlCountersAsync": 117850,
          "abstractionRulesWithSearchKeysAsync": 186838,
          "readTasksPerformance": {
            "sanctionsAsync": {
              "computeTime": 11839960,
              "memory": 27349
            },
            "dictionaryKvPsAsync": {
              "computeTime": 1624,
              "memory": 10131
            },
            "ttlCountersAsync": {
              "computeTime": 2603136,
              "memory": 29327
            },
            "abstractionRulesWithSearchKeysAsync": {
              "computeTime": 83912,
              "memory": 96653
            }
          },
          "joinReadTasks": 188121,
          "executeAbstractionRulesWithoutSearchKey": 189938,
          "executeAbstractionCalculation": 192925,
          "executeExhaustiveAdaptation": 194053,
          "executeHttpAdaptation": 196472,
          "executeActivation": 325799,
          "joinWriteTasks": 327992,
          "writeTasksPerformance": {
            "cachePayloadLatestUpsertAsync": {
              "computeTime": 20680,
              "memory": 34383
            },
            "cachePayloadInsertAsync": {
              "computeTime": 9480,
              "memory": 11739
            },
            "cacheTtlCounterEntryUpsertAsync": {
              "computeTime": 688,
              "memory": 2816
            },
            "cacheTtlCounterEntryIncrementAsync": {
              "computeTime": 656,
              "memory": 2800
            }
          }
        },
        "memory": 8860472
      }
    }
  }
}

Case Workflow Macro:

{
  "caseId": 1,
  "caseWorkflowMacroId": 1,
  "caseWorkflowMacroName": "ExampleMacro",
  "case": {
    "id": 1,
    "entityAnalysisModelInstanceEntryGuid": "909c1cac-de56-4f02-ab55-f514df3c1f6d",
    "diaryDate": "2026-02-20T09:19:46.5265",
    "caseWorkflowGuid": "957c6ab0-ef2b-4d06-a7a5-e923762dd917",
    "caseWorkflowStatusGuid": "faf5c83a-5c3e-4a62-b224-aea9e2e1efa6",
    "createdDate": "2026-02-20T09:19:46.526214",
    "locked": 0,
    "closedStatusId": 0,
    "caseKey": "AccountId",
    "diary": 0,
    "rating": 0,
    "caseKeyValue": "Test20",
    "caseWorkflowStatus": "First Line Review",
    "payload": {
      "payload": {
        "IP": "Test",
        "OS": "Lollypop",
        "MAC": "94:23:44f:2:d3",
        "OTP": "466923",
        "Is3D": "False",
        "Brand": "ZTE",
        "Email": "[email protected]",
        "IsAPM": "True",
        "Model": "Barby",
        "TxnId": "0987654321",
        "BankId": "57",
        "System": "Android",
        "OrderId": "10607324128",
        "Storage": "True",
        "Currency": "826",
        "DeviceId": "OlaRoseGoldPhone3",
        "IsRebill": "False",
        "AccountId": "Test20",
        "AmountEUR": "100",
        "AmountGBP": "86.5866",
        "AmountUSD": "113.055",
        "ChannelId": "1",
        "Jailbreak": "True",
        "ActionDate": "2019-04-17T04:18:15.0000000+03:00",
        "BillingZip": "123456",
        "IsCascaded": "False",
        "IsCredited": "False",
        "IsModified": "False",
        "JoinedName": "Robert Mugabe",
        "Resolution": "720*1280",
        "BillingCity": "Address Line 2",
        "ServiceCode": "DID",
        "ToAccountId": "MTN",
        "TwoFATypeId": "SMS",
        "TxnDateTime": "2024-12-01T21:41:37.2480000+02:00",
        "APMAccountId": "",
        "BillingPhone": "1234567890",
        "BillingState": "",
        "ResponseCode": "0",
        "AmountEURRate": "1",
        "AmountGBPRate": "0.8658658602",
        "AmountUSDRate": "1.1305502954",
        "BusinessModel": "Sports betting",
        "AppVersionCode": "12.34",
        "BillingAddress": "Address Line 1",
        "BillingCountry": "DE",
        "CreditCardHash": "0xDA39A3EE5E6B4B0JJJ1890AFD80709",
        "CurrencyAmount": "123.45",
        "IsModification": "False",
        "OriginalAmount": "100",
        "AccountCurrency": "566",
        "AccountLatitude": "5.3536",
        "BillingLastName": "Mugabe",
        "FingerprintHash": "jhjkhjkhsjh2hjhjkhj2k",
        "TwoFAResponseId": "1",
        "AccountLongitude": "36.1408",
        "AcquirerBankName": "Caixa",
        "BillingFirstName": "Robert",
        "DebuggerAttached": "True",
        "OriginalCurrency": "EUR",
        "SettlementAmount": "100000",
        "SimulatorAttached": "True",
        "TransactionTypeId": "False",
        "IsCurrencyConverted": "False",
        "TransactionResultId": "1006",
        "ToAccountExternalRef": "ChurchmanR",
        "TransactionExternalResponseId": "0"
      },
      "responseElevation": {
        "value": 2.0,
        "redirect": "https://www.jube.io",
        "foreColor": "#fb0707",
        "backColor": "#f5f2cb",
        "content": "Declined for \"VolumeThresholdByAccountId\"",
        "createdDate": "2026-02-20T09:19:46.0658815+02:00"
      },
      "r": 0.0,
      "createdDate": "2026-02-20T09:19:46.0732995+02:00",
      "entityAnalysisModelGuid": "90c425fd-101a-420b-91d1-cb7a24a969cc",
      "entityAnalysisModelName": "Detailed_Account_Financial_Transactions",
      "entityAnalysisModelInstanceGuid": "00000000-0000-0000-0000-000000000000",
      "entityAnalysisModelInstanceEntryGuid": "909c1cac-de56-4f02-ab55-f514df3c1f6d",
      "entityInstanceEntryId": "0987654321",
      "responseElevationLimit": 10.0,
      "referenceDate": "2024-12-01T21:41:37.248",
      "archiveEnqueueDate": "2026-02-20T09:19:46.4475738+02:00",
      "matchedGatewayRule": true,
      "prevailingEntityAnalysisModelActivationRuleId": 5,
      "entityAnalysisModelActivationRuleCount": 2,
      "dictionary": {
        "VolumeThresholdByAccountId": 0.0
      },
      "ttlCounter": {
        "TtlCounterAll": 0
      },
      "sanction": {
        "FuzzyMatchDistance2JoinedName": 0.0
      },
      "abstraction": {
        "NotResponseCodeEqual0Volume": 0.0,
        "ResponseCodeEqual0Volume": 1111.0500000000002
      },
      "abstractionCalculation": {
        "ResponseCodeVolumeRatio": 0.0
      },
      "httpAdaptation": {},
      "exhaustiveAdaptation": {},
      "activation": {
        "VolumeThresholdByAccountId": {
          "visible": true
        },
        "ThresholdSanctionsDistance": {
          "visible": true
        },
        "IncrementTtlCounterAll": {
          "visible": false
        }
      },
      "createCase": {
        "caseWorkflowGuid": "957c6ab0-ef2b-4d06-a7a5-e923762dd917",
        "caseWorkflowStatusGuid": "faf5c83a-5c3e-4a62-b224-aea9e2e1efa6",
        "caseKeyValue": "Test20",
        "caseKey": "AccountId",
        "suspendBypass": false,
        "suspendBypassDate": "2026-02-20T09:19:46.3793539+02:00"
      },
      "tag": {},
      "invokeTaskPerformance": {
        "computeTimes": {
          "parse": 48677,
          "inlineFunction": 79002,
          "inlineScript": 86319,
          "gateway": 88247,
          "sanctionsAsync": 117393,
          "dictionaryKvPsAsync": 100138,
          "ttlCountersAsync": 117850,
          "abstractionRulesWithSearchKeysAsync": 186838,
          "readTasksPerformance": {
            "sanctionsAsync": {
              "computeTime": 11839960,
              "memory": 27349
            },
            "dictionaryKvPsAsync": {
              "computeTime": 1624,
              "memory": 10131
            },
            "ttlCountersAsync": {
              "computeTime": 2603136,
              "memory": 29327
            },
            "abstractionRulesWithSearchKeysAsync": {
              "computeTime": 83912,
              "memory": 96653
            }
          },
          "joinReadTasks": 188121,
          "executeAbstractionRulesWithoutSearchKey": 189938,
          "executeAbstractionCalculation": 192925,
          "executeExhaustiveAdaptation": 194053,
          "executeHttpAdaptation": 196472,
          "executeActivation": 325799,
          "joinWriteTasks": 327992,
          "writeTasksPerformance": {
            "cachePayloadLatestUpsertAsync": {
              "computeTime": 20680,
              "memory": 34383
            },
            "cachePayloadInsertAsync": {
              "computeTime": 9480,
              "memory": 11739
            },
            "cacheTtlCounterEntryUpsertAsync": {
              "computeTime": 688,
              "memory": 2816
            },
            "cacheTtlCounterEntryIncrementAsync": {
              "computeTime": 656,
              "memory": 2800
            }
          }
        },
        "memory": 8860472
      }
    }
  }
}

Case Workflow Status:

{
  "id": 1,
  "entityAnalysisModelInstanceEntryGuid": "909c1cac-de56-4f02-ab55-f514df3c1f6d",
  "diaryDate": "2026-02-20T05:19:46Z",
  "caseWorkflowGuid": "957c6ab0-ef2b-4d06-a7a5-e923762dd917",
  "caseWorkflowStatusGuid": "3ff54c93-ad25-46e7-a1aa-9efa488f928e",
  "createdDate": "2026-02-20T09:19:46.526214",
  "locked": 0,
  "lockedUser": "",
  "closedStatusId": 0,
  "caseKey": "AccountId",
  "diary": 0,
  "rating": 1,
  "caseKeyValue": "Test20",
  "caseWorkflowStatusName": "Fraudulent",
  "payload": {
    "payload": {
      "IP": "Test",
      "OS": "Lollypop",
      "MAC": "94:23:44f:2:d3",
      "OTP": "466923",
      "Is3D": "False",
      "Brand": "ZTE",
      "Email": "[email protected]",
      "IsAPM": "True",
      "Model": "Barby",
      "TxnId": "0987654321",
      "BankId": "57",
      "System": "Android",
      "OrderId": "10607324128",
      "Storage": "True",
      "Currency": "826",
      "DeviceId": "OlaRoseGoldPhone3",
      "IsRebill": "False",
      "AccountId": "Test20",
      "AmountEUR": "100",
      "AmountGBP": "86.5866",
      "AmountUSD": "113.055",
      "ChannelId": "1",
      "Jailbreak": "True",
      "ActionDate": "2019-04-17T04:18:15.0000000+03:00",
      "BillingZip": "123456",
      "IsCascaded": "False",
      "IsCredited": "False",
      "IsModified": "False",
      "JoinedName": "Robert Mugabe",
      "Resolution": "720*1280",
      "BillingCity": "Address Line 2",
      "ServiceCode": "DID",
      "ToAccountId": "MTN",
      "TwoFATypeId": "SMS",
      "TxnDateTime": "2024-12-01T21:41:37.2480000+02:00",
      "APMAccountId": "",
      "BillingPhone": "1234567890",
      "BillingState": "",
      "ResponseCode": "0",
      "AmountEURRate": "1",
      "AmountGBPRate": "0.8658658602",
      "AmountUSDRate": "1.1305502954",
      "BusinessModel": "Sports betting",
      "AppVersionCode": "12.34",
      "BillingAddress": "Address Line 1",
      "BillingCountry": "DE",
      "CreditCardHash": "0xDA39A3EE5E6B4B0JJJ1890AFD80709",
      "CurrencyAmount": "123.45",
      "IsModification": "False",
      "OriginalAmount": "100",
      "AccountCurrency": "566",
      "AccountLatitude": "5.3536",
      "BillingLastName": "Mugabe",
      "FingerprintHash": "jhjkhjkhsjh2hjhjkhj2k",
      "TwoFAResponseId": "1",
      "AccountLongitude": "36.1408",
      "AcquirerBankName": "Caixa",
      "BillingFirstName": "Robert",
      "DebuggerAttached": "True",
      "OriginalCurrency": "EUR",
      "SettlementAmount": "100000",
      "SimulatorAttached": "True",
      "TransactionTypeId": "False",
      "IsCurrencyConverted": "False",
      "TransactionResultId": "1006",
      "ToAccountExternalRef": "ChurchmanR",
      "TransactionExternalResponseId": "0"
    },
    "responseElevation": {
      "value": 2.0,
      "redirect": "https://www.jube.io",
      "foreColor": "#fb0707",
      "backColor": "#f5f2cb",
      "content": "Declined for \"VolumeThresholdByAccountId\"",
      "createdDate": "2026-02-20T09:19:46.0658815+02:00"
    },
    "r": 0.0,
    "createdDate": "2026-02-20T09:19:46.0732995+02:00",
    "entityAnalysisModelGuid": "90c425fd-101a-420b-91d1-cb7a24a969cc",
    "entityAnalysisModelName": "Detailed_Account_Financial_Transactions",
    "entityAnalysisModelInstanceGuid": "00000000-0000-0000-0000-000000000000",
    "entityAnalysisModelInstanceEntryGuid": "909c1cac-de56-4f02-ab55-f514df3c1f6d",
    "entityInstanceEntryId": "0987654321",
    "responseElevationLimit": 10.0,
    "referenceDate": "2024-12-01T21:41:37.248",
    "archiveEnqueueDate": "2026-02-20T09:19:46.4475738+02:00",
    "matchedGatewayRule": true,
    "prevailingEntityAnalysisModelActivationRuleId": 5,
    "entityAnalysisModelActivationRuleCount": 2,
    "dictionary": {
      "VolumeThresholdByAccountId": 0.0
    },
    "ttlCounter": {
      "TtlCounterAll": 0
    },
    "sanction": {
      "FuzzyMatchDistance2JoinedName": 0.0
    },
    "abstraction": {
      "ResponseCodeEqual0Volume": 1111.0500000000002,
      "NotResponseCodeEqual0Volume": 0.0
    },
    "abstractionCalculation": {
      "ResponseCodeVolumeRatio": 0.0
    },
    "httpAdaptation": {},
    "exhaustiveAdaptation": {},
    "activation": {
      "ThresholdSanctionsDistance": {
        "visible": true
      },
      "VolumeThresholdByAccountId": {
        "visible": true
      },
      "IncrementTtlCounterAll": {
        "visible": false
      }
    },
    "createCase": {
      "caseWorkflowGuid": "957c6ab0-ef2b-4d06-a7a5-e923762dd917",
      "caseWorkflowStatusGuid": "faf5c83a-5c3e-4a62-b224-aea9e2e1efa6",
      "caseKeyValue": "Test20",
      "caseKey": "AccountId",
      "suspendBypass": false,
      "suspendBypassDate": "2026-02-20T09:19:46.3793539+02:00"
    },
    "tag": {},
    "invokeTaskPerformance": {
      "computeTimes": {
        "parse": 48677,
        "inlineFunction": 79002,
        "inlineScript": 86319,
        "gateway": 88247,
        "sanctionsAsync": 117393,
        "dictionaryKvPsAsync": 100138,
        "ttlCountersAsync": 117850,
        "abstractionRulesWithSearchKeysAsync": 186838,
        "readTasksPerformance": {
          "sanctionsAsync": {
            "computeTime": 11839960,
            "memory": 27349
          },
          "dictionaryKvPsAsync": {
            "computeTime": 1624,
            "memory": 10131
          },
          "ttlCountersAsync": {
            "computeTime": 2603136,
            "memory": 29327
          },
          "abstractionRulesWithSearchKeysAsync": {
            "computeTime": 83912,
            "memory": 96653
          }
        },
        "joinReadTasks": 188121,
        "executeAbstractionRulesWithoutSearchKey": 189938,
        "executeAbstractionCalculation": 192925,
        "executeExhaustiveAdaptation": 194053,
        "executeHttpAdaptation": 196472,
        "executeActivation": 325799,
        "joinWriteTasks": 327992,
        "writeTasksPerformance": {
          "cachePayloadLatestUpsertAsync": {
            "computeTime": 20680,
            "memory": 34383
          },
          "cachePayloadInsertAsync": {
            "computeTime": 9480,
            "memory": 11739
          },
          "cacheTtlCounterEntryUpsertAsync": {
            "computeTime": 688,
            "memory": 2816
          },
          "cacheTtlCounterEntryIncrementAsync": {
            "computeTime": 656,
            "memory": 2800
          }
        }
      },
      "memory": 8860472
    }
  }
}

Case Workflow Form:

{
  "id" : 11,
  "createdDate" : "2026-02-20T15:57:53.703344+02:00",
  "createdUser" : "Administrator",
  "caseKey" : "AccountId",
  "caseId" : 1,
  "caseWorkflowFormId" : 1,
  "caseKeyValue" : "Test20",
  "payload" : {
    "ExampleTextboxElement" : "Test"
  },
  "caseWorkflowFormName" : "ExampleForm",
  "case" : {
    "id" : 1,
    "entityAnalysisModelInstanceEntryGuid" : "909c1cac-de56-4f02-ab55-f514df3c1f6d",
    "diaryDate" : "2026-02-20T07:19:46",
    "caseWorkflowGuid" : "957c6ab0-ef2b-4d06-a7a5-e923762dd917",
    "caseWorkflowStatusGuid" : "3ff54c93-ad25-46e7-a1aa-9efa488f928e",
    "createdDate" : "2026-02-20T09:19:46.526214",
    "locked" : 0,
    "lockedUser" : "",
    "closedStatusId" : 0,
    "caseKey" : "AccountId",
    "diary" : 0,
    "rating" : 1,
    "caseKeyValue" : "Test20",
    "caseWorkflowStatus" : "Fraudulent",
    "payload" : {
      "payload" : {
        "IP" : "Test",
        "OS" : "Lollypop",
        "MAC" : "94:23:44f:2:d3",
        "OTP" : "466923",
        "Is3D" : "False",
        "Brand" : "ZTE",
        "Email" : "[email protected]",
        "IsAPM" : "True",
        "Model" : "Barby",
        "TxnId" : "0987654321",
        "BankId" : "57",
        "System" : "Android",
        "OrderId" : "10607324128",
        "Storage" : "True",
        "Currency" : "826",
        "DeviceId" : "OlaRoseGoldPhone3",
        "IsRebill" : "False",
        "AccountId" : "Test20",
        "AmountEUR" : "100",
        "AmountGBP" : "86.5866",
        "AmountUSD" : "113.055",
        "ChannelId" : "1",
        "Jailbreak" : "True",
        "ActionDate" : "2019-04-17T04:18:15.0000000+03:00",
        "BillingZip" : "123456",
        "IsCascaded" : "False",
        "IsCredited" : "False",
        "IsModified" : "False",
        "JoinedName" : "Robert Mugabe",
        "Resolution" : "720*1280",
        "BillingCity" : "Address Line 2",
        "ServiceCode" : "DID",
        "ToAccountId" : "MTN",
        "TwoFATypeId" : "SMS",
        "TxnDateTime" : "2024-12-01T21:41:37.2480000+02:00",
        "APMAccountId" : "",
        "BillingPhone" : "1234567890",
        "BillingState" : "",
        "ResponseCode" : "0",
        "AmountEURRate" : "1",
        "AmountGBPRate" : "0.8658658602",
        "AmountUSDRate" : "1.1305502954",
        "BusinessModel" : "Sports betting",
        "AppVersionCode" : "12.34",
        "BillingAddress" : "Address Line 1",
        "BillingCountry" : "DE",
        "CreditCardHash" : "0xDA39A3EE5E6B4B0JJJ1890AFD80709",
        "CurrencyAmount" : "123.45",
        "IsModification" : "False",
        "OriginalAmount" : "100",
        "AccountCurrency" : "566",
        "AccountLatitude" : "5.3536",
        "BillingLastName" : "Mugabe",
        "FingerprintHash" : "jhjkhjkhsjh2hjhjkhj2k",
        "TwoFAResponseId" : "1",
        "AccountLongitude" : "36.1408",
        "AcquirerBankName" : "Caixa",
        "BillingFirstName" : "Robert",
        "DebuggerAttached" : "True",
        "OriginalCurrency" : "EUR",
        "SettlementAmount" : "100000",
        "SimulatorAttached" : "True",
        "TransactionTypeId" : "False",
        "IsCurrencyConverted" : "False",
        "TransactionResultId" : "1006",
        "ToAccountExternalRef" : "ChurchmanR",
        "TransactionExternalResponseId" : "0"
      },
      "responseElevation" : {
        "value" : 2.0,
        "redirect" : "https://www.jube.io",
        "foreColor" : "#fb0707",
        "backColor" : "#f5f2cb",
        "content" : "Declined for \"VolumeThresholdByAccountId\"",
        "createdDate" : "2026-02-20T09:19:46.0658815+02:00"
      },
      "r" : 0.0,
      "createdDate" : "2026-02-20T09:19:46.0732995+02:00",
      "entityAnalysisModelGuid" : "90c425fd-101a-420b-91d1-cb7a24a969cc",
      "entityAnalysisModelName" : "Detailed_Account_Financial_Transactions",
      "entityAnalysisModelInstanceGuid" : "00000000-0000-0000-0000-000000000000",
      "entityAnalysisModelInstanceEntryGuid" : "909c1cac-de56-4f02-ab55-f514df3c1f6d",
      "entityInstanceEntryId" : "0987654321",
      "responseElevationLimit" : 10.0,
      "referenceDate" : "2024-12-01T21:41:37.248",
      "archiveEnqueueDate" : "2026-02-20T09:19:46.4475738+02:00",
      "matchedGatewayRule" : true,
      "prevailingEntityAnalysisModelActivationRuleId" : 5,
      "entityAnalysisModelActivationRuleCount" : 2,
      "dictionary" : {
        "VolumeThresholdByAccountId" : 0.0
      },
      "ttlCounter" : {
        "TtlCounterAll" : 0
      },
      "sanction" : {
        "FuzzyMatchDistance2JoinedName" : 0.0
      },
      "abstraction" : {
        "ResponseCodeEqual0Volume" : 1111.0500000000002,
        "NotResponseCodeEqual0Volume" : 0.0
      },
      "abstractionCalculation" : {
        "ResponseCodeVolumeRatio" : 0.0
      },
      "httpAdaptation" : { },
      "exhaustiveAdaptation" : { },
      "activation" : {
        "IncrementTtlCounterAll" : {
          "visible" : false
        },
        "VolumeThresholdByAccountId" : {
          "visible" : true
        },
        "ThresholdSanctionsDistance" : {
          "visible" : true
        }
      },
      "createCase" : {
        "caseWorkflowGuid" : "957c6ab0-ef2b-4d06-a7a5-e923762dd917",
        "caseWorkflowStatusGuid" : "faf5c83a-5c3e-4a62-b224-aea9e2e1efa6",
        "caseKeyValue" : "Test20",
        "caseKey" : "AccountId",
        "suspendBypass" : false,
        "suspendBypassDate" : "2026-02-20T09:19:46.3793539+02:00"
      },
      "tag" : { },
      "invokeTaskPerformance" : {
        "computeTimes" : {
          "parse" : 48677,
          "inlineFunction" : 79002,
          "inlineScript" : 86319,
          "gateway" : 88247,
          "sanctionsAsync" : 117393,
          "dictionaryKvPsAsync" : 100138,
          "ttlCountersAsync" : 117850,
          "abstractionRulesWithSearchKeysAsync" : 186838,
          "readTasksPerformance" : {
            "sanctionsAsync" : {
              "computeTime" : 11839960,
              "memory" : 27349
            },
            "dictionaryKvPsAsync" : {
              "computeTime" : 1624,
              "memory" : 10131
            },
            "ttlCountersAsync" : {
              "computeTime" : 2603136,
              "memory" : 29327
            },
            "abstractionRulesWithSearchKeysAsync" : {
              "computeTime" : 83912,
              "memory" : 96653
            }
          },
          "joinReadTasks" : 188121,
          "executeAbstractionRulesWithoutSearchKey" : 189938,
          "executeAbstractionCalculation" : 192925,
          "executeExhaustiveAdaptation" : 194053,
          "executeHttpAdaptation" : 196472,
          "executeActivation" : 325799,
          "joinWriteTasks" : 327992,
          "writeTasksPerformance" : {
            "cachePayloadLatestUpsertAsync" : {
              "computeTime" : 20680,
              "memory" : 34383
            },
            "cachePayloadInsertAsync" : {
              "computeTime" : 9480,
              "memory" : 11739
            },
            "cacheTtlCounterEntryUpsertAsync" : {
              "computeTime" : 688,
              "memory" : 2816
            },
            "cacheTtlCounterEntryIncrementAsync" : {
              "computeTime" : 656,
              "memory" : 2800
            }
          }
        },
        "memory" : 8860472
      }
    }
  }
}