7.1 KiB
UNS — Global Unified-Namespace Management
The UNS page (/uns in the AdminUI) is the single surface for managing
the Unified Namespace across the whole fleet. It replaces the old
per-cluster UNS, Equipment, and Tags tabs and the standalone
virtual-tags list — those have been removed; everything now lives in one
global master tree.
The tree
The page shows every layer of the UNS as one expandable tree. Equipment is a leaf in the tree — tags, virtual tags, and alarms live on a dedicated equipment page, not inline:
Enterprise (read-only grouping — ServerCluster.Enterprise)
└─ Site / Cluster (read-only grouping — a ServerCluster row)
└─ Area (editable — UnsArea)
└─ Line (editable — UnsLine)
└─ Equipment (leaf — Equipment; opens its own page)
Enterprise and Site/Cluster are read-only here. They are derived from
columns on the cluster record, not entities of their own, so you create and
configure clusters on the Clusters pages (/clusters). On a cluster row
the ⚙ settings link jumps to that cluster. Editable UNS entities start
at Area.
Count badges next to a node show how many direct children it has (for equipment, the combined tag + virtual-tag count).
Navigating
- Expand all / Collapse all toggle the structural levels.
- Filter by name does a case-insensitive substring match on the names of a node's direct children.
Creating and editing
Every editable row has inline actions:
| Node | Actions |
|---|---|
| Cluster | + Area |
| Area | + Line, Edit, Delete |
| Line | + Equipment, Edit, Delete |
| Equipment | Open, Delete |
A + Child action pre-fills the parent for you (e.g. + Line on an area opens the Line modal with that area already selected). Build a branch top-down: Area → Line → Equipment. Tags, virtual tags, and scripted alarms are managed on the equipment page (see below).
Equipment page (/uns/equipment/{id})
Clicking Open on an Equipment row (or + Equipment on a Line) navigates to the equipment page. The page is organised into four tabs:
| Tab | Content |
|---|---|
| Details | Equipment identity — name, description, OPC-40010 namespace fields, driver binding, and served-by cluster. (This is the former EquipmentModal, now a full page.) |
| Tags | Equipment-bound driver tags. Each tag uses the driver-typed config editor (same editors as before — Modbus, S7, AB CIP, etc.) with the same client-side validation. |
| Virtual Tags | Virtual tags driven by C# scripts. The inline Monaco script editor with Roslyn IntelliSense, completions, and live diagnostics is available here per tag. |
| Alarms | Scripted-alarm definitions bound to this equipment. Create, edit, or delete predicates here; the Monaco editor is available for each predicate script. |
"Add equipment" under a Line uses the URL /uns/equipment/new?lineId=...,
pre-filling the parent line. Saving redirects to the new equipment's page.
Served-by cluster
An area's cluster assignment is its "served-by" cluster — the cluster
node that runs it. It's set when you create the area (under a cluster) and
changed by editing the area's cluster in the Area modal, which moves the
whole branch. There is no separate "served-by" concept and no migration —
it is simply UnsArea.ClusterId.
Tags vs. Galaxy / SystemPlatform tags
Tags created on the equipment page are equipment-bound and require a driver instance. The driver list on the Tags tab is scoped to the equipment's cluster and to drivers on an Equipment-kind namespace, so a driver-less equipment shows no eligible drivers until you bind one (edit the equipment on the Details tab and pick a driver).
Galaxy / AVEVA System Platform tags are not shown in this tree. They hang
off the driver's folder path and are auto-materialised from the Galaxy
browse rather than being equipment-bound, so they stay on the Drivers tab
of their cluster (/clusters/{id}/drivers), where the address picker browses
the live Galaxy hierarchy.
Virtual tags
A virtual tag is bound to an equipment and driven by a script (no driver). Add and edit virtual tags on the equipment page's Virtual Tags tab; the data type is chosen from the standard OPC UA type list and the Monaco script editor is available inline.
Alias tags
An alias tag surfaces a Galaxy attribute under a friendly UNS name without
requiring a Roslyn script. It is an ordinary equipment Tag bound to the
GalaxyMxGateway driver; the Galaxy reference is stored in TagConfig as
{"FullName":"tag_name.AttributeName"}. Because the value comes from a direct
driver subscription — not a script relay — quality and timestamp are native MX,
and there is no Roslyn overhead.
Adding an alias: on the equipment Tags tab, click Add alias (browse
Galaxy). A live Galaxy browse picker opens; navigate to the attribute you
want. After selecting it, set the tag Name, DataType, and AccessLevel
(default: read-only; opt in to write-through at your own discretion — writes go
through the Galaxy driver's security). The button is disabled when the
equipment's cluster has no GalaxyMxGateway driver instance.
In the Tags list, alias tags show an alias badge and their Source as
galaxy:<tag_name.AttributeName>. There is no new entity type or schema
migration — the alias is just a Tag row with DriverType = GalaxyMxGateway
and the FullName field in its JSON config.
Relay → alias converter: if you have existing "relay" virtual tags whose
scripts are nothing but return ctx.GetTag("X").Value;, a converter can
rewrite them as alias tags automatically:
- Per-equipment — a toolbar action on the Tags tab opens a dry-run preview (lists what will be converted and what will be skipped), then a confirm-apply step.
- Fleet-wide —
/uns/convert-relays(FleetAdmin-gated) runs the same dry-run + apply across all equipment in the fleet.
The converter skips and reports items it cannot safely migrate:
- virtual tags whose body is not a pure single-value relay
- virtual tags that are historized
- equipment whose cluster has no Galaxy gateway
- relay references containing
{{equip}}tokens that cannot be resolved
The converter edits the draft config only — deploy normally afterward to activate the changes.
Bulk import
Import equipment CSV (toolbar) bulk-creates equipment across many lines and clusters in one pass. After an import the whole tree reloads.
Applying changes
Edits here change the configuration only. As the page header notes, changes apply on the next deployment — run a Deploy (Deployments page) to push them into the running address space.
See also
- Configuration.md — the underlying config entities.
- VirtualTags.md — the scripting/virtual-tag engine.
- ScriptedAlarms.md — scripted-alarm engine internals (predicates, state machine, ack/shelve).
- Design + decision log: plans/2026-06-08-global-uns-management-design.md.