From 21b615f12031c3d78653b5c67b681cf9a69c3799 Mon Sep 17 00:00:00 2001 From: ReddySurendra <130588276+Suri123789@users.noreply.github.com> Date: Tue, 27 May 2025 12:30:58 +0530 Subject: [PATCH 1/4] Code for Moveworks bot messages for Flow to include url links --- Moveworks messages html for Flow | 38 ++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 Moveworks messages html for Flow diff --git a/Moveworks messages html for Flow b/Moveworks messages html for Flow new file mode 100644 index 0000000000..c228104146 --- /dev/null +++ b/Moveworks messages html for Flow @@ -0,0 +1,38 @@ +var article = fd_data._1__look_up_record.record; + +// Safely retrieve fields with null checks for a KB Article +var sys_id = article.sys_id || ''; +var articleTitle = article.short_description || 'N/A'; +var requestedBy = fd_data.trigger.current.sys_created_by; +var articleNumber = article.number || 'N/A'; +var requestedOn = article.sys_created_on || 'N/A'; +var kbName = (article.kb_knowledge_base && article.kb_knowledge_base.title) || 'N/A'; +var knowledgeManagers = (article.kb_knowledge_base && article.kb_knowledge_base.owner && article.kb_knowledge_base.owner.getDisplayValue()) || 'N/A'; + +// Base URL +var baseUrl = gs.getProperty('glide.servlet.uri') || ''; +var kbLink = baseUrl + 'kb_knowledge.do?sys_id=' + sys_id; +//Below are links for opening the record in servicenow +var approveLink = baseUrl + 'sysapproval_approver.do?action=approve&sys_id=' + sys_id; +var rejectLink = baseUrl + 'sysapproval_approver.do?action=reject&sys_id=' + sys_id; +//Below lines are for email template which is used to create email inbound template. +var inst ='inspirebrandsdev'; +var approveSub = 'RE: '+ articleNumber +' Approve KB Article '; +var body = 'Please do not change the subject, just click send message.'; +var rejectSub = 'RE: '+ articleNumber +' Reject KB Article '; + + +// HTML message +var message = + 'Pending approval request from ServiceNow

' + + '' + articleNumber + ': ' + articleTitle + '

' + + 'Requested by: ' + requestedBy + '
' + + 'Requested on: ' + requestedOn + '
' + + 'Knowledge Base: ' + kbName + '
' + + 'Knowledge Managers: ' + knowledgeManagers + '

' + + 'Approve link : Click here
'+ + 'Reject link : Click here
'; + //'Approve link : Click here to approve
' + + //'Reject link: Click here to reject'; + +return message; From 0b3050c392a14fb21fb9cc1fbd614e885423dc78 Mon Sep 17 00:00:00 2001 From: ReddySurendra <130588276+Suri123789@users.noreply.github.com> Date: Wed, 29 Oct 2025 17:10:46 +0530 Subject: [PATCH 2/4] Create script.js --- .../script.js | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 Client-Side Components/Client Scripts/Abort direct incident closure without Resolve State/script.js diff --git a/Client-Side Components/Client Scripts/Abort direct incident closure without Resolve State/script.js b/Client-Side Components/Client Scripts/Abort direct incident closure without Resolve State/script.js new file mode 100644 index 0000000000..f423c6109c --- /dev/null +++ b/Client-Side Components/Client Scripts/Abort direct incident closure without Resolve State/script.js @@ -0,0 +1,30 @@ +function onChange(control, oldValue, newValue, isLoading, isTemplate) { + // Prevent execution during form load or when value is empty + if (isLoading || newValue === '') { + return; + } + + // Dummy values for state comparison + // Assuming: + // 6 = Resolved + // 7 = Closed Complete + var RESOLVED = 6; + var CLOSED = 7; + + // Prevent direct move to Closed without passing through Resolved + if (newValue == CLOSED && oldValue != RESOLVED) { + + // Reset to previous state + g_form.setValue('state', oldValue); + + // Show validation warning + g_form.addErrorMessage( + 'Direct closure is not allowed. Please first move the incident to Resolved state.' + ); + + // Reload page after showing error + setTimeout(function() { + location.reload(); + }, 3000); + } +} From 81c34408b37f7b742023a9be7c14b4bacfe5c3d9 Mon Sep 17 00:00:00 2001 From: ReddySurendra <130588276+Suri123789@users.noreply.github.com> Date: Wed, 29 Oct 2025 17:13:29 +0530 Subject: [PATCH 3/4] Create readme.md --- .../readme.md | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 Client-Side Components/Client Scripts/Abort direct incident closure without Resolve State/readme.md diff --git a/Client-Side Components/Client Scripts/Abort direct incident closure without Resolve State/readme.md b/Client-Side Components/Client Scripts/Abort direct incident closure without Resolve State/readme.md new file mode 100644 index 0000000000..3f6cb95b33 --- /dev/null +++ b/Client-Side Components/Client Scripts/Abort direct incident closure without Resolve State/readme.md @@ -0,0 +1,31 @@ +📘 README — Incident State Validation (Client Script) +Overview + +This Client Script enforces the correct ITIL incident lifecycle by preventing users from directly closing an incident without first transitioning it through the Resolved state. +If a user attempts to move the state directly to Closed Complete, the system reverts the change and displays a notification. + +What This Code Does +Monitors changes to the state field on Incident form +Checks if new selection is trying to skip the Resolved step +Reverts state to its previous value when the rule is violated +Alerts the user with a clear and guided message +Refreshes the form to maintain data consistency +Usage Instructions + +Create a Client Script on the Incident table +Type: onChange +Field Name: state +Paste the script under the script section +Test by trying to directly move an Incident to Closed Complete +S +cript Requirements +State values must be configured as: +6 → Resolved +7 → Closed Complete + +Script runs only on Incident records +Must be active in applicable ITIL views +Notes for Developers +This code supports clean transition handling for ITSM workflows +Helps enforce process compliance without server-side overhead +Recommended for environments requiring strict closure governance From c1d3a2f0ff4bbedcc448cee76d2ad40dce82f517 Mon Sep 17 00:00:00 2001 From: ReddySurendra <130588276+Suri123789@users.noreply.github.com> Date: Wed, 29 Oct 2025 17:14:53 +0530 Subject: [PATCH 4/4] Delete Moveworks messages html for Flow --- Moveworks messages html for Flow | 38 -------------------------------- 1 file changed, 38 deletions(-) delete mode 100644 Moveworks messages html for Flow diff --git a/Moveworks messages html for Flow b/Moveworks messages html for Flow deleted file mode 100644 index c228104146..0000000000 --- a/Moveworks messages html for Flow +++ /dev/null @@ -1,38 +0,0 @@ -var article = fd_data._1__look_up_record.record; - -// Safely retrieve fields with null checks for a KB Article -var sys_id = article.sys_id || ''; -var articleTitle = article.short_description || 'N/A'; -var requestedBy = fd_data.trigger.current.sys_created_by; -var articleNumber = article.number || 'N/A'; -var requestedOn = article.sys_created_on || 'N/A'; -var kbName = (article.kb_knowledge_base && article.kb_knowledge_base.title) || 'N/A'; -var knowledgeManagers = (article.kb_knowledge_base && article.kb_knowledge_base.owner && article.kb_knowledge_base.owner.getDisplayValue()) || 'N/A'; - -// Base URL -var baseUrl = gs.getProperty('glide.servlet.uri') || ''; -var kbLink = baseUrl + 'kb_knowledge.do?sys_id=' + sys_id; -//Below are links for opening the record in servicenow -var approveLink = baseUrl + 'sysapproval_approver.do?action=approve&sys_id=' + sys_id; -var rejectLink = baseUrl + 'sysapproval_approver.do?action=reject&sys_id=' + sys_id; -//Below lines are for email template which is used to create email inbound template. -var inst ='inspirebrandsdev'; -var approveSub = 'RE: '+ articleNumber +' Approve KB Article '; -var body = 'Please do not change the subject, just click send message.'; -var rejectSub = 'RE: '+ articleNumber +' Reject KB Article '; - - -// HTML message -var message = - 'Pending approval request from ServiceNow

' + - '' + articleNumber + ': ' + articleTitle + '

' + - 'Requested by: ' + requestedBy + '
' + - 'Requested on: ' + requestedOn + '
' + - 'Knowledge Base: ' + kbName + '
' + - 'Knowledge Managers: ' + knowledgeManagers + '

' + - 'Approve link : Click here
'+ - 'Reject link : Click here
'; - //'Approve link : Click here to approve
' + - //'Reject link: Click here to reject'; - -return message;