Business rule creating multiple import sets
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-08-2024 03:37 AM - edited 11-08-2024 03:59 AM
Hi,
I want to create records from an attached excel and for that i have created a before insert br , transform map and import set. When the business rule is running it is creating records correctly in the target table but in the import set table i am seeing multiple records getting created but ideally it should be a single import state with multiple rows in staging table. I am not able to find the issue why it is creating multiple import sets.
(function executeRule(current, previous /*null when async*/ ) {
var tableName = "u_staging"; //Staging Table
var shortDescription = "Data load Rail";
var impSet = new GlideRecord('sys_import_set');
impSet.initialize();
impSet.state = 'loading';
impSet.mode = 'asynchronous';
impSet.table_name = tableName;
impSet.short_description = shortDescription;
impSet.insert();
var importSys_ID = impSet.getUniqueValue();
// var impSetRow = new GlideRecord('u_staging');
// impSetRow.initialize();
// impSetRow.sys_import_state = 'pending';
// impSetRow.sys_import_set = importSys_ID;
var sys = '';
var gr = new GlideRecord('sys_attachment');
gr.addQuery('table_sys_id', current.sys_id);
gr.query();
if (gr.next()) {
sys = gr.sys_id;
}
gs.addInfoMessage('firsttest' + sys);
var parser = new sn_impex.GlideExcelParser();
var attachment = new GlideSysAttachment();
// Use the attachment sys_id of an Excel file .
// Returns a GlideScriptableInputStream object given the sys_id of an attachment.
gs.addInfoMessage('abcdefgh');
//var attachmentStream = attachment.getContentStream("ab482ed083b9d210cb6d9defeeaad334");
var attachmentStream = attachment.getContentStream(sys);
// Set the source to be parsed
parser.setSource(attachmentStream);
gs.addInfoMessage('abcdefghii');
// Get the worksheet names to be parsed in the Excel document
var list_sheet_name = parser.getSheetNames();
gs.info(" Sheet Names " + list_sheet_name.join(", "));
// Iterate over each worksheet in the Excel workbook
//for (var i = 0; i < list_sheet_name.length; i++) {
// gs.addInfoMessage('abcdefghiikkk');
// gs.info("**************************************************************************************");
// gs.info("Sheet name: " + list_sheet_name[i]);
// // Set the worksheet name to be parsed
// parser.setSheetName(list_sheet_name[i]);
// Parse each worksheet set using setSheetName()
if (parser.parse()) {
gs.addInfoMessage('abcdefgh');
//retrieve the column headers
var headers = parser.getColumnHeaders();
var header1 = headers[0];
var header2 = headers[1];
var header3 = headers[2];
//print headers
gs.info(headers);
gs.info('abclll' + header1 + "\t||" + header2 + "\t||" + header3);
// Iterate over each row in the worksheet
while (parser.next()) {
gs.addInfoMessage('qqabcd'+importSys_ID);
var row = parser.getRow();
//print row value for both columns
//gs.addInfoMessage('ooo' + sys_import_state);
var impSetRow = new GlideRecord('u_staging');
impSetRow.initialize();
impSetRow.sys_import_state = 'pending';
impSetRow.sys_import_set = importSys_ID;
// var inc = new GlideRecord('task_cmdb_ci_service');
// inc.initialize();
// inc.setDisplayValue('cmdb_ci_service', row[header1]);
impSetRow.setDisplayValue('u_configuration_item', row[header1]);
// gs.addInfoMessage('ooo' + sys_import_state);
// gs.addInfoMessage('iii' + importSys_ID);
impSetRow.insert();
gs.info('AAAAefgh' + row[header1]);
gs.info('efgh' + row[header1] + '\t|| ' + row[header2] + '\t||' + row[header3]);
}
} else
gs.info(parser.getErrorMessage());
//}
var impset = new GlideRecord('sys_import_set');
impset.get(importSys_ID);
if (impset) {
impset.state = 'loaded';
impset.update();
var transformer = new GlideImportSetTransformer();
transformer.transformAllMaps(impSet);
}
})(current, previous);
0 REPLIES 0