{"revision":"c10276e953456835cdbb1f3a60d58ae1980be353","document":{"id":46660,"path":"servicenow-platform/cmdb-integration-commons/cmdb-rte-transforms.md","title":"RTE transforms template scripts included within the Integration Commons for CMDB app","bundle":null,"doc_type":null,"release":"australia","body":"\n# RTE transforms template scripts included within the Integration Commons for CMDB app\n\nThe Robust Transform Engine \\(RTE\\) transforms are templated operations included within the Integration Commons for CMDB \\(sn\\_cmdb\\_int\\_util\\) store app.\n\nThe following script-based RTE transforms are available in the Integration Commons for CMDB app.\n\n## CI Lookup Operation\n\nUse to get the value of a field on an existing configuration item \\(CI\\) in the CMDB by the source native key.\n\n<table id=\"table_bqc_ynv_qwb\"><thead><tr><th colspan=\"2\">\n\nDetails\n\n</th></tr></thead><tbody><tr><td>\n\nTable\n\n</td><td>\n\nRobust Transform Engine CI Lookup Operation \\[sn\\_cmdb\\_int\\_util\\_ci\\_lookup\\_operation\\]\n\n</td></tr><tr><td>\n\nInput field\n\n</td><td>\n\n**source\\_sys\\_rte\\_eb\\_field** Input in order is:\n\n1.  Discovery Source\n2.  Source Native Key\n3.  CI Field\n\nThe operation queries the Source \\[sys\\_object\\_source\\] table for the discovery source and the associated source native key, and then returns the CI Field value of the matching record in the target table and the associated target sys ID.\n\n</td></tr><tr><td>\n\nOutput field\n\n</td><td>\n\n**target\\_sys\\_rte\\_eb\\_field** Output is the value of the field name on the CI matched by the source native key lookup or an empty string if there is no match.\n\n</td></tr></tbody>\n</table>The Source \\[sys\\_object\\_source\\] table is queried using the discovery source and source native key ordering by the last scan. The table iterates through the results of the query and queries the target table by the target sys ID until a valid CI is found. After a valid CI is found, the operation returns the value of the CI Field on the matching CI.\n\n|Discovery Source|Source Native Key|CI Field|Result|\n|----------------|-----------------|--------|------|\n|ServiceNow|ServiceNow\\|\\|\\|COMPUTER-NAME\\|\\|\\|Computer-01|name|Computer-01|\n\n## Cleanse Company\n\nUse to cleanse hardware manufacturer name and add the record to the Company \\[core\\_company\\] table to populate a reference, when the manufacturer is not linked to a model or software \\(cpu\\_manufacturer\\).\n\n<table id=\"table_jfy_3k1_nkb\"><thead><tr><th colspan=\"2\">\n\nDetails\n\n</th></tr></thead><tbody><tr><td>\n\nTable\n\n</td><td>\n\nRobust Transform Engine Entity Cleanse Company Operation \\[sn\\_cmdb\\_int\\_util\\_cleanse\\_company\\_operation\\]\n\n</td></tr><tr><td>\n\nInput field\n\n</td><td>\n\n**source\\_sys\\_rte\\_eb\\_field** Input is a company/manufacturer name.\n\n</td></tr><tr><td>\n\nOutput field\n\n</td><td>\n\n**target\\_sys\\_rte\\_eb\\_field** Output is the resulting sys\\_id and name of the company in core\\_company, concatenated by triple pipe \\(\\|\\|\\|\\).\n\n</td></tr><tr><td>\n\nScript include function\n\n</td><td>\n\n**sn\\_cmdb\\_int\\_util.CmdbIntegrationHardwareModelUtil\\(\\).cleanseCompany\\(input\\)**\n\n</td></tr></tbody>\n</table>If a matching record does not exist, then a new record is created in core\\_company so the return always includes a sys\\_id and name \\(unless the input is empty or invalid\\). The name is cleansed and a fuzzy lookup is done via the CmdbIntegrationCompanyModelUtil script include before the MakeAndModelJS platform API is called.\n\n|Input|Result|\n|-----|------|\n|SERVICENOW|93d4ecfac0a8000b6294d71b733977fb\\|\\|\\|ServiceNow|\n\n## Cleanse Hardware Model\n\nUse to create, cleanse, or lookup a hardware model to create a reference \\(model\\_id\\).\n\n<table id=\"table_ekx_zl1_nkb\"><thead><tr><th colspan=\"2\">\n\nDetails\n\n</th></tr></thead><tbody><tr><td>\n\nTable\n\n</td><td>\n\nRobust Transform Engine Entity Cleanse Hardware Model Operation \\[sn\\_cmdb\\_int\\_util\\_cleanse\\_hardware\\_model\\_operation\\]\n\n</td></tr><tr><td>\n\nInput fields\n\n</td><td>\n\n**source\\_sys\\_rte\\_eb\\_fields** Input in order is:\n\n1.  The manufacturer name\n2.  The model name\n\n If either value is provided by itself, then the operation only processes what is found.\n\n</td></tr><tr><td>\n\nOutput field\n\n</td><td>\n\n**target\\_sys\\_rte\\_eb\\_field** Output is the resulting sys\\_id and name of the company in core\\_company, and sys\\_id and name of the model in cmdb\\_model - all concatenated by triple pipe \\(\\|\\|\\|\\).\n\n</td></tr><tr><td>\n\nScript include function\n\n</td><td>\n\n**sn\\_cmdb\\_int\\_util.CmdbIntegrationHardwareModelUtil\\(\\).cleanseModelAndCompany\\(manufacturer\\_in, model\\_in\\)**\n\n</td></tr></tbody>\n</table>For either the manufacturer or model, if a matching record does not exist then a new record is created so the return always includes sys\\_ids and names for both records \\(unless the input is empty or invalid\\).\n\nThe manufacturer name is processed like the Cleanse Company transform and then the manufacturer name and model name are sent to the MakeAndModelJS platform API.\n\n|Manufacturer Name|Model Name|Result|\n|-----------------|----------|------|\n|ServiceNow Incorporated|SERVICENOW|93d4ecfac0a8000b6294d71b733977fb\\|\\|\\|ServiceNow\\|\\|\\|ba29cb303710200044e0bfc8bcbe5d6d \\|\\|\\|ServiceNow|\n\n## Cleanse Hardware Model with Model Number\n\nUse to create, cleanse, or lookup a hardware model to create a reference \\(model\\_id\\).\n\n<table id=\"table_yrv_lxm_4yb\"><thead><tr><th colspan=\"2\">\n\nDetails\n\n</th></tr></thead><tbody><tr><td>\n\nTable\n\n</td><td>\n\nRobust Transform Engine Entity Cleanse Hardware Model With Model Number Operatio \\[sn\\_cmdb\\_int\\_util\\_cleanse\\_hardware\\_model\\_number\\_operation\\]\n\n</td></tr><tr><td>\n\nInput fields\n\n</td><td>\n\n**source\\_sys\\_rte\\_eb\\_fields** Input in order is:\n\n1.  The manufacturer name\n2.  The model name\n3.  The model number\n4.  CI Class\n\n**Note:** The `CI Class` field is an optional input field, and when included, the MakeAndModelJS platform API gets the model record by querying the product model class from the Model Category \\[cmdb\\_model\\_category\\] table. Else, the API gets the model record from the Hardware Models \\[cmdb\\_hardware\\_product\\_model\\] table only.\n\n\nIf either value is provided by itself, then the operation only processes what is found.\n\n</td></tr><tr><td>\n\nOutput field\n\n</td><td>\n\n**target\\_sys\\_rte\\_eb\\_field** Output is the resulting sys\\_id and name of the company in core\\_company, and sys\\_id and name of the model in cmdb\\_model - all concatenated by triple pipe \\(\\|\\|\\|\\).\n\n</td></tr><tr><td>\n\nScript include function\n\n</td><td>\n\n**sn\\_cmdb\\_int\\_util.CmdbIntegrationHardwareModelUtil\\(\\).cleanseModelAndCompany\\(manufacturer\\_in, model\\_in\\)**\n\n</td></tr></tbody>\n</table>For either the manufacturer or model, if a matching record does not exist then a new record is created so the return always includes sys\\_ids and names for both records \\(unless the input is empty or invalid\\).\n\nThe manufacturer name is processed like the Cleanse Company transform and then the manufacturer name, model name, and model number are sent to the MakeAndModelJS platform API.\n\n|Manufacturer Name|Model Name|Model Number|Result|\n|-----------------|----------|------------|------|\n|ServiceNow Incorporated|SERVICENOW|BC0AA8000C56|93d4ecfac0a8000b6294d71b733977fb\\|\\|\\|ServiceNow\\|\\|\\|ba29cb303710200044e0bfc8bcbe5d6d \\|\\|\\|ServiceNow|\n\n## Cleanse IP Address\n\nUse when a field provides an IP address.\n\n<table id=\"table_qzx_km1_nkb\"><thead><tr><th colspan=\"2\">\n\nDetails\n\n</th></tr></thead><tbody><tr><td>\n\nTable\n\n</td><td>\n\nRobust Transform Engine Entity Cleanse IP Operation \\[sn\\_cmdb\\_int\\_util\\_cleanse\\_ip\\_operation\\]\n\n</td></tr><tr><td>\n\nInput fields\n\n</td><td>\n\n**source\\_sys\\_rte\\_eb\\_field** Input is the IP address to cleanse.\n\n</td></tr><tr><td>\n\nOutput field\n\n</td><td>\n\n**target\\_sys\\_rte\\_eb\\_field** Output is the resulting IP address, which can be empty.\n\n</td></tr><tr><td>\n\nScript include function\n\n</td><td>\n\n**sn\\_cmdb\\_int\\_util.CmdbIntegrationNetworkUtil\\(\\).cleanseIpAddress\\(input\\)**\n\n</td></tr></tbody>\n</table>The IP address is tested for both IPv4 and IPv6 structures along with some known derivations \\(an IPv4 with spaces instead of periods\\). If a result is found, then it is formatted and returned.\n\n|Ip|Ip Results|\n|---|----------|\n|192.160.89.1|192.160.89.1|\n|192.160.89.1,54.21.12.311|192.160.89.1|\n|192 160 89 1 54 21 12 311|192.160.89.1|\n|192-160-89-1|192.160.89.1|\n|2001:0db8:0000:0000:0000:ff00:0042:8329|2001:0db8:0000:0000:0000:ff00:0042:8329|\n|junk| |\n|175912537|10.124.54.89|\n|-1| |\n|0| |\n\n## Cleanse IP Version\n\nUse when the source of data does not provide an IP version or when the IP version might be unreliable.\n\n<table id=\"table_bnb_bn1_nkb\"><thead><tr><th colspan=\"2\">\n\nDetails\n\n</th></tr></thead><tbody><tr><td>\n\nTable\n\n</td><td>\n\nRobust Transform Engine Entity Cleanse IP Version Operation \\[sn\\_cmdb\\_int\\_util\\_cleanse\\_ip\\_version\\_operation\\]\n\n</td></tr><tr><td>\n\nInput fields\n\n</td><td>\n\n**source\\_sys\\_rte\\_eb\\_field** Input is the IP address to cleanse.\n\n</td></tr><tr><td>\n\nOutput field\n\n</td><td>\n\n**target\\_sys\\_rte\\_eb\\_field** Output is the resulting cmdb\\_ci\\_ip\\_address.ip\\_version lookup key \\(either 4, 6, or empty\\).\n\n</td></tr><tr><td>\n\nScript include function\n\n</td><td>\n\n**sn\\_cmdb\\_int\\_util.CmdbIntegrationNetworkUtil\\(\\).deriveIpVersion\\(input\\)**\n\n</td></tr></tbody>\n</table>The input IP address value is checked for either proper IPv4 or IPv6 structure, otherwise the return is empty. This function provides no IP cleansing.\n\n|Input|Result|\n|-----|------|\n|192.160.89.1|4|\n\n## Cleanse MAC Address\n\nUse when a field provides a MAC address.\n\n<table id=\"table_o5n_fl1_nkb\"><thead><tr><th colspan=\"2\">\n\nDetails\n\n</th></tr></thead><tbody><tr><td>\n\nTable\n\n</td><td>\n\nRobust Transform Engine Entity Cleanse MAC Operation \\[sn\\_cmdb\\_int\\_util\\_cleanse\\_mac\\_operation\\]\n\n</td></tr><tr><td>\n\nInput fields\n\n</td><td>\n\n**source\\_sys\\_rte\\_eb\\_field** Input is the MAC address to cleanse.\n\n</td></tr><tr><td>\n\nOutput field\n\n</td><td>\n\n**target\\_sys\\_rte\\_eb\\_field** Output is the resulting MAC address which can be empty.\n\n</td></tr><tr><td>\n\nScript include function\n\n</td><td>\n\n**sn\\_cmdb\\_int\\_util.CmdbIntegrationNetworkUtil\\(\\).cleanseMacAddress\\(input\\)**\n\n</td></tr></tbody>\n</table>The MAC address is tested for proper structure along with some known derivations \\(for example, a MAC address with spaces instead of colons\\). If a result is found, then it is formatted and returned.\n\n|Input|Result|\n|-----|------|\n|00 0A 95 9D 68 16|00:0a:95:9d:68:16|\n\n## Cleanse Operating System\n\nUse to extract, cleanse, and format an operating system name, when the source provides an operating system value.\n\n<table id=\"table_pzz_241_nkb\"><thead><tr><th colspan=\"2\">\n\nDetails\n\n</th></tr></thead><tbody><tr><td>\n\nTable\n\n</td><td>\n\nRobust Transform Engine Entity Cleanse OS Operation \\[sn\\_cmdb\\_int\\_util\\_cleanse\\_os\\_operation\\]\n\n</td></tr><tr><td>\n\nInput fields\n\n</td><td>\n\n**source\\_sys\\_rte\\_eb\\_field** Input is the operating system name to cleanse.\n\n</td></tr><tr><td>\n\nOutput field\n\n</td><td>\n\n**target\\_sys\\_rte\\_eb\\_field** Output is the resulting operating system name. The resulting operating system name is also written to the cmdb\\_ci\\_computer.os list field.\n\n</td></tr><tr><td>\n\nScript include function\n\n</td><td>\n\n**sn\\_cmdb\\_int\\_util.CmdbIntegrationOsUtil\\(\\).cleanseAndInsertOs\\(input\\)**\n\n</td></tr></tbody>\n</table>Most of the current cleansing is centered on Microsoft operating system values aside from common cleansing such as fixing casing.\n\n|Operating System|Operating System Results|\n|----------------|------------------------|\n|Windows Server 2003 R2 64 bit Edition Service Pack 2|Windows Server 2003 R2|\n|Windows 2003|Windows 2003|\n|Windows Vista 64 bit Edition|Windows Vista|\n|Windows 2000 Professional Service Pack 4|Windows 2000 Professional|\n|Windows XP Service Pack 2-3|Windows XP|\n|Microsoft Windows Server 2003 R2 64 bit Edition Service Pack 2|Windows Server 2003 R2|\n|Microsoft Windows 2003|Windows 2003|\n|Microsoft Windows Vista 64 bit Edition|Windows Vista|\n|Microsoft Windows 2000 Professional Service Pack 4|Windows 2000 Professional|\n|Microsoft Windows XP Service Pack 2-3|Windows XP|\n|linux ubuntu|Linux Ubuntu|\n|Linux Ubuntu Server|Linux Ubuntu Server|\n\n## Cleanse Serial Number\n\nUse to cleanse and remove invalid serial numbers.\n\n<table id=\"table_hty_g2d_jmb\"><thead><tr><th colspan=\"2\">\n\nDetails\n\n</th></tr></thead><tbody><tr><td>\n\nTable\n\n</td><td>\n\nRobust Transform Engine Entity Cleanse Serial Number Operation \\[sn\\_cmdb\\_int\\_util\\_cleanse\\_serial\\_number\\_operation\\]\n\n</td></tr><tr><td>\n\nInput fields\n\n</td><td>\n\n**source\\_sys\\_rte\\_eb\\_fields** Input is the serial number to cleanse.\n\n</td></tr><tr><td>\n\nOutput field\n\n</td><td>\n\n**target\\_sys\\_rte\\_eb\\_field** Output is the resulting serial number.\n\n</td></tr></tbody>\n</table>|Serial Number|Serial Number Results|\n|-------------|---------------------|\n|ec2aa2da-5312-aa3e-804c-c35feabeda5f|ec2aa2da-5312-aa3e-804c-c35feabeda5f|\n|1045–1209–6738–4668–7696–2783|1045–1209–6738–4668–7696–2783|\n\n## Cleanse Serial Number With Alternate Value Return if Invalid\n\nUse to cleanse Serial Number and verify the length of the cleansed serial number. Returns the alternate value if the length of serial number is invalid.\n\n<table id=\"table_mhm_tp1_4cc\"><thead><tr><th colspan=\"2\">\n\nDetails\n\n</th></tr></thead><tbody><tr><td>\n\nTable\n\n</td><td>\n\nRobust Transform Engine Entity Cleanse Serial Number With Alternate Value Return \\[sn\\_cmdb\\_int\\_util\\_cle$anse\\_serial\\_number\\_with\\_alternate\\_value\\_return\\_if\\_invalid\\]\n\n</td></tr><tr><td>\n\nInput fields\n\n</td><td>\n\n**source\\_sys\\_rte\\_eb\\_fields** Inputs: serial number, Alternate value\n\n</td></tr><tr><td>\n\nOutput field\n\n</td><td>\n\n**target\\_sys\\_rte\\_eb\\_field** Output: Cleansed serial number if the length is valid, Alternate value otherwise.\n\n</td></tr><tr><td>\n\nScript include function\n\n</td><td>\n\n**global.SerialNumberManager\\(\\).isValid\\(input\\)**\n\n</td></tr></tbody>\n</table>The operation cleanses the serial number and checks If the cleansed serial number length is greater than or equal to the value specified in the **sn\\_cmdb\\_int\\_util.minimum\\_valid\\_serial\\_number\\_length** system property. The default value of the property is set to `7`.\n\n## Cleanse IMEI Number With Alternate Value Return if Invalid\n\nUse to cleanse the IMEI number and verify the length of the cleansed IMEI number. Returns the alternate value if the length of IMEI number is invalid.\n\n<table id=\"table_vcg_fs1_4cc\"><thead><tr><th colspan=\"2\">\n\nDetails\n\n</th></tr></thead><tbody><tr><td>\n\nTable\n\n</td><td>\n\nRobust Transform Engine Entity Cleanse IMEI With Alternate Value Return if Inval \\[sn\\_cmdb\\_int\\_util\\_cleanse\\_imei\\_with\\_alternate\\_value\\_return\\_if\\_invalid\\]\n\n</td></tr><tr><td>\n\nInput fields\n\n</td><td>\n\n**source\\_sys\\_rte\\_eb\\_fields** Inputs: IMEI number, Alternate value\n\n</td></tr><tr><td>\n\nOutput field\n\n</td><td>\n\n**target\\_sys\\_rte\\_eb\\_field** Output: IMEI number if the length is valid, Alternate value otherwise.\n\n</td></tr><tr><td>\n\nScript include function\n\n</td><td>\n\nNone\n\n</td></tr></tbody>\n</table>The operation cleanses the IMEI number and checks If the cleansed IMEI number length is equal to the value specified in the **sn\\_cmdb\\_int\\_util.valid\\_imei\\_number\\_length** system property. The default value of the property is set to `15`.\n\n## Cleanse Software Model\n\nUse to cleanse and create a software model. Also, to create manufacturer and software model if they do not exist and follow with a split operation.\n\n<table id=\"table_pyv_h41_nkb\"><thead><tr><th colspan=\"2\">\n\nDetails\n\n</th></tr></thead><tbody><tr><td>\n\nTable\n\n</td><td>\n\nRobust Transform Engine Entity Cleanse Software Model Operation \\[sn\\_cmdb\\_int\\_util\\_cleanse\\_software\\_model\\_operation\\]\n\n</td></tr><tr><td>\n\nInput fields\n\n</td><td>\n\n**source\\_sys\\_rte\\_eb\\_fields** Input in order is:\n\n1.  The manufacturer name\n2.  The software name\n3.  The software version \\(not required\\)\n\n If only manufacturer or name is provided, then only those values are processed and returned.\n\n</td></tr><tr><td>\n\nOutput field\n\n</td><td>\n\n**target\\_sys\\_rte\\_eb\\_field** Output is the resulting sys\\_id and name of the company in core\\_company, the cleansed software name, and the cleansed software version all concatenated by a triple pipe \\(\\|\\|\\|\\).\n\n</td></tr><tr><td>\n\nScript include function\n\n</td><td>\n\n**sn\\_cmdb\\_int\\_util.CmdbIntegrationSoftwareModelUtil\\(\\).cleanseSoftwareModel\\(company, model, version\\)**\n\n</td></tr></tbody>\n</table>If a matching manufacturer record does not exist, then a new record is created so the return always includes the sys\\_id and name for the manufacturer \\(if the manufacturer is not empty or invalid\\).\n\nThe manufacturer name is processed the same as in the Cleanse Company transform and then the manufacturer name is sent to the MakeAndModelJS platform API.\n\nThe software name and version are cleansed and formatted and returned. The version is removed from the software name if present.\n\n<table id=\"table_pr2_jp1_nkb\"><thead><tr><th>\n\nManufacturer\n\n</th><th>\n\nSoftware Name\n\n</th><th>\n\nSoftware Version\n\n</th><th>\n\nResults\n\n</th></tr></thead><tbody><tr><td>\n\nDell Inc.\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\n \n\n</td><td>\n\nNoManufacturer\n\n</td><td>\n\n \n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\n \n\n</td><td>\n\n \n\n</td><td>\n\n1.0.0.0\n\n</td><td>\n\n \n\n</td></tr><tr><td>\n\nDell Inc.\n\n</td><td>\n\nDataEngine\n\n</td><td>\n\n1.0.17.2\n\n</td><td>\n\nb7e7d7d8c0a8016900a5d7f291acce5c\\|\\|\\|Dell Inc.\\|\\|\\|DataEngine\\|\\|\\|1.0.17.2\n\n</td></tr><tr><td>\n\nGenuineIntel\n\n</td><td>\n\nTestSoftware\n\n</td><td>\n\n1.0.0.1\n\n</td><td>\n\n7aad6d00c611228400f00e0f80b67d2d\\|\\|\\|Intel\\|\\|\\|TestSoftware\\|\\|\\|1.0.0.1\n\n</td></tr><tr><td>\n\nDell Inc.\n\n</td><td>\n\nTestSoftware\n\n</td><td>\n\n232\n\n</td><td>\n\nb7e7d7d8c0a8016900a5d7f291acce5c\\|\\|\\|Dell Inc.\\|\\|\\|TestSoftware\\|\\|\\|232\n\n</td></tr><tr><td>\n\nDell Inc.\n\n</td><td>\n\nTestSoftware\n\n</td><td>\n\n123.0.0.0\n\n</td><td>\n\nb7e7d7d8c0a8016900a5d7f291acce5c\\|\\|\\|Dell Inc.\\|\\|\\|TestSoftware\\|\\|\\|123.0\n\n</td></tr><tr><td>\n\nAmerica Online\n\n</td><td>\n\nTestSoftware\n\n</td><td>\n\n1.0.0.0\n\n</td><td>\n\n0c43d035c61122750000251553f6f8e8\\|\\|\\|America Online\\|\\|\\|TestSoftware\\|\\|\\|1.0\n\n</td></tr><tr><td>\n\nAmerica Online\n\n</td><td>\n\nTestSoftware\n\n</td><td>\n\n1.0.0.0\n\n</td><td>\n\n0c43d035c61122750000251553f6f8e8\\|\\|\\|America Online\\|\\|\\|TestSoftware\\|\\|\\|1.0\n\n</td></tr><tr><td>\n\ndell\n\n</td><td>\n\nLowerCase\n\n</td><td>\n\n1.0.0.0\n\n</td><td>\n\nb7e7d7d8c0a8016900a5d7f291acce5c\\|\\|\\|Dell Inc.\\|\\|\\|LowerCase\\|\\|\\|1.0\n\n</td></tr><tr><td>\n\nDell Corporation.\n\n Incorporated, Corp.\n\n</td><td>\n\nTestSoftware\n\n</td><td>\n\n1.0.0.0\n\n</td><td>\n\nb7e7d7d8c0a8016900a5d7f291acce5c\\|\\|\\|Dell Inc.\\|\\|\\|TestSoftware\\|\\|\\|1.0\n\n</td></tr><tr><td>\n\nMicrosoft\n\n</td><td>\n\nMicrosoft SQL\n\n Server 2016 Enterprise\n\n</td><td>\n\n2.0.0\n\n</td><td>\n\n0e8b8e650a0a0b3b004f285ffbb1a4fc\\|\\|\\|Microsoft\\|\\|\\|Microsoft SQL Server 2016 Enterprise\\|\\|\\|2.0\n\n</td></tr><tr><td>\n\nDell Computer\n\n</td><td>\n\nDataEngine\n\n</td><td>\n\n1.0.17.2\n\n</td><td>\n\nb7e7d7d8c0a8016900a5d7f291acce5c\\|\\|\\|Dell Inc.\\|\\|\\|DataEngine\\|\\|\\|1.0.17.2\n\n</td></tr><tr><td>\n\nAdobe\n\n</td><td>\n\nTestSoftware\n\n</td><td>\n\n1\n\n</td><td>\n\nb7e8b5c4c0a80169008b49e468920048\\|\\|\\|Adobe Systems\\|\\|\\|TestSoftware\\|\\|\\|1.0\n\n</td></tr></tbody>\n</table>## Create Software Instance Name\n\nUse when a hardware name, software name, and software version is provided, to create a new software instance name.\n\n<table id=\"table_ryb_cb2_jmb\"><thead><tr><th colspan=\"2\">\n\nDetails\n\n</th></tr></thead><tbody><tr><td>\n\nTable\n\n</td><td>\n\nRobust Transform Engine Entity Create Software Instance Name Operation \\[sn\\_cmdb\\_int\\_util\\_create\\_software\\_instance\\_name\\_operation\\]\n\n</td></tr><tr><td>\n\nInput fields\n\n</td><td>\n\n**source\\_sys\\_rte\\_eb\\_fields** Input in order is:\n\n 1.  The hardware name\n2.  The software name\n3.  The software version \\(not required\\)\n\n</td></tr><tr><td>\n\nOutput field\n\n</td><td>\n\n**target\\_sys\\_rte\\_eb\\_field** Output is the software instance name.\n\n</td></tr><tr><td>\n\nScript include function\n\n</td><td>\n\n**sn\\_cmdb\\_int\\_util.CmdbIntegrationSoftwareModelUtil\\(\\).createSoftwareInstanceName\\(hw\\_name\\_in, sw\\_name\\_in, sw\\_version\\_in\\)**\n\n</td></tr></tbody>\n</table>|Hardware Name|Software Name|Software Version|Results|\n|-------------|-------------|----------------|-------|\n|computer1|microsoft|2.0.1|microsoft 2.0.1-computer1|\n|computer2|adobe| |adobe-computer2|\n|computer3|adobe|2.1|adobe 2.1-computer3|\n|hw2|sw3|301|sw3 301-hw2|\n\n## Derive CI Class from Model\n\nUse when processing a computer record and a model is provided but the class of the computer is ambiguous otherwise. Can be used along with other Derive CI Class transforms.\n\n<table id=\"table_xsx_h41_nkb\"><thead><tr><th colspan=\"2\">\n\nDetails\n\n</th></tr></thead><tbody><tr><td>\n\nTable\n\n</td><td>\n\nRobust Transform Engine Entity Derive Class From Model Operation \\[sn\\_cmdb\\_int\\_util\\_derive\\_class\\_from\\_model\\_operation\\]\n\n</td></tr><tr><td>\n\nInput fields\n\n</td><td>\n\n**source\\_sys\\_rte\\_eb\\_fields** Input in order is:\n\n1.  The model name\n2.  The current class name\n\n</td></tr><tr><td>\n\nOutput field\n\n</td><td>\n\n**target\\_sys\\_rte\\_eb\\_field** Output is the resulting class name.\n\n</td></tr><tr><td>\n\nScript include function\n\n</td><td>\n\n**sn\\_cmdb\\_int\\_util.CmdbIntegrationClassUtil\\(\\).deriveClassNameFromModelInput\\(model\\_in, class\\_in\\)**\n\n</td></tr></tbody>\n</table>Does not return a value of a class which is higher in the class hierarchy \\(a parent class\\) than the provided input class. For example, does not return cmdb\\_ci\\_computer if the input is cmdb\\_ci\\_server. Looks only at the cmdb\\_ci\\_computer hierarchy, going through cmdb\\_ci\\_server \\(cmdb\\_ci\\_computer, cmdb\\_ci\\_server, children of cmdb\\_ci\\_server\\).\n\nCurrently looks for Server, Windows Server, and Linux Server indicators in the model.\n\n|Model|Class|Class Results|\n|-----|-----|-------------|\n|window server|cmdb\\_ci\\_computer|cmdb\\_ci\\_win\\_server|\n|Microsoft server|cmdb\\_ci\\_computer|cmdb\\_ci\\_win\\_server|\n|linux server|cmdb\\_ci\\_computer|cmdb\\_ci\\_linux\\_server|\n|Microsoft server|cmdb\\_ci\\_server|cmdb\\_ci\\_win\\_server|\n|linux server|cmdb\\_ci\\_server|cmdb\\_ci\\_linux\\_server|\n|Red hat server|cmdb\\_ci\\_server|cmdb\\_ci\\_linux\\_server|\n|Arch server|cmdb\\_ci\\_server|cmdb\\_ci\\_linux\\_server|\n|Centos server|cmdb\\_ci\\_server|cmdb\\_ci\\_linux\\_server|\n|Debian server|cmdb\\_ci\\_server|cmdb\\_ci\\_linux\\_server|\n|Fedora server|cmdb\\_ci\\_server|cmdb\\_ci\\_linux\\_server|\n|Suse server|cmdb\\_ci\\_server|cmdb\\_ci\\_linux\\_server|\n|Oracle server|cmdb\\_ci\\_server|cmdb\\_ci\\_linux\\_server|\n|Rhel server|cmdb\\_ci\\_server|cmdb\\_ci\\_linux\\_server|\n|Ubuntu server|cmdb\\_ci\\_server|cmdb\\_ci\\_linux\\_server|\n|Junk| | |\n| |cmdb\\_ci\\_server|cmdb\\_ci\\_server|\n|Junk server|cmdb\\_ci\\_computer|cmdb\\_ci\\_server|\n|Junk|cmdb\\_ci\\_computer|cmdb\\_ci\\_computer|\n\n## Derive CI Class from Native Class Identifier\n\nUse when processing a computer record and a native class indicator is provided but the class of the computer is ambiguous otherwise. Can be used along with other Derive CI Class transforms.\n\n<table id=\"table_igz_h41_nkb\"><thead><tr><th colspan=\"2\">\n\nDetails\n\n</th></tr></thead><tbody><tr><td>\n\nTable\n\n</td><td>\n\nRobust Transform Engine Entity Derive Class From Native Value Operation \\[sn\\_cmdb\\_int\\_util\\_derive\\_class\\_from\\_native\\_value\\_operation\\]\n\n</td></tr><tr><td>\n\nInput fields\n\n</td><td>\n\n**source\\_sys\\_rte\\_eb\\_fields** Input in order is:\n\n1.  The native class identifier\n2.  The current class name\n\n</td></tr><tr><td>\n\nOutput field\n\n</td><td>\n\n**target\\_sys\\_rte\\_eb\\_field** Output is the resulting class name.\n\n</td></tr><tr><td>\n\nScript include function\n\n</td><td>\n\n**sn\\_cmdb\\_int\\_util.CmdbIntegrationClassUtil\\(\\).deriveClassNameFromNativeValue\\(native\\_id\\_in, class\\_in\\)**\n\n</td></tr></tbody>\n</table>Does not return a value of a class which is higher in the class hierarchy \\(a parent class\\) than the provided input class. For example, does not return cmdb\\_ci\\_computer if the input is cmdb\\_ci\\_server. Looks only at the cmdb\\_ci\\_computer hierarchy, going through cmdb\\_ci\\_server \\(cmdb\\_ci\\_computer, cmdb\\_ci\\_server, children of cmdb\\_ci\\_server\\).\n\nCurrently looks for Server, Windows Server, and Linux Server indicators in the native identifier.\n\n|Native Class|Class|Class Results|\n|------------|-----|-------------|\n|window server|cmdb\\_ci\\_computer|cmdb\\_ci\\_win\\_server|\n|Microsoft server|cmdb\\_ci\\_computer|cmdb\\_ci\\_win\\_server|\n|linux server|cmdb\\_ci\\_computer|cmdb\\_ci\\_linux\\_server|\n|Microsoft server|cmdb\\_ci\\_server|cmdb\\_ci\\_win\\_server|\n|linux server|cmdb\\_ci\\_server|cmdb\\_ci\\_linux\\_server|\n|Red hat server|cmdb\\_ci\\_server|cmdb\\_ci\\_linux\\_server|\n|Arch server|cmdb\\_ci\\_server|cmdb\\_ci\\_linux\\_server|\n|Centos server|cmdb\\_ci\\_server|cmdb\\_ci\\_linux\\_server|\n|Debian server|cmdb\\_ci\\_server|cmdb\\_ci\\_linux\\_server|\n|Fedora server|cmdb\\_ci\\_server|cmdb\\_ci\\_linux\\_server|\n|Suse server|cmdb\\_ci\\_server|cmdb\\_ci\\_linux\\_server|\n|Oracle server|cmdb\\_ci\\_server|cmdb\\_ci\\_linux\\_server|\n|Rhel server|cmdb\\_ci\\_server|cmdb\\_ci\\_linux\\_server|\n|Ubuntu server|cmdb\\_ci\\_server|cmdb\\_ci\\_linux\\_server|\n|Junk| | |\n| |cmdb\\_ci\\_server|cmdb\\_ci\\_server|\n|Junk server|cmdb\\_ci\\_computer|cmdb\\_ci\\_server|\n|Junk|cmdb\\_ci\\_computer|cmdb\\_ci\\_computer|\n\n## Derive CI Class from Operating System\n\nUse when processing a computer record and an operating system is provided but the class of the computer is ambiguous otherwise. Can be used along with other Derive CI Class transforms.\n\n<table id=\"table_uc1_341_nkb\"><thead><tr><th colspan=\"2\">\n\nDetails\n\n</th></tr></thead><tbody><tr><td>\n\nTable\n\n</td><td>\n\nRobust Transform Engine Entity Derive Class From OS Operation \\[sn\\_cmdb\\_int\\_util\\_derive\\_class\\_from\\_os\\_operation\\]\n\n</td></tr><tr><td>\n\nInput fields\n\n</td><td>\n\n**source\\_sys\\_rte\\_eb\\_fields** Input in order is:\n\n1.  The operating system name\n2.  The current class name\n\n</td></tr><tr><td>\n\nOutput field\n\n</td><td>\n\n**target\\_sys\\_rte\\_eb\\_field** Output is the resulting class name.\n\n</td></tr><tr><td>\n\nScript include function\n\n</td><td>\n\n**sn\\_cmdb\\_int\\_util.CmdbIntegrationClassUtil\\(\\).deriveClassNameFromOsName\\(os\\_in, class\\_in\\)**\n\n</td></tr></tbody>\n</table>Does not return a value of a class which is higher in the class hierarchy \\(a parent class\\) than the provided input class. For example, does not return cmdb\\_ci\\_computer if the input is cmdb\\_ci\\_server. Looks only at the cmdb\\_ci\\_computer hierarchy, going through cmdb\\_ci\\_server \\(cmdb\\_ci\\_computer, cmdb\\_ci\\_server, children of cmdb\\_ci\\_server\\).\n\nCurrently looks for Server, Windows Server, and Linux Server indicators in the operating system name.\n\n|Operating System|Class|Class Results|\n|----------------|-----|-------------|\n|window server|cmdb\\_ci\\_computer|cmdb\\_ci\\_win\\_server|\n|Microsoft server|cmdb\\_ci\\_computer|cmdb\\_ci\\_win\\_server|\n|linux server|cmdb\\_ci\\_computer|cmdb\\_ci\\_linux\\_server|\n|Microsoft server|cmdb\\_ci\\_server|cmdb\\_ci\\_win\\_server|\n|linux server|cmdb\\_ci\\_server|cmdb\\_ci\\_linux\\_server|\n|Red hat server|cmdb\\_ci\\_server|cmdb\\_ci\\_linux\\_server|\n|Arch server|cmdb\\_ci\\_server|cmdb\\_ci\\_linux\\_server|\n|Centos server|cmdb\\_ci\\_server|cmdb\\_ci\\_linux\\_server|\n|Debian server|cmdb\\_ci\\_server|cmdb\\_ci\\_linux\\_server|\n|Fedora server|cmdb\\_ci\\_server|cmdb\\_ci\\_linux\\_server|\n|Suse server|cmdb\\_ci\\_server|cmdb\\_ci\\_linux\\_server|\n|Oracle server|cmdb\\_ci\\_server|cmdb\\_ci\\_linux\\_server|\n|Rhel server|cmdb\\_ci\\_server|cmdb\\_ci\\_linux\\_server|\n|Ubuntu server|cmdb\\_ci\\_server|cmdb\\_ci\\_linux\\_server|\n|Junk| | |\n| |cmdb\\_ci\\_server|cmdb\\_ci\\_server|\n|Junk server|cmdb\\_ci\\_computer|cmdb\\_ci\\_server|\n|Junk|cmdb\\_ci\\_computer|cmdb\\_ci\\_computer|\n\n## Derive Virtual From Hardware Model\n\nUse when processing a computer record that may be virtual, a hardware model is provided, and the virtual status is ambiguous. Can be used along with other Derive Virtual From transforms.\n\n<table id=\"table_e51_341_nkb\"><thead><tr><th colspan=\"2\">\n\nDetails\n\n</th></tr></thead><tbody><tr><td>\n\nTable\n\n</td><td>\n\nRobust Transform Engine Entity Derive Virtual From Model Operation \\[sn\\_cmdb\\_int\\_util\\_derive\\_virtual\\_from\\_model\\_operation\\]\n\n</td></tr><tr><td>\n\nInput fields\n\n</td><td>\n\n**source\\_sys\\_rte\\_eb\\_fields** Input in order is:\n\n1.  The hardware model name\n2.  The current virtual flag value\n\n</td></tr><tr><td>\n\nOutput field\n\n</td><td>\n\n**target\\_sys\\_rte\\_eb\\_field** Output is the resulting virtual flag \\(true/false\\). If the current virtual flag is ‘true’, the result is true. Otherwise the result is ‘true’ or ‘false’.\n\n</td></tr><tr><td>\n\nScript include function\n\n</td><td>\n\n**sn\\_cmdb\\_int\\_util.CmdbIntegrationVirtualDetectionUtil\\(\\).detectVirtualFromModelName\\(model\\_in, is\\_virtual\\_in\\)**\n\n</td></tr></tbody>\n</table>Looks for indicators in the model name for a virtual device \\(VMware\\).\n\n|Hardware Model|Virtual Flag|Virtual Flag Results|\n|--------------|------------|--------------------|\n|thinkpad|true|true|\n|thinkpad|false|false|\n|thinkpad| |false|\n|vmware inc|true|true|\n| |true|true|\n| |false|false|\n| | |false|\n\n## Derive Virtual From Native Indicator\n\nUse when processing a computer record that may be virtual, a virtual indicator is provided by the source, and the virtual status is ambiguous. Can be used along with other Derive Virtual From transforms.\n\n<table id=\"table_pmb_341_nkb\"><thead><tr><th colspan=\"2\">\n\nDetails\n\n</th></tr></thead><tbody><tr><td>\n\nTable\n\n</td><td>\n\nsn\\_cmdb\\_int\\_util\\_derive\\_virtual\\_from\\_native\\_value\\_operation\n\n</td></tr><tr><td>\n\nInput fields\n\n</td><td>\n\n**source\\_sys\\_rte\\_eb\\_fields** Input in order is:\n\n1.  The native indicator\n2.  The current virtual flag value\n\n</td></tr><tr><td>\n\nOutput field\n\n</td><td>\n\n**target\\_sys\\_rte\\_eb\\_field** Output is the resulting virtual flag \\(true/false\\). If the current virtual flag is ‘true’, the result is true. Otherwise the result is ‘true’ or ‘false’.\n\n</td></tr><tr><td>\n\nScript include function\n\n</td><td>\n\n**sn\\_cmdb\\_int\\_util.CmdbIntegrationVirtualDetectionUtil\\(\\).detectVirtualFromNativeIdentifier\\(native\\_in, is\\_virtual\\_in\\)**\n\n</td></tr></tbody>\n</table>Tests native indicator against a list of common values and looks for a ‘true’ boolean indicator.\n\n|Native Virtual Value|Virtual Flag|Virtual Flag Results|\n|--------------------|------------|--------------------|\n|virtual|false|true|\n|virtual| |true|\n|virtual|true|true|\n|y|false|true|\n|y| |true|\n|y|true|true|\n|yes|false|true|\n|yes| |true|\n|yes|true|true|\n|true|false|true|\n|true| |true|\n|true|true|true|\n|t|false|true|\n|t| |true|\n|t|true|true|\n|other|false|false|\n|other| |false|\n|other|true|true|\n|not virtual|false|false|\n|not virtual| |false|\n|not virtual|true|true|\n| |false|false|\n| | |false|\n| |true|true|\n\n## Derive Virtual From Serial Number\n\nUse when processing a computer record that may be virtual, a serial number is provided by the source, and the virtual status is ambiguous. Can be used along with other Derive Virtual From transforms.\n\n<table id=\"table_qcc_341_nkb\"><thead><tr><th colspan=\"2\">\n\nDetails\n\n</th></tr></thead><tbody><tr><td>\n\nTable\n\n</td><td>\n\nsn\\_cmdb\\_int\\_util\\_derive\\_virtual\\_from\\_serial\\_number\\_operation\n\n</td></tr><tr><td>\n\nInput fields\n\n</td><td>\n\n**source\\_sys\\_rte\\_eb\\_fields** Input in order is:\n\n1.  The serial number\n2.  The current virtual flag value\n\n</td></tr><tr><td>\n\nOutput field\n\n</td><td>\n\n**target\\_sys\\_rte\\_eb\\_field** Output is the resulting virtual flag \\(true/false\\). If the current virtual flag is ‘true’, the result is true. Otherwise the result is ‘true’ or ‘false’.\n\n</td></tr><tr><td>\n\nScript include function\n\n</td><td>\n\n**sn\\_cmdb\\_int\\_util.CmdbIntegrationVirtualDetectionUtil\\(\\).detectVirtualFromSerialNumber \\(serial\\_in, is\\_virtual\\_in\\)**\n\n</td></tr></tbody>\n</table>Looks for indicators in the serial number for a virtual device \\(VMware\\).\n\n|Serial Number|Virtual Flag|Virtual Flag Results|\n|-------------|------------|--------------------|\n|123|true|true|\n|123|false|false|\n|123| |false|\n|vmware-123|true|true|\n| |true|true|\n| |false|false|\n| | |false|\n\n## Extract and Scale by Units\n\nUse when the source has numerical values that need to be scaled and numerical value with an input such as 2048Mb. The source does not always provide the units so it may be required to calculate or guess the units being provided. The target units depend on the target field in the CMDB. If not specified, the decimal place field is set at 2 by default.\n\n**Note:** This field is case sensitive.\n\n|Details| |\n|-------|---|\n|Table|sn\\_cmdb\\_int\\_util\\_extract\\_and\\_scale\\_by\\_units\\_operation|\n|Input fields|**source\\_sys\\_rte\\_eb\\_fields**|\n|Output field|**target\\_sys\\_rte\\_eb\\_field**|\n|Script include function|**sn\\_cmdb\\_int\\_util.CmdbIntegrationExtractScaleUnitUtil\\(\\).extractAndScaleUnits\\(input,defaultUnit,outputUnit,decimalPlaces\\)**|\n\n|Input Value|Default Unit|Output Unit|Result|\n|-----------|------------|-----------|------|\n|2048Mb|Mb|GB|2GB|\n|17179869184|B|GB|16GB|\n\n## First Non Null Value\n\nUse when you have a list of fields providing similar information that must map to a single field and you want to rank the order in which they can provide those values.\n\nFor Example Internally in SolarWinds, there is a hierarchy of tables that are join. In one example, a computer’s name could come from the child most table or any of that tables parents but each of those is a separate field in the pull. Starting with the most specific table, the values are searched for the first instance of a name value.\n\n<table id=\"table_hpc_341_nkb\"><thead><tr><th colspan=\"2\">\n\nDetails\n\n</th></tr></thead><tbody><tr><td>\n\nTable\n\n</td><td>\n\nsn\\_cmdb\\_int\\_util\\_first\\_non\\_null\\_operation\n\n</td></tr><tr><td>\n\nInput fields\n\n</td><td>\n\n**source\\_sys\\_rte\\_eb\\_fields** Input is a list of fields of any length.\n\n</td></tr><tr><td>\n\nOutput field\n\n</td><td>\n\n**target\\_sys\\_rte\\_eb\\_field** Output is the value from the first field in the list that doesn’t have a null \\(or empty\\) value.\n\n</td></tr><tr><td>\n\nScript include function\n\n</td><td>\n\n**sn\\_cmdb\\_int\\_util.CmdbIntegrationFirstNonNullValueUtil\\(\\).firstNonNullValue\\(batch\\[i\\]\\)**\n\n</td></tr></tbody>\n</table>|Field 1|Field 2|Field 3|Result|\n|-------|-------|-------|------|\n| |foo|foo2|foo|\n\n## Process Name, Domain, FQDN, DNS set\n\nUse when the source provides name, domain, FQDN, or DNS information. Can be used for only a subset of these \\(if for example, the source only provides name and domain\\). In the case that a source only provides fields that are lower in the input list \\(FQDN\\) the CmdbIntegrationHardwareNameUtil script include can be called from a script operation to minimize having to create empty dummy fields.\n\n<table id=\"table_p2d_341_nkb\"><thead><tr><th colspan=\"2\">\n\nDetails\n\n</th></tr></thead><tbody><tr><td>\n\nTable\n\n</td><td>\n\nsn\\_cmdb\\_int\\_util\\_process\\_name\\_set\\_operation\n\n</td></tr><tr><td>\n\nInput fields\n\n</td><td>\n\n**source\\_sys\\_rte\\_eb\\_fields** Takes up to four Input fieldss \\(any additional fields are ignored\\), in the following order:\n\n1.  Name\n2.  Domain\n3.  FQDN\n4.  DNS\n\n You don't have to provide all four input values, but you must provide those values in the specified order. If for example, you only want to cleanse domain, you must provide a name attribute, even it if empty.\n\n</td></tr><tr><td>\n\nOutput field\n\n</td><td>\n\n**target\\_sys\\_rte\\_eb\\_field** Output is a concatenated set of values in the same order, using a triple pipe \\(\\|\\|\\|\\): \\{name\\}\\|\\|\\|\\{domain\\}\\|\\|\\|\\{fqdn\\}\\|\\|\\|\\{dns\\}\n\n</td></tr><tr><td>\n\nScript include function\n\n</td><td>\n\n**sn\\_cmdb\\_int\\_util.CmdbIntegrationHardwareNameUtil\\(\\).processNameDomainFqdnDnsSet\\(name, domain, fqdn, dns\\)**\n\n</td></tr></tbody>\n</table>FQDN and DNS are first processed to see if their formats are correct. FQDN has an additional discovery regex it must pass \\(via properties\\): `glide.discovery.fqdn.regex – default : ^([^.]+)\\\\.((?:[^.]+\\\\.)+[^.]+)$`\n\nPossible name and domain values are extracted if possible. When name and domain are processed, if there is no FQDN, a value is generated if possible. A resulting name value is also modified using the following discovery flags:\n\n1.  glide.discovery.hostname.case – default: No change. Can be set to ‘Lower case’, ‘Upper case’, ‘No change’\n2.  glide.discovery.hostname.include\\_domain – default: false. If ‘true’ the domain is added to the final name value\n\n|Name|Domain|FQDN|DNS|Results|\n|----|------|----|---|-------|\n|myName|other.net|otherName.other.net|mycomp.servicenow.com|myName\\|\\|\\|other.net\\|\\|\\|otherName.other.net\\|\\|\\|mycomp.servicenow.com|\n|na|other.net|otherName.other.net|mycomp.servicenow.com|otherName\\|\\|\\|other.net\\|\\|\\|otherName.other.net\\|\\|\\|mycomp.servicenow.com|\n| | | |servicenow.com|\\|\\|\\|servicenow.com\\|\\|\\|\\|\\|\\||\n| | | |name.servicenow.com|name\\|\\|\\|servicenow.com\\|\\|\\|name.servicenow.com\\|\\|\\|name.servicenow.com|\n| | |name.servicenow.com| |name\\|\\|\\|servicenow.com\\|\\|\\|name.servicenow.com\\|\\|\\||\n| | |name.servicenow.com| |name\\|\\|\\|servicenow.com\\|\\|\\|name.servicenow.com\\|\\|\\||\n|name|servicenow.com| | |name\\|\\|\\|servicenow.com\\|\\|\\|name.servicenow.com\\|\\|\\||\n\n## Process FQDN\n\nUse when the source provides a suspected FQDN value but no other naming fields such as name, domain, or DNS.\n\n<table id=\"table_yd4_vvk_4kb\"><thead><tr><th colspan=\"2\">\n\nDetails\n\n</th></tr></thead><tbody><tr><td>\n\nTable\n\n</td><td>\n\nsn\\_cmdb\\_int\\_util\\_process\\_fqdn\\_operation\n\n</td></tr><tr><td>\n\nInput fields\n\n</td><td>\n\n**source\\_sys\\_rte\\_eb\\_field** Input is a single field containing an FQDN.\n\n</td></tr><tr><td>\n\nOutput field\n\n</td><td>\n\n**target\\_sys\\_rte\\_eb\\_field** Output is a concatenated set of values in the same order using a triple pipe \\(\\|\\|\\|\\): \\{name\\}\\|\\|\\|\\{domain\\}\\|\\|\\|\\{fqdn\\}\\|\\|\\|\\{dns\\}\n\n</td></tr><tr><td>\n\nScript include function\n\n</td><td>\n\n**sn\\_cmdb\\_int\\_util.CmdbIntegrationHardwareNameUtil\\(\\).processNameDomainFqdnDnsSet\\('’, '’, fqdn, '’\\)**\n\n</td></tr></tbody>\n</table>The processing follows the same logic as the ‘Process Name, Domain, FQDN, DNS set’ transform except that only FQDN is used as an input.\n\n|Input|Result|\n|-----|------|\n|mycomputer.servicenow.com|mycomputer\\|\\|\\|servicenow.com\\|\\|\\|mycomputer.servicenow.com\\|\\|\\||\n\n## Scale Unit\n\nUse when the source has numerical inputs that must be scaled. The source does not always provide the current units so it may be required to calculate or guess the units being provided. The target units depend on the field being targeted in the CMDB.\n\n<table id=\"table_p5d_341_nkb\"><thead><tr><th colspan=\"2\">\n\nDetails\n\n</th></tr></thead><tbody><tr><td>\n\nTable\n\n</td><td>\n\nsn\\_cmdb\\_int\\_util\\_scale\\_unit\\_operation\n\n</td></tr><tr><td>\n\nInput fields\n\n</td><td>\n\n**source\\_sys\\_rte\\_eb\\_fields** Inputs in order are:\n\n1.  The input value\n2.  The current units\n3.  The target units\n\n</td></tr><tr><td>\n\nOutput field\n\n</td><td>\n\n**target\\_sys\\_rte\\_eb\\_field** Output is the input value scaled from the current units to the target units. If no units are found for the current units, then the input value is returned. If no current or target units are found the input is returned as the output.\n\n</td></tr><tr><td>\n\nScript include function\n\n</td><td>\n\n**sn\\_cmdb\\_int\\_util.CmdbIntegrationScaleUnitUtil\\(\\).scaleUnits\\(input\\_value, input\\_unit, output\\_unit\\)**\n\n</td></tr></tbody>\n</table><table id=\"table_wnt_by1_bmb\"><thead><tr><th>\n\nInput\n\n</th><th>\n\nResult\n\n</th></tr></thead><tbody><tr><td>\n\n-   Input Field 1: 1\n-   Input Field 2: GB\n-   Input Field 3: MB\n\n</td><td>\n\n1024\n\n</td></tr></tbody>\n</table>## Software Bundle ID Lookup\n\nUse when a source, such as Jamf, does not provide the software publisher but does provide a Mac software bundle ID. Software Bundle ID Lookup looks up records in the Bundleid Lookup \\[sn-cmdb\\_int\\_util\\_bundleid\\_lookup\\] table by bundle\\_id. If a record with the specified bundle\\_id exists, it extracts the respective software publisher. Otherwise, it creates a new record which will be queried the next time the Lookup Mac Software Bundle IDs data source runs.\n\n<table id=\"table_gwq_yzw_kqb\"><thead><tr><th colspan=\"2\">\n\nDetails\n\n</th></tr></thead><tbody><tr><td>\n\nTable\n\n</td><td>\n\nsn\\_cmdb\\_int\\_util\\_software\\_bundle\\_id\\_lookup\\_operation\n\n</td></tr><tr><td>\n\nInput fields\n\n</td><td>\n\n-   source\\_sys\\_rte\\_eb\\_field\n-   Bundle ID\n\n</td></tr><tr><td>\n\nOutput field\n\n</td><td>\n\n**target\\_sys\\_rte\\_eb\\_field** Output is the resulting artist name, track name, and seller name, all concatenated by a triple pipe \\(\\|\\|\\|\\), or an empty string if no match is found.\n\n</td></tr><tr><td>\n\nScript include function\n\n</td><td>\n\n**sn\\_cmdb\\_int\\_util.CmdbIntegrationSoftwareBundleIdLookup. lookupSoftware\\(bundleId\\)**\n\n</td></tr></tbody>\n</table>|Input|Result|\n|-----|------|\n|Input Field 1: com.microsoft.Word|Microsoft Corporation\\|\\|\\|Microsoft Word\\|\\|\\| Microsoft Corporation|\n\n## User Lookup\n\nUse to look up a user in the User \\[sys\\_user\\] table by user name or email, attempting to match in the following order:\n\n1.  The User Name matching the **user\\_name** attribute.\n2.  The Email matching the email attribute.\n3.  If nothing is matching, it returns empty.\n\n<table id=\"table_ksx_t2x_kqb\"><thead><tr><th colspan=\"2\">\n\nDetails\n\n</th></tr></thead><tbody><tr><td>\n\nTable\n\n</td><td>\n\nsn\\_cmdb\\_int\\_util\\_user\\_lookup\\_operation\n\n</td></tr><tr><td>\n\nInput fields\n\n</td><td>\n\n**source\\_sys\\_rte\\_eb\\_fields** Inputs in order are:\n\n1.  User Name\n2.  Email \\(Optional\\)\n\n</td></tr><tr><td>\n\nOutput field\n\n</td><td>\n\n**target\\_sys\\_rte\\_eb\\_field** sysId of the sys\\_user.\n\n</td></tr><tr><td>\n\nScript include function\n\n</td><td>\n\n**sn\\_cmdb\\_int\\_util.CmdbIntegrationUserLookup. lookupUser\\(username, email\\)**\n\n</td></tr></tbody>\n</table><table id=\"table_lsx_t2x_kqb\"><thead><tr><th>\n\nInput\n\n</th><th>\n\nResult\n\n</th></tr></thead><tbody><tr><td>\n\nInput Field 1: abel.tuter\n\n</td><td>\n\n62826bf03710200044e0bfc8bcbe5df1\n\n</td></tr><tr><td>\n\n-   Input Field 1: atuter\n-   Input Field 2: abel.tuter@example.com\n\n</td><td>\n\n62826bf03710200044e0bfc8bcbe5df1\n\n</td></tr></tbody>\n</table>"}}