Need to remove a user from specific group if users not logged in 3o days

varma2
Mega Sage

Hi All,

 

Need to remove a user from specific group if users not logged in 3o days.

Ex : I have group called ( ITSM_Group ) in that group we have multiple users, If any user not logged in more than 30days we need to remove the user from the group.

Please suggest,

Thanks ALL,

 

1 ACCEPTED SOLUTION

Hi,

You can try this as well for better optimization

var arr = [];

var gr = new GlideRecord("sys_user");
var gdt = new GlideDateTime();
gdt.addDays(-30);// User not logged in 30 days
gr.addQuery("last_login_time","<=",gdt);
gr.addActiveQuery();
gr.query();
while(gr.next()){
	arr.push(gr.getUniqueValue());
}

var grp = new GlideRecord("sys_user_grmember");
grp.addQuery("user", "IN", arr.toString());
grp.addQuery("group", "b85d44954a3623120004689b2d5dd60a");
grp.query();
grp.deleteMultiple();

Regards
Ankur

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

View solution in original post

9 REPLIES 9

Ankur Bawiskar
Tera Patron
Tera Patron

Hi,

either use daily schedule job or flow designer with no script and make it run daily

Example using Flow Designer

Remember to save and activate the flow

find_real_file.png

find_real_file.png

Regards
Ankur

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

Hi Ankur,

We dont use flow designer below script works but it allows to delete one record at a time, but we have multiple record to delelte.

var gr = new GlideRecord("sys_user");
var gdt = new GlideDateTime();
gdt.addDays(-30);// User not logged in 30 days
gr.addQuery("last_login_time","<=",gdt);
gr.addActiveQuery();
gr.query();
gs.info("row------"+gr.getRowCount());
while(gr.next()){
var grp=new GlideRecord("sys_user_grmember");
grp.addQuery("user",gr.sys_id);
grp.query();
while(grp.next()){
if(grp.group=='b85d44954a3623120004689b2d5dd60a'){ // Your Group sys_id
gs.info("Group member rowcount---"+grp.user.name); // No of user not logged in 30 days
}
}
}

 

Please suggest,

Hi,

update as this

var gr = new GlideRecord("sys_user");
var gdt = new GlideDateTime();
gdt.addDays(-30);// User not logged in 30 days
gr.addQuery("last_login_time","<=",gdt);
gr.addActiveQuery();
gr.query();
while(gr.next()){
    var grp = new GlideRecord("sys_user_grmember");
    grp.addQuery("user",gr.sys_id);
    grp.addQuery("group", "b85d44954a3623120004689b2d5dd60a");
    grp.query();
    if(grp.next())
        grp.deleteRecord();
}

Regards
Ankur

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

Hi,

You can try this as well for better optimization

var arr = [];

var gr = new GlideRecord("sys_user");
var gdt = new GlideDateTime();
gdt.addDays(-30);// User not logged in 30 days
gr.addQuery("last_login_time","<=",gdt);
gr.addActiveQuery();
gr.query();
while(gr.next()){
	arr.push(gr.getUniqueValue());
}

var grp = new GlideRecord("sys_user_grmember");
grp.addQuery("user", "IN", arr.toString());
grp.addQuery("group", "b85d44954a3623120004689b2d5dd60a");
grp.query();
grp.deleteMultiple();

Regards
Ankur

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

Hi Ankur,

 

What ever code your provided looks works, But with same requirement we need acheve  some other way, I have submit one more question  could you please look at this.

https://community.servicenow.com/community?id=community_question&sys_id=ea5b781d1b205150cd3b33bc1d4b...

 

Thanks a lot.