Export and Import a Model

What this covers
You can export any model as a single JSON file and import it into the same project, a different project in the same tenant, or a different tenant entirely. Connections never travel — credentials stay in the source database — so on import you pick local connections to rebind the model to. This article covers the export download, the import dialog, and how connections are remapped.
Opening the dialog
Both model export and import are accessed from a single Import / Export button (swap-arrows icon) in the project toolbar in the Explorer, or in the Model Builder toolbar. Clicking this button opens a dialog with two tabs: Import and Export.
Before you start
- To export, you need access to the source model.
- To import, you need access to the target project and at least one connection of each type referenced by the bundle (one Postgres connection per Postgres source, one BigQuery target per BigQuery target, etc.).
- Connections must already exist in the target project. If you do not have them, create them via Connections before importing.
Exporting a model
- Click the Import / Export button in the project toolbar (Explorer) or Model Builder toolbar.
- Switch to the Export tab.
- Select a format from the dropdown: Tessallite Model (.json), Tessallite YAML (.zip), or LookML (.zip).
- For Tessallite Model format, click the model you want to export from the list.
- Tessallite downloads a file named
{model_slug}.tessallite.jsonto your browser's download folder. - The file is a single JSON document containing every per-model row — tables, columns, joins, hierarchies, dimensions, measures, aggregates, refresh policies, AI scheduler config, model settings, and the canvas layout.
The file does not contain credentials, query history, miss logs, alerts, or anything stored at tenant, project, or system scope.
Importing a model
- Click the Import / Export button in the project toolbar (Explorer) or Model Builder toolbar.
- The dialog opens on the Import tab by default.
- Select a format from the dropdown: Tessallite Model (.json), Tessallite YAML (.zip), dbt (.yml / .zip), Cube (.yml / .zip), or AtScale SML (.zip).
- For Tessallite Model format, click Choose .tessallite.json file and pick the export file.
- The dialog reads the bundle and shows:
- The original model's slug and display name (you can override either).
- Every connection referenced by the bundle, with the source's display name and connection type.
- For each referenced connection, pick a local connection from the dropdown. Only connections of the matching type appear.
- Optionally tick Deploy immediately after import to save v1 and deploy in one click.
- Click Import. Tessallite creates a new model in the target project, rewrites every internal UUID, rebinds the connections, and (if you ticked Deploy) saves and deploys v1.
- The Explorer navigates to the new model.
If the source slug already exists in the target project, Tessallite auto-suffixes (sales, sales-2, sales-3).
What is and is not in an export
| In the export | Not in the export |
|---|---|
| Tables, columns, joins, hierarchies, UDAs | Connection credentials |
| Dimensions, measures | Source data, target data |
| Aggregate definitions and refresh policies | Query logs, miss logs, alerts |
| Per-model AI scheduler config and model settings | System / tenant / project settings |
| Canvas layout (table positions, viewport) | Deployed-version pointer (the import always starts undeployed) |
Tips
- Export is the supported way to move a model between environments (dev → staging → prod). The bundle is stable JSON, safe to commit to git.
- Connection rebinding is mandatory. The importer refuses to proceed if any source or target has no mapping.
- Re-imports do not merge — every import creates a brand-new model with a fresh slug and fresh internal UUIDs.