Navigation action cancellation

  • Release version: Yokohama
  • Updated January 30, 2025
  • 2 minutes to read
  • Summarize
    Summarized using AI
    This content was generated using new OpenAI-powered functionality. Results are provided on an as is basis and are not guaranteed to be accurate or complete.

    Summary of Navigation action cancellation

    The Request Manager in ServiceNow enables users to cancel navigation actions initiated from the application navigator by selecting another link before the current transaction completes. This functionality is particularly useful for canceling slow-loading transactions, improving user experience by preventing unnecessary waiting.

    Show full answer Show less

    Cancellation depends on system properties and transaction settings, ensuring that only eligible transactions can be canceled.

    Key Features

    • Cancelable Transactions: Both the ongoing and new transaction must be marked as cancelable (sysparmcancelable=true), or the original transaction must be on the always cancelable list with the new one cancelable.
    • Always Cancelable Allow List: Administrators can specify modules (usually read-only like dashboards, reports, knowledge articles) in the glide.requestmanager.alwayscancel system property to always allow cancellation.
    • Reference Field Query Cancellation: Auto-completer queries in reference fields can be canceled when the user refines their input, controlled by glide.requestmanager.cancelreferencecompleter.
    • System Properties:
      • glide.requestmanager.cancelothertransaction: Enables or disables automatic cancellation of navigation actions (default: true).
      • glide.requestmanager.alwayscancel: Lists URIs that are always cancelable (default includes home, sysreporttemplate).
      • glide.requestmanager.cancelreferencecompleter: Controls cancellation of partial reference queries (default: true).

    Use Cases

    • User navigates from one module (e.g., homepage) to another (e.g., incident list) while the first is still loading; cancellation is controlled by glide.requestmanager.cancelothertransaction.
    • User switches from a read-only module (e.g., report) to another module before loading completes; controlled by both glide.requestmanager.cancelothertransaction and glide.requestmanager.alwayscancel.
    • User refines an auto-completer query in a reference field (e.g., from "PRB" to "PRB000"); cancellation is managed by glide.requestmanager.cancelothertransaction and glide.requestmanager.cancelreferencecompleter.

    Administration and Configuration

    • Administrators can add UI pages or links to the always cancel list to extend cancellation capabilities to custom or additional modules.
    • Cancellation of module transactions can be explicitly prevented by modifying the module definition, providing control over user navigation behavior.

    The Request Manager allows users to cancel any navigation action they select from the application navigator by clicking another application navigator link. System properties work with settings for the table to allow navigation action cancellation.

    This allows users to cancel slow loading transactions without having to wait for the previous transaction to complete.

    One of the following conditions must be true for the Request Manager to cancel a transaction.
    • Both the original transaction and new transaction are cancelable (both transactions have the setting sysparm_cancelable=true).
    • The original transaction is a member of the always cancelable allow list (the module is listed in the glide.request_manager.always_cancel system property) and the new transaction is cancelable (has the setting sysparm_cancelable=true).
    • Both the original and new transaction produce an auto-completer query in a reference field.

    Cancellation workflow

    The Request Manager uses the following workflow to determine whether to cancel a transaction.
    Figure 1. Cancel navigation actions
    Table 1. Navigation cancellation system properties
    Property Description
    glide.request_manager.cancel_other_transaction Enables or disables automatic cancellation behaviors. When true, users can cancel one navigation action with another navigation action.

    Type: true | false

    Default value: true

    Location: sys_properties table

    glide.request_manager.always_cancel A comma-separated list of URIs that users can always cancel by clicking another navigation action. Typically items on this list are modules that provide read-only data such as dashboards, reports, or knowledge articles.

    Type: string

    Default value: home,sys_report_template

    Location: sys_properties table

    glide.request_manager.cancel_reference_completer Cancels a user query in a reference field when the user enters more information. For example, if the user starts an AJAX search in the Problem number field by entering PRB and then enters PRB000, the second query cancels the first query.

    Type: true | false

    Default value: true

    Location: sys_properties table

    Use cases

    There are three use cases where administrators can control user cancellation actions.

    1. A user clicks a module, such as the homepage (home.do), and while waiting for the module to load decides to navigate to another module, such as the list of open incidents (incident_list.do). The system property glide.request_manager.cancel_other_transaction controls this use case.
    2. A user clicks a module that displays read-only data, such as a report (sys_report_template.do?sysparm=sysid), and while waiting for the module to load decides to navigate to another module, such as the list of open incidents (incident_list.do). The system properties glide.request_manager.cancel_other_transaction and glide.request_manager.always_cancel control this use case.
    3. A user starts typing a query in a reference field, such as entering PRB in the related Problem field and while waiting for the auto-completer to display results, decides to enter more information, such as PRB000. The system properties glide.request_manager.cancel_other_transaction and glide.request_manager.cancel_reference_completer control this use case.