Update REQ based on RITM state and stage

Priya Rao
Tera Contributor

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 

3 ACCEPTED SOLUTIONS

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);

 

VishalBirajdar_0-1696576567748.png

 

VishalBirajdar_1-1696576601918.png

 

Hope this helps....!!

 

 

 

Vishal Birajdar
ServiceNow Developer

I know one thing, and that is that I know nothing.
- Socrates

View solution in original post

 

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
    }

 

 

piyushsain_0-1696579344494.png

piyushsain_1-1696579374853.png

 

 

If my answer has helped with your question, please mark my answer as accepted solution and give a thumb up.
Regards,
Piyush Sain

View solution in original post

Pavankumar_1
Mega Patron

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();
}
}

 

If it helps please click Accept as Solution/hit the Thumb Icon.
ServiceNow Community MVP 2024.
Thanks,
Pavankumar

View solution in original post

15 REPLIES 15

Vishal Birajdar
Giga Sage

Hi @Priya Rao 

 

As its order guide , then there will be only one Request will be created for all four RITMS.

 

May be can you provide some screenshot for more clarity.

 

 

 

 

Vishal Birajdar
ServiceNow Developer

I know one thing, and that is that I know nothing.
- Socrates

Hi @Vishal Birajdar ,

 

PriyaRao_0-1696575148061.png

Based on the state of these 4 RITM's, (I'll be closed complete) I need to update the state of the REQ to Complete.

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);

 

VishalBirajdar_0-1696576567748.png

 

VishalBirajdar_1-1696576601918.png

 

Hope this helps....!!

 

 

 

Vishal Birajdar
ServiceNow Developer

I know one thing, and that is that I know nothing.
- Socrates

@Vishal Birajdar , Thanks for your response. I tried with this but it's not setting the state of the REQ to Closed Complete when all the RITM's are closed.