The CreatorCon Call for Content is officially open! Get started here.

Process account and contact from json response

arunm04
Giga Contributor

Hello Community,

 

I'm new to integrations. We are integrating ServiceNow with a third party tool, where we get the JSON (attached). I need to process this JSON and insert the records in to account and contact table.

 

Any help on this is appreciated.

2 ACCEPTED SOLUTIONS

AnveshKumar M
Tera Sage
Tera Sage

Hi @arunm04 

You can try the following code to extract the data from JSON and insert it into customer_account and customer_contact tables.

 

var data = "YOUR_JSON"; //something like request.body.data, if it is stringifed JSON, parse it using JSON.parse()

var accGr = new GlideRecord("customer_account");
accGr.addQuery("identification_number", data.customerId);
accGr.query();
var acc_sys_id;
if (accGr.next()) {
    accGr.identification_number = data.customerId;
    accGr.name = data.customerName;
    //Address
    accGr.street = data.address.street + ", " + data.address.street2;
    accGr.city = data.address.city;
    accGr.state = data.address.state;
    accGr.zip = data.address.zipCode;
    accGr.country = data.address.country;
    accGr.update();
    acc_sys_id = accGr.getUniqueValue();
} else {
    accGr.initialize();
    accGr.identification_number = data.customerId;
    accGr.name = data.customerName;

    //Address
    accGr.street = data.address.street + ", " + data.address.street2;
    accGr.city = data.address.city;
    accGr.state = data.address.state;
    accGr.zip = data.address.zipCode;
    accGr.country = data.address.country;
    acc_sys_id = accGr.insert();
}

if (acc_sys_id) { //Account successfully inserted/updated
    //Fetch contatcs
    var contacts = data.customerContactViewList;
    for (key in contacts) {
        var con_sys_id;
        var conGr = new GlideRecord("customer_contact");
        conGr.addQuery("email", contacts[key].email);
        conGr.query();
        if (conGr.next()) { //If contact already exists, update the data
            conGr.phone = contacts[key].phone;
            conGr.email = contacts[key].email;
            var con_name = contacts[key].contactName;
            con_name = con_name.split(" ");
            conGr.first_name = con_name[0];
            conGr.last_name = con_name[1];
            conGr.account = acc_sys_id;
            conGr.update();
            con_sys_id = conGr.getUniqueValue();
        } else { //Contact not found, create new contact
            conGr.initialize();
            conGr.phone = contacts[key].phone;
            conGr.email = contacts[key].email;
            var con_name = contacts[key].contactName;
            con_name = con_name.split(" ");
            conGr.first_name = con_name[0];
            conGr.last_name = con_name[1];
            conGr.account = acc_sys_id;
            con_sys_id = conGr.insert();
        }
    }
}

 

Please mark my answer helpful and accept it as a solution, if it helped you 👍

Thanks,
Anvesh

View solution in original post

@arunm04 Try the following updated code to update the primary contact based assignmentType attribute in the JSON.

 

var data = "YOUR_JSON"; //something like request.body.data, if it is stringifed JSON, parse it using JSON.parse()

var accGr = new GlideRecord("customer_account");
accGr.addQuery("identification_number", data.customerId);
accGr.query();
var acc_sys_id;
if (accGr.next()) {
    accGr.identification_number = data.customerId;
    accGr.name = data.customerName;
    //Address
    accGr.street = data.address.street + ", " + data.address.street2;
    accGr.city = data.address.city;
    accGr.state = data.address.state;
    accGr.zip = data.address.zipCode;
    accGr.country = data.address.country;
    accGr.update();
    acc_sys_id = accGr.getUniqueValue();
} else {
    accGr.initialize();
    accGr.identification_number = data.customerId;
    accGr.name = data.customerName;

    //Address
    accGr.street = data.address.street + ", " + data.address.street2;
    accGr.city = data.address.city;
    accGr.state = data.address.state;
    accGr.zip = data.address.zipCode;
    accGr.country = data.address.country;
    acc_sys_id = accGr.insert();
}

if (acc_sys_id) { //Account successfully inserted/updated
    //Fetch contatcs
    var contacts = data.customerContactViewList;
    for (key in contacts) {
        var con_sys_id;
        var conGr = new GlideRecord("customer_contact");
        conGr.addQuery("email", contacts[key].email);
        conGr.query();
        if (conGr.next()) { //If contact already exists, update the data
            conGr.phone = contacts[key].phone;
            conGr.email = contacts[key].email;
            var con_name = contacts[key].contactName;
            con_name = con_name.split(" ");
            conGr.first_name = con_name[0];
            conGr.last_name = con_name[1];
            conGr.account = acc_sys_id;
            conGr.update();
            con_sys_id = conGr.getUniqueValue();
        } else { //Contact not found, create new contact
            conGr.initialize();
            conGr.phone = contacts[key].phone;
            conGr.email = contacts[key].email;
            var con_name = contacts[key].contactName;
            con_name = con_name.split(" ");
            conGr.first_name = con_name[0];
            conGr.last_name = con_name[1];
            conGr.account = acc_sys_id;
            con_sys_id = conGr.insert();
        }

        if(contacts[key].assignmentType == "Primary Customer"){
            var pConGr = new GlideRecord("customer_account");
            pConGr.get(acc_sys_id);
            pConGr.primary_contact = con_sys_id;
            pConGr.update();
        }
    }
}

 

 

Thanks,
Anvesh

View solution in original post

6 REPLIES 6

AnveshKumar M
Tera Sage
Tera Sage

Hi @arunm04 

You can try the following code to extract the data from JSON and insert it into customer_account and customer_contact tables.

 

var data = "YOUR_JSON"; //something like request.body.data, if it is stringifed JSON, parse it using JSON.parse()

var accGr = new GlideRecord("customer_account");
accGr.addQuery("identification_number", data.customerId);
accGr.query();
var acc_sys_id;
if (accGr.next()) {
    accGr.identification_number = data.customerId;
    accGr.name = data.customerName;
    //Address
    accGr.street = data.address.street + ", " + data.address.street2;
    accGr.city = data.address.city;
    accGr.state = data.address.state;
    accGr.zip = data.address.zipCode;
    accGr.country = data.address.country;
    accGr.update();
    acc_sys_id = accGr.getUniqueValue();
} else {
    accGr.initialize();
    accGr.identification_number = data.customerId;
    accGr.name = data.customerName;

    //Address
    accGr.street = data.address.street + ", " + data.address.street2;
    accGr.city = data.address.city;
    accGr.state = data.address.state;
    accGr.zip = data.address.zipCode;
    accGr.country = data.address.country;
    acc_sys_id = accGr.insert();
}

if (acc_sys_id) { //Account successfully inserted/updated
    //Fetch contatcs
    var contacts = data.customerContactViewList;
    for (key in contacts) {
        var con_sys_id;
        var conGr = new GlideRecord("customer_contact");
        conGr.addQuery("email", contacts[key].email);
        conGr.query();
        if (conGr.next()) { //If contact already exists, update the data
            conGr.phone = contacts[key].phone;
            conGr.email = contacts[key].email;
            var con_name = contacts[key].contactName;
            con_name = con_name.split(" ");
            conGr.first_name = con_name[0];
            conGr.last_name = con_name[1];
            conGr.account = acc_sys_id;
            conGr.update();
            con_sys_id = conGr.getUniqueValue();
        } else { //Contact not found, create new contact
            conGr.initialize();
            conGr.phone = contacts[key].phone;
            conGr.email = contacts[key].email;
            var con_name = contacts[key].contactName;
            con_name = con_name.split(" ");
            conGr.first_name = con_name[0];
            conGr.last_name = con_name[1];
            conGr.account = acc_sys_id;
            con_sys_id = conGr.insert();
        }
    }
}

 

Please mark my answer helpful and accept it as a solution, if it helped you 👍

Thanks,
Anvesh

Thanks for the response. I'll try this code and let you know.

Hi @arunm04 

Hope you are doing well!

Could you please mark my answer helpful and accept as solution if it helped you.

 

Thanks,
Anvesh

@AnveshKumar M Can you please also help me to make the contact with assignment level as Primary Customer to Primary contact for that account?