Update req and ritm with same user

Vijay Baokar
Kilo Sage

Hi Folks,

 

I have written a BR in user table which is running on active changes to FALSE then i am making glide query to sc_request to update the manager of deactivated user, its working partially i.e updating user's manager on REQ but not on RITM. 

which line is causing issue or what is missing?

 

var user = current.getValue("sys_id"); // Inactive user
 
var req = new GlideRecord("sc_request");
req.addEncodedQuery("active=true^requested_for=" + user);
req.query();
while (req.next()) {
managerGpr = req.requested_for.manager.toString();
var WatchReq = req.watch_list.toString();
var newWatchReq = WatchReq.replace(user, manager);
req.watch_list = newWatchReq;
 
req.requested_for = managerGpr;

req.update();

var ritm = new GlideRecord('sc_req_item');
//ritm.addActiveQuery();
ritm.addQuery('request',req.sys_id);
ritm.query();
 
while(ritm.next())
ritm.requested_for = req.requested_for;
ritm.update();
}
2 ACCEPTED SOLUTIONS

Anurag Tripathi
Mega Patron
Mega Patron

Hi,

Try this

var user = current.getValue("sys_id"); // Inactive user
 
var req = new GlideRecord("sc_request");
req.addEncodedQuery("active=true^requested_for=" + user);
req.query();
while (req.next()) {
managerGpr = req.requested_for.manager.toString();
//update RITM First
var ritm = new GlideRecord('sc_req_item');
//ritm.addActiveQuery();
ritm.addQuery('request',req.sys_id);
ritm.query();
while(ritm.next())
{
ritm.requested_for = managerGpr ;
ritm.update();
}
//Now update REQ
var WatchReq = req.watch_list.toString();
var newWatchReq = WatchReq.replace(user, manager);
req.watch_list = newWatchReq;
req.requested_for = managerGpr;
req.update();
}
-Anurag

View solution in original post

Robbie
Kilo Patron
Kilo Patron

Hi @Vijay Baokar,

 

Take a look at the script below. Please note the lines before the .update() method is called. This controls whether you want to trigger other Business Rules that have been configured or not.

 

To help others (or for me to help you more directly), please mark this response correct by clicking on Accept as Solution and/or Kudos.

 

Thanks, Robbie

 

 

//var user = 'b88d14843bc02300bfe04d72f3efc4cd'; //Used for testing. Feel free to use this as a Background Script to ensure correct results before running

var user = //current.getValue("sys_id"); // Inactive user
 
var req = new GlideRecord("sc_request");
req.addEncodedQuery("active=true^requested_for=" + user);
req.addQuery('number', 'REQ0010026');
req.query();
while (req.next()) {
    gs.print('req number: ' + req.number + ' requested for: ' + req.requested_for.getDisplayValue());
    managerGpr = req.requested_for.manager;
    gs.print('managerGpr: ' + managerGpr.getDisplayValue());
    //Updating Req Item
    var ritm = new GlideRecord('sc_req_item');
    ritm.addActiveQuery();
    ritm.addQuery('request',req.sys_id);
    ritm.query();
    while(ritm.next()){
        ritm.requested_for = managerGpr;
        ritm.setWorkflow(false); //You may or may not want this. Setting to false ensures only updating the name takes place and does not set off any other rules such as creating new rec items or tasks that maybe configured
        ritm.update();
        gs.print('req_number:' + ritm.number );
    }

    var WatchReq = req.watch_list.toString();
    var newWatchReq = WatchReq.replace(user, managerGpr);
    req.watch_list = newWatchReq;
 
    req.requested_for = managerGpr;
    req.setWorkflow(false); //You may or may not want this. Setting to false ensures only updating the name takes place and does not set off any other rules such as creating new rec items or tasks that maybe configured
    req.update();
}

 

View solution in original post

2 REPLIES 2

Anurag Tripathi
Mega Patron
Mega Patron

Hi,

Try this

var user = current.getValue("sys_id"); // Inactive user
 
var req = new GlideRecord("sc_request");
req.addEncodedQuery("active=true^requested_for=" + user);
req.query();
while (req.next()) {
managerGpr = req.requested_for.manager.toString();
//update RITM First
var ritm = new GlideRecord('sc_req_item');
//ritm.addActiveQuery();
ritm.addQuery('request',req.sys_id);
ritm.query();
while(ritm.next())
{
ritm.requested_for = managerGpr ;
ritm.update();
}
//Now update REQ
var WatchReq = req.watch_list.toString();
var newWatchReq = WatchReq.replace(user, manager);
req.watch_list = newWatchReq;
req.requested_for = managerGpr;
req.update();
}
-Anurag

Robbie
Kilo Patron
Kilo Patron

Hi @Vijay Baokar,

 

Take a look at the script below. Please note the lines before the .update() method is called. This controls whether you want to trigger other Business Rules that have been configured or not.

 

To help others (or for me to help you more directly), please mark this response correct by clicking on Accept as Solution and/or Kudos.

 

Thanks, Robbie

 

 

//var user = 'b88d14843bc02300bfe04d72f3efc4cd'; //Used for testing. Feel free to use this as a Background Script to ensure correct results before running

var user = //current.getValue("sys_id"); // Inactive user
 
var req = new GlideRecord("sc_request");
req.addEncodedQuery("active=true^requested_for=" + user);
req.addQuery('number', 'REQ0010026');
req.query();
while (req.next()) {
    gs.print('req number: ' + req.number + ' requested for: ' + req.requested_for.getDisplayValue());
    managerGpr = req.requested_for.manager;
    gs.print('managerGpr: ' + managerGpr.getDisplayValue());
    //Updating Req Item
    var ritm = new GlideRecord('sc_req_item');
    ritm.addActiveQuery();
    ritm.addQuery('request',req.sys_id);
    ritm.query();
    while(ritm.next()){
        ritm.requested_for = managerGpr;
        ritm.setWorkflow(false); //You may or may not want this. Setting to false ensures only updating the name takes place and does not set off any other rules such as creating new rec items or tasks that maybe configured
        ritm.update();
        gs.print('req_number:' + ritm.number );
    }

    var WatchReq = req.watch_list.toString();
    var newWatchReq = WatchReq.replace(user, managerGpr);
    req.watch_list = newWatchReq;
 
    req.requested_for = managerGpr;
    req.setWorkflow(false); //You may or may not want this. Setting to false ensures only updating the name takes place and does not set off any other rules such as creating new rec items or tasks that maybe configured
    req.update();
}