<?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 UI Action already runs when loading form in Community Central forum</title>
    <link>https://www.servicenow.com/community/community-central-forum/ui-action-already-runs-when-loading-form/m-p/3327910#M3856</link>
    <description>&lt;P&gt;Dear experts,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I created a UI Action to expire a contract manually. The Form Button works fine, but the problem is that the UI Action is triggered when the form loads.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;U&gt;&lt;STRONG&gt;UI Action&lt;/STRONG&gt;&lt;/U&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Name: Expire Contract&lt;BR /&gt;Table: ast_contract&lt;BR /&gt;Action name: expire_contract&lt;BR /&gt;Show update: True&lt;BR /&gt;Client: True&lt;BR /&gt;Form button: True&lt;BR /&gt;Onclick: setContractToExpired()&lt;BR /&gt;Condition: current.state == 'overdue'&lt;BR /&gt;Script:&amp;nbsp;&lt;/P&gt;&lt;P&gt;function setContractToExpired() {&lt;BR /&gt;var comment = prompt("Please enter a comment before expiring the contract:");&lt;/P&gt;&lt;P&gt;if (comment === null || comment.trim() === "") {&lt;BR /&gt;alert("You must provide a comment.");&lt;BR /&gt;return;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;var ga = new GlideAjax('ExpireContractClientHelper');&lt;BR /&gt;ga.addParam('sysparm_name', 'expireContract');&lt;BR /&gt;ga.addParam('sysparm_sys_id', g_form.getUniqueValue());&lt;BR /&gt;ga.addParam('sysparm_comment', comment);&lt;BR /&gt;&lt;BR /&gt;ga.getXMLAnswer(function(response) {&lt;BR /&gt;if (response === 'success') {&lt;BR /&gt;alert("Contract status has been set to Expired.");&lt;BR /&gt;g_form.reload();&lt;BR /&gt;} else {&lt;BR /&gt;alert("Error: " + response);&lt;BR /&gt;}&lt;BR /&gt;});&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;setContractToExpired();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;U&gt;&lt;STRONG&gt;Script Include&lt;/STRONG&gt;&lt;/U&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Name: ExpireContractClientHelper&lt;BR /&gt;API Name: global.ExpireContractClientHelper&lt;BR /&gt;Client callable: True&lt;/P&gt;&lt;P&gt;Script:&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;var&lt;/SPAN&gt; &lt;SPAN&gt;ExpireContractClientHelper&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;Class&lt;/SPAN&gt;&lt;SPAN&gt;.create();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ExpireContractClientHelper&lt;/SPAN&gt;&lt;SPAN&gt;.prototype = &lt;/SPAN&gt;&lt;SPAN&gt;Object&lt;/SPAN&gt;&lt;SPAN&gt;.extendsObject(&lt;/SPAN&gt;&lt;SPAN&gt;AbstractAjaxProcessor&lt;/SPAN&gt;&lt;SPAN&gt;, {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; expireContract: &lt;/SPAN&gt;&lt;SPAN&gt;function&lt;/SPAN&gt;&lt;SPAN&gt;() {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;var&lt;/SPAN&gt;&lt;SPAN&gt; sysId = &lt;/SPAN&gt;&lt;SPAN&gt;this&lt;/SPAN&gt;&lt;SPAN&gt;.getParameter(&lt;/SPAN&gt;&lt;SPAN&gt;'sysparm_sys_id'&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;var&lt;/SPAN&gt;&lt;SPAN&gt; comment = &lt;/SPAN&gt;&lt;SPAN&gt;this&lt;/SPAN&gt;&lt;SPAN&gt;.getParameter(&lt;/SPAN&gt;&lt;SPAN&gt;'sysparm_comment'&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;if&lt;/SPAN&gt;&lt;SPAN&gt; (!sysId || !comment) {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;return&lt;/SPAN&gt; &lt;SPAN&gt;'Missing parameters'&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;var&lt;/SPAN&gt;&lt;SPAN&gt; contractGR = &lt;/SPAN&gt;&lt;SPAN&gt;new&lt;/SPAN&gt; &lt;SPAN&gt;GlideRecord&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;'ast_contract'&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;if&lt;/SPAN&gt;&lt;SPAN&gt; (contractGR.&lt;/SPAN&gt;&lt;SPAN&gt;get&lt;/SPAN&gt;&lt;SPAN&gt;(sysId)) {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; contractGR.setValue(&lt;/SPAN&gt;&lt;SPAN&gt;'state'&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;'expired'&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; contractGR.setValue(&lt;/SPAN&gt;&lt;SPAN&gt;'description'&lt;/SPAN&gt;&lt;SPAN&gt;, comment);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; contractGR.update();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;return&lt;/SPAN&gt; &lt;SPAN&gt;'success'&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } &lt;/SPAN&gt;&lt;SPAN&gt;else&lt;/SPAN&gt;&lt;SPAN&gt; {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;return&lt;/SPAN&gt; &lt;SPAN&gt;'Contract not found'&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;});&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm clearly doing something wrong, but I haven't got the foggiest what it is.&lt;/P&gt;&lt;P&gt;Thank you in advance for your help.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Best regards,&lt;/P&gt;&lt;P&gt;Chris.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 21 Jul 2025 06:31:49 GMT</pubDate>
    <dc:creator>Christophe</dc:creator>
    <dc:date>2025-07-21T06:31:49Z</dc:date>
    <item>
      <title>UI Action already runs when loading form</title>
      <link>https://www.servicenow.com/community/community-central-forum/ui-action-already-runs-when-loading-form/m-p/3327910#M3856</link>
      <description>&lt;P&gt;Dear experts,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I created a UI Action to expire a contract manually. The Form Button works fine, but the problem is that the UI Action is triggered when the form loads.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;U&gt;&lt;STRONG&gt;UI Action&lt;/STRONG&gt;&lt;/U&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Name: Expire Contract&lt;BR /&gt;Table: ast_contract&lt;BR /&gt;Action name: expire_contract&lt;BR /&gt;Show update: True&lt;BR /&gt;Client: True&lt;BR /&gt;Form button: True&lt;BR /&gt;Onclick: setContractToExpired()&lt;BR /&gt;Condition: current.state == 'overdue'&lt;BR /&gt;Script:&amp;nbsp;&lt;/P&gt;&lt;P&gt;function setContractToExpired() {&lt;BR /&gt;var comment = prompt("Please enter a comment before expiring the contract:");&lt;/P&gt;&lt;P&gt;if (comment === null || comment.trim() === "") {&lt;BR /&gt;alert("You must provide a comment.");&lt;BR /&gt;return;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;var ga = new GlideAjax('ExpireContractClientHelper');&lt;BR /&gt;ga.addParam('sysparm_name', 'expireContract');&lt;BR /&gt;ga.addParam('sysparm_sys_id', g_form.getUniqueValue());&lt;BR /&gt;ga.addParam('sysparm_comment', comment);&lt;BR /&gt;&lt;BR /&gt;ga.getXMLAnswer(function(response) {&lt;BR /&gt;if (response === 'success') {&lt;BR /&gt;alert("Contract status has been set to Expired.");&lt;BR /&gt;g_form.reload();&lt;BR /&gt;} else {&lt;BR /&gt;alert("Error: " + response);&lt;BR /&gt;}&lt;BR /&gt;});&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;setContractToExpired();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;U&gt;&lt;STRONG&gt;Script Include&lt;/STRONG&gt;&lt;/U&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Name: ExpireContractClientHelper&lt;BR /&gt;API Name: global.ExpireContractClientHelper&lt;BR /&gt;Client callable: True&lt;/P&gt;&lt;P&gt;Script:&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;var&lt;/SPAN&gt; &lt;SPAN&gt;ExpireContractClientHelper&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;Class&lt;/SPAN&gt;&lt;SPAN&gt;.create();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ExpireContractClientHelper&lt;/SPAN&gt;&lt;SPAN&gt;.prototype = &lt;/SPAN&gt;&lt;SPAN&gt;Object&lt;/SPAN&gt;&lt;SPAN&gt;.extendsObject(&lt;/SPAN&gt;&lt;SPAN&gt;AbstractAjaxProcessor&lt;/SPAN&gt;&lt;SPAN&gt;, {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; expireContract: &lt;/SPAN&gt;&lt;SPAN&gt;function&lt;/SPAN&gt;&lt;SPAN&gt;() {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;var&lt;/SPAN&gt;&lt;SPAN&gt; sysId = &lt;/SPAN&gt;&lt;SPAN&gt;this&lt;/SPAN&gt;&lt;SPAN&gt;.getParameter(&lt;/SPAN&gt;&lt;SPAN&gt;'sysparm_sys_id'&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;var&lt;/SPAN&gt;&lt;SPAN&gt; comment = &lt;/SPAN&gt;&lt;SPAN&gt;this&lt;/SPAN&gt;&lt;SPAN&gt;.getParameter(&lt;/SPAN&gt;&lt;SPAN&gt;'sysparm_comment'&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;if&lt;/SPAN&gt;&lt;SPAN&gt; (!sysId || !comment) {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;return&lt;/SPAN&gt; &lt;SPAN&gt;'Missing parameters'&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;var&lt;/SPAN&gt;&lt;SPAN&gt; contractGR = &lt;/SPAN&gt;&lt;SPAN&gt;new&lt;/SPAN&gt; &lt;SPAN&gt;GlideRecord&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;'ast_contract'&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;if&lt;/SPAN&gt;&lt;SPAN&gt; (contractGR.&lt;/SPAN&gt;&lt;SPAN&gt;get&lt;/SPAN&gt;&lt;SPAN&gt;(sysId)) {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; contractGR.setValue(&lt;/SPAN&gt;&lt;SPAN&gt;'state'&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;'expired'&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; contractGR.setValue(&lt;/SPAN&gt;&lt;SPAN&gt;'description'&lt;/SPAN&gt;&lt;SPAN&gt;, comment);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; contractGR.update();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;return&lt;/SPAN&gt; &lt;SPAN&gt;'success'&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } &lt;/SPAN&gt;&lt;SPAN&gt;else&lt;/SPAN&gt;&lt;SPAN&gt; {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;return&lt;/SPAN&gt; &lt;SPAN&gt;'Contract not found'&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;});&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm clearly doing something wrong, but I haven't got the foggiest what it is.&lt;/P&gt;&lt;P&gt;Thank you in advance for your help.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Best regards,&lt;/P&gt;&lt;P&gt;Chris.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 21 Jul 2025 06:31:49 GMT</pubDate>
      <guid>https://www.servicenow.com/community/community-central-forum/ui-action-already-runs-when-loading-form/m-p/3327910#M3856</guid>
      <dc:creator>Christophe</dc:creator>
      <dc:date>2025-07-21T06:31:49Z</dc:date>
    </item>
    <item>
      <title>Re: UI Action already runs when loading form</title>
      <link>https://www.servicenow.com/community/community-central-forum/ui-action-already-runs-when-loading-form/m-p/3327923#M3857</link>
      <description>&lt;P&gt;Remove the last&amp;nbsp;setContractToExpired() function from your script&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;U&gt;&lt;STRONG&gt;UI Action&lt;/STRONG&gt;&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Name: Expire Contract&lt;BR /&gt;Table: ast_contract&lt;BR /&gt;Action name: expire_contract&lt;BR /&gt;Show update: True&lt;BR /&gt;Client: True&lt;BR /&gt;Form button: True&lt;BR /&gt;Onclick: setContractToExpired()&lt;BR /&gt;Condition: current.state == 'overdue'&lt;BR /&gt;Script:&amp;nbsp;&lt;/P&gt;
&lt;P&gt;function setContractToExpired() {&lt;BR /&gt;var comment = prompt("Please enter a comment before expiring the contract:");&lt;/P&gt;
&lt;P&gt;if (comment === null || comment.trim() === "") {&lt;BR /&gt;alert("You must provide a comment.");&lt;BR /&gt;return;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;var ga = new GlideAjax('ExpireContractClientHelper');&lt;BR /&gt;ga.addParam('sysparm_name', 'expireContract');&lt;BR /&gt;ga.addParam('sysparm_sys_id', g_form.getUniqueValue());&lt;BR /&gt;ga.addParam('sysparm_comment', comment);&lt;BR /&gt;&lt;BR /&gt;ga.getXMLAnswer(function(response) {&lt;BR /&gt;if (response === 'success') {&lt;BR /&gt;alert("Contract status has been set to Expired.");&lt;BR /&gt;g_form.reload();&lt;BR /&gt;} else {&lt;BR /&gt;alert("Error: " + response);&lt;BR /&gt;}&lt;BR /&gt;});&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;&lt;STRIKE&gt;&lt;STRONG&gt;setContractToExpired();&lt;/STRONG&gt;&lt;/STRIKE&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 21 Jul 2025 06:35:41 GMT</pubDate>
      <guid>https://www.servicenow.com/community/community-central-forum/ui-action-already-runs-when-loading-form/m-p/3327923#M3857</guid>
      <dc:creator>Pranesh072</dc:creator>
      <dc:date>2025-07-21T06:35:41Z</dc:date>
    </item>
    <item>
      <title>Re: UI Action already runs when loading form</title>
      <link>https://www.servicenow.com/community/community-central-forum/ui-action-already-runs-when-loading-form/m-p/3327959#M3858</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://www.servicenow.com/community/user/viewprofilepage/user-id/5567"&gt;@Christophe&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;&lt;P&gt;replace UI Action script&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;function setContractToExpired() {
var comment = prompt("Please enter a comment before expiring the contract:");

if (comment === null || comment.trim() === "") {
alert("You must provide a comment.");
return;
}

var ga = new GlideAjax('ExpireContractClientHelper');
ga.addParam('sysparm_name', 'expireContract');
ga.addParam('sysparm_sys_id', g_form.getUniqueValue());
ga.addParam('sysparm_comment', comment);

ga.getXMLAnswer(function(response) {
if (response === 'success') {
alert("Contract status has been set to Expired.");
g_form.reload();
} else {
alert("Error: " + response);
}
});
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;just removed last line which is calling the function&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;the button click calls the script there is no need to explicitly call it again&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;Please mark my answer as&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;FONT color="#008000"&gt;helpful/correct&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;if it resolves your query.&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;I&gt;Regards,&lt;BR /&gt;Chaitanya&lt;/I&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 21 Jul 2025 06:43:00 GMT</pubDate>
      <guid>https://www.servicenow.com/community/community-central-forum/ui-action-already-runs-when-loading-form/m-p/3327959#M3858</guid>
      <dc:creator>Chaitanya ILCR</dc:creator>
      <dc:date>2025-07-21T06:43:00Z</dc:date>
    </item>
    <item>
      <title>Re: UI Action already runs when loading form</title>
      <link>https://www.servicenow.com/community/community-central-forum/ui-action-already-runs-when-loading-form/m-p/3327994#M3859</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://www.servicenow.com/community/user/viewprofilepage/user-id/5567"&gt;@Christophe&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;&lt;P&gt;you did everything right . just you did one mistake.&lt;/P&gt;&lt;P&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;Just remove this line from the bottom of your UI Action script:&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;setContractToExpired();&lt;/LI-CODE&gt;&lt;P&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;Your updated UI Action script should be:&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;function setContractToExpired() {
    var comment = prompt("Please enter a comment before expiring the contract:");

    if (comment === null || comment.trim() === "") {
        alert("You must provide a comment.");
        return;
    }

    var ga = new GlideAjax('ExpireContractClientHelper');
    ga.addParam('sysparm_name', 'expireContract');
    ga.addParam('sysparm_sys_id', g_form.getUniqueValue());
    ga.addParam('sysparm_comment', comment);

    ga.getXMLAnswer(function(response) {
        if (response === 'success') {
            alert("Contract status has been set to Expired.");
            g_form.reload();
        } else {
            alert("Error: " + response);
        }
    });
}&lt;/LI-CODE&gt;&lt;P&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;And leave the OnClick field as&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;setContractToExpired()&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000000"&gt;&lt;STRONG&gt;PFA screenshots&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="tejas1111_0-1753080738468.png" style="width: 400px;"&gt;&lt;img src="https://www.servicenow.com/community/image/serverpage/image-id/457261iE1A833FE40957CD2/image-size/medium/is-moderation-mode/true?v=v2&amp;amp;px=400" role="button" title="tejas1111_0-1753080738468.png" alt="tejas1111_0-1753080738468.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 21 Jul 2025 06:53:35 GMT</pubDate>
      <guid>https://www.servicenow.com/community/community-central-forum/ui-action-already-runs-when-loading-form/m-p/3327994#M3859</guid>
      <dc:creator>Tejas Adhalrao</dc:creator>
      <dc:date>2025-07-21T06:53:35Z</dc:date>
    </item>
    <item>
      <title>Re: UI Action already runs when loading form</title>
      <link>https://www.servicenow.com/community/community-central-forum/ui-action-already-runs-when-loading-form/m-p/3328010#M3860</link>
      <description>&lt;P&gt;That makes sense. Thank you very much for your help.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 21 Jul 2025 06:59:46 GMT</pubDate>
      <guid>https://www.servicenow.com/community/community-central-forum/ui-action-already-runs-when-loading-form/m-p/3328010#M3860</guid>
      <dc:creator>Christophe</dc:creator>
      <dc:date>2025-07-21T06:59:46Z</dc:date>
    </item>
    <item>
      <title>Re: UI Action already runs when loading form</title>
      <link>https://www.servicenow.com/community/community-central-forum/ui-action-already-runs-when-loading-form/m-p/3330149#M3879</link>
      <description>&lt;P&gt;&lt;a href="https://www.servicenow.com/community/user/viewprofilepage/user-id/24805"&gt;@Chaitanya ILCR&lt;/a&gt;&amp;nbsp;Can I please ask you an additional question? I now put the comment in a field that already contains text, meaning that this text is being replaced. Is there a way to just add the comment to the existing text instead of replacing it? Thank you in advance for your help.&lt;/P&gt;</description>
      <pubDate>Tue, 22 Jul 2025 07:16:37 GMT</pubDate>
      <guid>https://www.servicenow.com/community/community-central-forum/ui-action-already-runs-when-loading-form/m-p/3330149#M3879</guid>
      <dc:creator>Christophe</dc:creator>
      <dc:date>2025-07-22T07:16:37Z</dc:date>
    </item>
    <item>
      <title>Re: UI Action already runs when loading form</title>
      <link>https://www.servicenow.com/community/community-central-forum/ui-action-already-runs-when-loading-form/m-p/3330435#M3881</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://www.servicenow.com/community/user/viewprofilepage/user-id/5567"&gt;@Christophe&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;you want to append the prompted value to the description ?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;you can update the script include as this&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;var ExpireContractClientHelper = Class.create();
ExpireContractClientHelper.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    expireContract: function() {
        var sysId = this.getParameter('sysparm_sys_id');
        var comment = this.getParameter('sysparm_comment');

        if (!sysId || !comment) {
            return 'Missing parameters';
        }

        var contractGR = new GlideRecord('ast_contract');
        if (contractGR.get(sysId)) {
            contractGR.setValue('state', 'expired');
            contractGR.setValue('description', contractGR.getValue('description') + ' ' + comment);
            contractGR.update();
            return 'success';
        } else {
            return 'Contract not found';
        }
    }
});&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;if my understanding is wrong please share more details with some screenshots&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;Please mark my answer as&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;FONT color="#008000"&gt;helpful/correct&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;if it resolves your query.&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;I&gt;Regards,&lt;BR /&gt;Chaitanya&lt;/I&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 22 Jul 2025 10:40:13 GMT</pubDate>
      <guid>https://www.servicenow.com/community/community-central-forum/ui-action-already-runs-when-loading-form/m-p/3330435#M3881</guid>
      <dc:creator>Chaitanya ILCR</dc:creator>
      <dc:date>2025-07-22T10:40:13Z</dc:date>
    </item>
  </channel>
</rss>

