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.