Remove user from group if they don't have existing journey

preethigovi
Tera Contributor

Hi Team,

 

Iam adding Journey owner to one of the groups.

I need to check if user has any journey in draft completed state if yes do nothing

or if journey is in cancelled completed state remove them from group.

 

User can have mixed states of Journey.

 

preethigovi_0-1729767291092.png

 

1 ACCEPTED SOLUTION

Harsh_Deep
Giga Sage
Giga Sage

Hello @preethigovi ,

 

Please write this fix script-

var groupSysId ='c88e9defc31d92d0d1455ebeb001319d';  // Replace with the sys_id of the group
    var groupMembers = new GlideRecord('sys_user_grmember');
   // groupMembers.addQuery('group', groupSysId);
    groupMembers.addEncodedQuery('group=c88e9defc31d92d0d1455ebeb001319d');  // Query all members of the group
    groupMembers.query();
    while (groupMembers.next()) {
        var userId = groupMembers.user.sys_id.toString();
        groupMembers.setWorkflow(false);
       gs.info('testing' + userId);
       
//gs.print('HR USERS' + Hrprofile.sys_id.toString())
       var a= new sn_jny.testscriptinclude().test(userId,groupMembers);
       if(a==true){
        groupMembers.deleteRecord();
       }
        }

 

and below script include-

var testscriptinclude = Class.create();
testscriptinclude.prototype = {
    initialize: function() {
   
    },
    test:function(userId,groupMembers){
        var activeIncidentCheck = new GlideRecord('sn_jny_journey');
        activeIncidentCheck.addEncodedQuery('manager.user='+ userId +'^state=ready^ORstate=draft');
        //activeIncidentCheck.addQuery('manager', Hrprofile.sys_id.toString());  // Check if the user is the caller
        activeIncidentCheck.query();
   gs.info(activeIncidentCheck.getRowCount());
            if (!activeIncidentCheck.next()) {
                gs.info('members list');
               // groupMembers.deleteRecord();
               return true;
               
    }
    else{
        return false;
    }
    },
    type: 'testscriptinclude'
};

 

Mark Correct if this solves your issue and also mark 👍 Helpful if you find my response worthy based on the impact.

View solution in original post

4 REPLIES 4

preethigovi
Tera Contributor

var groupSysId ='c88e9defc31d92d0d1455ebeb001319d'; // Replace with the sys_id of the group
var groupMembers = new GlideRecord('sys_user_grmember');
groupMembers.addQuery('group', groupSysId); // Query all members of the group
groupMembers.query();

while (groupMembers.next()) {
var userId = groupMembers.user.sys_id.toString();
// gs.print('testing' + userId)

var Hrprofile= new GlideRecord('sn_hr_core_profile');
Hrprofile.addQuery('user',userId);
Hrprofile.query();
while(Hrprofile.next()){

//gs.print('HR USERS' + Hrprofile.sys_id.toString())

var activeIncidentCheck = new GlideRecord('sn_jny_journey');
activeIncidentCheck.addEncodedQuery('stateNOT INdraft,ready');
activeIncidentCheck.addQuery('manager', Hrprofile.sys_id.toString()); // Check if the user is the caller
activeIncidentCheck.query();

if (activeIncidentCheck.next()) {
gs.print('members list' + groupMembers.user.toString());
groupMembers.deleteRecord();

}
}
}

 

Anything wrong

Harsh_Deep
Giga Sage
Giga Sage

Hello @preethigovi ,

 

Please write this fix script-

var groupSysId ='c88e9defc31d92d0d1455ebeb001319d';  // Replace with the sys_id of the group
    var groupMembers = new GlideRecord('sys_user_grmember');
   // groupMembers.addQuery('group', groupSysId);
    groupMembers.addEncodedQuery('group=c88e9defc31d92d0d1455ebeb001319d');  // Query all members of the group
    groupMembers.query();
    while (groupMembers.next()) {
        var userId = groupMembers.user.sys_id.toString();
        groupMembers.setWorkflow(false);
       gs.info('testing' + userId);
       
//gs.print('HR USERS' + Hrprofile.sys_id.toString())
       var a= new sn_jny.testscriptinclude().test(userId,groupMembers);
       if(a==true){
        groupMembers.deleteRecord();
       }
        }

 

and below script include-

var testscriptinclude = Class.create();
testscriptinclude.prototype = {
    initialize: function() {
   
    },
    test:function(userId,groupMembers){
        var activeIncidentCheck = new GlideRecord('sn_jny_journey');
        activeIncidentCheck.addEncodedQuery('manager.user='+ userId +'^state=ready^ORstate=draft');
        //activeIncidentCheck.addQuery('manager', Hrprofile.sys_id.toString());  // Check if the user is the caller
        activeIncidentCheck.query();
   gs.info(activeIncidentCheck.getRowCount());
            if (!activeIncidentCheck.next()) {
                gs.info('members list');
               // groupMembers.deleteRecord();
               return true;
               
    }
    else{
        return false;
    }
    },
    type: 'testscriptinclude'
};

 

Mark Correct if this solves your issue and also mark 👍 Helpful if you find my response worthy based on the impact.

@Harsh_Deep Thank You so much Harsh. It works

Hi @Harsh_Deep,

I have a query that instead of passing each grmember can we pass the list of users in array to script include. and get the managers from script include in form of arrays?

 

Please suggest