Find your people. Pick a challenge. Ship something real. The CreatorCon Hackathon is coming to the Community Pavilion for one epic night. Every skill level, every role welcome. Join us on May 5th and learn more here.

Trigger event issue

Kaustubh k
Tera Expert

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:

 

 var date1 = new GlideDateTime();
        date1.addDaysUTC(-54);// cut off date to pull th users who are 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&colon;gs.beginningOfLast30Days()^sys_created_on<=javascript&colon;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')+',';
                }
            }
        }
       
  gs.eventQueue('stkh.loggedin',getUserId,usersSysIds,useremail);
 
Thanks in Advance
Karan
1 ACCEPTED SOLUTION

Ankur Bawiskar
Tera Patron

@Kaustubh k 

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&colon;gs.beginningOfLast30Days()^sys_created_on<=javascript&colon;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.

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

View solution in original post

1 REPLY 1

Ankur Bawiskar
Tera Patron

@Kaustubh k 

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&colon;gs.beginningOfLast30Days()^sys_created_on<=javascript&colon;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.

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