getAbsoluteBase() method is a liar

Slava Savitsky
Giga Sage

If you look at the table definition of the [cmdb_ci] table in Geneva or Helsinki, it appears to be an extension of the [cmdb] table. However, TableUtils seem to have a different view on this matter or rather some doubts about the relationship between the two tables. Let's have a look at the following example:

var computer = new TableUtils('cmdb_ci_computer');

computer.getTables();               // [cmdb_ci_computer, cmdb_ci_hardware, cmdb_ci, cmdb] - OK

computer.getAbsoluteBase();   // cmdb_ci - ???

Any ideas why getAbsoluteBase is so unwilling to acknowledge something so obvious?

1 ACCEPTED SOLUTION

Slava Savitsky
Giga Sage

The official answer from ServiceNow Technical Support in INT3812444 was that this was by design and served backward compatibility after cmdb_ci had been reparented to cmdb. ServiceNow Product Documentation has been updated to reflect this peculiarity.

View solution in original post

7 REPLIES 7

Michael Ritchie
ServiceNow Employee
ServiceNow Employee

getAbsoluteBase is a legacy API that is maintained for backwards compatibility.   Starting with Fuji sys_metadata was put in place for the update-synch tables with the update set changes made there and it doesn't need to be exposed since again it is for update set functionality.   The cmdb table is just an extension of the sys_metadata table and the getAbsoluteBase API call hides the sys_metadata table.


Even if it off topic, why was the cmdb table introduced? Just for meta data?



I am not much experienced in CMDB but this was something that our CmdB team was looking for.


I don't know for sure but documentation states the cmdb table is "the core CMDB table for non IT CIs".   I believe as non-IT applications like Facilities, Field Service, etc that also depend on the CMDB were added this table was necessary since cmdb_ci was historically very IT centric.   The cmdb table now contains the non-IT attributes that cmdb_ci once had and now cmdb_ci contains all the IT specific fields.



But again the getAbsoluteBase() method is a legacy API that is called by lots of code where introducing this additional layer would have broken things so the code is filtering out cmdb and stopping at cmdb_ci.


Hi Michael,


Thanks for your reponse. What would you suggest using instead of getAbsoluteBase then? For scoped apps there is the GlideTableHierarchy API but what about the global scope?