UI Builder Tips #1: The Tables Behind UI Builder
Table of contents
- UI Builder Tips Series
- Exploring the Tables Behind UI Builder
- UX Component Definition (sys_ux_lib_component)
- UX Application (sys_ux_page_registry)
- UX App Configuration (sys_ux_app_config)
- UX App Route (sys_ux_app_route)
- UX Screen Collection (sys_ux_screen_type)
- UX Screen (sys_ux_screen)
- UX Macroponent Definition (sys_ux_macroponent)
- UX Page Properties (sys_ux_page_property)
- UX Event (sys_ux_event)
- UX Add-on Event Mapping (sys_ux_addon_event_mapping)
- UX Client Script (sys_ux_client_script)
- Client Script Includes (sys_ux_client_script_include)
- Data Brokers (sys_ux_data_broker)
- Other Tables
UI Builder Tips Series
Welcome to the UI Builder Tips series! I'll use this series to document what I've learned while working with ServiceNow's UI Builder. Since this is a learning process, these blog posts should be seen as a set of notes.
The content of these posts will likely change often to include new information as I continue to learn. Feel free to leave feedback or corrections in the comments, and I'll update the posts as needed. Let's learn together!
Exploring the Tables Behind UI Builder
ServiceNow's UI Builder is a powerful tool that lets users create customized workspace pages and experiences using a simple, low-code, drag-and-drop interface. This interface hides the complexity of modern web development but still offers a lot of control and customization.
Most of the time, you can use UI Builder without worrying about the tables working behind the scenes. However, there may be times when you need to dive into the backend to fix something. If you find yourself in such a situation, you might notice there's not much documentation to help you. Here is a list of the tables I have encountered, each with a short description of what the table does and a screenshot of the backend form.
UX Component Definition (sys_ux_lib_component)
This table contains definitions for all components that are available to be added to a UI Builder page, including custom components. It is referenced in a lot of other UX tables hence the many related lists.
UX Application (sys_ux_page_registry)
Each one of the records in this table represent a different experience/workspace in UI Builder.
UX App Configuration (sys_ux_app_config)
This table holds configurations for different workspaces/experiences. This record is used to:
Specify a landing path for the workspace
gather all of the routes inside of the workspace
gather all of the screens in the workspace
UX App Route (sys_ux_app_route)
This record shows a route within a given workspace. It holds important information like the fields (required params) and the optional params that are available for the route.
UX Screen Collection (sys_ux_screen_type)
A screen collection record corresponds to a group of page variants in UI Builder. When you see multiple variants under the same parent, the screen collection record is that parent. It also ties a route to the list of variants.
UX Screen (sys_ux_screen)
UX Screens are the same thing as variants. A variant record ties together:
The screen collection (which has the route)
Conditions for when to display this variant
The actual macroponent definition of the variant's contents
And some other things
UX Macroponent Definition (sys_ux_macroponent)
The macroponent definition is probably the most important record in all of UI Builder. When you are editing a page in UI Builder, you are editing the macroponent record. Its a higher-order component (macroponent) that arranges a bunch of lower-order components (microponents). The macroponent record defines:
The layout of your page
The composition of your page
The data your page pulls in
Any custom events that your page handles internally
The properties (aka URL params, both required and optional) that your page accepts
The initial client state of your page
And many other things
Many of the fields on the macroponent record contain JSON so be very careful when editing their contents.
If you are having problems with a page and you need to start investigating on the backend, always start here.
UX Page Properties (sys_ux_page_property)
UX Page Properties are like System Properties for individual workspaces/experiences in UI Builder. Here are some common ones that you will see on most experiences:
chrome_main
chrome_header
chrome_footer
chrome_toolbar
chrome_tab
You can also add custom UX Page Properties to hold values for your workspace.
UX Event (sys_ux_event)
Any kind of event that you see in UI Builder lives in this table. When you want to fire off and handle a custom event, the first step is to create a record in this table.
UX Add-on Event Mapping (sys_ux_addon_event_mapping)
This table allows you to tie an event firing to a declarative action on a given macroponent.
UX Client Script (sys_ux_client_script)
UX Client Scripts are scripts that are reusable on a given page. When you add a new client script at the bottom left corner of UI Builder it creates one of these records. These scripts can reference client script includes when a client script include is added as a dependency.
The UX Client Scripts table also contains the scripts that are created when you data bind a script to a specific field on a UI Builder field.
Client Script Includes (sys_ux_client_script_include)
Client Script Includes can be referenced in Client Scripts in UI Builder. This should feel familiar to those who use Script Includes on the backend. These scripts can be reused across multiple pages.
Data Brokers (sys_ux_data_broker)
The Data Broker table is the parent table to all data brokers. Here are it's children:
Label | Name |
Composite Data Broker | sys_ux_data_broker_composite |
GraphQL Data Broker | sys_ux_data_broker_graphql |
Proxied Data Broker | sys_ux_data_broker_proxy |
REST Data Broker | sys_ux_data_broker_rest |
External REST Data Broker | sys_ux_data_broker_rest_external |
Data Broker Scriptlet | sys_ux_data_broker_scriptlet |
Simple Data Broker | sys_ux_data_broker_simple |
Data Broker Server Script | sys_ux_data_broker_transform |
When creating a custom data broker, you will choose from one of these types. Each type has unique configuration options and forms, but the main idea is the same: get data into UI Builder.
Other Tables
If the table you are looking for is not listed above, please post a comment on this blog post and check back later as this list will be continually updated. There are 117 tables related to UI Builder (as of Washington DC) so creating a comprehensive list will take a while. I will keep updating this list as I learn more about each table.
A Complete List of UI Builder Tables
Label | Name |
UX Actions Configuration | sys_ux_action_config |
UX Add-on Event Mapping β | sys_ux_addon_event_mapping |
UX Parent Application β | sys_ux_app |
Audience | sys_ux_applicability |
Layout Applicability | sys_ux_applicability_m2m_layout |
List Applicability | sys_ux_applicability_m2m_list |
Screen Applicability | sys_ux_applicability_m2m_screen |
UX App Configuration β | sys_ux_app_config |
UX App Property | sys_ux_app_property |
UX App Route β | sys_ux_app_route |
UX Asset Cache Buster | sys_ux_asset_cache_buster |
UX Auto Reflow Engine | sys_ux_auto_reflow_engine |
UX Auto Reflow Rule | sys_ux_auto_reflow_rule |
Banner Announcement | sys_ux_banner_announcement |
Banner Announcement Config | sys_ux_banner_announcement_config |
UX Children Definition | sys_ux_children |
UX Children Layout | sys_ux_children_layout |
Children Slot | sys_ux_children_slot |
UX Client Script β | sys_ux_client_script |
UX Client Script Include β | sys_ux_client_script_include |
UX Component Preset | sys_ux_component_preset |
EVAM Definition | sys_ux_composite_data |
EVAM Datasource | sys_ux_composite_datasource |
EVAM Data Source Filter | sys_ux_composite_datasource_filter |
EVAM Data Filter | sys_ux_composite_data_filter |
EVAM Datasource M2M | sys_ux_composite_data_m2m_datasource |
EVAM View Config Bundle M2M | sys_ux_composite_data_m2m_predicate_bundle |
View Template | sys_ux_composite_data_template |
EVAM View Config | sys_ux_composite_data_template_predicate |
EVAM View Config Bundle | sys_ux_composite_data_template_predicate_bundle |
UX Content Picker | sys_ux_content_picker |
UX Content Placeholder | sys_ux_content_placeholder_elem |
UX Controller | sys_ux_controller |
UX Controller Preset | sys_ux_controller_preset |
User Criteria Exclusions | sys_ux_criteria_m2m_exclusion |
User Criteria Inclusion | sys_ux_criteria_m2m_inclusion |
UX Custom Content Extension | sys_ux_custom_content_root_elem |
Data Broker β | sys_ux_data_broker |
Composite Data Broker β | sys_ux_data_broker_composite |
GraphQL Data Broker β | sys_ux_data_broker_graphql |
Proxied Data Broker β | sys_ux_data_broker_proxy |
REST Data Broker β | sys_ux_data_broker_rest |
External REST Data Broker β | sys_ux_data_broker_rest_external |
Data Broker Scriptlet β | sys_ux_data_broker_scriptlet |
Simple Data Broker β | sys_ux_data_broker_simple |
Data Broker Server Script β | sys_ux_data_broker_transform |
UX Diagnostic Rules | sys_ux_diagnostic_rule |
Route Configuration | sys_ux_dynamic_route_config |
Route Mapping | sys_ux_dynamic_route_mapping |
UX Event β | sys_ux_event |
Experience Category | sys_ux_experience_category |
UX Extension Point | sys_ux_extension_point |
UX Form Actions | sys_ux_form_action |
UX Form Actions Layout | sys_ux_form_action_layout |
UX Form Actions Layout Group | sys_ux_form_action_layout_group |
UX Form Actions Layout Item | sys_ux_form_action_layout_item |
UX Header Configuration | sys_ux_header_config |
UX Highlighted Value Configuration | sys_ux_highlighted_value_config |
UX Interface | sys_ux_interface |
UX Keyboard Shortcut | sys_ux_keyboard_shortcut |
UX Keyboard Shortcut Definition | sys_ux_keyboard_shortcut_definition |
UX Keyboard Shortcut Deny List | sys_ux_keyboard_shortcut_deny_list |
UX Asset | sys_ux_lib_asset |
UX Component Definition β | sys_ux_lib_component |
Component Action | sys_ux_lib_component_action |
Component Attribute | sys_ux_lib_component_attr |
UX Component Assets | sys_ux_lib_component_m2m_asset |
Component Property | sys_ux_lib_component_prop |
UX Content Picker Slot | sys_ux_lib_content_picker_slot |
Picker Slot Variable | sys_ux_lib_picker_slot_var |
UX Component Prefetched Resource | sys_ux_lib_presource |
UX Source Code | sys_ux_lib_source_script |
UX List | sys_ux_list |
UX List Category | sys_ux_list_category |
UX List Menu Configuration | sys_ux_list_menu_config |
M2m Action Assig Ux Action Config | sys_ux_m2m_action_assignment_action_config |
Sys Ux M2m Action Layout Item | sys_ux_m2m_action_layout_item |
Banner Announcement Mapping | sys_ux_m2m_banner_announcement |
Sys Ux M2m Highlighted Value Config | sys_ux_m2m_highlighted_value_config |
M2m Workspace Header Ux Header Config | sys_ux_m2m_workspace_header_ux_header_config |
Sys Ux M2m Workspace View Rule Ux View Rule Config | sys_ux_m2m_workspace_view_rule_ux_view_rule_config |
UX Macroponent Definition β | sys_ux_macroponent |
UX Macroponent Rules | sys_ux_macroponent_rule |
UX Macroponent Type | sys_ux_macroponent_type |
UX Managed Service Worker | sys_ux_managed_service_worker |
UX Metrics Applications | sys_ux_metrics_app |
My UX List | sys_ux_my_list |
UX App Shell UI | sys_ux_page |
UX Page Action Registry | sys_ux_page_action |
Action Binding | sys_ux_page_action_binding |
UX Page Element | sys_ux_page_element |
UX Page Element Permissions | sys_ux_page_element_m2m_role |
UX Page Property β | sys_ux_page_property |
UX Application β | sys_ux_page_registry |
EVAM View Config Action Assignment M2M | sys_ux_predicate_m2m_action_assignment |
Composite Dataset | sys_ux_query_variable |
UX Application Category M2M | sys_ux_registry_m2m_category |
UX Ribbon Configuration | sys_ux_ribbon_config |
Ribbon Configuration Setting | sys_ux_ribbon_config_setting |
UX Dashboard Route Permission | sys_ux_route_permission |
UX Screen β | sys_ux_screen |
UX Screen Condition | sys_ux_screen_condition |
UX Screen Collection | sys_ux_screen_type |
UX Sitemap Configuration | sys_ux_seo_sitemap_config |
UX Sitemap Definition | sys_ux_sitemap_definition |
UX Style | sys_ux_style |
UX Template Type | sys_ux_template_type |
UX Theme | sys_ux_theme |
UX Theme Asset | sys_ux_theme_asset |
Ux Theme Customization | sys_ux_theme_customization |
UX Theme Assets | sys_ux_theme_m2m_asset |
UX Theme Property | sys_ux_theme_property |
UX Theme Property Schema | sys_ux_theme_property_schema |
UX Type | sys_ux_type |
UX Unified Cache Version | sys_ux_unified_cache_version |
UX View Rules Configuration | sys_ux_view_rules_configuration |
UIB Screen Test Values | sys_uib_screen_test_values |
Subscribe to my newsletter
Read articles from Reece Poulsen directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Reece Poulsen
Reece Poulsen
Back in my freshman year of college, I was introduced to the world of programming, and it immediately caught my attention. The idea of creating something new with just a little learning and a couple of lines of code fascinated meβit was like discovering a whole new universe of possibilities! Ever since that moment, I've been on a continuous journey to expand my programming knowledge and skills. Now I'm a relatively new software developer on the ServiceNow platform, and I'm eager to explore its potential. Through this blog, I hope to share some of the things I'm learning along the way. Let's dive into the world of ServiceNow together and uncover the tricks and insights that can make a difference for us as developers!