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.

How to clone RITM with all variables

sam1212
Mega Expert

Hi All,

I was trying to clone a RITM with all its variable what ever is entered . Like a clone button which creates a new RITM with all the variables. I am stuck with the copy of variables.

I heard their is OOB   clone available in some discussions but did not pointed exactly what it   do and how to use it.

Any help is appreciated .

1 ACCEPTED SOLUTION

sam1212
Mega Expert

Hi Guys here is the code to copy the RITM with all variables to new RITM without workflow issues ,




var user=current.request.requested_for;


deleteCart();



var realCart = getCart();


var cartID = realCart.sys_id;


gs.log("cartID..",cartID);


addToCart(cartID, current.cat_item, 1);


addOptions(cartID);


doOrder();


deleteCart();



function addToCart(cartid, cat_item, quantity) {


      var gr = new GlideRecord('sc_cart_item');


      gr.initialize();


      gr.cart = cartid;


      gr.cat_item = cat_item;


      gr.quantity = quantity;


      gr.insert();


}


function addOptions(cartID) {


     


     


      var kids = new GlideRecord('sc_cart_item');


      kids.addQuery('cart', cartID);


      kids.query();


      if (kids.next()) {


              gs.log("kids",kids.sys_id);


              var sc_item_option_mtom = new GlideRecord('sc_item_option_mtom');


             


              sc_item_option_mtom.addQuery('request_item', current.sys_id);


             


              sc_item_option_mtom.query();


             


     


              while(sc_item_option_mtom.next()){


                     


                      var sc_item_option = new GlideRecord('sc_item_option');


                     


                      sc_item_option.addQuery('sys_id', sc_item_option_mtom.sc_item_option);


                     


                      sc_item_option.query();


                     


                     


                      if(sc_item_option.next()){


                             


                              var sc_item_option_insert = new GlideRecord('sc_item_option');


                             


                              sc_item_option_insert.initialize();


                             


                              sc_item_option_insert.item_option_new=sc_item_option.item_option_new;


                             


                              sc_item_option_insert.value=sc_item_option.value;


                              sc_item_option_insert.cart_item.setValue(kids.sys_id);


                              sc_item_option_insert.insert();


                     


                      }


                     


                     


              }


             


             


      }


}


function deleteCart() {


     


      var cart = getCart();


      var id = cart.sys_id;


      var kids = new GlideRecord('sc_cart_item');


      kids.addQuery('cart', cart.sys_id);


      kids.deleteMultiple();


}


function getCart() {


     


      var cart = new GlideRecord('sc_cart');


     


      var userid = user;


      cart.addQuery('user', userid);


      cart.query();


      if (cart.next()) {


              // we already have a cart all is well


      }


      else {


              cart.initialize();


              cart.user = userid;


              cart.insert();


      }


      return cart;


}


function doOrder() {


      var req = new GlideappRequestNew();


      var result=   req.copyCart(null,user);


     


}


View solution in original post

13 REPLIES 13

mrswann
Kilo Guru

from Maintain Items > item > right click menu > Copy


sam1212
Mega Expert

Hi mrswann,



This is not catalog item.. i am looking for RITM copy


same thing AFAIK ?



sorry not in front of a machine so was going from memory


sam1212
Mega Expert

i have used the below logic to copy RITM in UI action on sc_req_item table




var gr = new GlideRecord('sc_req_item');



gr.initialize();



gr.request=current.request;


gr.request.requested_for=current.request.requested_for;


gr.cat_item=current.cat_item;


gr.cmdb_ci=current.cmdb_ci;



gr.short_description=current.short_description;


gr.description=current.description;


gr.insert();





var newRITM=gr.sys_id;





sc_item_option_mtom = new GlideRecord('sc_item_option_mtom');


sc_item_option_mtom.addQuery('request_item', current.sys_id);


sc_item_option_mtom.query();



while(sc_item_option_mtom.next()){


     


      var sc_item_option = new GlideRecord('sc_item_option');


      sc_item_option.addQuery('sys_id', sc_item_option_mtom.sc_item_option);


      sc_item_option.query();


     


      if(sc_item_option.next()){


     


              var sc_item_option_insert = new GlideRecord('sc_item_option');


             


              sc_item_option_insert.initialize();


             


              sc_item_option_insert.item_option_new=sc_item_option.item_option_new;


              sc_item_option_insert.value=sc_item_option.value;


              sc_item_option_insert.insert();


             


              var sc_item_option_mtom_insert = new GlideRecord('sc_item_option_mtom');


             


              sc_item_option_mtom_insert.initialize();


             


              sc_item_option_mtom_insert.request_item=newRITM;


              sc_item_option_mtom_insert.sc_item_option=sc_item_option_insert.sys_id;


              sc_item_option_mtom_insert.insert();


             


      }


     


      new Workflow().restartWorkflow(gr);


}