How do I create two custom Save & Submit buttons that bypass the global UI Actions?

ChuanYanF
Tera Guru
Dear experts,
For my risk event form, I want to create a custom save button when clicked it will erase the assigned_to field in the risk event form, where the submit button will proceed with the risk event form submission that will prompt to the defined user in the assigned_to field. Currently, the submit button will only appear in the first submission of the form, so if we submit for the first time even though there is no assigned_to defined, when we log back in to the risk event record, the submit button is gone and it will be replaced with the update button. To make sure the submit button is always present before the assigned_to is defined, how do we make it happen? So my requirement now is to have two buttons at the first creation of the risk event record, Save and Submit buttons. I have created an onLoad script, where when user creates a new risk event form, the system will autopopulate the assigned_to field. Both of this state of the risk event will still remain as "New". So after I save and I go back to the record, the risk event form should still has the two save and submit button still and their function still the same as mentioned above until it is submitted to the defined user in the assigned_to field. Currently, the submit and update buttons are using the global one that is in the screenshots below, if I create new ui actions will it bypass the Global Ui Action or should I add in my conditions in the global ui actions script or what can I do in this case? Please advise, thank you.
ChuanYanF_0-1744181480279.png

 


 

1 ACCEPTED SOLUTION

Hi Shivalika, thanks for the reply but I managed to solve the issue using my approach as below:

So I have created two new button one is Save as Draft and one is Submit to Assigned and also a new flag field in the risk event form called u_submitted.
Save as Draft code and condition:
Condition:

current.state == 1 && !current.u_submitted

Script:

current.assigned_to = '';
current.update(); // Use update so record isn't considered "submitted"
action.setRedirectURL(current); // Stay on the same record after save

 

Submit to Assigned:
Condition:

(current.assigned_to != null || !gs.nil(current.assigned_to)) && current.state == 1 && !current.u_submitted

Script:

 
current.u_submitted = true;

if (current.isNewRecord()) {
    current.insert();
} else {
    current.update();
}

action.setRedirectURL(current);

 

And for the global Ui action I did not delete or remove but added in one condition which is to exclude the sn_risk_advanced_event table only which is this condition:

current.getTableName() != 'sn_risk_advanced_event'

View solution in original post

13 REPLIES 13

It will redirect to all the risk events opened by the user, but yes the record is saved but not assigned to anyone and that is what i wanted the result to be.

Hello @ChuanYanF 

 

Then that's what I have also done, in the referenced screenshots. You can accept my solution also , it's 100% working as seen in screenshots. I thought you didn't want to save 😊. But then it's fine. 

 

Kindly mark my answer as helpful and accept solution if it helped you in anyway. This will help me be recognized for the efforts and also move this questions from unsolved to solved bucket. 

 

Regards,

 

Shivalika 

 

My LinkedIn - https://www.linkedin.com/in/shivalika-gupta-540346194

 

My youtube - https://youtube.com/playlist?list=PLsHuNzTdkE5Cn4PyS7HdV0Vg8JsfdgQlA&si=0WynLcOwNeEISQCY

 

Dr Atul G- LNG
Tera Patron
Tera Patron

Hi @ChuanYanF 

 

As a process consultant, you might want to ask the client about the value they are looking to achieve. I understand you have a use case, but is this the only valid way to solve the issue? Creating custom UI actions and replacing them with global or out-of-the-box UI actions could lead to problems during upgrades and in the future when maintenance is required. Therefore, I wouldn't recommend creating two custom UI actions with the same name as needed. You should explore alternative solutions. Avoid increasing technical debt. You may find a solution now, but consider the long-term impact, not just the immediate fix

*************************************************************************************************************
If my response proves useful, please indicate its helpfulness by selecting " Accept as Solution" and " Helpful." This action benefits both the community and me.

Regards
Dr. Atul G. - Learn N Grow Together
ServiceNow Techno - Functional Trainer
LinkedIn: https://www.linkedin.com/in/dratulgrover
YouTube: https://www.youtube.com/@LearnNGrowTogetherwithAtulG
Topmate: https://topmate.io/atul_grover_lng [ Connect for 1-1 Session]

****************************************************************************************************************

Thks for the advise Atul, I am grateful for your words of wisdom and your experience sharing but this is what we have come to a conclusion after getting their requirements. So this is all we can do is to follow their requirements in the meantime.