Skip to content

Commit 472a371

Browse files
authored
GreenHouse ServiceNow Integration Utility (#1164)
1 parent fe574c8 commit 472a371

File tree

2 files changed

+73
-0
lines changed

2 files changed

+73
-0
lines changed
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
var instanceName = gs.getProperty('instance_name');
2+
var hr = new GlideRecord('sn_hr_core_profile');
3+
hr.addEncodedQuery('user.active=true^user.u_worker_idISNOTEMPTY^u_worker_type=EE^u_greenhouse_idISNOTEMPTY');
4+
hr.query();
5+
while (hr.next()) {
6+
7+
var workerID = hr.user.u_worker_id + '';
8+
var greenhouseID = hr.getValue('u_greenhouse_id');
9+
var userSys = hr.user.sys_id.toString();
10+
11+
var key = 'Basic ' + gs.getProperty('sn_hr_core.greenhouseApiKey');
12+
13+
var r = new sn_ws.RESTMessageV2('Greenhouse', 'Retrieve Candidate');
14+
r.setStringParameterNoEscape('id', greenhouseID);
15+
r.setStringParameterNoEscape('Authorization', key);
16+
17+
var response = r.execute();
18+
var responseBody = response.getBody();
19+
var httpStatus = response.getStatusCode();
20+
21+
var rBody = JSON.parse(responseBody);
22+
23+
var attachments = rBody.attachments;
24+
25+
for (var i = 0; i < attachments.length; i++) {
26+
27+
var type = attachments[i].type + '';
28+
var fileName = attachments[i].filename + '';
29+
var docType = '';
30+
var encodedUri = attachments[i].url;
31+
//var decodedUrl = decodeURI(encodedUri);
32+
//var url = decodedUrl.replace(/ /g, '%20');
33+
34+
if (type == 'offer_packet' || type == 'signed_offer_letter' || type == 'offer_letter') {
35+
36+
docType = '3a4a029adb3bac9444c5ebd8489619d1';
37+
38+
} else if (type == 'resume') {
39+
40+
docType = '9af9ca5adb3bac9444c5ebd8489619a3';
41+
42+
} else if (type == 'form_attachment' || type == 'cover_letter' || type == 'other') {
43+
44+
docType = '696549a3dbbfe41044c5ebd8489619c5';
45+
46+
}
47+
48+
var newDoc = new GlideRecord('sn_hr_ef_employee_document');
49+
newDoc.newRecord();
50+
newDoc.employee = userSys;
51+
newDoc.document_type = docType;
52+
newDoc.u_title = fileName;
53+
newDoc.insert();
54+
55+
var request = new sn_ws.RESTMessageV2();
56+
request.setHttpMethod('get');
57+
request.setEndpoint(encodedUri);
58+
request.saveResponseBodyAsAttachment('sn_hr_ef_employee_document', newDoc.sys_id, fileName);
59+
var response1 = request.execute();
60+
61+
}
62+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
This utility contains sample code to integrate ServiceNow with GreenHouse and pull employee files from GreenHouse in ServiceNow Employee Document Management OOB Table records.
2+
3+
Sample code queries HR profile which a filtered query of active users which has a valid greenhouse ID present in ServiceNow HR profile records.
4+
5+
REST message which calls Greenhouse REST API is using below REST endpoint.
6+
https://developers.greenhouse.io/harvest.html#get-retrieve-candidate
7+
8+
Document Types sys_id can be mapped to relevant document types on your instance.
9+
10+
11+

0 commit comments

Comments
 (0)