Type: how-to · Last reviewed: 2026-07-17
Applies to: Pulse Historian · edge/on-prem
Goal: connect Pulse Historian to an OSIsoft/AVEVA PI System, browse the asset tree, onboard a unit's tags, and start live data flowing (optionally backfilling history) — all from the Pulse app.
This guide is the in-app walkthrough. If you are automating onboarding over the API instead, see the PI Connectors API and the PI connector internals; every screen below maps to one of those endpoints.
⚠️
[VERIFY-UI]— the screen names, button labels, and step order below are inferred from the connector's behavior and have not yet been checked against the running frontend. Confirm against the app and drop the real screenshots into the placeholders before publishing.
Prerequisites:
https://pi-server/piwebapi, and PI credentials (DOMAIN\username + password).boiler-2.In the Pulse app, open Connections → Add data source (or Add connection) and choose PI System / PI Web API. Enter:
https://pi-server/piwebapiACME\svc_pi)Save the connection.
🖼️ [SCREENSHOT: the Add-PI-connection form with API URL, username, password, and the Verify SSL toggle]
[VERIFY-UI] Whether credentials are entered once here and reused, or re-entered per step, depends on the frontend — confirm.
Open the new connection to browse the PI Asset Framework. The app walks the hierarchy for you — asset server → database → elements — as an expandable tree. Drill down to the element that represents your unit (here, boiler-2) and select it.
🖼️ [SCREENSHOT: the AF hierarchy tree expanded to the boiler-2 element, with its attribute count shown]
Selecting the element previews its PI attributes (the points that will become tags) so you can confirm you have the right unit before onboarding.
🖼️ [SCREENSHOT: the attribute preview for boiler-2 showing points like steam_pressure, steam_temp]
With boiler-2 selected, click Onboard (or Import unit). The app crawls the element's attributes, creates the collection and tag metadata, and automatically starts the live driver — you'll see progress stream in as each tag is discovered, then a completion count.
🖼️ [SCREENSHOT: onboarding progress showing tags streaming in and a "completed — 48 tags" state]
When it finishes, a managed pi-driver process is polling PI and writing into the collection. (That process is supervised and auto-restarts — see How Pulse runs its background services.)
Onboarding captures the raw tags; mapping classifies them into equipment/systems and creates the dashboard and tagmeta records. In the app, choose Map tags for the unit and pick the industry and equipment type (e.g. power / boiler). The app sends the tags to the ML mapping service and shows you the suggested classifications to review.
🖼️ [SCREENSHOT: the tag-mapping review screen — suggested equipment/system per tag with a confidence indicator]
Only verified tags (confidence ≥ 0.5) get equipment, dashboard, and tagmeta records created automatically; low-confidence ones are left for you to map manually. [VERIFY-UI] confirm how manual re-mapping is done in the UI.
Setting a tag's high/low limits here (or later in tag metadata) also auto-creates alarm rules for it — see How monitoring & alarms work.
To pull historical data, open Backfill for the connection, choose the time range (or leave it on Auto), the resolution (e.g. 1 minute), and the tags to include, then start it.
🖼️ [SCREENSHOT: the backfill dialog — time range, resolution, tag selection, Start button]
Backfill runs as a managed, resumable job (it checkpoints, so it continues if interrupted). [VERIFY-UI] note: over the API a tag filter is required for backfill (there is no all-tags default) — confirm whether the UI selects tags for you or requires an explicit pick.
Live data: open the unit's dashboard (or the tag list) and confirm values for steam_pressure are updating — the live driver is writing.
📊 [GRAPH: boiler-2 steam_pressure trending live over the last few minutes]
Onboarding produced tags: the unit shows its expected tag count (e.g. 48).
Backfill filled in: after a backfill, the chart shows history back to your chosen start, not just "from now".
If you'd rather verify from a terminal, query a freshly-onboarded tag by name — scope resolves automatically (see Data model & scope) — using POST /exactapi/fast_query.
| Symptom | Cause | Fix |
|---|---|---|
| TLS / certificate error to PI | Self-signed PI server with Verify SSL on | Turn Verify SSL off on the connection (step 1) |
| Browsing stalls / "429" from PI | PI is rate-limiting | Expected — the driver auto-slows and retries; let it settle |
| No data after onboarding completes | Tag names differ from PI point names, or the driver didn't start | Re-check the tags previewed in step 2; confirm the pi-driver is running (see Background services) |
| Onboarded, but no equipment/dashboards | Tag mapping (step 4) not run, or tags scored low-confidence | Run Map tags; only confidence ≥ 0.5 creates records |
| "Permission" error mid-flow | Signed in without admin/read-write, or session expired | Sign in with a role that can create collections/metadata |
list_children, onboard_unit, map_tags, start_backfill)