This article help you to create RITM using Cart API Like
- Create RITM using inbound email.
- Create RITM using Business Rule.
- Create RITM using Script Include.
In ServiceNow, creating and placing an order for catalog items programmatically is essential for automation and integrating Service Catalog functionality within applications.
There are two different way for achieving this:
-
- Using the
Cart
API (global scope). - Using the
CartJS
API (scoped application).
- Using the
1. Using the Cart
API (global scope): Cart API is server-side script which you can use in all server type in ServiceNow like in Inbound Action, Business Rule, Script Include and so on… This is best for global application scope.
var id = GlideGuid.generate(null); // Generate a unique GUID for the cart var cart = new Cart(id); // Instantiate a new cart with the GUID var item = cart.addItem('Put sys_id of your catalog ite.'); cart.setVariable(item,'put your variable name ','your varibale value'); cart.setVariable(item,'put your variable name2 ','your varibale value2'); var request = cart.placeOrder(); //Example... // Add the catalog item using its sys_id var RITM = cart.addItem('060f3afa3731300054b6a3549dbe5d3e'); // sys_id of the catlog item // Set variables for the catalog item cart.setVariable(RITM, 'ram', '16'); // RAM size cart.setVariable(RITM, 'os', 'win10'); // Operating system cart.setVariable(RITM, 'storage', '1tb'); // Storage capacity // Place the order var request = cart.placeOrder(); // Returns a GlideRecord for the generated sc_request
Note: API always returns the Request number and to get the RITM number you need to do a GlideRecord. like below.
var cartId = GlideGuid.generate(null); var cart = new Cart(cartId); var item = cart.addItem('e2132865c0a8016500108d9cee411699',12); var rc = cart.placeOrder(); var grRITM = new GlideRecord("sc_req_item"); if(grRITM.get("request", rc.sys_id+"")) { gs.print(grRITM.number); } //In case you are going to add multiple items into the cart before requesting then use following code var cartId = GlideGuid.generate(null); var cart = new Cart(cartId); var item = cart.addItem('e2132865c0a8016500108d9cee411699',12); var rc = cart.placeOrder(); var grRITM = new GlideRecord("sc_req_item"); while(grRITM.get("request", rc.sys_id+"")) { gs.print(grRITM.number); }
2. Using the CartJS API (Scoped Application):Â Cart API is server-side script which you can use in all server type in ServiceNow like in Inbound Action, Business Rule, Script Include and so on… This is best for scoped application scope.
Use below code to submit an ritm.
var cart = new sn_sc.CartJS(); var item = { 'sysparm_id': '060f3afa3731300054b6a3549dbe5d3e', // Catalog item sys_id 'sysparm_quantity': '1', 'variables': { 'ram': '16', 'os': 'win10', 'storage': '1tb' } }; // Add item to the cart var cartVals = cart.addToCart(item); // Returns a JSON object with cart status // Checkout and submit the order var checkoutVals = cart.checkoutCart(); // Returns JSON with checkout details
3. Choose the Right API for Your Requirement
- Global Scope: Use the
Cart
API when you’re outside a scoped environment, such as in custom workflows or server-side scripts. - Scoped Context: Use
CartJS
in scoped applications, where JSON-based structure offers a cleaner and more efficient method to handle cart items and variables.