Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

No longer required sometimes work sometimes not

shruti2bhosale
Tera Contributor
(function executeRule(current, previous /*null when async*/ ) {

    var ritm = current.parent;

    var approver = new GlideRecord('sysapproval_approver');
    approver.addQuery('document_id', ritm);
    approver.addQuery('state', 'approved');
    approver.query();
    while (approver.next()) {
        var user = [];
        user = approver.approver;
        gs.log('user-' + user);
    }

    var userGroup = new GlideRecord('sys_user_grmember');
    userGroup.addQuery('user', 'IN', user);
    userGroup.query();
    var groupSysIds = [];
    while (userGroup.next()) {
        var grpsysid = userGroup.getValue('group');
        gs.log('grpsysid -' + grpsysid);
        groupSysIds.push(grpsysid);
    }

    var foundGroup = false;
    for (var i = 0; i < groupSysIds.length; i++) {
        if (groupSysIds[i] == current.assignment_group) {
            foundGroup = true;
            break;
        }
    }

    if (foundGroup) {
        current.active = false;
        current.approval = 'not_required';
        current.short_description = 'Skipped due to duplicates';
        current.work_notes = "Group Approval marked as 'No Longer Required' due to a previous approval on the same record by the same user.";
    } else {

        gs.log('No group approvals to update.');

    }


wrote this script to update the state to no longer required but it works some times and sometimes not
1 REPLY 1

Chaitanya ILCR
Mega Patron

Hi @shruti2bhosale.,

Try this

(function executeRule(current, previous /*null when async*/ ) {
    var ritm = current.parent;

    var approver = new GlideRecord('sysapproval_approver');
    approver.addQuery('document_id', ritm);
    approver.addQuery('state', 'approved');
    approver.query();
    var user = [];
    while (approver.next()) {
        user.push(approver.approver.toString());
        gs.log('user-' + approver.approver);
    }

    if (user.length > 0) {
        var userGroup = new GlideRecord('sys_user_grmember');
        userGroup.addQuery('user', 'IN', user);
        userGroup.query();
        var groupSysIds = [];
        while (userGroup.next()) {
            var grpsysid = userGroup.getValue('group');
            gs.log('grpsysid -' + grpsysid);
            groupSysIds.push(grpsysid);
        }

        var foundGroup = false;
        for (var i = 0; i < groupSysIds.length; i++) {
            if (groupSysIds[i] == current.assignment_group.toString()) {
                foundGroup = true;
                break;
            }
        }

        if (foundGroup) {
            current.active = false;
            current.approval = 'not_required';
            current.short_description = 'Skipped due to duplicates';
            current.work_notes = "Group Approval marked as 'No Longer Required' due to a previous approval on the same record by the same user.";
        } else {
            gs.log('No group approvals to update.');
        }
    } else {
        gs.log('No approved users found.');
    }
})(current, previous);

Please mark my answer as helpful/correct if it resolves your query.

Regards,
Chaitanya