Trace utility networks

Proper network management involves tracing your network to optimize paths for resources to travel. The utility network's tracing function provides a framework that can be used to help deliver resources to customers, track the health of a network, and identify deteriorating areas.

How tracing works

A trace begins at one or more starting points or at the subnetwork controller for the specified subnetwork and spans outward in a radial fashion. It travels through the network along paths of connected features and objects until it reaches an end location. The end location can be a barrier or the end of a path. Upon completion, the results of a trace are returned in the form of a selection set, through aggregated geometry in multipart feature classes, as a connectivity graph, or as information in a specified .json file. The trace result can be used for a variety of things. For example, a resulting selection set could be used as input to a reporting function, propagated to other map or diagram views. The aggregated geometry of trace results could also be reviewed using different filters to compare results. A connectivity graph can be used to build your own index or representation of the data in another application. Feature-based information can be exported for analysis and integration with external systems.

To learn more about these components, see Starting points, Barriers, and Trace results.

The tier definition of a domain network impacts how subnetwork-based traces are handled. For domain networks with partitioned tier definitions, subnetwork-based traces stop at subnetwork controllers. For domain networks with hierarchical tier definitions, subnetwork-based traces stop at subnetwork controllers that have a tier name that matches the tier specified in the trace.

Terminals represent ports on a network feature such as a device or junction object. A network feature that is defined as a subnetwork controller must have a terminal assigned with one port designated as the upstream. You can choose whether to enforce terminals on nonsubnetwork controller key features, such as valves. Using terminals gives you control over the internal paths of a network feature, promoting more accurate trace results. For example, a tristate switch device is used to control the flow of electricity between one wire and another. Electricity enters through one terminal and can exit through one of the three other terminals, depending on the valid path set for the device.

To learn more about terminals, see Terminal management.

Connectivity and traversability

There are two terms used to describe how utility network features relate to one another. Connectivity describes the state in which two features have geometric coincident-based connectivity or are connected via a connectivity association. Traversability describes the situation in which two features are connected or associated and have appropriate attributes. The attributes and attribute values considered during a trace are controlled by configurations set up through geoprocessing tools.

Tracing operations travel a network in one of two methods, by using either connectivity or traversability. The method a trace uses is controlled by the type of trace used. The advanced parameters in the Set Subnetwork Definition and Trace tools control the details of traversability traces.

To learn more, see Connectivity and traversability.

Flow direction in a utility network

Understanding how resources flow along a network edge is essential when performing subnetwork based traces in the utility network. By default, trace operations determine the direction of flow on the fly by locating the subnetwork controllers after discovering whether a domain network is source or sink based. In most cases, subnetwork-based traces require at least one subnetwork controller for each subnetwork to determine flow direction during a trace. When performing a directional trace to find upstream or downstream features, upstream traces travel toward subnetwork controllers in source-based domain networks and away from subnetwork controllers in sink-based domain networks while downstream traces do the opposite.

If you use a model which relies on the digitized direction of lines to determine the direction that resources flow in the network, you can use the Use Digitized Direction parameter to determine flow in upstream and downstream traces based on the digitized direction of the line and the Flow direction attribute.


The Use Digitized Direction parameter is available with Utility Network Version 7 and later. When working in an enterprise deployment this requires ArcGIS Enterprise 11.3 or later.

To learn more, see Utility network trace types.

Set flow direction

When you create or upgrade a utility network to version 7 or later, the Flow direction network attribute is assigned to the FLOWDIRECTION field for all Line and EdgeObject classes in the domain network and the StructureLine and StructureEdgeObject classes in the structure network. This supports the Use Digitized Direction parameter on the Trace and Add Trace Configuration tools.

By default, flow direction is established with the digitized direction for line classes and with direction of the From and To global ID for edge objects in the association. A coded-value domain is used to set the direction of flow in three ways:



With digitized direction

Flow direction is established along the digitized direction of lines and with the direction of the From global ID and To global ID of the edge object in the association. This is the default.


Against digitized direction

Flow direction is established against the digitized direction of lines, and against the direction of the From global ID and To global ID of the edge object in the association.



Flow direction is bidirectional or undetermined.

To set flow direction on line features or edge objects in a utility network, complete the following steps:

  1. On the Edit tab, in the Selection group, click Attributes Attributes.
  2. Click Select Select, select the features, and expand the selection in the pane.
    • To select multiple features and edit the same field with the same value, use the following keyboard shortcuts:
      • To select multiple features, press Ctrl while clicking the features.
      • To select adjacent features, press Shift while clicking the first and last feature.
  3. Click the cell to the right of Flow direction to choose the value from the available options in the domain and press Enter.
  4. If Auto Apply is turned off, click Apply.
    • The Flow direction field can also be edited in the attribute table manually or by using the Calculate Field tool.

    When an edit is made to a network attribute, a dirty area is generated to mark the feature for validation. Validating ensures that the flow direction is updated in the network topology.

  5. To validate the edits and update the network topology, click the Utility Network tab.
  6. In the Network Topology group, click the Validate command.
    • Depending on the scope of edits made, you can validate the Current Extent or Entire Extent. See Validate a network topology for more information.

The flow direction is updated for the selected features.


Disabling a network topology is recommended when updating the flow direction for a large number of features, as this prevents the need to create and validate dirty areas.

The Trace tool

The Trace geoprocessing tool is used to run traces on your network and includes a set of standard traces that can be configured to create complex traces.

To learn more about the tool, see Trace. To learn more about the different types of traces, see Utility network trace types.

The building blocks provided with the Trace tool allow you to refine which features and objects are traced and which ones are returned in the results. They also allow you to gather additional information about a subnetwork through the use of network attributes. For subnetwork-based traces, the trace configuration can be predefined for all subnetworks in a tier using the Set Subnetwork Definition tool. This is part of the utility network configuration that is performed by the owner of the utility network. Once the subnetwork definition is configured for a tier, the Trace tool loads the definition for subnetworks traced in that tier; this saves time and ensures consistent trace results.

To learn more about trace configurations set at the administrator level, see Configure a trace and Set or modify the subnetwork definition.

The Trace tool relies on the network topology to access cached information about network features. By reading cached information from the topology instead of the map, performance is improved during complex traces on large networks. Since the Trace tool relies on the network topology, the results of a trace are not guaranteed to be accurate if there are dirty areas or subnetwork errors in the traceable area. The network topology for the traceable area must be validated and the subnetwork must be updated to ensure it reflects the most recent edits or updates made to the utility network.

Work with named trace configurations

Named trace configurations allow you to store complex traces in a utility network for reuse and sharing across an organization using ArcGIS Pro and web maps to be consumed by web and field applications. Introduced with version 5 of the utility network, the use of named trace configurations in an organization simplifies the user experience associated with tracing and allows users to discover information or answer questions using a trace without the need to understand all configuration details.

Named trace configurations can be consumed in ArcGIS Pro by using the Use Trace Configuration parameter on the Trace geoprocessing tool as well as the Named Configurations tab in the Trace pane.

Learn more about how to work with named trace configurations

Usage notes

The following are items for consideration when tracing a utility network.

When working with nonspatial objects, trace results may be impacted if editing tools are active when executing a trace. For example, if the Move tool is active when executing a trace, the results do not include junction and edge objects.


When a subnetwork-based trace is run using the Trace tool through Python, the subnetwork trace configuration for the input tier is not applied automatically and must be manually specified.

Certain parameters on the Trace tool are only available from a script or model environment. These parameters allow you to specify the location of the class you want to use for trace locations as well as modify or configure propagation and substitution.

To learn more, see Attribute propagation and Attribute substitution.

When you run a trace from a script or model, use the Set Trace Locations geoprocessing tool. With the tool, you can create trace locations in either the default feature classes created in your project or in a new class at a location you specify. This is similar to using the Trace pane when working within an active map view. If you define a new class and location, the Trace path to the feature class must be provided using the Starting Points and Barriers parameters on the Trace tool, only available through a script or model.

Work with multiple conditional expressions

When configuring barriers, filters, or outputs with multiple conditional expressions, it is important to note that the Boolean operator AND holds higher precedence than the Boolean operator OR.

As an example, consider you have three conditions, X, Y, Z, and want a barrier to stop a trace meeting the condition X AND Y OR Z. This could be interpreted in different ways. Trace uses disjunctive normal form (DNF) when processing multiple conditional expressions. Consequently, if the trace configuration input does not conform to DNF, trace results may be different than expected. Because DNF gives the Boolean operator AND higher precedence, this expression would be interpreted as (X AND Y) OR Z. If the alternate interpretation of X AND (Y OR Z) is desired, the expression would be written as (X AND Y) OR (X AND Z).