Mapping options
Summarize
Summary of Mapping options Creating integrations with applications
This guide details how to map fields during data imports in ServiceNow, allowing for various transformations before loading data onto production tables. It emphasizes the flexibility of using multiple mapping methods together for effective data integration.
Show less
Key Features
- Automatic Mapping Utility: Automatically matches field names between import sets and production tables, simplifying the mapping process.
- Mapping Assist Utility: Provides a user-friendly interface to map one import field to multiple destination fields, enhancing mapping accuracy.
- Date Format Mapping: Allows transformation of date formats to align with target field requirements, using predefined options like MM-dd-yyyy or yyyy-MM-dd.
- Duration Field Mapping: Supports mapping import data to ServiceNow duration fields through calculations or conversions from existing duration values.
- Source Scripts: Enables complex mappings by using scripts for computed values, lookups, and transformations based on multiple source fields.
- Binary/BLOB Field Mapping: Facilitates the import of binary data by creating attachments in the sysattachment table and linking them to target records.
Key Outcomes
By utilizing these mapping options, ServiceNow customers can ensure accurate data imports, maintain data integrity, and effectively manage transformations that suit their operational needs. Customers will benefit from improved data quality and streamlined processes, resulting in a more efficient data integration experience.
You can map fields in a number of ways depending on the circumstances of the import and whether data must be transformed prior to loading onto a production table.
It is also important to note that any given import operation may require taking advantage of multiple mapping methods, and these methods can be readily used in conjunction with one another.
Automatic Mapping Utility
The simplest mapping method is where all of the field names of the import sets match the names of the fields on the production tables onto which the data will be transformed. In this case, simply click Auto map matching fields in the related list in the Table Transform Map form and confirm proper matching. If there are any discrepancies in terms of how fields were automatically matched, use the mapping assist utility to correct them. When all fields are matched properly, click the Transform related link to begin transforming data onto the destination table.
Mapping Assist Utility
Changing the Date Format
| Date Format | Description |
|---|---|
| dd-MM-yyyy | Day-month-year |
| dd-MM-yyyy hh:mm:ss | Day-month-year hours-minutes-seconds |
| dd-MM-yyyy hh:mm:ss z | Day-month-year hours-minutes-seconds timezone |
| MM-dd-yyyy | Month-day-year |
| MM-dd-yyyy hh:mm:ss | Month-day-year hours-minutes-seconds |
| MM-dd-yyyy hh:mm:ss z | Month-day-year hours-minutes-seconds timezone |
| yyyy-dd-MM | Year-day-month |
| yyyy-MM-dd | Year-month-day |
| yyyy-MM-dd hh:mm:ss | Year-month-day hours-minutes-seconds |
To denote 24 hour time format, specify a custom date format using HH:mm:ss instead of hh:mm:ss.
Converting from a 24-hour to 12-hour date format might cause times from 12:00 to 23:59 to be formatted as 00:00 to 11:59.
Mapping to a Duration Field
- Calculate the duration from a start and end date
- Convert an existing duration value into a ServiceNow duration value
Calculating a Duration Value from a Start and End Date
- Navigate to .
- Select the transform map you want to calculate a duration value. For example, the Notification transform map that imports into the Incident table.
- Select the Run script check box.
- Enter JavaScript to transform the start and end dates into a duration. See the sample script.
- Click Update.
target.duration = gs.dateDiff(source.u_start.getDisplayValue(), source.u_end.getDisplayValue(), false);Convert a Duration Value into a ServiceNow Duration Value
- Navigate to .
- Select a transform map.
For example, the Notification transform map that imports into the Incident table.
- Select the Run script check box.
- Enter JavaScript to convert existing duration values into a ServiceNow duration values. See the sample script.
- Click Update.
//Transform the value in source.u_duration from seconds to milliseconds
target.duration.setDateNumericValue(source.u_duration * 1000);//Transform the value in source.u_duration to ServiceNow format
target.duration.setDateNumericValue(source.u_duration);Using a Script to Calculate a Source Value
- The source value is not in the format for the mapped target value.
- You want to look up a value before mapping to the target field.
- The source value must be computed from multiple fields.
- You need to create a compounded or calculated coalesce value in the target field.
A source script expects the calculated value to be set in the global variable
answer.
Mapping Binary or BLOB Fields
ServiceNow uses a special process to import binary and binary large object (BLOB) data from JDBC data sources. All binary data is automatically converted into a record in the Attachment [sys_attachment] table before the transformation occurs. The import set table only stores the attachment record's sys_id value in the import table field instead of the actual binary value. For example, suppose you use a JDBC data source to import data from a CA Service Desk system, which stores each record's key value as binary data. When you import the Service Desk key values into a ServiceNow table, the ServiceNow field only contains a sys_id reference to the corresponding binary data in the Attachment Record [sys_attachment] table rather than the actual binary data.
onAfter script. The script needs to run in an onAfter event
because the target.sys_id object is only available after the data is placed in
the import set table. For example, to map the resulting attachment to the target transform
record, you can use the following
script.var agr = new GlideRecord("sys_attachment");
agr.addQuery("sys_id", source.u_blob_field);
// the source field needs to be mapped to the source that is the BLOB
agr.query();
if(agr.next()) {
agr.table_name = "cmdb_ci"; // the target table of the transform map
agr.table_sys_id = target.sys_id; // the target record
agr.content_type = source.u_contentype;
// the content type string if available,
// this becomes the mime encoding when clicking an attachment link
agr.update(); // finally, move/re-attach the attachment to the target row }db_image table, run the following
onAfter script to display the
image:var strTemp = source.u_file_name;
var fType = strTemp.substr(- 3);
var iCont = "" ;
if(fType == 'jpg') {
iCont = 'jpeg' ; }
else {
iCont = fType; }
var agr = new GlideRecord("sys_attachment");
agr.addQuery("sys_id", source.u_blob_field);
agr.query();
if(agr.next()) {
agr.table_name = "ZZ_YYdb_image";
agr.table_sys_id = target.sys_id;
agr.content_type = 'image/' + iCont;
agr.file_name = 'image';
agr.update(); }