Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

SLA cancel condition is not working

nameisnani
Mega Sage

Hi Team , 

 

can anyone please help me on this issue , 

 

I have created SLA on sc_req_item table . 

 

pic 1 

nameisnani_0-1735486686229.png

 

pic 2 

nameisnani_1-1735486712718.png

 

pic 3 

 

nameisnani_2-1735486741457.png

 

 

I have tested this SLA , start , pause and stop condtions are working properly , the issue with cancel condtion . 

 

instead of cancel SLA stage is showing ' completed'  when ritm state is ' closed incomplete '

nameisnani_1-1735487042291.png

 

nameisnani_0-1735487000126.png

 

 

 

can anyone please help me on this issue on cancel conditon , what was the mistake , where i need to update please help me with the steps .

 

Thanks 

1 ACCEPTED SOLUTION

@nameisnani 

I can see the BR is an After BR. Please try changing it to a Before BR and see if that helps.

Thanks,
Rakesh.

View solution in original post

14 REPLIES 14

@Ankur Bawiskar  Yes ankur

Mark Manders
Mega Patron

https://www.servicenow.com/community/developer-forum/cancel-conditon-is-not-working-in-sla-on-ritm-t...


Please mark any helpful or correct solutions as such. That helps others find their solutions.
Mark

nameisnani
Mega Sage

@Ankur Bawiskar 

 

nameisnani_0-1735540099156.png

 

nameisnani_1-1735540099157.png

 

 

 

see SLA is not cancelling , i don't know what stoping here .

 

Thanks for quick help , 

 

There was Business rule configured on sc_task , and I am thinking because of that BR , SLA is delaying . 

 

nameisnani_2-1735540099291.png

 

 

(function executeRule(current, previous /*null when async*/ ) {

    //Update RITM State   
    var flag =0;
    var state=current.state;
    var gr = new GlideRecord("sc_task");
    gr.addActiveQuery();
    gr.addQuery("request_item", current.request_item);
    gr.query();
    while (gr.next()) {
    state = gr.state;
    if(state !=3 || state !=4|| state !=7){
//gs.addErrorMessage("Please close the sc_tasks to proceed to Resolved state");
//current.setAbortAction(true);
    flag =1;
    break;
    }}
    var ritmst = new GlideRecord('sc_req_item');
    ritmst.get(current.request_item);
    
    //Update ritm state similar to sctask
    //ritmst.stage = 'fulfillment'; // Update stage after SCTASK is reopened 
    if (flag==0){
    ritmst.state = current.state; 
    ritmst.setWorkflow(false);
    ritmst.update();
    ritmst.setWorkflow(true);
    }
    else {
    ritmst.state = state; 
    ritmst.setWorkflow(false);
    ritmst.update();
    ritmst.setWorkflow(true);
    }
    ritmst.update();
    var reqstate = ritmst.state;
    //Update Request State 
    var req = new GlideRecord('sc_request');
    req.addQuery('sys_id', current.request);
    req.query();
    while (req.next()) {
        req.state = reqstate;
        req.setWorkflow(false);
        req.update();
        req.setWorkflow(true);

        if (reqstate == 3) req.stage = "closed_complete";
        if (reqstate == 4) req.stage = "closed_incomplete";
        if (reqstate == 7) req.stage = "closed_skipped";
        req.setWorkflow(false);
        req.update();
        req.setWorkflow(true);

        if (reqstate == 3) req.request_state = "closed_complete";
        if (reqstate == 4) req.request_state = "closed_incomplete";
        if (reqstate == 7) req.request_state = "closed_skipped";
        req.setWorkflow(false);
        req.update();
        req.setWorkflow(true);
        req.active = "false";
        req.setValue("active", "false");
        //req.setWorkflow(false);
        req.update();
        //req.setWorkflow(true);
        
    }

})(current, previous);

 

There was more setworkflow was written because of that i think issue is happening. 

Could you please provide me the correct or updated script so that I can update? 

@nameisnani 

I can see the BR is an After BR. Please try changing it to a Before BR and see if that helps.

Thanks,
Rakesh.

vishwajeet5550
Mega Guru

use Before Business Rule and cheak it that help for you.