Mapping options
Summarize
Summary of Mapping options
This document provides guidance on various methods to map fields during data import into ServiceNow, detailing the automatic mapping utility, mapping assist utility, and how to handle date formats and durations effectively. Understanding these mapping options is essential for ensuring data integrity during transformation operations.
Show less
Key Features
- Automatic Mapping Utility: Automatically matches import set field names with production table fields. Users can click 'Auto map matching fields' to confirm matches and use the mapping assist utility for corrections.
- Mapping Assist Utility: Offers an intuitive interface for mapping import set fields to multiple destination fields on production tables.
- Date Format Mapping: Allows transformation of date formats to match production table requirements with various format options available.
- Duration Field Mapping: Supports mapping to ServiceNow duration fields by calculating durations from start and end dates or converting existing duration values into ServiceNow's expected format.
- Source Scripts: Enables users to calculate source values for mapping when values are not in the correct format or need to be derived from multiple fields.
- Mapping Binary or BLOB Fields: Discusses the process of importing binary data and how to reference it in the target table using GlideRecord API in an onAfter script.
Key Outcomes
By utilizing the outlined mapping options, customers can ensure accurate data transformation, maintain data integrity, and streamline the import process. Properly mapping fields allows for effective data management within ServiceNow, enhancing operational efficiency and reducing errors during data imports.
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(); }