From 1ccca7b4dcbe8bf16c1d0cf3628c5f3d7d5ab86e Mon Sep 17 00:00:00 2001 From: DhruvBhatheja <70469942+DhruvBhatheja@users.noreply.github.com> Date: Fri, 3 Oct 2025 15:37:22 +0530 Subject: [PATCH 1/4] Readme.md --- .../Readme.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 Server-Side Components/Business Rules/Use_case_Base64-Encode-Before-Save-And-Decode-on-Display/Readme.md diff --git a/Server-Side Components/Business Rules/Use_case_Base64-Encode-Before-Save-And-Decode-on-Display/Readme.md b/Server-Side Components/Business Rules/Use_case_Base64-Encode-Before-Save-And-Decode-on-Display/Readme.md new file mode 100644 index 0000000000..c6f18138a6 --- /dev/null +++ b/Server-Side Components/Business Rules/Use_case_Base64-Encode-Before-Save-And-Decode-on-Display/Readme.md @@ -0,0 +1,10 @@ +Base64 Encode/Decode Business Rule +Overview + +This setup demonstrates how to store field data securely in Base64 format in the database, while still displaying it as human-readable text to end users in ServiceNow. + +It uses two Business Rules: + +Before Insert/Update Rule : Encodes plain text into Base64 before saving to the database. + +Display Rule : Decodes the Base64 value back into readable text when loading the record form. From 5f4d82656b6d4e709ddb59c7cf8936a56d323150 Mon Sep 17 00:00:00 2001 From: DhruvBhatheja <70469942+DhruvBhatheja@users.noreply.github.com> Date: Fri, 3 Oct 2025 15:43:43 +0530 Subject: [PATCH 2/4] script.js --- .../script.js | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 Server-Side Components/Business Rules/Use_case_Base64-Encode-Before-Save-And-Decode-on-Display/script.js diff --git a/Server-Side Components/Business Rules/Use_case_Base64-Encode-Before-Save-And-Decode-on-Display/script.js b/Server-Side Components/Business Rules/Use_case_Base64-Encode-Before-Save-And-Decode-on-Display/script.js new file mode 100644 index 0000000000..54ba3f83bc --- /dev/null +++ b/Server-Side Components/Business Rules/Use_case_Base64-Encode-Before-Save-And-Decode-on-Display/script.js @@ -0,0 +1,29 @@ +// Decode on Display Trigger: Before Display +////Decodes fieldName from Base64. Shows decoded value on the form. +(function executeRule(current) { + if (current.fieldName) { // field name can be anything + try { + var decoded = GlideStringUtil.base64Decode(current.fieldName); + current.setDisplayValue('fieldName', decoded); + } catch (ex) { + current.setDisplayValue('fieldName', '[Invalid Base64]'); + } + } +})(current); + +----------------------------------------------------------------------------------- +//Encode Before Saving Trigger: Before Insert/Update + +(function executeRule(current, previous) { + if (current.fieldName.changes()) { + var plainText = current.fieldName + ''; + current.fieldName = GlideStringUtil.base64Encode(plainText); + } +})(current, previous); + + +//If the field is new or updated, encodes its value to Base64. Saves the encoded string to the database. + +// For Example User enters Hello World in fieldName. +//Before saving : System encodes and stores SGVsbG8gV29ybGQ= in the database. +//When the record is viewed : Display rule decodes it back to Hello World for the user. From dfa7bcf982143214b92a669753e0f77dc4303f88 Mon Sep 17 00:00:00 2001 From: DhruvBhatheja <70469942+DhruvBhatheja@users.noreply.github.com> Date: Fri, 3 Oct 2025 16:14:53 +0530 Subject: [PATCH 3/4] Before_BR_script.js --- .../{script.js => Before_BR_script.js} | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) rename Server-Side Components/Business Rules/Use_case_Base64-Encode-Before-Save-And-Decode-on-Display/{script.js => Before_BR_script.js} (52%) diff --git a/Server-Side Components/Business Rules/Use_case_Base64-Encode-Before-Save-And-Decode-on-Display/script.js b/Server-Side Components/Business Rules/Use_case_Base64-Encode-Before-Save-And-Decode-on-Display/Before_BR_script.js similarity index 52% rename from Server-Side Components/Business Rules/Use_case_Base64-Encode-Before-Save-And-Decode-on-Display/script.js rename to Server-Side Components/Business Rules/Use_case_Base64-Encode-Before-Save-And-Decode-on-Display/Before_BR_script.js index 54ba3f83bc..77908f5b65 100644 --- a/Server-Side Components/Business Rules/Use_case_Base64-Encode-Before-Save-And-Decode-on-Display/script.js +++ b/Server-Side Components/Business Rules/Use_case_Base64-Encode-Before-Save-And-Decode-on-Display/Before_BR_script.js @@ -1,17 +1,5 @@ -// Decode on Display Trigger: Before Display -////Decodes fieldName from Base64. Shows decoded value on the form. -(function executeRule(current) { - if (current.fieldName) { // field name can be anything - try { - var decoded = GlideStringUtil.base64Decode(current.fieldName); - current.setDisplayValue('fieldName', decoded); - } catch (ex) { - current.setDisplayValue('fieldName', '[Invalid Base64]'); - } - } -})(current); ------------------------------------------------------------------------------------ + //Encode Before Saving Trigger: Before Insert/Update (function executeRule(current, previous) { @@ -20,10 +8,10 @@ current.fieldName = GlideStringUtil.base64Encode(plainText); } })(current, previous); - - //If the field is new or updated, encodes its value to Base64. Saves the encoded string to the database. // For Example User enters Hello World in fieldName. //Before saving : System encodes and stores SGVsbG8gV29ybGQ= in the database. //When the record is viewed : Display rule decodes it back to Hello World for the user. + + From f52636bbff2ab8796fe17dde020d99d3eff2e2a0 Mon Sep 17 00:00:00 2001 From: DhruvBhatheja <70469942+DhruvBhatheja@users.noreply.github.com> Date: Fri, 3 Oct 2025 16:15:33 +0530 Subject: [PATCH 4/4] Display_BR_script.js --- .../Display_BR_script.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 Server-Side Components/Business Rules/Use_case_Base64-Encode-Before-Save-And-Decode-on-Display/Display_BR_script.js diff --git a/Server-Side Components/Business Rules/Use_case_Base64-Encode-Before-Save-And-Decode-on-Display/Display_BR_script.js b/Server-Side Components/Business Rules/Use_case_Base64-Encode-Before-Save-And-Decode-on-Display/Display_BR_script.js new file mode 100644 index 0000000000..488c9a7d64 --- /dev/null +++ b/Server-Side Components/Business Rules/Use_case_Base64-Encode-Before-Save-And-Decode-on-Display/Display_BR_script.js @@ -0,0 +1,19 @@ +// Decode on Display Trigger: Before Display +////Decodes fieldName from Base64. Shows decoded value on the form. + +(function executeRule(current) { + if (current.fieldName) { // field name can be anything + try { + var decoded = GlideStringUtil.base64Decode(current.fieldName); + current.setDisplayValue('fieldName', decoded); + } catch (ex) { + current.setDisplayValue('fieldName', '[Invalid Base64]'); + } + } +})(current); + +//If the field is new or updated, encodes its value to Base64. Saves the encoded string to the database. + +// For Example User enters Hello World in fieldName. +//Before saving : System encodes and stores SGVsbG8gV29ybGQ= in the database. +//When the record is viewed : Display rule decodes it back to Hello World for the user.