The CreatorCon Call for Content is officially open! Get started here.

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

Hi @Priya Rao 

Can you provide screenshot of your code snippet..??

Also check what the backend value of "closed complete" choice.

 

Vishal Birajdar
ServiceNow Developer

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

Hi @Vishal Birajdar ,

The backend value of the state is 3.

PriyaRao_0-1696595345739.png

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

 

PriyaRao_1-1696595412777.png

 

 

Hi @Priya Rao 

 

I have checked with the same code...!!

Its updating the as expected...!!

 

Vishal Birajdar
ServiceNow Developer

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

piyushsain
Tera Guru

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.

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

@piyushsain ,

Thanks for your response. Can you please elaborate?