# 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. ## 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](Configuration.md) — the underlying config entities. - [VirtualTags.md](VirtualTags.md) — the scripting/virtual-tag engine. - [ScriptedAlarms.md](ScriptedAlarms.md) — scripted-alarm engine internals (predicates, state machine, ack/shelve). - Design + decision log: [plans/2026-06-08-global-uns-management-design.md](plans/2026-06-08-global-uns-management-design.md).