# Export and import an app (/docs/analytical-apps/export-import)



An analytical app can be downloaded as a single **bundle file** and imported into
another workspace. Use it to move an app between workspaces, to hand a working
setup to a colleague, or to keep an offline copy of a configuration you are happy
with.

The bundle carries the app's **configuration**, not its data. That distinction is
the thing worth understanding before you use it, so it is spelled out below.

## Exporting [#exporting]

Open the app and choose **Export app** ("Download this app as a portable bundle").
A dialog asks what to call the file before it is written, filled in with the app's
technical id and today's date. The name is yours to change; the `.app-bundle.json`
ending is fixed, so a renamed bundle still imports.

Export always takes a **published version**. If the app has never been published
there is nothing to export yet - publish it first. Any edits sitting in an open
draft are not included; what you get is the last published state, so a bundle is
always a coherent, complete configuration rather than a half-finished edit.

Exporting requires the **App builder** or **Admin** role on the app.

## What travels in the bundle [#what-travels-in-the-bundle]

* **The app itself** - name, description, icon, and technical id.
* **The whole pipeline** - every node with its full configuration: dataset nodes
  and their column definitions, SQL transforms with their queries, indicator-data
  bridges, and analytic-data imports.
* **The Visualisation canvas** - the pages and every widget on them.
* **The knowledge base** - the folder tree and the content of every page.
* **The app's [skills](./skills.mdx)** - each skill's name, description, declared
  inputs, whether it is offered over MCP, and its full instruction text.

## What does not [#what-does-not]

* **Your data.** No dataset rows, no uploaded files, no indicator values. The
  imported app arrives with its structure in place and its inputs empty, ready for
  you to upload or connect the data on the new side.
* **History.** Versions, pipeline runs and the audit trail stay with the original
  app. The imported app starts a fresh history of its own.
* **Anything workspace-specific.** Members, permissions and AI privileges belong to
  the workspace, not the app.

## Importing [#importing]

On the **Apps** page, choose the import button (**Import an app file**) at the top right, or the
one on the header of the space the app should go into (or **Import app** on the welcome screen of
a workspace with no apps yet), and pick a bundle file; from the top right, Ovidens asks which
space the app goes into when you may import into more than one. The app is created in that space with the
configuration from the bundle, and you land on it ready to add data.

A few things to expect:

* The app keeps the **technical id** from the bundle. If an app with that id already
  exists in this workspace the import is refused rather than overwriting anything -
  rename or remove the existing app first, or export from a differently-named one.
* The import counts against your workspace's **app limit**, exactly like creating an
  app by hand.
* A file that is not a valid bundle is rejected with a clear message and nothing is
  created.
* Every import node in the file (analytic-app-data or indicator-data) must name an app
  of this workspace whose data you can read, and not one in a personal space. If one
  does not, the import is refused, naming those nodes, and nothing is created: remove
  them from the file, or ask for access to the apps they read from first. See
  [who can change an app that imports another app](./pipeline/analytic-data.mdx#who-can-change-an-app-that-imports-another-app).

Importing requires the **App builder** or **Admin** role on the workspace, or on the
team space new apps are filed into.

## What cannot be exported [#what-cannot-be-exported]

The **Audit Analytics** app is not exportable. It is system-managed, its sources are
reserved for the workspace's own audit archive, and every workspace already has one -
there is nothing portable about it. See [Audits](../administration/audit-trail.mdx).

## A note on moving between workspaces [#a-note-on-moving-between-workspaces]

Because data does not travel, moving an app is a two-step job: import the bundle to
get the structure, then load the data on the new side the same way you would for a
new app - upload files into the dataset nodes, or point the indicator-data and
analytic-data nodes at the apps they should read from in this workspace. Those
connections refer to other apps **by their technical id**, so if the app you are
importing reads from another app, that one needs to exist here, and be readable by you,
before the import is accepted: import it first, under the same technical id.
