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;