CMDB - Dependendent Relationships Override - not working as expected
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-23-2024 01:27 AM
Hi Community,
I´m working on several ETLs to populate Databases data into CMDB. In this case I´m trying to create the next structure:
cmdb_ci_mssql_instance ==> Runs on ==> cmdb_ci_win_server
cmdb_ci_mssql_instance ==> Contains ==> cmdb_ci_mssql_database
As I can see is the needed dependent relationships for these Database classes:
MSSQL Instance (cmdb_ci_mssql_instance) ==> runs on ==> hardware (in my case cmdb_ci_server)
MSSQL Database (cmdb_ci_mssql_database) <== contains <== MSSQL Instance:
Wich is the rules that override the parent class dependency relationship (cmdb_ci_appl ==> runs on ==> cmdb_ci_hardware).
When I try to import data with an Integration Hub ETL, I cannot import MSSQL Database data due to the error:
"In payload no relations defined for dependent class [cmdb_ci_db_mssql_database] that matches any containment/hosting rules: [cmdb_ci_appl >> Runs on >> cmdb_ci_hardware]."
When importing data, I have the next classes:
(As it can be seen on the above capture, cmdb_ci_mssql_database is dependent on cmdb_ci_mssql_instance)
And Relationships:
So from my concern, are the needed Dependant rules for this structure.
I can only import data if I add the next relationship:
cmdb_ci_mssql_database ==> Runs on ==> cmdb_ci_win_server
wich satisfy the parent dependent rule cmdb_ci_appl ==> Runs On ==> cmdb_ci_hardware.
Why I need to add this dependent relationship if the cmdb_ci_mssql_database has his own dependent rule?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
3 weeks ago
Facing the same issue , were you able to solve this ?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
3 weeks ago
This trips a lot of people up and you’re not doing anything “wrong.”
What’s happening is that ETL validation checks the parent class rules first, not just the child’s specific ones. Even though cmdb_ci_mssql_database is correctly contained by the MSSQL instance, it still inherits the higher-level expectation that applications run on hardware. When the ETL can’t see a hosting path that satisfies that rule, it throws the error.
That’s why adding MSSQL Database → Runs on → Windows Server works it satisfies the inherited rule the ETL is validating against. If your model is “database → instance → server,” you need to make sure the ETL payload clearly provides that full hosting chain, or adjust the containment/hosting rules so the database is only validated through the instance ok.
I hope this helps Thumbs up if you find useful!
