We've updated the ServiceNow Community Code of Conduct, adding guidelines around AI usage, professionalism, and content violations. Read more

Custom action to load import set records and complete the transform

MercBuilding
Tera Guru

Hi,

  We have created a custom action to load the data and complete the transform map. We would like to return number of rows processed, inserted and updated but the script is not working as expected. Can someone point me where iam going wrong? I even tried GlideRecord of sys_import_set_run_list but still its not working.

 

(function execute(inputs, outputs) {

  // 1. Load the Data Source record

  var ds = new GlideRecord('sys_data_source');

  if (!ds.get(inputs.dataSourceSysId)) {

    outputs.status = 'ERROR: Data Source not found';

    return;

  }

  // 2. Initialize the loader and get/import-set record

  var loader = new GlideImportSetLoader();

  var impSetGR = loader.getImportSetGr(ds);

  if (!impSetGR || !impSetGR.sys_id) {

    outputs.status = 'ERROR: Could not initialize Import Set';

    return;

  }

  // 3. Load file into import-set table

  //    Signature: loadImportSetTable(GlideRecord importSetRec, GlideRecord dataSourceRec)

  loader.loadImportSetTable(impSetGR, ds);

  impSetGR.state = 'loaded';

  impSetGR.update();

  // 4. Run all transform maps on this import-set

  var transformer = new GlideImportSetTransformer();

  transformer.transformAllMaps(impSetGR);

  // 5. Grab the Import Set Run and summarize results

  var run = transformer.getImportSetRun();

  if (!run) {

    outputs.status = 'ERROR: Transform did not execute';

    return;

  }

  outputs.status          = 'SUCCESS';

  outputs.import_set_id   =impSetGR.number;

  //impSetGR.getUniqueValue();

  outputs.rows_processed  =run.getRowCount();

  outputs.rows_inserted   = run.getInsertCount();

  outputs.rows_updated    = run.getUpdateCount();

  outputs.rows_errors     = run.getErrorCount();

})(inputs, outputs);

3 REPLIES 3

vaishali231
Tera Guru

hey @MercBuilding 


try this :

(function execute(inputs, outputs) {

    // 1. Validate Data Source
    var ds = new GlideRecord('sys_data_source');
    if (!ds.get(inputs.dataSourceSysId)) {
        outputs.status = 'ERROR: Data Source not found';
        return;
    }

    try {

        // 2. Initialize Import Set Loader
        var loader = new GlideImportSetLoader();
        var importSetGR = loader.getImportSetGr(ds);

        if (!importSetGR || !importSetGR.sys_id) {
            outputs.status = 'ERROR: Could not initialize Import Set';
            return;
        }

        // 3. Load data into Import Set table
        loader.loadImportSetTable(importSetGR, ds);

        importSetGR.state = 'loaded';
        importSetGR.update();

        // 4. Run Transform Maps
        var transformer = new GlideImportSetTransformer();
        transformer.transformAllMaps(importSetGR);

        // 5. Query latest Import Set Run record
        var runGR = new GlideRecord('sys_import_set_run');
        runGR.addQuery('import_set', importSetGR.sys_id);
        runGR.orderByDesc('sys_created_on');
        runGR.setLimit(1);
        runGR.query();

        if (!runGR.next()) {
            outputs.status = 'ERROR: Transform did not execute';
            return;
        }

        // 6. Return results
        outputs.status          = 'SUCCESS';
        outputs.import_set_id   = importSetGR.getValue('number');
        outputs.import_set_sysid = importSetGR.getUniqueValue();
        outputs.rows_processed  = runGR.getValue('rows_processed');
        outputs.rows_inserted   = runGR.getValue('rows_inserted');
        outputs.rows_updated    = runGR.getValue('rows_updated');
        outputs.rows_ignored    = runGR.getValue('rows_ignored');
        outputs.rows_errors     = runGR.getValue('rows_errors');

    } catch (ex) {
        outputs.status = 'ERROR: ' + ex.message;
    }

})(inputs, outputs);


*************************************************************************************************************
If this response helps, please mark it as Accept as Solution and Helpful.
Doing so helps others in the community and encourages me to keep contributing.

Regards
Vaishali Singh

hey @MercBuilding 

Hope you are doing well.

Did my previous reply answer your question?

If it was helpful, please mark it as correct ✓ and close the thread 🔒. This will help other readers find the solution more easily.

Regards,
Vaishali Singh

Hi @vaishali231 ,

  Thanks for replying, but its not working. I have tried the same logic yesterday but didnt work.