Open state management

  • Release version: Australia
  • Updated March 12, 2026
  • 5 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 Open State Management

    Open state management is a programmatic framework within the Configuration State Model API designed for the legacy product configurator in Sales Customer Relationship Management. It enables developers to control the visibility, editability, and other states of product configuration nodes dynamically based on user actions or predefined rules. This capability enhances the configurator’s flexibility by tailoring product options to specific customer requirements or restrictions.

    Show full answer Show less

    The framework also supports contextual informational messages that help users understand state changes in the product configurator interface. Note that access to these features depends on your ServiceNow entitlements.

    Use Cases

    • Hiding options: For example, hiding product attributes that are restricted by regional regulations.
    • Setting default selections: Automatically displaying specific upgrade plans for eligible customers.
    • Conditional option availability: Showing product options based on other selected attributes, such as limiting laptop sizes when touchscreen is required.
    • Quantity management: Allowing agents to set product quantities within defined minimum and maximum limits.
    • Characteristic selection constraints: Enforcing mandatory characteristic values based on product selections, such as connectivity speed for certain internet plans.

    Node States in the Configurator

    The product configurator UI presents nodes representing product groups, child products, and characteristics, each of which can have these states:

    • Visible: Controls if a node is shown or hidden.
    • Editable: Determines if a node is selectable or read-only.
    • Quantity: Manages visibility and editability of quantity fields, enforcing rules and displaying related messages.
    • Checked: Indicates whether a configuration option is selected or not.
    • Value: Controls the visibility and editability of characteristic values, with validation and messaging support.

    Agents can also provide messages at the node level to justify state changes.

    Events for State Management

    State changes are managed via two main events:

    • On Load: Initializes node states to visible and editable when the configurator loads.
    • On Change: Triggers when a node’s value changes, allowing dynamic updates except for quantity changes.

    States can be programmatically controlled during load, selection changes, or before synchronizing the configuration instance.

    Helper API Methods

    The framework provides helper methods to simplify managing node states without extensive JSON scripting:

    • Getters: Retrieve all nodes and their states, or get details for specific nodes using methods like getAllNodes(), getNode(nodePath), and getNodeDetails(nodePath).
    • Setters: Modify node states such as visibility (setVisible), editability (setEditable), quantity (setQuantity), selection (setChecked), and characteristic values (setValue). These allow adding contextual messages alongside state changes.
    • Context Variable Methods: Access header and line context variables within the configurator UI to inform logic decisions.

    Practical Benefits for ServiceNow Customers

    Using open state management enables you to tailor product configuration options dynamically, ensuring compliance with business rules and customer-specific requirements. It improves the configurator’s usability and accuracy by controlling what options are visible or editable in real time and providing helpful messages to guide agents or end users. The API’s helper methods reduce development complexity and increase maintainability.

    The open state model is a programmatic framework in the Configuration State Model API, which lets you program variations in product options that appear in the legacy product configurator in Sales Customer Relationship Management. The API framework provides certain states and helper API methods for controlling how nodes in the legacy product configurator user interface are displayed.

    As developers, you can use extension points for open state management to set the view-only or editable states on any configurator node, based on events that occur at loading or when product selections change. You can also optionally script information messages along with changing the state of the node. These messages display contextually in the product configurator user interface. Various helper API methods are available for reading and setting states on any node, eliminating the need for extensive JSON scripting.
    Note:
    Check your entitlements to determine if you have access to these features.

    Use cases for configuration state management

    The following table shows different ways that you can control the product options displayed in the legacy product configurator.
    Table 1. Configuration state model use case examples
    Product configurator use case Example
    Hide certain options for a customer A product attribute selection isn’t displayed for customers in California due to state safety regulations​.
    Set certain default options for a customer For upgrades, only the Ultimate plan is displayed for existing customers who have a premium plan.
    Allow only certain options to be selected based on other attribute options For certain products such as laptops, display all sizes 13", 15", and 17", but display only 15" and 17" laptops if only the touchscreen feature is required.
    Allow quantity to be set for products Some products might have different default quantity values. Allow agents to configure the quantity as long as the value is within the bounds of a minimum quantity and maximum quantity allowed for that product.
    Allow only certain characteristic selections to be made Certain product selections require a particular characteristic value to be chosen. For example, upon selection of the Ultimate Internet Plan, the connectivity speed that can be chosen is 5G.

    You can manage the display of options in the legacy product configurator by using the Configuration State Model API Framework.

    Node states

    Nodes in the legacy product configurator display product relationship groups, child products, and characteristic options. Nodes can have the following states:
    Visible - Yes (make node visible) or No (make node invisible)
    Configurations that are visible or not visible to the agent in the legacy product configurator. Options might not be visible if they're incompatible with other selections made by the agent. For example, for a particular car wheel size, incompatible tire options are not visible.
    Editable - Yes (show node and make it selectable) or No (show node but make it unselectable)
    Configurations that are editable or not editable by the agent in the legacy product configurator. Agents can personalize certain aspects of the product while maintaining constraints that are necessary for the product. For example, for a specific car model, only compatible exterior colors are editable.
    Quantity - Visible (Yes/No), Editable (Yes/No)
    Configurations that set quantity on a product, enforce rules related to quantity, and show informational and error messages related to quantity at the appropriate node.
    Checked - Yes (show node selections) or No (make node selections invisible)
    Configurations that show the configuration options for selection based on the context.
    Value - Visible (Yes/No), Editable (Yes/No)
    Configurations that set a value for a characteristic, enforce rules related to the characteristic, and show informational or error messages related at the appropriate node.
    Note:
    Agents can choose to set messages at a node level to provide justification for a state change.

    Events

    Manage node states using the Configuration State Model API Framework. Activate these states by using the following two events in the Events Framework of the Configuration State Model:
    • On Load - The state (visibility, editability) of each node is initially set to Yes (true). The open state is invoked on loading.
    • On Change - This function is called whenever there’s a change in a node's value in the legacy product configurator user interface. However, this state isn’t invoked when quantity changes occur in the legacy product configurator. These states can be set programmatically in one of the following ways: on-load, during selections, or just before the instance is synchronized back to the transaction

    Helper API methods

    You can use the following helper API methods to read and set states on any node.
    Apply states
    Set the visible and editable states for product relationship groups, product characteristics, and product characteristic options using Getter and Setter methods to read and change the state of the configuration model.
    Getter methods
    Obtain node paths along with the states on any configuration node:
    • getAllNodes(): Returns JSON with node path (reference to code) and its respective relative path with all the states.
    • getNode(nodePath): Returns javascript object of the node for the specified node path if it exists.
    • getNodeDetails(nodePath: Return all the states for the specified node path if it exists.
    Setter methods
    • Set the visible and editable states for product relationship groups, product characteristics, and product characteristic options.
      • setVisible: True/False at all levels
      • setVisible(True/False)
      • setEditable: True/False at all levels
      • setEditable(True)
      • Implementation example:
        var newHandler = configInstance.getNode(nodePath);
        newHandler.setVisible(true, “This is a sample message for setVisible”);
        newHandler.setEditable(false, “This is a sample message for setEditable”);
    • Set the quantity for offers and specifications. The nodePath determines the product, and the value is the quantity to be set.
      • setQuantity(value);
      • Implementation example:
        var newHandler = configInstance.getNode(nodePath);
        newHandler.setQuantity(value, “This is a sample message for setQuantity”);
    • Set the configuration options to see what is being selected.
      • setChecked (value); True/False
      • Implementation example:
        var nodePath = “QUADPLAYHO1/OPTIONALPRODUCTS/CONNECTEDC2/CONNECTEDC1/VIN”
        var newHandler = configInstance.getNode(nodePath);
        var newHandler.setChecked(true, “This is a sample message for setChecked”)
        
    • Set the value for a characteristic node where the input type is a single line of text.
      • setValue( value);
      • Implementation example:
        var nodePath =
        “QUADPLAYHO1/OPTIONALPRODUCTS/CONNECTEDC2/CONNECTEDC1/VIN”
        var newHandler = configInstance.getNode(nodePath);
        newHandler.setValue(“9TKN332”, “This is a sample message for
        setValue”);
    Getter context variable methods
    Retrieve context variables inside the legacy product configurator user interface.
    • getHeaderContextVariables(): Returns a list of all the header context variables.
    • getHeaderContextVariableValue(contextVariable): Returns a value and the display value of a specific context variable in the header.
    • getLineContextVariables(): Returns a list of all the line context variables.
    • getLineContextVariableValue(nodePath, contextVariable): Returns the value of a specific context variable in the line.