The Zurich release has arrived! Interested in new features and functionalities? Click here for more

UI Action for “Run Archive Now” – Getting error with GlideArchiver.runRule

dkgopi123
Tera Contributor

Hi Community,

I am trying to build a custom UI Action on the sys_archive table to trigger an archive rule manually.
My use case is:

  1. First, reassign inactive users to active ones using a custom Script Include UserReassignmentUtil

  2. Then, execute the selected archive rule.

Here’s my script:

(function executeAction(current) {
    try {
        gs.info("Run Archive Now button clicked...");
 
        // --- 1. Reassign inactive users first ---
        var util = new UserReassignmentUtil();   // Your Script Include
        var inactiveUser = new GlideRecord("sys_user");
        inactiveUser.addQuery("active", false);
        inactiveUser.query();
 
        var count = 0;
gs.info("Inactive user count: " + inactiveUser.getRowCount());
        while (inactiveUser.next()) {
            util.reassignFromInactiveToActive(inactiveUser);
            count++;
        }
 
        if (count > 0) {
            gs.addInfoMessage("Reassignment executed successfully for " + count + " inactive users.");
        } else {
            gs.addInfoMessage("No inactive users found for reassignment.");
        }
 
        // --- 2. Run Archive Rule after reassignment ---
        if (current && current.getTableName() === "sys_archive") {
            var ruleId = current.sys_id.toString();
            gs.info("Executing archive rule ID: " + ruleId);
 
            var ruleGR = new GlideRecord("sys_archive");
            if (ruleGR.get(ruleId) && ruleGR.active) {
                // GlideArchiver.runRule(ruleId);
var archiver = new GlideArchiveManager();
                archiver.archive(ruleId);
                gs.addInfoMessage("Archive Rule executed successfully for rule: " + current.name);
            } else {
                gs.addErrorMessage("Archive Rule is inactive or not found.");
            }
        } else {
            gs.addErrorMessage("This UI Action must be run from the Archive Rule record form.");
        }
 
    } catch (e) {
        gs.error("Error in Run Archive Now: " + e);
        gs.addErrorMessage("Failed to reassign users or run archive rule. Check logs for details.");
    }
})(current);
 

When I click the Run Archive Now button, I get the errors in log I have attached please have a look.

 

My Questions:

  1. Is GlideArchiver.runRule(ruleId) no longer supported?

  2. What is the correct API to programmatically trigger an archive rule from a script/UI Action?

  3. Is GlideArchiveManager().archive(ruleId) the recommended approach in recent versions?

Any guidance or examples would be greatly appreciated. 🙏

 

0 REPLIES 0