From 5aacdf6bf81f9fa952530f24aab60bd0ea58328d Mon Sep 17 00:00:00 2001
From: Raghav Sharma <53517312+raghavs046@users.noreply.github.com>
Date: Mon, 20 Oct 2025 21:41:08 +0530
Subject: [PATCH 1/4] Add custom 404 HTML page structure
---
.../Service Portal Widgets/custom404/HTML.js | 10 ++++++++++
1 file changed, 10 insertions(+)
create mode 100644 Modern Development/Service Portal Widgets/custom404/HTML.js
diff --git a/Modern Development/Service Portal Widgets/custom404/HTML.js b/Modern Development/Service Portal Widgets/custom404/HTML.js
new file mode 100644
index 0000000000..85a8564627
--- /dev/null
+++ b/Modern Development/Service Portal Widgets/custom404/HTML.js
@@ -0,0 +1,10 @@
+
+
${This page could not be found. Based on your search we have found below valid pages}
+
+
From 5377b50ab403dc794d2b1b68010c700acbcfc8cd Mon Sep 17 00:00:00 2001
From: Raghav Sharma <53517312+raghavs046@users.noreply.github.com>
Date: Mon, 20 Oct 2025 21:46:18 +0530
Subject: [PATCH 2/4] Add custom 404 page suggestion script
This script retrieves the first three characters of the page_id from the URL and suggests valid related pages based on that.
---
.../custom404/server.js | 20 +++++++++++++++++++
1 file changed, 20 insertions(+)
create mode 100644 Modern Development/Service Portal Widgets/custom404/server.js
diff --git a/Modern Development/Service Portal Widgets/custom404/server.js b/Modern Development/Service Portal Widgets/custom404/server.js
new file mode 100644
index 0000000000..a9f02c48a1
--- /dev/null
+++ b/Modern Development/Service Portal Widgets/custom404/server.js
@@ -0,0 +1,20 @@
+(function() {
+ /*
+ This script will get the 3 characters of page_id from url and suggest valid pages.
+ */
+ data.pageArr = []; // array to store related pages
+ var pageId = $sp.getParameter('id').toString(); // get page id from url
+ // get 3 letters of page id
+ if (pageId && pageId.length() > 3)
+ pageId = pageId.substring(0, 3);
+
+ var relatedPages = new GlideRecord('sp_page');
+ relatedPages.addEncodedQuery('idLIKE' + pageId);
+ relatedPages.query();
+ while (relatedPages.next()) {
+ var tempList = {}; // temporary object.
+ tempList.name = relatedPages.getValue('title');
+ tempList.url = '/' + $sp.getValue('url_suffix') + '?id=' + relatedPages.getValue('id');
+ data.pageArr.push(tempList); // add related suggested pages to array
+ }
+})();
From c433b85ee4dbe83618fea19541aa7c9938591f85 Mon Sep 17 00:00:00 2001
From: Raghav Sharma <53517312+raghavs046@users.noreply.github.com>
Date: Mon, 20 Oct 2025 21:46:54 +0530
Subject: [PATCH 3/4] Create css.js
---
.../Service Portal Widgets/custom404/css.js | 15 +++++++++++++++
1 file changed, 15 insertions(+)
create mode 100644 Modern Development/Service Portal Widgets/custom404/css.js
diff --git a/Modern Development/Service Portal Widgets/custom404/css.js b/Modern Development/Service Portal Widgets/custom404/css.js
new file mode 100644
index 0000000000..a368d6bae2
--- /dev/null
+++ b/Modern Development/Service Portal Widgets/custom404/css.js
@@ -0,0 +1,15 @@
+.heading-message{
+ color:red;
+}
+.page-container{
+ display: flex;
+ justify-content: space-evenly;
+ flex-direction:cloumn;
+}
+ul{
+ padding: 2rem;
+ list-style-type: disclosure-closed;
+}
+li{
+ padding:1rem;
+}
From 8408867f76b4bb2809f5caf5d5a6eb10ab2abb12 Mon Sep 17 00:00:00 2001
From: Raghav Sharma <53517312+raghavs046@users.noreply.github.com>
Date: Mon, 20 Oct 2025 21:52:17 +0530
Subject: [PATCH 4/4] Add README for custom 404 widget
Added usage instructions and use case for custom 404 widget.
---
.../Service Portal Widgets/custom404/README.md | 15 +++++++++++++++
1 file changed, 15 insertions(+)
create mode 100644 Modern Development/Service Portal Widgets/custom404/README.md
diff --git a/Modern Development/Service Portal Widgets/custom404/README.md b/Modern Development/Service Portal Widgets/custom404/README.md
new file mode 100644
index 0000000000..da1c1082cb
--- /dev/null
+++ b/Modern Development/Service Portal Widgets/custom404/README.md
@@ -0,0 +1,15 @@
+**How to use**
+1. Add this widget to new portal page.
+2. Add the page in "sp_portal" record in 404 field.
+
+**Use Case**
+1. Some organizations do not want to show OOB 404 page having game but want to show the suggestions with correct pages.
+
+**Result**
+1. This code will search the 3 letters of page_id from URL and will suggest correct pages.
+2. The correct links will open the pages in next tab.
+
+
+
+
+