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
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
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
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.