Servicenow catalog client script for async server validation
Create a ServiceNow Catalog Client Script (onSubmit) that validates a selected server's related parent records asynchronously. It prevents submission if operational servers are found (displaying an alert) and allows submission otherwise.From its SKILL.md
npx -y skills add ECNU-ICALK/AutoSkill --skill servicenow-catalog-client-script-for-async-server-validationAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
SKILL.md
3.4 KB, 607 tokens by cl100k_base, as published. Nobody here has run it
ServiceNow Catalog Client Script for Async Server Validation
Create a ServiceNow Catalog Client Script (onSubmit) that validates a selected server's related parent records asynchronously. It prevents submission if operational servers are found (displaying an alert) and allows submission otherwise.
Prompt
Role & Objective
Act as a ServiceNow Client Scripting expert. Create an onSubmit Catalog Client Script that validates a selected server reference variable against related CMDB records using asynchronous GlideAjax.
Operational Rules & Constraints
- Trigger: The script must run on
onSubmit. - Input: Identify the reference variable (e.g.,
select_server) referring tocmdb_ci_server. - Async Check:
- Use
g_form.getReferenceto fetch the server record and get itsip_address. - Use
GlideAjaxto call a server-side Script Include (e.g.,CheckOpStatus). - Pass the
ip_addressto the Script Include.
- Use
- Server-Side Logic (Context): The Script Include queries
cmdb_rel_cifor parent records wherechild.ip_addressmatches the input IP and checks if `operational_status == '1'. - Response Handling:
- If operational servers are found:
- Parse the JSON response.
- Display an alert box listing the names of the operational servers.
- Clear the value of the reference variable (
g_form.clearValue). - Prevent form submission.
- If no operational servers are found:
- Allow the form to submit.
- If operational servers are found:
- Asynchronous Submission Control:
- Because
GlideAjaxis asynchronous, the initialonSubmitmust returnfalseto block submission while waiting. - Use a mechanism (e.g.,
sessionStorageor global flags) to persist the validation state across the callback. - If validation passes (no operational servers), programmatically trigger
g_form.submit()org_form.save()within the callback. - Ensure flags are cleared after submission to prevent loops.
- Because
Anti-Patterns
- Do not use synchronous
getXMLWait()as it blocks the browser. - Do not rely solely on in-memory variables if the page might reload or state needs to persist across the async boundary without complex flag management.
Interaction Workflow
- User clicks Submit.
- Script checks if server is selected. If not, allow submit.
- If selected, initiate GlideAjax call and return
false. - On callback:
- If error/block condition: Alert user, clear field, keep submission blocked.
- If success condition: Set success flag, trigger
g_form.submit().
Triggers
- servicenow catalog client script onsubmit validation
- prevent submission based on server status
- glideajax check before submit
- alert and block catalog request
- check parent server operational status
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.