From e5d45a7f0827d2ce23d317e497deb9e8ada6b902 Mon Sep 17 00:00:00 2001 From: Mandeep Karan Date: Sun, 6 Oct 2024 02:26:47 +0530 Subject: [PATCH 01/23] Create custom_alert.js If you need HTML beautified alert box, use this. --- .../CustomAlert/custom_alert.js | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 Catalog Client Script/CustomAlert/custom_alert.js diff --git a/Catalog Client Script/CustomAlert/custom_alert.js b/Catalog Client Script/CustomAlert/custom_alert.js new file mode 100644 index 0000000000..997f0c3e91 --- /dev/null +++ b/Catalog Client Script/CustomAlert/custom_alert.js @@ -0,0 +1,32 @@ +function onLoad() { + // Function to show a custom link in a GlideModal + function showCustomLinkInGlideModal() { + // Create an instance of GlideModal using the 'custom_alert_box' UI page + // The second parameter 'true' indicates that the modal should be a dialog, + // and '600' sets the width of the modal to 600 pixels. + var gm = new GlideModal("custom_alert_box", true, 600); + + // Set the modal's title to anything you want + gm.setTitle('Important Information'); //for e.g. Important Information + + // Set a preference for the modal indicating the type of alert + // This can be used to style the modal or control its behavior. + // available choices {info, danger, warning, success} + gm.setPreference('alertType', 'danger'); + + // Custom HTML content to be displayed in the modal + // This includes a paragraph and a link to an external website. + var htmlContent = '

Please visit the following link:

' + + 'Click here to go to Example.com'; + + // Set the HTML content of the modal using the 'infoText' preference. + // We disable escaping since we're providing our own HTML. + gm.setPreference('infoText', htmlContent); + + // Render the modal on the screen + gm.render(); + } + + // Call the function to display the modal when the form loads + showCustomLinkInGlideModal(); +} From 12f7b571d82d23f0742511d4c1cedae5886a9847 Mon Sep 17 00:00:00 2001 From: Mandeep Karan Date: Sun, 6 Oct 2024 02:31:45 +0530 Subject: [PATCH 02/23] Create custom_alert_box.js UI Page to render the custom alert --- .../CustomAlert/custom_alert_box.js | 116 ++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 Catalog Client Script/CustomAlert/custom_alert_box.js diff --git a/Catalog Client Script/CustomAlert/custom_alert_box.js b/Catalog Client Script/CustomAlert/custom_alert_box.js new file mode 100644 index 0000000000..ec1ffa578a --- /dev/null +++ b/Catalog Client Script/CustomAlert/custom_alert_box.js @@ -0,0 +1,116 @@ +*****************HTML Section Start***************** + + + + var infoText = "${RP.getWindowProperties().get('infoText')}"; + infoText = new GlideStringUtil().unEscapeHTML(infoText); + var warning = "${RP.getWindowProperties().get('warning')}"; + warning = new GlideStringUtil().unEscapeHTML(warning); + var alertType = "${RP.getWindowProperties().get('alertType')}"; + + + + + + + + + + + + + + +
+ + + + + + + +
+ +
+
+
+*****************HTML Section End***************** + +*****************Client Script Start***************** +function unescapeHTML(html) { + var textarea = document.createElement('textarea'); + textarea.innerHTML = html; // Set the HTML content + return textarea.value; // Return the unescaped text +} + +var infoText = "${RP.getWindowProperties().get('infoText')}"; +infoText = unescapeHTML(infoText); // Unescape the HTML + +// Now set the title to your dialog or display it +document.getElementById('bodycell').innerHTML = infoText; // Assuming there's a titleCell in your HTML + +function invokePromptCallBack() { + var gdw = GlideDialogWindow.get(); + gdw.destroy(); + return false; +} + +var gdw = GlideDialogWindow.get(); +gel('ok_button').focus(); +*****************Client Script Start***************** From 74fcc33d621b38e632d8bec146a5d0e4eb6be848 Mon Sep 17 00:00:00 2001 From: Mandeep Karan Date: Sun, 6 Oct 2024 02:35:41 +0530 Subject: [PATCH 03/23] ExampleScreenShots These are example ScreenShots for reference --- .../ExampleScreenShotCustomAlertInfo.png | Bin 0 -> 34085 bytes .../ExampleScreenShotForCustomAlertSuccess.png | Bin 0 -> 32195 bytes .../ExampleScrenShotForCustomAlertDanger.png | Bin 0 -> 32756 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Catalog Client Script/CustomAlert/ExampleScreenShotCustomAlertInfo.png create mode 100644 Catalog Client Script/CustomAlert/ExampleScreenShotForCustomAlertSuccess.png create mode 100644 Catalog Client Script/CustomAlert/ExampleScrenShotForCustomAlertDanger.png diff --git a/Catalog Client Script/CustomAlert/ExampleScreenShotCustomAlertInfo.png b/Catalog Client Script/CustomAlert/ExampleScreenShotCustomAlertInfo.png new file mode 100644 index 0000000000000000000000000000000000000000..5e5827b2b915d2eb97644eec1413a4620760cbc6 GIT binary patch literal 34085 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 literal 0 HcmV?d00001 diff --git a/Catalog Client Script/CustomAlert/ExampleScrenShotForCustomAlertDanger.png b/Catalog Client Script/CustomAlert/ExampleScrenShotForCustomAlertDanger.png new file mode 100644 index 0000000000000000000000000000000000000000..21df1722c50a6f5204092532e74a637aa353910f GIT binary patch literal 32756 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 Js2dKC{s+oD;Cui8 literal 0 HcmV?d00001 From 8a3b9741475f193b0185d2aef1644377658bddcf Mon Sep 17 00:00:00 2001 From: Mandeep Karan Date: Sun, 6 Oct 2024 02:36:56 +0530 Subject: [PATCH 04/23] Create readme.md Example Screenshots --- Catalog Client Script/CustomAlert/Screenshots/readme.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Catalog Client Script/CustomAlert/Screenshots/readme.md diff --git a/Catalog Client Script/CustomAlert/Screenshots/readme.md b/Catalog Client Script/CustomAlert/Screenshots/readme.md new file mode 100644 index 0000000000..e2f1e8ac84 --- /dev/null +++ b/Catalog Client Script/CustomAlert/Screenshots/readme.md @@ -0,0 +1 @@ +Please see the example Screenshots From 7990eea75cff2b890f94ba58c7d8fbb7795d3876 Mon Sep 17 00:00:00 2001 From: Mandeep Karan Date: Sun, 6 Oct 2024 02:37:51 +0530 Subject: [PATCH 05/23] Rename Catalog Client Script/CustomAlert/ExampleScreenShotCustomAlertInfo.png to Catalog Client Script/CustomAlert/Screenshots/ExampleScreenShotCustomAlertInfo.png --- .../ExampleScreenShotCustomAlertInfo.png | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename Catalog Client Script/CustomAlert/{ => Screenshots}/ExampleScreenShotCustomAlertInfo.png (100%) diff --git a/Catalog Client Script/CustomAlert/ExampleScreenShotCustomAlertInfo.png b/Catalog Client Script/CustomAlert/Screenshots/ExampleScreenShotCustomAlertInfo.png similarity index 100% rename from Catalog Client Script/CustomAlert/ExampleScreenShotCustomAlertInfo.png rename to Catalog Client Script/CustomAlert/Screenshots/ExampleScreenShotCustomAlertInfo.png From f50a5b5c82cc9e8ed45448033fbb73f709099993 Mon Sep 17 00:00:00 2001 From: Mandeep Karan Date: Sun, 6 Oct 2024 02:38:14 +0530 Subject: [PATCH 06/23] Rename Catalog Client Script/CustomAlert/ExampleScreenShotForCustomAlertSuccess.png to Catalog Client Script/CustomAlert/Screenshots/ExampleScreenShotForCustomAlertSuccess.png --- .../ExampleScreenShotForCustomAlertSuccess.png | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename Catalog Client Script/CustomAlert/{ => Screenshots}/ExampleScreenShotForCustomAlertSuccess.png (100%) diff --git a/Catalog Client Script/CustomAlert/ExampleScreenShotForCustomAlertSuccess.png b/Catalog Client Script/CustomAlert/Screenshots/ExampleScreenShotForCustomAlertSuccess.png similarity index 100% rename from Catalog Client Script/CustomAlert/ExampleScreenShotForCustomAlertSuccess.png rename to Catalog Client Script/CustomAlert/Screenshots/ExampleScreenShotForCustomAlertSuccess.png From 01659da46f2f1db40d5594ce11ce1e67d2b76a7a Mon Sep 17 00:00:00 2001 From: Mandeep Karan Date: Sun, 6 Oct 2024 02:38:30 +0530 Subject: [PATCH 07/23] Rename Catalog Client Script/CustomAlert/ExampleScrenShotForCustomAlertDanger.png to Catalog Client Script/CustomAlert/Screenshots/ExampleScrenShotForCustomAlertDanger.png --- .../ExampleScrenShotForCustomAlertDanger.png | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename Catalog Client Script/CustomAlert/{ => Screenshots}/ExampleScrenShotForCustomAlertDanger.png (100%) diff --git a/Catalog Client Script/CustomAlert/ExampleScrenShotForCustomAlertDanger.png b/Catalog Client Script/CustomAlert/Screenshots/ExampleScrenShotForCustomAlertDanger.png similarity index 100% rename from Catalog Client Script/CustomAlert/ExampleScrenShotForCustomAlertDanger.png rename to Catalog Client Script/CustomAlert/Screenshots/ExampleScrenShotForCustomAlertDanger.png From da8f30e95252984f893a7ada0e8cd31f5919e6f7 Mon Sep 17 00:00:00 2001 From: Mandeep Karan Date: Sun, 6 Oct 2024 02:43:41 +0530 Subject: [PATCH 08/23] Create readme.md Notes for installation or Implementation --- Catalog Client Script/CustomAlert/readme.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 Catalog Client Script/CustomAlert/readme.md diff --git a/Catalog Client Script/CustomAlert/readme.md b/Catalog Client Script/CustomAlert/readme.md new file mode 100644 index 0000000000..e49b5560d1 --- /dev/null +++ b/Catalog Client Script/CustomAlert/readme.md @@ -0,0 +1,9 @@ +These scripts helps you to create custom popup easily. follow the below steps to implement it on your instance. + +Steps +1. Create UI page with name "custom_alert_box" +2. Copy HTML section from customn_alert_box.js to HTML field of UI Page +3. Copy Client Script section from customn_alert_box.js to Client Script field of UI Page +4. UI Page is ready to be used. +5. Refer the "custom_alert.js" to create client script or catalog client script to alert HTML messages or links in custom alert format. +6. Refer the screenshots folder for quick look. From a56fd1fb5cea7887e8a6bca53898febc6c750ced Mon Sep 17 00:00:00 2001 From: Mandeep Karan Date: Sun, 6 Oct 2024 15:59:07 +0530 Subject: [PATCH 09/23] Create update_notes_tag_addition.js Business rule to add work notes on record if notes for tag entries are allowed. It is very hard to track who added the tag to the record and when, this will help to manage to understand who has added what tags on record. --- .../update_notes_tag_addition.js | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 Business Rules/Add notes for tag addition or removal/update_notes_tag_addition.js diff --git a/Business Rules/Add notes for tag addition or removal/update_notes_tag_addition.js b/Business Rules/Add notes for tag addition or removal/update_notes_tag_addition.js new file mode 100644 index 0000000000..1271d0ccb5 --- /dev/null +++ b/Business Rules/Add notes for tag addition or removal/update_notes_tag_addition.js @@ -0,0 +1,38 @@ +/**********************BR COnfig Start***************************/ +/* +When: async +order: 2000 +insert: true +Filter: labelISNOTEMPTY^label.nameISNOTEMPTY^EQ +*/ +/**********************BR COnfig End***************************/ + +(function executeRule(current, previous /*null when async*/ ) { + // Check if logging for tag additions is enabled + if (gs.getProperty('custom.tag_entries.log_addition').toString() == "true") { + var current_table = current.getValue('table'); // Get the current table name + var allowed_tables = gs.getProperty('custom.tag_entries.tables'); // Get allowed tables for addition of notes from tag entries from properties + allowed_tables = allowed_tables.split(','); // Split into an array + + // Verify if the current table is in the allowed list + if (allowed_tables.indexOf(current_table) > -1) { + var gr_task = new GlideRecord(current_table); // Instantiate a GlideRecord for the current table + try { + // Query the record using sys_id stored in table_key + gr_task.addQuery("sys_id", current.table_key.getValue()); + gr_task.query(); // Execute the query + + // If record found, update work_notes if the field is valid + if (gr_task.next()) { + if (gr_task.isValidField('work_notes')) { + gr_task.work_notes = "Tag added: " + current.getDisplayValue('label'); // Append tag info + gr_task.update(); // Save changes + } + } + } catch (e) { + // Log any exceptions encountered during execution + gs.log("Exception occurred in the business rule Updating record when tagged" + e.message); + } + } + } +})(current, previous); From deb75b1add391f9f0ea43b81fce6c2b7775d3560 Mon Sep 17 00:00:00 2001 From: Mandeep Karan Date: Sun, 6 Oct 2024 16:02:21 +0530 Subject: [PATCH 10/23] Create update_notes_tag_removal.js Business rule to add work notes on record if notes for tag removal are allowed. It is very hard to track who removed the tag to the record and when, this will help to manage to understand who has removed what tags on record. --- .../update_notes_tag_removal.js | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 Business Rules/Add notes for tag addition or removal/update_notes_tag_removal.js diff --git a/Business Rules/Add notes for tag addition or removal/update_notes_tag_removal.js b/Business Rules/Add notes for tag addition or removal/update_notes_tag_removal.js new file mode 100644 index 0000000000..466bc36338 --- /dev/null +++ b/Business Rules/Add notes for tag addition or removal/update_notes_tag_removal.js @@ -0,0 +1,37 @@ +/**********************BR COnfig Start***************************/ +/* +When: before +order: 100 +delete: true +Filter: labelISNOTEMPTY^label.nameISNOTEMPTY^EQ +*/ +/**********************BR COnfig End***************************/ +(function executeRule(current, previous /*null when async*/ ) { + // Check if logging for tag removals is enabled + if (gs.getProperty('custom.tag_entries.log_removal').toString() == "true") { + var current_table = current.getValue('table'); // Retrieve the name of the current table + var allowed_tables = gs.getProperty('custom.tag_entries.tables'); // Get the list of allowed tables from properties + allowed_tables = allowed_tables.split(','); // Split the string into an array + + // Verify if the current table is in the allowed list + if (allowed_tables.indexOf(current_table) > -1) { + var gr_task = new GlideRecord(current_table); // Create a GlideRecord object for the current table + try { + // Query the record using sys_id stored in table_key + gr_task.addQuery("sys_id", current.table_key.getValue()); + gr_task.query(); // Execute the query + + // If the record is found, update work_notes if the field is valid + if (gr_task.next()) { + if (gr_task.isValidField('work_notes')) { + gr_task.work_notes = "Tag removed: " + current.getDisplayValue('label'); // Append removal info to work notes + gr_task.update(); // Save the changes made to work notes + } + } + } catch (e) { + // Log any exceptions encountered during execution + gs.log("Exception occurred in the business rule Updating record when tagged" + e.message); + } + } + } +})(current, previous); From 064f91933c35457db6ab487f7b9fcd466c4189c6 Mon Sep 17 00:00:00 2001 From: Mandeep Karan Date: Sun, 6 Oct 2024 16:07:10 +0530 Subject: [PATCH 11/23] Create readme.md Notes for the implementation --- .../Add notes for tag addition or removal/readme.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 Business Rules/Add notes for tag addition or removal/readme.md diff --git a/Business Rules/Add notes for tag addition or removal/readme.md b/Business Rules/Add notes for tag addition or removal/readme.md new file mode 100644 index 0000000000..5a02a21d31 --- /dev/null +++ b/Business Rules/Add notes for tag addition or removal/readme.md @@ -0,0 +1,5 @@ +This business rule will operate on the label_entry table to log notes whenever tags are added or removed from specific tables. To implement this, create three system properties: +1. custom.tag_entries.log_removal (true/false): Set this to true to enable logging of tag removals. +2. custom.tag_entries.tables: A list of tables, separated by commas, where notes should be managed. +3. custom.tag_entries.log_addition (true/false): Set this to true to enable logging of tag additions. +One challenge with tags is identifying who added or removed them from records. With these business rules in place, this information will be easily accessible. From 58758eaf435b68e2f22040f4895eab3e974a5a48 Mon Sep 17 00:00:00 2001 From: Mandeep Karan Date: Sun, 6 Oct 2024 16:32:45 +0530 Subject: [PATCH 12/23] Revert "Create update_notes_tag_addition.js" This reverts commit a56fd1fb5cea7887e8a6bca53898febc6c750ced. --- .../update_notes_tag_addition.js | 38 ------------------- 1 file changed, 38 deletions(-) delete mode 100644 Business Rules/Add notes for tag addition or removal/update_notes_tag_addition.js diff --git a/Business Rules/Add notes for tag addition or removal/update_notes_tag_addition.js b/Business Rules/Add notes for tag addition or removal/update_notes_tag_addition.js deleted file mode 100644 index 1271d0ccb5..0000000000 --- a/Business Rules/Add notes for tag addition or removal/update_notes_tag_addition.js +++ /dev/null @@ -1,38 +0,0 @@ -/**********************BR COnfig Start***************************/ -/* -When: async -order: 2000 -insert: true -Filter: labelISNOTEMPTY^label.nameISNOTEMPTY^EQ -*/ -/**********************BR COnfig End***************************/ - -(function executeRule(current, previous /*null when async*/ ) { - // Check if logging for tag additions is enabled - if (gs.getProperty('custom.tag_entries.log_addition').toString() == "true") { - var current_table = current.getValue('table'); // Get the current table name - var allowed_tables = gs.getProperty('custom.tag_entries.tables'); // Get allowed tables for addition of notes from tag entries from properties - allowed_tables = allowed_tables.split(','); // Split into an array - - // Verify if the current table is in the allowed list - if (allowed_tables.indexOf(current_table) > -1) { - var gr_task = new GlideRecord(current_table); // Instantiate a GlideRecord for the current table - try { - // Query the record using sys_id stored in table_key - gr_task.addQuery("sys_id", current.table_key.getValue()); - gr_task.query(); // Execute the query - - // If record found, update work_notes if the field is valid - if (gr_task.next()) { - if (gr_task.isValidField('work_notes')) { - gr_task.work_notes = "Tag added: " + current.getDisplayValue('label'); // Append tag info - gr_task.update(); // Save changes - } - } - } catch (e) { - // Log any exceptions encountered during execution - gs.log("Exception occurred in the business rule Updating record when tagged" + e.message); - } - } - } -})(current, previous); From 3cfa425f966e945cb8ac65217a48648856449587 Mon Sep 17 00:00:00 2001 From: Mandeep Karan Date: Sun, 6 Oct 2024 16:32:49 +0530 Subject: [PATCH 13/23] Revert "Create update_notes_tag_removal.js" This reverts commit deb75b1add391f9f0ea43b81fce6c2b7775d3560. --- .../update_notes_tag_removal.js | 37 ------------------- 1 file changed, 37 deletions(-) delete mode 100644 Business Rules/Add notes for tag addition or removal/update_notes_tag_removal.js diff --git a/Business Rules/Add notes for tag addition or removal/update_notes_tag_removal.js b/Business Rules/Add notes for tag addition or removal/update_notes_tag_removal.js deleted file mode 100644 index 466bc36338..0000000000 --- a/Business Rules/Add notes for tag addition or removal/update_notes_tag_removal.js +++ /dev/null @@ -1,37 +0,0 @@ -/**********************BR COnfig Start***************************/ -/* -When: before -order: 100 -delete: true -Filter: labelISNOTEMPTY^label.nameISNOTEMPTY^EQ -*/ -/**********************BR COnfig End***************************/ -(function executeRule(current, previous /*null when async*/ ) { - // Check if logging for tag removals is enabled - if (gs.getProperty('custom.tag_entries.log_removal').toString() == "true") { - var current_table = current.getValue('table'); // Retrieve the name of the current table - var allowed_tables = gs.getProperty('custom.tag_entries.tables'); // Get the list of allowed tables from properties - allowed_tables = allowed_tables.split(','); // Split the string into an array - - // Verify if the current table is in the allowed list - if (allowed_tables.indexOf(current_table) > -1) { - var gr_task = new GlideRecord(current_table); // Create a GlideRecord object for the current table - try { - // Query the record using sys_id stored in table_key - gr_task.addQuery("sys_id", current.table_key.getValue()); - gr_task.query(); // Execute the query - - // If the record is found, update work_notes if the field is valid - if (gr_task.next()) { - if (gr_task.isValidField('work_notes')) { - gr_task.work_notes = "Tag removed: " + current.getDisplayValue('label'); // Append removal info to work notes - gr_task.update(); // Save the changes made to work notes - } - } - } catch (e) { - // Log any exceptions encountered during execution - gs.log("Exception occurred in the business rule Updating record when tagged" + e.message); - } - } - } -})(current, previous); From e80fe0f2026a159669ef4d635b4b5e62b385b426 Mon Sep 17 00:00:00 2001 From: Mandeep Karan Date: Sun, 6 Oct 2024 16:32:52 +0530 Subject: [PATCH 14/23] Revert "Create readme.md" This reverts commit 064f91933c35457db6ab487f7b9fcd466c4189c6. --- .../Add notes for tag addition or removal/readme.md | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 Business Rules/Add notes for tag addition or removal/readme.md diff --git a/Business Rules/Add notes for tag addition or removal/readme.md b/Business Rules/Add notes for tag addition or removal/readme.md deleted file mode 100644 index 5a02a21d31..0000000000 --- a/Business Rules/Add notes for tag addition or removal/readme.md +++ /dev/null @@ -1,5 +0,0 @@ -This business rule will operate on the label_entry table to log notes whenever tags are added or removed from specific tables. To implement this, create three system properties: -1. custom.tag_entries.log_removal (true/false): Set this to true to enable logging of tag removals. -2. custom.tag_entries.tables: A list of tables, separated by commas, where notes should be managed. -3. custom.tag_entries.log_addition (true/false): Set this to true to enable logging of tag additions. -One challenge with tags is identifying who added or removed them from records. With these business rules in place, this information will be easily accessible. From 39f6fcaa6c3ab6f48b7facc4780581ca4c21b6fa Mon Sep 17 00:00:00 2001 From: Mandeep Karan Date: Sat, 11 Oct 2025 20:24:54 +0530 Subject: [PATCH 15/23] Create br_validate_short_description.js --- .../br_validate_short_description.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/br_validate_short_description.js diff --git a/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/br_validate_short_description.js b/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/br_validate_short_description.js new file mode 100644 index 0000000000..2fa2e64e84 --- /dev/null +++ b/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/br_validate_short_description.js @@ -0,0 +1,16 @@ +// Name: Validate Short Description +// Table: Incident +// When: before insert or before update +// Order: 100 + +(function executeRule(current, previous /*null when async*/) { + var short_desc = current.getValue('short_description'); + + // Validate only for new records or when field changes + if (current.operation() === 'insert' || current.short_description.changes()) { + if (!short_desc || short_desc.trim().length < 40) { + current.short_description.setError('Short description must be at least 40 characters long.'); + current.setAbortAction(true); + } + } +})(current, previous); From a004c9cd86c4a1369c2fa16b9157bd30283721ca Mon Sep 17 00:00:00 2001 From: Mandeep Karan Date: Sat, 11 Oct 2025 20:26:02 +0530 Subject: [PATCH 16/23] Create README.md --- .../README.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/README.md diff --git a/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/README.md b/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/README.md new file mode 100644 index 0000000000..f8bf362bc7 --- /dev/null +++ b/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/README.md @@ -0,0 +1,9 @@ +# GlideElement Validation & Derivation Example + +This project demonstrates how to use `GlideElement.setError()` and `GlideElement.getError()` +to perform validation in one Business Rule and field derivation in another, without repeating logic. + +### Flow: +1. BR #1 (`Validate Short Description`) checks text length. +2. BR #2 (`Derive Dependent Fields`) runs only if no validation error exists. +3. Category, Subcategory, and Impact are derived dynamically. From 2c802d0521d7dbc7fb3d905eaaad6369f30f9b49 Mon Sep 17 00:00:00 2001 From: Mandeep Karan Date: Sat, 11 Oct 2025 20:26:44 +0530 Subject: [PATCH 17/23] Create br_derive_dependent_fields.js --- .../br_derive_dependent_fields.js | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/br_derive_dependent_fields.js diff --git a/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/br_derive_dependent_fields.js b/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/br_derive_dependent_fields.js new file mode 100644 index 0000000000..5abf64c0fb --- /dev/null +++ b/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/br_derive_dependent_fields.js @@ -0,0 +1,48 @@ +// Name: Derive Dependent Fields +// Table: Incident +// When: before insert or before update +// Order: 200 + +(function executeRule(current, previous /*null when async*/) { + + // Only proceed if short_description changed or new record + if (!(current.operation() === 'insert' || current.short_description.changes())) { + return; + } + + var errorMsg = current.short_description.getError(); + + if (errorMsg) { + gs.info('[BR:200 - Derive] Skipping field derivation due to prior error → ' + errorMsg); + return; + } + + // Proceed only if no prior validation error + var desc = current.getValue('short_description').toLowerCase(); + gs.info('[BR:200 - Derive] Validation passed. Deriving dependent fields...'); + + // Example 1: Derive category + if (desc.includes('server')) { + current.category = 'infrastructure'; + current.subcategory = 'server issue'; + } else if (desc.includes('email')) { + current.category = 'communication'; + current.subcategory = 'email problem'; + } else if (desc.includes('login')) { + current.category = 'access'; + current.subcategory = 'authentication'; + } else { + current.category = 'inquiry'; + current.subcategory = 'general'; + } + + // Example 2: Derive impact + if (desc.includes('critical') || desc.includes('outage')) { + current.impact = 1; // High + } else { + current.impact = 3; // Low + } + + gs.info('[BR:200 - Derive] Fields updated → Category: ' + current.category + ', Subcategory: ' + current.subcategory + ', Impact: ' + current.impact); + +})(current, previous); From b8607cec15e8f526cdb065ecd90cace36b81fec9 Mon Sep 17 00:00:00 2001 From: Mandeep Karan Date: Sat, 11 Oct 2025 20:28:07 +0530 Subject: [PATCH 18/23] Update br_derive_dependent_fields.js --- .../br_derive_dependent_fields.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/br_derive_dependent_fields.js b/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/br_derive_dependent_fields.js index 5abf64c0fb..24fa39decf 100644 --- a/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/br_derive_dependent_fields.js +++ b/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/br_derive_dependent_fields.js @@ -19,7 +19,6 @@ // Proceed only if no prior validation error var desc = current.getValue('short_description').toLowerCase(); - gs.info('[BR:200 - Derive] Validation passed. Deriving dependent fields...'); // Example 1: Derive category if (desc.includes('server')) { @@ -43,6 +42,4 @@ current.impact = 3; // Low } - gs.info('[BR:200 - Derive] Fields updated → Category: ' + current.category + ', Subcategory: ' + current.subcategory + ', Impact: ' + current.impact); - })(current, previous); From 228d67bb9f55caf2c7ea8fa3e99c908f389cc812 Mon Sep 17 00:00:00 2001 From: Mandeep Karan Date: Sat, 11 Oct 2025 20:37:23 +0530 Subject: [PATCH 19/23] Update README.md --- .../README.md | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/README.md b/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/README.md index f8bf362bc7..98d6e02d7b 100644 --- a/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/README.md +++ b/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/README.md @@ -1,9 +1,35 @@ -# GlideElement Validation & Derivation Example +# Smart Field Validation and Dependent Field Derivation Using GlideElement.getError() This project demonstrates how to use `GlideElement.setError()` and `GlideElement.getError()` to perform validation in one Business Rule and field derivation in another, without repeating logic. +## 📘 Overview + +This snippet demonstrates how to share validation state and error messages between multiple Business Rules using `GlideElement.setError()` and `GlideElement.getError()` in ServiceNow. + +By propagating validation context across Business Rules, developers can: + +- Avoid repeated validation logic. +- Trigger dependent field updates only when a field passes validation. +- Maintain consistent and clean data flow between sequential rules. + +This technique is especially useful when different validation or derivation rules are split by purpose or owned by different teams. + +--- + +## 🧠 Concept + +When one Business Rule sets an error on a field using `setError()`, the error message persists in memory for that record during the same transaction. +A later Business Rule (executing at a higher order) can then retrieve that message using `getError()` and make data-driven decisions. + ### Flow: 1. BR #1 (`Validate Short Description`) checks text length. 2. BR #2 (`Derive Dependent Fields`) runs only if no validation error exists. 3. Category, Subcategory, and Impact are derived dynamically. + +## 🚀 Benefits + +- ✅ Reduces redundant validation checks +- ✅ Improves rule execution efficiency +- ✅ Keeps logic modular and maintainable +- ✅ Provides better visibility and control in field validations From cab3fa07d73874c6409335915f83d763b53c8900 Mon Sep 17 00:00:00 2001 From: Mandeep Karan Date: Sat, 11 Oct 2025 20:40:48 +0530 Subject: [PATCH 20/23] Delete GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError() directory --- .../README.md | 35 --------------- .../br_derive_dependent_fields.js | 45 ------------------- .../br_validate_short_description.js | 16 ------- 3 files changed, 96 deletions(-) delete mode 100644 GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/README.md delete mode 100644 GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/br_derive_dependent_fields.js delete mode 100644 GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/br_validate_short_description.js diff --git a/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/README.md b/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/README.md deleted file mode 100644 index 98d6e02d7b..0000000000 --- a/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# Smart Field Validation and Dependent Field Derivation Using GlideElement.getError() - -This project demonstrates how to use `GlideElement.setError()` and `GlideElement.getError()` -to perform validation in one Business Rule and field derivation in another, without repeating logic. - -## 📘 Overview - -This snippet demonstrates how to share validation state and error messages between multiple Business Rules using `GlideElement.setError()` and `GlideElement.getError()` in ServiceNow. - -By propagating validation context across Business Rules, developers can: - -- Avoid repeated validation logic. -- Trigger dependent field updates only when a field passes validation. -- Maintain consistent and clean data flow between sequential rules. - -This technique is especially useful when different validation or derivation rules are split by purpose or owned by different teams. - ---- - -## 🧠 Concept - -When one Business Rule sets an error on a field using `setError()`, the error message persists in memory for that record during the same transaction. -A later Business Rule (executing at a higher order) can then retrieve that message using `getError()` and make data-driven decisions. - -### Flow: -1. BR #1 (`Validate Short Description`) checks text length. -2. BR #2 (`Derive Dependent Fields`) runs only if no validation error exists. -3. Category, Subcategory, and Impact are derived dynamically. - -## 🚀 Benefits - -- ✅ Reduces redundant validation checks -- ✅ Improves rule execution efficiency -- ✅ Keeps logic modular and maintainable -- ✅ Provides better visibility and control in field validations diff --git a/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/br_derive_dependent_fields.js b/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/br_derive_dependent_fields.js deleted file mode 100644 index 24fa39decf..0000000000 --- a/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/br_derive_dependent_fields.js +++ /dev/null @@ -1,45 +0,0 @@ -// Name: Derive Dependent Fields -// Table: Incident -// When: before insert or before update -// Order: 200 - -(function executeRule(current, previous /*null when async*/) { - - // Only proceed if short_description changed or new record - if (!(current.operation() === 'insert' || current.short_description.changes())) { - return; - } - - var errorMsg = current.short_description.getError(); - - if (errorMsg) { - gs.info('[BR:200 - Derive] Skipping field derivation due to prior error → ' + errorMsg); - return; - } - - // Proceed only if no prior validation error - var desc = current.getValue('short_description').toLowerCase(); - - // Example 1: Derive category - if (desc.includes('server')) { - current.category = 'infrastructure'; - current.subcategory = 'server issue'; - } else if (desc.includes('email')) { - current.category = 'communication'; - current.subcategory = 'email problem'; - } else if (desc.includes('login')) { - current.category = 'access'; - current.subcategory = 'authentication'; - } else { - current.category = 'inquiry'; - current.subcategory = 'general'; - } - - // Example 2: Derive impact - if (desc.includes('critical') || desc.includes('outage')) { - current.impact = 1; // High - } else { - current.impact = 3; // Low - } - -})(current, previous); diff --git a/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/br_validate_short_description.js b/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/br_validate_short_description.js deleted file mode 100644 index 2fa2e64e84..0000000000 --- a/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/br_validate_short_description.js +++ /dev/null @@ -1,16 +0,0 @@ -// Name: Validate Short Description -// Table: Incident -// When: before insert or before update -// Order: 100 - -(function executeRule(current, previous /*null when async*/) { - var short_desc = current.getValue('short_description'); - - // Validate only for new records or when field changes - if (current.operation() === 'insert' || current.short_description.changes()) { - if (!short_desc || short_desc.trim().length < 40) { - current.short_description.setError('Short description must be at least 40 characters long.'); - current.setAbortAction(true); - } - } -})(current, previous); From 932e34a7da2e1c77eeee0f3c6dd58db07b496256 Mon Sep 17 00:00:00 2001 From: Mandeep Karan Date: Sat, 11 Oct 2025 22:13:43 +0530 Subject: [PATCH 21/23] Create README.md --- .../README.md | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Core ServiceNow APIs/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/README.md diff --git a/Core ServiceNow APIs/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/README.md b/Core ServiceNow APIs/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/README.md new file mode 100644 index 0000000000..98d6e02d7b --- /dev/null +++ b/Core ServiceNow APIs/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/README.md @@ -0,0 +1,35 @@ +# Smart Field Validation and Dependent Field Derivation Using GlideElement.getError() + +This project demonstrates how to use `GlideElement.setError()` and `GlideElement.getError()` +to perform validation in one Business Rule and field derivation in another, without repeating logic. + +## 📘 Overview + +This snippet demonstrates how to share validation state and error messages between multiple Business Rules using `GlideElement.setError()` and `GlideElement.getError()` in ServiceNow. + +By propagating validation context across Business Rules, developers can: + +- Avoid repeated validation logic. +- Trigger dependent field updates only when a field passes validation. +- Maintain consistent and clean data flow between sequential rules. + +This technique is especially useful when different validation or derivation rules are split by purpose or owned by different teams. + +--- + +## 🧠 Concept + +When one Business Rule sets an error on a field using `setError()`, the error message persists in memory for that record during the same transaction. +A later Business Rule (executing at a higher order) can then retrieve that message using `getError()` and make data-driven decisions. + +### Flow: +1. BR #1 (`Validate Short Description`) checks text length. +2. BR #2 (`Derive Dependent Fields`) runs only if no validation error exists. +3. Category, Subcategory, and Impact are derived dynamically. + +## 🚀 Benefits + +- ✅ Reduces redundant validation checks +- ✅ Improves rule execution efficiency +- ✅ Keeps logic modular and maintainable +- ✅ Provides better visibility and control in field validations From f3d04163537371bff68d94724e464d24b4308e1d Mon Sep 17 00:00:00 2001 From: Mandeep Karan Date: Sat, 11 Oct 2025 22:14:49 +0530 Subject: [PATCH 22/23] Create br_derive_dependent_fields.js --- .../br_derive_dependent_fields.js | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 Core ServiceNow APIs/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/br_derive_dependent_fields.js diff --git a/Core ServiceNow APIs/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/br_derive_dependent_fields.js b/Core ServiceNow APIs/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/br_derive_dependent_fields.js new file mode 100644 index 0000000000..24fa39decf --- /dev/null +++ b/Core ServiceNow APIs/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/br_derive_dependent_fields.js @@ -0,0 +1,45 @@ +// Name: Derive Dependent Fields +// Table: Incident +// When: before insert or before update +// Order: 200 + +(function executeRule(current, previous /*null when async*/) { + + // Only proceed if short_description changed or new record + if (!(current.operation() === 'insert' || current.short_description.changes())) { + return; + } + + var errorMsg = current.short_description.getError(); + + if (errorMsg) { + gs.info('[BR:200 - Derive] Skipping field derivation due to prior error → ' + errorMsg); + return; + } + + // Proceed only if no prior validation error + var desc = current.getValue('short_description').toLowerCase(); + + // Example 1: Derive category + if (desc.includes('server')) { + current.category = 'infrastructure'; + current.subcategory = 'server issue'; + } else if (desc.includes('email')) { + current.category = 'communication'; + current.subcategory = 'email problem'; + } else if (desc.includes('login')) { + current.category = 'access'; + current.subcategory = 'authentication'; + } else { + current.category = 'inquiry'; + current.subcategory = 'general'; + } + + // Example 2: Derive impact + if (desc.includes('critical') || desc.includes('outage')) { + current.impact = 1; // High + } else { + current.impact = 3; // Low + } + +})(current, previous); From 6e6b3fea50955422dcfdf49000db982300ad3acb Mon Sep 17 00:00:00 2001 From: Mandeep Karan Date: Sat, 11 Oct 2025 22:15:20 +0530 Subject: [PATCH 23/23] Create br_validate_short_description.js --- .../br_validate_short_description.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 Core ServiceNow APIs/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/br_validate_short_description.js diff --git a/Core ServiceNow APIs/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/br_validate_short_description.js b/Core ServiceNow APIs/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/br_validate_short_description.js new file mode 100644 index 0000000000..2fa2e64e84 --- /dev/null +++ b/Core ServiceNow APIs/GlideElement/Smart Field Validation and Dependent Field Derivation Using getError() and setError()/br_validate_short_description.js @@ -0,0 +1,16 @@ +// Name: Validate Short Description +// Table: Incident +// When: before insert or before update +// Order: 100 + +(function executeRule(current, previous /*null when async*/) { + var short_desc = current.getValue('short_description'); + + // Validate only for new records or when field changes + if (current.operation() === 'insert' || current.short_description.changes()) { + if (!short_desc || short_desc.trim().length < 40) { + current.short_description.setError('Short description must be at least 40 characters long.'); + current.setAbortAction(true); + } + } +})(current, previous);