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.
What is an extension?
Section titled “What is an extension?”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
SchemaNamevalue used by templates, or anOwningTeamtag for documentation. - Data Items — for example, a
MaskingRulefor a sensitive column, or aSourceColumnNamemapping 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.
Why extensions matter
Section titled “Why extensions matter”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_lookupextensionto 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_existsto 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.
Common patterns
Section titled “Common patterns”- Environment-specific values —
EnvironmentName,DeploymentSchemaper object. - Operational metadata —
OwningTeam,OnCallChannel,RefreshFrequency. - Template hints — Flags that templates check to enable/disable optional output sections (for example, a
HasControlFrameworkflag — seehas-control-framework). - Source-mapping aids —
OriginalColumnName,SourceQuerynotes.
Working with extensions in ADL
Section titled “Working with extensions in ADL”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.
What’s next?
Section titled “What’s next?”- Handlebars Helpers —
extension_existsandextension_lookupextensionare the two helpers most commonly used with extensions. - Data Objects — Where you attach extensions to objects and columns.
- Templates & Code Generation — How templates consume metadata, including extensions.