- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-13-2025 11:19 PM
Hi All,
We have a job which triggers an event and sends notification to users who have not logged in from past 2 months.
I want to trigger an event only if there are users present, else an email should not be triggered.How we can achieve this.
Below is mine script:
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-14-2025 12:39 AM
try this
var date1 = new GlideDateTime();
date1.addDaysUTC(-54); // cut off date to pull the users who have not logged in before 54 days
var usersSysIds = '';
var useremail = '';
var getUserId = new GlideRecord('sys_user'); // Query on user table to get users
getUserId.addEncodedQuery('sys_class_name=sys_user^active=true^last_login_time<=javascript:gs.beginningOfLast30Days()^sys_created_on<=javascript:gs.beginningOfLast30Days()^u_employee_type=GBO Ingka');
getUserId.query();
while (getUserId.next()) {
var date2 = new GlideDateTime();
date2.setValue(getUserId.getValue('last_login_time'));
var createdDate = new GlideDateTime();
createdDate.setValue(getUserId.getValue('sys_created_on'));
if ((GlideDateTime.subtract(date2, date1).getDayPart() > 54) && (GlideDateTime.subtract(createdDate, date1).getDayPart() > 54)) {
var grpMembership = new GlideRecord('sys_user_grmember');
grpMembership.addEncodedQuery('user=' + getUserId.getUniqueValue() + '^group=ca8915b4877ce1108f2b87b6cebb3529');
grpMembership.query();
if (grpMembership.next()) {
usersSysIds += getUserId.getUniqueValue() + ',';
useremail += getUserId.getValue('email') + ',';
}
}
}
// Check if there are any users before triggering the event
if (usersSysIds !== '' && useremail !== '') {
gs.eventQueue('stkh.loggedin', getUserId, usersSysIds, useremail);
}
If my response helped please mark it correct and close the thread so that it benefits future readers.
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-14-2025 12:39 AM
try this
var date1 = new GlideDateTime();
date1.addDaysUTC(-54); // cut off date to pull the users who have not logged in before 54 days
var usersSysIds = '';
var useremail = '';
var getUserId = new GlideRecord('sys_user'); // Query on user table to get users
getUserId.addEncodedQuery('sys_class_name=sys_user^active=true^last_login_time<=javascript:gs.beginningOfLast30Days()^sys_created_on<=javascript:gs.beginningOfLast30Days()^u_employee_type=GBO Ingka');
getUserId.query();
while (getUserId.next()) {
var date2 = new GlideDateTime();
date2.setValue(getUserId.getValue('last_login_time'));
var createdDate = new GlideDateTime();
createdDate.setValue(getUserId.getValue('sys_created_on'));
if ((GlideDateTime.subtract(date2, date1).getDayPart() > 54) && (GlideDateTime.subtract(createdDate, date1).getDayPart() > 54)) {
var grpMembership = new GlideRecord('sys_user_grmember');
grpMembership.addEncodedQuery('user=' + getUserId.getUniqueValue() + '^group=ca8915b4877ce1108f2b87b6cebb3529');
grpMembership.query();
if (grpMembership.next()) {
usersSysIds += getUserId.getUniqueValue() + ',';
useremail += getUserId.getValue('email') + ',';
}
}
}
// Check if there are any users before triggering the event
if (usersSysIds !== '' && useremail !== '') {
gs.eventQueue('stkh.loggedin', getUserId, usersSysIds, useremail);
}
If my response helped please mark it correct and close the thread so that it benefits future readers.
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader