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.

How to delete multiple User Relationships record in workflow runscript ?

ads
Tera Expert

Hi All,

I want to delete multiple record in the User Relationship table by getting the ci from the variable in the cat item and users from a list collector type variable. I used the below run script, Its not deleting the multiple record. Can anyone help me on this ?

var dataCenter = current.variables.data_centre;

if (type == 'Remove access') {
    var removeRel = current.variables.please_select_person_to_remove.toString().split(',');//list collector type variable
    for (var i = 0; i < removeRel.length; i++) {
 
        var userGR = new GlideRecord('sys_user');
        userGR.addQuery('sys_id', removeRel[i]);
        userGR.query();
        if (userGR.next()) {
 
            var relDelete = new GlideRecord("cmdb_rel_person");
            relDelete.addQuery('ci', dataCenter);
            relDelete.addQuery('user', userGR.sys_id);
            relDelete.query();
            while (relDelete.next()) {
                relDelete.deleteRecord();
            }
        }
    }
}
 
13 REPLIES 13

Prabu Velayutha
Mega Sage

Hi @ads 

 

Instead of  relDelete.deleteRecord() try relDelete.deleteMultiple()

 

If my response helps to solve your issue. Kindly mark it as helpful & correct.

 

Hi, I have tried with both , its not working.

SP22
Giga Sage

Hi @ads 

 

Please find the below code and let me know whether it useful or not.

var dataCenter = current.variables.data_centre;
if (type == 'Remove access') {
    var removeRel = current.variables.please_select_person_to_remove.toString().split(',');
    for (var i = 0; i < removeRel.length; i++) {
        var userGR = new GlideRecord('sys_user');
        if (userGR.get(removeRel[i])) { // Use get() to directly retrieve the record
            var relDelete = new GlideRecord("cmdb_rel_person");
            relDelete.addQuery('ci', dataCenter);
            relDelete.addQuery('user', userGR.sys_id);
            relDelete.query();
            while (relDelete.next()) {
                relDelete.deleteRecord();
            }
        }
    }
}

 

Thanks
SP

ads
Tera Expert

Hi, Tried with the above code, Its not working.

SP22
Giga Sage
var dataCenter = current.variables.data_centre;
if (type == 'Remove access') {
    var removeRel = current.variables.please_select_person_to_remove.toString().split(',');
    for (var i = 0; i < removeRel.length; i++) {
        var userGR = new GlideRecord('sys_user');
        if (userGR.get(removeRel[i])) {
            var relDelete = new GlideRecord("cmdb_rel_person");
            relDelete.addQuery('ci', dataCenter);
            relDelete.addQuery('user', userGR.sys_id);
            relDelete.query();
            while (relDelete.next()) {
                relDelete.deleteRecord();
            }
        } else {
            gs.info("User not found with sys_id: " + removeRel[i]);
        }
    }
}

Try with above code.