Business rule creating multiple import sets

MaharshiC
Tera Contributor

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