- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-15-2020 10:29 PM
I am using Cart api to set Requested_for field for different users,but still the requested for is showing my name only
is there any way to set the requested_for by using Cart API
Solved! Go to Solution.
- Labels:
-
Service Catalog
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-15-2020 10:50 PM
Unfortunately you cannot set any fields of REQ or RITM using Cart API
the only way is to get the REQ sys_id and then set the value
sample script below
var cartId = GlideGuid.generate(null);
var cart = new Cart(cartId);
//add your requested item to the cart by sys_id of the catalog item
var item = cart.addItem('4054428fdb151f0097679ec6db9619c0', 1);
//fill in the variables on the request item form
cart.setVariable(item,"u_requested_for", "e80edd6edbec6bc097275e25ca9619a4");
cart.setVariable(item,"contact_number", "0");
cart.setVariable(item,"assignment_group", "87ec1c342b2e71406c487fb5a8da1524");
cart.setVariable(item,"application_service", "cdedfbcedb0f9744c291c170ba9619a7");
var rc = cart.placeOrder();
var reqRecord = new GlideRecord('sc_request');
reqRecord.get(rc.sys_id);
reqRecord.requested_for = 'user sys_id you want here';
reqRecord.update();
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎11-12-2020 02:46 AM
A colleague of mine told me how to do this.
var cart = new Cart(null, sys_id_of_requested_for);
That's working for me now in Paris. If you update the REQ after it's created any notifications seem to go out to the two users so I think this is a better way of doing it.
Kind regards,
Phonsie
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎11-12-2020 03:06 AM
Hi,
Are you referring to this?
var cartId = GlideGuid.generate(null);
var cart = new Cart(cartId, sys_id_of_requested_for);
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎11-12-2020 03:13 AM
Hi Ankur,
Yes, that would be the same thing, but different from the answer marked as correct on this thread.
Kind regards,
Phonsie.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎11-12-2020 03:18 AM
Thank you for sharing
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-14-2021 01:10 PM
Hi,
I have this working. When you create the a cart object by calling the Cart API, the user sys_id you pass in becomes the request's "Opened by" user.
When the cart object is instantiated, it creates cart property, which is a GlideRecord. You can change the properties of this cart GlideRecord, but it doesn't have an impact when the request is created.
Instead, you need to recreate the cart property, and set the requested_for user using the setRequestedFor() command.
var requestedForUser = "user sys_id";
var openedByUser = "user sys_id";
var cartId = GlideGuid.generate(null);
var cart = new Cart(cartId, openedByUser); //
// In the cart object there is a cart property
// We need to recreate this cart property to set the
// Requested for user
var tempCart = GlideappCart.getCartForRhino(cart.cartName, cart.userID);
//Now we can set the requested_for user on the temp cart
tempCart.setRequestedFor(requestUser);
// Make the tempcart the cart's cart
cart.cart = tempCart.getGlideRecord();
Hope this helps someone.
Thanks,
Cody