Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Moving last record from one table to another based using Schedule job.

Pratham Singh
Tera Contributor

I have 2 table named as User Attendance and User Tracking. In my User tracking table I have multiple records of the user, so from the user tracking table I want that my last record of the current day should be updated in the User Attendance table. How can I achieve this?

1 ACCEPTED SOLUTION

Ayush Mishra2
Tera Expert

You can achieve this using the below server side code

CODE - 

var userTrackingGR = new GlideRecord('u_user_tracking'); 
var startOfDay = new GlideDateTime();
startOfDay.setDisplayValue(gs.beginningOfToday());

var endOfDay = new GlideDateTime();
endOfDay.setDisplayValue(gs.endOfToday());
userTrackingGR.addQuery('sys_created_on', '>=', startOfDay);
userTrackingGR.addQuery('sys_created_on', '<=', endOfDay);
userTrackingGR.orderByDesc('sys_created_on');
userTrackingGR.query();

var lastRecordByUser = {};
while (userTrackingGR.next()) {
var userId = userTrackingGR.getValue('user');
if (!lastRecordByUser[userId]) {
lastRecordByUser[userId] = userTrackingGR.getUniqueValue();
}
}
for (var userId in lastRecordByUser) {
var userAttendanceGR = new GlideRecord('u_user_attendance'); 

userAttendanceGR.addQuery('user', userId);
userAttendanceGR.query();

if (userAttendanceGR.next()) {
userAttendanceGR.setValue('last_tracking_record', lastRecordByUser[userId]); 
userAttendanceGR.update();
} else {
userAttendanceGR.initialize();
userAttendanceGR.setValue('user', userId); 
userAttendanceGR.setValue('last_tracking_record', lastRecordByUser[userId]); 
userAttendanceGR.insert();
}
}


PLEASE MARK MY ANSWER HELPFUL

View solution in original post

2 REPLIES 2

Ayush Mishra2
Tera Expert

You can achieve this using the below server side code

CODE - 

var userTrackingGR = new GlideRecord('u_user_tracking'); 
var startOfDay = new GlideDateTime();
startOfDay.setDisplayValue(gs.beginningOfToday());

var endOfDay = new GlideDateTime();
endOfDay.setDisplayValue(gs.endOfToday());
userTrackingGR.addQuery('sys_created_on', '>=', startOfDay);
userTrackingGR.addQuery('sys_created_on', '<=', endOfDay);
userTrackingGR.orderByDesc('sys_created_on');
userTrackingGR.query();

var lastRecordByUser = {};
while (userTrackingGR.next()) {
var userId = userTrackingGR.getValue('user');
if (!lastRecordByUser[userId]) {
lastRecordByUser[userId] = userTrackingGR.getUniqueValue();
}
}
for (var userId in lastRecordByUser) {
var userAttendanceGR = new GlideRecord('u_user_attendance'); 

userAttendanceGR.addQuery('user', userId);
userAttendanceGR.query();

if (userAttendanceGR.next()) {
userAttendanceGR.setValue('last_tracking_record', lastRecordByUser[userId]); 
userAttendanceGR.update();
} else {
userAttendanceGR.initialize();
userAttendanceGR.setValue('user', userId); 
userAttendanceGR.setValue('last_tracking_record', lastRecordByUser[userId]); 
userAttendanceGR.insert();
}
}


PLEASE MARK MY ANSWER HELPFUL

Thankyou for the solution.