Unique Functionality

 Bulk Upload Records into the Table using Catalog Item

 

1.     Create a Record Producer:

Table name: Data Source [sys_data_source]

Execution Plan: DEFAULT

Short description: Import to Create - Issue IA track

Description

Please download the template to create Issue.

Please fill the downloaded document and attach to the same.

Mandatory Values

Engagement Name: *

 

Script:

 

var gr2 = new GlideRecord("sys_attachment");

gr2.addQuery("table_sys_id", current.sys_id);

var oC = gr2.addQuery("table_name", "sys_data_source");

gr2.query();

if (!gr2.next()) {

    gs.addErrorMessage("You must attach a file to submit. Your import submission has been aborted.");

    current.setAbortAction(true);

    producer.redirect = "com.glideapp.servicecatalog_cat_item_view.do?v=1&sysparm_id=a5d7beae1b074914f93fba23164bcb59";

} else {

    var file_name = gr2.getValue("file_name");

    if (gr2.getRowCount() > 1) {

        gs.addErrorMessage("You may only attach one file at a time for this import wizard. Your import submission has been aborted.");

        current.setAbortAction(true);

        producer.redirect = "com.glideapp.servicecatalog_cat_item_view.do?v=1&sysparm_id=a5d7beae1b074914f93fba23164bcb59";

 

    }

    // check to make sure the file format is correct on the attachment

    var passedFormatCheck = false;

 

    if (gr2.file_name.endsWith('.xls') == true || gr2.file_name.endsWith('.xlsx') == true) {

        passedFormatCheck = true;

    } else {

        passedFormatCheck = false;

        gs.addErrorMessage("This import type is expecting submission of an Excel file (.xls), but a different file format was attached. Your import submission has been aborted.");

        current.setAbortAction(true);

        producer.redirect = "com.glideapp.servicecatalog_cat_item_view.do?v=1&sysparm_id=a5d7beae1b074914f93fba23164bcb59";

    }

    if (passedFormatCheck == true) {

        var gDS = new GlideRecord('sys_data_source');

        gDS.get('3fd376621b074914f93fba23164bcb57');

        var transformMapIDs = "7fe3fa621b074914f93fba23164bcb96";

 

        // Process excel file

        var grs = new GlideRecord("sys_attachment");

        grs.addQuery("table_sys_id", '3fd376621b074914f93fba23164bcb57');

        grs.query();

        while (grs.next())

            grs.deleteRecord();

        var attachment = new GlideSysAttachment();

        var copiedAttachments = attachment.copy('sys_data_source', current.sys_id, 'sys_data_source', gDS.getValue('sys_id'));

        // Process excel file

        var loader = new GlideImportSetLoader();

        var importSetRec = loader.getImportSetGr(gDS);

        var ranload = loader.loadImportSetTable(importSetRec, gDS);

        importSetRec.state = "loaded";

        importSetRec.update();

 

 

 

        // Transform import set

        var transformWorker = new GlideImportSetTransformerWorker(importSetRec.sys_id, transformMapIDs);

        transformWorker.setBackground(true);

        transformWorker.start();

 

        //The script is inserting the data source, prevent the record producer from creating an additional insert

        current.setAbortAction(true);

        gs.addInfoMessage("Your import file has been submitted.");

 

        producer.redirect = "home.do";

    }

}

 

 

 

2.   Create the data source

 a.    Go to Load Data module

b.    Select the β€œCreate Table” and Give a name

c.     Select the excel file which is exported from list level

 

3.     Create Transform Map: IA Issue Bulk Upload Concurrent Audit

 

To update additional Assignee List:

answer = (function transformEntry(source) {

 

    // Add your code here

    // return the value to be put into the target field

    var depart = '';

    if (source.u_department != '' && source.u_department != 'NULL') {

        var department = new GlideRecord('cmn_department');

        department.addEncodedQuery('u_department_node_level=3^name=' + source.u_department);

        department.query();

        if (department.next()) {

            depart = department.getUniqueValue().toString();

        }

    }

    var addAssgnTo = '',

        assngedTo = source.u_additional_assignee.toString();

    var usr = new GlideRecord('sys_user');

    usr.addEncodedQuery('emailIN' + assngedTo + '^department.parent.parent.parent.parent=' + depart + '^ORdepartment=' + depart);

    usr.query();

    while (usr.next())

        if (addAssgnTo == '')

            addAssgnTo += usr.getValue('sys_id');

        else

            addAssgnTo += ',' + usr.getValue('sys_id');

//     if (addAssgnTo == '' || addAssgnTo == null) {

      //         if (assngedTo != '' && assngedTo != null)

      //             if (source.sys_import_row > 0)

      //                 source.u_error_message = "Additional assignee for row " + source.sys_import_row + " either incorrect email or do not belong to the respective department.";

      //     }

    return addAssgnTo;

})(source);

 

&

 

answer = (function transformEntry(source) {

        var depart = '';

        if(source.u_department != '' && source.u_department !='NULL'){

                        var department = new GlideRecord('cmn_department');

                        department.addEncodedQuery('u_department_node_level=3^name='+source.u_department);

                        department.query();

                        if(department.next()){

                                        depart = department.getUniqueValue().toString();

                        }

        }

        var addAssgnTo = '',

                        assngedTo = source.u_additional_assignee.toString();

        var usr = new GlideRecord('sys_user');

        usr.addEncodedQuery('emailIN' + assngedTo+'^department.parent.parent.parent.parent='+depart+ '^ORdepartment='+depart);

        usr.query();

        while (usr.next())

                        if (addAssgnTo == '')

                                        addAssgnTo += usr.getValue('sys_id');

                        else

                                        addAssgnTo += ',' + usr.getValue('sys_id');

        return addAssgnTo;

 

})(source);

 

To update the sn_audit_engagement details:

answer = (function transformEntry(source) {

    if (source.u_engagement_number) {

        var eng = new GlideRecord('sn_audit_engagement');

        eng.addEncodedQuery('number=' + source.u_engagement_number);

        eng.query();

        if (eng.next()) {

            var engagement = eng.name;

            engagement += ' ';

            engagement += eng.number;

            return engagement;

        } else {

//             if (source.sys_import_row > 0)

 //                 source.u_error_message = 'Engagement number entered for row ' + source.sys_import_row + ' is incorrect.';

            return false;

        }

    } else {

//         if (source.sys_import_row > 0)

//             source.u_error_message = 'No engagement number entered for row ' + source.sys_import_row;

        return false;

    }

 

 

})(source);

 

 

To update the watch_list:

 

answer = (function transformEntry(source) {

 

    // Add your code here

    // return the value to be put into the target field

    var watchListUser = '',

        sourceWatchList = source.u_watch_list.toString();

    var usr = new GlideRecord('sys_user');

    usr.addEncodedQuery('emailIN' + sourceWatchList);

    usr.query();

    while (usr.next())

        if (watchListUser == '')

            watchListUser += usr.getValue('sys_id');

        else

            watchListUser += ',' + usr.getValue('sys_id');

 

    return watchListUser;

})(source);

 

&

 

answer = (function transformEntry(source) {

     

      var addWatchList = '',

                  watchList = source.u_watch_list.toString();

      var usr = new GlideRecord('sys_user');

      usr.addEncodedQuery('emailIN' + watchList);

      usr.query();

      while (usr.next())

                  if (addWatchList == '')

                              addWatchList += usr.getValue('sys_id');

                  else

                              addWatchList += ',' + usr.getValue('sys_id');

      return addWatchList;

     

})(source);

 

 

To update the β€œassigned_to”:

answer = (function transformEntry(source) {

    //            if (!source.u_assigned_to.nil()) {

    //                        var bu = new GlideRecord('business_unit');

    //                        bu.get('name',source.u_department);

    //                        var usr = new GlideRecord('sys_user');

    //                        usr.addEncodedQuery('name=' + source.u_assigned_to + '^department.business_unit=' + bu.getValue('sys_id'));

    //                        usr.query();

    //                        if (usr.next())

    //                                    return usr.getDisplayValue();

    //                        else

    //                                    return "";

    //            } else {

    //                        return source.u_assigned_to;

    //            }

    if (source.u_department != '' && source.u_department != 'NULL') {

 

        var department = new GlideRecord('cmn_department');

        department.addEncodedQuery('u_department_node_level=3^name=' + source.u_department);

        department.query();

        if (department.next()) {

            var depart = '';

            depart = department.getValue('sys_id');

            var usr = new GlideRecord('sys_user');

            usr.addEncodedQuery('email=' + source.u_assigned_to + '^department.parent.parent.parent.parent=' + depart + '^ORdepartment=' + depart);

            usr.query();

            if (usr.next()) {

                return usr.getValue('sys_id');

            } else {

                if (source.sys_import_row > 0)

                    source.u_error_message = 'Entered value for Issue owner for row ' + source.sys_import_row + ' is either incorrect or user does not belong to the mentioned department.';

                return false;

            }

        }

    } else {     

        return false;

    }

})(source);

 

&

 

 

answer = (function transformEntry(source) {

 

      if(source.u_department != '' && source.u_department !='NULL'){

 

                  var department = new GlideRecord('cmn_department');

            department.addEncodedQuery('u_department_node_level=3^name='+source.u_department);

                  department.query();

                  if(department.next()){

                              var depart = '';

                              depart = department.getValue('sys_id');

                              var usr = new GlideRecord('sys_user');

                              usr.addEncodedQuery('email=' +source.u_assigned_to+'^department.parent.parent.parent.parent='+depart+ '^ORdepartment='+depart);

                              usr.query();

                              if (usr.next()){

 

                                          return usr.getValue('sys_id');

                              }

                              else

                                          return false;

                  }

      }

      else

                  return false;

})(source);

 

&

 

answer = (function transformEntry(source) {

    if (!source.u_department.nil()) {

                  var bu = new GlideRecord('business_unit');

                  bu.get('name',source.u_department);

        var usr = new GlideRecord('sys_user');

        usr.addEncodedQuery('name=' + source.u_assigned_to + '^department.business_unit=' + bu.getValue('sys_id')); // check if users department is same as mentioned dept

        usr.query();

        if (usr.next())

            return usr.getDisplayValue();

        else

            return "";

    } else {

        return source.u_assigned_to;

    }

})(source);

 

To update the Priority Value:

answer = (function transformEntry(source) {

 

    var issue = new GlideRecord('sn_grc_issue');

    if (issue.get('number', source.u_issue)) {

        var choice = new GlideRecord('sys_choice');

        choice.addEncodedQuery('element=priority^name=sn_grc_task^dependent_value=3^inactive=false^value=' + issue.getValue('priority'));

        choice.query();

        if (choice.next())

            return choice.getValue('value');

        else return 4;

    } else

        return 4; // return the value to be put into the target field

})(source);

 

To update the β€œDepartment”:

answer = (function transformEntry(source) {

     

      if(source.u_department != '' && source.u_department !='NULL'){

                  var department = new GlideRecord('cmn_department');

            department.addEncodedQuery('u_department_node_level=3^name='+source.u_department);

                  department.query();

                  if(department.next()){

                              return department.getUniqueValue().toString();

                  }

      }

      else{

                  return false;

      }

 

 

})(source);

 

To update Numeric field based on condidtion:

answer = (function transformEntry(source) {

 

    // Add your code here

    // return the value to be put into the target field

    var cyberSecurity = parseInt(source.u_strategic)

    if (cyberSecurity < 0 || cyberSecurity > 6) {

        if (cyberSecurity < 0)

            return '0';

        else if (cyberSecurity > 6)

            return '6';

    } else

        return cyberSecurity;

})(source);

 

 

To Update the Approvers:

answer = (function transformEntry(source) {

        if (!source.u_vertical_head.nil()) {

                        var usr = new GlideRecord('sys_user');

                        usr.addEncodedQuery('email=' + source.u_vertical_head);

                        usr.query();

                        if (usr.next())

                                        return usr.getDisplayValue();

                        else

                                        return false;

        } else {

                        return false;

        }

 

 

})(source);

 

 

To update the Auditors in Engagement:

answer = (function transformEntry(source) {

 

        var SourceAuditors = source.u_auditors,

                        Auditors = '';

        var usr = new GlideRecord('sys_user');

        usr.addEncodedQuery('emailIN' + SourceAuditors);

        usr.query();

        while (usr.next())

                        if (Auditors == '')

                                        Auditors += usr.getValue('sys_id').toString();

                        else

                                        Auditors += ',' + usr.getValue('sys_id').toString();

        return Auditors;

 

})(source);

 

 

 

 

 

 

4.     Create onBefore BusinessRule

(function runTransformScript(source, map, log, target /*undefined onStart*/ ) {

 

    var skip = false;

    var eng = source.u_engagement_number;

    var checkEng = new GlideRecord('sn_audit_engagement');

    checkEng.get('number', eng);

    if (checkEng.engagement_type != 17 || checkEng.state != 2 || checkEng.u_rt_and_issue_creation != true) {

        if (source.sys_import_row > 0)

            source.u_error_message = "Issue is not created for row " + source.sys_import_row + " because of one of the following reasons :1. Engagement type is not Concurrent Audit, 2. State is not Fieldwork, 3. RT / Issue creation checkbox is not checked. 4. Engagement number is incorrect.";

        skip = true;

    }

 

    if (source.sys_import_row == 0 || skip == true)

        ignore = true;

 

})(source, map, log, target);

 

&

 

(function runTransformScript(source, map, log, target /*undefined onStart*/ ) {

 

        if(source.sys_import_row==0)

                        ignore=true;

 

})(source, map, log, target);

 

 

&

 

(function runTransformScript(source, map, log, target /*undefined onStart*/ ) {

    var skip = false;

    var eng = source.u_engagement_number;

    var checkEng = new GlideRecord('sn_audit_engagement');

    checkEng.get('number', eng);

    if (checkEng.engagement_type != 17 || checkEng.state != 2 || checkEng.u_rt_and_issue_creation != true) {

        if (source.sys_import_row > 0)

            source.u_error_message = "Remediation task is not created for row " + source.sys_import_row + " because of one of the following reasons :1. Engagement type is not Concurrent Audit, 2. State is not Fieldwork, 3. RT / Issue creation checkbox is not checked. 4. Engagement number is incorrect.";

        skip = true;

    }

    var issue_number = source.u_issue_number;

    var issue = new GlideRecord('sn_grc_issue');

    issue.addEncodedQuery('number=' + issue_number);

    issue.query();

    if (!issue.next()) {

        if (source.sys_import_row > 0) {

            source.u_error_message = "Remediation task is not created for row " + source.sys_import_row + " because given Issue number does not exist.";

            skip = true;

        }

    }

    if (source.sys_import_row == 0) {

        ignore = true;

    } else if (skip == true) {

        ignore = true;

    }

 

})(source, map, log, target);

 

 

5.     Create report to identify the errors occurred during the import file

Report on data source table

 

 

 

 

 

 

Created catalog items for VRM Vendor Master Template

Contract Template

Risk Tiering Template

Performance Review Template

Reassignment Template

Onsite Review Template

Onsite Review DSA Template

 

 

Script:

var cat_item_sysID = gs.getProperty('idfc.GRC.VRM.bulk.upload.RP.sys_id');

var vendor_bulk_upload_import_set_sysID = gs.getProperty('idfc.GRC.VRM.IRM.bulk.data.upload.import.set.sys_id');

var tiering_bulk_upload_import_set_sysID = gs.getProperty('idfc.GRC.VRM.IRM.tiering.bulk.data.upload.import.set.sys_id');

var perf_review_import_set_sysID = gs.getProperty('idfc.GRC.VRM.IRM.performance_review.data.upload.import.set.sys_id');

var reassignment_import_set_sysID = gs.getProperty('idfc.GRC.VRM.IRM.reassignment.data.upload.import.set.sys_id');

var onsite_review_import_set_sysID = gs.getProperty('idfc.GRC.VRM.IRM.onsite_review.data.upload.import.set.sys_id');

var onsite_review_dsa_import_set_sysID = gs.getProperty('idfc.GRC.VRM.IRM.onsite_review_dsa.data.upload.import.set.sys_id');

 

var gr2 = new GlideRecord("sys_attachment");

gr2.addQuery("table_sys_id", current.sys_id);

var oC = gr2.addQuery("table_name", "sys_data_source");

oC.addOrCondition("table_name", "sc_cart_item");

gr2.query();

if (!gr2.next()) {

    gs.addErrorMessage("You must attach a file to submit. Your import submission has been aborted.");

    current.setAbortAction(true);

    producer.redirect = "com.glideapp.servicecatalog_cat_item_view.do?v=1&sysparm_id=" + cat_item_sysID.toString();

} else {

    var file_name = gr2.getValue("file_name");

    if (gr2.getRowCount() > 1) {

        gs.addErrorMessage("You may only attach one file at a time for this import wizard. Your import submission has been aborted.");

        current.setAbortAction(true);

        producer.redirect = "com.glideapp.servicecatalog_cat_item_view.do?v=1&sysparm_id=" + cat_item_sysID.toString();

 

    }

    // check to make sure the file format is correct on the attachment

    var passedFormatCheck = false;

 

    if (gr2.file_name.endsWith('.xls') == true || gr2.file_name.endsWith('.xlsx') == true) {

        passedFormatCheck = true;

    } else {

        passedFormatCheck = false;

        gs.addErrorMessage("This import type is expecting submission of an Excel file (.xls), but a different file format was attached. Your import submission has been aborted.");

        current.setAbortAction(true);

        producer.redirect = "com.glideapp.servicecatalog_cat_item_view.do?v=1&sysparm_id=" + cat_item_sysID.toString();

    }

 

}

 

 

if (producer.getValue("v_please_select_data_table") == "vendor") {

 

    var parser = new sn_impex.GlideExcelParser();

    var attachment = new GlideSysAttachment();

    var attachmentStream = attachment.getContentStream(gr2.sys_id.toString());

    parser.parse(attachmentStream);

    var headers = parser.getColumnHeaders();

    var header1 = headers[0];

    var header2 = headers[1];

    var header3 = headers[2];

    var header4 = headers[3];

    var header5 = headers[4];

    var header6 = headers[5];

    var header7 = headers[6];

    var header8 = headers[7];

    var header9 = headers[8];

    var header10 = headers[9];

    var header11 = headers[10];

    var header12 = headers[11];

    var header13 = headers[12];

    var header14 = headers[13];

    var header15 = headers[14];

    var header16 = headers[15];

    var header17 = headers[16];

    var header18 = headers[17];

    var header19 = headers[18];

    var header20 = headers[19];

    var header21 = headers[20];

    var header22 = headers[21];

    var header23 = headers[22];

    var header24 = headers[23];

    var header25 = headers[24];

    var header26 = headers[25];

    var header27 = headers[26];

    var header28 = headers[27];

    var header29 = headers[28];

    var header30 = headers[29];

    var header31 = headers[30];

    var header32 = headers[31];

 

 

 

    if (header1 == "Vendor Name" && header2 == "Vendor PAN" && header3 == "Vendor Code" && header4 == "Vendor Address-Line1" && header5 == "Vendor Address-Line2" && header6 == "Vendor Address-Line3" && header7 == "Vendor Address-City" && header8 == "Vendor Address-State" && header9 == "Vendor Address-PinCode" && header10 == "Vendor Type" && header11 == "Description of activities (DD)" && header12 == "Type of activities (DD)" && header13 == "Business function-L2" && header14 == "Business Unit-L3" && header15 == "Product" && header16 == "Vendor Contact Country Code" && header17 == "Vendor Contact Number (Mobile)" && header18 == "Vendor Contact Number (Land-Line)" && header19 == "Vendor Contact Number (Alternate-1)" && header20 == "Vendor Contact Number (Alternate-2)" && header21 == "Vendor Contact Number (Alternate-3)" && header22 == "Vendor Relationship Manager" && header23 == "VRM Email Address" && header24 == "Vendor Contact Person Name" && header25 == "Vendor Email" && header26 == "Vendor Email (Alternate-1)" && header27 == "Vendor Email  (Alternate-2)" && header28 == "Vendor Status" && header29 == "Vendor key official name" && header30 == "Vendor key official-Email Address" && header31 == "Entity- DD" && header32 == "Vendor tiering") {

        if (passedFormatCheck == true) {

 

            // current.name = file_name;

            current.name = gs.nowDateTime();

            current.format = "Excel";

            current.import_set_table_name = "sn_vdr_risk_asmt_vrm_bulk_data_upload";

            current.header_row = '1';

            current.sheet_number = '1';

            current.file_retrieval_method = "Attachment";

            current.type = "File";

 

            //Data source needs to be created before we can trigger the commands below, so we create the record outside of the normal record producer method

 

            var vendor = new GlideRecord('scheduled_import_set');

            vendor.addQuery('sys_id', vendor_bulk_upload_import_set_sysID.toString()); //sys_id for scheduled import

            vendor.query();

            if (vendor.next()) {

                vendor.data_source = current.sys_id.toString();

                vendor.run_as = gs.getUserID();

                vendor.update();

 

                SncTriggerSynchronizer.executeNow(vendor); //Execute the scheduled import

            }

            producer.redirect = "com.glideapp.servicecatalog_cat_item_view.do?v=1&sysparm_id=" + cat_item_sysID.toString();

            gs.addInfoMessage("Email Notification Sent.Please Navigate to All Vendor Screen for Succesfull Entries.Bulk Upload Error Data Screen for Unsuccessfull Entries");

 

 

        }

    } else {

        gs.addErrorMessage("Excel column name not vaild or not in correct sequence");

        current.setAbortAction(true);

        producer.redirect = "com.glideapp.servicecatalog_cat_item_view.do?v=1&sysparm_id=" + cat_item_sysID.toString();

    }

 

}

 

 

 

if (producer.getValue("v_please_select_data_table") == "contract") {

 

    var parser3 = new sn_impex.GlideExcelParser();

    var attachment3 = new GlideSysAttachment();

    var attachmentStream3 = attachment3.getContentStream(gr2.sys_id.toString());

    parser3.parse(attachmentStream3);

    var headers3 = parser3.getColumnHeaders();

    var header41 = headers3[0];

    var header42 = headers3[1];

    var header43 = headers3[2];

    var header44 = headers3[3];

    var header45 = headers3[4];

    var header46 = headers3[5];

    var header47 = headers3[6];

    var header48 = headers3[7];

    var header51 = headers3[8];

    var header53 = headers3[9];

    var header54 = headers3[10];

 

 

    if (header41 == "Engagement Number" && header42 == "Contract Model" && header43 == "Start date" && header44 == "End date" && header45 == "Agreement Custody Status" && header46 == "Short Description" && header47 == "VRM Name" && header48 == "VRM Email" && header51 == "PO Number" && header53 == "Vendor account" && header54 == "Vendor Payment Code") {

 

        if (passedFormatCheck == true) {

 

            current.name = file_name;

            current.format = "Excel";

            current.import_set_table_name = "sn_vdr_risk_asmt_bulk_vrm_contract_data";

            current.header_row = '1';

            current.sheet_number = '1';

            current.file_retrieval_method = "Attachment";

            current.type = "File";

 

            var gr1 = new GlideRecord('scheduled_import_set');

            gr1.addQuery('sys_id', vendor_bulk_upload_import_set_sysID.toString()); //sys_id for scheduled import

            gr1.query();

            if (gr1.next()) {

                gr1.data_source = current.sys_id.toString();

                gr1.run_as = gs.getUserID();

                gr1.update();

 

                SncTriggerSynchronizer.executeNow(gr1); //Execute the scheduled import

            }

 

 

            producer.redirect = "com.glideapp.servicecatalog_cat_item_view.do?v=1&sysparm_id=" + cat_item_sysID.toString();

            gs.addInfoMessage("Email Notification Sent.Please Navigate to All Contracts Screen for Succesfull Entries.Bulk Upload Error Data Screen for Unsuccessfull Entries");

 

        }

    } else {

        gs.addErrorMessage("Excel column name not vaild or not in correct sequence");

        current.setAbortAction(true);

        producer.redirect = "com.glideapp.servicecatalog_cat_item_view.do?v=1&sysparm_id=" + cat_item_sysID.toString();

    }

}

 

 

if (producer.getValue("v_please_select_data_table") == "annual_tiering") {

    var parser4 = new sn_impex.GlideExcelParser();

    var attachment4 = new GlideSysAttachment();

    var attachmentStream4 = attachment4.getContentStream(gr2.sys_id.toString());

    parser4.parse(attachmentStream4);

    var headers4 = parser4.getColumnHeaders();

    var header60 = headers4[0];

    var header61 = headers4[1];

    var header62 = headers4[2];

    var header63 = headers4[3];

    var header64 = headers4[4];

    var header65 = headers4[5];

    var header66 = headers4[6];

    var header67 = headers4[7];

    var header68 = headers4[8];

    var header69 = headers4[9];

    var header70 = headers4[10];

    var header71 = headers4[11];

    var header72 = headers4[12];

    var header73 = headers4[13];

    var header74 = headers4[14];

    var header75 = headers4[15];

    var header76 = headers4[16];

    var header77 = headers4[17];

    var header78 = headers4[18];

    var header79 = headers4[19];

    var header80 = headers4[20];

    var header81 = headers4[21];

    var header82 = headers4[22];

    var header83 = headers4[23];

    var header84 = headers4[24];

    var header85 = headers4[25];

    var header86 = headers4[26];

    var header87 = headers4[27];

    var header88 = headers4[28];

    var header89 = headers4[29];

    var header90 = headers4[30];

    var header91 = headers4[31];

    var header92 = headers4[32];

    var header93 = headers4[33];

    var header94 = headers4[34];

 

 

 

    if (header60 == "Engagament ID" && header61 == "Year of tiering" && header62 == "Review Number" && header63 == "Planned Start Date" && header64 == "Planned End Date" && header65 == "Actual Start Date" && header66 == "Actual End date" && header67 == "Is the activity classified as \"Material\" as per Bank's outsourcing policy" && header68 == "The importance of the vendor in the banking industry, level of reliance by various Banks and concentration of services being provided" && header69 == "Geographical, Political, social or legal circumstances of the country if vendor is operating outside India" && header70 == "Financial Soundness of the service provider" && header71 == "What is the level of regulatory emphasis on the nature of activity" && header72 == "What is the vendor's past performance in regulatory adherence" && header73 == "Does the outsourced process directly contribute to any regulatory obligation of the Bank" && header74 == "Experience of the vendor in delivering this process in the Industry" && header75 == "Does the vendor have adequate policies and SOPs in place to deliver the activity" && header76 == "Reputational impact on Bank in case of any failure / breach at Vendor" && header77 == "Ability to manage customer complaints and grievances" && header78 == "Is the vendor seeking any deviation from Bank's standard terms and conditions" && header79 == "Are there any contractual limitations on financial remedies to the Bank" && header80 == "What is the potential for litigation on the Bank in case of vendor failures" && header81 == "The criticality of the vendor on business continuity of the Bank" && header82 == "Level of vendor's dependency on sub-contractors" && header83 == "Does the vendor have proper BCM framework and a periodical testing mechanism" && header84 == "What is the level of difficulty in replacing the vendor" && header85 == "What is the Bank's ability to deliver process in-house in case of vendor failure" && header86 == "What is the nature of integration with the Bank's systems" && header87 == "What is the type of data shared with the vendor" && header88 == "What is the classification of the information shared with the vendor" && header89 == "What is the location of data processing and storage" && header90 == "Whether the data will be stored outside India" && header91 == "What is the quantum of data available with the vendor" && header92 == "Availability of an independent IS Audit mechanism" && header93 == "Does the Vendor has ISMS Policy and Security standard certification in place" && header94 == "Past history of IS / Cyber leakages and breaches") {

        if (passedFormatCheck == true) {

 

            // current.name = file_name;

            current.name = gs.nowDateTime();

            current.format = "Excel";

            current.import_set_table_name = "sn_vdr_risk_asmt_vrm_bulk_tiering_data";

            current.header_row = '1';

            current.sheet_number = '1';

            current.file_retrieval_method = "Attachment";

            current.type = "File";

 

            //Data source needs to be created before we can trigger the commands below, so we create the record outside of the normal record producer method

 

            var risk_tier = new GlideRecord('scheduled_import_set');

            risk_tier.addQuery('sys_id', tiering_bulk_upload_import_set_sysID.toString()); //sys_id for scheduled import

            risk_tier.query();

            if (risk_tier.next()) {

                risk_tier.data_source = current.sys_id.toString();

                risk_tier.run_as = gs.getUserID();

                risk_tier.update();

 

                SncTriggerSynchronizer.executeNow(risk_tier); //Execute the scheduled import

            }

            producer.redirect = "com.glideapp.servicecatalog_cat_item_view.do?v=1&sysparm_id=" + cat_item_sysID.toString();

            gs.addInfoMessage("Email Notification Sent.Please Navigate to All Tiering Screen for Succesfull Entries.Bulk Upload Error Data Screen for Unsuccessfull Entries");

 

 

        }

    } else {

        gs.addErrorMessage("Excel column name not vaild or not in correct sequence");

        current.setAbortAction(true);

        producer.redirect = "com.glideapp.servicecatalog_cat_item_view.do?v=1&sysparm_id=" + cat_item_sysID.toString();

    }

}

 

// Bulk Performance Review

if (producer.getValue("v_please_select_data_table") == "performance_review") {

 

    var result = new global.INMRecordProducerBulkUploadUtils().performance_review_bulk_upload(current, passedFormatCheck, gr2.sys_id.toString(), perf_review_import_set_sysID.toString(), current.sys_id.toString());

 

    if (result == 'true' || result == true) {

        producer.redirect = "com.glideapp.servicecatalog_cat_item_view.do?v=1&sysparm_id=" + cat_item_sysID.toString();

        gs.addInfoMessage("Email Notification Sent.Please Navigate to All Tiering Screen for Succesfull Entries.Bulk Upload Error Data Screen for Unsuccessfull Entries");

    } else {

        gs.addErrorMessage("Excel column name not vaild or not in correct sequence");

        current.setAbortAction(true);

        producer.redirect = "com.glideapp.servicecatalog_cat_item_view.do?v=1&sysparm_id=" + cat_item_sysID.toString();

    }

}

 

// Bulk Assessor Reassignment

if (producer.getValue("v_please_select_data_table") == "bulk_assessor_reassignment") {

 

    var result2 = new global.INMRecordProducerBulkUploadUtils().bulk_reassignment(current, passedFormatCheck, gr2.sys_id.toString(), reassignment_import_set_sysID.toString(), current.sys_id.toString());

 

    if (result2 == 'true' || result2 == true) {

        producer.redirect = "com.glideapp.servicecatalog_cat_item_view.do?v=1&sysparm_id=" + cat_item_sysID.toString();

        gs.addInfoMessage("Email Notification Sent.Please Navigate to All Tiering Screen for Succesfull Entries.Bulk Upload Error Data Screen for Unsuccessfull Entries");

 

    } else {

        gs.addErrorMessage("Excel column name not vaild or not in correct sequence");

        current.setAbortAction(true);

        producer.redirect = "com.glideapp.servicecatalog_cat_item_view.do?v=1&sysparm_id=" + cat_item_sysID.toString();

    }

}

 

// Bulk Onsite Review

if (producer.getValue("v_please_select_data_table") == "onsite_review") {

 

    var result3 = new global.INMRecordProducerBulkUploadUtils().bulk_onsite_review(current, passedFormatCheck, gr2.sys_id.toString(), onsite_review_import_set_sysID.toString(), current.sys_id.toString());

 

    if (result3 == 'true' || result3 == true) {

        producer.redirect = "com.glideapp.servicecatalog_cat_item_view.do?v=1&sysparm_id=" + cat_item_sysID.toString();

        gs.addInfoMessage("Email Notification Sent.Please Navigate to All Tiering Screen for Succesfull Entries.Bulk Upload Error Data Screen for Unsuccessfull Entries");

 

    } else {

        gs.addErrorMessage("Excel column name not vaild or not in correct sequence");

        current.setAbortAction(true);

        producer.redirect = "com.glideapp.servicecatalog_cat_item_view.do?v=1&sysparm_id=" + cat_item_sysID.toString();

    }

}

 

// Bulk Onsite Review DSA

if (producer.getValue("v_please_select_data_table") == "onsite_review_dsa") {

 

    var result4 = new global.INMRecordProducerBulkUploadUtils().bulk_onsite_review_dsa(current, passedFormatCheck, gr2.sys_id.toString(), onsite_review_dsa_import_set_sysID.toString(), current.sys_id.toString());

 

    if (result4 == 'true' || result4 == true) {

        producer.redirect = "com.glideapp.servicecatalog_cat_item_view.do?v=1&sysparm_id=" + cat_item_sysID.toString();

        gs.addInfoMessage("Email Notification Sent.Please Navigate to All Tiering Screen for Succesfull Entries.Bulk Upload Error Data Screen for Unsuccessfull Entries");

 

    } else {

        gs.addErrorMessage("Excel column name not vaild or not in correct sequence");

        current.setAbortAction(true);

        producer.redirect = "com.glideapp.servicecatalog_cat_item_view.do?v=1&sysparm_id=" + cat_item_sysID.toString();

    }

}

 

 

 

Transform Map:

onBefore:

 

(function runTransformScript(source, map, log, target /*undefined onStart*/ ) {

 

    var flag = "true";

    var madt = "true";

    var msg = [];

    var pattern2 = /^(([^<>()[\]\\.,;:\s@]+(\.[^<>()[\]\\.,;:\s@]+)*)|(.+))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;

 

    var gr41 = new GlideRecord("sn_vdr_risk_asmt_vendor_engagement");

    gr41.addQuery("u_number", source.u_engagement_number);

    gr41.query();

    if (!gr41.next()) {

        msg += "Invalid Engagement number,";

        flag = "false";

    } else {

        var gr1 = new GlideRecord("ast_contract");

        gr1.addQuery("u_engagement", gr41.getValue("sys_id"));

        gr1.query();

        if (gr1.next()) {

 

            msg += "Contract already exits with no - " + gr1.getValue("number");

            flag = "false";

        }

 

    }

 

 

    var object = {

        "engagementnumber": source.getValue("u_engagement_number"),

        "vrmemail": source.getValue("u_vrm_email"),

        "startdate": source.getValue("u_start_date"),

        "enddate": source.getValue("u_end_date"),

        "model": source.getValue("u_contract_model")

 

 

    };

 

    var missMendatoryFields = [];

    for (var key in object) {

 

        if (object[key] == undefined || object[key] == "undefined" || typeof(object[key]) == "undefined" || object[key] == '' || object[key] == ' ' || object[key] == "null" || object[key] == null) {

 

            madt = "false";

 

        }

    }

 

    if (madt == "false") {

        msg += "Few manadatory fields data are missing / Please check the of start date, end date formate even you fill the data manadatory fields,";

 

        flag = "false";

    }

 

 

    if (source.u_engagement_number) {

 

        var gr4 = new GlideRecord("sn_vdr_risk_asmt_vendor_engagement");

        gr4.addQuery("u_number", source.u_engagement_number);

        gr4.query();

        if (gr4.next()) {

            target.u_engagement = gr4.getValue("sys_id");

            target.vendor = gr4.getValue("vendor");

            var gr22 = new GlideRecord("core_company");

            gr22.addQuery("sys_id", gr4.getValue("vendor"));

            gr22.query();

            if (gr22.next()) {

                target.u_vendor_code = gr22.getValue("u_number");

            }

 

        }

    }

 

 

    if (source.u_agreement_custody_status) {

        var gr = new GlideRecord("sys_choice");

        gr.addQuery("name", "ast_contract");

        gr.addQuery("label", source.u_agreement_custody_status);

        gr.query();

        if (!gr.next()) {

            msg += "Error in Agreement custody status type dropdown,";

            flag = "false";

        } else {

 

            target.u_agreement_custody_status = gr.getValue("value");

        }

    }

 

    if (source.u_contract_model) {

        var gr10 = new GlideRecord("cmdb_model");

        gr10.addQuery("name", source.u_contract_model);

        gr10.query();

        if (!gr10.next()) {

            msg += "Error in Contract Model dropdown,";

            flag = "false";

        } else {

 

            target.contract_model = gr10.getValue("sys_id");

        }

 

    }

 

    if (source.u_vrm_email) {

 

 

        if ((!pattern2.test(source.getValue("u_vrm_email")))) {

            msg += 'invalid VRM Email Address,';

            flag = "false";

        } else {

            var gr6 = new GlideRecord("sys_user");

            gr6.addQuery("email", source.u_vrm_email);

            gr6.query();

            if (!gr6.next()) {

                msg += "Invalid VRM User email,";

                flag = "false";

            } else {

 

                target.u_vendor_relationship_manager = gr6.getValue("sys_id");

                target.u_vrm_email = source.u_vrm_email;

            }

        }

    }

 

    if (source.getValue("u_start_date")) {

        var k = source.getValue("u_start_date");

        var p = k.split("-");

        if (p.length != '3') {

            msg += 'Invalid start date formate';

            flag = "false";

        }

    }

               

                if (source.getValue("u_end_date")) {

        var k1 = source.getValue("u_end_date");

        var p1 = k1.split("-");

        if (p1.length != '3') {

            msg += 'Invalid end date formate';

            flag = "false";

        }

    }

 

    if ((source.getValue("u_start_date")) && (source.getValue("u_end_date"))) {

        var dt1 = source.getValue("u_start_date");

        var dt2 = source.getValue("u_end_date");

        if (dt1 > dt2) {

            msg += 'start date is greater then end date';

            flag = "false";

        }

    }

 

    target.u_source_id = "excel";

 

 

 

    if (flag == "false") {

        source.u_number = source.getDisplayValue("sys_import_set");

        source.u_error_message = msg;

        ignore = "true";

    }

 

 

})(source, map, log, target);

 

 

onComplete:

(function runTransformScript(source, map, log, target /*undefined onStart*/ ) {

 

GlideSysAttachment.copy('sys_data_source',source.sys_import_set.data_source,'sys_import_set',source.sys_import_set);

 

                var grUser = new GlideRecord('sys_user');

grUser.addQuery('user_name', import_set.sys_created_by); //the import set record is created by the user who initiates the import

grUser.query();

if (grUser.next()){

  

    gs.eventQueue('sn_vdr_risk_asmt.bulk_contract_data_noti', import_set, grUser.sys_id);

}

 

})(source, map, log, target);

 

Comments

Popular posts from this blog

Interview Questions

Exam Dumps