Welcome to Zuora Product Documentation

Explore our rich library of product information

Retrieve Custom Logic changes

Learn how to retrieve auditing records of changes to Custom Logic objects, including decision tables, decision trees, and functions, using a data query.

The following use case retrieves the auditing records of changes to the Custom Logic objects, including decision tables, decision trees, and functions.

  1. Submit a data query through UI or API with the following SQL query:
    SELECT username    AS Username,
           action      AS Action,
           objecttype  AS ObjectType,
           objectname  AS ObjectName,
           attributeid AS Attribute,
           oldvalue    AS OldValue,
           newvalue    AS NewValue,
           timestamp   AS Timestamp
    FROM   auditobjectchangeevent
    WHERE  namespace = 'com.zuora.custom.logic'
           AND year = 2025
           AND month = 7
    ORDER  BY timestamp DESC 
    LIMIT  100000
  2. Check the status of the query job through UI or Get data query job API operation.
  3. Download the query result when the job is completed. See the following example of the query result.
    Username,Action,ObjectType,ObjectName,Attribute,OldValue,NewValue,Timestamp
    user@zuora.com,CREATED,CustomLogicDecisionTable,Invoice,Name,,Amount Check,2025-07-16T20:59:30.683Z
    user@zuora.com,CREATED,CustomLogicDecisionTable,Invoice,Effective End Date & Time,,2025-07-31 10:00:00,2025-07-16T20:59:30.683Z
    user@zuora.com,CREATED,CustomLogicDecisionTable,Invoice,modifiedOn,,2025-07-16 20:59:29,2025-07-16T20:59:30.683Z
    user@zuora.com,CREATED,CustomLogicDecisionTable,Invoice,enabledOn,,2038-01-01 00:00:00,2025-07-16T20:59:30.683Z
    user@zuora.com,CREATED,CustomLogicDecisionTable,Invoice,createdOn,,2025-07-16 20:59:29,2025-07-16T20:59:30.683Z
    user@zuora.com,CREATED,CustomLogicDecisionTable,Invoice,Effective Start Date & Time,,2025-07-01 10:00:00,2025-07-16T20:59:30.683Z
    user@zuora.com,CREATED,CustomLogicDecisionTable,Invoice,ruleBody,,"//$START======================================\nrule ""Amount Check_1""\nsalience 2\nno-loop true\nwhen\n  \t$_invoice : Invoice ($__idInvoice : __id , AccountBoolean__c == """")\nthen\n \tmodify($_invoice) { AccountBoolean__c = """" ; }\nend\n//--------------------------------------------\n\n//$END========================================\n",2025-07-16T20:59:30.683Z
    user@zuora.com,UPDATED,CustomLogicDecisionTree,Invoice,modifiedOn,2025-07-07 20:58:59,2025-07-07 22:33:35,2025-07-07T22:33:35.148Z
    user@zuora.com,UPDATED,CustomLogicDecisionTree,Invoice,enabledOn,2038-01-01 00:00:00,2025-07-07 20:58:58,2025-07-07T20:58:59.875Z
    user@zuora.com,CREATED,CustomLogicFunction,CustomLogicFunction,script,,"((account) => {\n    /* Write your code here\n    * @param account ""Access the object definition via this parameter""\n    */\n})(account);",2025-07-01T04:21:01.272Z
    user@zuora.com,CREATED,CustomLogicFunction,CustomLogicFunction,output,,account,2025-07-01T04:21:01.272Z
    user@zuora.com,CREATED,CustomLogicFunction,CustomLogicFunction,input,,account,2025-07-01T04:21:01.272Z

Currently, the rule body for decision tables and decision trees displays raw code. In an upcoming release, it will be enhanced to show a more intuitive format that aligns with the values displayed in the UI.