<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>question Best practice for a dynamic progress tracker (chevrons) on a record form (Classic UI)? in App Engine forum</title>
    <link>https://www.servicenow.com/community/app-engine-forum/best-practice-for-a-dynamic-progress-tracker-chevrons-on-a/m-p/3499288#M10145</link>
    <description>&lt;DIV&gt;&lt;P&gt;I’m trying to replace a set of static chevrons on a record form with a &lt;STRONG&gt;dynamic progress tracker&lt;/STRONG&gt; in the &lt;STRONG&gt;classic form UI&lt;/STRONG&gt; (not Workspace).&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;What I need&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;A visual, chevron‑style progress indicator rendered directly on the record form.&lt;/LI&gt;&lt;LI&gt;Each step should show one of several statuses (Action Needed, Waiting/Pending, Complete for Now, Complete, Not Applicable).&lt;/LI&gt;&lt;LI&gt;Status is driven primarily by &lt;STRONG&gt;phrases in a field on the record&lt;/STRONG&gt; (e.g., a “Sign‑Off Status” string generated by server logic), not just by the record state.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;What I’ve tried&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;Formatter UI Macro&lt;/STRONG&gt;&lt;UL&gt;&lt;LI&gt;Plain HTML renders fine.&lt;/LI&gt;&lt;LI&gt;Client‑side scripts (&lt;CODE&gt;&amp;lt;script&amp;gt;&lt;/CODE&gt;, GlideAjax, etc.) are unreliable or stripped.&lt;/LI&gt;&lt;LI&gt;Jelly (&lt;CODE&gt;&amp;lt;j:script&amp;gt;&lt;/CODE&gt;, &lt;CODE&gt;&amp;lt;j:jelly&amp;gt;&lt;/CODE&gt;) consistently fails at runtime with&lt;BR /&gt;&lt;EM&gt;“The prefix ‘j’ for element ‘j:script’ is not bound”&lt;/EM&gt;, even though the macro saves.&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;UI Pages&lt;/STRONG&gt;&lt;UL&gt;&lt;LI&gt;Work when accessed directly.&lt;/LI&gt;&lt;LI&gt;Fail or render blank when embedded via iframe on a form (likely scope / ACL / rendering context issues).&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;GlideAjax + Script Includes&lt;/STRONG&gt;&lt;UL&gt;&lt;LI&gt;Server‑side evaluator logic exists and works.&lt;/LI&gt;&lt;LI&gt;Getting the results reliably into a formatter without hitting XML/Jelly issues has been the blocker.&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;The roadblocks&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Formatter macros seem limited to HTML with no reliable server or client scripting.&lt;/LI&gt;&lt;LI&gt;Jelly works in some contexts but not consistently in formatter macros.&lt;/LI&gt;&lt;LI&gt;UI Pages introduce iframe and scope complications.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;My question&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Is there a &lt;STRONG&gt;recommended or simpler pattern&lt;/STRONG&gt; for building a dynamic, multi‑step progress tracker on a classic form?&lt;/LI&gt;&lt;LI&gt;Am I fighting the platform by trying to do this in a formatter, and should this be done another way (UI Builder, Workspace, related list override, etc.)?&lt;/LI&gt;&lt;LI&gt;Are there known limitations or best practices for dynamic visual components like this on classic forms?&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Any guidance on the &lt;EM&gt;right&lt;/EM&gt; architectural approach (even if it means rethinking where/how this renders) would be hugely appreciated.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And yes, Microsoft Copilot wrote this question for me. I've been trying to use it and our internal version of chat GPT to help, but I feel like I'm going in circles.&lt;/P&gt;&lt;/DIV&gt;</description>
    <pubDate>Sun, 01 Mar 2026 03:32:32 GMT</pubDate>
    <dc:creator>mandysander</dc:creator>
    <dc:date>2026-03-01T03:32:32Z</dc:date>
    <item>
      <title>Best practice for a dynamic progress tracker (chevrons) on a record form (Classic UI)?</title>
      <link>https://www.servicenow.com/community/app-engine-forum/best-practice-for-a-dynamic-progress-tracker-chevrons-on-a/m-p/3499288#M10145</link>
      <description>&lt;DIV&gt;&lt;P&gt;I’m trying to replace a set of static chevrons on a record form with a &lt;STRONG&gt;dynamic progress tracker&lt;/STRONG&gt; in the &lt;STRONG&gt;classic form UI&lt;/STRONG&gt; (not Workspace).&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;What I need&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;A visual, chevron‑style progress indicator rendered directly on the record form.&lt;/LI&gt;&lt;LI&gt;Each step should show one of several statuses (Action Needed, Waiting/Pending, Complete for Now, Complete, Not Applicable).&lt;/LI&gt;&lt;LI&gt;Status is driven primarily by &lt;STRONG&gt;phrases in a field on the record&lt;/STRONG&gt; (e.g., a “Sign‑Off Status” string generated by server logic), not just by the record state.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;What I’ve tried&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;Formatter UI Macro&lt;/STRONG&gt;&lt;UL&gt;&lt;LI&gt;Plain HTML renders fine.&lt;/LI&gt;&lt;LI&gt;Client‑side scripts (&lt;CODE&gt;&amp;lt;script&amp;gt;&lt;/CODE&gt;, GlideAjax, etc.) are unreliable or stripped.&lt;/LI&gt;&lt;LI&gt;Jelly (&lt;CODE&gt;&amp;lt;j:script&amp;gt;&lt;/CODE&gt;, &lt;CODE&gt;&amp;lt;j:jelly&amp;gt;&lt;/CODE&gt;) consistently fails at runtime with&lt;BR /&gt;&lt;EM&gt;“The prefix ‘j’ for element ‘j:script’ is not bound”&lt;/EM&gt;, even though the macro saves.&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;UI Pages&lt;/STRONG&gt;&lt;UL&gt;&lt;LI&gt;Work when accessed directly.&lt;/LI&gt;&lt;LI&gt;Fail or render blank when embedded via iframe on a form (likely scope / ACL / rendering context issues).&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;GlideAjax + Script Includes&lt;/STRONG&gt;&lt;UL&gt;&lt;LI&gt;Server‑side evaluator logic exists and works.&lt;/LI&gt;&lt;LI&gt;Getting the results reliably into a formatter without hitting XML/Jelly issues has been the blocker.&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;The roadblocks&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Formatter macros seem limited to HTML with no reliable server or client scripting.&lt;/LI&gt;&lt;LI&gt;Jelly works in some contexts but not consistently in formatter macros.&lt;/LI&gt;&lt;LI&gt;UI Pages introduce iframe and scope complications.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;My question&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Is there a &lt;STRONG&gt;recommended or simpler pattern&lt;/STRONG&gt; for building a dynamic, multi‑step progress tracker on a classic form?&lt;/LI&gt;&lt;LI&gt;Am I fighting the platform by trying to do this in a formatter, and should this be done another way (UI Builder, Workspace, related list override, etc.)?&lt;/LI&gt;&lt;LI&gt;Are there known limitations or best practices for dynamic visual components like this on classic forms?&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Any guidance on the &lt;EM&gt;right&lt;/EM&gt; architectural approach (even if it means rethinking where/how this renders) would be hugely appreciated.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And yes, Microsoft Copilot wrote this question for me. I've been trying to use it and our internal version of chat GPT to help, but I feel like I'm going in circles.&lt;/P&gt;&lt;/DIV&gt;</description>
      <pubDate>Sun, 01 Mar 2026 03:32:32 GMT</pubDate>
      <guid>https://www.servicenow.com/community/app-engine-forum/best-practice-for-a-dynamic-progress-tracker-chevrons-on-a/m-p/3499288#M10145</guid>
      <dc:creator>mandysander</dc:creator>
      <dc:date>2026-03-01T03:32:32Z</dc:date>
    </item>
    <item>
      <title>Re: Best practice for a dynamic progress tracker (chevrons) on a record form (Classic UI)?</title>
      <link>https://www.servicenow.com/community/app-engine-forum/best-practice-for-a-dynamic-progress-tracker-chevrons-on-a/m-p/3500891#M10154</link>
      <description>&lt;P&gt;For posterity...&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;BR /&gt;What worked reliably on classic forms was a &lt;STRONG&gt;Formatter UI Macro that renders only HTML/CSS&lt;/STRONG&gt;, with &lt;STRONG&gt;all logic done server‑side&lt;/STRONG&gt; in a Script Include. The script include evaluates record fields and returns a simple JSON model of steps and statuses, which the macro renders via &lt;CODE&gt;&amp;lt;g2:evaluate&amp;gt;&lt;/CODE&gt;. We avoided client scripts, Jelly tags, and UI Pages entirely, as they did nothing but cause problems. Treating classic formatters as &lt;STRONG&gt;server‑rendered, declarative UI only&lt;/STRONG&gt; turned out to be the stable pattern.&lt;/DIV&gt;</description>
      <pubDate>Tue, 03 Mar 2026 19:00:43 GMT</pubDate>
      <guid>https://www.servicenow.com/community/app-engine-forum/best-practice-for-a-dynamic-progress-tracker-chevrons-on-a/m-p/3500891#M10154</guid>
      <dc:creator>mandysander</dc:creator>
      <dc:date>2026-03-03T19:00:43Z</dc:date>
    </item>
  </channel>
</rss>

