Servicenow catalog client script for async server validation
AutoSkill: Experience-Driven Lifelong Learning via Skill Self-Evolution
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.
What its author says it does
Copied from the file, not written here
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.
SKILL.md
3.4 KB, 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