Unable to create records using Basic Class Reference Source as Identification Attribute with ETL

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-02-2024 09:28 AM - edited ‎04-02-2024 10:51 AM
My organization is starting up CMDB and IT Asset Management, so we're looking into using IntegrationHub ETL to start pulling in data from our various data sources. As a proof of concept I'm trying to load Computers [cmdb_ci_comptuer] along with their Hardware Models [cmdb_hardware_product_model] and Manufacturers [core_company], but I'm running into issues loading the Models and Manufacturers. It looks like when I have a field that's used for identification mapped as a "Basic Class" Reference Source, I start getting MISSING_MATCHING_ATTRIBUTES errors.
For setup, I've added cmdb_hardware_product_model and core_company to the glide.identification_engine.non_cmdb_tables system property so that I can add them as classes in ETL, and set the following identification rules:
Company:
Search on Table
Company
Priority
100
Attributes (1)
Name
Hardware Model:
Search on Table
Hardware Model
Priority
100
Attributes (2)
Manufacturer, Name
 
I added classes in ETL for Manufacturer Company and Hardware Model with minimal mapping.
Manufacturer Company (core_company):
Source Native Key: u_computermanufacturer
Name: u_computermanufacturer
Hardware Model (cmdb_hardware_product_model):
Source Native Key: concatenated u_computermanufacturer and u_computermodel
Name: u_computermodel
Manufacturer: (Basic Class) Manufacturer Company
 
However, when I run a test import, I'm getting MISSING_MATCHING_ATTRIBUTES errors for cmdb_hardware_product_model:
Identification Reconciliation Engine(IRE) detailed summary:
{
"cmdb_hardware_product_model": {
"warnings": [
{
"error": "MISSING_MATCHING_ATTRIBUTES",
"message": "In payload missing minimum set of input values for criterion (matching) attributes from identify rule for table [cmdb_hardware_product_model]. Add these input values in payload item '{\"className\":\"cmdb_hardware_product_model\",\"values\":{\"name\":\"ASUS EXPERTBOOK P2451FA_P2451FA\"},\"internal_id\":\"b6caa8ca72d14e9073f87ffcdec22ad1\",\"sys_object_source_info\":{\"source_feed\":\"AllSight\",\"source_name\":\"AllSight\",\"source_native_key\":\"ASUSTeK Computer Inc.|ASUS EXPERTBOOK P2451FA_P2451FA\"},\"settings\":{\"updateWithoutDowngrade\":\"true\"},\"sys_ire_info\":{},\"display_values\":{}}'"
}
],
"errors": [],
"addtionalInsertedSysIds": [],
"insertedSysIds": [],
"partialSysIds": [
"72caa8ca87d14e90af957488cebb35da"
],
"incompleteSysIds": [],
"unchangedSysIds": [],
"mergedPartialSysIds": [],
"updatedSysIds": []
},
"core_company": {
"warnings": [],
"errors": [],
"addtionalInsertedSysIds": [],
"insertedSysIds": [],
"partialSysIds": [],
"incompleteSysIds": [],
"unchangedSysIds": [
"35839e391bd18614217ca9bfbd4bcb67"
],
"mergedPartialSysIds": [],
"updatedSysIds": []
}
}
If I update the Identification Rule for Hardware Model to ONLY use name then the test import runs successfully and the Manufacturer field populates correctly, so it's not an issue of the 'Manufacturer Company' not being valid. I have a sample file I'm trying to import (modelImportTest.csv), with one of the key goals being that if two records have the same model name but a different manufacturer, two Hardware Models are created.
The data for companies/models isn't terribly complicated so I could probably get away with importing company/model with a basic transform with some scripting and just using ETL for the actual computers and other CIs, but I'm worried about running into a similar issue once our CMDB gets more complex.
Is there a known limitation in using Basic Class/Conditional Class as Reference Source for fields that are used for Identification for Robust Transforms? Or is there some other way I should be importing this data using ETL/Robust Transforms?