- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-16-2022 04:24 AM
Hello All,
When I am trying to post the data using json, the value for requested_for reference field is filling with opened by field value on RITM Requested_for value.
Could you please help me on this issue,
(function process( /*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
// implement resource here
var reqbody = request.body.dataString;
try {
var parser = new global.JSON();
var parsedData = parser.decode(reqbody);
var requestedFor = parsedData.requested_for;
var Type = parsedData.type;
var needsJavaInstalled = parsedData.needs_java_installed;
var Environment = parsedData.environment;
var shortDescription = parsedData.short_description;
var Description = parsedData.description;
var assignment_group = parsedData.assignment_group;
var assignedTo = parsedData.assigned_to;
var closeImmediately = parsedData.close_immediately;
var closingComments = parsedData.closing_comments;
var cartId = GlideGuid.generate(null);
var cart = new Cart(cartId);
// give here the sys_id of the catalog item under which those variables are present
var item = cart.addItem('afb8ddb7137dab0046d252722244b009', 1); //request Oracle Sysadmin Access (Legacy PCS)
var grUser = new GlideRecord('sys_user');
grUser.get('user_name',requestedFor);
//fill in the variables on the request item form
cart.setVariable(item, 'requested_for', grUser.sys_id);
cart.setVariable(item, "type", Type);
cart.setVariable(item, "needs_java_installed", needsJavaInstalled);
cart.setVariable(item, "environment", Environment);
cart.setVariable(item, "short_description", shortDescription);
cart.setVariable(item, "description", Description);
cart.setVariable(item, "assignment_group", assignment_group);
cart.setVariable(item, "assigned_to", assignedTo);
cart.setVariable(item, "close_immediately", closeImmediately);
cart.setVariable(item, "closing_comments", closingComments);
var rc = cart.placeOrder();
// rc is the request number; you can query RITM table and get the RITM number
var reqNumber = rc.number;
var ritm = new GlideRecord('sc_req_item');
ritm.get('request.number', reqNumber);
var ritmNumber = ritm.number;
var res = {};
res["status"] = "Success";
res["requestNumber"] = reqNumber;
res["requestItemNumber"] = ritmNumber;
response.setBody(res);
} catch (ex) {
var res = {};
res["status"] = "Error";
res["message"] = ex.message;
// response.setBody(JSON.stringify(res));
response.setBody(res);
}
})(request, response);
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-16-2022 06:03 AM
Hello
After updating this below code, I am getting correct value in Requestor for field.
rc.requested_for = grUser.sys_id;
rc.update();
Thanks for your help

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-16-2022 05:37 AM
If mine, palanikumar's and Aman's approach does not work I am worried that there is some script that sets the Requested for to Opened by after your Scripted Rest Api is executed (most probably Business Rule). If so you should have to analyze the BR that you have in your system, find which one is responsible for this behaviour and for example add to this BR condition that it should work for this item or in your script modify to omit BRs (but it is less secure)
Example:
rc.requested_for = requestedFor ;
rc.setWorkflow(false)
rc.update();

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-16-2022 04:54 AM
Hi,
Is "Requested For" is a variable created or is it the reference field available in Request table? if it is the field available in request table then use the below script (Highlighted the changes in bold)
(function process( /*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
// implement resource here
var reqbody = request.body.dataString;
try {
var parser = new global.JSON();
var parsedData = parser.decode(reqbody);
var requestedFor = parsedData.requested_for;
var Type = parsedData.type;
var needsJavaInstalled = parsedData.needs_java_installed;
var Environment = parsedData.environment;
var shortDescription = parsedData.short_description;
var Description = parsedData.description;
var assignment_group = parsedData.assignment_group;
var assignedTo = parsedData.assigned_to;
var closeImmediately = parsedData.close_immediately;
var closingComments = parsedData.closing_comments;
var cartId = GlideGuid.generate(null);
var cart = new Cart(cartId);
// give here the sys_id of the catalog item under which those variables are present
var item = cart.addItem('afb8ddb7137dab0046d252722244b009', 1); //request Oracle Sysadmin Access (Legacy PCS)
var grUser = new GlideRecord('sys_user');
grUser.get('user_name',requestedFor);
//fill in the variables on the request item form
cart.setVariable(item, 'requested_for', grUser.sys_id);
cart.setVariable(item, "type", Type);
cart.setVariable(item, "needs_java_installed", needsJavaInstalled);
cart.setVariable(item, "environment", Environment);
cart.setVariable(item, "short_description", shortDescription);
cart.setVariable(item, "description", Description);
cart.setVariable(item, "assignment_group", assignment_group);
cart.setVariable(item, "assigned_to", assignedTo);
cart.setVariable(item, "close_immediately", closeImmediately);
cart.setVariable(item, "closing_comments", closingComments);
var rc = cart.placeOrder();
rc.requested_for = grUser;
rc.update();
// rc is the request number; you can query RITM table and get the RITM number
var reqNumber = rc.number;
var ritm = new GlideRecord('sc_req_item');
ritm.get('request.number', reqNumber);
var ritmNumber = ritm.number;
var res = {};
res["status"] = "Success";
res["requestNumber"] = reqNumber;
res["requestItemNumber"] = ritmNumber;
response.setBody(res);
} catch (ex) {
var res = {};
res["status"] = "Error";
res["message"] = ex.message;
// response.setBody(JSON.stringify(res));
response.setBody(res);
}
})(request, response);
Palani
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-16-2022 05:17 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-16-2022 06:03 AM
Hello
After updating this below code, I am getting correct value in Requestor for field.
rc.requested_for = grUser.sys_id;
rc.update();
Thanks for your help

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-16-2022 04:56 AM
Just to be clear, when you say Requested for on RITM, the one that you see on ritm form is just a dot walked field of Request, you can test this by doing configure dictionary on the field on RITM form.
Add below lines after cart checkout
rc.requested_for = requestedFor ;
rc.update();
Aman Kumar