ArcGIS 13 min read

ArcGIS Utility Network for water distribution: model, monitor, inspect, collaborate

A map of pipes tells you where assets are. A utility network tells you what is connected to what — which valves isolate a main break, which customers lose pressure, which zone a sensor reading belongs to. How to build one on ArcGIS Enterprise and put monitoring, inspection and cross-team collaboration on top of it.

On this page
  1. Connectivity, not cartography
  2. Modelling a water distribution network
  3. Interactive: isolating a main break
  4. The ArcGIS Enterprise foundation
  5. Monitoring: SCADA, AMI and sensors on the model
  6. Inspection: hydrants, valves and mains in the field
  7. Collaboration: one network, many teams
  8. A rollout that survives contact with real data
  9. 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

ConceptIn a water networkWhy it matters
Domain networkWater (sewer and stormwater are separate domain networks in the same dataset)Tracing never crosses from water into sewer by accident
Structure networkVaults, chambers, pump-station buildings, meter pitsHolds the assets; containment associations link them
Network classesDevice · Line · Junction · Assembly · Structure Junction / Line / BoundaryFixed feature classes; your types live inside them as asset groups
Asset groups / typesDevice: Controllable Valve, Hydrant, Service Meter, Pump, Pressure Sensor… Line: Water Main, Service Line…Drive rules, symbology, categories and terminal configuration
TiersSystem → Pressure (zone) → Isolation, in the current Esri foundationEach tier has its own subnetwork controllers and trace rules
Subnetwork controllersTanks, reservoirs and treatment-plant outlets for the system; pressure-reducing valves for zonesEverything a controller can reach is one subnetwork — a zone or DMA
Network attributesDevice Status (open / closed), Lifecycle Status, Diameter, Flow directionTraces read them as barriers, filters and function inputs
CategoriesIsolating, Subnetwork Controller, Customer, CriticalNamed roles that trace configurations refer to instead of asset types
The vocabulary that appears in every configuration screen. Tier names and asset types are Esri's at the time of writing; you can rename and extend them.

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.

Zone A · 1 controller · 16 services · 2 hydrants

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.

An isolation trace from a break on M-118. The trace stops at the first valves with the Isolating category and Device Status = Open; the isolated set is returned as GlobalIDs, so the customer impact is a join, not a spatial guess. Numbers are illustrative.

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:

isolation_trace.pyPython
1import json
2import requests
3
4SVC = "https://gis.example.com/server/rest/services/Water/FeatureServer"
5token = get_token() # portal token; the account needs the Utility Network user type extension
6
7trace_configuration = {
8 "domainNetworkName": "Water",
9 "tierName": "Water Isolation",
10 "includeBarriers": True,
11 "includeIsolated": True,
12 "traversability": {
13 # skip valves already known to be closed or inoperable
14 "barriers": [{"type": "networkAttribute", "name": "Device Status",
15 "operator": "equal", "value": 0, "traversabilityScope": "junctions"}],
16 },
17}
18
19r = requests.post(f"{SVC}/UtilityNetworkServer/trace", data={
20 "f": "json",
21 "token": token,
22 "gdbVersion": "sde.DEFAULT",
23 "traceType": "isolation",
24 "traceLocations": json.dumps([{"traceLocationType": "startingPoint",
25 "globalId": "{9A2C…-M-118}", "percentAlong": 0.34}]),
26 "traceConfiguration": json.dumps(trace_configuration),
27}).json()
28
29elements = r["traceResults"]["elements"] # networkSourceId, globalId, objectId, terminalId
30print(len(elements), "features isolated")
An isolation trace against the UtilityNetworkServer endpoint of a branch-versioned feature service. traceConfiguration is the same JSON ArcGIS Pro writes when you save a named trace.

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.
ArcGIS Enterprise design, installation and operationSizing for branch-versioned editing, high availability, SSO and the extension servers a utility network needs.

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.

SourceWhat it producesHow it reaches ArcGIS EnterpriseWhere it lands
SCADA (plants, pump stations, PRVs)Tag values every few seconds: pressure, flow, tank level, pump stateOPC UA / MQTT gateway → GeoEvent Server input, or a historian API polled by a NotebookA related readings table keyed by asset GlobalID; latest value written to the device feature
AMI / smart metersInterval consumption per meter, tamper and leak flagsHead-end system export or API → scheduled Python (ArcGIS API for Python)Service Meter features; totals rolled up by subnetwork name
Pressure and acoustic loggersTime series at hydrants and chambers; leak-noise correlation eventsVendor cloud webhook → GeoEvent or an Azure/AWS function that posts to the feature servicePressure Sensor devices; events as point features with a link to the nearest main
Field crewsValve status changes, hydrant flow tests, break reportsField Maps and Survey123 editing the service directlyDevice Status network attribute; inspection related tables
Four feeds, one model. The point of routing everything through the feature service is that Device Status and subnetwork membership stay authoritative for traces.

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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
Field Maps, Survey123 and Workflow ManagerInspection forms, offline areas and scheduled programmes built on the network service, with reconcile and post handled for the crews.

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.

TeamWorks inNeedsMay edit
GIS / data teamArcGIS ProFull schema, rules, validation, subnetwork managementEverything, in named versions; owns DEFAULT
Engineering / planningPro, hydraulic modelExport to WaterGEMS / InfoWater / EPANET; design versions for new connectionsDesign versions only, reviewed before post
Control roomDashboards, Experience Builder with Trace widgetLive readings, alerts, isolation traces, outage extentsNothing on the model; annotates events layer
Field crewsField Maps, Survey123Assignments, offline areas, inspection forms, isolation plansDevice Status, inspections, as-built redlines
Customer serviceInstant Apps, CIS integrationWhich customers are affected by a job, planned interruption noticesRead-only; customer IDs joined by meter GlobalID
Contractors / partnersArcGIS Online via distributed collaborationA copy of the relevant zone, no access to the Enterprise boundaryTheir own layers; as-builts submitted for acceptance
Roles map to portal groups and branch-versioning permissions. The pattern that keeps it honest: one owner for DEFAULT, everyone else through versions or read-only views.

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

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
Utility Network configuration and migrationAsset package tailoring, Data Loading Tools migration, rules and tiers, scheduled validation — delivered by engineers who run the platform.

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.

Start a project

Have a project in mind? Let's build it.

Share your requirement and get an obligation-free consultation, a technology recommendation, and a quote within 48 business hours.

Chat on WhatsApp