- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-13-2024 04:53 AM
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?
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-13-2024 05:11 AM
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();
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-13-2024 05:56 AM
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();
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-13-2024 05:11 AM
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();
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-13-2024 05:56 AM
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();
}