Underground Facilities Management (UFM) Implementation
Migrating your 10.x Conduit Manager data is accomplished by working with your data conversion and implementation team to follow the steps outlined below. Schneider Electric does not provide developer samples to address all the conversion steps necessary to move from 10.x Conduit Manager to Conduit Manager XI. However, several developer samples have been provided to help with some of the more complex migration steps. We expect data migration vendors to use the developer samples we’re providing and Esri’s UN migration tools to complete the conversion process. We believe it will be common for data migration vendors to modify these developer samples based on the customer’s existing data and feedback from the customer. To download these developer samples, refer to the Conduit Manager Data Migration 10.x to XI article on myArcFM.
Step 1: Create Vault Polygons
Customers that implemented UFM should be able to use their UFMFloor polygons to represent vault boundaries in Editor’s data model.
Step 2: Migrating Ducts
To migrate from the UFM 10.x data model, features in the Duct feature class (UFMDUCT class model name) need to be moved from their locations on UFMWall features to the edge of the UFMFloor features. This is required because the Editor XI data model doesn't contain UFMWall features. In the Editor XI data model, walls are modeled as the edges of Vault polygons. The Create Duct Ends for UFM Ducts developer sample for UFM data uses 10.x Conduit Manager data to create DuctEnd, DuctBankEnd, and ConnectionPoint features in staging feature classes within the 10.x database. These features should be copied to the target UN database in Step 4.
Create Duct Ends for UFM Ducts Developer Sample
The Create Duct Ends for UFM Ducts developer sample, written for use in ArcMap, iterates over UFMWalls and ConduitSystem features related to the selected Underground Structures. The sample uses information from the ConduitSystem features and the UFMDucts on the UFMWalls to create three different types of features that are used to populate UN data in the Editor XI data model:
-
One Duct Bank End point is created where the conduit intersects the boundary of the UFMWall and UFMFloor.
-
One Duct End point feature is created for each UFMDuct on the UFMWall. The Duct End features are created on the boundary of the UFMWall and UFMFloor.
-
One Underground Connection Point feature is created at the same location as each Duct end feature that is related to a cable.
It is implemented in ConduitDataConversionAddin.sln. The sample requires the following data configuration:
-
A point feature class with the ManholeFeatureSnap model name assigned
-
An edge feature class with the ULS model name assigned
-
A polygon feature class with the UFMWall model name assigned. The sample requires the following field on this feature class:
-
ConvertedDate — this is a date field with the ConvertedDate field model name assigned. This field is used by the sample to track which walls have already been processed. The code checks this field before processing a wall to avoid creating duplicate DuctBankEnds, DuctEnds, and UndergroundConnectionPoints in the event that the user runs the tool on the same Underground Structure more than once.
-
The sample requires a dataset with Z coordinates defined containing the following feature classes:
-
A point feature class with the DuctBankEnd model name assigned. This feature class’s coordinates must have Z values. The DuctBankEnd feature class requires the following field:
-
ConduitObjectID — this is a long integer field with the ConduitIdentifier field model name assigned.
-
-
A point feature class with the DuctEnd model name assigned. This feature class’s coordinates must include Z values. The DuctEnd feature class requires the following fields:
-
ConduitObjectId — this is a long integer field with the ConduitIdentifier field model name assigned.
-
Diameter — this is a text field with the DuctSize model name assigned.
-
DuctCrossSectionShape — this is a short integer field with the DuctCrossSectionShape model name assigned.
-
DuctId — this is a text field with the DuctName model name assigned.
-
IsAvailable — this is a short integer field with the DuctAvailability model name assigned.
-
IsOccupied — this is a short integer field with the DuctOccupied model name assigned.
-
Material — this is a text field with the DuctMaterial model name assigned.
-
-
A point feature class with the UndergroundConnectionPoint model name assigned — this feature class’s coordinates must include Z values. The UndergroundConnectionPoint feature class requires the following field:
-
DucEndObjectId — this is a long integer field with the DuctEndIdentifier field model name assigned.
-
Step 3: Cross-Section Anno Migration Part One: ArcMap Add-in Developer Sample
ArcFM 10.x cross-section annotation must go through a conversion process so it can be edited in ArcGIS Pro because ArcGIS Pro does not support 10.x annotation that contains group elements. ArcFM 10.x cross-section annotation features are group elements that are usually composed of polygon elements that represent ducts and text elements that are used to label the ducts and describe the ducts’ contents.
The Create Features from Cross-Section Anno Group Elements ArcMap add-in developer sample is used to create features from individual elements contained within the cross-section annotation group elements. The geometry of the ducts (polygons) within the cross-section annotation group elements is used to create polygon features in a new DuctEndFlagConversion feature class described below. The add-in populates the ConduitObjectId field with the ObjectId of the conduit the cross-section annotation is related to. The ConduitObjectId field can be replaced with a GUID field if the conduit feature class is configured to use global Ids.
-
DuctEndFlagConversion - polygon feature class:
-
Class model name: DuctEndFlag
-
Fields
-
|
Field Name |
Data Type |
Field Model Name |
ConduitObjectId |
Long Integer |
ConduitIdentifier |
|
Rotation |
Float |
SymbolRotation |
|
DuctId |
Text |
DuctName |
|
DuctFlagOutlineId |
GUID |
DuctFlagOutlineId |
A rectangular “DuctFlagOutlineConversion” polygon is added around DuctEndFlagConversion features that are related to the same conduit. This polygon feature is used in ArcFM Editor’s UN data model for feature-linked annotation that describes the contents of the duct end flags.
-
DuctFlagOutlineConversion - polygon feature class
-
Class model name: DuctFlagOutline
-
Fields
-
|
Field Name |
Data Type |
Field Model Name |
|
DuctFlagOutlineId |
GUID |
DuctFlagOutlineId |
|
ConduitObjectId |
Long Integer |
ConduitIdentifier |
Leader lines found in the cross-section annotation feature class are copied to a Line feature class that has the CrossSectionLeaderLine class model name. This feature class does not have any extra attributes.
The DuctEndFlagConversion, DuctFlagOutlineConversion, and CrossSectionLeaderLine features should be copied to the target UN database in Step 4.
Step 4: Migrate 10.x Data to a Utility Network (UN) Database
Use ArcGIS Pro’s Migrate to Utility Network geoprocessing tool or other Esri tools to copy the data into the target UN database.
The best way to understand ArcFM Editor’s UN data model is to use the sample database. Add a vault, connect a duct bank to the vault, and then use ArcGIS Pro’s Attribute pane to explore the features and their connections. However, these points might also be helpful:
-
StructureLine - DuctBank and StructureEdgeObject - DuctPath - Duct and StructureJunction – Duct Node -Duct End:
-
10.x Conduit line features should be migrated to StructureLine - DuctBank features in Editor’s UN data model.
-
The StructureLine – DuctBank features created for each 10.x conduit feature should contain a StructureEdgeObject - DuctPath - Duct for each duct in the 10.x conduit.
-
Each end of a StructureEdgeObject - DuctPath - Duct should connect to a StructureJunction – Duct Node -Duct End.
-
Each StructureJunction – Duct Node - Duct End should only connect to one StructureEdgeObject - DuctPath - Duct.
-
-
StructureJunction – Duct Bank Node - Duct Bank Hub
-
Every StructureJunction – Duct Bank Node - Duct Bank End should connect to a Duct Bank Hub
-
-
StructureJunction - Duct Bank Node - Duct Bank End
-
A Duct Bank End should be at each end of a StructureLine - DuctBank
-
-
ElectricJunction - Connection Point
-
Connection Points are necessary when a non-spatial cable is associated to a duct
-
Connection Points are not supported when a spatial cable is associated to a duct
-
Contained within a StructureJunction – Duct Node - Duct End
-
Connected to Electric Edge Object - Cable
-
Step 5: Create Duct End Flag and Duct Flag Outline Annotation Classes in the UN Database
Create a DuctEndFlagAnno annotation feature class that is linked to the StructureBoundary feature class. This annotation feature class should have the following properties:
Create a DuctFlagOutlineAnno annotation feature class that is linked to the StructureBoundary feature class. This annotation feature class should have the following properties:
-
Expression: This annotation string uses ‘::” as a line delimiter:
var result = split($feature.notes, '::', -1, true)
for (var val in result)
{
val = Trim(val);
}
concatenate(result, TextFormatting.NewLine)
Step 6: Create Duct End Flag Annotation for Duct End Flag Polygons
Use ArcGIS Pro’s Annotate Selected Features geoprocessing tool to create annotation for all the duct end polygon features. The new feature-linked annotation should be created at the center of duct end flag polygons.
Step 7: Cross-Section Anno Migration Part Two: ArcGIS Pro Add-in Developer Sample
The ArcGIS Pro add-in developer samples named Create duct flags and Create duct flag outline annotation are contained in a Visual Studio solution named ConvertCrossSectionAnno-ArcGISPro.sln.
To use the Create duct flags developer sample, select some DuctFlagOutline features and press the Create duct flags tool. This tool performs the following steps for each selected duct flag outline feature:
-
Locates the closest point on the duct bank (conduit) line feature that is related to the duct flag outline feature.
-
Finds the nearest vault that is closest to the point on the duct bank feature.
-
Finds the vault wall segment that intersects the duct bank.
-
Identifies the duct end features on that vault wall, matches them to duct end flag features, and copies attributes (e.g. OccupantDescription, IsOccupied) from duct ends to duct end flags.
-
Creates containment associations between duct end flags and the ducts they represent.
-
Updates the duct flag outline’s Notes field with the vault’s Facility ID and a concatenated list of values from the duct end flags’ OccupantDescription fields.
The Create duct flag outline annotation developer sample uses the string in the duct flag outline’s Notes field to create feature-linked annotation that describes the contents of the duct end flags.
It may be helpful to visualize the UFM data model for Conduit Manager 10.x compared to the Editor XI data model for Conduit Manager. Below is an image of features representing the UFM data model for Conduit Manager 10.x.
Below is an image of features representing the Editor XI data model.
The tables provided below identify the feature classes and fields in the 10.x Series application and where they should be mapped in the XI Series application. Use these tables to scope and plan your data migration. With the exception of the Conduit Blob field, all of the Conduit Manager 10.x fields have an equivalent field in the Conduit Manager XI data model. Your company likely added other fields to your data model, and these fields vary by company. Thus, they are not represented in the tables below. Most likely, there is a logical field in the Conduit Manager XI data model to accept your additional fields. Work with your implementation team to determine the best fit.
|
10.x Feature Class |
Asset Group |
Asset Type |
|---|---|---|
|
Duct |
Structure Junction |
Duct Node — Duct End |
|
Conduit Manager 10.x Field |
Conduit Manager 10.x Property Name in Conduit Blob |
Equivalent Conduit Manager XI Field |
Type |
|---|---|---|---|
|
DuctSize |
Diameter |
Diameter |
Double |
|
Material |
Material |
Material |
Short |
|
Available |
Availability |
Is Available (Y/N) |
Short |
|
Occupied |
DuctCables collection |
Is Occupied (Y/N) |
Short |
|
DuctName |
DuctID |
Duct ID |
Text |
|
GlobalID |
GlobalID |
Short |
|
|
CreationUser |
Creator |
Text |
|
|
DateCreated |
Creation Date |
Date |
|
|
LastUser |
Updated By |
Text |
|
|
DateModified |
Last Update |
Date |
|
10.x Feature Class |
Asset Group |
Asset Type |
|---|---|---|
|
Underground Structure |
Structure Junction |
Handhole, Manhole, Vault |
|
Conduit Manager 10.x Field |
Equivalent Conduit Manager XI Field |
Type |
|---|---|---|
|
FacilityID |
Facility ID |
Text |
|
WallHeight |
Height |
Short |
|
Material |
Material |
Short |
|
InstallationDate |
Install Date |
Date |
|
Manufacturer |
Manufacturer |
Text |
|
Comments |
Notes |
Text |
|
GlobalID |
Legacy ID |
Long |
|
CreationUser |
Creator |
Text |
|
DateCreated |
Creation Date |
Date |
|
LastUser |
Updated By |
Text |
|
DateModified |
Last Update |
Date |
|
SymbolRotation |
Symbol Rotation |
Short |
|
10.x Feature Class |
Asset Group |
Asset Type |
|---|---|---|
|
UFM Floor |
Structure Boundary |
Facility Boundary — Vault Boundary |
|
Conduit Manager 10.x Field |
Equivalent Conduit Manager XI Field |
Type |
|---|---|---|
|
FacilityID |
Facility ID |
Text |
|
GlobalID |
Legacy ID |
Long |
|
CreationUser |
Creator |
Text |
|
DateCreated |
Creation Date |
Date |
|
LastUser |
Updated By |
Text |
|
DateModified |
Last Update |
Date |
|
SymbolRotation |
Symbol Rotation |
Short |
|
10.x Feature Class |
Asset Group |
Asset Type |
|---|---|---|
|
UFM Wall |
Structure Boundary |
Facility Boundary — Vault Boundary |
Note: Walls in the 10.x model are modeled in the XI as edges of vault polygons. You can calculate wallHeight from a UFMWall that’s connected to the UFMFloor.
|
10.x Feature Class |
Asset Group |
Asset Type |
|---|---|---|
|
Conduit System |
Structure Line |
Duct Bank — Duct Bank |
|
Conduit Manager 10.x Field |
Conduit Manager 10.x Property Name in Conduit Blob |
Equivalent Conduit Manager XI Field |
Type |
|---|---|---|---|
|
FacilityID |
Facility ID |
Text |
|
|
Material |
Material |
Short |
|
|
MeasuredLength |
Measured Length |
Double |
|
|
InstallationDate |
Install Date |
Date |
|
|
Configuration |
Does not store directly but can be calculated from blob |
Number of Available Ducts |
Short |
|
GlobalID |
Legacy ID |
Long |
|
|
CreationUser |
Creator |
Text |
|
|
DateCreated |
Creation Date |
Date |
|
|
LastUser |
Updated By |
Text |
|
|
DateModified |
Last Update |
Date |
|
10.x Feature Class |
Asset Group |
Asset Type |
|---|---|---|
|
Conduit System Blob Field |
Structure Junction |
Duct Node — Duct End |
|
Conduit Manager 10.x Property Name in Conduit Blob |
Equivalent Conduit Manager XI Field |
Type |
|---|---|---|
|
Diameter |
Diameter |
Double |
|
Material |
Material |
Short |
|
Availability |
Is Available (Y/N) |
Short |
|
Check the DuctCables collection |
Is Occupied (Y/N) |
Short |
|
DuctID |
Duct ID |
Text |
|
IsCircle |
Duct Cross Section Shape |
Short |


