Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Encryption of Field Cause Script Include to Fail

Randy33
Tera Guru

I have a script include that imports employees from our HR System.  The issue is the script now fails when it executes the encryption code.  

 

//Encrypted fields
employee.u_last_four_ssn.setDisplayValue(this._getLastFour(d.ZY_CT_KEY_FLD));
employee.u_last_four_ssn.setContextID(encryptionID);
employee.u_dob.setDisplayValue(dob);
employee.u_dob.setContextID(encryptionID);
employee.u_phone.setDisplayValue(this._formatPhoneNumber(d.PHONE));
employee.u_phone.setContextID(encryptionID);
//employee.u_nid.setDisplayValue(d.ZY_CT_KEY_FLD);
employee.u_nid.setContextID(encryptionID);

//Update
employee.update();
 
else where in the code to get the encryption ID:
 
_getEncryptionID: function(encryptionName) {
var contextGR = new GlideRecord("sys_encryption_context");
contextGR.addQuery("name", encryptionName);
contextGR.query();
if (!contextGR.next()) {
gs.info("*********** No such encryption context " + encryptionName);
return "";
 
Any ideas as to why it is failing.  I'm not too familiar with encryption 😞
}
return contextGR.getUniqueValue();
},
1 REPLY 1

Ankur Bawiskar
Tera Patron
Tera Patron

@Randy33 

if your script runs as system user then field level encryption is bypassed.

You can create a module access policy for your script include or business rule so that system ignores the encryption context for fields

Module access policy overview 

Step-by-Step Guide to Configuring an Encryption Module in ServiceNow 

💡 If my response helped, please mark it as correct and close the thread 🔒— this helps future readers find the solution faster! 🙏

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader