Data Import Using Service Catalog

neethu4
Giga Expert

Hi All,

I want to create a catalog item which will help to import the file to CMDB table.My thought is on submit of the the request trigger the data source and pass the attachment to it.

But don't know how to achieve it.

Please let me know if any suggestion on this

Thanks,

Neethu

1 ACCEPTED SOLUTION

Ankur Bawiskar
Tera Patron
Tera Patron

Hi Neethu,



That's correct.


1) Have business rule after insert on RITM table which runs only for that particular Catalog Item.


2) Have a data source, transform map and field map created as usual. coalesce etc will be present


3) Have scheduled import created with this data source with active= false, run as administrator since it will be triggered from script. In left nav type Scheduled Imports and create new


4) in the business rule condition check whether the RITM has attachment then only run the business rule and have following script



Business rule condition:


current.hasAttachments()


//extra check you can have is whether it is csv or xls based on data source attachment file type



Business rule script:



var dataSourceSysId = ''; // sys_id of the data source you created in step 2


var schImp_GR = new GlideRecord('scheduled_import_set');


schImp_GR.addQuery('data_source',dataSourceSysId);


schImp_GR.query();


if(schImp_GR.next()){


gs.executeNow(schImp_GR); // use this if it is in scoped app


//SncTriggerSynchronizer.executeNow(schImp_GR); // if in non-scope app i.e. global



// the above 2 lines will start the import process, etc automatically


}



Mark Correct if this solves your issue and also hit Like and Helpful if you find my response worthy based on the impact.


Thanks


Ankur


Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

View solution in original post

25 REPLIES 25

How can i pass the attachment from RITM to the data source? I used the below code in the same business rule but not working


GlideSysAttachment.copy('sc_req_item', 'current.sys_id', 'sys_data_source', '910b04401342fa00a1547j004244b00c');


HI Neethu,



Script has error. Update it as belows:


current.sys_id should not be in quote



GlideSysAttachment.copy('sc_req_item', current.sys_id, 'sys_data_source', '910b04401342fa00a1547j004244b00c');



Mark Correct if this solves your issue and also hit Like and Helpful if you find my response worthy based on the impact.


Thanks


Ankur


Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

Once i submitted the request attachment are copying to the data source.But if i submit another request the previous attachment also there in the data source.How can i remove the previous attachment?


Hi Neethu,



For this you will have to remove any previous attachments to that data source before adding new one



script below:



var dataSourceSysId = ''; // give sys_id of your data source


var remAtc = new GlideRecord('sys_attachment');


              remAtc.addQuery('table_name', 'sys_data_source');


              remAtc.addQuery('table_sys_id', dataSourceSysId);


              remAtc.query();


              remAtc.next();


              remAtc.deleteMultiple();



Mark Correct if this solves your issue and also hit Like and Helpful if you find my response worthy based on the impact.


Thanks


Ankur


Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

Is there any way to bring the import log information to the RITM work note?