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.