How to optimise the fix script on RITM table which is going to update the 8 lakh records ?
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-24-2025 11:59 PM
Hi
I have written below 2 fix scripts which is going to update the 4 fields on RITM table for 8 lakh records fix script is working fine I have tested it in lower instance which having 30k records but I checked the prod it have 8 lakh records so am afraid to run it on prod so I want your suggesting on my below 2 scripts:
Below script is to set the close and closed by fields:
var ritm = new GlideRecord("sc_req_item");
ritm.addEncodedQuery("stateIN3,4,7^active=false^closed_atISEMPTY^ORclosed_byISEMPTY");
ritm.query();
while (ritm.next()) {
var updatedOn = new GlideDateTime(ritm.sys_updated_on);
var user = ritm.sys_updated_by;
var id = new GlideRecord('sys_user');
id.addQuery('user_name', user);
id.query();
while (id.next()) {
ritm.closed_by = id.sys_id; // Closed By
}
ritm.closed_at = updatedOn; // Closed time
ritm.setWorkflow(false);
ritm.autoSysFields(false);
ritm.update();
}
gs.info("Number of records to updated for closed and closed by: "+ritm.getRowCount());
Below script is to set the Duration and Business Duration fields:
var schedule = new GlideSchedule(gs.getProperty('x_og_schedule_id')); // Default calendar of the system (Workday 8:00 - 5:00)
var ritm = new GlideRecord("sc_req_item");
ritm.addEncodedQuery("stateIN3,4,7^active=false^calendar_durationISEMPTY^ORbusiness_durationISEMPTY");
ritm.query();
while (ritm.next()) {
var createdOn = new GlideDateTime(ritm.sys_created_on.getValue());
var closedat = new GlideDateTime(ritm.closed_at.getValue());
var duration = gs.dateDiff(createdOn, closedat, false);
ritm.calendar_duration = duration; // Duration
var opened_at = ritm.opened_at.getGlideObject();
var closed_at = ritm.closed_at.getGlideObject();
var business = schedule.duration(opened_at, closed_at);
ritm.business_duration = business; // Business Duration
ritm.setWorkflow(false);
ritm.autoSysFields(false);
ritm.update();
gs.info("Total Records to update the Duration and Business Duration: "+ritm.getRowCount());
}
5 REPLIES 5
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-28-2025 04:10 AM
Hope you are doing good.
Did my reply answer your question?
If my response helped please mark it correct and close the thread so that it benefits future readers.
Regards,
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader