A SAS® Fraud Management rule is incorrectly saved and the "java.lang.ClassCastException . . . cannot be cast to . . ." error occurs


By default, SAS Fraud Management does not permit saving a rule using the %ACTION_ALERT macro without specifying ALERT_TYPE and QUEUE_ID.

However, if the rule code is copied to the Rules Studio from external text editor and saved in under one second, then the rule can be promoted to the Production folder and then deployed to the OnDemand Decision Engine.

If such a rule fires on a transaction, an error message similar to the following occurs:

2025-11-05T15:52:12,802 [Walk  2] WARN  POST_SCORE_ACTION_FAILED cmx_tran_id=0321548963214785 smh_acct_type="CS" smh_activity_type="CA" smh_rtn_code="12" smh_reason_code="ERRR"  failure_reason="java.lang.ClassCastException: com.sas.finance.fraud.engine.alert.meta.RuleInfo cannot be cast to com.sas.finance.fraud.engine.alert.meta.RuleInfo$AlertRule"

Cause

By default, SAS Fraud Management waits for one second to display the Configure Alerts window.

However, a scenario can occur where an external text editor is used to write the rule code and then copies/pastes the rule code (using the %ACTION_ALERT macro) to the SAS Fraud Management Rule Studio code editor.

If this activity completes in less than one second, then the Configure Alerts window does not appear, and the configuration of ALERT_TYPE and QUEUE_ID is skipped during the rule save action.

Workaround

Configuring the parameter below launches the Configure Alert window in 1 millisecond, which reduces the chance that this issue will occur.

Update the <config_home>/Web/WebAppServer/SASServer8_1/sas_webapps/sas.finserv.frdmgmt6.1
<domain>.war/resources/sas/fscf/views/RulesPageCoding.view.js file as highlighted below:

Original:

        addDelay(setEnabledForAlertConfig,oEditor,1000);

Revised:

        addDelay(setEnabledForAlertConfig,oEditor,1);

 

If you suspect that this issue has occurred, complete these steps to check for and resolve the issue:

  1. Execute the SQL below in the SOR database to check whether any rule using the %ACTION_ALERT macro was in a Production state without specifying ALERT_TYPE/QUEUE_ID:

    select rule_id, base_rule_id, rule_version_nbr, alert_type, queue_id, rule_name, rule_code, lstupdt_user, lstupdt_timestamp

    from FCMCORE.fcm_rule where lower(rule_code) like '%action_alert%' and rule_state = 'Production' and (alert_type =' ' or queue_id is null);   /*It provides list of Production state rules without ALERT_TYPE or QUEUE_ID */


  2. If the SQL query returns rows with rules, then search for the rules on the SAS Fraud Management UI – Rules tab.
  3. Create a new version of the rule and update the ALERT_TYPE and QUEUE_ID using the Configure Alerts window.
  4. Promote the updated rule to the Testing folder and then to the Production folder.
  5. Perform a rule deployment.
  6. Redeploy the OnDemand Decision Engine.