Users fill out catalog forms, and those values need to end up in the records your teams work from. This guide shows you how to map catalog variables to fulfillment record fields so data flows automatically from request to execution.
Why variable mapping exists
Before variable mapping, catalog data lived in isolation. Users would submit requests with all the details your fulfillment teams needed, but that information stayed trapped in variables while technicians worked from blank sc_task records or target table records. Teams ended up re-entering data manually, copying from the original request to their work records. This created errors, wasted time, and meant fulfillment teams often worked with incomplete information because they didn't know which variables mattered.
How variable mapping works
ServiceNow gives you two paths for moving catalog data to fulfillment records. For sc_req_item fields, use the 'Map to Field' option directly on each variable — it's built-in, automatic, and requires no scripting. For any other table (sc_task, incident, change_request, or custom tables), you need a script in your workflow or flow that reads the variable values and copies them to the target record. Most implementations start with the basic mapping for requested item fields, then add scripted mapping as they build more sophisticated fulfillment processes.
Taking it further
Production-quality catalog items map the right variables to the right records based on your fulfillment model. If your teams work primarily from tasks, focus your mapping scripts there. If you create incidents or changes, map to those tables instead. Advanced implementations use conditional mapping — different variables populate different records depending on user selections. You'll also want to handle data transformation in your scripts: users enter readable names, but your fulfillment records might need sys_ids, normalized values, or calculated fields.
Before you start
- •catalog_admin role or higher
- •Target fulfillment table configured (sc_task, incident, etc.)
Sourdough: ServiceNow Monitoring and Analytics
A Chrome extension for ServiceNow Admins and Developers with essential tools, analytics, graphs and monitoring features.
Free to install. Pro $5/month after a 14-day no-card trial.
Pro requires the ServiceNow admin role. Upgrade inside the extension.
Step by step
Open your catalog item
Navigate to Service Catalog > Catalog Definitions > Maintain Items and open the catalog item you want to configure. You'll see the Variables tab where your form fields are defined.
If you don't see variables, create them first in the Variables related list.
Configure sc_req_item field mapping
Open each variable that should populate an sc_req_item field. In the variable form, find the 'Map to field' dropdown and select the target field from the sc_req_item table. Common mappings include Description, Short Description, and custom fields you've added to requested items. Save each variable after setting the mapping.
Only sc_req_item fields appear in this dropdown — you won't see sc_task or other table fields here.
Set up workflow or flow scripting
For sc_task or other target table mapping, add a script activity to your fulfillment workflow or flow. The script needs to read variable values from current.variables.[variable_name] and write them to the target record fields. Reference the specific variable names exactly as they appear in your catalog item.
Use current.getDisplayValue() for reference variables to get the display name instead of the sys_id.
Handle data transformation
In your mapping script, add any necessary data conversion. Users might select 'High Priority' but your target table expects priority = 1. Reference variables need .toString() to store properly in text fields. Choice variables might need case conversion or value mapping to match your target table's choice lists.
Test the complete flow
Submit a test request through the catalog, filling in all mapped variables. Check that values appear correctly in the sc_req_item record (for built-in mapping) and in your target fulfillment records (for scripted mapping). Verify that reference fields resolve properly and choice values match what your teams expect.
Test with edge cases like empty optional variables and special characters in text fields.
Add conditional mapping logic
If different request types need different field mappings, add conditional logic to your script. Use variable values to determine which fields to populate. For example, hardware requests might map to different sc_task fields than software requests, even within the same catalog item.
Best practices
Map only the variables that fulfillment teams actually use — every mapped field is another point of failure if the data structure changes.
Always handle null and undefined variable values in your mapping scripts — optional variables will break your script if not checked.
Don't map reference variables directly to text fields without using getDisplayValue() — storing sys_ids in text fields confuses users.
Test variable mapping after cloning instances — custom field mappings often break during instance refreshes and need to be reconfigured.
Use consistent field naming between your catalog variables and target table fields to make mapping scripts easier to maintain.
Test Your Knowledge
Quick 3-question quiz — see how your ServiceNow skills stack up.
A list view on a table with millions of records is slow. Best fix?
Select an answer to continue