Supported client script types and APIs
Summarize
Summary of Supported client script types and APIs
In ServiceNow's Service Portal, not all client scripts and APIs are supported due to differences in the platform environment compared to the standard desktop UI. Client scripts must be configured with the appropriate UI Type to function correctly, and only client-side APIs compatible with mobile environments should be used.
Show less
Supported Client Script Types in Service Portal
- Catalog Client Scripts: Must have the UI Type set to All or Mobile / Service Portal. Scripts marked as Desktop are unsupported due to reliance on legacy APIs.
- Validation Scripts: Also require UI Type as All or Mobile / Service Portal. These scripts validate user input in specific fields. Upgraded instances need manual activation of the Mobile and Service Portal validation script versions.
- UI Scripts: Must have UI Type set to All or Mobile / Service Portal. To call a UI script from a Validation script, use the
guiscriptsglobal object with the script’s Global field set to false. - UI Actions: Server-side UI Actions are supported; however,
setRedirectURL()calls are ignored since Service Portal manages redirection differently. Client-side UI Actions are not supported in the form widget. - UI Policies: Supported when declarative (condition builder) only. Avoid scripting in UI Policies unless necessary.
- UI Macros and Formatters: Not supported because they use Jelly, which is incompatible with Service Portal.
Supported Client-Side APIs
These APIs are available for use in onLoad, onChange, and onSubmit client scripts within Service Portal:
- gform API: Provides methods to manipulate form fields, messages, options, visibility, and form submission. Note that
variables.varnamenotation and usinggformas a global object in widget client controllers or UI scripts are unsupported. - glist API: Supports list operations such as getting field values, adding/removing items, resetting, and setting queries.
- gservicecatalog API: Contains methods like
isOrderGuide()to identify order guides. - GlideAjax API: Used for asynchronous server calls. Synchronous methods like
getXMLWait()do not work in Service Portal; asynchronous methods with callbacks are required. GlideAjax is not usable in widget client controllers. - GlideRecord API: Enables querying, inserting, and manipulating records asynchronously using callbacks.
- i18NV3 API: Supports asynchronous retrieval of localized messages.
Practical Implications for ServiceNow Customers
When developing or migrating scripts to Service Portal, ensure:
- Client scripts are marked with UI Type All or Mobile / Service Portal to avoid incompatibility with legacy APIs.
- Only supported client-side APIs are used, favoring asynchronous calls due to platform constraints.
- Declarative UI Policies are preferred over scripted ones for maintainability and compatibility.
- UI Macros and formatters are avoided as they are not supported in Service Portal.
- Validation scripts specific to Service Portal are activated after upgrades to maintain input validation.
Following these guidelines ensures client scripts function correctly, deliver a consistent user experience, and leverage the capabilities of the Service Portal environment effectively.
Some client scripts are not supported in Service Portal. Others must have a UI type set to All or Mobile / Service Portal. If using a client script in the Service Portal, only client-side APIs supported in a mobile environment can be used.
Client script support in Service Portal
| Client script | Description |
|---|---|
| Catalog client scripts | Service Portal requires that the UI Type field be set to All or Mobile / Service Portal. Client Scripts marked as Desktop rely on legacy APIs that are not supported in Service Portal. Before flagging a script as Mobile / Service Portal or All, make sure you are only using supported client-side APIs. |
| Validation scripts | Service Portal requires that the UI Type field be set to All or Mobile / Service Portal. Client Scripts marked as Desktop rely on legacy APIs that are not supported in Service Portal. Before flagging a script as Mobile / Service Portal or All, make sure you are only using supported client-side APIs. Validate user input in a specific field type using a validation script. In new instances, Service Portal includes XML, Script, Script (Plain), Email, and Version validation scripts by default. If upgrading from a previous release, the Mobile and Service Portal version is not active by default. You must activate the Mobile and Service Portal version of the validation script to validate user input in the Service Portal. See Activate Service Portal validation scripts. Note: To call a UI script within a Validation script, use the g_ui_scripts
global object. For more information, see GlideUIScripts.
Verify that the UI script has the Global field set to
false and UI Type set to Mobile / Service Portal or All. |
| UI scripts | Service Portal requires that the UI Type field be set to All or Mobile / Service Portal. Client Scripts marked as Desktop rely on legacy APIs that are not supported in Service Portal. Before flagging a script as Mobile / Service Portal or All, make sure you are only using supported client-side APIs. |
| UI Actions | All server-side UI actions are supported in Service Portal, although setRedirectURL() operations are ignored because Service Portal forms handle redirection in a different way than the platform. The form widget ignores any UI Actions marked as Client. |
| UI Policies | Supported, although you should use only declarative UI Policies. Avoid scripting unless the outcome cannot be achieved through the condition builder. |
| UI Macros | Not supported as UI macros use Jelly. |
| Formatters | Not supported as formatters use Jelly. |
Supported client-side APIs
Supported client scripting APIs for use in onLoad, onChange, and onSubmit client scripts.
For detailed class and method information, see the .
| Class | Available methods |
|---|---|
| g_form |
Note: Using the variables.var_name notation with the g_form API
is not supported in Service Portal. g_form as a
global object cannot be used in a widget client controller or in a UI script. |
| g_list |
|
| g_service_catalog | isOrderGuide() |
| GlideAjax |
Note:
|
| GlideRecord |
|
| i18NV3 | getMessage(String messageKey, Function callback) |