Docs/Infohub (Flow)/Your First Model in 45 Minutes
Infohub (Flow)How-to

Your First Model in 45 Minutes

Build a working model end to end against the built-in simulator — connection, measures, aggregation chain, chart, dashboard, deploy.

Updated 15 Oct 2026Infohub Docs

This walkthrough builds a small but genuinely complete Infohub model: a connection, a retrieved measure, an aggregation chain, a totaliser handled correctly, a calculation, a chart, and a dashboard — then deploys it and watches values arrive.

It uses the Flow Historian Simulator, which ships with Infohub and needs no external system, so you can follow it on a fresh installation with nothing else configured.

Note

What you need. A Flow 7.2.0 instance you can edit, with Flow Config open and connected to its database, and the Flow Bootstrap service running. Nothing else.

1. Create the connection#

In the Data Sources view, create a new connection of type Flow Historian Simulator.

Name it Simulator. The simulator reads its tag definitions from the file installed at %ProgramData%\Flow Software\Flow\Config\Simulator, so the defaults are correct.

Save it, then browse its tags. You should see a tag namespace describing a juice factory — boilers, mixers, fillers, water, and power. If tags appear, the plugin framework is working and you can build against them.

2. Create the folder structure#

In the Model view you already have a root folder named after your instance — --create seeds it. Under it, create:

<Your Instance>
+-- Utilities
    +-- Boiler 1

Folders carry no data. They exist so that people can find things and so templates have something to attach to. Two levels is plenty here.

3. Create a metric and a retrieved measure#

Under Boiler 1, create a metric called Steam.

Inside Steam, create a measure:

Field Value
Name Steam Flow
Retrieval type Retrieved
Interval Tag
Connection Simulator
Tag 010-FT-001.PV
Unit kg/s

That tag is the boiler steam flow and moves in the region of 3.2 to 4.5 kg/s.

This measure is at the Tag interval, which means it stores raw values at whatever times the simulator produced them. It is not on the interval grid, and you cannot chart it on an interval chart. That is expected — the next step fixes it.

4. Build the aggregation chain#

Steam flow is a rate, measured per unit time, so it summarises by Average. Create two more measures in the same metric:

Name Retrieval type Interval Aggregation Aggregates from
Steam Flow Hourly Aggregated Hour(s) Average Steam Flow
Steam Flow Daily Aggregated Day(s) Average Steam Flow Hourly

Note that the daily measure aggregates from the hourly one, not from the tag. Chains step up one interval at a time. See The Measure Hierarchy for why this matters.

5. Add a totaliser, handled properly#

This is the step that teaches the most, because totalisers are the most commonly mis-modelled thing in Infohub.

Create a metric called Water under Boiler 1, and in it:

Name Retrieval type Interval Aggregation Source Unit
Water Meter Retrieved Tag — tag 020-FQ-001.PV l
Water Used Hourly Aggregated Hour(s) Counter Water Meter l
Water Used Daily Aggregated Day(s) Sum Water Used Hourly l

020-FQ-001.PV is a water mains totaliser — a register that only ever climbs. Its average is meaningless and its sum is nonsense. Counter takes the difference across each hour, turning the register into "litres used this hour". From that point up, the values are quantities, so the daily measure uses Sum.

Important

Counter appears exactly once in a chain. Using Counter twice would take the difference between two quantities, which means nothing. One Counter converts a register to a quantity; everything above it sums.

6. Add a calculation#

Create a metric called Efficiency under Boiler 1, with one measure:

Field Value
Name Water per Tonne Steam Daily
Retrieval type Calculated
Interval Day(s)
Unit l/t

For the expression, reference the two daily measures. Infohub refers to measures in expressions by ID, so the shape is:

Measure_<steamDailyId>.Value == 0 ? 0 : Measure_<waterDailyId>.Value / Measure_<steamDailyId>.Value

The == 0 ? 0 : prefix is the zero guard, and it is not optional. On a day the boiler is down, steam flow is zero, and an unguarded division fails — taking that day's value, and anything aggregated from it, with it. See The Zero Guard.

7. Create a chart#

In the Reports view, create a report folder called Boiler Reports, then create a Time Based Chart in it with the Daily constructor.

Drop Steam Flow Daily and Water Used Daily onto it.

Important

Charts only accept their own interval. A chart created with the Daily constructor accepts only daily measures. If a measure will not drop onto a chart, the interval is the first thing to check — and a Tag-interval measure is refused by every interval chart, which is why step 4 existed.

Add a Widget chart with the Daily constructor and drop Water per Tonne Steam Daily onto it, to get a single-value display of the calculated KPI.

8. Build a dashboard#

Create a dashboard called Boiler 1 Overview and place both charts on it. Dashboards use a 12-column grid: a widget sits comfortably in about 3 columns by 3 rows, a main chart in 6 to 12 columns by 4 to 5 rows.

9. Deploy#

Nothing you have built is running yet. Configuration and activation are separate in Infohub.

Open the Deployment view and confirm the Platform's host name matches the machine running Flow Bootstrap. Then deploy the connection, the engine, and the server.

Within a few minutes the Data Engine should start producing values: the tag measures first, then the hourly aggregations, then the dailies, then the calculation.

Tip

If no values appear. Work down this list. Is the Platform's host name this machine? Is Flow Bootstrap running? Is the connection deployed, not just saved? Does the Flow event log show anything? Nine times in ten it is the Platform host or a missing deploy. See Diagnosing Missing Data.

10. Look at it#

Open Flow Server in a browser and navigate to Boiler 1 Overview. You should see two days or so of simulated data building up, with the widget showing the calculated ratio.

What you have just learned#

In one small model you have used most of what Infohub does: a connection to an external system, retrieval onto the Tag interval, a contiguous aggregation chain, the rate-versus-totaliser distinction that decides Average from Counter, a guarded calculation, interval-matched charts, a dashboard, and the deploy step that turns configuration into a running system.

Where to go next#

esc
↑↓ navigate · ↵ open · ⌘K anywhere