Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Update inactive user's manager to KB article's author

Vijay Baokar
Kilo Sage

Hi Folks,

 

I am trying to update inactive user's manager to the author of knowledge article. When user moves to inactive his/her manager should be updated to his owned articles. Below is the BR with condition when active changes to false.

 

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

    var user = current.getValue("sys_id"); // Inactive user
    var Mngr = current.manager.toString();

    var kbUsr = new GlideRecord('kb_knowledge');
    kbUsr.addEncodedQuery("active=true^author=" + user);
    kbUsr.query();
    while (kbUsr.next()) {
       // gs.info("KB", kbUsr.number);
        //Mgr = kbUsr.author.manager.toString();
        kbUsr.author = Mngr;

        kbUsr.setWorkflow(false);
        kbUsr.update();

    }

})(current, previous);
 
but in the log i am getting  Error: "current" is not defined and author is not getting updated.
1 ACCEPTED SOLUTION

amaradiswamy
Kilo Sage

Hi @Vijay Baokar 

 

I tried in my PDI and below BR is working for me

 

Advanced: true

When: async

Insert: true

update: true

Filter conditions: Active changes to false

 

Advanced:

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

   
    var Mngr = current.getValue('manager');

    var kbUsr = new GlideRecord('kb_knowledge');
    kbUsr.addEncodedQuery("active=true^author=" + current.getValue("sys_id"));
    kbUsr.query();
    while (kbUsr.next()) {
       // gs.info("KB", kbUsr.number);
        //Mgr = kbUsr.author.manager.toString();
        kbUsr.author = Mngr;

        kbUsr.setWorkflow(false);
        kbUsr.update();

    }

})(current, previous);

 

amaradiswamy_0-1728038557601.png

 

amaradiswamy_1-1728038584673.png

 

View solution in original post

2 REPLIES 2

amaradiswamy
Kilo Sage

Hi @Vijay Baokar 

 

I tried in my PDI and below BR is working for me

 

Advanced: true

When: async

Insert: true

update: true

Filter conditions: Active changes to false

 

Advanced:

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

   
    var Mngr = current.getValue('manager');

    var kbUsr = new GlideRecord('kb_knowledge');
    kbUsr.addEncodedQuery("active=true^author=" + current.getValue("sys_id"));
    kbUsr.query();
    while (kbUsr.next()) {
       // gs.info("KB", kbUsr.number);
        //Mgr = kbUsr.author.manager.toString();
        kbUsr.author = Mngr;

        kbUsr.setWorkflow(false);
        kbUsr.update();

    }

})(current, previous);

 

amaradiswamy_0-1728038557601.png

 

amaradiswamy_1-1728038584673.png

 

Jim Coyne
Kilo Patron

You might want to add a check in there to make sure there is a value in the "manager" field.  Otherwise, you would be clearing out that field.