How can we insert multiple records in a table through scheduled job.

Munna1
Tera Contributor
 
1 REPLY 1

Weird
Mega Sage

It's a bit hard to say since we don't know much of the background, but generally a good place to check is the reference fields. When you loop a GR you might end up looking at the same record in each loop if you have something like var x = gr.sys_id; Instead you want to use gr.getValue('sys_id') or gr.sys_id.toString() for any field or gr.getUniqueValue() for sys_ids. This way you make sure each of your loops keep using values from the current loop.

For example:

var grs = new GlideRecord("cmdb_ci_auto_data");
grs.addEncodedQuery("u_application_idISNOTEMPTY");
//grs.setLimit(1);
grs.query();
while (grs.next()) {
    //gs.print(grs.getAggregate("count")+"@--"+grs.getValue("u_application_id") );
    var app_id = grs.u_application_id.toString();
    var app_sysid = grs.sys_id.toString();
    // calling Rest API
    var contact_sub_type = '';
    var email = '';
    var user_sysid = '';
    var smeflag = 0;
    var roflag = 0;
    var adlflag = 0;
    var counter = 0;


    var r = new sn_ws.RESTMessageV2('APPDATA', 'GET_APP_TRACK');
    r.setStringParameterNoEscape('app_id', app_id);
    var response = r.execute();
    var responseBody = response.getBody();
    var httpStatus = response.getStatusCode();


    var obj = JSON.parse(responseBody);
    if (httpStatus == 200) {
        for (var i = 0; i < obj.length; i++) {
            // gs.info(obj[i].Name);
            contact_sub_type = obj[i].Name;
            email = obj[i].Email;

            var gruser = new GlideRecord('sys_user');
            gruser.addQuery('email', email);
            gruser.query();
            if (gruser.next()) {
                user_sysid = gruser.sys_id.toString();
            }
            if (attribute == 'RGE') {
                smeflag = 1;
                counter = counter + 1;
                var grassoc_check = new GlideRecord('u_associations');
                grassoc_check.addQuery('u_association_record', app_sysid);
                grassoc_check.addQuery('u_attribute', 'RGE');
                grassoc_check.addQuery('operational_status', 1);
                grassoc_check.query();
                if (grassoc_check.next()) {
                    grassoc_check.u_user_association = user_sysid;
                    grassoc_check.setWorkflow(false);
                    grassoc_check.update();
                } else {
                    var grassoc = new GlideRecord('u_associations');
                    grassoc.initialize();
                    grassoc.name = "Application Contacts";
                    grassoc.u_association_record = app_sysid;
                    grassoc.u_user_association = user_sysid;
                    grassoc.operational_status = '1';
                    //grassoc.sys_class_name = 'u_associations'; unnecessary
                    grassoc.insert();
                }
            }
        }
    }
                var grs1 = new GlideRecord('u_associations');
                grs1.addQuery('u_association_record', app_sysid);
                grs1.addQuery('operational_status', 1);
                grs1.query();
                var association_record_count = grs1.getRowCount();
                if (counter < association_record_count) {
                    if (smeflag == 0) {
                        var grSetRetired = new GlideRecord('u_associations');
                        grSetRetired.addQuery('u_association_record', app_sysid);
                        grSetRetired.addQuery('u_attribute', 'RGE');
                        grSetRetired.query();
                        if (grSetRetired.next()) {
                            grSetRetired.operational_status = 6;
                            grSetRetired.setWorkflow(false);
                            grSetRetired.update();
                        }
                    }
                }
}

Oh and try to use same convention when naming variables.
grassoc_check, grs1 and grSetRetired make it harder to follow the code. Instead you could just have
grAssocCheck, grAssocActive, grSetRetired for example to unify the code.