How to implement an always‑visible (expanded) tooltip for 5 WHY RCA questions on Problem Task (PTASK
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
3 weeks ago
Hello Community,
I’m looking for best‑practice guidance on implementing an “always‑expanded tooltip” (i.e., permanently visible contextual guidance) on the Problem Task (PTASK) form in ServiceNow.
Business Requirement
- Display 5 WHY Root Cause Analysis questions inside the Root Cause tab of PTASK
- The questions are for guidance only
- They should be always visible (expanded) — not hover‑based
- Root Cause Summary should be a mandatory free‑text field
- Individual questions must NOT be mandatory
- This approach is approved by the Product Owner (Hari)
5 WHY Questions:
- Why did this problem occur? (Identify the immediate cause.)
- Why did that cause happen? (Identify the underlying factor.)
- Why was that factor present or not prevented? (Process/system gaps.)
- Why did the process/system allow this to happen? (Controls, procedures, resources.)
- Why was the root condition not identified or addressed earlier? (True root cause & improvement opportunity.)
Clarification on “Tooltip”
The business uses the term “tooltip”, but the actual expectation is:
✅ Guidance that is permanently visible / always expanded, not hover‑only.
I understand that native ServiceNow Help Text tooltips cannot stay expanded, so I’m looking for the recommended alternative pattern.
What I Have Implemented So Far
- Created an HTML field on the
problem_tasktable- Label: Root Cause
- Type: HTML
- Added the 5 WHY questions as static instructional content in the Default Value of the HTML field
- Placed this HTML field in the Root Cause tab, above the Root Cause Summary field
- Made Root Cause Summary (separate field) mandatory via UI Policy
This ensures:
- Guidance is always visible
- No hover action required
- Users enter RCA in a single free‑text field
Questions to the Community
- Is using an HTML field as an always‑visible guidance block the recommended / best‑practice approach to replace an “always‑expanded tooltip”?
- Is there any better or standard ServiceNow alternative, such as:
- UI Formatter
- Dictionary Help Text (non‑hover)
- Any Now Experience / OOTB pattern
- Are there any downsides or upgrade risks of using an HTML field for this purpose?
can any one please help me here
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
3 weeks ago
@Ankur Bawiskar need your hlep here .
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
3 weeks ago
Yes, it's one of the most widely used and accepted patterns for always-visible instructional content on classic (Workspace/Platform UI) forms. It's simple, admin-maintainable, requires no custom code, survives cloning, and works across form views without scripting. For a static guidance block like your 5 WHY questions, it's a pragmatic and low-risk choice.
That said, "best practice" depends on your UI target. If your users are primarily on Next Experience (Agent Workspace), the HTML field renders differently (it's honored, but styling can be inconsistent with the Workspace design system). For Platform UI / classic form usage, you're in good shape.
2. Are there better or standard alternatives?
Here's how the main options compare for your specific use case:
UI Formatter (Recommended upgrade from HTML field)
This is arguably the more "architecturally correct" approach. You create a UI Formatter (a UI Macro wrapped in a form section) that renders your 5 WHY guidance as styled HTML. The advantages over a raw HTML field are that it doesn't occupy a dictionary column on the table, it's reusable across forms, and it gives you full control over markup and styling (you can use ServiceNow's $sp or standard CSS classes to match the form's look and feel). The downside is slightly more setup — you need a UI Macro and then register it as a Formatter, then drag it onto the form layout. But for something like permanent instructional content, this is the pattern ServiceNow's own platform uses internally (think of the "Related Records" formatter or the "Activity" formatter).
How to implement it:
- Create a UI Macro (e.g.,
rca_five_why_guidance) with your styled HTML content — an info-box with the 5 questions, using a light blue or grey background callout style. - Register a UI Formatter pointing to that macro, associated with
problem_task. - Add the Formatter to your form layout in the Root Cause section, above the Root Cause Summary field.
This keeps your table schema clean (no extra HTML column) and is the approach most ServiceNow architects would recommend.
Dictionary Help Text
As you've already noted, this is hover-only in Platform UI and rendered as a small icon tooltip. It cannot be made permanently visible without client-side scripting hacks (which are fragile and not recommended). So this doesn't meet your requirement.
Annotation / Field Message (g_form.showFieldMsg)
You could use an onLoad Client Script to call g_form.showFieldMsg('root_cause_summary', '...', 'info') to display an inline message near the field. This renders as a small info banner attached to the field. The limitation is that it's tied to a single field, doesn't support rich HTML formatting well, and can be dismissed by the user. Not ideal for a structured 5-question guidance block.
Now Experience / UI Builder (Workspace)
If your users work in Agent Workspace, the long-term direction is to use UI Builder with a custom declarative component or a Rich Text component placed in the form layout via a Form Section Configuration. This gives you native Workspace styling and full control. However, this is more effort and only relevant if Workspace is your primary consumption surface.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
3 weeks ago
How to implement it:
- Create a UI Macro (e.g.,
rca_five_why_guidance) with your styled HTML content — an info-box with the 5 questions, using a light blue or grey background callout style. - Register a UI Formatter pointing to that macro, associated with
problem_task. - Add the Formatter to your form layout in the Root Cause section, above the Root Cause Summary field.
can you pllease share screenshots please -
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
3 weeks ago
1 — Create the UI Macro
The UI Macro holds your actual HTML content — the styled guidance block with the 5 WHY questions.
Step 1: Navigate to System UI → UI Macros (or type sys_ui_macro.list in the navigator filter).
Step 2: Click New.
Step 3: Fill in the fields:
| Field | Value |
|---|---|
| Name | rca_five_why_guidance |
| Active | Checked |
| Description | Displays 5 WHY Root Cause Analysis guidance on the Problem Task form |
Step 4: In the XML field, paste the following code:
<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false"
xmlns:j="jelly:core"
xmlns:g="glide"
xmlns:j2="null"
xmlns:g2="null">
<div style="
background-color: #e8f4fd;
border-left: 4px solid #0073e6;
border-radius: 4px;
padding: 16px 20px;
margin: 8px 0 16px 0;
font-family: SourceSansPro, 'Helvetica Neue', Arial, sans-serif;
font-size: 13px;
color: #333;
line-height: 1.6;
">
<div style="
font-size: 14px;
font-weight: 600;
margin-bottom: 10px;
color: #0053a0;
">
5 WHY Root Cause Analysis — Guidance
</div>
<div style="margin-bottom: 6px; color: #555;">
Use the questions below to guide your root cause investigation.
These are for reference only — answering them individually is not mandatory.
Capture your final analysis in the <strong>Root Cause Summary</strong> field below.
</div>
<ol style="
margin: 10px 0 0 0;
padding-left: 22px;
color: #333;
">
<li style="margin-bottom: 8px;">
<strong>Why did this problem occur?</strong>
<br/>
<span style="color: #666; font-size: 12px;">
Identify the immediate cause.
</span>
</li>
<li style="margin-bottom: 8px;">
<strong>Why did that cause happen?</strong>
<br/>
<span style="color: #666; font-size: 12px;">
Identify the underlying factor.
</span>
</li>
<li style="margin-bottom: 8px;">
<strong>Why was that factor present or not prevented?</strong>
<br/>
<span style="color: #666; font-size: 12px;">
Look for process or system gaps.
</span>
</li>
<li style="margin-bottom: 8px;">
<strong>Why did the process/system allow this to happen?</strong>
<br/>
<span style="color: #666; font-size: 12px;">
Examine controls, procedures, and resources.
</span>
</li>
<li style="margin-bottom: 8px;">
<strong>Why was the root condition not identified or addressed earlier?</strong>
<br/>
<span style="color: #666; font-size: 12px;">
Determine the true root cause and improvement opportunity.
</span>
</li>
</ol>
</div>
</j:jelly>
Step 5: Click Submit.
What you just did: You created a reusable HTML snippet wrapped in Jelly (ServiceNow's server-side template language). The
<j:jelly>wrapper is required — without it, ServiceNow won't render the macro. The actual content inside is plain HTML with inline styles.
Part 2 — Register a UI Formatter
A UI Formatter is what makes your UI Macro available as a draggable element in the Form Layout designer.
Step 1: Navigate to System UI → Formatters (or type sys_ui_formatter.list in the navigator filter).
Step 2: Click New.
Step 3: Fill in the fields:
| Field | Value |
|---|---|
| Name | rca_five_why_guidance |
| Table | Problem Task [problem_task] |
| Formatter | rca_five_why_guidance |
| Type | Formatter |
| Active | Checked |
Important: The Formatter field value must exactly match the Name of the UI Macro you created in Part 1 (case-sensitive). This is how ServiceNow links the two.
Step 4: Click Submit.
What you just did: You registered the UI Macro as a form element specifically for the
problem_tasktable. ServiceNow now knows this formatter exists and will show it in the form layout designer.
Part 3 — Add the Formatter to the Form Layout
Now you place the guidance block onto the actual PTASK form, inside the Root Cause section.
Step 1: Open any existing Problem Task record (navigate to Problem → Problem Tasks, open any PTASK).
Step 2: At the top-left of the form, click the hamburger menu (three horizontal lines or the context menu icon) and select Configure → Form Layout.
Alternatively, right-click the form header bar and choose Configure → Form Layout.
Step 3: The Form Layout designer opens. You'll see two panels — Available (left) and Selected (right). At the top, make sure you're editing the correct View (typically Default view unless your team uses a custom view).
Step 4: In the Available list, scroll down or search. You should see your formatter listed as:
rca_five_why_guidance (Formatter)
It will appear with a (Formatter) suffix to distinguish it from regular fields.
Step 5: In the Selected list (right side), locate the Root Cause section. You need to place the formatter above the Root Cause Summary field. To do this:
- Click on
rca_five_why_guidance (Formatter)in the Available list. - Click the right arrow (→) button to move it to the Selected list.
- It gets added at the bottom. Now use the up arrow (↑) button repeatedly to move it up until it sits just above the Root Cause Summary field within the Root Cause section.
The layout should look something like this in the Selected panel:
--- Root Cause --- ← section header
rca_five_why_guidance (Formatter) ← your guidance block
Root Cause Summary ← mandatory free-text field
Step 6: Click Save.
Step 7: The form reloads. You should now see the blue guidance callout box with the 5 WHY questions rendered permanently inside the Root Cause tab, directly above the Root Cause Summary field.
Part 4 (You Already Have This) — Make Root Cause Summary Mandatory
Since you mentioned you've already done this with a UI Policy, just confirm it's in place:
Step 1: Navigate to System UI → UI Policies (or sys_ui_policy.list).
Step 2: Verify you have a policy on problem_task where:
| Setting | Value |
|---|---|
| Table | problem_task |
| Condition | As per your business logic (e.g., always, or when state = Analysis) |
| UI Policy Action | Field = Root Cause Summary, Mandatory = true |
