Steps to Reproduce
Activate CAB Workbench with demo data.
Confirm there is no mtg_meeting.sys_class_name field
Open a record that exists in both mtg_meeting and cab_meeting from each of the tables in two separate tabs.
Observe how the record is loaded as an mtg_meeting in one tab and as a cab_meeting record on the other.
Open the sys_db_object record for cab_meeting.
Make it extendable.
Create a new table, extending cab_meeting.
Observe sys_class_name field is added to cab_meeting instead of the base table of this hierarchy.
Open a change record related to a CAB meeting.
Observe the error "Error MessageSyntax Error or Access Rule Violation detected by database (Unknown column 'cab_meeting.sys_class_name' in 'field list')"
If no sys_class_name field exists on this hierarchy, it will need to be created on mtg_meeting table. The name of this field requires that it is created by ServiceNow Support.
Otherwise, if a sys_class_name field is on the hierarchy because a child table was made extendable, it can be promoted to the base table:
GlideDBUtil.promoteColumn(sourceTable, targetTable, column, promoteCheck) /*
Moves (promotes) a column from one table to another in the table hierarchy, optionally verifying the relationship between source and target tables. If the move is a promotion, this will move all columns from the child tables that have the same column name as the target column name. Otherwise, it will only move the column from the source table to the target table. * @param sourceTable (string) - The table currently containing the column to be promoted. * @param targetTable (string) - The table that will have the column after promotion. * @param column (string) - The column to be promoted. * @param promoteCheck (boolean) - This method should verify that the source table is a child of the target table.
Related Problem: PRB1269711