Welcome to Community Week 2025! Join us to learn, connect, and be recognized as we celebrate the spirit of Community and the power of AI. Get the details  

Worknotes is not getting updated

Drishti
Tera Guru

Hello Community ,

 

There is one Date field on HR case form. The date value entered in the date field, when matches to todays date then state should change to WIP and work-notes should get updated with comments.

 

The challenge is here - I have created one scheduled script so that when date matches to todays date then state should change along with that work-notes should get updated. But this work-notes is not getting updated every time. Like sometimes , it work and sometimes it won't.

 

I also tried different way of script like setting work-notes without setWorkflow(false) then calling a function where I am setting state value along with setWorkflow(false).
But this too is not working.

 

My script : 

 

var grCase = new GlideRecord('sn_hr_core_case');
grCase.addEncodedQuery(MYQUERY);
grCase.query();
while (grCase.next()) {
grCase.work_notes = " MY COMMENTS FOR WORKNOTES";
grCase.update();
setStateValue(grCase);
 
}

function setStateValue(hrCase) {

hrCase.setValue('state', '18');
hrCase.autoSysFields(false);
hrCase.setWorkflow(false);
hrCase.update();

}
 
I have multiple BR and notification on condition of "State changes to WIP" . So, if I won't use setWorkflow(false) then that too will create an issue.
 
Please guide how can I achieve this.

Thanks !
1 ACCEPTED SOLUTION

nityabans27
Giga Sage

Hi @Drishti,

The issue is: setWorkflow(false) prevents all business rules — including system logic that updates journal fields like work_notes. That’s why your comments sometimes disappear.

Here’s the clean, reliable solution 👇


Final Working Script

var grCase = new GlideRecord('sn_hr_core_case');
grCase.addEncodedQuery(MYQUERY);
grCase.query();

while (grCase.next()) {
    // Store Sys ID before manipulating workflows
    var sysId = grCase.getUniqueValue();

    // Step 1: Update work notes safely (with workflow ON)
    grCase.work_notes = "MY COMMENTS FOR WORKNOTES";
    grCase.update(); // Let this trigger normally (ensures notes get written)

    // Step 2: Update state quietly (no notifications, no BRs)
    var grSilent = new GlideRecord('sn_hr_core_case');
    if (grSilent.get(sysId)) {
        grSilent.setWorkflow(false);
        grSilent.autoSysFields(false);
        grSilent.setValue('state', '18'); // WIP
        grSilent.update();
    }
}

🔍 Why this works

  • The first update writes work notes correctly because setWorkflow(false) is not used.

  • The second update (separate GlideRecord instance) changes state silently — no BRs, no notifications, no duplicate triggers.

  • Using a fresh record (grSilent) ensures no workflow caching or update conflicts.


⚠️ Notes

  • Don’t try to set both fields in one update if setWorkflow(false) is true — that’s why you saw inconsistency.

  • Keep the “silent” update isolated to avoid blocking journal updates.

  • Make sure your scheduled job runs with a user who has rights to update HR Cases and journal fields.

View solution in original post

11 REPLIES 11

nityabans27
Giga Sage

Hi @Drishti,

The issue is: setWorkflow(false) prevents all business rules — including system logic that updates journal fields like work_notes. That’s why your comments sometimes disappear.

Here’s the clean, reliable solution 👇


Final Working Script

var grCase = new GlideRecord('sn_hr_core_case');
grCase.addEncodedQuery(MYQUERY);
grCase.query();

while (grCase.next()) {
    // Store Sys ID before manipulating workflows
    var sysId = grCase.getUniqueValue();

    // Step 1: Update work notes safely (with workflow ON)
    grCase.work_notes = "MY COMMENTS FOR WORKNOTES";
    grCase.update(); // Let this trigger normally (ensures notes get written)

    // Step 2: Update state quietly (no notifications, no BRs)
    var grSilent = new GlideRecord('sn_hr_core_case');
    if (grSilent.get(sysId)) {
        grSilent.setWorkflow(false);
        grSilent.autoSysFields(false);
        grSilent.setValue('state', '18'); // WIP
        grSilent.update();
    }
}

🔍 Why this works

  • The first update writes work notes correctly because setWorkflow(false) is not used.

  • The second update (separate GlideRecord instance) changes state silently — no BRs, no notifications, no duplicate triggers.

  • Using a fresh record (grSilent) ensures no workflow caching or update conflicts.


⚠️ Notes

  • Don’t try to set both fields in one update if setWorkflow(false) is true — that’s why you saw inconsistency.

  • Keep the “silent” update isolated to avoid blocking journal updates.

  • Make sure your scheduled job runs with a user who has rights to update HR Cases and journal fields.