An exception occurs in SAS® OnDemand Decision Engine when a V segment key in a transaction contains Unicode characters


On Oracle and IBM DB2 systems that are configured for UTF-8 and the database stored procedures are enabled, SAS OnDemand Decision Engine reports the following error when there are Unicode characters in the V segment keys:

2025-04-16T15:50:33,494 [Engine  1] WARN  TRANSACTION_FAILED elapsed=177.4ms cmx_tran_id=0032014037119450 smh_acct_type="CS" smh_activity_type="CA" smh_rtn_code="12" smh_reason_code="ERRR"
java.lang.AssertionError: null
    at com.sas.finance.fraud.engine.meh.sql.UpdateStoredProc$Update.createUpdateObject
(UpdateStoredProc.java:132)

~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]
    at com.sas.finance.fraud.engine.meh.sql.UpdateStoredProc$Update.
createUpdatesArray(UpdateStoredProc.java:191)

~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]
    at com.sas.finance.fraud.engine.meh.sql.UpdateStoredProc$Update.execute
(UpdateStoredProc.java:226)

~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]
    at com.sas.finance.fraud.engine.meh.sql.UpdateStoredProc.update
(UpdateStoredProc.java:96)

~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]
    at com.sas.finance.fraud.engine.meh.sql.SQLMEHConnection.updateStore
(SQLMEHConnection.java:843)

~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]
    at com.sas.finance.fraud.engine.meh.MEHConnection.store
(MEHConnection.java:211)

~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]
    at com.sas.finance.fraud.engine.action.MehStoreAction.execute
(MehStoreAction.java:36)

~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]
    at com.sas.finance.fraud.engine.client.action.ActionList.execute
(ActionList.java:40)

~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]
    at com.sas.finance.fraud.engine.client.action.FieldActionMap$MapMatcher.matches
(FieldActionMap.java:90)

~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]
    at com.sas.finance.fraud.engine.client.action.FieldPredicate.evaluate0
(FieldPredicate.java:78)

~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]
    at com.sas.finance.fraud.engine.client.action.Predicate.evaluate
(Predicate.java:62)

~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]
    at com.sas.finance.fraud.engine.client.action.Predicate.execute
(Predicate.java:58)

~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]
    at com.sas.finance.fraud.engine.client.action.ActionList.execute
(ActionList.java:40)

~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]
    at com.sas.finance.fraud.engine.action.TryAction.execute
(TryAction.java:31)

~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]
    at com.sas.finance.fraud.engine.client.utils.ElapsedTimeStats.execute
(ElapsedTimeStats.java:60)

~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]
    at com.sas.finance.fraud.engine.ServerTransaction.run_
(ServerTransaction.java:393)

~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]
    at com.sas.finance.fraud.engine.ServerTransaction.run
(ServerTransaction.java:449)

~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]
    at java.util.concurrent.ThreadPoolExecutor.runWorker
(ThreadPoolExecutor.java:1128)

~[?:?]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run
(ThreadPoolExecutor.java:628)

~[?:?]
    at java.lang.Thread.run
(Thread.java:829)

~[?:?]
    at com.sas.finance.fraud.engine.client.utils.LoggingThread.run
(LoggingThread.java:28)

~[sas.finance.fraud.engine.jar:602001.3.0.20240903104000_f0rapt62]

In addition, the transaction might not be inserted into the Multi-Entity History (MEH) or the Transaction Data Repository (TDR) databases.  

Workaround

If stored procedures are disabled, the error does not occur. To disable stored procedures, update the ose.xml configuration file to set both the selectStoredProcedureEnabled and the updateStoredProcedureEnabled beans to false.