var table = 'custom_table';
var wimNumber = source.u_wim_number;
var pendingStates = ['22']; // Pending
var activeStates = ['19', '20', '21']; // New, Assigned, In Progress
var completedStates = ['23']; // Completed
var notProcessedStates = ['24']; //Not Processed with
var closedStates = ['25']; //Closed
var gr = new GlideRecord(table);
gr.addQuery('u_wim_number', wimNumber);
gr.addQuery('u_channel', 'test');
gr.orderBy('sys_created_on'); // Ascending (oldest first)
gr.query();
var activeRecs = [];
var pendingRecs = [];
var completedRecs = [];
var notProcessedRecs = [];
var closedRecs = [];
var allRecs = [];
while (gr.next()) {
var state = gr.getValue('state');
var rec = {
sys_id: gr.getUniqueValue(),
state: state,
created: gr.getValue('sys_created_on'),
gr: gr //newlyadded
};
allRecs.push(rec); //newlyadded
if (activeStates.includes(state)) {
activeRecs.push(rec);
} else if (pendingStates.includes(state)) {
pendingRecs.push(rec);
} else if (completedStates.includes(state)) {
completedRecs.push(rec);
} else if (notProcessedStates.includes(state)) {
notProcessedRecs.push(rec);
} else if (closedStates.includes(state)) {
closedRecs.push(rec);
}
}
// Helper: get latest record from array
function getLatestRecord(recordList) {
return recordList.sort(function(a, b) {
return new GlideDateTime(b.created).getNumericValue() - new GlideDateTime(a.created).getNumericValue();
})[0];
}
function getOldestRecord(records) {
return records[0];
}
// Case 1: More than one record with Multiple New/In-progress/assigned records → update oldest record
if (activeRecs.length > 1 && pendingRecs.length == 0 && completedRecs.length == 0 && notProcessedRecs.length == 0 && closedRecs.length == 0) {
var oldestActive = getOldestRecord(activeRecs);
//var oldestActive = activeRecs[0];
var gr1 = new GlideRecord(table);
if (gr1.get(oldestActive.sys_id)) {
gr1.work_notes = "Advising of an update that has come through from test.";
gr1.update();
}
return;
}
// Case 2: One or More Completed + Pending → update oldest pending state to Assigned
if (pendingRecs.length > 0 && completedRecs.length > 0 && notProcessedRecs.length == 0 && closedRecs.length == 0 && activeRecs.length == 0) {
var pendingRec = getOldestRecord(pendingRecs);
//var pendingRec = pendingRecs[0];
var gr2 = new GlideRecord(table);
if (gr2.get(pendingRec.sys_id)) {
gr2.state = 20;
gr2.work_notes = "Please check test for Update ";
gr2.update();
}
return;
}
// Case 3: One or More Completed → update oldest completed with state and worknotes
if (completedRecs.length > 0 && pendingRecs.length == 0 && notProcessedRecs.length == 0 && closedRecs.length == 0 && activeRecs.length == 0) {
//var oldestCompleted = completedRecs[0];
var oldestCompleted = getOldestRecord(completedRecs);
var gr3 = new GlideRecord(table);
if (gr3.get(oldestCompleted.sys_id)) {
gr3.state = 20;
gr3.work_notes = "Please check test for Update ";
gr3.update();
}
return;
}
// Case 4: One or More Pending state → update oldest pending state and worknotes
if (pendingRecs.length > 0 && completedRecs.length == 0 && notProcessedRecs.length == 0 && closedRecs.length == 0 && activeRecs.length == 0) {
//var oldestPending = pendingRecs[0];
var oldestPending = getOldestRecord(pendingRecs);
var gr4 = new GlideRecord(table);
if (gr4.get(oldestPending.sys_id)) {
gr4.state = 20;
gr4.work_notes = "Please check test for Update";
gr4.update();
}
return;
}
// Case 5: One or more Completed and + ActiveRecords (New/In-progress/Assigned) → update oldest complete record
if (completedRecs.length > 0 && activeRecs.length > 0 && pendingRecs.length == 0 && notProcessedRecs.length == 0 && closedRecs.length == 0) {
var oldCompltedRecord = getOldestRecord(completedRecs);
var gr5 = new GlideRecord(table);
if (gr5.get(oldCompltedRecord.sys_id)) {
gr5.state = 20;
gr5.work_notes = "Please check CommSee for Update ";
gr5.update();
}
return;
}
// Case 6: One or more Pending + ActiveRecords (New/In-progress/Assigned) → update oldest pending record
if (pendingRecs.length > 0 && activeRecs.length > 0 && completedRecs.length == 0 && notProcessedRecs.length == 0 && closedRecs.length == 0) {
var getPendingRecord2 = getOldestRecord(pendingRecs);
var gr6 = new GlideRecord(table);
if (gr6.get(getPendingRecord2.sys_id)) {
gr6.state = 20;
gr6.work_notes = "Please check test for Update";
gr6.update();
}
return;
}
//case 7: one or more pending or complted and active record -> update oldest of pending record state
if ((pendingRecs.length > 0 || completedRecs.length > 0) && activeRecs.length > 0 && notProcessedRecs == 0 && closedRecs.length == 0) {
var getPendingRecord3 = getOldestRecord(pendingRecs);
var gr7 = new GlideRecord(table);
if (gr7.get(getPendingRecord3.sys_id)) {
gr7.state = 20;
gr7.work_notes = "Please check CommSee for Update ";
gr7.update();
}
return;
}
//Case8: One or more not processed/closed and one or more active records and no pending and no completed records
if ((notProcessedRecs.length > 0 || closedRecs.length > 0) && activeRecs.length > 0 && pendingRecs.length == 0 && completedRecs.length == 0) {
var latestPreferred = getLatestRecord(activeRecs);
var gr7update = new GlideRecord(table);
if (gr7update.get(latestPreferred.sys_id)) {
gr7update.work_notes = "Advising of an update in test ";
gr7update.update();
}
return;
}
//Case9: One or more not processed/closed and one or more pending state and no active records and no completed records
if ((notProcessedRecs.length > 0 || closedRecs.length > 0) && pendingRecs.length > 0 && activeRecs.length == 0 && completedRecs.length == 0) {
var oldestPreferred9 = getOldestRecord(pendingRecs);
var gr7update1 = new GlideRecord(table);
if (gr7update1.get(oldestPreferred9.sys_id)) {
gr7update1.state = 20;
gr7update1.work_notes = "Please check test for Update ";
gr7update1.update();
}
return;
}
//case10: Notprocessed/closed and one or more pending and one more pending records and one or more active records and no completed records
if ((notProcessedRecs.length > 0 || closedRecs.length > 0) && pendingRecs.length > 0 && activeRecs.length > 0 && completedRecs.length == 0) {
var oldestPreferred10 = getOldestRecord(pendingRecs);
var gr7update2 = new GlideRecord(table);
if (gr7update2.get(oldestPreferred10.sys_id)) {
gr7update2.state = 20;
gr7update2.work_notes = "Please check test for Update ";
gr7update2.update();
}
return;
}
//Case11: One or more not processed/closed and one or more completed records and one or more active records and no pending records
if ((notProcessedRecs.length > 0 || closedRecs.length > 0) && completedRecs.length > 0 && activeRecs.length > 0 && pendingRecs.length == 0) {
var oldestPreferred11 = getOldestRecord(completedRecs);
var gr7update3 = new GlideRecord(table);
if (gr7update3.get(oldestPreferred11.sys_id)) {
gr7update3.state = 20;
gr7update3.work_notes = "Please check test for Update";
gr7update3.update();
}
return;
}
//Case12: One or more not processed/closed and one or more pending records and one or more completed records and no active records
if ((notProcessedRecs.length > 0 || closedRecs.length > 0) && pendingRecs.length > 0 && completedRecs.length > 0 && activeRecs.length == 0) {
var oldestPreferred12 = getOldestRecord(pendingRecs);
var gr7update4 = new GlideRecord(table);
if (gr7update4.get(oldestPreferred12.sys_id)) {
gr7update4.state = 20;
gr7update4.work_notes = "Please check test for Update";
gr7update4.update();
}
return;
}
//Case13: One or more not processed/closed and one or more pending records and one or more completed records and one or more active records
if ((notProcessedRecs.length > 0 || closedRecs.length > 0) && pendingRecs.length > 0 && completedRecs.length > 0 && activeRecs.length > 0) {
var oldestPreferred13 = getOldestRecord(pendingRecs);
var gr7update5 = new GlideRecord(table);
if (gr7update5.get(oldestPreferred13.sys_id)) {
gr7update5.state = 20;
gr7update5.work_notes = "Please check CommSee for Update";
gr7update5.update();
}
return;
}
//Case14: One or more not processed/closed and one or more completed state and no active records and no pending records
if ((notProcessedRecs.length > 0 || closedRecs.length > 0) && completedRecs.length > 0 && activeRecs.length == 0 && pendingRecs.length == 0) {
var oldestPreferred14 = getOldestRecord(completedRecs);
var gr7update14 = new GlideRecord(table);
if (gr7update14.get(oldestPreferred14.sys_id)) {
gr7update14.state = 20;
gr7update14.work_notes = "Please check CommSee for Update ";
gr7update14.update();
}
return;
}
Kindly Please suggest for any solution Thank you.