- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-05-2023 11:41 PM
Hi all,
I have created an order guide, and it contains four different catalog items, each of which follows a different flow. I have used flow design. Now, I want to check the status of each RITM, and if the state and stage of all four RITMs are complete, then I need to update the REQ record for those RITMs. How can I achieve this?
Thanks in advance!
@Ankur Bawiskar @Rahul Talreja @Pavankumar_1 @Samaksh Wani @Vishal Birajdar @Dr Atul G- LNG @Hemanth M1 @Saurabh Gupta @Sagar Pagar @Aman Kumar S
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-06-2023 12:17 AM
Hi @Priya Rao
Ok so yo need write Business rule as below on RITM table :
(function executeRule(current, previous /*null when async*/ ) {
/* 1. Get the request from current form */
var request = current.request;
/* 2. Glide Record on Request item table & check if there is any RITM which is not in closed complete state */
var grItem = new GlideRecord('sc_req_item');
grItem.addEncodedQuery('request=' + request + '^state!=3');
grItem.query();
if(!grItem.next()){
/* update request record */
var grReq = new GlideRecord('sc_request');
grReq.addQuery('sys_id',request);
grReq.query();
if(grReq.next()){
// set values on request
grReq.state = 3;
grReq.update();
}
}
})(current, previous);
Hope this helps....!!
ServiceNow Developer
I know one thing, and that is that I know nothing.
- Socrates
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-06-2023 01:03 AM - edited 10-06-2023 01:04 AM
var request = current.request;
var grRITM = new GlideRecord('sc_req_item');
grRITM.addEncodedQuery('stateNOT IN3,4,7^request=' + request);
grRITM.query();
if (!grRITM.hasNext()) {
var req = new GlideRecord('sc_request');
req.get(request);
req.state = ''; //Update according to your requirement
}
Regards,
Piyush Sain
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-06-2023 07:56 AM
Hi @Priya Rao ,
Create after business rule on RITM table and select update and give condition as when state changes to closed complete. In advance use below script
Script:
var grRITM = new GlideRecord('sc_req_item');
grRITM.addQuery('request',current.request); //get RITMS only for the same request
grRITM.addEncodedQuery('state!=3');//state is not closed complete
grRITM.query();
if (!grRITM.next()) {//if we don't have any RITM other than close complete
var grReq = new GlideRecord('sc_request');
if(grReq.get(current.request)){
grReq.stage = 'closed_complete'; //give your stage value
grReq.update();
}
}
ServiceNow Community MVP 2024.
Thanks,
Pavankumar
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-06-2023 05:27 AM
Hi @Priya Rao
Can you provide screenshot of your code snippet..??
Also check what the backend value of "closed complete" choice.
ServiceNow Developer
I know one thing, and that is that I know nothing.
- Socrates
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-06-2023 05:30 AM
Hi @Vishal Birajdar ,
The backend value of the state is 3.
(function executeRule(current, previous /*null when async*/ ) {
var request = current.request;
var grItem = new GlideRecord('sc_req_item');
grItem.addEncodedQuery('request=' + request + '^state!=3');
grItem.query();
if (!grItem.next()) {
var grReq = new GlideRecord('sc_request');
grReq.addQuery('sys_id', request);
grReq.query();
if (grReq.next()) {
grReq.state = 3;
grReq.update();
}
}
})(current, previous);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-06-2023 05:41 AM
Hi @Priya Rao
I have checked with the same code...!!
Its updating the as expected...!!
ServiceNow Developer
I know one thing, and that is that I know nothing.
- Socrates
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-05-2023 11:46 PM
Hi,
You can do this by creating an after BR on RITM table with trigger as State Closed or Complete and check in the BR that if the RITMS attached to the REQ of the current RITM are completed.
Regards,
Piyush Sain
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-06-2023 12:08 AM
Thanks for your response. Can you please elaborate?