Skip to main content
Copies views, topics, relationships, access grants, and other configuration from one or more base (shared) models into the current model. This creates a hub-and-spoke model architecture. Shared logic stays in one or more hub models. Each spoke model extends a hub model to reuse that logic. A spoke model can use a different connection than its hub model. This parameter is paired with template. Set template: true on a hub model to mark the hub model as abstract, as an abstract model doesn’t need a live connection.

Syntax

Properties

string[]
One or more model names this model extends. <model_name> is the referenced model’s name as shown in the model IDE, not its internal ID. Model names referenced by extends should be unique within your organization.Views, topics, relationships, access grants, schema include/exclude lists, and other model-level configuration are inherited from the listed models.

Model inheritance and overrides

These rules control how Omni merges a base model into the current model:
  • The current model’s own definitions always win. If the current model and a base model define a view or topic with the same name, the current model’s version replaces the base model’s version. Omni does not merge the two versions field by field.
  • The current model inherits anything it does not define itself.
  • When extends lists more than one base model, list order sets priority. The first model in the list wins any conflict with a later model. For example, extends: [model_a, model_b] resolves model_b first, then layers model_a on top of it. If both models define the same item, model_a wins.
  • A model can extend a model that itself extends another model. Omni resolves each level in the chain before merging; if circular references are detected, Omni skips them.
  • A base model can use a different connection than the current model. If the base model references a schema that isn’t active on the current model’s connection, Omni activates that schema automatically. Omni does not activate offloaded schemas this way.
  • extends does not carry over from a base model. If a base model has its own extends list, the current model does not inherit that list. Set extends explicitly on each model that needs it.
  • extends does not include virtual schemas. Models using extends should define any virtual schemas that are used on the base model.
To inspect everything a model inherits through extends, switch to Fully Resolved browse mode on a branch. This mode shows the full resolved model, including all content inherited from base models.
If extends names a model that does not exist, Omni shows a validation warning but doesn’t block the model from saving. Correct the model name or remove the entry to resolve the error.

Examples

Basic inheritance

In this example, spoke_model inherits hub_model’s included_views. The extended model also inherits any topics defined in hub_model, as it doesn’t define any of its own topics.
spoke_model
hub_model

Override an inherited property

In this example, spoke_model_emea sets its own week_start_day to sunday, overriding the value set in hub_model.
spoke_model_emea
hub_model

Extend multiple base models

In this example, core_hub and regional_hub both define an orders view. In spoke_model_combined, the orders view in core_hub wins because core_hub is listed first in extends.
spoke_model_combined
core_hub
regional_hub