Query SCTASK from Request

Bryan Cole
Kilo Expert

I'm deploying a UI action that allows users to convert an INC to a Request item in the service catalog. Upon creation, I want to redirect the fulfiller to the newly created SCTASK (Note: Not the REQ or RITM).

function serverResolve(){

var cartId = GlideGuid.generate(null);

var cart = new Cart(cartId);

var item = cart.addItem('17c590e9047531006802a6e8a2359514'); // sys_ID for the request sc_catalog item

cart.setVariable(item, 'u_requested_for', current.u_requested_for);

cart.setVariable(item, 'description', current.comments.getJournalEntry(-1));

var rc = cart.placeOrder();

if(!rc){

gs.addInfoMessage("Error: Request was not created.");

}

//Resolve the current incident upon request creation

current.state = 6; //Resolved

current.close_code = "Closed/Resolved by Caller";

current.close_notes = "Converted to Request: " + rc.number;

current.update();

current.resolved_by = gs.getUserID();

// Retrieve SCTASK Number (Request -> SC Task ->Task number)

var sctask = new GlideRecord('sc_task');

sctask.addQuery('request_item', '=',rc.number);

sctask.query();

var task = new GlideRecord('task');

task.addQuery('number','=',sctask.number);

task.query(callback);

function callback(gr){

while (gr.next()){

gs.addInfoMessage("Request " + task.number + " created.");

}

}

gs.addInfoMessage("Incident " + incident.number + " has been resolved.");

action.setRedirectURL(task);

action.setReturnURL(current);

}

I know the issue is in 23-27, I'm probably querying things in the wrong order.

Thoughts?

7 REPLIES 7

nishailame
ServiceNow Employee
ServiceNow Employee

sctask.query() is missing at line 25.



 


Thanks.


PS: Hit like, Helpful, Correct and Endorse, if it answers your question.


Great catch, thank you Nisha. I've corrected this, but it's still coming back with no record found.


SanjivMeher
Kilo Patron
Kilo Patron

Please try below code.



  1. var cartId = GlideGuid.generate(null);  
  2. var cart = new Cart(cartId);  
  3. var item = cart.addItem('17c590e9047531006802a6e8a2359514'); // sys_ID for the request sc_catalog item  
  4. cart.setVariable(item, 'u_requested_for', current.u_requested_for);  
  5. cart.setVariable(item, 'description', current.comments.getJournalEntry(-1));  
  6. var rc = cart.placeOrder();    
  7.  
  8. if(!rc){  
  9. gs.addInfoMessage("Error: Request was not created.");  
  10. }    
  11.  
  12. //Resolve the current incident upon request creation  
  13. current.state = 6; //Resolved  
  14. current.close_code = "Closed/Resolved by Caller";  
  15. current.close_notes = "Converted to Request: " + rc.number;  
  16. current.update();  
  17. current.resolved_by = gs.getUserID();  
  18.  
  19. // Retrieve SCTASK Number (Request -> SC Task ->Task number)  
  20. var sctask = new GlideRecord('sc_task');  
  21. sctask.addQuery('request_item',rc.number);  
  22. sctask.query();
  23. if (sc_task.next())
  24. {
  25. gs.addInfoMessage("Request " + rc.number+ " created.");  
  26. }  
  27. gs.addInfoMessage("Incident " + incident.number + " has been resolved.");  
  28. action.setRedirectURL(sc_task);  
  29. }  

Please mark this response as correct or helpful if it assisted you with your question.

Also note that, it takes some time to create request, requested item and then task. You code might be running ahead of record creation.



Please mark this response as correct or helpful if it assisted you with your question.