- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-03-2022 05:17 AM - edited 10-03-2022 06:12 AM
Hello All,
I am working on an inbound integration in ServiceNow. When I send request from source instance I am able to receive all the field values in the target instance except configuration item field(cmdb_ci). It is blank.
Please find the below script that I have added.
Source Instance:
Business Rule:
(function executeRule(current, previous /*null when async*/) {
var request = new sn_ws.RESTMessageV2('Sending Data Create','Post');
request.setStringParameterNoEscape('short_description',current.short_description);
request.setStringParameterNoEscape('description',current.description);
request.setStringParameterNoEscape('category',current.category);
request.setStringParameterNoEscape('subcategory',current.subcategory);
request.setStringParameterNoEscape('impact',current.impact);
request.setStringParameterNoEscape('urgency',current.urgency);
request.setStringParameterNoEscape('priority',current.priority);
request.setStringParameterNoEscape('comments',current.comments);
request.setStringParameterNoEscape('work_notes',current.work_notes);
request.setStringParameterNoEscape('number',current.number);
request.setStringParameterNoEscape('cmdb_ci',current.cmdb_ci);
request.setStringParameterNoEscape('contact_type',current.contact_type);
request.setStringParameterNoEscape('assignment_group',current.assignment_group);
request.setStringParameterNoEscape('close_notes',current.close_notes);
request.setStringParameterNoEscape('close_code',current.close_code);
request.setStringParameterNoEscape('state',current.state);
request.setStringParameterNoEscape('hold_reason',current.hold_reason);
var response=request.execute();
var requestBody=request.getRequestBody();
var responseBody=response.getBody();
var httpStatus=response.getStatusCode();
gs.log(responseBody);
responseJSON=responseBody.substring(10,responseBody.length-1);
parsedJSON=JSON.parse(responseJSON);
})(current, previous);
HTTP Method:
{
"state": "${state}",
"hold_reason": "${hold_reason}",
"description":"${description}",
"short_description": "${short_description}",
"category": "${category}",
"impact":"${impact}",
"urgency":"${urgency}",
"priority" :"${priority}",
"subcategory": "${subcategory}",
"cmdb_ci": "${cmdb_ci}",
"contact_type":"${contact_type}",
"item": "${item}",
"assignment_group": "${assignment_group}",
"close_notes": "${close_notes}",
"close_code":"${close_code}",
"work_notes": "${work_notes}",
"comments":"${additional_comments}",
"id":"${number}"
}
Target Instance:
Script:
var InsertIncident = Class.create();
InsertIncident.prototype = {
initialize: function() {},
ProcessInsertIncident: function(requestData, response) {
var validJSON = this._checkJSONValidity(requestData);
var reqeustJSONParser = JSON.parse(validJSON);
var responseBody = {};
if (validJSON) {
var inc = new GlideRecord('incident');
inc.addQuery('correlation_id', reqeustJSONParser.id);
inc.query();
if (inc.next()) {
if (reqeustJSONParser.state == '3') {
inc.state = reqeustJSONParser.state;
inc.hold_reason = reqeustJSONParser.hold_reason;
inc.description = reqeustJSONParser.description;
inc.short_description = reqeustJSONParser.short_description;
inc.category = reqeustJSONParser.category;
inc.impact = reqeustJSONParser.impact;
inc.urgency = reqeustJSONParser.urgency;
inc.cmdb_ci = reqeustJSONParser.cmdb_ci;
inc.priority = reqeustJSONParser.priority;
inc.subcategory = reqeustJSONParser.subcategory;
inc.contact_type = reqeustJSONParser.contact_type;
inc.assignment_group = reqeustJSONParser.assignment_group;
inc.close_notes = reqeustJSONParser.close_notes;
inc.close_code = reqeustJSONParser.close_code;
inc.work_notes = reqeustJSONParser.work_notes;
inc.comments = reqeustJSONParser.comments;
inc.update();
responseBody.Message = 'Incident is Updated';
}
} else {
inc.initialize();
inc.state = reqeustJSONParser.state;
inc.hold_reason = reqeustJSONParser.hold_reason;
inc.description = reqeustJSONParser.description;
inc.short_description = reqeustJSONParser.short_description;
inc.category = reqeustJSONParser.category;
inc.impact = reqeustJSONParser.impact;
inc.urgency = reqeustJSONParser.urgency;
inc.cmdb_ci = reqeustJSONParser.cmdb_ci;
inc.priority = reqeustJSONParser.priority;
inc.subcategory = reqeustJSONParser.subcategory;
inc.contact_type = reqeustJSONParser.contact_type;
inc.assignment_group = reqeustJSONParser.assignment_group;
inc.close_notes = reqeustJSONParser.close_notes;
inc.close_code = reqeustJSONParser.close_code;
inc.work_notes = reqeustJSONParser.work_notes;
inc.comments = reqeustJSONParser.comments;
inc.correlation_id = reqeustJSONParser.id;
inc.insert();
responseBody.Message = 'Incident is Created';
responseBody.Number = inc.number;
}
response.setBody(responseBody);
}
},
_checkJSONValidity: function(validJSON) {
try {
return JSON.stringify(validJSON);
} catch (e) {
gs.info('parsing error' + e);
}
},
type: 'InsertIncident'
};
@Mohith Devatte Could you please help me.
Thanks.
Priya.
Solved! Go to Solution.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-03-2022 06:54 AM
If you are receiving Name of CI then you need to make changes like below:
if (inc.next()) {
if (reqeustJSONParser.state == '3') {
inc.state = reqeustJSONParser.state;
inc.hold_reason = reqeustJSONParser.hold_reason;
inc.description = reqeustJSONParser.description;
inc.short_description = reqeustJSONParser.short_description;
inc.category = reqeustJSONParser.category;
inc.impact = reqeustJSONParser.impact;
inc.urgency = reqeustJSONParser.urgency;
var ciGr=new GlideRecord('cmdb_ci');
ciGr.addQuery('name',reqeustJSONParser.cmdb_ci);
ciGr.query()
if(ciGr.next){
inc.cmdb_ci = ciGr.getUniqueValue();
}
inc.priority = reqeustJSONParser.priority;
inc.subcategory = reqeustJSONParser.subcategory;
inc.contact_type = reqeustJSONParser.contact_type;
inc.assignment_group = reqeustJSONParser.assignment_group;
inc.close_notes = reqeustJSONParser.close_notes;
inc.close_code = reqeustJSONParser.close_code;
inc.work_notes = reqeustJSONParser.work_notes;
inc.comments = reqeustJSONParser.comments;
inc.update();
responseBody.Message = 'Incident is Updated';
}
}
Added GlideRecord query in above part, use same logic incase of both insert and update.
Thanks,
Anil Lande
Thanks
Anil Lande

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-04-2022 12:20 AM
Looks like CI with that name is not available in your instance.
Same logic is applied for all reference fields, your are receiving display value and you need to query reference tables and get the related records sys_id from ServiceNow tables.
If record is not present then it will not populate anything.
Additionally you can write some logic to create missing records if record is not found.
Thanks,
Anil Lande
Thanks
Anil Lande
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-04-2022 05:31 AM
It is working fine now Anil. Thanks for your help.