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.

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