Comment
Matt Cordero1
Kilo Sage

Here's an example using the above code snippets.  In this scenario, we want to mark (update) approvals approved when an approver's approval is necessary multiple times (based on approval groups).

NOTE: In this example, current is the Change Request table.

 

var sysapproval_approver = new GlideRecord('sysapproval_approver');
sysapproval_approver.addQuery('sysapproval', current.sys_id); // Filter the approval for this Change Request's sys_id
sysapproval_approver.addQuery('state', 'approved'); // Filter for approval records in the "approved" state
sysapproval_approver.orderByDesc('sys_updated_on'); // Order by Descending order (get latest)
sysapproval_approver.setLimit(1);  // Set limit to 1 record (TOP 1 result)
sysapproval_approver.query();
if (sysapproval_approver.next()) {
    // Get the most recent Approver for this Change Request record
    var approver = sysapproval_approver.approver;  // sys_id of the approver from the sysapproval_approver table
   
    sysapproval_approver = new GlideRecord('sysapproval_approver');
    sysapproval_approver.addQuery('sysapproval', current.sys_id); // Filter the approval for this Change Request's sys_id
    sysapproval_approver.addQuery('approver', approver); // Filter the approval records for this approver
    sysapproval_approver.addQuery('state', 'requested'); // Filter for approval records in the "requested" state
    sysapproval_approver.query();
    while (sysapproval_approver.next()) {      
        sysapproval_approver.state = 'approved';
       
        sysapproval_approver.autoSysFields(false);  // Skip auto system update fields.
        sysapproval_approver.setWorkflow(false); // Skip/Prevent workflow from running.
        sysapproval_approver.setUseEngines(false); // Bypass data policies for updating read-only fields.
        sysapproval_approver.update(); // Update the record.
    }
	
	var wf = new Workflow();
	wf.runFlows(current, "update"); // the update is just going to look for your changes.
}

 

Using the above script we were able to achieve the desired result of having an approver's approval marked as approved, upon approval.  Even when that approver's approval was required multiple times.