Skip to content

Extensions

extension The core metadata schema in ADL covers what every data solution has — connections, objects, columns, mappings, classifications, relationships. But every project has its own quirks. You might need to record a deployment flag, a downstream owner, a refresh cadence, or a feature toggle for a template. Extensions are how you attach that custom information without forking the schema.

An extension is a key-value pair attached to a metadata entity. The key is a name you choose; the value is a string. Extensions can be added to:

  • Data Objects — for example, a SchemaName value used by templates, or an OwningTeam tag for documentation.
  • Data Items — for example, a MaskingRule for a sensitive column, or a SourceColumnName mapping aid.

The schema doesn’t constrain what extensions you create or how many — that’s deliberate. Extensions are the open-ended slot in the metadata model.

The point of extensions is to keep your project’s specific needs in the metadata, where templates can act on them.

  • Templates can read them. A Handlebars template can call extension_lookupextension to fetch a value and use it in generated output — different schema names per environment, different deployment flags per table, custom comment text, anything.
  • Templates can branch on them. Use extension_exists to generate one thing when an extension is present and something else when it isn’t.
  • They’re plain JSON. Extensions are stored alongside the rest of the metadata in your project files, so they’re versioned, diffable, and editable outside the app if you need to.
  • Environment-specific valuesEnvironmentName, DeploymentSchema per object.
  • Operational metadataOwningTeam, OnCallChannel, RefreshFrequency.
  • Template hints — Flags that templates check to enable/disable optional output sections (for example, a HasControlFramework flag — see has-control-framework).
  • Source-mapping aidsOriginalColumnName, SourceQuery notes.

You manage extensions inline on the Data Objects screen. Each Data Object and Data Item has an extensions panel where you can:

  • Add a new extension with a key and value.
  • Edit or remove existing extensions.
  • See all extensions on the entity at a glance.

For more complex cases, the full extension editor lets you manage many extensions at once.