Find your people. Pick a challenge. Ship something real. The CreatorCon Hackathon is coming to the Community Pavilion for one epic night. Every skill level, every role welcome. Join us on May 5th and learn more here.

Need to copy comment from RITM to sc_task

s_nandhini
Tera Contributor

I need to copy my additional comment from RITM to sc_task . But my sc_task contain group type "Restriction" Only user part of sc_task can able to see the sc_task. So, comment is copying properly.

 

I tried creating an event + BR + script action but it not working

 

BR: (After - update)

 

(function executeRule(current, previous /*null when async*/ ) {
    if (current.comments.changes()) {
     var rawEntry = current.comments.getJournalEntry(1);
    var latestComment = rawEntry.split("\n")[1];
        var userId = gs.getUserID();
       
    gs.log("BR firing event ritm.comment.added");
    gs.log("Latest comment: " + latestComment);
    gs.log("User ID: " + userId);
        gs.eventQueue("ritm.comment.add", current, latestComment, userId);
    }
})(current, previous);
 
Script action:
(function executeAction(event) {

    gs.log("latest: " + event.parm1);
    gs.log("comm: " + event.parm2);

    if (!event.parm1) {
        gs.log("No comment text passed to Script Action");
        return;
    }
   
    var tasks = new GlideRecord("sc_task");
    tasks.addQuery("request_item", current.sys_id);
    tasks.query();
    if (tasks.next()) {
        gs.log("commenttask:" + event.parm1);
        tasks.comments.setJournalEntry(event.parm1);
        tasks.update();
       
    }else{
        gs.log("commentnotfound:"+ event.parm1 + current.sys_id + gs.getUserName());
    }
})(event) ;
 
But commentnotfound log is running instead of if.

 

1 ACCEPTED SOLUTION

@s_nandhini 

in after update BR on RITM, no script action required

BR Condition: Comments Changes

(function executeRule(current, previous /*null when async*/ ) {

    var sctask = new GlideRecord('sc_task');
    sctask.addQuery('request_item', current.sys_id);
    sctask.setWorkflow(false); // disables query BR and allows script to query that record
    sctask.query();
    while (sctask.next()) {
        var comments = current.comments.getJournalEntry(1).match(/\n.+/gm).join("\n");
        comments = comments.replace('\n', '');
        sctask.comments = comments;
        sctask.update();
    }

})(current, previous);

💡 If my response helped, please mark it as correct and close the thread 🔒— this helps future readers find the solution faster! 🙏

Regards,
Ankur
Certified Technical Architect  ||  10x ServiceNow MVP  ||  ServiceNow Community Leader

View solution in original post

16 REPLIES 16

Hi..

Not quite—this will run, but it has a couple of mistakes that will break or behave incorrectly. You’re updating the wrong variable (sc_task.update() instead of grSCTask.update()), and directly assigning grSCTask.comments = ritmComment won’t reliably write to a journal field. Also, you should only trigger when the comment actually changes.

TharaS657398130
Mega Guru

Hey

 
I got this question in my architect interview round

The problem is that in your Script Action you’re using current.sys_id, but current doesn’t exist there, so your query never finds any sc_task records and always goes to the “not found” log; to fix it, pass the RITM sys_id in the event (e.g., gs.eventQueue("ritm.comment.add", current, latestComment, current.sys_id);) and then use event.parm2 in the Script Action to query sc_task, which will allow the comment to copy correctly.

s_nandhini
Tera Contributor

@TharaS657398130 can you send me sample how to call the event.aprm2 in the script action

@s_nandhini 

if you are restricting sc_task using Query BR then update this line

var tasks = new GlideRecord("sc_task");
    tasks.addQuery("request_item", current.sys_id);
tasks.setWorkflow(false); // disables query BR and allows script to query that record
    tasks.query();

💡 If my response helped, please mark it as correct and close the thread 🔒— this helps future readers find the solution faster! 🙏

Regards,
Ankur
Certified Technical Architect  ||  10x ServiceNow MVP  ||  ServiceNow Community Leader

In script action?