Get previous approval comments in approval notification of RITM in email notification

Community Alums
Not applicable

Hi Experts,

 

I am trying to sent previous approval comment to the next approver in RITM approval notification and has written below email notification script and calling it in approval notification using ${email_script:email_script_name}

 

(function runMailScript( /* GlideRecord */ current, /* TemplatePrinter */ template,
    /* Optional EmailOutbound */
    email, /* Optional GlideRecord */ email_action,
    /* Optional GlideRecord */
    event) {

    var gr = new GlideRecord('sysapproval_approver');
    gr.addQuery('document_id', current.sys_id);
    gr.addQuery("state", "approved"); // Filter out only approved record if you want all comment this line
    gr.query();

    // If no approved records found
    if (!gr.hasNext()) {
        template.print('No approved records found.');
    } else {
        while (gr.next()) {
            template.print('<b>Approver Details:</b><br>');
            template.print('<b>Approver:</b> ' + gr.getDisplayValue("approver") + '<br>');
            template.print('<b>Approval State:</b> ' + gr.getValue("state") + '<br>');
            template.print('<b>Approved Time:</b> ' + gr.getDisplayValue("sys_updated_on") + '<br>');
            template.print('<b>Comments:</b> ' + gr.comments.getJournalEntry(1) + '<br><br>');
        }
    }
})(current, template, email, email_action, event);

 

 
But it gives comment as "No Approved Records found" even if comments are present under previous approver. Please advice how can I achieve the requirement.

 

1 ACCEPTED SOLUTION

Community Alums
Not applicable

Hi Runjay,

 

I modified the code as below and now its working fine as required. I tested it from fulfiller view only not sure how it will work for users approving it over email. I need to check that. Also I tried getting all approval comments instead of only latest comment.

 

Also instead of using current.sys_id. I used current.document_id

 

 

 

// Use the document_id of the current record to fetch previous approvals
var gr = new GlideRecord('sysapproval_approver');

// Query to find previous approval records attached to the same document_id
gr.addQuery('document_id', current.document_id);  // Use the document_id of the current record
gr.addQuery("state", "approved"); 
gr.orderByDesc('sys_updated_on'); 

gs.info('Current document_id being queried: ' + current.document_id);

gr.query();

var previousApprovers = [];
while (gr.next()) {
    previousApprovers.push(gr); 
}

if (previousApprovers.length > 0) {
    gs.info('Found ' + previousApprovers.length + ' previous approvals for document_id ' + current.document_id);
    
    // Go through each previous approver
    previousApprovers.forEach(function(approvalRecord) {
        template.print('<b>Approver Details:</b><br>');
        template.print('<b>Approver:</b> ' + approvalRecord.getDisplayValue("approver") + '<br>');
        template.print('<b>Approval State:</b> ' + approvalRecord.getValue("state") + '<br>');
        template.print('<b>Approved Time:</b> ' + approvalRecord.getDisplayValue("sys_updated_on") + '<br>');
        
        // Get all journal entries related to the approval record's comments
        var commentGr = new GlideRecord('sys_journal_field');
        commentGr.addQuery('element_id', approvalRecord.sys_id);
        commentGr.addQuery('element', 'comments'); 
        commentGr.orderBy('sys_created_on');
        commentGr.query();

        //Go through all comments for this approval record
        if (commentGr.hasNext()) {
            template.print('<b>Comments:</b><br>');
            while (commentGr.next()) {
                template.print(commentGr.value + '<br>');
            }
        } else {
            template.print('<b>No comments available.</b><br>');
        }

        template.print('<br>');
    });
} else {
    gs.info('No approved records found for document_id: ' + current.document_id);
    template.print('No previous approved records found.');
}

 

 

Thank you for all the help. Appreciate it!

View solution in original post

15 REPLIES 15

Can you share the screen short of your flow.

Community Alums
Not applicable

Below is the workflow 

AnkitaGupte_0-1732001583691.png

 

Hi @Community Alums ,

 

How you are triggering notification ?

Community Alums
Not applicable

This is notification trigger condition

AnkitaGupte_0-1732002249153.png

 

Hi @Community Alums ,

 

Get me full details.

From where are you generating event to trigger this notification?

On which table you have created this notification?