ArcGIS Blog

Data Management

ArcGIS Utility Network

Building Your Utility Network

By Robert Krisher

The Migrate to Utility Network tool provides many options for creating your own utility network. With so many options available, customers often wonder how the decisions they make will affect how the tool builds their utility network. In this article we will review the output of the tool, and how the decisions made during the configuration process influence the final model. The examples in this article are based on the water geometric network seen below.

A screenshot from ArcGIS Pro showing a series of feature classes that belong to a water geometric network.
Example classes from Water dataset in the Local Government Information Model

Output

A screenshot showing the output from the Migrate To Utility Network tool. It shows a folder called data loading workspace, a mobile geodatabase called migration database, a layer file called migration database, and a CSV file called controllers.
Output from the Migrate To Utility Network Tool

Once you’ve run the Migrate to Utility Network tool you will find the following items:

  • Migration database – A new mobile geodatabase populated according to your mappings and settings
  • Layer File – A layer file containing a default set of layers for the newly created schema
  • Controllers CSV File – A CSV file containing any sources/sinks identified in your source data
  • Data Loading Workspace – A data loading workspace that can be used to re-migrate your data. Learn more about this in the Migrating data to the utility network article.

Let’s discuss each of these outputs in more detail. These files are created in a folder in the location you specified. The folder, geodatabase, and layer file will have the name you provided when you ran the tool. If you look inside the mobile geodatabase, you will see the feature dataset and utility network also have the name you specified. You will see structure layers, since these are required for each utility network, along with feature classes for each domain network you defined in the tool.

A screenshot showing the output from the Migrate To Utility Network. It shows a collection of structure and water feature classes alongside a utility network.
Target classes created by the Migration To Utility Network tool.

The CSV output from the tool can be used by the Import Subnetwork Controllers tool to recreate all the sources/sinks in your network. This step is something you will do once you’ve fixed all the errors in your data and are ready to begin running traces.

The last item output by the tool is a data loading workspace. This is used when you want to rerun the data migration using the same configuration, without having to recreate a new mobile geodatabase. You can find more details about how to use this workbench in the Migrating Data to the Utility Network article.

If you add the layer to a map, you will see that all the layers in your source data have become asset groups in their corresponding utility network classes. Any asset types you defined in your mappings will also appear under those layers.

 

A screenshot showing a table of contents and a map containing all the target classes and asset groups populated by the Migrate to Utility Network tool. The map contains symbols with different shapes and colors depicting all the unique classes and asset groups.
The results from migration tool added to a new map using the Migration Database layer file.

Let’s look at the process that the tool uses to merge the schemas of different classes into a single class in the utility network.

Merging Schema

When the tool runs it merges source classes into the target classes you have defined. When this happens, the tool preserves the schema of each of the source classes. Let’s look at an example of how the fields from a pump class and valve class are merged into a water device class.

A diagram showing how that the pump class had 27 fields and the system valve had 22 fields. When combined into the water device class they result in a total of 53 fields.
The number of fields before and after merging schemas.

Each of these classes has its own set of unique fields and domains, but when the two are combined into a single class, all their fields and domains are combined. If we look at the resulting class, we can see that it contains a combination of required utility network fields, fields added by the migration tool, and fields from each class. The first fields on the class are always the fields required by the utility network and the migration process.

A screenshot showing the Fields Design view for the Water Device layer. It shows which fields are required by the utility network, which fields were added by the data migration, and which fields are used for subnetwork management and editor tracking.
The standard set of fields created by the migration tool.

You can see at the end of the field list all the fields that were merged from all the classes.  The field list starts with all the pump fields and ends with the fields unique to the system valve class.

A screenshot showing the user-defined fields added by the migration tool. First it highlights the fields belong to the pump class or that are shared by both classes. Next it shows the fields that are exclusive to the system valve class.
User defined fields appear after utility network fields and fields created by the migration tool.

The way that fields are merged requires special attention. When two classes have a field with the same name and data type, the data for those classes will be consolidated into a single field. If two classes have a field with the same name, but different data types, the tool will add a second field with a suffix indicating it has a different data type. This approach allows the tool to ensure the data in all your fields is properly migrated to the utility network.

Domains

You may have noticed that there aren’t any domains assigned to these fields. That’s because the utility network requires subtypes. When a class has subtypes, all the domains and default values are configured for each subtype. If you’ve used subtypes before migrating to the utility network, you are already familiar with this behavior. You can confirm the new schema matches your original domains and default values using the Subtypes design view in ArcGIS Pro.

A screenshot showing the Subtypes design view for the Water Device layer. It shows the domains and default values assigned to the pump subtype, system valve subtype, and places where both subtypes had the same configuration.
Domains are assigned to each field and subtype based on the schema from the source class.

If your source data already had subtypes, then the tool will automatically merge the domains on those subtypes, if necessary. This raises another interesting question. If the source classes had subtypes, how does the utility network maintain that information going forward? The tool will automatically consolidate the default values and domains of your classes as best it can. If some information could not be consolidated, the tool will provide a warning during the migration process. Additionally, if you configured your subtype field to be the asset type field in the new model, the tool will use your existing subtype codes and descriptions as the asset types that asset group. We will give an overview of why asset types are important and how this process works in the next section.

What Are Asset Types?

What are asset types and why are they so important in the utility network? Every feature in a utility network is uniquely classified by a combination of its class, asset group, and asset type. You can see the asset types if you look at the network properties for a utility network.

A screenshot of the network properties dialog showing the asset types the migration tool created for the water device class.
Asset types created by the migration tool on the water device class.

Looking at the asset types created by the tool we can see that the model built by the tool assigned a special terminal configuration to the asset group we defined as having controllers in our mappings. We can also see that each asset group has its own unique network category, this is convenient for when we want to configure reports or traces as these network categories allow us to easily identify features from different classes.

If you migrated any features to be structure boundaries, you will see they have been automatically configured to be containers. This allows you to configure your structure boundaries to contain other types of features. One example of this would be a pump station (structure boundary) being able to contain the pumps, valves, and pipes inside. These containment associations make it easier to understand the relationships between structures and equipment which are beneficial for both asset management and analysis purposes.

A screenshot from the network properties dialog showing the association role for structure boundaries defaults to container.
The association role of structure boundaries defaults to container.

When configuring the behaviors of a utility network, these behaviors are almost always defined using asset types. The most practical example of this is the connectivity rules for the network. If you look at the connectivity rules in the network properties dialog you can see that asset types are used to define which features are allowed to be connected, attached, or contained to other features.

A screenshot of the junction edge connectivity rules from the network properties dialog. It shows many rules, implying that all types of features are allowed to be connected.
The initial connectivity rules created by the migration tool allow all junctions, devices, and edges in a domain to be connected.

The utility network produced by the Migrate to Utility Network tool allows every asset type to connect to every other asset type, which is quite different from the Utility Network Foundations that have a conservative set of rules based on how equipment can be connected in the field.

You can learn more about how asset groups and asset types are used by reading the feature classification topic in the online Help archive. You can also learn how to configure different behaviors in a utility network using asset types by reading the Configure a utility network topic in the online Help archive.

Configuring Asset Types

When a class is migrated into the utility network, how do you control how asset types are created? If you have subtypes, the best way to configure asset types is to select its subtype field as the asset type field. This makes it easier to configure connectivity rules, and other pieces of the utility network, to act upon each of these asset types with more specific behaviors.

But what do you do if you want asset types, but don’t have a subtype field? Any field with a coded value domain assigned to it can be used to populate the asset type field. If you don’t have any fields you want to use to define asset types for an asset group, you can always leave the asset type field mapping blank and have all the asset group belong to a single asset type.

Let’s look at an example of this in a water model that doesn’t use types. If we migrate our device classes without specifying an asset type field, each asset group gets a single asset type with the same name as the asset group.

A screenshot showing the asset groups and asset types of the water device layer from the table of contents of a map. Each asset group has only a single asset type.
By default, each asset group only has a single asset type

This means that all the features will behave the same in the network and will have the same configuration. While this is fine for some classes, other classes may have a field that you can use to better differentiate the types of features in the class. If we populate the asset type field with the “Valve Type” field on Control Valves and the “Structure Type” field on Network Structures, we will instead end up with an output that looks like this:

A screenshot of the symbology of the water device layer showing its asset groups and asset types. The control valve layer can now be seen to have two asset types: pressure reducer and check valve. The network structure layer can now be seen to have four asset types: enclosed storage facility, production well, treatment plant, and intake.
When an asset type field is specified during mapping, the asset group can have multiple asset types.

Why is this important? Because these two classes contain very different types of equipment that affect the way we manage our network we need to be able to differentiate them. Pressure-reducing valves are used to manage pressure zones (a form of subnetwork), while check valves are used to prevent water from backflowing. Each of the network structures serves its own unique role within the network, and being able to differentiate them allows us to better capture those behaviors.

So how do you know when to configure a field as an asset type field? If a field is used to define the subtypes of a class, or if you would like to configure snapping/connectivity rules based on the contents of a field, then you should consider using it as the asset type field for the mapping.

Asset types play an important role in configuring your utility network, because they allow the utility network to differentiate behaviors between different features. When you are configuring different rules and behaviors in the utility network, you will see that this configuration often refers to a specific asset type within the network. This is how the system can identify that certain pieces of equipment are allowed to act as network sources, while others can act as barriers. For more details on the different types of configurations you can apply to a utility network, and which ones rely on the asset type, read the Configure a utility network page in the ArcGIS Help Online.

Subnetwork Definition

The last configuration we want to examine is one of the options during mapping to specify that the mapping for that class is a controller. Selecting this option will apply configurations to the asset types in that class so they can act as subnetwork controllers, the devices that act as the sources/sinks in the network. Additionally, if the features in these classes have an ancillary role value of source or sink, the tool will create a CSV file that you can import to easily enable them as subnetwork controllers in your network. Let’s walk through the process below.

In the mappings section of the form, the Network Structure class was identified as being a class that acts as a controller.

A screenshot showing the network structure class mapped to the water device class. Special attention is drawn to the fact that the Is Controller box is checked for this mapping.
Identifying a source class as a controller allows it to manage subnetworks in the final model.

Any classes identified as containing controllers during the mapping process will be configured so their features can be Subnetwork Controllers in the utility network. This includes assigning them the Subnetwork Controller network category, setting an appropriate Terminal Configuration, and adding a Tier to the utility network that allows them to act as a subnetwork controller. The tier created by the tool has the following properties:

  • Tier name – Based on the domain network name
  • Tier rank – 1
  • Supports disjoint networks – True
  • Update subnetwork policy – Do not manage status, do not update structure/domain contains, do not use eventing
  • Valid subnetwork controllers – All the classes configured as subnetwork controllers
  • Valid devices – All device classes
  • Valid junctions – All junction classes
  • Valid lines – All line classes
  • Aggregated line – None
  • Trace configuration – Do not include structures, containers, or content. Disabled devices are barriers.
  • Subnetwork diagram – None

These default values allow for a simple configuration that allows everything in the network to belong to a single tier. This generic configuration is a good start for a generic network, but there are certain changes that each industry typically makes to these configurations to support their workflows. For example, the electric industry typically does not allow disjoint networks and manages the is dirty field. Changing these properties is a common administrative task performed by running the Set Subnetwork Definition tool.

Creating Subnetworks

In addition to creating an initial subnetwork definition, the tool can also create an initial set of subnetwork controllers for you if you meet the following criteria:

  • You must have features with an ancillary role value of source/sink and the class must participate in a Geometric Network
  • You must map these classes as subnetwork controllers

Let’s look at an example. Create a mapping for a water domain network. These networks use sources and are typically hierarchical.

A screenshot showing the domain network configuration from the mapping section of the Migrate To Utility Network tool. It shows a mapping for the Water domain with a name of Water, subtnetwork controller type of Source, and a tier type of Hierarchical
The water domain is typically a source based, hierarchical domain network.

We then add a mapping for the Network Structure class and check the option saying that this class contains controllers.

A screenshot showing the network structure class mapped to the water device class. Special attention is drawn to the fact that the Is Controller box is checked for this mapping.
Identifying a source class as a controller allows it to manage subnetworks in the final model.

When the tool runs it checks to see if the class belongs to a geometric network, and if it does it checks to see if any features in that class have an ancillary role of source or sink. Below we can see that this class has four records with an ancillary role of Source.

A screenshot showing a table in ArcGIS Pro for four network structures. Each row shows the structure type of the network structure and the ancillary role for all four rows is Source.
In the example dataset, the network structure class in the geometric network has several features with an ancillary role of Source.

If one or more sources/sinks are discovered, this has an important impact on the output of the tool.

  • Only those asset types will be allowed to be subnetwork controllers.
  • The tool will populate a CSV file that can be imported to turn those features into subnetwork controllers

The controller CSV file will be in the same directory as the output geodatabase. This file contains all the information required to enable those features as subnetwork controllers for a single system-wide subnetwork. You can see the contents of the file below:

A screenshot of a table meant to represent the CSV output of the migration tool. It contains rows that represent the four controllers for the network structures shown earlier in the article.
Sample controllers.csv file output by the migration tool.

You should review and update this file before importing it into your network using the Import Subnetwork Controllers field. Below are the columns you will want to pay special attention to

  • Subnetwork Controller Name – The tool uses the feature’s GlobalID by default. If you have another globally unique identifier you want to use to identify the controller you can populate it here.
  • Subnetwork Name – If you have multiple systems in your network, you will want to adjust the value for each controller to match your desired system names. For electric customers, each subnetwork controller typically controls a single subnetwork that represents a feeder.

Once you’ve made the desired changes, you can then import the file using the Import Subnetwork Controllers tool.

A screenshot of the Import Subnetwork Controllers tool that is configured to import the controllers CSV file from the previous example into the example utility network.
Use the import subnetwork controllers to import the controllers CSV file.

Note: If you decide to change your subnetworks after importing them, you must manually delete them. Make sure you carefully review and update the CSV file before you import it.

Using Subnetworks

Before you can do any tracing or analysis with your subnetworks, you will need to resolve all your topology errors. You may need to perform some additional configuration on your network if you weren’t using your geometric network for tracing, used custom trace weights, or used third-party extensions to perform tracing.

However, once you’ve cleaned up your data you will be able to test your subnetwork(s) by using the Trace tool as shown below.

A screenshot showing the Trace geoprocessing tool. It is configured to run a connected trace for the water domain network and water system tier. The water system subnetwork that was imported earlier in the article is selected.
Use the trace tool to perform a subnetwork trace for any subnetworks that have been created and validated in your utility network.

You can use the Update Subnetwork tool to create a subnetwork line for each subnetwork and populate a subnetwork name field on each feature. With additional configuration, you can make your subnetworks calculate summary statistics, like the total length of linear assets or the number of service connections.

A screenshot showing the update subnetwork tool configured to update the water system subnetwork shown earlier in the article.
Use the update subnetwork tool to validate and persist information about the subnetwork in the database.

You can learn more about subnetworks in the Analysis and Tracing with ArcGIS Utility Network learning series.

Non-network data

In addition to migrating your network data into utility network features, the tool also allows you to migrate standalone tables, related data, and attachments. This process is relatively straightforward, with a few limitations. The first limitation is that the tool can only migrate GlobalID based relationships. This is because relationships based on ObjectIDs or other fields are not guaranteed to be preserved during data migration. The second restriction is that the tool can only migrate 1:1 or 1:M relationships, any M:N relationships cannot be migrated at this time. The last restriction is that any classes that make use of custom class extensions cannot be migrated, as the tool will be unable to read the classes.

If your data meets all those restrictions, then the desired objects will be copied to the target database and into a dataset with the same name as the origin, and any relationship classes between the copied features will be recreated in the target database. This includes standalone tables and feature classes as well as annotation and dimensioning features.

The related classes that are copied over will not be consolidated, even if the items they were related to have been consolidated. If you have relationship classes for several different device classes in your source database your target database will have the exact same number of attachment classes and relationships in the target database, even though they are all related to a single device class. However, because a class can only have a single attachments class all attachments will be consolidated to a single attachments class.

Conclusion

A screenshot showing the geodatabase created by the migration tool on the left and a map on the right. The map on the right appears different from the original map show at the beginning of the article. Layers appear to have different symbols applied and there appears to be scale suppression enabled on many of the layers because only five point features are visible.
Example output database and map after applying symbology from the original geometric network map.

Now that you’ve seen how the Migrate to Utility Network tool creates and configures a utility network based on your data, you are better equipped to understand how you can use it to create your own utility network model. This tool makes it easy for customers of all sizes to experiment with the utility network using their data, learn about the capabilities of the utility network, and make informed decisions about whether to build their own utility network or adopt a Utility Network Foundation. The next article in this series discusses the matter of data cleanup. The migration toolset also includes tools to assist in identifying and resolving critical data quality issues. Streamlining and improving this error resolution process is another important area where we’ve made improvements to ensure that data quality issues aren’t preventing customers from realizing the benefits of their utility network implementation.

The conversation continues over on the Esri Community site! You can not only ask questions there, but you can download these tools and find additional resources covering topics like configuration and building your own data migration for the utility network.

Share this article