deactivate user

BanuMahalakshmi
Tera Contributor

Hi,

 

Assigned to field is list collector data type. when active value changes into false into sys_user table, the value should deactivate into assigned_to field also(cmdb_Ci table). I have tried the below script but it removed all assigned_to field value. pls let me know the changes in the script. Thanks.

 

BanuMahalakshmi_0-1721809357691.png

 

 

  var assignee = new GlideRecord('cmdb_ci');
    assignee .addQuery("assigned_to", '=', current.sys_id.toString());
    assignee .query();
    while (assignee .next()) {
        assignee .assigned_to = "";
        assignee .update();
    }
1 ACCEPTED SOLUTION

Mark Manders
Tera Patron

A list field contains the comma separated sys_id's of the users and you are setting the entire field to 'empty', so that's just doing exactly what you explain it does.

 

Try something like this:

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

        var userSysId = current.sys_id.toString();
        var cmdbCiGr = new GlideRecord('cmdb_ci');
        cmdbCiGr.addQuery('assigned_to', 'CONTAINS', userSysId);
        cmdbCiGr.query();
        
        while (cmdbCiGr.next()) {
            var assignedTo = cmdbCiGr.getValue('assigned_to');
            var assignedToArray = assignedTo.split(',');

            // Remove the inactive user's sys_id from the assigned_to list
            var index = assignedToArray.indexOf(userSysId);
            if (index > -1) {
                assignedToArray.splice(index, 1);
                cmdbCiGr.setValue('assigned_to', assignedToArray.join(','));
                cmdbCiGr.update();
            }
        }
    
})(current, previous);

 

View solution in original post

10 REPLIES 10

Thanks, its resolved by declaring in the beginning and end of the script.

   var approverarray = [];
    var index = -1;