Find your people. Pick a challenge. Ship something real. The CreatorCon Hackathon is coming to the Community Pavilion for one epic night. Every skill level, every role welcome. Join us on May 5th and learn more here.

Warranty integration with Dell Tech Direct

Tharun_346
Tera Contributor

Hello ALL,

I am looking to integrate with Dell Tech Direct, to get the warranty information in SNOW. Activated the Warranty API

From Dell Tech Direct! & received the required information (Client ID, Secret value),

In SNOW created a Outbound REST Message by filling required details.

Endpoint

HTTP Query parameters

HTTP Request

After the configuration, when i tested in SNOW, I am getting the below error.

Can Please guide me, what is the possible reason for this.

error message.png

 

4 REPLIES 4

Bob Hage
Tera Expert

I just set this up for a client. 

Create an oAuth registry entry to retrieve API key.

Set authentication on the Outbound REST to use the registry entry created above.

Tharun_346
Tera Contributor

Hello Bob Hage,

I was able to connect to the API, And getting the response, However from the response unable to fetch 'endDate'.

below is the script, which i am trying to fetch the endDate. PFA for the response.

(function executeRule(current, previous /*null when async*/ ) {
var st = current.serial_number.toLowerCase();
try {
var r = new sn_ws.RESTMessageV2('Warranty Tech Direct', 'Default GET');
r.setStringParameterNoEscape('servicetags', st);
r.setQueryParameter('apikey', gs.getProperty('DellTechDirectKey'));
r.setHttpTimeout(10000);
r.setEccParameter('skip_sensor', true);
var response = r.execute();
var responseBody = response.getBody();
var httpStatus = response.getStatusCode();
gs.info("Status = " + httpStatus);
gs.info("Response Body = " + responseBody);

if (httpStatus == '200') {
var responseObj = JSON.parse(responseBody);
var edate = responseObj.endDate.toString();
current.warranty_expiration = edate;
} else {

gs.addErrorMessage('Looks like we ran into a problem. HTTP status: ' + httpStatus);
}
} catch (ex) {
var message = ex.getMessage();
}
})(current, previous);

 

 

 

There are several warranty contracts returned from Dell. Here is a snipit of the code I used to identify each of the contract end dates. I built a Warranty contract for each unique entry returned in the array and then added the asset to the Assets Covered related list for that contract.

 

var ent = JSON.parse(responseBody);
    for (i = 0; i < ent[0].entitlements.length; i++) {
        var endDate = ent[0].entitlements[i].endDate.substring(0, 10);
        var startDate = ent[0].entitlements[i].startDate.substring(0, 10);
        var cntNbr = ent[0].entitlements[i].itemNumber + ' ' + startDate + '_' + endDate;
        var myCnt = '';

        var cnt = new GlideRecord('ast_contract');
        if (cnt.get('vendor_contract', cntNbr)) {
            myCnt = cnt.sys_id + '';
        } else {
            cnt.newRecord();
            var desc = "itemNumber: " + ent[0].entitlements[i].itemNumber + "\n";
            desc += 'startDate: ' + ent[0].entitlements[i].startDate + "\n";
            desc += 'endDate: ' + ent[0].entitlements[i].endDate + "\n";
            desc += 'entitlementType: ' + ent[0].entitlements[i].entitlementType + "\n";
            desc += 'serviceLevelCode: ' + ent[0].entitlements[i].serviceLevelCode + "\n";
            desc += 'serviceLevelDescription: ' + ent[0].entitlements[i].serviceLevelDescription + "\n";
            desc += 'serviceLevelGroup: ' + ent[0].entitlements[i].serviceLevelGroup + "\n";
            cnt.contract_model.setDisplayValue('Warranty');
 
            // This will need to be changed to match your vendor
            cnt.vendor.setDisplayValue('Dell Marketing'); 
 
            cnt.vendor_contract = cntNbr;
            cnt.short_description = ent[0].entitlements[i].serviceLevelDescription;
            cnt.starts = startDate;
            cnt.ends = endDate;
            cnt.description = desc;
            myCnt = cnt.insert();
       }
        var assetsCovered = new GlideRecord('clm_m2m_contract_asset');
        var myAsset = current.sys_id + '';
        assetsCovered.addEncodedQuery('contract=' + myCnt + '^asset=' + myAsset);
        assetsCovered.query();
        if (!assetsCovered.next()) {
            assetsCovered.newRecord();
            assetsCovered.contract = myCnt;
            assetsCovered.asset = myAsset;
            assetsCovered.insert();
        }
    }

 

satish_keth
Tera Contributor

Hello Bob, I am running into the some issues setting up the Oauth registry; My screenshot is below

dell.png

When I try "Get OAuth token" ; I get below error; Pls help !

oauth.png