Get a first look at what's coming. The Developer Passport Australia Release Preview kicks off March 12. Dive in! 

knowledge expiry notifications are triggered to wrong users

dev_S
Tera Expert

Hi All,

 

I have issue with email script for KB article expiry notification where emails are getting triggered to KB article author and CC (copied)the KB managers and KB owner but they are of different knowledge base. I need to have email triggered to KB author and CC KB managers and KB owner of same knowledge base.
I tried to figure out the issue but not able to find the exact root cause.
Thanks in advance

// (function runMailScript(current, template, email, email_action, event) {

//           // Add your code here

// })(current, template, email, email_action, event);
//STRY0121839 - KB owner and KB manager in CC
(function runMailScript(current, template, email, email_action, event) {
    var ccSet = {};

    // Get the Article record from the current kb article
    var articleGR = new GlideRecord('kb_knowledge');

    articleGR.addQuery('sys_id', current.sys_id);
    articleGR.query();
    if (articleGR.next()) {

        // Get the Knowledge Base from the Article record
        var kbGR = new GlideRecord('kb_knowledge_base');
        if (kbGR.get(articleGR.kb_knowledge_base)) {

            // Add KB Owner to CC
            if (kbGR.owner) {
                var ownerGR = new GlideRecord('sys_user');
                if (ownerGR.get(kbGR.owner)) {
                    ccSet[ownerGR.email] = true;
                }
            }

            // Add KB Managers to CC
            var managerIds = kbGR.kb_managers.toString().split(',');
            for (var i = 0; i < managerIds.length; i++) {
                var mgrGR = new GlideRecord('sys_user');
                if (mgrGR.get(managerIds[i].trim())) {
                    ccSet[mgrGR.email] = true;
                }
            }
        }
    }

    // Add all unique emails to CC
    for (var emailAddr in ccSet) {
        if (emailAddr) {
            email.addAddress("cc", emailAddr, "");
        }
    }
})(current, template, email, email_action, event);
1 REPLY 1

Tanushree Maiti
Tera Sage

Hi @dev_S ,

Can you try with this.

(function runMailScript(current, template, email, email_action, event) {

var kbSysId = current.kb_knowledge_base.sys_id;
var kbGR = new GlideRecord('kb_knowledge_base');

if (kbGR.get(kbSysId)) {

var owner = kbGR.owner; // sys_id of the Owner
var managers = kbGR.kb_managers; // Comma-separated sys_ids of managers

if (owner) {
email.addAddress("cc", owner.email.toString(), owner.name.toString());
}

if (managers) {
var mgrArray = managers.split(',');
for (var i = 0; i < mgrArray.length; i++) {
var userGR = new GlideRecord('sys_user');
if (userGR.get(mgrArray[i])) {
email.addAddress("cc", userGR.email.toString(), userGR.name.toString());
}
}
}
}
})(current, template, email, email_action, event);

Please mark this response as Helpful & Accept it as solution if it assisted you with your question.
Regards
Tanushree Maiti
ServiceNow Technical Architect
Linkedin: