Docs/Infohub (Flow)/Importing and Exporting Models
Infohub (Flow)How-to

Importing and Exporting Models

Moving model content between instances with .flowMdl files — what travels, what does not, and how mapping works.

Updated 15 Oct 2026Infohub Docs

Infohub can export part or all of a model to a file and import it into another instance. This is how models move from development to production, how demonstration content is distributed, and how a pattern built at one site is reused at another.

The file#

An exported model is a .flowMdl file. It is a structured description of the entities you selected — folders, metrics, measures, event schemes, charts, dashboards, and the supporting objects they depend on.

An export is a description, not a database backup. It carries configuration, not calculated values.

What travels and what does not#

An export carries 35 collections. This is the complete list, read from the export model at release/7.2.0:

Area Travels
Model Metric folders, metrics, measures, dependant measures, model attributes
Events Event schemes, dependant event schemes
Reports Report folders, charts, dashboards, dashboard loops, forms, form folders
Toolbox Time schemes, shifts, shift schemes, limits, enumerations, enumeration groups, functions, palettes
Deployment Engines, integration engines, connections, consumers, locations, template servers
Plugin registry Packages, and the chart, chart component, chart item, connection, consumer and limit types
Access Group names
Does not travel
Calculated and retrieved values
Connection configuration, credentials included
Licences
Log history
User accounts and group membership

Four points that are easy to get wrong:

No values. Importing a model gives you the structure, and the engine calculates forward from the point it is deployed. History is not transferred. If you need history, that is a database restore, not an import.

Connections arrive empty, not merely without a password. The exported connection carries only its name, type, template link and locks — no properties at all. Server, port, database, timeouts and credentials are all absent, because those settings are held against the connection rather than inside the exported object. Plan on configuring every imported connection from scratch and re-testing it, rather than filling in one password field.

Deployment objects do travel. Engines, integration engines, consumers, locations and template server registrations are all part of a model import, and the import runs those steps unconditionally. An import is therefore not a purely model-shaped operation — it can add engines to the destination. Review the deployment tree after importing into an instance that already has one, as described in The Deployment View.

Group names travel; people do not. The export carries each group's id and name and nothing else — no accounts, no membership. That is what lets folder permissions reattach at the destination, because restriction is decided by group assignment on a metric folder (see Object Operations in Flow Config). After importing, those groups exist but are empty, so every secured folder is closed to everyone except administrators until you populate them — see Users, Groups and Access.

Scope: export what you need, not everything#

You can export at several scopes — the whole model, a folder subtree, a set of charts, a dashboard.

Narrow scope is usually better. It transfers faster, is easier to review, and produces far fewer mapping decisions on import.

Important

Scope has consequences on import. Import behaviour depends on the scope of what you exported. An export scoped to charts or dashboards is treated as a chart import on the way in, which affects how references are resolved. If an import behaves unexpectedly — particularly charts arriving without their content — check what scope the export was actually taken at.

Dependencies come along#

An export includes what the selected entities need in order to make sense. Export a calculated measure and the measures it depends on are included; export a chart and the measures it displays come too.

This is helpful and occasionally surprising: a narrowly scoped export can pull in a great deal more than you selected, because something in it referenced a measure elsewhere in the tree. Review the contents of an export before relying on its size.

Importing and mapping#

Importing is not a blind copy. The destination already has its own entities, its own IDs, and possibly its own version of the thing you are importing. Infohub resolves this by mapping.

Import operations fall into a few kinds:

Operation What it does
Import Bring the content in as new content
Update Match incoming entities to existing ones and update them
Instantiate Create instances from templates in the file
Link Attach existing local entities to a template
Create Template Bring content in as template definitions

Matching works by identity first, then by name within the containing entity. That has a practical implication worth knowing: names matter on import. Two entities with the same name in the same container are ambiguous, and ambiguity is where imports produce copies instead of updates.

Tip

Import into an empty area first when unsure. If you are not certain how an import will resolve, import into a new, empty folder on a test instance and inspect the result. It costs five minutes and avoids discovering the mapping behaviour on a production model.

Connections need attention on the way in#

Because credentials do not travel, and because the destination's connections are its own, the reliable sequence is:

  1. Create the connections you need in the destination before importing, named exactly as they are in the source.
  2. Import the model.
  3. Confirm each measure resolved to the intended connection.
  4. Complete credentials and test each connection.
  5. Deploy.

Getting the connection names to match beforehand removes most of the mapping work.

Plugin versions matter#

Connections and consumers are plugins, and their properties are defined by the plugin. If the destination has older plugin assemblies than the source, properties the older plugin does not understand can be lost on the way in — silently.

This shows up as a connection that imported "successfully" but has an empty query or a missing property that the source definitely had.

Important

Match plugin versions before moving models between instances. Confirm the destination's packages under %ProgramData%\Flow Software\Flow\Config\Packages are at least as new as the source's. This is the most common cause of configuration quietly disappearing during a transfer, and it is easy to prevent and awkward to diagnose.

Common uses#

Development to production. Build and test on a development instance, export the finished subtree, import to production, complete connections, deploy.

Reusing a pattern across sites. Export an area that works well, import at another site, adjust attributes and tags. For repeated ongoing reuse, template servers are a better answer than repeated file transfer, because they keep the link.

Distributing demonstration or training content. A self-contained model built against the simulator imports anywhere and needs no external systems.

Backing up a subtree before restructuring. An export before a large change gives you something concrete to compare against, and to restore from if the change goes badly.

Import or template server?#

Both share content between instances. They differ in what happens next.

An import is a one-time copy. After import, the destination content is independent. Improvements to the source do not reach it.

A template server keeps the link. Instances derived from a remote template know where they came from and can be updated when the template changes.

If content will only ever be transferred once, import is simpler. If it is a pattern that will be maintained centrally and rolled out repeatedly, a template server is what you want.

Scripting it#

Both operations are available from the CLI, which makes environment promotion repeatable:

"Flow Config.exe" --host <server> --database <db> --export-model --export-file model.flowMdl [scope options]
"Flow Config.exe" --host <server> --database <db> --import --file model.flowMdl

Scripting is worth it for anything done more than twice. It also gives you a reviewable record of exactly what was promoted, which a series of clicks does not.

Note

Not every file with a package extension is importable. Some files shipped alongside Infohub are build output rather than model content, and --import will refuse them if they do not carry the version information it requires. If an import is rejected outright, confirm you are importing a model export rather than a product package.

After importing#

  1. Check the tree looks the way you expected — no duplicated folders, no unexpected Copy entities.
  2. Verify a sample of measures: correct connection, correct tag, correct interval, correct aggregation.
  3. Check calculated measures compile and their dependencies resolved.
  4. Check model attributes arrived and are set at the right levels.
  5. Complete and test connections.
  6. Deploy, then confirm values arrive.

Step 2 is the one people skip. An import that resolved a measure to the wrong connection will look entirely normal until someone notices the numbers describe a different machine.

esc
↑↓ navigate · ↵ open · ⌘K anywhere