How to copy attachment from one table to another table

Nag9
Tera Expert

Hi 

I have catalog item that should create a CR usimg workflow..

If i raise a ritm along with attachement, the attachement should be appear while the time creating new CR using workflow.

1 ACCEPTED SOLUTION

Ok, here is the updated script.

if(current.variables.cloud_type == 'GCP Project'){
var service = new GlideRecord('change_request');
    service.initialize();
    service.setValue('cmdb_ci','2513c8b2db88f204f6ef7016bf961965');
    gs.log("assigned_to is "+current.variables.assigned_to()+"--"+current.assigned_to);
    service.setValue('assigned_to',current.assigned_to);
    service.setValue('u_automation','CRISP');
    service.setValue('u_work_characterization',"Normal Change");
    service.setValue('category','Application');
    service.setValue('u_chg_env','Production');
	service.setValue('u_test_except', 'no_llc');
	service.setValue('u_classification','Standalone');

service.setValue('u_itil_watch_list','Eldridge_L_Fussell@homedepot.com,ITO_Configuration_Management@homedepot.com,BRIAN_HIGGINBOTHAM@homedepot.com,Nalini_Subu@homedepot.com,JEFFREY_L_MITCHELL@homedepot.com,Brett_Warner@homedepot.com,Barbara_Sanders@homedepot.com,it_security_qualys@homedepot.com,ALVA_JENKINS-HOUSTON1@homedepot.com,JAY_ROGERS@homedepot.com');
	
    service.setValue('u_deployment_environment','Google Cloud Platform');
	service.setValue('description',current.variables.u_gcp_project_name +','+current.variables.life_cycle+','+current.variables.workload_description);
    service.setValue('u_size','Normal');
    service.setValue('u_downtime_required_','No');
    service.setValue('u_test_perf','No');
    service.setValue('short_description','Google Cloud Platform - New Project');
    gs.log("values are "+current.opened_by.getDisplayValue()+"--"+current.variables.opened_by);
    service.setValue('u_validated_by', current.opened_by.getDisplayValue());
	
	service.setValue('u_subexperience', current.variables.sox);
	service.setValue('u_subexperience', current.variables.pci);
	service.setValue('u_subexperience', current.variables.financial_impacting);
	service.setValue('u_subexperience', current.variables.restricted_data);
	service.setValue('u_subexperience', current.variables.pii_confidential);
	service.setValue('ustart_date', current.variables.requested_governance_review_date);
	service.setValue('u_project_id', current.variables.project_id);
	service.setValue('u_subexperience', current.variables.subexperience);
	service.setValue('justification', current.variables.business_justification);
	
	
	
    var cr_sys_id = service.insert();

	//service.setValue('u_project_id',current.variables.project_name);
    //copy the attachments of RITM to the above created CR.
    GlideSysAttachment.copy('sc_req_item',current.sys_id,'change_request',cr_sys_id);	


}

View solution in original post

17 REPLIES 17

Alberto Consonn
ServiceNow Employee
ServiceNow Employee

Try with this code:

(function executeRule(current, previous /*null when async*/) {

	if ((current.table_name =='sc_req_item')&&(current.table_sys_id == '3b58935fdbf923801ac0105f68961901'))
GlideSysAttachment.copy('sc_cat_item','3b58935fdbf923801ac0105f68961901','change_request','72671a540a0a3c7401f5f1ccb8a3fc5a');

})(current, previous);

If I have answered your question, please mark my response as correct so that others with the same question in the future can find it quickly and that it gets removed from the Unanswered list.

Thank you

Cheers
Alberto

Any update on this?

If I have answered your question, please mark my response as correct so that others with the same question in the future can find it quickly and that it gets removed from the Unanswered list.

Thank you

Cheers
Alberto

Looks like there is an issue with opening and lcosing braces. try this code.

(function executeRule(current, previous /*null when async*/) {
	// Add your code here
		gs.log("outside the loop "+current.table_name+"---"+current.table_sys_id);
	if ((current.table_name =='sc_req_item')&&(current.table_sys_id == '3b58935fdbf923801ac0105f68961901'))
        {
          gs.log('inside the lopo');
 GlideSysAttachment.copy('sc_req_item','3b58935fdbf923801ac0105f68961901','change_request','72671a540a0a3c7401f5f1ccb8a3fc5a');
	}
})(current, previous);

I tried below business rule on atachment table with after insert condition Here im giving exsting ritm number and change number. Now change is getting attachment,but its getting several attachments Can you modify this script fr new change requests for the our catalog item (function executeRule(current, previous /*null when async*/) { // Add your code here //gs.log("outside the loop "+current.table_name+"---"+current.table_sys_id); //if ((current.table_name =='sc_req_item')&&(current.cat_item == '3b58935fdbf923801ac0105f68961901')) //{ //gs.log('inside the lopo'); var req= new GlideRecord('sc_req_item'); req.addEncodedQuery('number=RITM0252728'); req.query(); if (req.next()) { var atch= new GlideRecord('change_request'); atch.addEncodedQuery('number=CHG0451037'); atch.query(); if (atch.next()) { GlideSysAttachment.copy('sc_req_item',req.sys_id,'change_request',atch.sys_id); } } //} })(current, previous);

Hi Nag,

Just uncomment the if condition

and then instead of number, chekc with sys_id=current.sys_id