On this page
- Connectivity, not cartography
- Modelling a water distribution network
- Interactive: isolating a main break
- The ArcGIS Enterprise foundation
- Monitoring: SCADA, AMI and sensors on the model
- Inspection: hydrants, valves and mains in the field
- Collaboration: one network, many teams
- A rollout that survives contact with real data
- Takeaways
Most water utilities already have their pipes in a GIS. Fewer have a network: a model that knows the tank feeds the trunk main, the trunk main feeds the loop, and closing two particular valves takes exactly five customers and one hydrant out of service. ArcGIS Utility Network is Esri's way of adding that knowledge to the data you already hold, and ArcGIS Enterprise is where it lives. This post walks through the model, the Enterprise pieces underneath it, and the three things utilities actually build on top: monitoring, inspection and collaboration between the office, the control room and the crews.
Connectivity, not cartography
A classic pipe layer stores geometry and attributes: a main is a polyline with a diameter and a material, a valve is a point with a status. Two features that touch on the map are not connected in any way the database understands, so “what is downstream of this valve” is a question for a human with a highlighter or a script that snaps endpoints and hopes.
A utility network stores the same features plus an explicit connectivity graph. Features connect by touching (geometric coincidence validated by rules), by connectivity associations that need no geometry (a meter inside a vault, a pump inside a station), and by containment and structural attachment associations for the assets that hold other assets. Rules decide which asset types may connect to which; a service line may end on a customer meter, not on a tank. Once the graph exists, tracing is a query rather than an analysis project — connected, upstream, downstream, subnetwork, isolation, loops and shortest path are built in, and every one of them is exposed through the feature service REST endpoint, ArcGIS Pro, the Maps SDKs and the Trace widget in Experience Builder.
Modelling a water distribution network
Esri publishes a water-specific starting point — the Water Distribution Utility Network Foundation in ArcGIS Solutions — as an asset package: a file geodatabase with the schema, domains, rules, network attributes and categories already defined, plus Data Loading Tools to map your existing layers into it. Start from it, then trim. Few utilities need all of it on day one, and every asset type you keep is one more thing crews must classify correctly.
The shape of the model
| Concept | In a water network | Why it matters |
|---|---|---|
| Domain network | Water (sewer and stormwater are separate domain networks in the same dataset) | Tracing never crosses from water into sewer by accident |
| Structure network | Vaults, chambers, pump-station buildings, meter pits | Holds the assets; containment associations link them |
| Network classes | Device · Line · Junction · Assembly · Structure Junction / Line / Boundary | Fixed feature classes; your types live inside them as asset groups |
| Asset groups / types | Device: Controllable Valve, Hydrant, Service Meter, Pump, Pressure Sensor… Line: Water Main, Service Line… | Drive rules, symbology, categories and terminal configuration |
| Tiers | System → Pressure (zone) → Isolation, in the current Esri foundation | Each tier has its own subnetwork controllers and trace rules |
| Subnetwork controllers | Tanks, reservoirs and treatment-plant outlets for the system; pressure-reducing valves for zones | Everything a controller can reach is one subnetwork — a zone or DMA |
| Network attributes | Device Status (open / closed), Lifecycle Status, Diameter, Flow direction | Traces read them as barriers, filters and function inputs |
| Categories | Isolating, Subnetwork Controller, Customer, Critical | Named roles that trace configurations refer to instead of asset types |
The decisions that hurt later are the ones about tiers and subnetworks. A tier is a level of the network with its own definition of what a subnetwork is: the System tier partitions the network by source, the Pressure tier by pressure zone (controlled by pressure-reducing or pressure-sustaining valves and tank inlets), and an Isolation tier can partition it into the segments bounded by operable valves. Subnetworks are named, tracked and materialised as a subnetwork name attribute on every feature, which is why a dashboard can group pressure readings, leaks or inspections by zone without a spatial join.
Interactive: isolating a main break
The isolation trace is the operation utilities buy the platform for, so here it is end to end on a small looped network. Hover to pause; click a step.
1 · Network model
Mains and service lines are line features; the tank, valves, hydrants and meters are devices. The tank is the subnetwork controller, so every feature it can reach belongs to the same pressure zone.
Two options shape real-world results. Include isolated features returns everything between the barriers, not just the valves; Include barriers returns the valves themselves. Add a condition barrier on Device Status so a valve already known to be inoperable (Device Status = Closed, or a Lifecycle Status of “Abandoned”) is skipped and the trace continues to the next one — that is the difference between a plan the crew can execute and a plan that sends them to a valve buried under last year's resurfacing. The same trace is available to a script via the REST endpoint:
The ArcGIS Enterprise foundation
A utility network is created in ArcGIS Pro inside an enterprise geodatabase (PostgreSQL, SQL Server or Oracle) and published as a branch-versioned feature service to ArcGIS Enterprise. Every client — Pro, Field Maps, Experience Builder, your own Maps SDK app — talks to that service. There is no file-geodatabase shortcut for a multi-user network, and the service is the only place topology validation and subnetwork updates run. At the time of writing, Esri also offers utility networks on ArcGIS Online; most water utilities we talk to still land on Enterprise for the reasons in our decision guide: the enterprise geodatabase stays inside their boundary, identity is on premises, and the integrations below run next to it.
- Base deployment. Portal for ArcGIS, ArcGIS Server, ArcGIS Data Store and the Web Adaptor — sized for editors reconciling branch versions all day, not for map viewers. Utility network services carry the Utility Network Management server capability and the editors' accounts need the matching user type extension; check the licensing for your release.
- Branch versioning. Every edit session — a Pro editor, a field crew's offline map, an integration — works in a named version and reconciles and posts to DEFAULT. Conflict detection is per attribute, and the service enforces the network rules on post.
- Dirty areas and validation. Any geometry or connectivity edit creates a dirty area; Validate Network Topology checks the rules and clears it. Until it is clear, traces in that area are refused or flagged. Schedule validation and Update Subnetwork as server-side jobs so the state is never more than minutes stale.
- Network diagrams. Schematics generated from the connectivity graph — a pump-station internal view, a zone overview — with no separate drawing to maintain.
- Extension servers as needed. GeoEvent Server for real-time feeds, Notebook Server for scheduled Python, Workflow Manager for multi-step processes such as new-connection design and as-built acceptance.
Monitoring: SCADA, AMI and sensors on the model
Monitoring means attaching live readings to the right feature and, through the feature, to the right subnetwork. The mechanics differ by source; the target is always the same: a GlobalID on the network model.
| Source | What it produces | How it reaches ArcGIS Enterprise | Where it lands |
|---|---|---|---|
| SCADA (plants, pump stations, PRVs) | Tag values every few seconds: pressure, flow, tank level, pump state | OPC UA / MQTT gateway → GeoEvent Server input, or a historian API polled by a Notebook | A related readings table keyed by asset GlobalID; latest value written to the device feature |
| AMI / smart meters | Interval consumption per meter, tamper and leak flags | Head-end system export or API → scheduled Python (ArcGIS API for Python) | Service Meter features; totals rolled up by subnetwork name |
| Pressure and acoustic loggers | Time series at hydrants and chambers; leak-noise correlation events | Vendor cloud webhook → GeoEvent or an Azure/AWS function that posts to the feature service | Pressure Sensor devices; events as point features with a link to the nearest main |
| Field crews | Valve status changes, hydrant flow tests, break reports | Field Maps and Survey123 editing the service directly | Device Status network attribute; inspection related tables |
With readings on the model, the dashboards write themselves. ArcGIS Dashboards over the readings tables gives the control room pressure-zone KPIs, tank-level trends and pumps running; a Pressure-tier subnetwork with a supply meter and AMI reads inside it gives a nightly minimum-night-flow figure per DMA. GeoEvent Server filters — pressure below a threshold at two adjacent sensors, a tank draining faster than its pumps can explain — become alerts on the map, and an alert on a main is one click from the isolation trace above.
Real-time and IoT data integrationGeoEvent Server, MQTT and historian feeds mapped onto the network model, with alerting and dashboards.Inspection: hydrants, valves and mains in the field
Inspection programmes are where the network model earns its keep daily rather than during an emergency. Valve exercising, hydrant flow testing and main condition assessment are scheduled work against the very features a trace depends on, and the field edit that records a seized valve is the same edit that stops the next trace from relying on it.
- 01
Model inspections as related tables, not attributes
One row per visit under Hydrant, Controllable Valve and Water Main, with a GlobalID relationship. The feature keeps the current condition; the table keeps the history that condition scoring and replacement planning need. - 02
Build the field maps on the utility network service
ArcGIS Field Maps edits utility network layers inside a branch version and works offline from preplanned map areas — see offline patterns. Use the smart form to walk the crew through the test; put the turns-to-close count and the torque reading on the form, not in a notes field. - 03
Generate the programme from the model
Critical valves are the ones an isolation trace would need for a critical customer; a scheduled Notebook can rank them and assign due dates by tier, diameter and last-exercised date, then write them to an assignments layer for the crews. - 04
Close the loop on Device Status
A valve that will not operate gets its Device Status and Lifecycle Status updated on site. The reconciled edit changes the next isolation trace immediately — that is the whole reason inspection belongs on the network model. - 05
Trace in the field when it matters
Crews confirming an isolation plan need the trace on the device. Field Maps shows the isolated features published from the office; a purpose-built app on the ArcGIS Maps SDKs for Native Apps can run the trace itself, including offline against a mobile geodatabase, at the time of writing.
Collaboration: one network, many teams
A distribution network is edited by GIS staff, designed against by engineers, operated by the control room, maintained by crews, billed by customer service and reported on by management. The Enterprise portal is the place they meet, provided each group gets the view it needs and only the edit rights it should have.
| Team | Works in | Needs | May edit |
|---|---|---|---|
| GIS / data team | ArcGIS Pro | Full schema, rules, validation, subnetwork management | Everything, in named versions; owns DEFAULT |
| Engineering / planning | Pro, hydraulic model | Export to WaterGEMS / InfoWater / EPANET; design versions for new connections | Design versions only, reviewed before post |
| Control room | Dashboards, Experience Builder with Trace widget | Live readings, alerts, isolation traces, outage extents | Nothing on the model; annotates events layer |
| Field crews | Field Maps, Survey123 | Assignments, offline areas, inspection forms, isolation plans | Device Status, inspections, as-built redlines |
| Customer service | Instant Apps, CIS integration | Which customers are affected by a job, planned interruption notices | Read-only; customer IDs joined by meter GlobalID |
| Contractors / partners | ArcGIS Online via distributed collaboration | A copy of the relevant zone, no access to the Enterprise boundary | Their own layers; as-builts submitted for acceptance |
Where the integrations sit
- Asset management / CMMS (Maximo, Cityworks, SAP PM and similar). The GIS is the asset register for anything with a location; the CMMS owns work orders. Link by GlobalID both ways, and pass the isolated feature list from a trace into the work order so the crew and the customer notification use the same set.
- Hydraulic modelling. The connectivity graph exports cleanly — subnetworks become model zones, devices become nodes with the right types — and calibrated results (pressures, ages, velocities) come back as attributes for the dashboards.
- Customer information / billing. Meter GlobalID to account number is the only join you need for outage notifications and NRW arithmetic. Keep it in the CIS, expose it through a view, do not copy customer data into the GIS.
- Public and partner sharing. ArcGIS Hub or an Instant App for planned interruptions; distributed collaboration to an ArcGIS Online organisation when contractors need a working copy without a hole in the firewall.
Works
- Named versions per team or per job, reconciled daily by a schedule and posted after review
- A single events layer (breaks, alerts, planned work) that every app reads
- Trace results stored with the work order, not re-run by each person
- Read-only feature layer views for everyone who does not edit
Does not
- Exporting the network to a shapefile for the engineers “because Pro is slow”
- Contractors editing DEFAULT with a shared login
- Two systems writing Device Status
- Skipping validation because the dirty areas are “only cosmetic”
A rollout that survives contact with real data
- 01
Data readiness, before any software
Profile the existing layers: how many mains have no diameter, how many valves float off a line, how many service lines end in space. Fix what a trace would trip on; accept and flag the rest with a Lifecycle Status the rules ignore. - 02
Stand up Enterprise for editing, not viewing
Enterprise geodatabase on PostgreSQL or SQL Server, branch versioning, SSO, a staging portal that mirrors production. Load the asset package into staging and migrate there first, twice. - 03
Migrate with the Data Loading Tools and validate in slices
Map source layers to asset groups and types, load one pressure zone, validate topology, fix the error classes that appear, then load the rest. Enable the System tier first; add Pressure and Isolation tiers once controllers are trustworthy. - 04
Publish the service and the first two apps
An Experience Builder app with the Trace widget for the control room, and a Field Maps project for valve status and hydrant inspections. Two apps people use beat eight that were demoed. - 05
Add feeds one at a time
SCADA pressures first, because they prove the subnetwork membership is right. AMI next, for NRW. Loggers and acoustic events when the DMAs are stable. - 06
Operate it
Scheduled validation and subnetwork updates, reconcile-and-post monitoring, version cleanup, yearly Enterprise upgrades tested on staging with the utility network version bump in mind.
Takeaways
Takeaways
- 01Buy the connectivity, not the map. The value of a utility network is that isolation, impact and zone membership become queries any app can run.
- 02Tiers and controllers are the design decisions. System, pressure zone and isolation tiers, with tanks, PRVs and district meters as controllers, give you DMAs and outage extents for free afterwards.
- 03Enterprise underneath, branch versioning throughout. Every editor, crew and integration works in a version; one owner posts to DEFAULT; validation and subnetwork updates run on a schedule.
- 04Monitoring is a join to a GlobalID. SCADA, AMI and loggers land on features and roll up by subnetwork; one system owns Device Status.
- 05Inspection keeps traces honest. A seized valve recorded in Field Maps changes tomorrow's isolation plan — that is why inspections belong on the network model, not in a separate app.
- 06Data readiness sets the schedule. Configuration is weeks; migration is as long as your source data makes it.