<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<metadata xml:lang="en">
<Esri>
<SyncOnce>FALSE</SyncOnce>
<ArcGISFormat>1.0</ArcGISFormat>
<DataProperties>
<lineage>
<Process Date="20190923" Time="145305" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AddAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;expression&gt;function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
        var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
        var val = percent * range;
    var newVal = 0;
        if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
        if (newVal == range) newVal -= 2;
        if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
if ($feature.centerlineid == "New Centerline") return "RD-" + NextSequenceValue("CenterlineID");
if ($feature.centerlineid != null) return $feature.centerlineid;
var id = "RD-" + NextSequenceValue("CenterlineID");
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
var adds = [];
var deletes = [];
for (var road in intersectingRoads) {
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
        var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
        var validCut = true;
    var geometries = []
        for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i], 'feet') == 0) {
            validCut = false;
            continue;
        }
        var allParts  = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts )
        {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    if (validCut) {
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
            var firstGeometry = null;
        var secondGeomArray = [];            var firstPoint = Geometry(road).paths[0][0];
                for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            }
            else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
                var secondGeometry = Union(secondGeomArray);
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
                adds[0] = {
            'attributes': {'centerlineid' : road.centerlineid, 'roadclass' : road.roadclass, 'fullname' : road.fullname,
                           'fromright' : fromright, 'fromleft' : fromleft, 'toright' : newToFromRight[0], 'toleft' : newToFromLeft[0]
            },
            'geometry': firstGeometry
        }
        adds[1] = {
            'attributes': {'centerlineid' : 'New Centerline', 'roadclass' : road.roadclass, 'fullname' : road.fullname,
                        'fromright' : newToFromRight[1], 'fromleft' : newToFromLeft[1], 'toright' : toRight, 'toleft' : toLeft
            },
            'geometry': Union(secondGeomArray)
        }
                deletes[0] = { 'objectID': road.OBJECTID }            }
}
return {     'result' : id,
    'edit' : [{'className': 'RoadCenterline', 'adds' : adds, 'deletes' : deletes}]     };
&lt;/expression&gt;&lt;is_editable&gt;True&lt;/is_editable&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;field_name&gt;centerlineid&lt;/field_name&gt;&lt;exclude_from_client_eval&gt;True&lt;/exclude_from_client_eval&gt;&lt;batch&gt;False&lt;/batch&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;category&gt;-1&lt;/category&gt;&lt;/AddAttributeRule&gt;&lt;ReorderAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;evaluation_order&gt;1&lt;/evaluation_order&gt;&lt;/ReorderAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20190923" Time="145537" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AddAttributeRule&gt;&lt;rule_name&gt;Validate Full Road Name&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;expression&gt;var fullname = $feature.fullname;
if (fullname == null) return fullname;
var masterStreetNames = Filter(FeatureSetByName($datastore, "MasterStreetName"), "fullname = '" + fullname + "'");
if (Count(masterStreetNames) == 0) {
    return {
        "errorMessage": "Full Road Name is invalid, must be defined in the Master Street Name table."
    }
}
return fullname;
&lt;/expression&gt;&lt;is_editable&gt;True&lt;/is_editable&gt;&lt;triggering_events_insert&gt;False&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;True&lt;/triggering_events_update&gt;&lt;field_name&gt;fullname&lt;/field_name&gt;&lt;exclude_from_client_eval&gt;False&lt;/exclude_from_client_eval&gt;&lt;batch&gt;False&lt;/batch&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;category&gt;-1&lt;/category&gt;&lt;/AddAttributeRule&gt;&lt;ReorderAttributeRule&gt;&lt;rule_name&gt;Validate Full Road Name&lt;/rule_name&gt;&lt;evaluation_order&gt;2&lt;/evaluation_order&gt;&lt;/ReorderAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20190923" Time="145544" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Validate Full Road Name&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;var fullname = $feature.fullname;
if (fullname == null) return fullname;
var masterStreetNames = Filter(FeatureSetByName($datastore, "MasterStreetName"), "fullname = '" + fullname + "'");
if (Count(masterStreetNames) == 0) {
    return {
        "errorMessage": "Full Road Name is invalid, must be defined in the Master Street Name table."
    }
}
return fullname;
&lt;/expression&gt;&lt;category&gt;-1&lt;/category&gt;&lt;triggering_events_insert&gt;False&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;True&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;DisableAttributeRules&gt;&lt;rule_name&gt;Validate Full Road Name&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;/DisableAttributeRules&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20190923" Name="Flip Line" Time="154638" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Editing Tools.tbx\FlipLine">FlipLine "Roads\Roads - Local Streets"</Process>
<Process Date="20190923" Name="Calculate New From Right" Time="154639" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "I_Roads - Local Streets_OBJECTID" fromright 971 PYTHON3 # "Long (large integer)"</Process>
<Process Date="20190923" Name="Calculate New From Left" Time="154639" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "I_Roads - Local Streets_OBJECTID" fromleft 972 PYTHON3 # "Long (large integer)"</Process>
<Process Date="20190923" Name="Calculate New To Left" Time="154639" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "I_Roads - Local Streets_OBJECTID" toleft 904 PYTHON3 # "Long (large integer)"</Process>
<Process Date="20190923" Name="Calculate New To Right" Time="154639" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "I_Roads - Local Streets_OBJECTID" toright 901 PYTHON3 # "Long (large integer)"</Process>
<Process Date="20190923" Name="Flip Line" Time="154723" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Editing Tools.tbx\FlipLine">FlipLine "Roads\Roads - Local Streets"</Process>
<Process Date="20190923" Name="Calculate New From Right" Time="154724" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "I_Roads - Local Streets_OBJECTID" fromright 901 PYTHON3 # "Long (large integer)"</Process>
<Process Date="20190923" Name="Calculate New From Left" Time="154724" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "I_Roads - Local Streets_OBJECTID" fromleft 904 PYTHON3 # "Long (large integer)"</Process>
<Process Date="20190923" Name="Calculate New To Left" Time="154725" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "I_Roads - Local Streets_OBJECTID" toleft 972 PYTHON3 # "Long (large integer)"</Process>
<Process Date="20190923" Name="Calculate New To Right" Time="154725" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "I_Roads - Local Streets_OBJECTID" toright 971 PYTHON3 # "Long (large integer)"</Process>
<Process Date="20190923" Time="165702" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
        var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
        var val = percent * range;
    var newVal = 0;
        if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
        if (newVal == range) newVal -= 2;
        if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
if ($feature.centerlineid == "New Centerline") return "RD-" + NextSequenceValue("CenterlineID");
if ($feature.centerlineid != null) return $feature.centerlineid;
var id = "RD-" + NextSequenceValue("CenterlineID");
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
var adds = [];
var deletes = [];
var altRoadAdds = [];
for (var road in intersectingRoads) {
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
        var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
        var validCut = true;
    var geometries = []
        for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i], 'feet') == 0) {
            validCut = false;
            continue;
        }
        var allParts  = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts )
        {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    if (validCut) {            var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
            var firstGeometry = null;
        var secondGeomArray = [];            var firstPoint = Geometry(road).paths[0][0];
                for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            }
            else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
                var secondGeometry = Union(secondGeomArray);
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
                adds[Count(adds)] = {
            'attributes': {'centerlineid' : road.centerlineid, 'roadclass' : road.roadclass, 'fullname' : road.fullname,
                           'fromright' : fromright, 'fromleft' : fromleft, 'toright' : newToFromRight[0], 'toleft' : newToFromLeft[0]
            },
            'geometry': firstGeometry
        }
        adds[Count(adds)] = {
            'attributes': {'centerlineid' : 'New Centerline', 'roadclass' : road.roadclass, 'fullname' : road.fullname,
                        'fromright' : newToFromRight[1], 'fromleft' : newToFromLeft[1], 'toright' : toRight, 'toleft' : toLeft
            },
            'geometry': Union(secondGeomArray)
        }
                deletes[Count(deletes)] = { 'objectID': road.OBJECTID }            }
}
return {     'result' : id,
    'edit' : [{'className': 'RoadCenterline', 'adds' : adds, 'deletes' : deletes}]     };
&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20190923" Time="170302" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
        var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
        var val = percent * range;
    var newVal = 0;
        if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
        if (newVal == range) newVal -= 2;
        if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
if ($feature.centerlineid == "New Centerline") return "RD-" + NextSequenceValue("CenterlineID");
if ($feature.centerlineid != null) return $feature.centerlineid;
var id = "RD-" + NextSequenceValue("CenterlineID");
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
var adds = [];
var deletes = [];
var nameAliasAdds = [];
for (var road in intersectingRoads) {
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
        var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
        var validCut = true;
    var geometries = []
        for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i], 'feet') == 0) {
            validCut = false;
            continue;
        }
        var allParts  = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts )
        {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    if (validCut) {            var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
            var firstGeometry = null;
        var secondGeomArray = [];            var firstPoint = Geometry(road).paths[0][0];
                for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            }
            else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
                var secondGeometry = Union(secondGeomArray);
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
                adds[Count(adds)] = {
            'attributes': {'centerlineid' : road.centerlineid, 'roadclass' : road.roadclass, 'fullname' : road.fullname,
                           'fromright' : fromright, 'fromleft' : fromleft, 'toright' : newToFromRight[0], 'toleft' : newToFromLeft[0]
            },
            'geometry': firstGeometry
        }
        adds[Count(adds)] = {
            'attributes': {'centerlineid' : 'New Centerline', 'roadclass' : road.roadclass, 'fullname' : road.fullname,
                        'fromright' : newToFromRight[1], 'fromleft' : newToFromLeft[1], 'toright' : toRight, 'toleft' : toLeft
            },
            'geometry': Union(secondGeomArray)
        }
                deletes[Count(deletes)] = { 'objectID': road.OBJECTID }
        var roadNameAliases = Filter(FeatureSetByName($datastore, "AliasStreetName"), "centerlineid = '" + road.centerlineid + "'");
        for (var roadNameAlias in roadNameAliases) {
            nameAliasAdds[Count(nameAliasAdds)] = {
                'attributes': {'centerlineid' : roadNameAlias.centerlineid, 'fullname' : roadNameAlias.fullname}
            }
        }
    }
}
return {     'result' : id,
    'edit' : [{'className': 'RoadCenterline', 'adds' : adds, 'deletes' : deletes},               {'className': 'AliasStreetName', 'adds': nameAliasAdds}]     };
&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20190923" Time="170855" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
        var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
        var val = percent * range;
    var newVal = 0;
        if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
        if (newVal == range) newVal -= 2;
        if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
if ($feature.centerlineid == "New Centerline") return "RD-" + NextSequenceValue("CenterlineID");
if ($feature.centerlineid != null) return $feature.centerlineid;
var id = "RD-" + NextSequenceValue("CenterlineID");
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
var adds = [];
var deletes = [];
var nameAliasAdds = [];
for (var road in intersectingRoads) {
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
        var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
        var validCut = true;
    var geometries = []
        for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i], 'feet') == 0) {
            validCut = false;
            continue;
        }
        var allParts  = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts )
        {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    if (validCut) {            var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
            var firstGeometry = null;
        var secondGeomArray = [];            var firstPoint = Geometry(road).paths[0][0];
                for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            }
            else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
                var secondGeometry = Union(secondGeomArray);
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
                adds[Count(adds)] = {
            'attributes': {'centerlineid' : road.centerlineid, 'roadclass' : road.roadclass, 'fullname' : road.fullname,
                           'fromright' : fromright, 'fromleft' : fromleft, 'toright' : newToFromRight[0], 'toleft' : newToFromLeft[0]
            },
            'geometry': firstGeometry
        }
        var newCenterlineID = "RD-" + NextSequenceValue("CenterlineID");
        adds[Count(adds)] = {
            'attributes': {'centerlineid' : newCenterlineID, 'roadclass' : road.roadclass, 'fullname' : road.fullname,
                        'fromright' : newToFromRight[1], 'fromleft' : newToFromLeft[1], 'toright' : toRight, 'toleft' : toLeft
            },
            'geometry': Union(secondGeomArray)
        }
                deletes[Count(deletes)] = { 'objectID': road.OBJECTID }
        var roadNameAliases = Filter(FeatureSetByName($datastore, "AliasStreetName"), "centerlineid = '" + road.centerlineid + "'");
        for (var roadNameAlias in roadNameAliases) {
            nameAliasAdds[Count(nameAliasAdds)] = {
                'attributes': {'centerlineid' : newCenterlineID, 'roadpredir' : roadNameAlias.roadpredir, 'roadname' : roadNameAlias.roadname, 'roadtype' : roadNameAlias.roadtype,}
            }
        }
    }
}
return {     'result' : id,
    'edit' : [{'className': 'RoadCenterline', 'adds' : adds, 'deletes' : deletes},               {'className': 'AliasStreetName', 'adds': nameAliasAdds}]     };
&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20190923" Time="171510" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
        var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
        var val = percent * range;
    var newVal = 0;
        if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
        if (newVal == range) newVal -= 2;
        if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
var id = "RD-" + NextSequenceValue("CenterlineID");
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
var nameAliasAdds = [];
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
var adds = [];
var updates = [];
for (var road in intersectingRoads) {
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
        var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
        var validCut = true;
    var geometries = []
        for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i], 'feet') == 0) {
            validCut = false;
            continue;
        }
        var allParts  = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts )
        {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    if (validCut) {
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
            var firstGeometry = null;
        var secondGeomArray = [];            var firstPoint = Geometry(road).paths[0][0];
                for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            }
            else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
                var secondGeometry = Union(secondGeomArray);
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
                updates[Count(updates)] = {
            'objectID': road.OBJECTID,
            'attributes': {'toright' : newToFromRight[0], 'toleft' : newToFromLeft[0]},
            'geometry': firstGeometry
        }
        adds[Count(adds)] = {
             'attributes': {'centerlineid' : 'New Centerline', 'roadclass' : road.roadclass, 'fullname' : road.fullname,
                            'fromright' : newToFromRight[1], 'fromleft' : newToFromLeft[1], 'toright' : toRight, 'toleft' : toLeft
             },
             'geometry': Union(secondGeomArray)
        }
                var roadNameAliases = Filter(FeatureSetByName($datastore, "AliasStreetName"), "centerlineid = '" + road.centerlineid + "'");
        for (var roadNameAlias in roadNameAliases) {
            nameAliasAdds[Count(nameAliasAdds)] = {
                'attributes': {'centerlineid' : newCenterlineID, 'roadpredir' : roadNameAlias.roadpredir, 'roadname' : roadNameAlias.roadname, 'roadtype' : roadNameAlias.roadtype,}
            }
        }
    }
}
return {     'result' : id,
    'edit' : [{'className': 'RoadCenterline', 'adds' : adds, 'updates' : updates},               {'className': 'AliasStreetName', 'adds': nameAliasAdds}]     };&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20190923" Time="171609" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
        var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
        var val = percent * range;
    var newVal = 0;
        if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
        if (newVal == range) newVal -= 2;
        if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
var id = "RD-" + NextSequenceValue("CenterlineID");
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
var nameAliasAdds = [];
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
var adds = [];
var updates = [];
for (var road in intersectingRoads) {
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
        var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
        var validCut = true;
    var geometries = []
        for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i], 'feet') == 0) {
            validCut = false;
            continue;
        }
        var allParts  = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts )
        {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    if (validCut) {
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
            var firstGeometry = null;
        var secondGeomArray = [];            var firstPoint = Geometry(road).paths[0][0];
                for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            }
            else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
                var secondGeometry = Union(secondGeomArray);
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
                updates[Count(updates)] = {
            'objectID': road.OBJECTID,
            'attributes': {'toright' : newToFromRight[0], 'toleft' : newToFromLeft[0]},
            'geometry': firstGeometry
        }
        var newCenterlineID = "RD-" + NextSequenceValue("CenterlineID");
        adds[Count(adds)] = {
             'attributes': {'centerlineid' : 'New Centerline', 'roadclass' : road.roadclass, 'fullname' : road.fullname,
                            'fromright' : newToFromRight[1], 'fromleft' : newToFromLeft[1], 'toright' : toRight, 'toleft' : toLeft
             },
             'geometry': Union(secondGeomArray)
        }
                var roadNameAliases = Filter(FeatureSetByName($datastore, "AliasStreetName"), "centerlineid = '" + road.centerlineid + "'");
        for (var roadNameAlias in roadNameAliases) {
            nameAliasAdds[Count(nameAliasAdds)] = {
                'attributes': {'centerlineid' : newCenterlineID, 'roadpredir' : roadNameAlias.roadpredir, 'roadname' : roadNameAlias.roadname, 'roadtype' : roadNameAlias.roadtype,}
            }
        }
    }
}
return {     'result' : id,
    'edit' : [{'className': 'RoadCenterline', 'adds' : adds, 'updates' : updates},               {'className': 'AliasStreetName', 'adds': nameAliasAdds}]     };&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20190923" Time="172229" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\Toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
        var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
        var val = percent * range;
    var newVal = 0;
        if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
        if (newVal == range) newVal -= 2;
        if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
if ($feature.centerlineid == "New Centerline") return;
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
var adds = [];
var updates = [];
for (var road in intersectingRoads) {
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
        var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
        var validCut = true;
    var geometries = []
        for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i], 'feet') == 0) {
            validCut = false;
            continue;
        }
        var allParts  = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts )
        {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    if (validCut) {
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
            var firstGeometry = null;
        var secondGeomArray = [];            var firstPoint = Geometry(road).paths[0][0];
                for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            }
            else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
                var secondGeometry = Union(secondGeomArray);
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
                updates[Count(updates)] = {
            'objectID': road.OBJECTID,
            'attributes': {'toright' : newToFromRight[0], 'toleft' : newToFromLeft[0]},
            'geometry': firstGeometry
        }
        adds[Count(adds)] = {
             'attributes': {'centerlineid' : 'New Centerline', 'roadclass' : road.roadclass, 'fullname' : road.fullname,
                            'fromright' : newToFromRight[1], 'fromleft' : newToFromLeft[1], 'toright' : toRight, 'toleft' : toLeft
             },
             'geometry': Union(secondGeomArray)
        }
    }
}
return { 'edit' : [{'className': 'RoadCenterline', 'adds' : adds, 'updates' : updates}] };
&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20190923" Time="172612" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\Toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
        var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
        var val = percent * range;
    var newVal = 0;
        if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
        if (newVal == range) newVal -= 2;
        if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
if ($feature.centerlineid == "New Centerline") return "RD-" + NextSequenceValue("CenterlineID");
if ($feature.centerlineid != null) return $feature.centerlineid;
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
var adds = [];
var updates = [];
for (var road in intersectingRoads) {
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
        var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
        var validCut = true;
    var geometries = []
        for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i], 'feet') == 0) {
            validCut = false;
            continue;
        }
        var allParts  = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts )
        {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    if (validCut) {
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
            var firstGeometry = null;
        var secondGeomArray = [];            var firstPoint = Geometry(road).paths[0][0];
                for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            }
            else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
                var secondGeometry = Union(secondGeomArray);
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
                updates[Count(updates)] = {
            'objectID': road.OBJECTID,
            'attributes': {'toright' : newToFromRight[0], 'toleft' : newToFromLeft[0]},
            'geometry': firstGeometry
        }
        adds[Count(adds)] = {
             'attributes': {'centerlineid' : 'New Centerline', 'roadclass' : road.roadclass, 'fullname' : road.fullname,
                            'fromright' : newToFromRight[1], 'fromleft' : newToFromLeft[1], 'toright' : toRight, 'toleft' : toLeft
             },
             'geometry': Union(secondGeomArray)
        }
    }
}
return {     'result' : id,
    'edit' : [{'className': 'RoadCenterline', 'adds' : adds, 'updates' : updates}]     };
&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20190923" Time="172650" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\Toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
        var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
        var val = percent * range;
    var newVal = 0;
        if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
        if (newVal == range) newVal -= 2;
        if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
if ($feature.centerlineid == "New Centerline") return "RD-" + NextSequenceValue("CenterlineID");
if ($feature.centerlineid != null) return $feature.centerlineid;
var id = "RD-" + NextSequenceValue("CenterlineID");
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
var adds = [];
var updates = [];
for (var road in intersectingRoads) {
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
        var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
        var validCut = true;
    var geometries = []
        for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i], 'feet') == 0) {
            validCut = false;
            continue;
        }
        var allParts  = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts )
        {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    if (validCut) {
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
            var firstGeometry = null;
        var secondGeomArray = [];            var firstPoint = Geometry(road).paths[0][0];
                for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            }
            else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
                var secondGeometry = Union(secondGeomArray);
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
                updates[Count(updates)] = {
            'objectID': road.OBJECTID,
            'attributes': {'toright' : newToFromRight[0], 'toleft' : newToFromLeft[0]},
            'geometry': firstGeometry
        }
        adds[Count(adds)] = {
             'attributes': {'centerlineid' : 'New Centerline', 'roadclass' : road.roadclass, 'fullname' : road.fullname,
                            'fromright' : newToFromRight[1], 'fromleft' : newToFromLeft[1], 'toright' : toRight, 'toleft' : toLeft
             },
             'geometry': Union(secondGeomArray)
        }
    }
}
return {     'result' : id,
    'edit' : [{'className': 'RoadCenterline', 'adds' : adds, 'updates' : updates}]     };
&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20190925" Time="130553" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;EnableAttributeRules&gt;&lt;rule_name&gt;Validate Full Road Name&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;/EnableAttributeRules&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20190925" Time="130705" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;DisableAttributeRules&gt;&lt;rule_name&gt;Validate Full Road Name&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;/DisableAttributeRules&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20190925" Time="131450" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
        var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
        var val = percent * range;
    var newVal = 0;
        if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
        if (newVal == range) newVal -= 2;
        if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
if ($feature.centerlineid != null) return $feature.centerlineid;
var id = "RD-" + NextSequenceValue("CenterlineID");
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
var adds = [];
var updates = [];
for (var road in intersectingRoads) {
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
        var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
        var validCut = true;
    var geometries = []
        for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i], 'feet') == 0) {
            validCut = false;
            continue;
        }
        var allParts  = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts )
        {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    if (validCut) {
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
            var firstGeometry = null;
        var secondGeomArray = [];            var firstPoint = Geometry(road).paths[0][0];
                for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            }
            else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
                var secondGeometry = Union(secondGeomArray);
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
                updates[Count(updates)] = {
            'objectID': road.OBJECTID,
            'attributes': {'toright' : newToFromRight[0], 'toleft' : newToFromLeft[0]},
            'geometry': firstGeometry
        }
        var newId = "RD-" + NextSequenceValue("CenterlineID");
        adds[Count(adds)] = {
             'attributes': {'centerlineid' : newId, 'roadclass' : road.roadclass, 'fullname' : road.fullname,
                            'fromright' : newToFromRight[1], 'fromleft' : newToFromLeft[1], 'toright' : toRight, 'toleft' : toLeft
             },
             'geometry': Union(secondGeomArray)
        }
    }
}
return {     'result' : id,
    'edit' : [{'className': 'RoadCenterline', 'adds' : adds, 'updates' : updates}]     };
&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20190925" Time="132107" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
        var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
        var val = percent * range;
    var newVal = 0;
        if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
        if (newVal == range) newVal -= 2;
        if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
if ($feature.centerlineid != null) return $feature.centerlineid;
var id = "RD-" + NextSequenceValue("CenterlineID");
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
var adds = [];
var updates = [];
var nameAliasAdds = [];
for (var road in intersectingRoads) {
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
        var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
        var validCut = true;
    var geometries = []
        for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i], 'feet') == 0) {
            validCut = false;
            continue;
        }
        var allParts  = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts )
        {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    if (validCut) {
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
            var firstGeometry = null;
        var secondGeomArray = [];            var firstPoint = Geometry(road).paths[0][0];
                for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            }
            else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
                var secondGeometry = Union(secondGeomArray);
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
                updates[Count(updates)] = {
            'objectID': road.OBJECTID,
            'attributes': {'toright' : newToFromRight[0], 'toleft' : newToFromLeft[0]},
            'geometry': firstGeometry
        }
        var newId = "RD-" + NextSequenceValue("CenterlineID");
        adds[Count(adds)] = {
             'attributes': {'centerlineid' : newId, 'roadclass' : road.roadclass, 'fullname' : road.fullname,
                            'fromright' : newToFromRight[1], 'fromleft' : newToFromLeft[1], 'toright' : toRight, 'toleft' : toLeft
             },
             'geometry': Union(secondGeomArray)
        }
                var roadNameAliases = Filter(FeatureSetByName($datastore, "AliasStreetName"), "centerlineid = '" + road.centerlineid + "'");
        for (var roadNameAlias in roadNameAliases) {
            nameAliasAdds[Count(nameAliasAdds)] = {
                'attributes': {'centerlineid' : newId, 'fullname' : roadNameAlias.fullname}
            }
        }
    }
}
return {     'result' : id,
    'edit' : [{'className': 'RoadCenterline', 'adds' : adds, 'updates' : updates},               {'className': 'AliasStreetName', 'adds': nameAliasAdds}]     };
&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20190925" Time="132406" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
        var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
        var val = percent * range;
    var newVal = 0;
        if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
        if (newVal == range) newVal -= 2;
        if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
if ($feature.centerlineid != null) return $feature.centerlineid;
var id = "RD-" + NextSequenceValue("CenterlineID");
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
var adds = [];
var updates = [];
var nameAliasAdds = [];
for (var road in intersectingRoads) {
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
        var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
        var validCut = true;
    var geometries = []
        for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i], 'feet') == 0) {
            validCut = false;
            continue;
        }
        var allParts  = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts )
        {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    if (validCut) {
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
            var firstGeometry = null;
        var secondGeomArray = [];            var firstPoint = Geometry(road).paths[0][0];
                for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            }
            else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
                var secondGeometry = Union(secondGeomArray);
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
                updates[Count(updates)] = {
            'objectID': road.OBJECTID,
            'attributes': {'toright' : newToFromRight[0], 'toleft' : newToFromLeft[0]},
            'geometry': firstGeometry
        }
        var newId = "RD-" + NextSequenceValue("CenterlineID");
        adds[Count(adds)] = {
             'attributes': {'centerlineid' : newId, 'roadclass' : road.roadclass, 'fullname' : road.fullname,
                            'fromright' : newToFromRight[1], 'fromleft' : newToFromLeft[1], 'toright' : toRight, 'toleft' : toLeft
             },
             'geometry': Union(secondGeomArray)
        }
                var roadNameAliases = Filter(FeatureSetByName($datastore, "AliasStreetName"), "centerlineid = '" + road.centerlineid + "'");
        for (var roadNameAlias in roadNameAliases) {
            nameAliasAdds[Count(nameAliasAdds)] = {
                'attributes': {'centerlineid' : newId, 'roadpredir' : roadNameAlias.roadpredir, 'roadname' : roadNameAlias.roadname, 'roadtype' : roadNameAlias.roadtype,}
            }
        }
    }
}
return {     'result' : id,
    'edit' : [{'className': 'RoadCenterline', 'adds' : adds, 'updates' : updates},               {'className': 'AliasStreetName', 'adds': nameAliasAdds}]     };
&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20190925" Time="133722" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
        var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
        var val = percent * range;
    var newVal = 0;
        if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
        if (newVal == range) newVal -= 2;
        if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
if ($feature.centerlineid != null) return $feature.centerlineid;
var id = "RD-" + NextSequenceValue("CenterlineID");
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
var adds = [];
var updates = [];
var nameAliasAdds = [];
for (var road in intersectingRoads) {
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
        var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
        var validCut = true;
    var geometries = []
        for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i], 'feet') == 0) {
            validCut = false;
            continue;
        }
        var allParts  = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts )
        {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    if (validCut) {
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
            var firstGeometry = null;
        var secondGeomArray = [];            var firstPoint = Geometry(road).paths[0][0];
                for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            }
            else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
                var secondGeometry = Union(secondGeomArray);
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
                updates[Count(updates)] = {
            'objectID': road.OBJECTID,
            'attributes': {'toright' : newToFromRight[0], 'toleft' : newToFromLeft[0]},
            'geometry': firstGeometry
        }
        var newId = "RD-" + NextSequenceValue("CenterlineID");
        adds[Count(adds)] = {
             'attributes': {'centerlineid' : newId, 'roadclass' : road.roadclass, 'fullname' : road.fullname,
                            'fromright' : newToFromRight[1], 'fromleft' : newToFromLeft[1], 'toright' : toRight, 'toleft' : toLeft
             },
             'geometry': Union(secondGeomArray)
        }
                var roadNameAliases = Filter(FeatureSetByName($datastore, "AliasStreetName"), "centerlineid = '" + road.centerlineid + "'");
        for (var roadNameAlias in roadNameAliases) {
            nameAliasAdds[Count(nameAliasAdds)] = {
                'attributes': {'centerlineid' : newId, 'roadpredir' : roadNameAlias.roadpredir, 'roadname' : roadNameAlias.roadname, 'roadtype' : roadNameAlias.roadtype,}
            }
        }
    }
}
return {     'result' : id,
    'edit' : [{'className': 'RoadCenterline', 'adds' : adds, 'updates' : updates},               {'className': 'AliasStreetName', 'adds': nameAliasAdds}]     };
&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;DisableAttributeRules&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;/DisableAttributeRules&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20190925" Time="133931" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;EnableAttributeRules&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;/EnableAttributeRules&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20190925" Time="134216" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
        var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
        var val = percent * range;
    var newVal = 0;
        if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
        if (newVal == range) newVal -= 2;
        if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
if ($feature.centerlineid != null) return $feature.centerlineid;
var id = "RD-" + NextSequenceValue("CenterlineID");
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
var adds = [];
var updates = [];
var nameAliasAdds = [];
for (var road in intersectingRoads) {
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
        var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
        var validCut = true;
    var geometries = []
        for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i], 'feet') == 0) {
            validCut = false;
            continue;
        }
        var allParts  = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts )
        {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    if (validCut) {
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
            var firstGeometry = null;
        var secondGeomArray = [];            var firstPoint = Geometry(road).paths[0][0];
                for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            }
            else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
                var secondGeometry = Union(secondGeomArray);
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
                updates[Count(updates)] = {
            'objectID': road.OBJECTID,
            'attributes': {'toright' : newToFromRight[0], 'toleft' : newToFromLeft[0]},
            'geometry': firstGeometry
        }
        var newId = "RD-" + NextSequenceValue("CenterlineID");
        adds[Count(adds)] = {
             'attributes': {'centerlineid' : newId, 'roadclass' : road.roadclass, 'fullname' : road.fullname,
                            'fromright' : newToFromRight[1], 'fromleft' : newToFromLeft[1], 'toright' : toRight, 'toleft' : toLeft
             },
             'geometry': Union(secondGeomArray)
        }
                var roadNameAliases = Filter(FeatureSetByName($datastore, "AliasStreetName"), "centerlineid = '" + road.centerlineid + "'");
        for (var roadNameAlias in roadNameAliases) {
            nameAliasAdds[Count(nameAliasAdds)] = {
                'attributes': {'centerlineid' : newId, 'roadpredir' : roadNameAlias.roadpredir, 'roadname' : roadNameAlias.roadname, 'roadtype' : roadNameAlias.roadtype,}
            }
        }
    }
}
return {     'result' : id,
    'edit' : [{'className': 'RoadCenterline', 'updates' : updates},               {'className': 'AliasStreetName', 'adds': nameAliasAdds}]     };
&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20190925" Time="134353" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
        var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
        var val = percent * range;
    var newVal = 0;
        if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
        if (newVal == range) newVal -= 2;
        if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
if ($feature.centerlineid != null) return $feature.centerlineid;
var id = "RD-" + NextSequenceValue("CenterlineID");
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
var adds = [];
var updates = [];
var nameAliasAdds = [];
for (var road in intersectingRoads) {
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
        var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
        var validCut = true;
    var geometries = []
        for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i], 'feet') == 0) {
            validCut = false;
            continue;
        }
        var allParts  = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts )
        {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    if (validCut) {
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
            var firstGeometry = null;
        var secondGeomArray = [];            var firstPoint = Geometry(road).paths[0][0];
                for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            }
            else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
                var secondGeometry = Union(secondGeomArray);
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
                updates[Count(updates)] = {
            'objectID': road.OBJECTID,
            'attributes': {'toright' : newToFromRight[0], 'toleft' : newToFromLeft[0]},
            'geometry': firstGeometry
        }
        var newId = "RD-" + NextSequenceValue("CenterlineID");
        adds[Count(adds)] = {
             'attributes': {'centerlineid' : newId, 'roadclass' : road.roadclass, 'fullname' : road.fullname,
                            'fromright' : newToFromRight[1], 'fromleft' : newToFromLeft[1], 'toright' : toRight, 'toleft' : toLeft
             },
             'geometry': Union(secondGeomArray)
        }
                var roadNameAliases = Filter(FeatureSetByName($datastore, "AliasStreetName"), "centerlineid = '" + road.centerlineid + "'");
        for (var roadNameAlias in roadNameAliases) {
            nameAliasAdds[Count(nameAliasAdds)] = {
                'attributes': {'centerlineid' : newId, 'roadpredir' : roadNameAlias.roadpredir, 'roadname' : roadNameAlias.roadname, 'roadtype' : roadNameAlias.roadtype,}
            }
        }
    }
}
return {     'result' : id,
    'edit' : [{'className': 'RoadCenterline', 'adds' : adds, 'updates' : updates},               {'className': 'AliasStreetName', 'adds': nameAliasAdds}]     };
&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20190925" Time="134718" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
        var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
        var val = percent * range;
    var newVal = 0;
        if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
        if (newVal == range) newVal -= 2;
        if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
if ($feature.centerlineid != null) return $feature.centerlineid;
var id = "RD-" + NextSequenceValue("CenterlineID");
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
var adds = [];
var updates = [];
var nameAliasAdds = [];
for (var road in intersectingRoads) {
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
        var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
        var validCut = true;
    var geometries = []
        for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i], 'feet') == 0) {
            validCut = false;
            continue;
        }
        var allParts  = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts )
        {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    if (validCut) {
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
            var firstGeometry = null;
        var secondGeomArray = [];            var firstPoint = Geometry(road).paths[0][0];
                for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            }
            else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
                var secondGeometry = Union(secondGeomArray);
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
                updates[Count(updates)] = {
            'objectID': road.OBJECTID,
            'attributes': {'toright' : newToFromRight[0], 'toleft' : newToFromLeft[0]}
        }
        var newId = "RD-" + NextSequenceValue("CenterlineID");
        adds[Count(adds)] = {
             'attributes': {'centerlineid' : newId, 'roadclass' : road.roadclass, 'fullname' : road.fullname,
                            'fromright' : newToFromRight[1], 'fromleft' : newToFromLeft[1], 'toright' : toRight, 'toleft' : toLeft
             },
             'geometry': Union(secondGeomArray)
        }
                var roadNameAliases = Filter(FeatureSetByName($datastore, "AliasStreetName"), "centerlineid = '" + road.centerlineid + "'");
        for (var roadNameAlias in roadNameAliases) {
            nameAliasAdds[Count(nameAliasAdds)] = {
                'attributes': {'centerlineid' : newId, 'roadpredir' : roadNameAlias.roadpredir, 'roadname' : roadNameAlias.roadname, 'roadtype' : roadNameAlias.roadtype,}
            }
        }
    }
}
return {     'result' : id,
    'edit' : [{'className': 'RoadCenterline', 'adds' : adds, 'updates' : updates},               {'className': 'AliasStreetName', 'adds': nameAliasAdds}]     };
&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20190925" Time="134821" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
        var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
        var val = percent * range;
    var newVal = 0;
        if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
        if (newVal == range) newVal -= 2;
        if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
if ($feature.centerlineid != null) return $feature.centerlineid;
var id = "RD-" + NextSequenceValue("CenterlineID");
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
var adds = [];
var updates = [];
var nameAliasAdds = [];
for (var road in intersectingRoads) {
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
        var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
        var validCut = true;
    var geometries = []
        for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i], 'feet') == 0) {
            validCut = false;
            continue;
        }
        var allParts  = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts )
        {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    if (validCut) {
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
            var firstGeometry = null;
        var secondGeomArray = [];            var firstPoint = Geometry(road).paths[0][0];
                for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            }
            else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
                var secondGeometry = Union(secondGeomArray);
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
                updates[Count(updates)] = {
            'objectID': road.OBJECTID,
            'attributes': {'toright' : newToFromRight[0], 'toleft' : newToFromLeft[0]},
            'geometry': firstGeometry
        }
        var newId = "RD-" + NextSequenceValue("CenterlineID");
        adds[Count(adds)] = {
             'attributes': {'centerlineid' : newId, 'roadclass' : road.roadclass, 'fullname' : road.fullname,
                            'fromright' : newToFromRight[1], 'fromleft' : newToFromLeft[1], 'toright' : toRight, 'toleft' : toLeft
             },
             'geometry': Union(secondGeomArray)
        }
                var roadNameAliases = Filter(FeatureSetByName($datastore, "AliasStreetName"), "centerlineid = '" + road.centerlineid + "'");
        for (var roadNameAlias in roadNameAliases) {
            nameAliasAdds[Count(nameAliasAdds)] = {
                'attributes': {'centerlineid' : newId, 'roadpredir' : roadNameAlias.roadpredir, 'roadname' : roadNameAlias.roadname, 'roadtype' : roadNameAlias.roadtype,}
            }
        }
    }
}
return {     'result' : id,
    'edit' : [{'className': 'RoadCenterline', 'adds' : adds, 'updates' : updates},               {'className': 'AliasStreetName', 'adds': nameAliasAdds}]     };
&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20190925" Time="135608" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;if ($feature.centerlineid != null) return $feature.centerlineid;
var id = "RD-" + NextSequenceValue("CenterlineID");
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
return Count(intersectingRoads);&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20190925" Time="135842" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;if ($feature.centerlineid != null) return $feature.centerlineid;
var id = "RD-" + NextSequenceValue("CenterlineID");
return id;
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
return Count(intersectingRoads);&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20190925" Time="140141" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
        var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
        var val = percent * range;
    var newVal = 0;
        if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
        if (newVal == range) newVal -= 2;
        if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
if ($feature.centerlineid != null) return $feature.centerlineid;
var id = "RD-" + NextSequenceValue("CenterlineID");
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
var adds = [];
var updates = [];
var nameAliasAdds = [];
for (var road in intersectingRoads) {
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
        var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
        var validCut = true;
    var geometries = []
        for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i], 'feet') == 0) {
            validCut = false;
            continue;
        }
        var allParts  = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts )
        {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    if (validCut) {
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
            var firstGeometry = null;
        var secondGeomArray = [];            var firstPoint = Geometry(road).paths[0][0];
                for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            }
            else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
                var secondGeometry = Union(secondGeomArray);
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
                updates[Count(updates)] = {
            'objectID': road.OBJECTID,
            'attributes': {'toright' : newToFromRight[0], 'toleft' : newToFromLeft[0]},
            'geometry': firstGeometry
        }
        var newId = "RD-" + NextSequenceValue("CenterlineID");
        adds[Count(adds)] = {
             'attributes': {'centerlineid' : newId, 'roadclass' : road.roadclass, 'fullname' : road.fullname,
                            'fromright' : newToFromRight[1], 'fromleft' : newToFromLeft[1], 'toright' : toRight, 'toleft' : toLeft
             },
             'geometry': Union(secondGeomArray)
        }
                var roadNameAliases = Filter(FeatureSetByName($datastore, "AliasStreetName"), "centerlineid = '" + road.centerlineid + "'");
        for (var roadNameAlias in roadNameAliases) {
            nameAliasAdds[Count(nameAliasAdds)] = {
                'attributes': {'centerlineid' : newId, 'roadpredir' : roadNameAlias.roadpredir, 'roadname' : roadNameAlias.roadname, 'roadtype' : roadNameAlias.roadtype,}
            }
        }
    }
}
return {     'result' : id,
    'edit' : [{'className': 'RoadCenterline', 'adds' : adds, 'updates' : updates},               {'className': 'AliasStreetName', 'adds': nameAliasAdds}]     };
&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20190925" Time="141302" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
        var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
        var val = percent * range;
    var newVal = 0;
        if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
        if (newVal == range) newVal -= 2;
        if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
if ($feature.centerlineid != null) return $feature.centerlineid;
var id = "RD-" + NextSequenceValue("CenterlineID");
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
var adds = [];
var updates = [];
var nameAliasAdds = [];
for (var road in intersectingRoads) {
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
        var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
        var validCut = true;
    var geometries = []
        for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i], 'feet') == 0) {
            validCut = false;
            continue;
        }
        var allParts  = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts )
        {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    if (validCut) {
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
            var firstGeometry = null;
        var secondGeomArray = [];            var firstPoint = Geometry(road).paths[0][0];
                for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            }
            else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
                var secondGeometry = Union(secondGeomArray);
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
                updates[Count(updates)] = {
            'objectID': road.OBJECTID,
            'attributes': {'toright' : newToFromRight[0], 'toleft' : newToFromLeft[0]},
            'geometry': firstGeometry
        }
        var newId = "RD-" + NextSequenceValue("CenterlineID");
        adds[Count(adds)] = {
             'attributes': {'centerlineid' : newId, 'roadclass' : road.roadclass, 'fullname' : road.fullname,
                            'fromright' : newToFromRight[1], 'fromleft' : newToFromLeft[1], 'toright' : toRight, 'toleft' : toLeft
             },
             'geometry': Union(secondGeomArray)
        }
                var roadNameAliases = Filter(FeatureSetByName($datastore, "AliasStreetName"), "centerlineid = '" + road.centerlineid + "'");
        for (var roadNameAlias in roadNameAliases) {
            nameAliasAdds[Count(nameAliasAdds)] = {
                'attributes': {'centerlineid' : newId, 'roadpredir' : roadNameAlias.roadpredir, 'roadname' : roadNameAlias.roadname, 'roadtype' : roadNameAlias.roadtype,}
            }
        }
    }
}
return {     'result' : id,
    'edit' : [{'className': 'RoadCenterline', 'adds' : adds, 'updates' : updates},               {'className': 'AliasStreetName', 'adds': nameAliasAdds}]     };
&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;DisableAttributeRules&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;/DisableAttributeRules&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20190925" Time="141351" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AddAttributeRule&gt;&lt;rule_name&gt;Test Rule&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;expression&gt;var id = "RD-" + NextSequenceValue("CenterlineID");
return id;&lt;/expression&gt;&lt;is_editable&gt;True&lt;/is_editable&gt;&lt;triggering_events_insert&gt;False&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;True&lt;/triggering_events_update&gt;&lt;field_name&gt;centerlineid&lt;/field_name&gt;&lt;exclude_from_client_eval&gt;False&lt;/exclude_from_client_eval&gt;&lt;batch&gt;False&lt;/batch&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;category&gt;-1&lt;/category&gt;&lt;/AddAttributeRule&gt;&lt;ReorderAttributeRule&gt;&lt;rule_name&gt;Test Rule&lt;/rule_name&gt;&lt;evaluation_order&gt;3&lt;/evaluation_order&gt;&lt;/ReorderAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20190925" Time="142102" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;DeleteAttributeRule&gt;&lt;rule_name&gt;Test Rule&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;/DeleteAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20190925" Time="142200" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AddAttributeRule&gt;&lt;rule_name&gt;Insert&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;expression&gt;return $feature.centerlineid + ",Insert";&lt;/expression&gt;&lt;is_editable&gt;True&lt;/is_editable&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;field_name&gt;centerlineid&lt;/field_name&gt;&lt;exclude_from_client_eval&gt;False&lt;/exclude_from_client_eval&gt;&lt;batch&gt;False&lt;/batch&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;category&gt;-1&lt;/category&gt;&lt;/AddAttributeRule&gt;&lt;ReorderAttributeRule&gt;&lt;rule_name&gt;Insert&lt;/rule_name&gt;&lt;evaluation_order&gt;3&lt;/evaluation_order&gt;&lt;/ReorderAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20190925" Time="142238" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AddAttributeRule&gt;&lt;rule_name&gt;Update&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;expression&gt;return $feature.centerlineid + ",Update";&lt;/expression&gt;&lt;is_editable&gt;True&lt;/is_editable&gt;&lt;triggering_events_insert&gt;False&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;True&lt;/triggering_events_update&gt;&lt;field_name&gt;centerlineid&lt;/field_name&gt;&lt;exclude_from_client_eval&gt;False&lt;/exclude_from_client_eval&gt;&lt;batch&gt;False&lt;/batch&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;category&gt;-1&lt;/category&gt;&lt;/AddAttributeRule&gt;&lt;ReorderAttributeRule&gt;&lt;rule_name&gt;Update&lt;/rule_name&gt;&lt;evaluation_order&gt;4&lt;/evaluation_order&gt;&lt;/ReorderAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20190925" Time="142415" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Insert&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;return $feature.centerlineid + ",I";&lt;/expression&gt;&lt;category&gt;-1&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Update&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;return $feature.centerlineid + ",U";&lt;/expression&gt;&lt;category&gt;-1&lt;/category&gt;&lt;triggering_events_insert&gt;False&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;True&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20190925" Time="142547" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Insert&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;var id = "RD-" + NextSequenceValue("CenterlineID");
return id;&lt;/expression&gt;&lt;category&gt;-1&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;True&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;DisableAttributeRules&gt;&lt;rule_name&gt;Update&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;/DisableAttributeRules&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20190925" Time="142752" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;EnableAttributeRules&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;/EnableAttributeRules&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Insert&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;var id = "RD-" + NextSequenceValue("CenterlineID");
return id;&lt;/expression&gt;&lt;category&gt;-1&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;True&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;DisableAttributeRules&gt;&lt;rule_name&gt;Insert&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;/DisableAttributeRules&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20190925" Time="165910" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" &lt;operationSequence&gt;&lt;workflow&gt;&lt;DeleteAttributeRule&gt;&lt;rule_name&gt;Insert&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;/DeleteAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;</Process>
<Process Date="20190925" Time="165919" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" &lt;operationSequence&gt;&lt;workflow&gt;&lt;DeleteAttributeRule&gt;&lt;rule_name&gt;Update&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;/DeleteAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;</Process>
<Process Date="20190930" Name="Flip Line" Time="092847" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Editing Tools.tbx\FlipLine">FlipLine "Roads\Roads - Local Streets"</Process>
<Process Date="20190930" Name="Flip Line" Time="092909" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Editing Tools.tbx\FlipLine">FlipLine "Roads\Roads - Local Streets"</Process>
<Process Date="20190930" Name="Flip Line" Time="093022" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Editing Tools.tbx\FlipLine">FlipLine "Roads\Roads - Local Streets"</Process>
<Process Date="20190930" Name="Calculate New From Right" Time="093023" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "I_Roads - Local Streets_OBJECTID" fromright 896 PYTHON3 # "Long (large integer)"</Process>
<Process Date="20190930" Name="Calculate New From Left" Time="093023" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "I_Roads - Local Streets_OBJECTID" fromleft 889 PYTHON3 # "Long (large integer)"</Process>
<Process Date="20190930" Name="Calculate New To Left" Time="093023" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "I_Roads - Local Streets_OBJECTID" toleft 889 PYTHON3 # "Long (large integer)"</Process>
<Process Date="20190930" Name="Calculate New To Right" Time="093023" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "I_Roads - Local Streets_OBJECTID" toright 859 PYTHON3 # "Long (large integer)"</Process>
<Process Date="20190930" Name="Flip Line" Time="093042" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Editing Tools.tbx\FlipLine">FlipLine "Roads\Roads - Local Streets"</Process>
<Process Date="20190930" Name="Calculate New From Right" Time="093042" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "I_Roads - Local Streets_OBJECTID" fromright 859 PYTHON3 # "Long (large integer)"</Process>
<Process Date="20190930" Name="Calculate New From Left" Time="093042" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "I_Roads - Local Streets_OBJECTID" fromleft 889 PYTHON3 # "Long (large integer)"</Process>
<Process Date="20190930" Name="Calculate New To Left" Time="093043" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "I_Roads - Local Streets_OBJECTID" toleft 889 PYTHON3 # "Long (large integer)"</Process>
<Process Date="20190930" Name="Calculate New To Right" Time="093043" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "I_Roads - Local Streets_OBJECTID" toright 896 PYTHON3 # "Long (large integer)"</Process>
<Process Date="20190930" Name="Flip Line" Time="093658" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Editing Tools.tbx\FlipLine">FlipLine "Roads\Roads - Local Streets"</Process>
<Process Date="20190930" Name="Flip Line" Time="093710" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Editing Tools.tbx\FlipLine">FlipLine "Roads\Roads - Local Streets"</Process>
<Process Date="20190930" Name="Flip Line" Time="093734" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Editing Tools.tbx\FlipLine">FlipLine "Roads\Roads - Local Streets"</Process>
<Process Date="20190930" Name="Flip Line" Time="093800" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Editing Tools.tbx\FlipLine">FlipLine "Roads\Roads - Local Streets"</Process>
<Process Date="20190930" Name="Flip Line" Time="093807" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Editing Tools.tbx\FlipLine">FlipLine "Roads\Roads - Local Streets"</Process>
<Process Date="20190930" Name="Flip Line" Time="093823" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Editing Tools.tbx\FlipLine">FlipLine "Roads\Roads - Local Streets"</Process>
<Process Date="20190930" Name="Flip Line" Time="094054" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Editing Tools.tbx\FlipLine">FlipLine "Roads\Roads - Local Streets"</Process>
<Process Date="20190930" Name="Flip Line" Time="094258" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Editing Tools.tbx\FlipLine">FlipLine "Roads\Roads - Local Streets"</Process>
<Process Date="20190930" Name="Flip Line" Time="094314" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Editing Tools.tbx\FlipLine">FlipLine "Roads\Roads - Local Streets"</Process>
<Process Date="20190930" Name="Flip Line" Time="094321" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Editing Tools.tbx\FlipLine">FlipLine "Roads\Roads - Local Streets"</Process>
<Process Date="20190930" Name="Flip Line" Time="094413" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Editing Tools.tbx\FlipLine">FlipLine "Roads\Roads - Local Streets"</Process>
<Process Date="20190930" Name="Flip Line" Time="094424" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Editing Tools.tbx\FlipLine">FlipLine "Roads\Roads - Local Streets"</Process>
<Process Date="20190930" Name="Flip Line" Time="094507" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Editing Tools.tbx\FlipLine">FlipLine "Roads\Roads - Local Streets"</Process>
<Process Date="20190930" Name="Flip Line" Time="094534" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Editing Tools.tbx\FlipLine">FlipLine "Roads\Roads - Local Streets"</Process>
<Process Date="20190930" Name="Flip Line" Time="095727" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Editing Tools.tbx\FlipLine">FlipLine "Roads\Roads - Local Streets"</Process>
<Process Date="20190930" Time="105120" ToolSource="C:\Solutions\Tasks\January2020\Address Data Management\AddressDataManagement.pyt\FlipRoads">FlipRoads "Roads\Roads - Local Streets" #</Process>
<Process Date="20190930" Time="105135" ToolSource="C:\Solutions\Tasks\January2020\Address Data Management\AddressDataManagement.pyt\FlipRoads">FlipRoads "Roads\Roads - Local Streets" #</Process>
<Process Date="20190930" Time="105205" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Editing Tools.tbx\FlipLine">FlipLine "Roads\Roads - Local Streets"</Process>
<Process Date="20190930" Time="105322" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Editing Tools.tbx\FlipLine">FlipLine "Roads\Roads - Local Streets"</Process>
<Process Date="20190930" Time="105323" ToolSource="C:\Solutions\Tasks\January2020\Address Data Management\AddressDataManagement.pyt\FlipRoads">FlipRoads "Roads\Roads - Local Streets" #</Process>
<Process Date="20190930" Time="111003" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Editing Tools.tbx\FlipLine">FlipLine "Roads\Roads - Local Streets"</Process>
<Process Date="20190930" Time="111004" ToolSource="C:\Solutions\Tasks\January2020\Address Data Management\AddressDataManagement.pyt\FlipRoads">FlipRoads "Roads\Roads - Local Streets" #</Process>
<Process Date="20190930" Time="111014" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Editing Tools.tbx\FlipLine">FlipLine "Roads\Roads - Local Streets"</Process>
<Process Date="20190930" Time="111015" ToolSource="C:\Solutions\Tasks\January2020\Address Data Management\AddressDataManagement.pyt\FlipRoads">FlipRoads "Roads\Roads - Local Streets" #</Process>
<Process Date="20190930" Time="133346" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Editing Tools.tbx\FlipLine">FlipLine "Roads\Roads - Local Streets"</Process>
<Process Date="20190930" Time="133347" ToolSource="C:\Solutions\Tasks\January2020\Address Data Management\AddressDataManagement.pyt\FlipRoads">FlipRoads "Roads\Roads - Local Streets" #</Process>
<Process Date="20190930" Time="133514" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Editing Tools.tbx\FlipLine">FlipLine "Roads\Roads - Local Streets"</Process>
<Process Date="20190930" Time="133515" ToolSource="C:\Solutions\Tasks\January2020\Address Data Management\AddressDataManagement.pyt\FlipRoads">FlipRoads "Roads\Roads - Local Streets" #</Process>
<Process Date="20190930" Time="134953" ToolSource="C:\Solutions\Tasks\January2020\Address Data Management\AddressDataManagement.pyt\SwapParity">SwapParity "Roads\Roads - Local Streets"</Process>
<Process Date="20190930" Time="135028" ToolSource="C:\Solutions\Tasks\January2020\Address Data Management\AddressDataManagement.pyt\SwapParity">SwapParity "Roads\Roads - Local Streets"</Process>
<Process Date="20190930" Time="135306" ToolSource="C:\Solutions\Tasks\January2020\Address Data Management\AddressDataManagement.pyt\SwapParity">SwapParity "Roads\Roads - Local Streets"</Process>
<Process Date="20190930" Time="135529" ToolSource="C:\Solutions\Tasks\January2020\Address Data Management\AddressDataManagement.pyt\SwapParity">SwapParity "Roads\Roads - Local Streets"</Process>
<Process Date="20190930" Time="142259" ToolSource="C:\Solutions\Tasks\January2020\Address Data Management\AddressDataManagement.pyt\SwapParity">SwapParity "Roads\Roads - Local Streets" fromright fromleft toright toleft</Process>
<Process Date="20190930" Time="142312" ToolSource="C:\Solutions\Tasks\January2020\Address Data Management\AddressDataManagement.pyt\SwapParity">SwapParity "Roads\Roads - Local Streets" fromright fromleft toright toleft</Process>
<Process Date="20190930" Time="142328" ToolSource="C:\Solutions\Tasks\January2020\Address Data Management\AddressDataManagement.pyt\SwapParity">SwapParity "Roads\Roads - Local Streets" fromright fromleft toright toleft</Process>
<Process Date="20190930" Time="142628" ToolSource="C:\Solutions\Tasks\January2020\Address Data Management\AddressDataManagement.pyt\SwapParity">SwapParity "Roads\Roads - Local Streets" fromright fromleft toright toleft</Process>
<Process Date="20190930" Time="142644" ToolSource="C:\Solutions\Tasks\January2020\Address Data Management\AddressDataManagement.pyt\SwapParity">SwapParity "Roads\Roads - Local Streets" fromright fromleft toright toleft</Process>
<Process Date="20190930" Time="145145" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Editing Tools.tbx\FlipLine">FlipLine "Roads\Roads - Local Streets"</Process>
<Process Date="20190930" Time="145145" ToolSource="C:\Solutions\Tasks\January2020\Address Data Management\AddressDataManagement.pyt\FlipRoads">FlipRoads "Roads\Roads - Local Streets" # # # # #</Process>
<Process Date="20190930" Time="145737" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Editing Tools.tbx\FlipLine">FlipLine "Roads\Roads - Local Streets"</Process>
<Process Date="20190930" Time="145737" ToolSource="C:\Solutions\Tasks\January2020\Address Data Management\AddressDataManagement.pyt\FlipRoads">FlipRoads "Roads\Roads - Local Streets" # fromright fromleft toright toleft</Process>
<Process Date="20190930" Time="145750" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Editing Tools.tbx\FlipLine">FlipLine "Roads\Roads - Local Streets"</Process>
<Process Date="20190930" Time="145751" ToolSource="C:\Solutions\Tasks\January2020\Address Data Management\AddressDataManagement.pyt\FlipRoads">FlipRoads "Roads\Roads - Local Streets" true fromright fromleft toright toleft</Process>
<Process Date="20190930" Time="145804" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Editing Tools.tbx\FlipLine">FlipLine "Roads\Roads - Local Streets"</Process>
<Process Date="20190930" Time="145804" ToolSource="C:\Solutions\Tasks\January2020\Address Data Management\AddressDataManagement.pyt\FlipRoads">FlipRoads "Roads\Roads - Local Streets" true fromright fromleft toright toleft</Process>
<Process Date="20190930" Time="145819" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Editing Tools.tbx\FlipLine">FlipLine "Roads\Roads - Local Streets"</Process>
<Process Date="20190930" Time="145820" ToolSource="C:\Solutions\Tasks\January2020\Address Data Management\AddressDataManagement.pyt\FlipRoads">FlipRoads "Roads\Roads - Local Streets" false fromright fromleft toright toleft</Process>
<Process Date="20190930" Time="145834" ToolSource="C:\Solutions\Tasks\January2020\Address Data Management\AddressDataManagement.pyt\SwapParity">SwapParity "Roads\Roads - Local Streets" fromright fromleft toright toleft</Process>
<Process Date="20190930" Time="145857" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Editing Tools.tbx\FlipLine">FlipLine "Roads\Roads - Local Streets"</Process>
<Process Date="20190930" Time="145858" ToolSource="C:\Solutions\Tasks\January2020\Address Data Management\AddressDataManagement.pyt\FlipRoads">FlipRoads "Roads\Roads - Local Streets" true fromright fromleft toright toleft</Process>
<Process Date="20191001" Time="103855" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AssignDomainToField&gt;&lt;field_name&gt;fullname&lt;/field_name&gt;&lt;domain_name&gt;Full Road Name&lt;/domain_name&gt;&lt;/AssignDomainToField&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20191001" Time="133315" ToolSource="C:\Solutions\Tasks\January2020\Address Data Management\AddressDataManagement.pyt\SwapParity">SwapParity "Roads\Roads - Local Streets" fromright fromleft toright toleft</Process>
<Process Date="20191001" Time="133359" ToolSource="C:\Solutions\Tasks\January2020\Address Data Management\AddressDataManagement.pyt\SwapParity">SwapParity "Roads\Roads - Local Streets" fromright fromleft toright toleft</Process>
<Process Date="20191002" Time="102036" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" &lt;operationSequence&gt;&lt;workflow&gt;&lt;RemoveDomainFromField&gt;&lt;field_name&gt;fullname&lt;/field_name&gt;&lt;/RemoveDomainFromField&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;</Process>
<Process Date="20191002" Time="113614" ToolSource="C:\Solutions\Tasks\January2020\Address Data Management\AddressDataManagement.pyt\SwapParity">SwapParity "Roads\Roads - Local Streets" fromright fromleft toright toleft</Process>
<Process Date="20191002" Time="113700" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Editing Tools.tbx\FlipLine">FlipLine "Roads\Roads - Local Streets"</Process>
<Process Date="20191002" Time="113701" ToolSource="C:\Solutions\Tasks\January2020\Address Data Management\AddressDataManagement.pyt\FlipRoads">FlipRoads "Roads\Roads - Local Streets" true fromright fromleft toright toleft</Process>
<Process Date="20191002" Time="135841" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;DisableAttributeRules&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;/DisableAttributeRules&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20191002" Time="135921" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\DeleteRows">DeleteRows "C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb\Address\RoadCenterline"</Process>
<Process Date="20191002" Time="140437" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\Append">Append 'Road Centerlines' "Roads\Roads - Local Streets" "Use the Field Map to reconcile schema differences" "centerlineid "Centerline ID" true true false 20 Text 0 0,First,#,Road Centerlines,centerlineid,0,20;rclnguid "NENA Global ID" true true false 254 Text 0 0,First,#,Road Centerlines,rclnguid,0,254;discrpagid "Discrepancy Agency ID" true true false 75 Text 0 0,First,#,Road Centerlines,discrpagid,0,75;rangeprefixleft "Left Address Number Prefix" true true false 15 Text 0 0,First,#,Road Centerlines,rangeprefixleft,0,15;fromleft "Left From Address" true true false 4 Long 0 0,First,#,Road Centerlines,fromleft,-1,-1;toleft "Left To Address" true true false 4 Long 0 0,First,#,Road Centerlines,toleft,-1,-1;parityleft "Parity Left" true true false 1 Text 0 0,First,#,Road Centerlines,parityleft,0,1;rangeprefixright "Right Address Number Prefix" true true false 15 Text 0 0,First,#,Road Centerlines,rangeprefixright,0,15;fromright "Right From Address" true true false 4 Long 0 0,First,#,Road Centerlines,fromright,-1,-1;toright "Right To Address" true true false 4 Long 0 0,First,#,Road Centerlines,toright,-1,-1;parityright "Parity Right" true true false 1 Text 0 0,First,#,Road Centerlines,parityright,0,1;fullname "Full Road Name" true true false 300 Text 0 0,First,#,Road Centerlines,fullname,0,300;ctyroute "County Route" true true false 10 Text 0 0,First,#,Road Centerlines,ctyroute,0,10;onewaydir "One Way Indicator" true true false 10 Text 0 0,First,#,Road Centerlines,onewaydir,0,10;roadlevel "Above or Below Grade" true true false 4 Long 0 0,First,#,Road Centerlines,roadlevel,-1,-1;inwater "In Water" true true false 5 Text 0 0,First,#,Road Centerlines,inwater,0,5;roadclass "Road Class" true true false 20 Text 0 0,First,#,Road Centerlines,roadclass,0,20;countryleft "Country on Left" true true false 2 Text 0 0,First,#,Road Centerlines,countryleft,0,2;countryright "Country on Right" true true false 2 Text 0 0,First,#,Road Centerlines,countryright,0,2;stateleft "State on Left" true true false 2 Text 0 0,First,#,Road Centerlines,stateleft,0,2;stateright "State on Right" true true false 2 Text 0 0,First,#,Road Centerlines,stateright,0,2;countyleft "County on Left" true true false 40 Text 0 0,First,#,Road Centerlines,countyleft,0,40;countyright "County on Right" true true false 40 Text 0 0,First,#,Road Centerlines,countyright,0,40;munileft "Municipality on Left" true true false 100 Text 0 0,First,#,Road Centerlines,munileft,0,100;muniright "Municipality on Right" true true false 100 Text 0 0,First,#,Road Centerlines,muniright,0,100;zipleft "Zip on Left" true true false 5 Text 0 0,First,#,Road Centerlines,zipleft,0,5;zipright "Zip on Right" true true false 5 Text 0 0,First,#,Road Centerlines,zipright,0,5;msagleft "MSAG on Left" true true false 35 Text 0 0,First,#,Road Centerlines,msagleft,0,35;msagright "MSAG on Right" true true false 35 Text 0 0,First,#,Road Centerlines,msagright,0,35;esnleft "ESN on Left" true true false 5 Text 0 0,First,#,Road Centerlines,esnleft,0,5;esnright "ESN on Right" true true false 5 Text 0 0,First,#,Road Centerlines,esnright,0,5;GlobalID "GlobalID" false false true 38 GlobalID 0 0,First,#" # #</Process>
<Process Date="20191002" Time="140553" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;EnableAttributeRules&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;/EnableAttributeRules&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20191022" Time="141154" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Validate Full Road Name&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;// This will calculate the full road name for the steet alias table by concatenating several other field values // Get the full name of the road. If it is null return the fullname
var fullname = $feature.fullname;
if (fullname == null) return fullname;
// Search the master street name table for a row matching the fullname.
// If there is no matching record raise an error preventing the edit
// Otherwise return the fullname
var masterStreetNames = Filter(FeatureSetByName($datastore, "MasterStreetName"), "fullname = '" + fullname + "'");
if (Count(masterStreetNames) == 0) {
    return {
        "errorMessage": "Full Road Name is invalid, must be defined in the Master Street Name table."
    }
}
return fullname;&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;False&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;True&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20191022" Time="141344" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Validate Full Road Name&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;// This rule will calculate the full road name for the steet alias table by concatenating several other field values // Get the full name of the road. If it is null return the fullname
var fullname = $feature.fullname;
if (fullname == null) return fullname;
// Search the master street name table for a row matching the fullname.
// If there is no matching record raise an error preventing the edit
// Otherwise return the fullname
var masterStreetNames = Filter(FeatureSetByName($datastore, "MasterStreetName"), "fullname = '" + fullname + "'");
if (Count(masterStreetNames) == 0) {
 return {
  "errorMessage": "Full Road Name is invalid, must be defined in the Master Street Name table."
 }
}
return fullname;&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;False&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;True&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20191022" Time="162825" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;// This rule will create a new unique id when a road is created and splits any intersecting roads
// All intersecting roads will be split at their intersection and the address ranges will be updated to reflect where the split occured.
// This function calculates a new from and to address based on the percentage along the line the split occurs
function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
        var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
        var val = percent * range;
    var newVal = 0;
        if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
        if (newVal == range) newVal -= 2;
        if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
// If the id of the road is not null return the id
// This prevents the rule from being processed on new roads created as a result of the split
if ($feature.centerlineid != null) return $feature.centerlineid;
// Create a new id for the road and get the object id and geometry from the road
var id = "RD-" + NextSequenceValue("CenterlineID");
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
// Get all the intersecting roads
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
var adds = [];
var updates = [];
var nameAliasAdds = [];
// Loop through each intersecting road
for (var road in intersectingRoads) {
    // Continue to the next road if the intersecting road is the same or geometry is the same
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
        // Cut the intersecting road and continue if the result of the cut is 0 features
    var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
        var validCut = true;
    var geometries = []
        // Loop through collection of lines and check that it was a valid cut in the middle of a segment
    for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i], 'feet') == 0) {
            validCut = false;
            continue;
        }
                // Handle multipart geometries
        var allParts  = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts )
        {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    // Process the cut if valid
    if (validCut) {
                // Get the address range of the intersecting road
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
            var firstGeometry = null;
        var secondGeomArray = [];            var firstPoint = Geometry(road).paths[0][0];
                // Loop through each geometry in the cut
        // Store the geometry including the first vertex of the orginal road as the first geometry
        // Collect all other geometries in an array
        for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            }
            else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
                // Merge all other geometries as the second geometry
        var secondGeometry = Union(secondGeomArray);
                // Calculate the new address ranges based on the intersection location along the line
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
                // Store an update for the intersecting road with the first geometry from the cut and the new right to and left to value         updates[Count(updates)] = {
            'objectID': road.OBJECTID,
            'attributes': {'toright' : newToFromRight[0], 'toleft' : newToFromLeft[0]},
            'geometry': firstGeometry
        }
        // Create a new id for a road
        // Store an add for a new road with the second geometry from the cut and the new right from and left from value         var newId = "RD-" + NextSequenceValue("CenterlineID");
        adds[Count(adds)] = {
             'attributes': {'centerlineid' : newId, 'roadclass' : road.roadclass, 'fullname' : road.fullname,
                            'fromright' : newToFromRight[1], 'fromleft' : newToFromLeft[1], 'toright' : toRight, 'toleft' : toLeft
             },
             'geometry': secondGeometry
        }
                // Find the all the related road alias names for the intersecting road
        // Store an add for every road alias and related it to the new road that was added after the cut
        var roadNameAliases = Filter(FeatureSetByName($datastore, "AliasStreetName"), "centerlineid = '" + road.centerlineid + "'");
        for (var roadNameAlias in roadNameAliases) {
            nameAliasAdds[Count(nameAliasAdds)] = {
                'attributes': {'centerlineid' : newId, 'roadpredir' : roadNameAlias.roadpredir, 'roadname' : roadNameAlias.roadname, 'roadtype' : roadNameAlias.roadtype,}
            }
        }
    }
}
// Return the new id of the road
// Using the edit parameter return the list of updates and adds for the intersecting roads and a list of adds for related road alias names
return {     'result' : id,
    'edit' : [{'className': 'RoadCenterline', 'adds' : adds, 'updates' : updates},               {'className': 'AliasStreetName', 'adds': nameAliasAdds}]     };
&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20191029" Time="093759" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;// This rule will create a new unique id when a road is created and splits any intersecting roads
// All intersecting roads will be split at their intersection and the address ranges will be updated to reflect where the split occured.
// This function calculates a new from and to address based on the percentage along the line the split occurs
function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
        var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
        var val = percent * range;
    var newVal = 0;
        if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
        if (newVal == range) newVal -= 2;
        if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
// If the id of the road is not null return the id
// This prevents the rule from being processed on new roads created as a result of the split
if ($feature.centerlineid != null) return $feature.centerlineid;
// Create a new id for the road and get the object id and geometry from the road
var id = "RD-" + NextSequenceValue("CenterlineID");
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
// Get all the intersecting roads
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
var adds = [];
var updates = [];
var nameAliasAdds = [];
// Loop through each intersecting road
for (var road in intersectingRoads) {
    // Continue to the next road if the intersecting road is the same or geometry is the same
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
        // Cut the intersecting road and continue if the result of the cut is 0 features
    var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
        var validCut = true;
    var geometries = []
        // Loop through collection of lines and check that it was a valid cut in the middle of a segment
    for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i], 'feet') == 0) {
            validCut = false;
            continue;
        }
                // Handle multipart geometries
        var allParts  = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts )
        {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    // Process the cut if valid
    if (validCut) {
                // Get the address range of the intersecting road
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
            var firstGeometry = null;
        var secondGeomArray = [];            var firstPoint = Geometry(road).paths[0][0];
                // Loop through each geometry in the cut
        // Store the geometry including the first vertex of the orginal road as the first geometry
        // Collect all other geometries in an array
        for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            }
            else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
                // Merge all other geometries as the second geometry
        var secondGeometry = Union(secondGeomArray);
                // Calculate the new address ranges based on the intersection location along the line
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
                // Store an update for the intersecting road with the first geometry from the cut and the new right to and left to value         updates[Count(updates)] = {
            'objectID': road.OBJECTID,
            'attributes': {'toright' : newToFromRight[0], 'toleft' : newToFromLeft[0]},
            'geometry': firstGeometry
        }
        // Create a new id for a road
        // Store an add for a new road with the second geometry from the cut and the new right from and left from value         var newId = "RD-" + NextSequenceValue("CenterlineID");
        var attributes = Dictionary(Text(road))['attributes'];
        attributes['fromright'] = newToFromRight[1];
        attributes['fromleft'] = newToFromLeft[1];
        adds[Count(adds)] = {
             'attributes': attributes,
             'geometry': secondGeometry
        }
                // Find the all the related road alias names for the intersecting road
        // Store an add for every road alias and related it to the new road that was added after the cut
        var roadNameAliases = Filter(FeatureSetByName($datastore, "AliasStreetName"), "centerlineid = '" + road.centerlineid + "'");
        for (var roadNameAlias in roadNameAliases) {
            nameAliasAdds[Count(nameAliasAdds)] = {
                'attributes': {'centerlineid' : newId, 'roadpredir' : roadNameAlias.roadpredir, 'roadname' : roadNameAlias.roadname, 'roadtype' : roadNameAlias.roadtype,}
            }
        }
    }
}
// Return the new id of the road
// Using the edit parameter return the list of updates and adds for the intersecting roads and a list of adds for related road alias names
return {     'result' : id,
    'edit' : [{'className': 'RoadCenterline', 'adds' : adds, 'updates' : updates},               {'className': 'AliasStreetName', 'adds': nameAliasAdds}]     };
&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20191029" Time="095132" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;// This rule will create a new unique id when a road is created and splits any intersecting roads
// All intersecting roads will be split at their intersection and the address ranges will be updated to reflect where the split occured.
// This function calculates a new from and to address based on the percentage along the line the split occurs
function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
        var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
        var val = percent * range;
    var newVal = 0;
        if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
        if (newVal == range) newVal -= 2;
        if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
// If the id of the road is not null return the id
// This prevents the rule from being processed on new roads created as a result of the split
if ($feature.centerlineid != null) return $feature.centerlineid;
// Create a new id for the road and get the object id and geometry from the road
var id = "RD-" + NextSequenceValue("CenterlineID");
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
// Get all the intersecting roads
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
var adds = [];
var updates = [];
var nameAliasAdds = [];
// Loop through each intersecting road
for (var road in intersectingRoads) {
    // Continue to the next road if the intersecting road is the same or geometry is the same
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
        // Cut the intersecting road and continue if the result of the cut is 0 features
    var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
        var validCut = true;
    var geometries = []
        // Loop through collection of lines and check that it was a valid cut in the middle of a segment
    for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i], 'feet') == 0) {
            validCut = false;
            continue;
        }
                // Handle multipart geometries
        var allParts  = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts )
        {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    // Process the cut if valid
    if (validCut) {
                // Get the address range of the intersecting road
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
            var firstGeometry = null;
        var secondGeomArray = [];            var firstPoint = Geometry(road).paths[0][0];
                // Loop through each geometry in the cut
        // Store the geometry including the first vertex of the orginal road as the first geometry
        // Collect all other geometries in an array
        for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            }
            else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
                // Merge all other geometries as the second geometry
        var secondGeometry = Union(secondGeomArray);
                // Calculate the new address ranges based on the intersection location along the line
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
                // Store an update for the intersecting road with the first geometry from the cut and the new right to and left to value         updates[Count(updates)] = {
            'objectID': road.OBJECTID,
            'attributes': {'toright' : newToFromRight[0], 'toleft' : newToFromLeft[0]},
            'geometry': firstGeometry
        }
        // Create a new id for a road
        // Store an add for a new road with the second geometry from the cut and the new right from and left from value         var newId = "RD-" + NextSequenceValue("CenterlineID");
        var featureAttributes = Dictionary(Text(road))['attributes'];
        var newAttributes = {};
        for(var k in featureAttributes) {
            if (Lower(k) == "globalid") {
                continue;
            }
            else if (Lower(k) == "fromright") {
                newAttributes['fromright'] = newToFromRight[1];
            }
            else if (Lower(k) == "fromleft") {
                newAttributes['fromleft'] = newToFromLeft[1];
            }
            else {
                newAttributes[k] = featureAttributes[k];
            }
        }
                adds[Count(adds)] = {
             'attributes': newAttributes,
             'geometry': secondGeometry
        }
                // Find the all the related road alias names for the intersecting road
        // Store an add for every road alias and related it to the new road that was added after the cut
        var roadNameAliases = Filter(FeatureSetByName($datastore, "AliasStreetName"), "centerlineid = '" + road.centerlineid + "'");
        for (var roadNameAlias in roadNameAliases) {
            nameAliasAdds[Count(nameAliasAdds)] = {
                'attributes': {'centerlineid' : newId, 'roadpredir' : roadNameAlias.roadpredir, 'roadname' : roadNameAlias.roadname, 'roadtype' : roadNameAlias.roadtype,}
            }
        }
    }
}
// Return the new id of the road
// Using the edit parameter return the list of updates and adds for the intersecting roads and a list of adds for related road alias names
return {     'result' : id,
    'edit' : [{'className': 'RoadCenterline', 'adds' : adds, 'updates' : updates},               {'className': 'AliasStreetName', 'adds': nameAliasAdds}]     };
&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20191029" Time="095555" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;// This rule will create a new unique id when a road is created and splits any intersecting roads
// All intersecting roads will be split at their intersection and the address ranges will be updated to reflect where the split occured.
// This function calculates a new from and to address based on the percentage along the line the split occurs
function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
        var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
        var val = percent * range;
    var newVal = 0;
        if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
        if (newVal == range) newVal -= 2;
        if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
// If the id of the road is not null return the id
// This prevents the rule from being processed on new roads created as a result of the split
if ($feature.centerlineid != null) return $feature.centerlineid;
// Create a new id for the road and get the object id and geometry from the road
var id = "RD-" + NextSequenceValue("CenterlineID");
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
// Get all the intersecting roads
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
var adds = [];
var updates = [];
var nameAliasAdds = [];
// Loop through each intersecting road
for (var road in intersectingRoads) {
    // Continue to the next road if the intersecting road is the same or geometry is the same
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
        // Cut the intersecting road and continue if the result of the cut is 0 features
    var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
        var validCut = true;
    var geometries = []
        // Loop through collection of lines and check that it was a valid cut in the middle of a segment
    for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i], 'feet') == 0) {
            validCut = false;
            continue;
        }
                // Handle multipart geometries
        var allParts  = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts )
        {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    // Process the cut if valid
    if (validCut) {
                // Get the address range of the intersecting road
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
            var firstGeometry = null;
        var secondGeomArray = [];            var firstPoint = Geometry(road).paths[0][0];
                // Loop through each geometry in the cut
        // Store the geometry including the first vertex of the orginal road as the first geometry
        // Collect all other geometries in an array
        for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            }
            else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
                // Merge all other geometries as the second geometry
        var secondGeometry = Union(secondGeomArray);
                // Calculate the new address ranges based on the intersection location along the line
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
                // Store an update for the intersecting road with the first geometry from the cut and the new right to and left to value         updates[Count(updates)] = {
            'objectID': road.OBJECTID,
            'attributes': {'toright' : newToFromRight[0], 'toleft' : newToFromLeft[0]},
            'geometry': firstGeometry
        }
        // Create a new id for a road
        // Store an add for a new road with the second geometry from the cut and the new right from and left from value         var newId = "RD-" + NextSequenceValue("CenterlineID");
        var featureAttributes = Dictionary(Text(road))['attributes'];
        var newAttributes = {};
        for(var k in featureAttributes) {
            if (IndexOf(["globalid", "objectid"], Lower(k)) == -1) {
                continue;
            }
            else if (Lower(k) == "fromright") {
                newAttributes['fromright'] = newToFromRight[1];
            }
            else if (Lower(k) == "fromleft") {
                newAttributes['fromleft'] = newToFromLeft[1];
            }
            else {
                newAttributes[k] = featureAttributes[k];
            }
        }
                adds[Count(adds)] = {
             'attributes': newAttributes,
             'geometry': secondGeometry
        }
                // Find the all the related road alias names for the intersecting road
        // Store an add for every road alias and related it to the new road that was added after the cut
        var roadNameAliases = Filter(FeatureSetByName($datastore, "AliasStreetName"), "centerlineid = '" + road.centerlineid + "'");
        for (var roadNameAlias in roadNameAliases) {
            nameAliasAdds[Count(nameAliasAdds)] = {
                'attributes': {'centerlineid' : newId, 'roadpredir' : roadNameAlias.roadpredir, 'roadname' : roadNameAlias.roadname, 'roadtype' : roadNameAlias.roadtype,}
            }
        }
    }
}
// Return the new id of the road
// Using the edit parameter return the list of updates and adds for the intersecting roads and a list of adds for related road alias names
return {     'result' : id,
    'edit' : [{'className': 'RoadCenterline', 'adds' : adds, 'updates' : updates},               {'className': 'AliasStreetName', 'adds': nameAliasAdds}]     };
&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20191029" Time="095713" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;// This rule will create a new unique id when a road is created and splits any intersecting roads
// All intersecting roads will be split at their intersection and the address ranges will be updated to reflect where the split occured.
// This function calculates a new from and to address based on the percentage along the line the split occurs
function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
        var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
        var val = percent * range;
    var newVal = 0;
        if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
        if (newVal == range) newVal -= 2;
        if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
// If the id of the road is not null return the id
// This prevents the rule from being processed on new roads created as a result of the split
if ($feature.centerlineid != null) return $feature.centerlineid;
// Create a new id for the road and get the object id and geometry from the road
var id = "RD-" + NextSequenceValue("CenterlineID");
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
// Get all the intersecting roads
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
var adds = [];
var updates = [];
var nameAliasAdds = [];
// Loop through each intersecting road
for (var road in intersectingRoads) {
    // Continue to the next road if the intersecting road is the same or geometry is the same
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
        // Cut the intersecting road and continue if the result of the cut is 0 features
    var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
        var validCut = true;
    var geometries = []
        // Loop through collection of lines and check that it was a valid cut in the middle of a segment
    for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i], 'feet') == 0) {
            validCut = false;
            continue;
        }
                // Handle multipart geometries
        var allParts  = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts )
        {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    // Process the cut if valid
    if (validCut) {
                // Get the address range of the intersecting road
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
            var firstGeometry = null;
        var secondGeomArray = [];            var firstPoint = Geometry(road).paths[0][0];
                // Loop through each geometry in the cut
        // Store the geometry including the first vertex of the orginal road as the first geometry
        // Collect all other geometries in an array
        for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            }
            else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
                // Merge all other geometries as the second geometry
        var secondGeometry = Union(secondGeomArray);
                // Calculate the new address ranges based on the intersection location along the line
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
                // Store an update for the intersecting road with the first geometry from the cut and the new right to and left to value         updates[Count(updates)] = {
            'objectID': road.OBJECTID,
            'attributes': {'toright' : newToFromRight[0], 'toleft' : newToFromLeft[0]},
            'geometry': firstGeometry
        }
        // Create a new id for a road
        // Store an add for a new road with the second geometry from the cut and the new right from and left from value         var newId = "RD-" + NextSequenceValue("CenterlineID");
        var featureAttributes = Dictionary(Text(road))['attributes'];
        var newAttributes = {};
        for(var k in featureAttributes) {
            if (IndexOf(["globalid", "objectid"], Lower(k)) &amp;gt; -1) {
                continue;
            }
            else if (Lower(k) == "fromright") {
                newAttributes['fromright'] = newToFromRight[1];
            }
            else if (Lower(k) == "fromleft") {
                newAttributes['fromleft'] = newToFromLeft[1];
            }
            else {
                newAttributes[k] = featureAttributes[k];
            }
        }
                adds[Count(adds)] = {
             'attributes': newAttributes,
             'geometry': secondGeometry
        }
                // Find the all the related road alias names for the intersecting road
        // Store an add for every road alias and related it to the new road that was added after the cut
        var roadNameAliases = Filter(FeatureSetByName($datastore, "AliasStreetName"), "centerlineid = '" + road.centerlineid + "'");
        for (var roadNameAlias in roadNameAliases) {
            nameAliasAdds[Count(nameAliasAdds)] = {
                'attributes': {'centerlineid' : newId, 'roadpredir' : roadNameAlias.roadpredir, 'roadname' : roadNameAlias.roadname, 'roadtype' : roadNameAlias.roadtype,}
            }
        }
    }
}
// Return the new id of the road
// Using the edit parameter return the list of updates and adds for the intersecting roads and a list of adds for related road alias names
return {     'result' : id,
    'edit' : [{'className': 'RoadCenterline', 'adds' : adds, 'updates' : updates},               {'className': 'AliasStreetName', 'adds': nameAliasAdds}]     };
&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20191029" Time="095805" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;// This rule will create a new unique id when a road is created and splits any intersecting roads
// All intersecting roads will be split at their intersection and the address ranges will be updated to reflect where the split occured.
// This function calculates a new from and to address based on the percentage along the line the split occurs
function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
        var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
        var val = percent * range;
    var newVal = 0;
        if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
        if (newVal == range) newVal -= 2;
        if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
// If the id of the road is not null return the id
// This prevents the rule from being processed on new roads created as a result of the split
if ($feature.centerlineid != null) return $feature.centerlineid;
// Create a new id for the road and get the object id and geometry from the road
var id = "RD-" + NextSequenceValue("CenterlineID");
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
// Get all the intersecting roads
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
var adds = [];
var updates = [];
var nameAliasAdds = [];
// Loop through each intersecting road
for (var road in intersectingRoads) {
    // Continue to the next road if the intersecting road is the same or geometry is the same
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
        // Cut the intersecting road and continue if the result of the cut is 0 features
    var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
        var validCut = true;
    var geometries = []
        // Loop through collection of lines and check that it was a valid cut in the middle of a segment
    for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i], 'feet') == 0) {
            validCut = false;
            continue;
        }
                // Handle multipart geometries
        var allParts  = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts )
        {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    // Process the cut if valid
    if (validCut) {
                // Get the address range of the intersecting road
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
            var firstGeometry = null;
        var secondGeomArray = [];            var firstPoint = Geometry(road).paths[0][0];
                // Loop through each geometry in the cut
        // Store the geometry including the first vertex of the orginal road as the first geometry
        // Collect all other geometries in an array
        for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            }
            else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
                // Merge all other geometries as the second geometry
        var secondGeometry = Union(secondGeomArray);
                // Calculate the new address ranges based on the intersection location along the line
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
                // Store an update for the intersecting road with the first geometry from the cut and the new right to and left to value         updates[Count(updates)] = {
            'objectID': road.OBJECTID,
            'attributes': {'toright' : newToFromRight[0], 'toleft' : newToFromLeft[0]},
            'geometry': firstGeometry
        }
        // Create a new id for a road
        // Store an add for a new road with the second geometry from the cut and the new right from and left from value         var newId = "RD-" + NextSequenceValue("CenterlineID");
        var featureAttributes = Dictionary(Text(road))['attributes'];
        var newAttributes = {};
        for(var k in featureAttributes) {
            if (IndexOf(["globalid", "objectid", "shape_length", "shape_area"], Lower(k)) &amp;gt; -1) {
                continue;
            }
            else if (Lower(k) == "fromright") {
                newAttributes['fromright'] = newToFromRight[1];
            }
            else if (Lower(k) == "fromleft") {
                newAttributes['fromleft'] = newToFromLeft[1];
            }
            else {
                newAttributes[k] = featureAttributes[k];
            }
        }
                adds[Count(adds)] = {
             'attributes': newAttributes,
             'geometry': secondGeometry
        }
                // Find the all the related road alias names for the intersecting road
        // Store an add for every road alias and related it to the new road that was added after the cut
        var roadNameAliases = Filter(FeatureSetByName($datastore, "AliasStreetName"), "centerlineid = '" + road.centerlineid + "'");
        for (var roadNameAlias in roadNameAliases) {
            nameAliasAdds[Count(nameAliasAdds)] = {
                'attributes': {'centerlineid' : newId, 'roadpredir' : roadNameAlias.roadpredir, 'roadname' : roadNameAlias.roadname, 'roadtype' : roadNameAlias.roadtype,}
            }
        }
    }
}
// Return the new id of the road
// Using the edit parameter return the list of updates and adds for the intersecting roads and a list of adds for related road alias names
return {     'result' : id,
    'edit' : [{'className': 'RoadCenterline', 'adds' : adds, 'updates' : updates},               {'className': 'AliasStreetName', 'adds': nameAliasAdds}]     };
&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20191029" Time="105812" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;// This rule will create a new unique id when a road is created and splits any intersecting roads
// All intersecting roads will be split at their intersection and the address ranges will be updated to reflect where the split occured.
// This function calculates a new from and to address based on the percentage along the line the split occurs
function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
        var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
        var val = percent * range;
    var newVal = 0;
        if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
        if (newVal == range) newVal -= 2;
        if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
// If the id of the road is not null return the id
// This prevents the rule from being processed on new roads created as a result of the split
if ($feature.centerlineid != null) return $feature.centerlineid;
// Create a new id for the road and get the object id and geometry from the road
var id = "RD-" + NextSequenceValue("CenterlineID");
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
// Get all the intersecting roads
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
var adds = [];
var updates = [];
var nameAliasAdds = [];
// Loop through each intersecting road
for (var road in intersectingRoads) {
    // Continue to the next road if the intersecting road is the same or geometry is the same
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
        // Cut the intersecting road and continue if the result of the cut is 0 features
    var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
        var validCut = true;
    var geometries = []
        // Loop through collection of lines and check that it was a valid cut in the middle of a segment
    for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i], 'feet') == 0) {
            validCut = false;
            continue;
        }
                // Handle multipart geometries
        var allParts  = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts )
        {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    // Process the cut if valid
    if (validCut) {
                // Get the address range of the intersecting road
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
            var firstGeometry = null;
        var secondGeomArray = [];            var firstPoint = Geometry(road).paths[0][0];
                // Loop through each geometry in the cut
        // Store the geometry including the first vertex of the orginal road as the first geometry
        // Collect all other geometries in an array
        for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            }
            else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
                // Merge all other geometries as the second geometry
        var secondGeometry = Union(secondGeomArray);
                // Calculate the new address ranges based on the intersection location along the line
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
                // Store an update for the intersecting road with the first geometry from the cut and the new right to and left to value         updates[Count(updates)] = {
            'objectID': road.OBJECTID,
            'attributes': {'toright' : newToFromRight[0], 'toleft' : newToFromLeft[0]},
            'geometry': firstGeometry
        }
        // Create a new id for a road
        // Store an add for a new road with the second geometry from the cut and the new right from and left from value         var newId = "RD-" + NextSequenceValue("CenterlineID");
        var featureAttributes = Dictionary(Text(road))['attributes'];
        var newAttributes = {};
        for(var k in featureAttributes) {
            if (IndexOf(["globalid", "objectid", "shape_length", "shape_area"], Lower(k)) &amp;gt; -1) {
                continue;
            }
            else if (Lower(k) == "fromright") {
                newAttributes['fromright'] = newToFromRight[1];
            }
            else if (Lower(k) == "fromleft") {
                newAttributes['fromleft'] = newToFromLeft[1];
            }
            else {
                newAttributes[k] = featureAttributes[k];
            }
        }
                adds[Count(adds)] = {
             'attributes': newAttributes,
             'geometry': secondGeometry
        }
                // Find all the related road alias names for the intersecting road
        // Store an add for every road alias and related it to the new road that was added after the cut
        var roadNameAliases = Filter(FeatureSetByName($datastore, "AliasStreetName"), "centerlineid = '" + road.centerlineid + "'");
        for (var roadNameAlias in roadNameAliases) {
            var featureAttributes = Dictionary(Text(roadNameAlias))['attributes'];
            var newAttributes = {};
            for(var k in featureAttributes) {
                if (IndexOf(["globalid", "objectid"], Lower(k)) &amp;gt; -1) {
                    continue;
                }
                else {
                    newAttributes[k] = featureAttributes[k];
                }
            }
            newAttributes['centerlineid'] = newId
            nameAliasAdds[Count(nameAliasAdds)] = {
                'attributes': newAttributes
            }
        }
    }
}
// Return the new id of the road
// Using the edit parameter return the list of updates and adds for the intersecting roads and a list of adds for related road alias names
return {     'result' : id,
    'edit' : [{'className': 'RoadCenterline', 'adds' : adds, 'updates' : updates},               {'className': 'AliasStreetName', 'adds': nameAliasAdds}]     };
&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20191029" Time="110208" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;// This rule will create a new unique id when a road is created and splits any intersecting roads
// All intersecting roads will be split at their intersection and the address ranges will be updated to reflect where the split occured.
// This function calculates a new from and to address based on the percentage along the line the split occurs
function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
        var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
        var val = percent * range;
    var newVal = 0;
        if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
        if (newVal == range) newVal -= 2;
        if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
// If the id of the road is not null return the id
// This prevents the rule from being processed on new roads created as a result of the split
if ($feature.centerlineid != null) return $feature.centerlineid;
// Create a new id for the road and get the object id and geometry from the road
var id = "RD-" + NextSequenceValue("CenterlineID");
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
// Get all the intersecting roads
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
var adds = [];
var updates = [];
var nameAliasAdds = [];
// Loop through each intersecting road
for (var road in intersectingRoads) {
    // Continue to the next road if the intersecting road is the same or geometry is the same
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
        // Cut the intersecting road and continue if the result of the cut is 0 features
    var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
        var validCut = true;
    var geometries = []
        // Loop through collection of lines and check that it was a valid cut in the middle of a segment
    for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i], 'feet') == 0) {
            validCut = false;
            continue;
        }
                // Handle multipart geometries
        var allParts  = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts )
        {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    // Process the cut if valid
    if (validCut) {
                // Get the address range of the intersecting road
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
            var firstGeometry = null;
        var secondGeomArray = [];            var firstPoint = Geometry(road).paths[0][0];
                // Loop through each geometry in the cut
        // Store the geometry including the first vertex of the orginal road as the first geometry
        // Collect all other geometries in an array
        for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            }
            else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
                // Merge all other geometries as the second geometry
        var secondGeometry = Union(secondGeomArray);
                // Calculate the new address ranges based on the intersection location along the line
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
                // Store an update for the intersecting road with the first geometry from the cut and the new right to and left to value         updates[Count(updates)] = {
            'objectID': road.OBJECTID,
            'attributes': {'toright' : newToFromRight[0], 'toleft' : newToFromLeft[0]},
            'geometry': firstGeometry
        }
        // Create a new id for a road
        // Store an add for a new road with the second geometry from the cut and the new right from and left from value         var newId = "RD-" + NextSequenceValue("CenterlineID");
        var featureAttributes = Dictionary(Text(road))['attributes'];
        var newAttributes = {};
        for(var k in featureAttributes) {
            if (IndexOf(["globalid", "objectid", "shape_length", "shape_area"], Lower(k)) &amp;gt; -1) {
                continue;
            }
            else if (Lower(k) == "fromright") {
                newAttributes['fromright'] = newToFromRight[1];
            }
            else if (Lower(k) == "fromleft") {
                newAttributes['fromleft'] = newToFromLeft[1];
            }
            else {
                newAttributes[k] = featureAttributes[k];
            }
        }
        newAttributes['centerlineid'] = newId;
        adds[Count(adds)] = {
             'attributes': newAttributes,
             'geometry': secondGeometry
        }
                // Find all the related road alias names for the intersecting road
        // Store an add for every road alias and related it to the new road that was added after the cut
        var roadNameAliases = Filter(FeatureSetByName($datastore, "AliasStreetName"), "centerlineid = '" + road.centerlineid + "'");
        for (var roadNameAlias in roadNameAliases) {
            var featureAttributes = Dictionary(Text(roadNameAlias))['attributes'];
            var newAttributes = {};
            for(var k in featureAttributes) {
                if (IndexOf(["globalid", "objectid"], Lower(k)) &amp;gt; -1) {
                    continue;
                }
                else {
                    newAttributes[k] = featureAttributes[k];
                }
            }
            newAttributes['centerlineid'] = newId
            nameAliasAdds[Count(nameAliasAdds)] = {
                'attributes': newAttributes
            }
        }
    }
}
// Return the new id of the road
// Using the edit parameter return the list of updates and adds for the intersecting roads and a list of adds for related road alias names
return {     'result' : id,
    'edit' : [{'className': 'RoadCenterline', 'adds' : adds, 'updates' : updates},               {'className': 'AliasStreetName', 'adds': nameAliasAdds}]     };
&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20191031" Time="150413" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\Toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;// This rule will create a new unique id when a road is created and splits any intersecting roads
// All intersecting roads will be split at their intersection and the address ranges will be updated to reflect where the split occured.
// This function calculates a new from and to address based on the percentage along the line the split occurs
function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
    var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
    var val = percent * range;
    var newVal = 0;
    if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
    if (newVal == range) newVal -= 2;
    if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
// If the id of the road is not null return the id
// This prevents the rule from being processed on new roads created as a result of the split
if (IsEmpty($feature.centerlineid) == false) return $feature.centerlineid;
// Create a new id for the road and get the object id and geometry from the road
var id = "RD-" + NextSequenceValue("CenterlineID");
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
// Get all the intersecting roads
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
var adds = [];
var updates = [];
var nameAliasAdds = [];
// Loop through each intersecting road
for (var road in intersectingRoads) {
    // Continue to the next road if the intersecting road is the same or geometry is the same
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
    // Cut the intersecting road and continue if the result of the cut is 0 features
    var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
    var validCut = true;
    var geometries = []
    // Loop through collection of lines and check that it was a valid cut in the middle of a segment
    for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i], 'feet') == 0) {
            validCut = false;
            continue;
        }
        // Handle multipart geometries
        var allParts = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts) {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    // Process the cut if valid
    if (validCut) {
        // Get the address range of the intersecting road
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
        var firstGeometry = null;
        var secondGeomArray = [];
        var firstPoint = Geometry(road).paths[0][0];
        // Loop through each geometry in the cut
        // Store the geometry including the first vertex of the orginal road as the first geometry
        // Collect all other geometries in an array
        for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            } else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
        // Merge all other geometries as the second geometry
        var secondGeometry = Union(secondGeomArray);
        // Calculate the new address ranges based on the intersection location along the line
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
        // Store an update for the intersecting road with the first geometry from the cut and the new right to and left to value         updates[Count(updates)] = {
            'objectID': road.OBJECTID,
            'attributes': {'toright': newToFromRight[0], 'toleft': newToFromLeft[0]},
            'geometry': firstGeometry
        }
        // Create a new id for a road
        // Store an add for a new road with the second geometry from the cut and the new right from and left from value         var newId = "RD-" + NextSequenceValue("CenterlineID");
        var featureAttributes = Dictionary(Text(road))['attributes'];
        var newAttributes = {};
        for (var k in featureAttributes) {
            if (IndexOf(["globalid", "objectid", "shape_length", "shape_area"], Lower(k)) &amp;gt; -1) {
                continue;
            } else if (Lower(k) == "fromright") {
                newAttributes['fromright'] = newToFromRight[1];
            } else if (Lower(k) == "fromleft") {
                newAttributes['fromleft'] = newToFromLeft[1];
            } else {
                newAttributes[k] = featureAttributes[k];
            }
        }
        newAttributes['centerlineid'] = newId;
        adds[Count(adds)] = {
            'attributes': newAttributes,
            'geometry': secondGeometry
        }
        // Find all the related road alias names for the intersecting road
        // Store an add for every road alias and related it to the new road that was added after the cut
        var roadNameAliases = Filter(FeatureSetByName($datastore, "AliasStreetName"), "centerlineid = '" + road.centerlineid + "'");
        for (var roadNameAlias in roadNameAliases) {
            var featureAttributes = Dictionary(Text(roadNameAlias))['attributes'];
            var newAttributes = {};
            for (var k in featureAttributes) {
                if (IndexOf(["globalid", "objectid"], Lower(k)) &amp;gt; -1) {
                    continue;
                } else {
                    newAttributes[k] = featureAttributes[k];
                }
            }
            newAttributes['centerlineid'] = newId
            nameAliasAdds[Count(nameAliasAdds)] = {
                'attributes': newAttributes
            }
        }
    }
}
// Return the new id of the road
// Using the edit parameter return the list of updates and adds for the intersecting roads and a list of adds for related road alias names
return {
    'result': id,
    'edit': [{'className': 'RoadCenterline', 'adds': adds, 'updates': updates},
        {'className': 'AliasStreetName', 'adds': nameAliasAdds}]
};
&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Validate Full Road Name&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;// This constraint rule will ensure the full name exist in the master street name table
// Get the full name of the road. If it is null return the fullname
var fullname = $feature.fullname;
if (IsEmpty(fullname)) return fullname;
// Search the master street name table for a row matching the fullname.
// If there is no matching record raise an error preventing the edit
var masterStreetNames = Filter(FeatureSetByName($datastore, "MasterStreetName"), "fullname = '" + fullname + "'");
if (Count(masterStreetNames) == 0) {
    return {
        "errorMessage": "Full Road Name is invalid, must be defined in the Master Street Name table."
    }
}
return true;&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;False&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;True&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20191111" Time="094715" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\Toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Users\scot6032\Documents\Demos and Prototypes\AddressDataManagement\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" &lt;operationSequence&gt;&lt;workflow&gt;&lt;AssignDefaultToField&gt;&lt;field_name&gt;countryleft&lt;/field_name&gt;&lt;default_value&gt;&lt;/default_value&gt;&lt;/AssignDefaultToField&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AssignDefaultToField&gt;&lt;field_name&gt;countryright&lt;/field_name&gt;&lt;default_value&gt;&lt;/default_value&gt;&lt;/AssignDefaultToField&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;</Process>
<Process Date="20191115" Time="140336" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Users\scot6032\Documents\Demos and Prototypes\AddressDataManagement\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" &lt;operationSequence&gt;&lt;workflow&gt;&lt;AssignDomainToField&gt;&lt;field_name&gt;fullname&lt;/field_name&gt;&lt;domain_name&gt;RoadNameIndex&lt;/domain_name&gt;&lt;/AssignDomainToField&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;</Process>
<Process Date="20191119" Time="153500" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\ImportAttributeRules">ImportAttributeRules "C:\Solutions\Tasks\January2020\Address Data Management\Project\Address Data Management\Address Data Management Z.gdb\Address\RoadCenterline" "C:\Solutions\Tasks\January2020\Address Data Management\Project\Address Data Management\Rules\RoadCenterline.CSV"</Process>
<Process Date="20191119" Time="154811" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\Append">Append 'C:\Solutions\Tasks\January2020\Address Data Management\Sample Data\Address Data Management Sample.gdb\Address\RoadCenterline' "Roads\Local Streets" "Input schema must match target schema" # # #</Process>
<Process Date="20191120" Time="131853" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "C:\Solutions\Tasks\January2020\Address Data Management\Sample Data\Address Data Management Sample.gdb\Address\RoadCenterline" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AddAttributeRule&gt;&lt;rule_name&gt;Logical Block Addressing (Left).js&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;expression&gt;// This rule will calculate the Left To Address using the Left From Address, the length of the road and an interval or distance between unique addresses
// Specify the interval or distance between unique addresses
var addressIntervalDistance = 10;
// Specify the unity of measure. Valid optons are feet, meters, yards, miles, kilometers
var unit = "feet";
// If the Left From Address is empty or the Left To Address is not empty return the Left To Address var fromLeft = $feature.fromleft;
var toLeft = $feature.toleft;
if (IsEmpty(fromLeft) || !IsEmpty(toLeft)) return toLeft;
// Return the new Left To Address
var featureLength = Length($feature, unit);
return Ceil(featureLength/addressIntervalDistance) * 2 + fromLeft;
&lt;/expression&gt;&lt;is_editable&gt;True&lt;/is_editable&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;True&lt;/triggering_events_update&gt;&lt;field_name&gt;toleft&lt;/field_name&gt;&lt;exclude_from_client_eval&gt;False&lt;/exclude_from_client_eval&gt;&lt;batch&gt;False&lt;/batch&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;category&gt;-1&lt;/category&gt;&lt;/AddAttributeRule&gt;&lt;DisableAttributeRules&gt;&lt;rule_name&gt;Logical Block Addressing (Left).js&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;/DisableAttributeRules&gt;&lt;ReorderAttributeRule&gt;&lt;rule_name&gt;Logical Block Addressing (Left).js&lt;/rule_name&gt;&lt;evaluation_order&gt;3&lt;/evaluation_order&gt;&lt;/ReorderAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20191120" Time="132117" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "C:\Solutions\Tasks\January2020\Address Data Management\Sample Data\Address Data Management Sample.gdb\Address\RoadCenterline" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AddAttributeRule&gt;&lt;rule_name&gt;Logical Block Addressing (Right)&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;expression&gt;// This rule will calculate the Right To Address using the Right From Address, the length of the road and an interval or distance between unique addresses
// Specify the interval or distance between unique addresses
var addressIntervalDistance = 10;
// Specify the unity of measure. Valid optons are feet, meters, yards, miles, kilometers
var unit = "feet";
// If the Right From Address is empty or the Right To Address is not empty return the Right To Address var fromRight = $feature.fromRight;
var toRight = $feature.toRight;
if (IsEmpty(fromRight) || !IsEmpty(toRight)) return toRight;
// Return the new Right To Address
var featureLength = Length($feature, unit);
return Ceil(featureLength/addressIntervalDistance) * 2 + fromRight;
&lt;/expression&gt;&lt;is_editable&gt;True&lt;/is_editable&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;True&lt;/triggering_events_update&gt;&lt;field_name&gt;toright&lt;/field_name&gt;&lt;exclude_from_client_eval&gt;False&lt;/exclude_from_client_eval&gt;&lt;batch&gt;False&lt;/batch&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;category&gt;-1&lt;/category&gt;&lt;/AddAttributeRule&gt;&lt;DisableAttributeRules&gt;&lt;rule_name&gt;Logical Block Addressing (Right)&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;/DisableAttributeRules&gt;&lt;ReorderAttributeRule&gt;&lt;rule_name&gt;Logical Block Addressing (Right)&lt;/rule_name&gt;&lt;evaluation_order&gt;4&lt;/evaluation_order&gt;&lt;/ReorderAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20191120" Time="132134" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "C:\Solutions\Tasks\January2020\Address Data Management\Sample Data\Address Data Management Sample.gdb\Address\RoadCenterline" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;DeleteAttributeRule&gt;&lt;rule_name&gt;Logical Block Addressing (Left).js&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;/DeleteAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20191120" Time="132241" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "C:\Solutions\Tasks\January2020\Address Data Management\Sample Data\Address Data Management Sample.gdb\Address\RoadCenterline" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AddAttributeRule&gt;&lt;rule_name&gt;Logical Block Addressing (Left)&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;expression&gt;// This rule will calculate the Left To Address using the Left From Address, the length of the road and an interval or distance between unique addresses
// Specify the interval or distance between unique addresses
var addressIntervalDistance = 10;
// Specify the unity of measure. Valid optons are feet, meters, yards, miles, kilometers
var unit = "feet";
// If the Left From Address is empty or the Left To Address is not empty return the Left To Address var fromLeft = $feature.fromleft;
var toLeft = $feature.toleft;
if (IsEmpty(fromLeft) || !IsEmpty(toLeft)) return toLeft;
// Return the new Left To Address
var featureLength = Length($feature, unit);
return Ceil(featureLength/addressIntervalDistance) * 2 + fromLeft;
&lt;/expression&gt;&lt;is_editable&gt;True&lt;/is_editable&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;True&lt;/triggering_events_update&gt;&lt;field_name&gt;toleft&lt;/field_name&gt;&lt;exclude_from_client_eval&gt;False&lt;/exclude_from_client_eval&gt;&lt;batch&gt;False&lt;/batch&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;category&gt;-1&lt;/category&gt;&lt;/AddAttributeRule&gt;&lt;DisableAttributeRules&gt;&lt;rule_name&gt;Logical Block Addressing (Left)&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;/DisableAttributeRules&gt;&lt;ReorderAttributeRule&gt;&lt;rule_name&gt;Logical Block Addressing (Left)&lt;/rule_name&gt;&lt;evaluation_order&gt;3&lt;/evaluation_order&gt;&lt;/ReorderAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20191126" Time="130834" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Editing Tools.tbx\FlipLine">FlipLine "Roads\Local Streets"</Process>
<Process Date="20191126" Time="130834" ToolSource="C:\Solutions\Tasks\January2020\Address Data Management\Data Reviewer\Address Data Management\AddressTools.pyt\FlipRoads">FlipRoads "Roads\Local Streets" true fromright fromleft toright toleft</Process>
<Process Date="20191127" Time="120151" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Data Reviewer\Address Data Management\Address Data Management Sample.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;// This rule will split intersecting roads at their intersection and the address ranges will be updated to reflect where the split occured
//Define any fields to be copied from the centerline when split (lower case)
var centerline_field_names = ["rclnguid", "discrpagid", "rangeprefixleft", "fromleft", "toleft", "parityleft", "rangeprefixright", "fromright", "toright", "parityright", "fullname", "fedroute", "fedrtetype", "afedrte", "afedrtetype", "stroute", "strtetype", "astrte", "astrtetype", "ctyroute", "onewaydir", "roadlevel", "inwater", "roadclass", "countryleft", "countryright", "stateleft", "stateright", "countyleft", "countyright","munileft", "muniright", "zipleft", "zipright", "msagleft", "msagright", "esnleft", "esnright"]
// This function calculates a new from and to address based on the percentage along the line the split occurs
function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
    var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
    var val = percent * range;
    var newVal = 0;
    if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
    if (newVal == range) newVal -= 2;
    if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
// If the road was created from a split its id will have a prefix of '::'
// Don't process any futher splits to prevent getting in an infinite loop
var id = $feature.centerlineid;
if (Left(id, 2) == "::") return id;
// Get the object id, centerline id and geometry from the road
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
// Get all the intersecting roads
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
var adds = [];
var updates = [];
// Loop through each intersecting road
for (var road in intersectingRoads) {
    // Continue to the next road if the intersecting road is the same or geometry is the same
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
    // Cut the intersecting road and continue if the result of the cut is 0 features
    var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
    var validCut = true;
    var geometries = []
    // Loop through collection of lines and check that it was a valid cut in the middle of a segment
    for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i]) == 0) {
            validCut = false;
            continue;
        }
        // Handle multipart geometries
        var allParts = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts) {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    // Process the cut if valid
    if (validCut) {
        // Get the address range of the intersecting road
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
        var firstGeometry = null;
        var secondGeomArray = [];
        var firstPoint = Geometry(road).paths[0][0];
        // Loop through each geometry in the cut
        // Store the geometry including the first vertex of the orginal road as the first geometry
        // Collect all other geometries in an array
        for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            } else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
        // Merge all other geometries as the second geometry
        var secondGeometry = Union(secondGeomArray);
        // Calculate the new address ranges based on the intersection location along the line
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
        // Store an update for the intersecting road with the first geometry from the cut and the new right to and left to value         updates[Count(updates)] = {
            'objectID': road.OBJECTID,
            'attributes': {'toright': newToFromRight[0], 'toleft': newToFromLeft[0]},
            'geometry': firstGeometry
        }
        // Store an add for a new road with the second geometry from the cut and the new right from and left from value         var featureAttributes = Dictionary(Text(road))['attributes'];
        var newAttributes = {};
        for (var k in featureAttributes) {
            if (Lower(k) == "fromright") {
                newAttributes['fromright'] = newToFromRight[1];
            } else if (Lower(k) == "fromleft") {
                newAttributes['fromleft'] = newToFromLeft[1];
            } else if (IndexOf(centerline_field_names, Lower(k)) &amp;gt; -1) {
                newAttributes[k] = featureAttributes[k];
            } else {
                continue;
            }
        }
        // Store a reference to the original id of the road for the split
        newAttributes['centerlineid'] = "::" + road.centerlineid;
        adds[Count(adds)] = {
            'attributes': newAttributes,
            'geometry': secondGeometry
        }
    }
}
// Return the original road centerline id
// Using the edit parameter return the list of updates and adds for the split roads
return {
    'result': id,
    'edit': [{'className': 'RoadCenterline', 'adds': adds, 'updates': updates}]
};&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20191127" Time="120507" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Data Reviewer\Address Data Management\Address Data Management Sample.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;rule_description&gt;Split intersecting roads at their intersection and the address ranges will be updated to reflect where the split occured.&lt;/rule_description&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;// This rule will split intersecting roads at their intersection and the address ranges will be updated to reflect where the split occured
//Define any fields to be copied from the centerline when split (lower case)
var centerline_field_names = ["rclnguid", "discrpagid", "rangeprefixleft", "fromleft", "toleft", "parityleft", "rangeprefixright", "fromright", "toright", "parityright", "fullname", "fedroute", "fedrtetype", "afedrte", "afedrtetype", "stroute", "strtetype", "astrte", "astrtetype", "ctyroute", "onewaydir", "roadlevel", "inwater", "roadclass", "countryleft", "countryright", "stateleft", "stateright", "countyleft", "countyright","munileft", "muniright", "zipleft", "zipright", "msagleft", "msagright", "esnleft", "esnright"]
// This function calculates a new from and to address based on the percentage along the line the split occurs
function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
    var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
    var val = percent * range;
    var newVal = 0;
    if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
    if (newVal == range) newVal -= 2;
    if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
// If the road was created from a split its id will have a prefix of '::'
// Don't process any futher splits to prevent getting in an infinite loop
var id = $feature.centerlineid;
if (Left(id, 2) == "::") return id;
// Get the object id, centerline id and geometry from the road
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
// Get all the intersecting roads
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
var adds = [];
var updates = [];
// Loop through each intersecting road
for (var road in intersectingRoads) {
    // Continue to the next road if the intersecting road is the same or geometry is the same
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
    // Cut the intersecting road and continue if the result of the cut is 0 features
    var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
    var validCut = true;
    var geometries = []
    // Loop through collection of lines and check that it was a valid cut in the middle of a segment
    for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i]) == 0) {
            validCut = false;
            continue;
        }
        // Handle multipart geometries
        var allParts = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts) {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    // Process the cut if valid
    if (validCut) {
        // Get the address range of the intersecting road
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
        var firstGeometry = null;
        var secondGeomArray = [];
        var firstPoint = Geometry(road).paths[0][0];
        // Loop through each geometry in the cut
        // Store the geometry including the first vertex of the orginal road as the first geometry
        // Collect all other geometries in an array
        for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            } else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
        // Merge all other geometries as the second geometry
        var secondGeometry = Union(secondGeomArray);
        // Calculate the new address ranges based on the intersection location along the line
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
        // Store an update for the intersecting road with the first geometry from the cut and the new right to and left to value         updates[Count(updates)] = {
            'objectID': road.OBJECTID,
            'attributes': {'toright': newToFromRight[0], 'toleft': newToFromLeft[0]},
            'geometry': firstGeometry
        }
        // Store an add for a new road with the second geometry from the cut and the new right from and left from value         var featureAttributes = Dictionary(Text(road))['attributes'];
        var newAttributes = {};
        for (var k in featureAttributes) {
            if (Lower(k) == "fromright") {
                newAttributes['fromright'] = newToFromRight[1];
            } else if (Lower(k) == "fromleft") {
                newAttributes['fromleft'] = newToFromLeft[1];
            } else if (IndexOf(centerline_field_names, Lower(k)) &amp;gt; -1) {
                newAttributes[k] = featureAttributes[k];
            } else {
                continue;
            }
        }
        // Store a reference to the original id of the road for the split
        newAttributes['centerlineid'] = "::" + road.centerlineid;
        adds[Count(adds)] = {
            'attributes': newAttributes,
            'geometry': secondGeometry
        }
    }
}
// Return the original road centerline id
// Using the edit parameter return the list of updates and adds for the split roads
return {
    'result': id,
    'edit': [{'className': 'RoadCenterline', 'adds': adds, 'updates': updates}]
};&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Centerline ID and Copy Street Aliases&lt;/rule_name&gt;&lt;rule_description&gt;Create a new unique id when a road centerline is created and copy related street alias names from split roads.&lt;/rule_description&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;// This rule will create a new unique id when a road centerline is created
// This will also copy related street alias names for any roads that were added as a result of a split
// Define the leading text and the delimiter for the ID
var prefix = "RD"
var join_char = "-"
// Define any fields to be copied from the street name aliases table (lower case)
var alias_field_names = ["roadpremod", "roadpredir", "roadpretype", "roadpretypesep", "roadname", "roadtype", "roadpostdir", "roadpostmod", "fullname", "municipality"]
// If the road was created from a split its oirginal id will have a prefix of '::'
// We will use this to find the original road and its related alias street names
if (Left($feature.centerlineid, 2) == "::" || IsEmpty($feature.centerlineid)) {
    var id = Concatenate([prefix, NextSequenceValue("CenterlineID")], join_char)
        // If the centerlineid is not set return the new id
    if (IsEmpty($feature.centerlineid)) return id;
       // Find the original ID of the road that was split
    var original_id = Mid($feature.centerlineid, 2, Count($feature.centerlineid) - 2);
    if (IsEmpty(original_id)) return id;
        // Find all the related road alias names for the split road
    // Store an add for every road alias and related it to the new road that was added after the cut
    var adds = []
    var roadNameAliases = Filter(FeatureSetByName($datastore, "AliasStreetName"), "centerlineid = '" + original_id + "'");
    for (var roadNameAlias in roadNameAliases) {
        var featureAttributes = Dictionary(Text(roadNameAlias))['attributes'];
        var newAttributes = {};
        for (var k in featureAttributes) {
            if (IndexOf(alias_field_names, Lower(k)) &amp;gt; -1) {
                newAttributes[k] = featureAttributes[k];
            } else {
                continue;
            }
        }
        newAttributes['centerlineid'] = id
        adds[Count(adds)] = {
            'attributes': newAttributes
        }
    }
        // Using the edit parameter return the list of updates and adds for the intersecting roads and a list of adds for related road alias names
    return {
        'result': id,
        'edit': [{'className': 'AliasStreetName', 'adds': adds}]
    };
}
else {
   return $feature.centerlineid
}&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Logical Block Addressing (Left)&lt;/rule_name&gt;&lt;rule_description&gt;Calculate the left to address using the left from address, the length of the road and an interval or distance between unique addresses.&lt;/rule_description&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;// This rule will calculate the left to address using the left from address, the length of the road and an interval or distance between unique addresses
// Specify the interval or distance between unique addresses
var addressIntervalDistance = 10;
// Specify the unity of measure. Valid optons are feet, meters, yards, miles, kilometers
var unit = "feet";
// If the Left From Address is empty or the Left To Address is not empty return the Left To Address var fromLeft = $feature.fromleft;
var toLeft = $feature.toleft;
if (IsEmpty(fromLeft) || !IsEmpty(toLeft)) return toLeft;
// Return the new Left To Address
var featureLength = Length($feature, unit);
return Ceil(featureLength/addressIntervalDistance) * 2 + fromLeft;
&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;True&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Logical Block Addressing (Right)&lt;/rule_name&gt;&lt;rule_description&gt;Calculate the right to address using the right from address, the length of the road and an interval or distance between unique addresses.&lt;/rule_description&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;// This rule will calculate the right to address using the right from address, the length of the road and an interval or distance between unique addresses
// Specify the interval or distance between unique addresses
var addressIntervalDistance = 10;
// Specify the unity of measure. Valid optons are feet, meters, yards, miles, kilometers
var unit = "feet";
// If the Right From Address is empty or the Right To Address is not empty return the Right To Address var fromRight = $feature.fromRight;
var toRight = $feature.toRight;
if (IsEmpty(fromRight) || !IsEmpty(toRight)) return toRight;
// Return the new Right To Address
var featureLength = Length($feature, unit);
return Ceil(featureLength/addressIntervalDistance) * 2 + fromRight;
&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;True&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20191127" Time="120553" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.5.0'&gt;&lt;FeatureDataset&gt;Address&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;DATABASE=C:\Solutions\Tasks\January2020\Address Data Management\Data Reviewer\Address Data Management\Address Data Management Sample.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;rule_description&gt;Splits intersecting roads at their intersection and the address ranges will be updated to reflect where the split occured.&lt;/rule_description&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;// This rule will split intersecting roads at their intersection and the address ranges will be updated to reflect where the split occured
//Define any fields to be copied from the centerline when split (lower case)
var centerline_field_names = ["rclnguid", "discrpagid", "rangeprefixleft", "fromleft", "toleft", "parityleft", "rangeprefixright", "fromright", "toright", "parityright", "fullname", "fedroute", "fedrtetype", "afedrte", "afedrtetype", "stroute", "strtetype", "astrte", "astrtetype", "ctyroute", "onewaydir", "roadlevel", "inwater", "roadclass", "countryleft", "countryright", "stateleft", "stateright", "countyleft", "countyright","munileft", "muniright", "zipleft", "zipright", "msagleft", "msagright", "esnleft", "esnright"]
// This function calculates a new from and to address based on the percentage along the line the split occurs
function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
    var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
    var val = percent * range;
    var newVal = 0;
    if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
    if (newVal == range) newVal -= 2;
    if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
// If the road was created from a split its id will have a prefix of '::'
// Don't process any futher splits to prevent getting in an infinite loop
var id = $feature.centerlineid;
if (Left(id, 2) == "::") return id;
// Get the object id, centerline id and geometry from the road
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
// Get all the intersecting roads
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
var adds = [];
var updates = [];
// Loop through each intersecting road
for (var road in intersectingRoads) {
    // Continue to the next road if the intersecting road is the same or geometry is the same
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
    // Cut the intersecting road and continue if the result of the cut is 0 features
    var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
    var validCut = true;
    var geometries = []
    // Loop through collection of lines and check that it was a valid cut in the middle of a segment
    for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i]) == 0) {
            validCut = false;
            continue;
        }
        // Handle multipart geometries
        var allParts = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts) {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    // Process the cut if valid
    if (validCut) {
        // Get the address range of the intersecting road
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
        var firstGeometry = null;
        var secondGeomArray = [];
        var firstPoint = Geometry(road).paths[0][0];
        // Loop through each geometry in the cut
        // Store the geometry including the first vertex of the orginal road as the first geometry
        // Collect all other geometries in an array
        for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            } else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
        // Merge all other geometries as the second geometry
        var secondGeometry = Union(secondGeomArray);
        // Calculate the new address ranges based on the intersection location along the line
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
        // Store an update for the intersecting road with the first geometry from the cut and the new right to and left to value         updates[Count(updates)] = {
            'objectID': road.OBJECTID,
            'attributes': {'toright': newToFromRight[0], 'toleft': newToFromLeft[0]},
            'geometry': firstGeometry
        }
        // Store an add for a new road with the second geometry from the cut and the new right from and left from value         var featureAttributes = Dictionary(Text(road))['attributes'];
        var newAttributes = {};
        for (var k in featureAttributes) {
            if (Lower(k) == "fromright") {
                newAttributes['fromright'] = newToFromRight[1];
            } else if (Lower(k) == "fromleft") {
                newAttributes['fromleft'] = newToFromLeft[1];
            } else if (IndexOf(centerline_field_names, Lower(k)) &amp;gt; -1) {
                newAttributes[k] = featureAttributes[k];
            } else {
                continue;
            }
        }
        // Store a reference to the original id of the road for the split
        newAttributes['centerlineid'] = "::" + road.centerlineid;
        adds[Count(adds)] = {
            'attributes': newAttributes,
            'geometry': secondGeometry
        }
    }
}
// Return the original road centerline id
// Using the edit parameter return the list of updates and adds for the split roads
return {
    'result': id,
    'edit': [{'className': 'RoadCenterline', 'adds': adds, 'updates': updates}]
};&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Centerline ID and Copy Street Aliases&lt;/rule_name&gt;&lt;rule_description&gt;Creates a new unique id when a road centerline is created and copy related street alias names from split roads.&lt;/rule_description&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;// This rule will create a new unique id when a road centerline is created
// This will also copy related street alias names for any roads that were added as a result of a split
// Define the leading text and the delimiter for the ID
var prefix = "RD"
var join_char = "-"
// Define any fields to be copied from the street name aliases table (lower case)
var alias_field_names = ["roadpremod", "roadpredir", "roadpretype", "roadpretypesep", "roadname", "roadtype", "roadpostdir", "roadpostmod", "fullname", "municipality"]
// If the road was created from a split its oirginal id will have a prefix of '::'
// We will use this to find the original road and its related alias street names
if (Left($feature.centerlineid, 2) == "::" || IsEmpty($feature.centerlineid)) {
    var id = Concatenate([prefix, NextSequenceValue("CenterlineID")], join_char)
        // If the centerlineid is not set return the new id
    if (IsEmpty($feature.centerlineid)) return id;
       // Find the original ID of the road that was split
    var original_id = Mid($feature.centerlineid, 2, Count($feature.centerlineid) - 2);
    if (IsEmpty(original_id)) return id;
        // Find all the related road alias names for the split road
    // Store an add for every road alias and related it to the new road that was added after the cut
    var adds = []
    var roadNameAliases = Filter(FeatureSetByName($datastore, "AliasStreetName"), "centerlineid = '" + original_id + "'");
    for (var roadNameAlias in roadNameAliases) {
        var featureAttributes = Dictionary(Text(roadNameAlias))['attributes'];
        var newAttributes = {};
        for (var k in featureAttributes) {
            if (IndexOf(alias_field_names, Lower(k)) &amp;gt; -1) {
                newAttributes[k] = featureAttributes[k];
            } else {
                continue;
            }
        }
        newAttributes['centerlineid'] = id
        adds[Count(adds)] = {
            'attributes': newAttributes
        }
    }
        // Using the edit parameter return the list of updates and adds for the intersecting roads and a list of adds for related road alias names
    return {
        'result': id,
        'edit': [{'className': 'AliasStreetName', 'adds': adds}]
    };
}
else {
   return $feature.centerlineid
}&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Logical Block Addressing (Left)&lt;/rule_name&gt;&lt;rule_description&gt;Calculates the left to address using the left from address, the length of the road and an interval or distance between unique addresses.&lt;/rule_description&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;// This rule will calculate the left to address using the left from address, the length of the road and an interval or distance between unique addresses
// Specify the interval or distance between unique addresses
var addressIntervalDistance = 10;
// Specify the unity of measure. Valid optons are feet, meters, yards, miles, kilometers
var unit = "feet";
// If the Left From Address is empty or the Left To Address is not empty return the Left To Address var fromLeft = $feature.fromleft;
var toLeft = $feature.toleft;
if (IsEmpty(fromLeft) || !IsEmpty(toLeft)) return toLeft;
// Return the new Left To Address
var featureLength = Length($feature, unit);
return Ceil(featureLength/addressIntervalDistance) * 2 + fromLeft;
&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;True&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Logical Block Addressing (Right)&lt;/rule_name&gt;&lt;rule_description&gt;Calculates the right to address using the right from address, the length of the road and an interval or distance between unique addresses.&lt;/rule_description&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;// This rule will calculate the right to address using the right from address, the length of the road and an interval or distance between unique addresses
// Specify the interval or distance between unique addresses
var addressIntervalDistance = 10;
// Specify the unity of measure. Valid optons are feet, meters, yards, miles, kilometers
var unit = "feet";
// If the Right From Address is empty or the Right To Address is not empty return the Right To Address var fromRight = $feature.fromRight;
var toRight = $feature.toRight;
if (IsEmpty(fromRight) || !IsEmpty(toRight)) return toRight;
// Return the new Right To Address
var featureLength = Length($feature, unit);
return Ceil(featureLength/addressIntervalDistance) * 2 + fromRight;
&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;True&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20191127" Name="Delete Rows" Time="121318" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\DeleteRows">DeleteRows "C:\Solutions\Tasks\January2020\Address Data Management\Data Reviewer\Address Data Management\Address Data Management 2.gdb\Address\RoadCenterline"</Process>
<Process Date="20191203" Time="172009" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "C:\Solutions\Tasks\January2020\Address Data Management\Sample Data\Address Data Management.gdb\Address\RoadCenterline" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;rule_description&gt;Splits intersecting roads at their intersection and the address ranges will be updated to reflect where the split occured.&lt;/rule_description&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;// This rule will split intersecting roads at their intersection and the address ranges will be updated to reflect where the split occured
//Define any fields to be copied from the centerline when split (lower case)
var centerline_field_names = ["rclnguid", "discrpagid", "rangeprefixleft", "fromleft", "toleft", "parityleft", "rangeprefixright", "fromright", "toright", "parityright", "fullname", "fedroute", "fedrtetype", "afedrte", "afedrtetype", "stroute", "strtetype", "astrte", "astrtetype", "ctyroute", "onewaydir", "roadlevel", "inwater", "roadclass", "countryleft", "countryright", "stateleft", "stateright", "countyleft", "countyright","munileft", "muniright", "zipleft", "zipright", "msagleft", "msagright", "esnleft", "esnright"]
// This function calculates a new from and to address based on the percentage along the line the split occurs
function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
    var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
    var val = percent * range;
    var newVal = 0;
    if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
    if (newVal == range) newVal -= 2;
    if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
// If the road was created from a split its id will have a prefix of '::'
// Don't process any futher splits to prevent getting in an infinite loop
var id = $feature.centerlineid;
if (Left(id, 2) == "::") return id;
// Get the object id, centerline id and geometry from the road
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
// Get all the intersecting roads
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
var adds = [];
var updates = [];
// Loop through each intersecting road
for (var road in intersectingRoads) {
    // Continue to the next road if the intersecting road is the same or geometry is the same
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
    // Cut the intersecting road and continue if the result of the cut is 0 features
    var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
    var validCut = true;
    var geometries = []
    // Loop through collection of lines and check that it was a valid cut in the middle of a segment
    for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i]) == 0) {
            validCut = false;
            continue;
        }
        // Handle multipart geometries
        var allParts = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts) {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    // Process the cut if valid
    if (validCut) {
        // Get the address range of the intersecting road
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
        var firstGeometry = null;
        var secondGeomArray = [];
        var firstPoint = Geometry(road).paths[0][0];
        // Loop through each geometry in the cut
        // Store the geometry including the first vertex of the orginal road as the first geometry
        // Collect all other geometries in an array
        for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            } else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
        // Merge all other geometries as the second geometry
        var secondGeometry = Union(secondGeomArray);
        // Calculate the new address ranges based on the intersection location along the line
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
        // Store an update for the intersecting road with the first geometry from the cut and the new right to and left to value   var attributes = {}
  if (newToFromRight[0] != null) attributes['toright'] = newToFromRight[0];
  if (newToFromLeft[0] != null) attributes['toleft'] = newToFromLeft[0];
        updates[Count(updates)] = {
            'objectID': road.OBJECTID,
            'attributes': attributes,
            'geometry': firstGeometry
        }
        // Store an add for a new road with the second geometry from the cut and the new right from and left from value         var featureAttributes = Dictionary(Text(road))['attributes'];
        var newAttributes = {};
        for (var k in featureAttributes) {
            if (Lower(k) == "fromright" &amp;amp;&amp;amp; newToFromRight[1] != null) {
                newAttributes['fromright'] = newToFromRight[1];
            } else if (Lower(k) == "fromleft" &amp;amp;&amp;amp; newToFromLeft[1] != null) {
                newAttributes['fromleft'] = newToFromLeft[1];
            } else if (IndexOf(centerline_field_names, Lower(k)) &amp;gt; -1 &amp;amp;&amp;amp; featureAttributes[k] != null) {
                newAttributes[k] = featureAttributes[k];
            } else {
    continue;
   }
        }
  // Store a reference to the original id of the road for the split
        newAttributes['centerlineid'] = "::" + road.centerlineid;
        adds[Count(adds)] = {
            'attributes': newAttributes,
            'geometry': secondGeometry
        }
    }
}
// Return the original road centerline id
// Using the edit parameter return the list of updates and adds for the split roads
return {
    'result': id,
    'edit': [{'className': 'RoadCenterline', 'adds': adds, 'updates': updates}]
};
&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20191203" Time="172032" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "C:\Solutions\Tasks\January2020\Address Data Management\Sample Data\Address Data Management.gdb\Address\RoadCenterline" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Centerline ID and Copy Street Aliases&lt;/rule_name&gt;&lt;rule_description&gt;Creates a new unique id when a road centerline is created and copy related street alias names from split roads.&lt;/rule_description&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;// This rule will create a new unique id when a road centerline is created
// This will also copy related street alias names for any roads that were added as a result of a split
// Define the leading text and the delimiter for the ID
var prefix = "RD"
var join_char = "-"
// Define any fields to be copied from the street name aliases table (lower case)
var alias_field_names = ["roadpremod", "roadpredir", "roadpretype", "roadpretypesep", "roadname", "roadtype", "roadpostdir", "roadpostmod", "fullname", "municipality"]
// If the road was created from a split its oirginal id will have a prefix of '::'
// We will use this to find the original road and its related alias street names
if (Left($feature.centerlineid, 2) == "::" || IsEmpty($feature.centerlineid)) {
    var id = Concatenate([prefix, NextSequenceValue("CenterlineID")], join_char)
        // If the centerlineid is not set return the new id
    if (IsEmpty($feature.centerlineid)) return id;
       // Find the original ID of the road that was split
    var original_id = Mid($feature.centerlineid, 2, Count($feature.centerlineid) - 2);
    if (IsEmpty(original_id)) return id;
        // Find all the related road alias names for the split road
    // Store an add for every road alias and related it to the new road that was added after the cut
    var adds = []
    var roadNameAliases = Filter(FeatureSetByName($datastore, "AliasStreetName"), "centerlineid = '" + original_id + "'");
    for (var roadNameAlias in roadNameAliases) {
        var featureAttributes = Dictionary(Text(roadNameAlias))['attributes'];
        var newAttributes = {};
        for (var k in featureAttributes) {
            if (IndexOf(alias_field_names, Lower(k)) &amp;gt; -1 &amp;amp;&amp;amp; featureAttributes[k] != null) {
                newAttributes[k] = featureAttributes[k];
            } else {
                continue;
            }
        }
        newAttributes['centerlineid'] = id
        adds[Count(adds)] = {
            'attributes': newAttributes
        }
    }
        // Using the edit parameter return the list of updates and adds for the intersecting roads and a list of adds for related road alias names
    return {
        'result': id,
        'edit': [{'className': 'AliasStreetName', 'adds': adds}]
    };
}
else {
   return $feature.centerlineid
}&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20191203" Time="173211" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "C:\Solutions\Tasks\January2020\Address Data Management\Sample Data\Address Data Management.gdb\Address\RoadCenterline" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;rule_description&gt;Splits intersecting roads at their intersection and the address ranges will be updated to reflect where the split occured.&lt;/rule_description&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;// This rule will split intersecting roads at their intersection and the address ranges will be updated to reflect where the split occured
//Define any fields to be copied from the centerline when split (lower case)
var centerline_field_names = ["rclnguid", "discrpagid", "rangeprefixleft", "fromleft", "toleft", "parityleft", "rangeprefixright", "fromright", "toright", "parityright", "fullname", "fedroute", "fedrtetype", "afedrte", "afedrtetype", "stroute", "strtetype", "astrte", "astrtetype", "ctyroute", "onewaydir", "roadlevel", "inwater", "roadclass", "countryleft", "countryright", "stateleft", "stateright", "countyleft", "countyright","munileft", "muniright", "zipleft", "zipright", "msagleft", "msagright", "esnleft", "esnright"]
// This function calculates a new from and to address based on the percentage along the line the split occurs
function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
    var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
    var val = percent * range;
    var newVal = 0;
    if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
    if (newVal == range) newVal -= 2;
    if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
// If the road was created from a split its id will have a prefix of '::'
// Don't process any futher splits to prevent getting in an infinite loop
var id = $feature.centerlineid;
if (Left(id, 2) == "::") return id;
// Get the object id, centerline id and geometry from the road
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
// Get all the intersecting roads
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
var adds = [];
var updates = [];
// Loop through each intersecting road
for (var road in intersectingRoads) {
    // Continue to the next road if the intersecting road is the same or geometry is the same
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
    // Cut the intersecting road and continue if the result of the cut is 0 features
    var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
    var validCut = true;
    var geometries = []
    // Loop through collection of lines and check that it was a valid cut in the middle of a segment
    for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i]) == 0) {
            validCut = false;
            continue;
        }
        // Handle multipart geometries
        var allParts = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts) {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    // Process the cut if valid
    if (validCut) {
        // Get the address range of the intersecting road
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
        var firstGeometry = null;
        var secondGeomArray = [];
        var firstPoint = Geometry(road).paths[0][0];
        // Loop through each geometry in the cut
        // Store the geometry including the first vertex of the orginal road as the first geometry
        // Collect all other geometries in an array
        for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            } else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
        // Merge all other geometries as the second geometry
        var secondGeometry = Union(secondGeomArray);
        // Calculate the new address ranges based on the intersection location along the line
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
        // Store an update for the intersecting road with the first geometry from the cut and the new right to and left to value   var attributes = {}
  if (newToFromRight[0] != null) attributes['toright'] = newToFromRight[0];
  if (newToFromLeft[0] != null) attributes['toleft'] = newToFromLeft[0];
        updates[Count(updates)] = {
            'objectID': road.OBJECTID,
            'attributes': attributes,
            'geometry': firstGeometry
        }
        // Store an add for a new road with the second geometry from the cut and the new right from and left from value         var featureAttributes = Dictionary(Text(road))['attributes'];
        var newAttributes = {};
        for (var k in featureAttributes) {
            if (Lower(k) == "fromright" &amp;amp;&amp;amp; newToFromRight[1] != null) {
                newAttributes['fromright'] = newToFromRight[1];
            } else if (Lower(k) == "fromleft" &amp;amp;&amp;amp; newToFromLeft[1] != null) {
                newAttributes['fromleft'] = newToFromLeft[1];
            } else if (IndexOf(centerline_field_names, Lower(k)) &amp;gt; -1 &amp;amp;&amp;amp; featureAttributes[k] != null) {
                newAttributes[k] = featureAttributes[k];
            } else {
    continue;
   }
        }
  // Store a reference to the original id of the road for the split
        newAttributes['centerlineid'] = "::" + road.centerlineid;
        adds[Count(adds)] = {
            'attributes': newAttributes,
            'geometry': secondGeometry
        }
    }
}
// Return the original road centerline id
// Using the edit parameter return the list of updates and adds for the split roads
return {
    'result': id,
    'edit': [{'className': 'RoadCenterline', 'adds': adds, 'updates': updates}]
};&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20191211" Time="111058" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "C:\Solutions\Tasks\January2020\Address Data Management\Project\Address Data Management\Address Data Management.gdb\Address\RoadCenterline" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Centerline ID and Copy Street Aliases&lt;/rule_name&gt;&lt;rule_description&gt;Creates a new unique id when a road centerline is created and copy related road alias names from split roads.&lt;/rule_description&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;// This rule will create a new unique id when a road centerline is created
// This will also copy related road alias names for any roads that were added as a result of a split
// Define the leading text and the delimiter for the ID
var prefix = "RD"
var join_char = "-"
// Define any fields to be copied from the road name aliases table (lower case)
var alias_field_names = ["roadpremod", "roadpredir", "roadpretype", "roadpretypesep", "roadname", "roadtype", "roadpostdir", "roadpostmod", "fullname", "municipality"]
// If the road was created from a split its oirginal id will have a prefix of '::'
// We will use this to find the original road and its related alias road names
if (Left($feature.centerlineid, 2) == "::" || IsEmpty($feature.centerlineid)) {
    var id = Concatenate([prefix, NextSequenceValue("CenterlineID")], join_char)
        // If the centerlineid is not set return the new id
    if (IsEmpty($feature.centerlineid)) return id;
       // Find the original ID of the road that was split
    var original_id = Mid($feature.centerlineid, 2, Count($feature.centerlineid) - 2);
    if (IsEmpty(original_id)) return id;
        // Find all the related road alias names for the split road
    // Store an add for every road alias and related it to the new road that was added after the cut
    var adds = []
    var roadNameAliases = Filter(FeatureSetByName($datastore, "AliasRoadName"), "centerlineid = '" + original_id + "'");
    for (var roadNameAlias in roadNameAliases) {
        var featureAttributes = Dictionary(Text(roadNameAlias))['attributes'];
        var newAttributes = {};
        for (var k in featureAttributes) {
            if (IndexOf(alias_field_names, Lower(k)) &amp;gt; -1 &amp;amp;&amp;amp; featureAttributes[k] != null) {
                newAttributes[k] = featureAttributes[k];
            } else {
                continue;
            }
        }
        newAttributes['centerlineid'] = id
        adds[Count(adds)] = {
            'attributes': newAttributes
        }
    }
        // Using the edit parameter return the list of updates and adds for the intersecting roads and a list of adds for related road alias names
    return {
        'result': id,
        'edit': [{'className': 'AliasRoadName', 'adds': adds}]
    };
}
else {
   return $feature.centerlineid
}&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20191211" Time="111500" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "C:\Solutions\Tasks\January2020\Address Data Management\Project\Address Data Management\Address Data Management.gdb\Address\RoadCenterline" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AddAttributeRule&gt;&lt;rule_name&gt;Centerline ID and Copy Road Aliases&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;expression&gt;// This rule will create a new unique id when a road centerline is created
// This will also copy related road alias names for any roads that were added as a result of a split
// Define the leading text and the delimiter for the ID
var prefix = "RD"
var join_char = "-"
// Define any fields to be copied from the road name aliases table (lower case)
var alias_field_names = ["roadpremod", "roadpredir", "roadpretype", "roadpretypesep", "roadname", "roadtype", "roadpostdir", "roadpostmod", "fullname", "municipality"]
// If the road was created from a split its oirginal id will have a prefix of '::'
// We will use this to find the original road and its related alias road names
if (Left($feature.centerlineid, 2) == "::" || IsEmpty($feature.centerlineid)) {
    var id = Concatenate([prefix, NextSequenceValue("CenterlineID")], join_char)
        // If the centerlineid is not set return the new id
    if (IsEmpty($feature.centerlineid)) return id;
       // Find the original ID of the road that was split
    var original_id = Mid($feature.centerlineid, 2, Count($feature.centerlineid) - 2);
    if (IsEmpty(original_id)) return id;
        // Find all the related road alias names for the split road
    // Store an add for every road alias and related it to the new road that was added after the cut
    var adds = []
    var roadNameAliases = Filter(FeatureSetByName($datastore, "AliasRoadName"), "centerlineid = '" + original_id + "'");
    for (var roadNameAlias in roadNameAliases) {
        var featureAttributes = Dictionary(Text(roadNameAlias))['attributes'];
        var newAttributes = {};
        for (var k in featureAttributes) {
            if (IndexOf(alias_field_names, Lower(k)) &amp;gt; -1 &amp;amp;&amp;amp; featureAttributes[k] != null) {
                newAttributes[k] = featureAttributes[k];
            } else {
                continue;
            }
        }
        newAttributes['centerlineid'] = id
        adds[Count(adds)] = {
            'attributes': newAttributes
        }
    }
        // Using the edit parameter return the list of updates and adds for the intersecting roads and a list of adds for related road alias names
    return {
        'result': id,
        'edit': [{'className': 'AliasRoadName', 'adds': adds}]
    };
}
else {
   return $feature.centerlineid
}&lt;/expression&gt;&lt;is_editable&gt;True&lt;/is_editable&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;rule_description&gt;Creates a new unique id when a road centerline is created and copy related road alias names from split roads.&lt;/rule_description&gt;&lt;field_name&gt;centerlineid&lt;/field_name&gt;&lt;exclude_from_client_eval&gt;True&lt;/exclude_from_client_eval&gt;&lt;batch&gt;False&lt;/batch&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;category&gt;-1&lt;/category&gt;&lt;/AddAttributeRule&gt;&lt;ReorderAttributeRule&gt;&lt;rule_name&gt;Centerline ID and Copy Road Aliases&lt;/rule_name&gt;&lt;evaluation_order&gt;5&lt;/evaluation_order&gt;&lt;/ReorderAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20191211" Time="111511" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "C:\Solutions\Tasks\January2020\Address Data Management\Project\Address Data Management\Address Data Management.gdb\Address\RoadCenterline" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;DeleteAttributeRule&gt;&lt;rule_name&gt;Centerline ID and Copy Street Aliases&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;/DeleteAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20191211" Time="111519" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "C:\Solutions\Tasks\January2020\Address Data Management\Project\Address Data Management\Address Data Management.gdb\Address\RoadCenterline" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Centerline ID and Copy Road Aliases&lt;/rule_name&gt;&lt;rule_description&gt;Creates a new unique id when a road centerline is created and copy related road alias names from split roads.&lt;/rule_description&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;// This rule will create a new unique id when a road centerline is created
// This will also copy related road alias names for any roads that were added as a result of a split
// Define the leading text and the delimiter for the ID
var prefix = "RD"
var join_char = "-"
// Define any fields to be copied from the road name aliases table (lower case)
var alias_field_names = ["roadpremod", "roadpredir", "roadpretype", "roadpretypesep", "roadname", "roadtype", "roadpostdir", "roadpostmod", "fullname", "municipality"]
// If the road was created from a split its oirginal id will have a prefix of '::'
// We will use this to find the original road and its related alias road names
if (Left($feature.centerlineid, 2) == "::" || IsEmpty($feature.centerlineid)) {
    var id = Concatenate([prefix, NextSequenceValue("CenterlineID")], join_char)
        // If the centerlineid is not set return the new id
    if (IsEmpty($feature.centerlineid)) return id;
       // Find the original ID of the road that was split
    var original_id = Mid($feature.centerlineid, 2, Count($feature.centerlineid) - 2);
    if (IsEmpty(original_id)) return id;
        // Find all the related road alias names for the split road
    // Store an add for every road alias and related it to the new road that was added after the cut
    var adds = []
    var roadNameAliases = Filter(FeatureSetByName($datastore, "AliasRoadName"), "centerlineid = '" + original_id + "'");
    for (var roadNameAlias in roadNameAliases) {
        var featureAttributes = Dictionary(Text(roadNameAlias))['attributes'];
        var newAttributes = {};
        for (var k in featureAttributes) {
            if (IndexOf(alias_field_names, Lower(k)) &amp;gt; -1 &amp;amp;&amp;amp; featureAttributes[k] != null) {
                newAttributes[k] = featureAttributes[k];
            } else {
                continue;
            }
        }
        newAttributes['centerlineid'] = id
        adds[Count(adds)] = {
            'attributes': newAttributes
        }
    }
        // Using the edit parameter return the list of updates and adds for the intersecting roads and a list of adds for related road alias names
    return {
        'result': id,
        'edit': [{'className': 'AliasRoadName', 'adds': adds}]
    };
}
else {
   return $feature.centerlineid
}&lt;/expression&gt;&lt;category&gt;-1&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;ReorderAttributeRule&gt;&lt;rule_name&gt;Centerline ID and Copy Road Aliases&lt;/rule_name&gt;&lt;evaluation_order&gt;2&lt;/evaluation_order&gt;&lt;/ReorderAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20191212" Time="144936" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\Toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "C:\Solutions\Tasks\January2020\Address Data Management\Project\Address Data Management\Address Data Management.gdb\Address\RoadCenterline" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Logical Block Addressing (Left)&lt;/rule_name&gt;&lt;rule_description&gt;Calculates the left to address using the left from address, the length of the road and an interval or distance between unique addresses.&lt;/rule_description&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;// This rule will calculate the left to address using the left from address, the length of the road and an interval or distance between unique addresses
// Specify the interval or distance between unique addresses
var addressIntervalDistance = 10;
// Specify the unity of measure. Valid options are feet, meters, yards, miles, kilometers
var unit = "feet";
// If the Left From Address is empty or the Left To Address is not empty return the Left To Address var fromLeft = $feature.fromleft;
var toLeft = $feature.toleft;
if (IsEmpty(fromLeft) || !IsEmpty(toLeft)) return toLeft;
// Return the new Left To Address
var featureLength = Length($feature, unit);
return Ceil(featureLength/addressIntervalDistance) * 2 + fromLeft;
&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;True&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Logical Block Addressing (Right)&lt;/rule_name&gt;&lt;rule_description&gt;Calculates the right to address using the right from address, the length of the road and an interval or distance between unique addresses.&lt;/rule_description&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;// This rule will calculate the right to address using the right from address, the length of the road and an interval or distance between unique addresses
// Specify the interval or distance between unique addresses
var addressIntervalDistance = 10;
// Specify the unity of measure. Valid options are feet, meters, yards, miles, kilometers
var unit = "feet";
// If the Right From Address is empty or the Right To Address is not empty return the Right To Address var fromRight = $feature.fromRight;
var toRight = $feature.toRight;
if (IsEmpty(fromRight) || !IsEmpty(toRight)) return toRight;
// Return the new Right To Address
var featureLength = Length($feature, unit);
return Ceil(featureLength/addressIntervalDistance) * 2 + fromRight;
&lt;/expression&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;True&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20210205" Name="Define Projection" Time="152949" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\DefineProjection">DefineProjection "H:\Map Resources\Esri Solutions\Address Data Management\Address Data Management.gdb\RoadCenterline" PROJCS['NAD_1983_StatePlane_Washington_South_FIPS_4602_Feet',GEOGCS['GCS_North_American_1983',DATUM['D_North_American_1983',SPHEROID['GRS_1980',6378137.0,298.257222101]],PRIMEM['Greenwich',0.0],UNIT['Degree',0.0174532925199433]],PROJECTION['Lambert_Conformal_Conic'],PARAMETER['False_Easting',1640416.666666667],PARAMETER['False_Northing',0.0],PARAMETER['Central_Meridian',-120.5],PARAMETER['Standard_Parallel_1',45.83333333333334],PARAMETER['Standard_Parallel_2',47.33333333333334],PARAMETER['Latitude_Of_Origin',45.33333333333334],UNIT['Foot_US',0.3048006096012192]],VERTCS['NAVD88_height_(ftUS)',VDATUM['North_American_Vertical_Datum_1988'],PARAMETER['Vertical_Shift',0.0],PARAMETER['Direction',1.0],UNIT['Foot_US',0.3048006096012192]]</Process>
<Process Date="20210205" Time="154408" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\Toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMStandardDataConnection xsi:type='typens:CIMStandardDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.7.0'&gt;&lt;WorkspaceConnectionString&gt;DATABASE=H:\Map Resources\Esri Solutions\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMStandardDataConnection&gt;" &lt;operationSequence&gt;&lt;workflow&gt;&lt;AssignDefaultToField&gt;&lt;field_name&gt;countryleft&lt;/field_name&gt;&lt;default_value&gt;US&lt;/default_value&gt;&lt;/AssignDefaultToField&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AssignDefaultToField&gt;&lt;field_name&gt;countryright&lt;/field_name&gt;&lt;default_value&gt;US&lt;/default_value&gt;&lt;/AssignDefaultToField&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AssignDefaultToField&gt;&lt;field_name&gt;stateleft&lt;/field_name&gt;&lt;default_value&gt;WA&lt;/default_value&gt;&lt;/AssignDefaultToField&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AssignDefaultToField&gt;&lt;field_name&gt;stateright&lt;/field_name&gt;&lt;default_value&gt;WA&lt;/default_value&gt;&lt;/AssignDefaultToField&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AssignDefaultToField&gt;&lt;field_name&gt;countyleft&lt;/field_name&gt;&lt;default_value&gt;Whitman&lt;/default_value&gt;&lt;/AssignDefaultToField&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AssignDefaultToField&gt;&lt;field_name&gt;countyright&lt;/field_name&gt;&lt;default_value&gt;Whitman&lt;/default_value&gt;&lt;/AssignDefaultToField&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AssignDefaultToField&gt;&lt;field_name&gt;munileft&lt;/field_name&gt;&lt;default_value&gt;Pullman&lt;/default_value&gt;&lt;/AssignDefaultToField&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AssignDefaultToField&gt;&lt;field_name&gt;muniright&lt;/field_name&gt;&lt;default_value&gt;Pullman&lt;/default_value&gt;&lt;/AssignDefaultToField&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AssignDefaultToField&gt;&lt;field_name&gt;zipleft&lt;/field_name&gt;&lt;default_value&gt;99163&lt;/default_value&gt;&lt;/AssignDefaultToField&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AssignDefaultToField&gt;&lt;field_name&gt;zipright&lt;/field_name&gt;&lt;default_value&gt;99163&lt;/default_value&gt;&lt;/AssignDefaultToField&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;</Process>
<Process Date="20210205" Time="161125" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "H:\Map Resources\Esri Solutions\Address Data Management\Address Data Management.gdb\RoadCenterline" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;DisableAttributeRules&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;/DisableAttributeRules&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20210205" Time="161359" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\Append">Append 'H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline' "H:\Map Resources\Esri Solutions\Address Data Management\Address Data Management.gdb\RoadCenterline" "Use the field map to reconcile field differences" "centerlineid "Centerline ID" true true false 20 Text 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,centerlineid,0,20;rclnguid "NENA Global ID" true true false 254 Text 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,rclnguid,0,254;discrpagid "Discrepancy Agency ID" true true false 75 Text 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,discrpagid,0,75;rangeprefixleft "Left Address Number Prefix" true true false 15 Text 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,rangeprefixleft,0,15;fromleft "Left From Address" true true false 4 Long 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,fromleft,-1,-1;toleft "Left To Address" true true false 4 Long 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,toleft,-1,-1;parityleft "Parity Left" true true false 1 Text 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,parityleft,0,1;rangeprefixright "Right Address Number Prefix" true true false 15 Text 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,rangeprefixright,0,15;fromright "Right From Address" true true false 4 Long 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,fromright,-1,-1;toright "Right To Address" true true false 4 Long 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,toright,-1,-1;parityright "Parity Right" true true false 1 Text 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,parityright,0,1;fullname "Full Road Name" true true false 300 Text 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,fullname,0,300;fedroute "Federal Route" true true false 10 Text 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,fedroute,0,10;fedrtetype "Federal Route Type" true true false 20 Text 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,fedrtetype,0,20;afedrte "Alternate Federal Route" true true false 10 Text 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,afedrte,0,10;afedrtetype "Alternate Federal Route Type" true true false 20 Text 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,afedrtetype,0,20;stroute "State Route" true true false 10 Text 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,stroute,0,10;strtetype "State Route Type" true true false 20 Text 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,strtetype,0,20;astrte "Alternate State Route" true true false 10 Text 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,astrte,0,10;astrtetype "Alternate State Route Type" true true false 20 Text 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,astrtetype,0,20;ctyroute "County Route" true true false 10 Text 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,ctyroute,0,10;onewaydir "One Way Indicator" true true false 10 Text 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,onewaydir,0,10;roadlevel "Above or Below Grade" true true false 4 Long 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,roadlevel,-1,-1;inwater "In Water" true true false 5 Text 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,inwater,0,5;roadclass "Road Class" true true false 20 Text 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,roadclass,0,20;countryleft "Country on Left" true true false 2 Text 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,countryleft,0,2;countryright "Country on Right" true true false 2 Text 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,countryright,0,2;stateleft "State on Left" true true false 2 Text 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,stateleft,0,2;stateright "State on Right" true true false 2 Text 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,stateright,0,2;countyleft "County on Left" true true false 40 Text 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,countyleft,0,40;countyright "County on Right" true true false 40 Text 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,countyright,0,40;munileft "Municipality on Left" true true false 100 Text 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,munileft,0,100;muniright "Municipality on Right" true true false 100 Text 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,muniright,0,100;zipleft "Zip on Left" true true false 5 Text 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,zipleft,0,5;zipright "Zip on Right" true true false 5 Text 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,zipright,0,5;msagleft "MSAG on Left" true true false 35 Text 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,msagleft,0,35;msagright "MSAG on Right" true true false 35 Text 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,msagright,0,35;esnleft "ESN on Left" true true false 5 Text 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,esnleft,0,5;esnright "ESN on Right" true true false 5 Text 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,esnright,0,5;GlobalID "GlobalID" false false true 38 GlobalID 0 0,First,#,H:\Map Resources\Esri Solutions\Road Network Data Management\Road Network Data Management.gdb\RoadCenterline,GlobalID,-1,-1" # #</Process>
<Process Date="20210208" Time="084227" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMStandardDataConnection xsi:type='typens:CIMStandardDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.7.0'&gt;&lt;WorkspaceConnectionString&gt;DATABASE=H:\Map Resources\Esri Solutions\Address Data Management\Address Data Management.gdb&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;FileGDB&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMStandardDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;EnableAttributeRules&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;/EnableAttributeRules&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20210208" Time="105516" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "Roads\All Roads (Reference)" countyleft 'Whitman' "Python 3" # Text</Process>
<Process Date="20210208" Time="105532" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "Roads\All Roads (Reference)" countyright 'Whitman' "Python 3" # Text</Process>
<Process Date="20210208" Time="105608" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "Roads\All Roads (Reference)" munileft 'Pullman' "Python 3" # Text</Process>
<Process Date="20210208" Time="105626" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "Roads\All Roads (Reference)" muniright 'Pullman' "Python 3" # Text</Process>
<Process Date="20210208" Time="112720" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "Roads\All Roads (Reference)" fullname title_me(!fullname!) "Python 3" "def title_me(rname):
if rname.startswith(("N", "S", "E", "W", "NE", "NW", "SE", "SW", "NB", "SB", "EB", "WB")):
titlecase = '{}{}'.format(rname.split(' ')[0], titlername.split(' ')[1].title())
else:
titlecase = rname.title()
return titlecase
" Text</Process>
<Process Date="20210208" Time="112848" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "Roads\All Roads (Reference)" fullname title_me(!fullname!) "Python 3" "def title_me(rname):
if rname.startswith(("N", "S", "E", "W", "NE", "NW", "SE", "SW", "NB", "SB", "EB", "WB")):
titlecase = '{}{}'.format(rname.split(' ')[0], rname.split(' ')[1].title())
else:
titlecase = rname.title()
return titlecase
" Text</Process>
<Process Date="20210208" Time="112944" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "Roads\All Roads (Reference)" fullname title_me(!fullname!) "Python 3" "def title_me(rname):
if rname.startswith(("N", "S", "E", "W", "NE", "NW", "SE", "SW", "NB", "SB", "EB", "WB")):
titlecase = '{} {}'.format(rname.split(' ')[0], rname.split(' ')[1].title())
else:
titlecase = rname.title()
return titlecase
" Text</Process>
<Process Date="20210208" Time="113221" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "Roads\All Roads (Reference)" fullname title_me(!fullname!) "Python 3" "def title_me(rname):
if rname.startswith(("N", "S", "E", "W", "NE", "NW", "SE", "SW", "NB", "SB", "EB", "WB")):
titlecase = '{} {}'.format(rname.split(' ',1)[0], rname.split(' ',1)[1].title())
else:
titlecase = rname.title()
return titlecase
" Text</Process>
<Process Date="20210208" Time="113247" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "Roads\All Roads (Reference)" fullname title_me(!fullname!) "Python 3" "def title_me(rname):
if rname.startswith(("N", "S", "E", "W", "NE", "NW", "SE", "SW", "NB", "SB", "EB", "WB")):
titlecase = '{} {}'.format(rname.split(' ',1)[0], rname.split(' ',1)[1].title())
else:
titlecase = rname.title()
return titlecase
" Text</Process>
<Process Date="20210208" Time="120453" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "Roads\All Roads (Reference)" fullname title_me(!fullname!) "Python 3" "def title_me(rname):
if rname.startswith(("N", "S", "E", "W", "NE", "NW", "SE", "SW", "NB", "SB", "EB", "WB", "SR")):
titlecase = '{} {}'.format(rname.split(' ',1)[0], rname.split(' ',1)[1].title())
else:
titlecase = rname.title()
return titlecase
" Text</Process>
<Process Date="20210208" Time="120601" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "Roads\All Roads (Reference)" fullname title_me(!fullname!) "Python 3" "def title_me(rname):
if rname.startswith(("N", "S", "E", "W", "NE", "NW", "SE", "SW", "NB", "SB", "EB", "WB", "SR")):
titlecase = '{} {}'.format(rname.split(' ',1)[0], rname.split(' ',1)[1].title())
else:
titlecase = rname.title()
return titlecase
" Text</Process>
<Process Date="20210208" Time="120633" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "Roads\All Roads (Reference)" fullname title_me(!fullname!) "Python 3" "def title_me(rname):
if rname.startswith(("N", "S", "E", "W", "NE", "NW", "SE", "SW", "NB", "SB", "EB", "WB", "SR")):
titlecase = '{} {}'.format(rname.split(' ',1)[0], rname.split(' ',1)[1].title())
else:
titlecase = rname.title()
return titlecase
" Text</Process>
<Process Date="20210208" Time="120711" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "Roads\All Roads (Reference)" fullname title_me(!fullname!) "Python 3" "def title_me(rname):
if rname.startswith(("N", "S", "E", "W", "NE", "NW", "SE", "SW", "NB", "SB", "EB", "WB", "SR")):
titlecase = '{} {}'.format(rname.split(' ',1)[0], rname.split(' ',1)[1].title())
else:
titlecase = rname.title()
return titlecase
" Text</Process>
<Process Date="20210208" Time="120752" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "Roads\All Roads (Reference)" fullname title_me(!fullname!) "Python 3" "def title_me(rname):
if rname.startswith(("N", "S", "E", "W", "NE", "NW", "SE", "SW", "NB", "SB", "EB", "WB", "SR")):
titlecase = '{} {}'.format(rname.split(' ',1)[0], rname.split(' ',1)[1].title())
else:
titlecase = rname.title()
return titlecase
" Text</Process>
<Process Date="20210208" Time="120815" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "Roads\All Roads (Reference)" fullname title_me(!fullname!) "Python 3" "def title_me(rname):
if rname.startswith(("N", "S", "E", "W", "NE", "NW", "SE", "SW", "NB", "SB", "EB", "WB", "SR")):
titlecase = '{} {}'.format(rname.split(' ',1)[0], rname.split(' ',1)[1].title())
else:
titlecase = rname.title()
return titlecase
" Text</Process>
<Process Date="20210208" Time="120914" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "Roads\All Roads (Reference)" fullname title_me(!fullname!) "Python 3" "def title_me(rname):
if rname.startswith(("N", "S", "E", "W", "NE", "NW", "SE", "SW", "NB", "SB", "EB", "WB", "SR")):
titlecase = '{} {}'.format(rname.split(' ',1)[0], rname.split(' ',1)[1].title())
else:
titlecase = rname.title()
return titlecase
" Text</Process>
<Process Date="20210208" Time="121809" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "Roads\All Roads (Reference)" fullname title_me(!fullname!) "Python 3" "def title_me(rname):
if rname.startswith(("N", "S", "E", "W", "NE", "NW", "SE", "SW", "NB", "SB", "EB", "WB", "SR")):
titlecase = '{} {}'.format(rname.split(' ',1)[0], rname.split(' ',1)[1].title())
else:
titlecase = rname.title()
return titlecase
" Text</Process>
<Process Date="20210208" Time="121853" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "Roads\All Roads (Reference)" fullname title_me(!fullname!) "Python 3" "def title_me(rname):
if rname.startswith(("N", "S", "E", "W", "NE", "NW", "SE", "SW", "NB", "SB", "EB", "WB", "SR")):
titlecase = '{} {}'.format(rname.split(' ',1)[0], rname.split(' ',1)[1].title())
else:
titlecase = rname.title()
return titlecase
" Text</Process>
<Process Date="20210208" Time="121939" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "Roads\All Roads (Reference)" fullname title_me(!fullname!) "Python 3" "def title_me(rname):
if rname.startswith(("N", "S", "E", "W", "NE", "NW", "SE", "SW", "NB", "SB", "EB", "WB", "SR")):
titlecase = '{} {}'.format(rname.split(' ',1)[0], rname.split(' ',1)[1].title())
else:
titlecase = rname.title()
return titlecase
" Text</Process>
<Process Date="20210208" Time="121953" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "Roads\All Roads (Reference)" fullname title_me(!fullname!) "Python 3" "def title_me(rname):
if rname.startswith(("N", "S", "E", "W", "NE", "NW", "SE", "SW", "NB", "SB", "EB", "WB", "SR")):
titlecase = '{} {}'.format(rname.split(' ',1)[0], rname.split(' ',1)[1].title())
else:
titlecase = rname.title()
return titlecase
" Text</Process>
<Process Date="20210208" Time="122022" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "Roads\All Roads (Reference)" fullname title_me(!fullname!) "Python 3" "def title_me(rname):
if rname.startswith(("N", "S", "E", "W", "NE", "NW", "SE", "SW", "NB", "SB", "EB", "WB", "SR")):
titlecase = '{} {}'.format(rname.split(' ',1)[0], rname.split(' ',1)[1].title())
else:
titlecase = rname.title()
return titlecase
" Text</Process>
<Process Date="20210208" Time="134141" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "Roads\All Roads (Reference)" fullname 'Whelan Rd' "Python 3" # Text</Process>
<Process Date="20210208" Time="134246" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "Roads\All Roads (Reference)" fullname 'USDA Driveway' "Python 3" # Text</Process>
<Process Date="20210316" Time="092036" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CopyFeatures">CopyFeatures "H:\Map Resources\Esri Solutions\Address Data Management\Address Data Management.gdb\RoadCenterline" "H:\Map Resources\Map Services\CityOfPullmanGIS - SDE.sde\CityOfPullmanGIS.SDE.AddressDataManagement\CityOfPullmanGIS.SDE.RoadCenterline" # # # #</Process>
<Process Date="20210316" Time="120234" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\Toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.7.0'&gt;&lt;FeatureDataset&gt;CityOfPullmanGIS.SDE.AddressDataManagement&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;ENCRYPTED_PASSWORD=00022e684730373168473179786c747130674167644b6331334c54394c6b6644434c694d654774714e6f535563446b3d2a00;SERVER=sql-arcgis.pullman-wa.gov;INSTANCE=sde:sqlserver:sql-arcgis.pullman-wa.gov;DBCLIENT=sqlserver;DB_CONNECTION_PROPERTIES=sql-arcgis.pullman-wa.gov;DATABASE=CityOfPullmanGIS;USER=sde;VERSION=sde.DEFAULT;AUTHENTICATION_MODE=DBMS&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;SDE&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;CityOfPullmanGIS.SDE.RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" &lt;operationSequence&gt;&lt;workflow&gt;&lt;AssignDomainToField&gt;&lt;field_name&gt;parityleft&lt;/field_name&gt;&lt;domain_name&gt;AddressParity&lt;/domain_name&gt;&lt;/AssignDomainToField&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AssignDomainToField&gt;&lt;field_name&gt;parityright&lt;/field_name&gt;&lt;domain_name&gt;AddressParity&lt;/domain_name&gt;&lt;/AssignDomainToField&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AssignDomainToField&gt;&lt;field_name&gt;fullname&lt;/field_name&gt;&lt;domain_name&gt;RoadNameIndex&lt;/domain_name&gt;&lt;/AssignDomainToField&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AssignDomainToField&gt;&lt;field_name&gt;fedrtetype&lt;/field_name&gt;&lt;domain_name&gt;RouteType&lt;/domain_name&gt;&lt;/AssignDomainToField&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AssignDomainToField&gt;&lt;field_name&gt;afedrtetype&lt;/field_name&gt;&lt;domain_name&gt;RouteType&lt;/domain_name&gt;&lt;/AssignDomainToField&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AssignDomainToField&gt;&lt;field_name&gt;strtetype&lt;/field_name&gt;&lt;domain_name&gt;RouteType&lt;/domain_name&gt;&lt;/AssignDomainToField&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AssignDomainToField&gt;&lt;field_name&gt;astrtetype&lt;/field_name&gt;&lt;domain_name&gt;RouteType&lt;/domain_name&gt;&lt;/AssignDomainToField&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AssignDomainToField&gt;&lt;field_name&gt;onewaydir&lt;/field_name&gt;&lt;domain_name&gt;OneWayIndicator&lt;/domain_name&gt;&lt;/AssignDomainToField&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AssignDomainToField&gt;&lt;field_name&gt;roadlevel&lt;/field_name&gt;&lt;domain_name&gt;GradeLevel&lt;/domain_name&gt;&lt;/AssignDomainToField&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AssignDomainToField&gt;&lt;field_name&gt;inwater&lt;/field_name&gt;&lt;domain_name&gt;YesNo_Text&lt;/domain_name&gt;&lt;/AssignDomainToField&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AssignDomainToField&gt;&lt;field_name&gt;roadclass&lt;/field_name&gt;&lt;domain_name&gt;RoadClass&lt;/domain_name&gt;&lt;/AssignDomainToField&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AssignDomainToField&gt;&lt;field_name&gt;stateleft&lt;/field_name&gt;&lt;domain_name&gt;StateAbbreviation&lt;/domain_name&gt;&lt;/AssignDomainToField&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AssignDomainToField&gt;&lt;field_name&gt;stateright&lt;/field_name&gt;&lt;domain_name&gt;StateAbbreviation&lt;/domain_name&gt;&lt;/AssignDomainToField&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;</Process>
<Process Date="20210316" Time="120417" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\Toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "H:\Map Resources\Map Services\CityOfPullmanGIS - SDE.sde\CityOfPullmanGIS.SDE.AddressDataManagement\CityOfPullmanGIS.SDE.RoadCenterline" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AddAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;expression&gt;// This rule will split intersecting roads at their intersection and the address ranges will be updated to reflect where the split occured
//Define any fields to be copied from the centerline when split (lower case)
var centerline_field_names = ["rclnguid", "discrpagid", "rangeprefixleft", "fromleft", "toleft", "parityleft", "rangeprefixright", "fromright", "toright", "parityright", "fullname", "fedroute", "fedrtetype", "afedrte", "afedrtetype", "stroute", "strtetype", "astrte", "astrtetype", "ctyroute", "onewaydir", "roadlevel", "inwater", "roadclass", "countryleft", "countryright", "stateleft", "stateright", "countyleft", "countyright","munileft", "muniright", "zipleft", "zipright", "msagleft", "msagright", "esnleft", "esnright"]
// This function calculates a new from and to address based on the percentage along the line the split occurs
function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
    var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
    var val = percent * range;
    var newVal = 0;
    if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
    if (newVal == range) newVal -= 2;
    if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
// If the road was created from a split its id will have a prefix of '::'
// Don't process any futher splits to prevent getting in an infinite loop
var id = $feature.centerlineid;
if (Left(id, 2) == "::") return id;
// Get the object id, centerline id and geometry from the road
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
// Get all the intersecting roads
var intersectingRoads = Intersects(FeatureSetByName($datastore, "RoadCenterline"), geom);
var adds = [];
var updates = [];
// Loop through each intersecting road
for (var road in intersectingRoads) {
    // Continue to the next road if the intersecting road is the same or geometry is the same
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
    // Cut the intersecting road and continue if the result of the cut is 0 features
    var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
    var validCut = true;
    var geometries = []
    // Loop through collection of lines and check that it was a valid cut in the middle of a segment
    for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i]) == 0) {
            validCut = false;
            continue;
        }
        // Handle multipart geometries
        var allParts = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts) {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    // Process the cut if valid
    if (validCut) {
        // Get the address range of the intersecting road
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
        var firstGeometry = null;
        var secondGeomArray = [];
        var firstPoint = Geometry(road).paths[0][0];
        // Loop through each geometry in the cut
        // Store the geometry including the first vertex of the orginal road as the first geometry
        // Collect all other geometries in an array
        for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            } else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
        // Merge all other geometries as the second geometry
        var secondGeometry = Union(secondGeomArray);
        // Calculate the new address ranges based on the intersection location along the line
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
        // Store an update for the intersecting road with the first geometry from the cut and the new right to and left to value   var attributes = {}
  if (newToFromRight[0] != null) attributes['toright'] = newToFromRight[0];
  if (newToFromLeft[0] != null) attributes['toleft'] = newToFromLeft[0];
        updates[Count(updates)] = {
            'objectID': road.OBJECTID,
            'attributes': attributes,
            'geometry': firstGeometry
        }
        // Store an add for a new road with the second geometry from the cut and the new right from and left from value         var featureAttributes = Dictionary(Text(road))['attributes'];
        var newAttributes = {};
        for (var k in featureAttributes) {
            if (Lower(k) == "fromright" &amp;amp;&amp;amp; newToFromRight[1] != null) {
                newAttributes['fromright'] = newToFromRight[1];
            } else if (Lower(k) == "fromleft" &amp;amp;&amp;amp; newToFromLeft[1] != null) {
                newAttributes['fromleft'] = newToFromLeft[1];
            } else if (IndexOf(centerline_field_names, Lower(k)) &amp;gt; -1 &amp;amp;&amp;amp; featureAttributes[k] != null) {
                newAttributes[k] = featureAttributes[k];
            } else {
    continue;
   }
        }
  // Store a reference to the original id of the road for the split
        newAttributes['centerlineid'] = "::" + road.centerlineid;
        adds[Count(adds)] = {
            'attributes': newAttributes,
            'geometry': secondGeometry
        }
    }
}
// Return the original road centerline id
// Using the edit parameter return the list of updates and adds for the split roads
return {
    'result': id,
    'edit': [{'className': 'RoadCenterline', 'adds': adds, 'updates': updates}]
};&lt;/expression&gt;&lt;is_editable&gt;True&lt;/is_editable&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;rule_description&gt;Splits intersecting roads at their intersection and the address ranges will be updated to reflect where the split occured.&lt;/rule_description&gt;&lt;field_name&gt;centerlineid&lt;/field_name&gt;&lt;exclude_from_client_eval&gt;True&lt;/exclude_from_client_eval&gt;&lt;batch&gt;False&lt;/batch&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;/AddAttributeRule&gt;&lt;ReorderAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;evaluation_order&gt;2&lt;/evaluation_order&gt;&lt;/ReorderAttributeRule&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AddAttributeRule&gt;&lt;rule_name&gt;Centerline ID and Copy Road Aliases&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;expression&gt;// This rule will create a new unique id when a road centerline is created
// This will also copy related road alias names for any roads that were added as a result of a split
// Define the leading text and the delimiter for the ID
var prefix = "RD"
var join_char = "-"
// Define any fields to be copied from the road name aliases table (lower case)
var alias_field_names = ["roadpremod", "roadpredir", "roadpretype", "roadpretypesep", "roadname", "roadtype", "roadpostdir", "roadpostmod", "fullname", "municipality"]
// If the road was created from a split its oirginal id will have a prefix of '::'
// We will use this to find the original road and its related alias road names
if (Left($feature.centerlineid, 2) == "::" || IsEmpty($feature.centerlineid)) {
    var id = Concatenate([prefix, NextSequenceValue("CenterlineID")], join_char)
        // If the centerlineid is not set return the new id
    if (IsEmpty($feature.centerlineid)) return id;
       // Find the original ID of the road that was split
    var original_id = Mid($feature.centerlineid, 2, Count($feature.centerlineid) - 2);
    if (IsEmpty(original_id)) return id;
        // Find all the related road alias names for the split road
    // Store an add for every road alias and related it to the new road that was added after the cut
    var adds = []
    var roadNameAliases = Filter(FeatureSetByName($datastore, "AliasRoadName"), "centerlineid = '" + original_id + "'");
    for (var roadNameAlias in roadNameAliases) {
        var featureAttributes = Dictionary(Text(roadNameAlias))['attributes'];
        var newAttributes = {};
        for (var k in featureAttributes) {
            if (IndexOf(alias_field_names, Lower(k)) &amp;gt; -1 &amp;amp;&amp;amp; featureAttributes[k] != null) {
                newAttributes[k] = featureAttributes[k];
            } else {
                continue;
            }
        }
        newAttributes['centerlineid'] = id
        adds[Count(adds)] = {
            'attributes': newAttributes
        }
    }
        // Using the edit parameter return the list of updates and adds for the intersecting roads and a list of adds for related road alias names
    return {
        'result': id,
        'edit': [{'className': 'AliasRoadName', 'adds': adds}]
    };
}
else {
   return $feature.centerlineid
}&lt;/expression&gt;&lt;is_editable&gt;True&lt;/is_editable&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;rule_description&gt;Creates a new unique id when a road centerline is created and copy related road alias names from split roads.&lt;/rule_description&gt;&lt;field_name&gt;centerlineid&lt;/field_name&gt;&lt;exclude_from_client_eval&gt;True&lt;/exclude_from_client_eval&gt;&lt;batch&gt;False&lt;/batch&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;/AddAttributeRule&gt;&lt;ReorderAttributeRule&gt;&lt;rule_name&gt;Centerline ID and Copy Road Aliases&lt;/rule_name&gt;&lt;evaluation_order&gt;3&lt;/evaluation_order&gt;&lt;/ReorderAttributeRule&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AddAttributeRule&gt;&lt;rule_name&gt;Logical Block Addressing (Left)&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;expression&gt;// This rule will calculate the left to address using the left from address, the length of the road and an interval or distance between unique addresses
// Specify the interval or distance between unique addresses
var addressIntervalDistance = 10;
// Specify the unity of measure. Valid options are feet, meters, yards, miles, kilometers
var unit = "feet";
// If the Left From Address is empty or the Left To Address is not empty return the Left To Address var fromLeft = $feature.fromleft;
var toLeft = $feature.toleft;
if (IsEmpty(fromLeft) || !IsEmpty(toLeft)) return toLeft;
// Return the new Left To Address
var featureLength = Length($feature, unit);
return Ceil(featureLength/addressIntervalDistance) * 2 + fromLeft;
&lt;/expression&gt;&lt;is_editable&gt;True&lt;/is_editable&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;True&lt;/triggering_events_update&gt;&lt;rule_description&gt;Calculates the left to address using the left from address, the length of the road and an interval or distance between unique addresses.&lt;/rule_description&gt;&lt;field_name&gt;toleft&lt;/field_name&gt;&lt;exclude_from_client_eval&gt;False&lt;/exclude_from_client_eval&gt;&lt;batch&gt;False&lt;/batch&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;/AddAttributeRule&gt;&lt;DisableAttributeRules&gt;&lt;rule_name&gt;Logical Block Addressing (Left)&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;/DisableAttributeRules&gt;&lt;ReorderAttributeRule&gt;&lt;rule_name&gt;Logical Block Addressing (Left)&lt;/rule_name&gt;&lt;evaluation_order&gt;4&lt;/evaluation_order&gt;&lt;/ReorderAttributeRule&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AddAttributeRule&gt;&lt;rule_name&gt;Logical Block Addressing (Right)&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;expression&gt;// This rule will calculate the right to address using the right from address, the length of the road and an interval or distance between unique addresses
// Specify the interval or distance between unique addresses
var addressIntervalDistance = 10;
// Specify the unity of measure. Valid options are feet, meters, yards, miles, kilometers
var unit = "feet";
// If the Right From Address is empty or the Right To Address is not empty return the Right To Address var fromRight = $feature.fromRight;
var toRight = $feature.toRight;
if (IsEmpty(fromRight) || !IsEmpty(toRight)) return toRight;
// Return the new Right To Address
var featureLength = Length($feature, unit);
return Ceil(featureLength/addressIntervalDistance) * 2 + fromRight;
&lt;/expression&gt;&lt;is_editable&gt;True&lt;/is_editable&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;True&lt;/triggering_events_update&gt;&lt;rule_description&gt;Calculates the right to address using the right from address, the length of the road and an interval or distance between unique addresses.&lt;/rule_description&gt;&lt;field_name&gt;toright&lt;/field_name&gt;&lt;exclude_from_client_eval&gt;False&lt;/exclude_from_client_eval&gt;&lt;batch&gt;False&lt;/batch&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;category&gt;4294967295&lt;/category&gt;&lt;/AddAttributeRule&gt;&lt;DisableAttributeRules&gt;&lt;rule_name&gt;Logical Block Addressing (Right)&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;/DisableAttributeRules&gt;&lt;ReorderAttributeRule&gt;&lt;rule_name&gt;Logical Block Addressing (Right)&lt;/rule_name&gt;&lt;evaluation_order&gt;5&lt;/evaluation_order&gt;&lt;/ReorderAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20210318" Time="113143" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.7.0'&gt;&lt;FeatureDataset&gt;CityOfPullmanGIS.SDE.AddressDataManagement&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;ENCRYPTED_PASSWORD=00022e684f685a65304c61655559374e39614d57597a4649545152473564775666507a6771662f6835546b794a58733d2a00;SERVER=sql-arcgis.pullman-wa.gov;INSTANCE=sde:sqlserver:sql-arcgis.pullman-wa.gov;DBCLIENT=sqlserver;DB_CONNECTION_PROPERTIES=sql-arcgis.pullman-wa.gov;DATABASE=CityOfPullmanGIS;USER=sde;AUTHENTICATION_MODE=DBMS;BRANCH=sde.DEFAULT&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;SDE&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;CityOfPullmanGIS.SDE.RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AddField&gt;&lt;field_name&gt;predirection&lt;/field_name&gt;&lt;field_type&gt;TEXT&lt;/field_type&gt;&lt;field_precision&gt;0&lt;/field_precision&gt;&lt;field_length&gt;255&lt;/field_length&gt;&lt;field_alias&gt;Road Direction&lt;/field_alias&gt;&lt;field_is_nullable&gt;True&lt;/field_is_nullable&gt;&lt;field_is_required&gt;False&lt;/field_is_required&gt;&lt;field_domain&gt;RoadPrefix&lt;/field_domain&gt;&lt;/AddField&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AddField&gt;&lt;field_name&gt;roadname&lt;/field_name&gt;&lt;field_type&gt;TEXT&lt;/field_type&gt;&lt;field_precision&gt;0&lt;/field_precision&gt;&lt;field_length&gt;255&lt;/field_length&gt;&lt;field_alias&gt;Road Name&lt;/field_alias&gt;&lt;field_is_nullable&gt;True&lt;/field_is_nullable&gt;&lt;field_is_required&gt;False&lt;/field_is_required&gt;&lt;/AddField&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AddField&gt;&lt;field_name&gt;roadtype&lt;/field_name&gt;&lt;field_type&gt;TEXT&lt;/field_type&gt;&lt;field_precision&gt;0&lt;/field_precision&gt;&lt;field_length&gt;255&lt;/field_length&gt;&lt;field_alias&gt;Road Type&lt;/field_alias&gt;&lt;field_is_nullable&gt;True&lt;/field_is_nullable&gt;&lt;field_is_required&gt;False&lt;/field_is_required&gt;&lt;/AddField&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20210318" Time="113308" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.7.0'&gt;&lt;FeatureDataset&gt;CityOfPullmanGIS.SDE.AddressDataManagement&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;ENCRYPTED_PASSWORD=00022e684f685a65304c61655559374e39614d57597a4649545152473564775666507a6771662f6835546b794a58733d2a00;SERVER=sql-arcgis.pullman-wa.gov;INSTANCE=sde:sqlserver:sql-arcgis.pullman-wa.gov;DBCLIENT=sqlserver;DB_CONNECTION_PROPERTIES=sql-arcgis.pullman-wa.gov;DATABASE=CityOfPullmanGIS;USER=sde;AUTHENTICATION_MODE=DBMS;BRANCH=sde.DEFAULT&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;SDE&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;CityOfPullmanGIS.SDE.RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AddField&gt;&lt;field_name&gt;predirection&lt;/field_name&gt;&lt;field_type&gt;TEXT&lt;/field_type&gt;&lt;field_precision&gt;0&lt;/field_precision&gt;&lt;field_length&gt;255&lt;/field_length&gt;&lt;field_alias&gt;Road Direction&lt;/field_alias&gt;&lt;field_is_nullable&gt;True&lt;/field_is_nullable&gt;&lt;field_is_required&gt;False&lt;/field_is_required&gt;&lt;field_domain&gt;RoadPrefix&lt;/field_domain&gt;&lt;/AddField&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AddField&gt;&lt;field_name&gt;roadname&lt;/field_name&gt;&lt;field_type&gt;TEXT&lt;/field_type&gt;&lt;field_precision&gt;0&lt;/field_precision&gt;&lt;field_length&gt;255&lt;/field_length&gt;&lt;field_alias&gt;Road Name&lt;/field_alias&gt;&lt;field_is_nullable&gt;True&lt;/field_is_nullable&gt;&lt;field_is_required&gt;False&lt;/field_is_required&gt;&lt;/AddField&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AddField&gt;&lt;field_name&gt;roadtype&lt;/field_name&gt;&lt;field_type&gt;TEXT&lt;/field_type&gt;&lt;field_precision&gt;0&lt;/field_precision&gt;&lt;field_length&gt;255&lt;/field_length&gt;&lt;field_alias&gt;Road Type&lt;/field_alias&gt;&lt;field_is_nullable&gt;True&lt;/field_is_nullable&gt;&lt;field_is_required&gt;False&lt;/field_is_required&gt;&lt;/AddField&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20210318" Time="124105" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.7.0'&gt;&lt;FeatureDataset&gt;CityOfPullmanGIS.SDE.AddressDataManagement&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;ENCRYPTED_PASSWORD=00022e684f685a65304c61655559374e39614d57597a4649545152473564775666507a6771662f6835546b794a58733d2a00;SERVER=sql-arcgis.pullman-wa.gov;INSTANCE=sde:sqlserver:sql-arcgis.pullman-wa.gov;DBCLIENT=sqlserver;DB_CONNECTION_PROPERTIES=sql-arcgis.pullman-wa.gov;DATABASE=CityOfPullmanGIS;USER=sde;AUTHENTICATION_MODE=DBMS;BRANCH=sde.DEFAULT&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;SDE&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;CityOfPullmanGIS.SDE.RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" &lt;operationSequence&gt;&lt;workflow&gt;&lt;AssignDomainToField&gt;&lt;field_name&gt;roadtype&lt;/field_name&gt;&lt;domain_name&gt;RoadType&lt;/domain_name&gt;&lt;/AssignDomainToField&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;</Process>
<Process Date="20210318" Time="125029" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "H:\Map Resources\Map Services\CityOfPullmanGIS - SDE - Branch.sde\CityOfPullmanGIS.SDE.AddressDataManagement\CityOfPullmanGIS.SDE.RoadCenterline" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AddAttributeRule&gt;&lt;rule_name&gt;Full Road Name&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;expression&gt;// This will calculate the full road name for a road centerline by concatenating several other field values // Specify the fields to concatenate
var values = [$feature.predirection, $feature.roadname, $feature.roadtype];
var combined_value = [];
// Loop through the field values and test if they are null or empty strings
// If they are not null or empty add them to an array
for (var i in values) {
    var value = values[i];
    if (IsEmpty(value)) continue;
    combined_value[Count(combined_value)] = value
}
// Return the field values concatenated with a space between
return Concatenate(combined_value, " ");&lt;/expression&gt;&lt;is_editable&gt;True&lt;/is_editable&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;True&lt;/triggering_events_update&gt;&lt;rule_description&gt;Calculates the full road name for a road centerline by concatenating other field values.&lt;/rule_description&gt;&lt;field_name&gt;fullname&lt;/field_name&gt;&lt;exclude_from_client_eval&gt;False&lt;/exclude_from_client_eval&gt;&lt;batch&gt;False&lt;/batch&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;category&gt;-1&lt;/category&gt;&lt;/AddAttributeRule&gt;&lt;ReorderAttributeRule&gt;&lt;rule_name&gt;Full Road Name&lt;/rule_name&gt;&lt;evaluation_order&gt;5&lt;/evaluation_order&gt;&lt;/ReorderAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20210318" Time="125051" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "H:\Map Resources\Map Services\CityOfPullmanGIS - SDE - Branch.sde\CityOfPullmanGIS.SDE.AddressDataManagement\CityOfPullmanGIS.SDE.RoadCenterline" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AddAttributeRule&gt;&lt;rule_name&gt;Full Road Name&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;expression&gt;// This will calculate the full road name for a road centerline by concatenating several other field values // Specify the fields to concatenate
var values = [$feature.predirection, $feature.roadname, $feature.roadtype];
var combined_value = [];
// Loop through the field values and test if they are null or empty strings
// If they are not null or empty add them to an array
for (var i in values) {
    var value = values[i];
    if (IsEmpty(value)) continue;
    combined_value[Count(combined_value)] = value
}
// Return the field values concatenated with a space between
return Concatenate(combined_value, " ");&lt;/expression&gt;&lt;is_editable&gt;True&lt;/is_editable&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;True&lt;/triggering_events_update&gt;&lt;rule_description&gt;Calculates the full road name for a road centerline by concatenating other field values.&lt;/rule_description&gt;&lt;field_name&gt;fullname&lt;/field_name&gt;&lt;exclude_from_client_eval&gt;False&lt;/exclude_from_client_eval&gt;&lt;batch&gt;False&lt;/batch&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;category&gt;-1&lt;/category&gt;&lt;/AddAttributeRule&gt;&lt;ReorderAttributeRule&gt;&lt;rule_name&gt;Full Road Name&lt;/rule_name&gt;&lt;evaluation_order&gt;5&lt;/evaluation_order&gt;&lt;/ReorderAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20210318" Time="161617" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "H:\Map Resources\Map Services\CityOfPullmanGIS - SDE - Branch.sde\CityOfPullmanGIS.SDE.AddressDataManagement\CityOfPullmanGIS.SDE.RoadCenterline" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;DisableAttributeRules&gt;&lt;rule_name&gt;Full Road Name&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;/DisableAttributeRules&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20210318" Time="161708" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.7.0'&gt;&lt;FeatureDataset&gt;CityOfPullmanGIS.SDE.AddressDataManagement&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;ENCRYPTED_PASSWORD=00022e684730373168473179786c747130674167644b6331334c54394c6b6644434c694d654774714e6f535563446b3d2a00;SERVER=sql-arcgis.pullman-wa.gov;INSTANCE=sde:sqlserver:sql-arcgis.pullman-wa.gov;DBCLIENT=sqlserver;DB_CONNECTION_PROPERTIES=sql-arcgis.pullman-wa.gov;DATABASE=CityOfPullmanGIS;USER=sde;VERSION=sde.DEFAULT;AUTHENTICATION_MODE=DBMS&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;SDE&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;CityOfPullmanGIS.SDE.RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;DisableAttributeRules&gt;&lt;rule_name&gt;Full Road Name&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;/DisableAttributeRules&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20210318" Time="162415" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "All Roads (Reference)" predirection !fullname!.split(' ')[0] "Python 3" # Text</Process>
<Process Date="20210318" Time="170418" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.7.0'&gt;&lt;FeatureDataset&gt;CityOfPullmanGIS.SDE.AddressDataManagement&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;ENCRYPTED_PASSWORD=00022e684730373168473179786c747130674167644b6331334c54394c6b6644434c694d654774714e6f535563446b3d2a00;SERVER=sql-arcgis.pullman-wa.gov;INSTANCE=sde:sqlserver:sql-arcgis.pullman-wa.gov;DBCLIENT=sqlserver;DB_CONNECTION_PROPERTIES=sql-arcgis.pullman-wa.gov;DATABASE=CityOfPullmanGIS;USER=sde;VERSION=sde.DEFAULT;AUTHENTICATION_MODE=DBMS&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;SDE&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;CityOfPullmanGIS.SDE.RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;DeleteAttributeRule&gt;&lt;rule_name&gt;Full Road Name&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;/DeleteAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20210319" Time="115716" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.7.0'&gt;&lt;FeatureDataset&gt;CityOfPullmanGIS.SDE.AddressDataManagement&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;ENCRYPTED_PASSWORD=00022e684730373168473179786c747130674167644b6331334c54394c6b6644434c694d654774714e6f535563446b3d2a00;SERVER=sql-arcgis.pullman-wa.gov;INSTANCE=sde:sqlserver:sql-arcgis.pullman-wa.gov;DBCLIENT=sqlserver;DB_CONNECTION_PROPERTIES=sql-arcgis.pullman-wa.gov;DATABASE=CityOfPullmanGIS;USER=sde;VERSION=sde.DEFAULT;AUTHENTICATION_MODE=DBMS&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;SDE&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;CityOfPullmanGIS.SDE.RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" &lt;operationSequence&gt;&lt;workflow&gt;&lt;DeleteField&gt;&lt;field_name&gt;predirection&lt;/field_name&gt;&lt;field_name&gt;roadtype&lt;/field_name&gt;&lt;/DeleteField&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;</Process>
<Process Date="20210319" Time="145830" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.7.0'&gt;&lt;FeatureDataset&gt;CityOfPullmanGIS.SDE.AddressDataManagement&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;ENCRYPTED_PASSWORD=00022e684e6c545378317278726834324f316e616c542b7249555330704e6c374850783348344f6d5072533365356f3d2a00;SERVER=sql-arcgis.pullman-wa.gov;INSTANCE=sde:sqlserver:sql-arcgis.pullman-wa.gov;DBCLIENT=sqlserver;DB_CONNECTION_PROPERTIES=sql-arcgis.pullman-wa.gov;DATABASE=CityOfPullmanGIS;USER=sde;VERSION=sde.DEFAULT;AUTHENTICATION_MODE=DBMS&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;SDE&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;CityOfPullmanGIS.SDE.RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;CreateDomain&gt;&lt;domain_name&gt;SpeedLimit_Old&lt;/domain_name&gt;&lt;domain_description&gt;A range of speed limits assigned to a road segment&lt;/domain_description&gt;&lt;field_type&gt;TEXT&lt;/field_type&gt;&lt;domain_type&gt;CODED&lt;/domain_type&gt;&lt;split_policy&gt;DEFAULT&lt;/split_policy&gt;&lt;merge_policy&gt;DEFAULT&lt;/merge_policy&gt;&lt;/CreateDomain&gt;&lt;AddCodedValueToDomain&gt;&lt;domain_name&gt;SpeedLimit_Old&lt;/domain_name&gt;&lt;coded_values&gt;&lt;coded_value&gt;&lt;code&gt;25 MPH&lt;/code&gt;&lt;code_description&gt;25 MPH&lt;/code_description&gt;&lt;/coded_value&gt;&lt;coded_value&gt;&lt;code&gt;35 MPH&lt;/code&gt;&lt;code_description&gt;35 MPH&lt;/code_description&gt;&lt;/coded_value&gt;&lt;coded_value&gt;&lt;code&gt;40 MPH&lt;/code&gt;&lt;code_description&gt;40 MPH&lt;/code_description&gt;&lt;/coded_value&gt;&lt;coded_value&gt;&lt;code&gt;45 MPH&lt;/code&gt;&lt;code_description&gt;45 MPH&lt;/code_description&gt;&lt;/coded_value&gt;&lt;coded_value&gt;&lt;code&gt;50 MPH&lt;/code&gt;&lt;code_description&gt;50 MPH&lt;/code_description&gt;&lt;/coded_value&gt;&lt;coded_value&gt;&lt;code&gt;55 MPH&lt;/code&gt;&lt;code_description&gt;55 MPH&lt;/code_description&gt;&lt;/coded_value&gt;&lt;coded_value&gt;&lt;code&gt;60 MPH&lt;/code&gt;&lt;code_description&gt;60 MPH&lt;/code_description&gt;&lt;/coded_value&gt;&lt;coded_value&gt;&lt;code&gt;65 MPH&lt;/code&gt;&lt;code_description&gt;65 MPH&lt;/code_description&gt;&lt;/coded_value&gt;&lt;coded_value&gt;&lt;code&gt;70 MPH&lt;/code&gt;&lt;code_description&gt;70 MPH&lt;/code_description&gt;&lt;/coded_value&gt;&lt;coded_value&gt;&lt;code&gt;75 MPH&lt;/code&gt;&lt;code_description&gt;75 MPH&lt;/code_description&gt;&lt;/coded_value&gt;&lt;coded_value&gt;&lt;code&gt;80 MPH&lt;/code&gt;&lt;code_description&gt;80 MPH&lt;/code_description&gt;&lt;/coded_value&gt;&lt;/coded_values&gt;&lt;/AddCodedValueToDomain&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AddCodedValueToDomain&gt;&lt;domain_name&gt;SpeedLimit&lt;/domain_name&gt;&lt;/AddCodedValueToDomain&gt;&lt;SortCodedValueDomain&gt;&lt;domain_name&gt;SpeedLimit&lt;/domain_name&gt;&lt;descending&gt;ASCENDING&lt;/descending&gt;&lt;sortByDescription&gt;CODE&lt;/sortByDescription&gt;&lt;/SortCodedValueDomain&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;AddField&gt;&lt;field_name&gt;speedlimit&lt;/field_name&gt;&lt;field_type&gt;SHORT&lt;/field_type&gt;&lt;field_precision&gt;5&lt;/field_precision&gt;&lt;field_alias&gt;Speed Limit&lt;/field_alias&gt;&lt;field_is_nullable&gt;True&lt;/field_is_nullable&gt;&lt;field_is_required&gt;False&lt;/field_is_required&gt;&lt;field_domain&gt;SpeedLimit&lt;/field_domain&gt;&lt;/AddField&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20210319" Time="145912" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.7.0'&gt;&lt;FeatureDataset&gt;CityOfPullmanGIS.SDE.AddressDataManagement&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;ENCRYPTED_PASSWORD=00022e684e6c545378317278726834324f316e616c542b7249555330704e6c374850783348344f6d5072533365356f3d2a00;SERVER=sql-arcgis.pullman-wa.gov;INSTANCE=sde:sqlserver:sql-arcgis.pullman-wa.gov;DBCLIENT=sqlserver;DB_CONNECTION_PROPERTIES=sql-arcgis.pullman-wa.gov;DATABASE=CityOfPullmanGIS;USER=sde;VERSION=sde.DEFAULT;AUTHENTICATION_MODE=DBMS&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;SDE&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;CityOfPullmanGIS.SDE.RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AddField&gt;&lt;field_name&gt;speedlimit&lt;/field_name&gt;&lt;field_type&gt;SHORT&lt;/field_type&gt;&lt;field_precision&gt;5&lt;/field_precision&gt;&lt;field_alias&gt;Speed Limit&lt;/field_alias&gt;&lt;field_is_nullable&gt;True&lt;/field_is_nullable&gt;&lt;field_is_required&gt;False&lt;/field_is_required&gt;&lt;field_domain&gt;SpeedLimit&lt;/field_domain&gt;&lt;/AddField&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20210319" Time="145957" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.7.0'&gt;&lt;FeatureDataset&gt;CityOfPullmanGIS.SDE.AddressDataManagement&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;ENCRYPTED_PASSWORD=00022e684e6c545378317278726834324f316e616c542b7249555330704e6c374850783348344f6d5072533365356f3d2a00;SERVER=sql-arcgis.pullman-wa.gov;INSTANCE=sde:sqlserver:sql-arcgis.pullman-wa.gov;DBCLIENT=sqlserver;DB_CONNECTION_PROPERTIES=sql-arcgis.pullman-wa.gov;DATABASE=CityOfPullmanGIS;USER=sde;VERSION=sde.DEFAULT;AUTHENTICATION_MODE=DBMS&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;SDE&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;CityOfPullmanGIS.SDE.RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AddField&gt;&lt;field_name&gt;speedlimit&lt;/field_name&gt;&lt;field_type&gt;SHORT&lt;/field_type&gt;&lt;field_precision&gt;5&lt;/field_precision&gt;&lt;field_alias&gt;Speed Limit&lt;/field_alias&gt;&lt;field_is_nullable&gt;True&lt;/field_is_nullable&gt;&lt;field_is_required&gt;False&lt;/field_is_required&gt;&lt;field_domain&gt;NumberLanes&lt;/field_domain&gt;&lt;/AddField&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20210319" Time="150016" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.7.0'&gt;&lt;FeatureDataset&gt;CityOfPullmanGIS.SDE.AddressDataManagement&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;ENCRYPTED_PASSWORD=00022e684e6c545378317278726834324f316e616c542b7249555330704e6c374850783348344f6d5072533365356f3d2a00;SERVER=sql-arcgis.pullman-wa.gov;INSTANCE=sde:sqlserver:sql-arcgis.pullman-wa.gov;DBCLIENT=sqlserver;DB_CONNECTION_PROPERTIES=sql-arcgis.pullman-wa.gov;DATABASE=CityOfPullmanGIS;USER=sde;VERSION=sde.DEFAULT;AUTHENTICATION_MODE=DBMS&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;SDE&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;CityOfPullmanGIS.SDE.RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" &lt;operationSequence&gt;&lt;workflow&gt;&lt;AssignDomainToField&gt;&lt;field_name&gt;speedlimit&lt;/field_name&gt;&lt;domain_name&gt;SpeedLimit&lt;/domain_name&gt;&lt;/AssignDomainToField&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;</Process>
<Process Date="20210319" Time="150818" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\Toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.7.0'&gt;&lt;FeatureDataset&gt;CityOfPullmanGIS.SDE.AddressDataManagement&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;ENCRYPTED_PASSWORD=00022e684730373168473179786c747130674167644b6331334c54394c6b6644434c694d654774714e6f535563446b3d2a00;SERVER=sql-arcgis.pullman-wa.gov;INSTANCE=sde:sqlserver:sql-arcgis.pullman-wa.gov;DBCLIENT=sqlserver;DB_CONNECTION_PROPERTIES=sql-arcgis.pullman-wa.gov;DATABASE=CityOfPullmanGIS;USER=sde;VERSION=sde.DEFAULT;AUTHENTICATION_MODE=DBMS&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;SDE&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;CityOfPullmanGIS.SDE.RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" &lt;operationSequence&gt;&lt;workflow&gt;&lt;AssignDomainToField&gt;&lt;field_name&gt;speedlimit&lt;/field_name&gt;&lt;domain_name&gt;SpeedLimit&lt;/domain_name&gt;&lt;/AssignDomainToField&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;</Process>
<Process Date="20210319" Time="150857" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\Toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.7.0'&gt;&lt;FeatureDataset&gt;CityOfPullmanGIS.SDE.AddressDataManagement&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;ENCRYPTED_PASSWORD=00022e684730373168473179786c747130674167644b6331334c54394c6b6644434c694d654774714e6f535563446b3d2a00;SERVER=sql-arcgis.pullman-wa.gov;INSTANCE=sde:sqlserver:sql-arcgis.pullman-wa.gov;DBCLIENT=sqlserver;DB_CONNECTION_PROPERTIES=sql-arcgis.pullman-wa.gov;DATABASE=CityOfPullmanGIS;USER=sde;VERSION=sde.DEFAULT;AUTHENTICATION_MODE=DBMS&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;SDE&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;CityOfPullmanGIS.SDE.RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" &lt;operationSequence&gt;&lt;workflow&gt;&lt;AssignDefaultToField&gt;&lt;field_name&gt;speedlimit&lt;/field_name&gt;&lt;default_value&gt;25&lt;/default_value&gt;&lt;/AssignDefaultToField&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;</Process>
<Process Date="20210319" Time="150938" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "Roads\All Roads (Reference)" speedlimit 25 "Python 3" # Text</Process>
<Process Date="20210406" Time="140219" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\Toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.7.0'&gt;&lt;FeatureDataset&gt;CityOfPullmanGIS.SDE.AddressDataManagement&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;ENCRYPTED_PASSWORD=00022e684e6c545378317278726834324f316e616c542b7249555330704e6c374850783348344f6d5072533365356f3d2a00;SERVER=sql-arcgis.pullman-wa.gov;INSTANCE=sde:sqlserver:sql-arcgis.pullman-wa.gov;DBCLIENT=sqlserver;DB_CONNECTION_PROPERTIES=sql-arcgis.pullman-wa.gov;DATABASE=CityOfPullmanGIS;USER=sde;VERSION=sde.DEFAULT;AUTHENTICATION_MODE=DBMS&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;SDE&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;CityOfPullmanGIS.SDE.RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AddField&gt;&lt;field_name&gt;ownedby&lt;/field_name&gt;&lt;field_type&gt;TEXT&lt;/field_type&gt;&lt;field_precision&gt;0&lt;/field_precision&gt;&lt;field_scale&gt;0&lt;/field_scale&gt;&lt;field_length&gt;255&lt;/field_length&gt;&lt;field_alias&gt;Owned By&lt;/field_alias&gt;&lt;field_is_nullable&gt;True&lt;/field_is_nullable&gt;&lt;field_is_required&gt;False&lt;/field_is_required&gt;&lt;/AddField&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20210406" Time="140338" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\Toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.7.0'&gt;&lt;FeatureDataset&gt;CityOfPullmanGIS.SDE.AddressDataManagement&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;ENCRYPTED_PASSWORD=00022e684e6c545378317278726834324f316e616c542b7249555330704e6c374850783348344f6d5072533365356f3d2a00;SERVER=sql-arcgis.pullman-wa.gov;INSTANCE=sde:sqlserver:sql-arcgis.pullman-wa.gov;DBCLIENT=sqlserver;DB_CONNECTION_PROPERTIES=sql-arcgis.pullman-wa.gov;DATABASE=CityOfPullmanGIS;USER=sde;VERSION=sde.DEFAULT;AUTHENTICATION_MODE=DBMS&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;SDE&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;CityOfPullmanGIS.SDE.RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AddField&gt;&lt;field_name&gt;ownedby&lt;/field_name&gt;&lt;field_type&gt;TEXT&lt;/field_type&gt;&lt;field_precision&gt;0&lt;/field_precision&gt;&lt;field_scale&gt;0&lt;/field_scale&gt;&lt;field_length&gt;255&lt;/field_length&gt;&lt;field_alias&gt;Owned By&lt;/field_alias&gt;&lt;field_is_nullable&gt;True&lt;/field_is_nullable&gt;&lt;field_is_required&gt;False&lt;/field_is_required&gt;&lt;/AddField&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20210406" Time="140359" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\Toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.7.0'&gt;&lt;FeatureDataset&gt;CityOfPullmanGIS.SDE.AddressDataManagement&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;ENCRYPTED_PASSWORD=00022e684e6c545378317278726834324f316e616c542b7249555330704e6c374850783348344f6d5072533365356f3d2a00;SERVER=sql-arcgis.pullman-wa.gov;INSTANCE=sde:sqlserver:sql-arcgis.pullman-wa.gov;DBCLIENT=sqlserver;DB_CONNECTION_PROPERTIES=sql-arcgis.pullman-wa.gov;DATABASE=CityOfPullmanGIS;USER=sde;VERSION=sde.DEFAULT;AUTHENTICATION_MODE=DBMS&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;SDE&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;CityOfPullmanGIS.SDE.RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AddField&gt;&lt;field_name&gt;ownedby&lt;/field_name&gt;&lt;field_type&gt;TEXT&lt;/field_type&gt;&lt;field_precision&gt;0&lt;/field_precision&gt;&lt;field_scale&gt;0&lt;/field_scale&gt;&lt;field_length&gt;255&lt;/field_length&gt;&lt;field_alias&gt;Owned By&lt;/field_alias&gt;&lt;field_is_nullable&gt;True&lt;/field_is_nullable&gt;&lt;field_is_required&gt;False&lt;/field_is_required&gt;&lt;/AddField&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20210406" Time="140807" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\Toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.7.0'&gt;&lt;FeatureDataset&gt;CityOfPullmanGIS.SDE.AddressDataManagement&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;ENCRYPTED_PASSWORD=00022e684e6c545378317278726834324f316e616c542b7249555330704e6c374850783348344f6d5072533365356f3d2a00;SERVER=sql-arcgis.pullman-wa.gov;INSTANCE=sde:sqlserver:sql-arcgis.pullman-wa.gov;DBCLIENT=sqlserver;DB_CONNECTION_PROPERTIES=sql-arcgis.pullman-wa.gov;DATABASE=CityOfPullmanGIS;USER=sde;VERSION=sde.DEFAULT;AUTHENTICATION_MODE=DBMS&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;SDE&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;CityOfPullmanGIS.SDE.RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" &lt;operationSequence&gt;&lt;workflow&gt;&lt;AssignDomainToField&gt;&lt;field_name&gt;ownedby&lt;/field_name&gt;&lt;domain_name&gt;RoadOwner&lt;/domain_name&gt;&lt;/AssignDomainToField&gt;&lt;AssignDefaultToField&gt;&lt;field_name&gt;ownedby&lt;/field_name&gt;&lt;default_value&gt;CoP&lt;/default_value&gt;&lt;/AssignDefaultToField&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;</Process>
<Process Date="20210728" Time="162904" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\Toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.7.0'&gt;&lt;FeatureDataset&gt;CityOfPullmanGIS.SDE.AddressDataManagement&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;ENCRYPTED_PASSWORD=00022e684f4f444b784750456f366b497257783541744d785354675a415773426c57666d6d3057656b635441664a673d2a00;SERVER=sql-arcgis.pullman-wa.gov;INSTANCE=sde:sqlserver:sql-arcgis.pullman-wa.gov;DBCLIENT=sqlserver;DB_CONNECTION_PROPERTIES=sql-arcgis.pullman-wa.gov;DATABASE=CityOfPullmanGIS;USER=sde;VERSION=sde.DEFAULT;AUTHENTICATION_MODE=DBMS&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;SDE&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;CityOfPullmanGIS.SDE.RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AddField&gt;&lt;field_name&gt;RoadMatrixID&lt;/field_name&gt;&lt;field_type&gt;TEXT&lt;/field_type&gt;&lt;field_precision&gt;0&lt;/field_precision&gt;&lt;field_length&gt;255&lt;/field_length&gt;&lt;field_alias&gt;RoadMatrix ID&lt;/field_alias&gt;&lt;field_is_nullable&gt;True&lt;/field_is_nullable&gt;&lt;field_is_required&gt;False&lt;/field_is_required&gt;&lt;/AddField&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20210728" Time="163143" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\Toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.7.0'&gt;&lt;FeatureDataset&gt;CityOfPullmanGIS.SDE.AddressDataManagement&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;ENCRYPTED_PASSWORD=00022e684f4f444b784750456f366b497257783541744d785354675a415773426c57666d6d3057656b635441664a673d2a00;SERVER=sql-arcgis.pullman-wa.gov;INSTANCE=sde:sqlserver:sql-arcgis.pullman-wa.gov;DBCLIENT=sqlserver;DB_CONNECTION_PROPERTIES=sql-arcgis.pullman-wa.gov;DATABASE=CityOfPullmanGIS;USER=sde;VERSION=sde.DEFAULT;AUTHENTICATION_MODE=DBMS&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;SDE&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;CityOfPullmanGIS.SDE.RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AddField&gt;&lt;field_name&gt;RoadMatrixID&lt;/field_name&gt;&lt;field_type&gt;TEXT&lt;/field_type&gt;&lt;field_precision&gt;0&lt;/field_precision&gt;&lt;field_length&gt;255&lt;/field_length&gt;&lt;field_alias&gt;RoadMatrix ID&lt;/field_alias&gt;&lt;field_is_nullable&gt;True&lt;/field_is_nullable&gt;&lt;field_is_required&gt;False&lt;/field_is_required&gt;&lt;/AddField&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20210728" Time="164438" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "All Roads (Reference)" RoadMatrixID !RoadMatrixID!.zfill(10) "Python 3" # Text</Process>
<Process Date="20210909" Time="113017" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "Roads\All Roads (Reference)" fullname 'US Hwy 195' "Python 3" # Text</Process>
<Process Date="20210909" Time="114902" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "Roads\All Roads (Reference)" fullname 'Kitzmiller Rd' "Python 3" # Text</Process>
<Process Date="20210909" Time="153758" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.7.0'&gt;&lt;FeatureDataset&gt;CityOfPullmanGIS.SDE.AddressDataManagement&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;ENCRYPTED_PASSWORD=00022e684f685a65304c61655559374e39614d57597a4649545152473564775666507a6771662f6835546b794a58733d2a00;SERVER=sql-arcgis.pullman-wa.gov;INSTANCE=sde:sqlserver:sql-arcgis.pullman-wa.gov;DBCLIENT=sqlserver;DB_CONNECTION_PROPERTIES=sql-arcgis.pullman-wa.gov;DATABASE=CityOfPullmanGIS;USER=sde;AUTHENTICATION_MODE=DBMS;BRANCH=sde.DEFAULT&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;SDE&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;CityOfPullmanGIS.SDE.RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;DisableAttributeRules&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;/DisableAttributeRules&gt;&lt;/workflow&gt;&lt;workflow&gt;&lt;DisableAttributeRules&gt;&lt;rule_name&gt;Centerline ID and Copy Road Aliases&lt;/rule_name&gt;&lt;rule_type&gt;CALCULATION&lt;/rule_type&gt;&lt;/DisableAttributeRules&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20220215" Time="114831" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\Toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "H:\Map Resources\Map Services\CityOfPullmanGIS - SDE - Branch.sde\CityOfPullmanGIS.SDE.AddressDataManagement\CityOfPullmanGIS.SDE.RoadCenterline" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;rule_description&gt;Splits intersecting roads at their intersection and the address ranges will be updated to reflect where the split occured.&lt;/rule_description&gt;&lt;exclude_from_client_eval&gt;False&lt;/exclude_from_client_eval&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;// This rule will split intersecting roads at their intersection and the address ranges will be updated to reflect where the split occured
//Define any fields to be copied from the centerline when split (lower case)
var centerline_field_names = ["rclnguid", "discrpagid", "rangeprefixleft", "fromleft", "toleft", "parityleft", "rangeprefixright", "fromright", "toright", "parityright", "fullname", "fedroute", "fedrtetype", "afedrte", "afedrtetype", "stroute", "strtetype", "astrte", "astrtetype", "ctyroute", "onewaydir", "roadlevel", "inwater", "roadclass", "countryleft", "countryright", "stateleft", "stateright", "countyleft", "countyright","munileft", "muniright", "zipleft", "zipright", "msagleft", "msagright", "esnleft", "esnright"]
// This function calculates a new from and to address based on the percentage along the line the split occurs
function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
    var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
    var val = percent * range;
    var newVal = 0;
    if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
    if (newVal == range) newVal -= 2;
    if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
// If the road was created from a split its id will have a prefix of '::'
// Don't process any futher splits to prevent getting in an infinite loop
var id = $feature.centerlineid;
if (Left(id, 2) == "::") return id;
// Get the object id, centerline id and geometry from the road
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
// Get all the intersecting roads
var intersectingRoads = Intersects(FeatureSetByName($datastore, "CityOfPullmanGIS.SDE.RoadCenterline"), geom);
var adds = [];
var updates = [];
// Loop through each intersecting road
for (var road in intersectingRoads) {
    // Continue to the next road if the intersecting road is the same or geometry is the same
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
    // Cut the intersecting road and continue if the result of the cut is 0 features
    var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
    var validCut = true;
    var geometries = []
    // Loop through collection of lines and check that it was a valid cut in the middle of a segment
    for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i]) == 0) {
            validCut = false;
            continue;
        }
        // Handle multipart geometries
        var allParts = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts) {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    // Process the cut if valid
    if (validCut) {
        // Get the address range of the intersecting road
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
        var firstGeometry = null;
        var secondGeomArray = [];
        var firstPoint = Geometry(road).paths[0][0];
        // Loop through each geometry in the cut
        // Store the geometry including the first vertex of the orginal road as the first geometry
        // Collect all other geometries in an array
        for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            } else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
        // Merge all other geometries as the second geometry
        var secondGeometry = Union(secondGeomArray);
        // Calculate the new address ranges based on the intersection location along the line
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
        // Store an update for the intersecting road with the first geometry from the cut and the new right to and left to value   var attributes = {}
  if (newToFromRight[0] != null) attributes['toright'] = newToFromRight[0];
  if (newToFromLeft[0] != null) attributes['toleft'] = newToFromLeft[0];
        updates[Count(updates)] = {
            'objectID': road.OBJECTID,
            'attributes': attributes,
            'geometry': firstGeometry
        }
        // Store an add for a new road with the second geometry from the cut and the new right from and left from value         var featureAttributes = Dictionary(Text(road))['attributes'];
        var newAttributes = {};
        for (var k in featureAttributes) {
            if (Lower(k) == "fromright" &amp;amp;&amp;amp; newToFromRight[1] != null) {
                newAttributes['fromright'] = newToFromRight[1];
            } else if (Lower(k) == "fromleft" &amp;amp;&amp;amp; newToFromLeft[1] != null) {
                newAttributes['fromleft'] = newToFromLeft[1];
            } else if (IndexOf(centerline_field_names, Lower(k)) &amp;gt; -1 &amp;amp;&amp;amp; featureAttributes[k] != null) {
                newAttributes[k] = featureAttributes[k];
            } else {
    continue;
   }
        }
  // Store a reference to the original id of the road for the split
        newAttributes['centerlineid'] = "::" + road.centerlineid;
        adds[Count(adds)] = {
            'attributes': newAttributes,
            'geometry': secondGeometry
        }
    }
}
// Return the original road centerline id
// Using the edit parameter return the list of updates and adds for the split roads
return {
    'result': id,
    'edit': [{'className': 'CityOfPullmanGIS.SDE.RoadCenterline', 'adds': adds, 'updates': updates}]
};&lt;/expression&gt;&lt;category&gt;2147483647&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20220429" Time="084332" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\Toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.9.0'&gt;&lt;FeatureDataset&gt;CityOfPullmanGIS.SDE.AddressDataManagement&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;ENCRYPTED_PASSWORD=00022e6858314648625973435135537945546b3378457a503850444e564b43574e49625479432f716d46333072576f3d2a00;SERVER=sql-arcgis.pullman-wa.gov;INSTANCE=sde:sqlserver:sql-arcgis.pullman-wa.gov;DBCLIENT=sqlserver;DB_CONNECTION_PROPERTIES=sql-arcgis.pullman-wa.gov;DATABASE=CityOfPullmanGIS;USER=sde;VERSION=sde.DEFAULT;AUTHENTICATION_MODE=DBMS&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;SDE&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;CityOfPullmanGIS.SDE.RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AddField&gt;&lt;field_name&gt;maintby&lt;/field_name&gt;&lt;field_type&gt;TEXT&lt;/field_type&gt;&lt;field_precision&gt;0&lt;/field_precision&gt;&lt;field_scale&gt;0&lt;/field_scale&gt;&lt;field_length&gt;255&lt;/field_length&gt;&lt;field_alias&gt;Maintained By&lt;/field_alias&gt;&lt;field_is_nullable&gt;True&lt;/field_is_nullable&gt;&lt;field_is_required&gt;False&lt;/field_is_required&gt;&lt;field_domain&gt;RoadOwner&lt;/field_domain&gt;&lt;field_default_value&gt;CoP&lt;/field_default_value&gt;&lt;/AddField&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20220429" Time="084421" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\Toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.9.0'&gt;&lt;FeatureDataset&gt;CityOfPullmanGIS.SDE.AddressDataManagement&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;ENCRYPTED_PASSWORD=00022e6858314648625973435135537945546b3378457a503850444e564b43574e49625479432f716d46333072576f3d2a00;SERVER=sql-arcgis.pullman-wa.gov;INSTANCE=sde:sqlserver:sql-arcgis.pullman-wa.gov;DBCLIENT=sqlserver;DB_CONNECTION_PROPERTIES=sql-arcgis.pullman-wa.gov;DATABASE=CityOfPullmanGIS;USER=sde;VERSION=sde.DEFAULT;AUTHENTICATION_MODE=DBMS&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;SDE&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;CityOfPullmanGIS.SDE.RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AddField&gt;&lt;field_name&gt;maintby&lt;/field_name&gt;&lt;field_type&gt;TEXT&lt;/field_type&gt;&lt;field_precision&gt;0&lt;/field_precision&gt;&lt;field_scale&gt;0&lt;/field_scale&gt;&lt;field_length&gt;255&lt;/field_length&gt;&lt;field_alias&gt;Maintained By&lt;/field_alias&gt;&lt;field_is_nullable&gt;True&lt;/field_is_nullable&gt;&lt;field_is_required&gt;False&lt;/field_is_required&gt;&lt;field_domain&gt;RoadOwner&lt;/field_domain&gt;&lt;field_default_value&gt;CoP&lt;/field_default_value&gt;&lt;/AddField&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20220429" Time="090947" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "Roads\All Roads (Reference)" maintby !ownedby! "Python 3" # Text NO_ENFORCE_DOMAINS</Process>
<Process Date="20220708" Time="110721" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\Toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.9.0'&gt;&lt;FeatureDataset&gt;CityOfPullmanGIS.SDE.AddressDataManagement&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;ENCRYPTED_PASSWORD=00022e6843337154382f39714f4b696f6d5065306745786d365276553146734a696263633561444c58355052564f453d2a00;SERVER=sql-arcgis.pullman-wa.gov;INSTANCE=sde:sqlserver:sql-arcgis.pullman-wa.gov;DBCLIENT=sqlserver;DB_CONNECTION_PROPERTIES=sql-arcgis.pullman-wa.gov;DATABASE=CityOfPullmanGIS;USER=sde;VERSION=sde.DEFAULT;AUTHENTICATION_MODE=DBMS&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;SDE&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;CityOfPullmanGIS.SDE.RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;rule_description&gt;Splits intersecting roads at their intersection and the address ranges will be updated to reflect where the split occured.&lt;/rule_description&gt;&lt;exclude_from_client_eval&gt;True&lt;/exclude_from_client_eval&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;// This rule will split intersecting roads at their intersection and the address ranges will be updated to reflect where the split occured
//Define any fields to be copied from the centerline when split (lower case)
var centerline_field_names = ["rclnguid", "discrpagid", "rangeprefixleft", "fromleft", "toleft", "parityleft", "rangeprefixright", "fromright", "toright", "parityright", "fullname", "fedroute", "fedrtetype", "afedrte", "afedrtetype", "stroute", "strtetype", "astrte", "astrtetype", "ctyroute", "onewaydir", "roadlevel", "inwater", "roadclass", "countryleft", "countryright", "stateleft", "stateright", "countyleft", "countyright","munileft", "muniright", "zipleft", "zipright", "msagleft", "msagright", "esnleft", "esnright"]
// This function calculates a new from and to address based on the percentage along the line the split occurs
function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
    var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
    var val = percent * range;
    var newVal = 0;
    if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
    if (newVal == range) newVal -= 2;
    if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
// If the road was created from a split its id will have a prefix of '::'
// Don't process any futher splits to prevent getting in an infinite loop
var id = $feature.centerlineid;
if (Left(id, 2) == "::") return id;
// Get the object id, centerline id and geometry from the road
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
// Get all the intersecting roads
var intersectingRoads = Intersects(FeatureSetByName($datastore, "CityOfPullmanGIS.SDE.RoadCenterline"), geom);
var adds = [];
var updates = [];
// Loop through each intersecting road
for (var road in intersectingRoads) {
    // Continue to the next road if the intersecting road is the same or geometry is the same
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
    // Cut the intersecting road and continue if the result of the cut is 0 features
    var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
    var validCut = true;
    var geometries = []
    // Loop through collection of lines and check that it was a valid cut in the middle of a segment
    for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i]) == 0) {
            validCut = false;
            continue;
        }
        // Handle multipart geometries
        var allParts = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts) {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    // Process the cut if valid
    if (validCut) {
        // Get the address range of the intersecting road
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
        var firstGeometry = null;
        var secondGeomArray = [];
        var firstPoint = Geometry(road).paths[0][0];
        // Loop through each geometry in the cut
        // Store the geometry including the first vertex of the orginal road as the first geometry
        // Collect all other geometries in an array
        for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            } else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
        // Merge all other geometries as the second geometry
        var secondGeometry = Union(secondGeomArray);
        // Calculate the new address ranges based on the intersection location along the line
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
        // Store an update for the intersecting road with the first geometry from the cut and the new right to and left to value   var attributes = {}
  if (newToFromRight[0] != null) attributes['toright'] = newToFromRight[0];
  if (newToFromLeft[0] != null) attributes['toleft'] = newToFromLeft[0];
        updates[Count(updates)] = {
            'objectID': road.OBJECTID,
            'attributes': attributes,
            'geometry': firstGeometry
        }
        // Store an add for a new road with the second geometry from the cut and the new right from and left from value         var featureAttributes = Dictionary(Text(road))['attributes'];
        var newAttributes = {};
        for (var k in featureAttributes) {
            if (Lower(k) == "fromright" &amp;amp;&amp;amp; newToFromRight[1] != null) {
                newAttributes['fromright'] = newToFromRight[1];
            } else if (Lower(k) == "fromleft" &amp;amp;&amp;amp; newToFromLeft[1] != null) {
                newAttributes['fromleft'] = newToFromLeft[1];
            } else if (IndexOf(centerline_field_names, Lower(k)) &amp;gt; -1 &amp;amp;&amp;amp; featureAttributes[k] != null) {
                newAttributes[k] = featureAttributes[k];
            } else {
    continue;
   }
        }
  // Store a reference to the original id of the road for the split
        newAttributes['centerlineid'] = "::" + road.centerlineid;
        adds[Count(adds)] = {
            'attributes': newAttributes,
            'geometry': secondGeometry
        }
    }
}
// Return the original road centerline id
// Using the edit parameter return the list of updates and adds for the split roads
return {
    'result': id,
    'edit': [{'className': 'CityOfPullmanGIS.SDE.RoadCenterline', 'adds': adds, 'updates': updates}]
};&lt;/expression&gt;&lt;category&gt;2147483647&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20220708" Time="110815" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\Toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.9.0'&gt;&lt;FeatureDataset&gt;CityOfPullmanGIS.SDE.AddressDataManagement&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;ENCRYPTED_PASSWORD=00022e6843337154382f39714f4b696f6d5065306745786d365276553146734a696263633561444c58355052564f453d2a00;SERVER=sql-arcgis.pullman-wa.gov;INSTANCE=sde:sqlserver:sql-arcgis.pullman-wa.gov;DBCLIENT=sqlserver;DB_CONNECTION_PROPERTIES=sql-arcgis.pullman-wa.gov;DATABASE=CityOfPullmanGIS;USER=sde;VERSION=sde.DEFAULT;AUTHENTICATION_MODE=DBMS&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;SDE&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;CityOfPullmanGIS.SDE.RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;rule_description&gt;Splits intersecting roads at their intersection and the address ranges will be updated to reflect where the split occured.&lt;/rule_description&gt;&lt;exclude_from_client_eval&gt;True&lt;/exclude_from_client_eval&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;// This rule will split intersecting roads at their intersection and the address ranges will be updated to reflect where the split occured
//Define any fields to be copied from the centerline when split (lower case)
var centerline_field_names = ["rclnguid", "discrpagid", "rangeprefixleft", "fromleft", "toleft", "parityleft", "rangeprefixright", "fromright", "toright", "parityright", "fullname", "fedroute", "fedrtetype", "afedrte", "afedrtetype", "stroute", "strtetype", "astrte", "astrtetype", "ctyroute", "onewaydir", "roadlevel", "inwater", "roadclass", "countryleft", "countryright", "stateleft", "stateright", "countyleft", "countyright","munileft", "muniright", "zipleft", "zipright", "msagleft", "msagright", "esnleft", "esnright"]
// This function calculates a new from and to address based on the percentage along the line the split occurs
function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
    var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
    var val = percent * range;
    var newVal = 0;
    if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
    if (newVal == range) newVal -= 2;
    if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
// If the road was created from a split its id will have a prefix of '::'
// Don't process any futher splits to prevent getting in an infinite loop
var id = $feature.centerlineid;
if (Left(id, 2) == "::") return id;
// Get the object id, centerline id and geometry from the road
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
// Get all the intersecting roads
var intersectingRoads = Intersects(FeatureSetByName($datastore, "CityOfPullmanGIS.SDE.RoadCenterline"), geom);
var adds = [];
var updates = [];
// Loop through each intersecting road
for (var road in intersectingRoads) {
    // Continue to the next road if the intersecting road is the same or geometry is the same
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
    // Cut the intersecting road and continue if the result of the cut is 0 features
    var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
    var validCut = true;
    var geometries = []
    // Loop through collection of lines and check that it was a valid cut in the middle of a segment
    for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i]) == 0) {
            validCut = false;
            continue;
        }
        // Handle multipart geometries
        var allParts = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts) {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    // Process the cut if valid
    if (validCut) {
        // Get the address range of the intersecting road
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
        var firstGeometry = null;
        var secondGeomArray = [];
        var firstPoint = Geometry(road).paths[0][0];
        // Loop through each geometry in the cut
        // Store the geometry including the first vertex of the orginal road as the first geometry
        // Collect all other geometries in an array
        for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            } else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
        // Merge all other geometries as the second geometry
        var secondGeometry = Union(secondGeomArray);
        // Calculate the new address ranges based on the intersection location along the line
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
        // Store an update for the intersecting road with the first geometry from the cut and the new right to and left to value   var attributes = {}
  if (newToFromRight[0] != null) attributes['toright'] = newToFromRight[0];
  if (newToFromLeft[0] != null) attributes['toleft'] = newToFromLeft[0];
        updates[Count(updates)] = {
            'objectID': road.OBJECTID,
            'attributes': attributes,
            'geometry': firstGeometry
        }
        // Store an add for a new road with the second geometry from the cut and the new right from and left from value         var featureAttributes = Dictionary(Text(road))['attributes'];
        var newAttributes = {};
        for (var k in featureAttributes) {
            if (Lower(k) == "fromright" &amp;amp;&amp;amp; newToFromRight[1] != null) {
                newAttributes['fromright'] = newToFromRight[1];
            } else if (Lower(k) == "fromleft" &amp;amp;&amp;amp; newToFromLeft[1] != null) {
                newAttributes['fromleft'] = newToFromLeft[1];
            } else if (IndexOf(centerline_field_names, Lower(k)) &amp;gt; -1 &amp;amp;&amp;amp; featureAttributes[k] != null) {
                newAttributes[k] = featureAttributes[k];
            } else {
    continue;
   }
        }
  // Store a reference to the original id of the road for the split
        newAttributes['centerlineid'] = "::" + road.centerlineid;
        adds[Count(adds)] = {
            'attributes': newAttributes,
            'geometry': secondGeometry
        }
    }
}
// Return the original road centerline id
// Using the edit parameter return the list of updates and adds for the split roads
return {
    'result': id,
    'edit': [{'className': 'CityOfPullmanGIS.SDE.RoadCenterline', 'adds': adds, 'updates': updates}]
};&lt;/expression&gt;&lt;category&gt;2147483647&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20220708" Time="110948" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\Toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.9.0'&gt;&lt;FeatureDataset&gt;CityOfPullmanGIS.SDE.AddressDataManagement&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;ENCRYPTED_PASSWORD=00022e6843337154382f39714f4b696f6d5065306745786d365276553146734a696263633561444c58355052564f453d2a00;SERVER=sql-arcgis.pullman-wa.gov;INSTANCE=sde:sqlserver:sql-arcgis.pullman-wa.gov;DBCLIENT=sqlserver;DB_CONNECTION_PROPERTIES=sql-arcgis.pullman-wa.gov;DATABASE=CityOfPullmanGIS;USER=sde;VERSION=sde.DEFAULT;AUTHENTICATION_MODE=DBMS&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;SDE&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;CityOfPullmanGIS.SDE.RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;rule_description&gt;Splits intersecting roads at their intersection and the address ranges will be updated to reflect where the split occured.&lt;/rule_description&gt;&lt;exclude_from_client_eval&gt;True&lt;/exclude_from_client_eval&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;// This rule will split intersecting roads at their intersection and the address ranges will be updated to reflect where the split occured
//Define any fields to be copied from the centerline when split (lower case)
var centerline_field_names = ["rclnguid", "discrpagid", "rangeprefixleft", "fromleft", "toleft", "parityleft", "rangeprefixright", "fromright", "toright", "parityright", "fullname", "fedroute", "fedrtetype", "afedrte", "afedrtetype", "stroute", "strtetype", "astrte", "astrtetype", "ctyroute", "onewaydir", "roadlevel", "inwater", "roadclass", "countryleft", "countryright", "stateleft", "stateright", "countyleft", "countyright","munileft", "muniright", "zipleft", "zipright", "msagleft", "msagright", "esnleft", "esnright"]
// This function calculates a new from and to address based on the percentage along the line the split occurs
function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
    var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
    var val = percent * range;
    var newVal = 0;
    if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
    if (newVal == range) newVal -= 2;
    if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
// If the road was created from a split its id will have a prefix of '::'
// Don't process any futher splits to prevent getting in an infinite loop
var id = $feature.centerlineid;
if (Left(id, 2) == "::") return id;
// Get the object id, centerline id and geometry from the road
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
// Get all the intersecting roads
var intersectingRoads = Intersects(FeatureSetByName($datastore, "CityOfPullmanGIS.SDE.RoadCenterline"), geom);
var adds = [];
var updates = [];
// Loop through each intersecting road
for (var road in intersectingRoads) {
    // Continue to the next road if the intersecting road is the same or geometry is the same
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
    // Cut the intersecting road and continue if the result of the cut is 0 features
    var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
    var validCut = true;
    var geometries = []
    // Loop through collection of lines and check that it was a valid cut in the middle of a segment
    for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i]) == 0) {
            validCut = false;
            continue;
        }
        // Handle multipart geometries
        var allParts = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts) {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    // Process the cut if valid
    if (validCut) {
        // Get the address range of the intersecting road
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
        var firstGeometry = null;
        var secondGeomArray = [];
        var firstPoint = Geometry(road).paths[0][0];
        // Loop through each geometry in the cut
        // Store the geometry including the first vertex of the orginal road as the first geometry
        // Collect all other geometries in an array
        for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            } else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
        // Merge all other geometries as the second geometry
        var secondGeometry = Union(secondGeomArray);
        // Calculate the new address ranges based on the intersection location along the line
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
        // Store an update for the intersecting road with the first geometry from the cut and the new right to and left to value   var attributes = {}
  if (newToFromRight[0] != null) attributes['toright'] = newToFromRight[0];
  if (newToFromLeft[0] != null) attributes['toleft'] = newToFromLeft[0];
        updates[Count(updates)] = {
            'objectID': road.OBJECTID,
            'attributes': attributes,
            'geometry': firstGeometry
        }
        // Store an add for a new road with the second geometry from the cut and the new right from and left from value         var featureAttributes = Dictionary(Text(road))['attributes'];
        var newAttributes = {};
        for (var k in featureAttributes) {
            if (Lower(k) == "fromright" &amp;amp;&amp;amp; newToFromRight[1] != null) {
                newAttributes['fromright'] = newToFromRight[1];
            } else if (Lower(k) == "fromleft" &amp;amp;&amp;amp; newToFromLeft[1] != null) {
                newAttributes['fromleft'] = newToFromLeft[1];
            } else if (IndexOf(centerline_field_names, Lower(k)) &amp;gt; -1 &amp;amp;&amp;amp; featureAttributes[k] != null) {
                newAttributes[k] = featureAttributes[k];
            } else {
    continue;
   }
        }
  // Store a reference to the original id of the road for the split
        newAttributes['centerlineid'] = "::" + road.centerlineid;
        adds[Count(adds)] = {
            'attributes': newAttributes,
            'geometry': secondGeometry
        }
    }
}
// Return the original road centerline id
// Using the edit parameter return the list of updates and adds for the split roads
return {
    'result': id,
    'edit': [{'className': 'CityOfPullmanGIS.SDE.RoadCenterline', 'adds': adds, 'updates': updates}]
};&lt;/expression&gt;&lt;category&gt;2147483647&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20220708" Time="111056" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\Toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.9.0'&gt;&lt;FeatureDataset&gt;CityOfPullmanGIS.SDE.AddressDataManagement&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;ENCRYPTED_PASSWORD=00022e6843337154382f39714f4b696f6d5065306745786d365276553146734a696263633561444c58355052564f453d2a00;SERVER=sql-arcgis.pullman-wa.gov;INSTANCE=sde:sqlserver:sql-arcgis.pullman-wa.gov;DBCLIENT=sqlserver;DB_CONNECTION_PROPERTIES=sql-arcgis.pullman-wa.gov;DATABASE=CityOfPullmanGIS;USER=sde;VERSION=sde.DEFAULT;AUTHENTICATION_MODE=DBMS&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;SDE&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;CityOfPullmanGIS.SDE.RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AlterAttributeRule&gt;&lt;rule_name&gt;Split Intersecting Road&lt;/rule_name&gt;&lt;rule_description&gt;Splits intersecting roads at their intersection and the address ranges will be updated to reflect where the split occured.&lt;/rule_description&gt;&lt;exclude_from_client_eval&gt;True&lt;/exclude_from_client_eval&gt;&lt;severity&gt;-1&lt;/severity&gt;&lt;expression&gt;// This rule will split intersecting roads at their intersection and the address ranges will be updated to reflect where the split occured
//Define any fields to be copied from the centerline when split (lower case)
var centerline_field_names = ["rclnguid", "discrpagid", "rangeprefixleft", "fromleft", "toleft", "parityleft", "rangeprefixright", "fromright", "toright", "parityright", "fullname", "fedroute", "fedrtetype", "afedrte", "afedrtetype", "stroute", "strtetype", "astrte", "astrtetype", "ctyroute", "onewaydir", "roadlevel", "inwater", "roadclass", "countryleft", "countryright", "stateleft", "stateright", "countyleft", "countyright","munileft", "muniright", "zipleft", "zipright", "msagleft", "msagright", "esnleft", "esnright"]
// This function calculates a new from and to address based on the percentage along the line the split occurs
function newToFrom(from, to, percent) {
    if (from == null || to == null) return [null, null];
    var range = Abs(to - from);
    if (range &amp;lt; 2) return [from, to];
    var val = percent * range;
    var newVal = 0;
    if ((Floor(val) % 2) == 0) newVal = Floor(val);
    else if ((Ceil(val) % 2) == 0) newVal = Ceil(val);
    else newVal = Floor(val) - 1;
    if (newVal == range) newVal -= 2;
    if (from &amp;gt; to) return [from - newVal, from - newVal - 2];
    else return [from + newVal, from + newVal + 2];
}
// If the road was created from a split its id will have a prefix of '::'
// Don't process any futher splits to prevent getting in an infinite loop
var id = $feature.centerlineid;
if (Left(id, 2) == "::") return id;
// Get the object id, centerline id and geometry from the road
var oid = $feature.OBJECTID;
var geom = Geometry($feature);
// Get all the intersecting roads
var intersectingRoads = Intersects(FeatureSetByName($datastore, "CityOfPullmanGIS.SDE.RoadCenterline"), geom);
var adds = [];
var updates = [];
// Loop through each intersecting road
for (var road in intersectingRoads) {
    // Continue to the next road if the intersecting road is the same or geometry is the same
    if (oid == road.OBJECTID || Equals(geom, road)) continue;
    // Cut the intersecting road and continue if the result of the cut is 0 features
    var newRoads = Cut(road, geom);
    if (Count(newRoads) == 0) continue;
    var validCut = true;
    var geometries = []
    // Loop through collection of lines and check that it was a valid cut in the middle of a segment
    for (var i in newRoads) {
        if (newRoads[i] == null || Length(newRoads[i]) == 0) {
            validCut = false;
            continue;
        }
        // Handle multipart geometries
        var allParts = MultiPartToSinglePart(newRoads[i]);
        for (var p in allParts) {
            geometries[Count(geometries)] = allParts[p];
        }
    }
    // Process the cut if valid
    if (validCut) {
        // Get the address range of the intersecting road
        var fromRight = road.fromright;
        var toRight = road.toright;
        var fromLeft = road.fromleft;
        var toLeft = road.toleft;
        var firstGeometry = null;
        var secondGeomArray = [];
        var firstPoint = Geometry(road).paths[0][0];
        // Loop through each geometry in the cut
        // Store the geometry including the first vertex of the orginal road as the first geometry
        // Collect all other geometries in an array
        for (var i in geometries) {
            if (Equals(firstPoint, geometries[i].paths[0][0])) {
                firstGeometry = geometries[i];
            } else {
                secondGeomArray[Count(secondGeomArray)] = geometries[i];
            }
        }
        // Merge all other geometries as the second geometry
        var secondGeometry = Union(secondGeomArray);
        // Calculate the new address ranges based on the intersection location along the line
        var geometryPercent = Length(firstGeometry, 'feet') / (Length(firstGeometry, 'feet') + Length(secondGeometry, 'feet'));
        var newToFromLeft = newToFrom(fromLeft, toLeft, geometryPercent)
        var newToFromRight = newToFrom(fromRight, toRight, geometryPercent)
        // Store an update for the intersecting road with the first geometry from the cut and the new right to and left to value   var attributes = {}
  if (newToFromRight[0] != null) attributes['toright'] = newToFromRight[0];
  if (newToFromLeft[0] != null) attributes['toleft'] = newToFromLeft[0];
        updates[Count(updates)] = {
            'objectID': road.OBJECTID,
            'attributes': attributes,
            'geometry': firstGeometry
        }
        // Store an add for a new road with the second geometry from the cut and the new right from and left from value         var featureAttributes = Dictionary(Text(road))['attributes'];
        var newAttributes = {};
        for (var k in featureAttributes) {
            if (Lower(k) == "fromright" &amp;amp;&amp;amp; newToFromRight[1] != null) {
                newAttributes['fromright'] = newToFromRight[1];
            } else if (Lower(k) == "fromleft" &amp;amp;&amp;amp; newToFromLeft[1] != null) {
                newAttributes['fromleft'] = newToFromLeft[1];
            } else if (IndexOf(centerline_field_names, Lower(k)) &amp;gt; -1 &amp;amp;&amp;amp; featureAttributes[k] != null) {
                newAttributes[k] = featureAttributes[k];
            } else {
    continue;
   }
        }
  // Store a reference to the original id of the road for the split
        newAttributes['centerlineid'] = "::" + road.centerlineid;
        adds[Count(adds)] = {
            'attributes': newAttributes,
            'geometry': secondGeometry
        }
    }
}
// Return the original road centerline id
// Using the edit parameter return the list of updates and adds for the split roads
return {
    'result': id,
    'edit': [{'className': 'CityOfPullmanGIS.SDE.RoadCenterline', 'adds': adds, 'updates': updates}]
};&lt;/expression&gt;&lt;category&gt;2147483647&lt;/category&gt;&lt;triggering_events_insert&gt;True&lt;/triggering_events_insert&gt;&lt;triggering_events_delete&gt;False&lt;/triggering_events_delete&gt;&lt;triggering_events_update&gt;False&lt;/triggering_events_update&gt;&lt;/AlterAttributeRule&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20220708" Time="111424" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\CalculateField">CalculateField "Roads\All Roads (Reference)" fullname 'NE Garden Ave' "Python 3" # Text NO_ENFORCE_DOMAINS</Process>
<Process Date="20220720" Time="140849" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\AddRelate">AddRelate "All Roads (Reference)" RoadMatrixID RoadMatrix.dbo.v_sect_attr sect_no "RoadMatrix Attributes" "One to many"</Process>
<Process Date="20220720" Time="144115" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Data Management Tools.tbx\RemoveRelate">RemoveRelate "All Roads (Reference)" #</Process>
<Process Date="20220720" Time="144944" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\Toolboxes\Data Management Tools.tbx\RemoveRelate">RemoveRelate "All Roads (Reference)" #</Process>
<Process Date="20221123" Time="144232" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\Toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.9.0'&gt;&lt;FeatureDataset&gt;CityOfPullmanGIS.SDE.AddressDataManagement&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;ENCRYPTED_PASSWORD=00022e6858314648625973435135537945546b3378457a503850444e564b43574e49625479432f716d46333072576f3d2a00;SERVER=sql-arcgis.pullman-wa.gov;INSTANCE=sde:sqlserver:sql-arcgis.pullman-wa.gov;DBCLIENT=sqlserver;DB_CONNECTION_PROPERTIES=sql-arcgis.pullman-wa.gov;DATABASE=CityOfPullmanGIS;USER=sde;VERSION=sde.DEFAULT;AUTHENTICATION_MODE=DBMS&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;SDE&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;CityOfPullmanGIS.SDE.RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AddField&gt;&lt;field_name&gt;snowmaintpriority&lt;/field_name&gt;&lt;field_type&gt;TEXT&lt;/field_type&gt;&lt;field_precision&gt;0&lt;/field_precision&gt;&lt;field_length&gt;255&lt;/field_length&gt;&lt;field_alias&gt;Snow Maintenance Priority&lt;/field_alias&gt;&lt;field_is_nullable&gt;True&lt;/field_is_nullable&gt;&lt;field_is_required&gt;False&lt;/field_is_required&gt;&lt;field_domain&gt;SnowMaintenancePriority&lt;/field_domain&gt;&lt;field_default_value&gt;Priority Three&lt;/field_default_value&gt;&lt;/AddField&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20221123" Time="144345" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\Toolboxes\Data Management Tools.tbx\UpdateSchema">UpdateSchema "CIMDATA=&lt;CIMFeatureDatasetDataConnection xsi:type='typens:CIMFeatureDatasetDataConnection' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.9.0'&gt;&lt;FeatureDataset&gt;CityOfPullmanGIS.SDE.AddressDataManagement&lt;/FeatureDataset&gt;&lt;WorkspaceConnectionString&gt;ENCRYPTED_PASSWORD=00022e6858314648625973435135537945546b3378457a503850444e564b43574e49625479432f716d46333072576f3d2a00;SERVER=sql-arcgis.pullman-wa.gov;INSTANCE=sde:sqlserver:sql-arcgis.pullman-wa.gov;DBCLIENT=sqlserver;DB_CONNECTION_PROPERTIES=sql-arcgis.pullman-wa.gov;DATABASE=CityOfPullmanGIS;USER=sde;VERSION=sde.DEFAULT;AUTHENTICATION_MODE=DBMS&lt;/WorkspaceConnectionString&gt;&lt;WorkspaceFactory&gt;SDE&lt;/WorkspaceFactory&gt;&lt;Dataset&gt;CityOfPullmanGIS.SDE.RoadCenterline&lt;/Dataset&gt;&lt;DatasetType&gt;esriDTFeatureClass&lt;/DatasetType&gt;&lt;/CIMFeatureDatasetDataConnection&gt;" "&lt;operationSequence&gt;&lt;workflow&gt;&lt;AddField&gt;&lt;field_name&gt;snowmaintpriority&lt;/field_name&gt;&lt;field_type&gt;TEXT&lt;/field_type&gt;&lt;field_precision&gt;0&lt;/field_precision&gt;&lt;field_length&gt;255&lt;/field_length&gt;&lt;field_alias&gt;Snow Maintenance Priority&lt;/field_alias&gt;&lt;field_is_nullable&gt;True&lt;/field_is_nullable&gt;&lt;field_is_required&gt;False&lt;/field_is_required&gt;&lt;field_domain&gt;SnowMaintenancePriority&lt;/field_domain&gt;&lt;field_default_value&gt;Priority Three&lt;/field_default_value&gt;&lt;/AddField&gt;&lt;/workflow&gt;&lt;/operationSequence&gt;"</Process>
<Process Date="20230201" Time="101933" ToolSource="c:\program files\arcgis\pro\Resources\ArcToolbox\toolboxes\Conversion Tools.tbx\FeatureClassToFeatureClass">FeatureClassToFeatureClass CityOfPullmanGIS.SDE.RoadCenterline "H:\Map Resources\Map Services\Pullman Transit\Pullman Transit.gdb" RoadCenterline_BusTripSummary # "centerlineid "Centerline ID" true true false 20 Text 0 0,First,#,CityOfPullmanGIS.SDE.RoadCenterline,CityOfPullmanGIS.SDE.RoadCenterline.centerlineid,0,20;fullname "Full Road Name" true true false 300 Text 0 0,First,#,CityOfPullmanGIS.SDE.RoadCenterline,CityOfPullmanGIS.SDE.RoadCenterline.fullname,0,300;roadclass "Road Class" true true false 20 Text 0 0,First,#,CityOfPullmanGIS.SDE.RoadCenterline,CityOfPullmanGIS.SDE.RoadCenterline.roadclass,0,20;created_user "created_user" false true false 255 Text 0 0,First,#,CityOfPullmanGIS.SDE.RoadCenterline,CityOfPullmanGIS.SDE.RoadCenterline.created_user,0,255;created_date "created_date" false true false 8 Date 0 0,First,#,CityOfPullmanGIS.SDE.RoadCenterline,CityOfPullmanGIS.SDE.RoadCenterline.created_date,-1,-1;last_edited_user "last_edited_user" false true false 255 Text 0 0,First,#,CityOfPullmanGIS.SDE.RoadCenterline,CityOfPullmanGIS.SDE.RoadCenterline.last_edited_user,0,255;last_edited_date "last_edited_date" false true false 8 Date 0 0,First,#,CityOfPullmanGIS.SDE.RoadCenterline,CityOfPullmanGIS.SDE.RoadCenterline.last_edited_date,-1,-1;stantecunique "Stantec Unique ID" true true false 4 Long 0 10,First,#,CityOfPullmanGIS.SDE.RoadCenterline,CityOfPullmanGIS.SDE.RoadCenterline.stantecunique,-1,-1;fromstreet "From Street Intersection" true true false 255 Text 0 0,First,#,CityOfPullmanGIS.SDE.RoadCenterline,CityOfPullmanGIS.SDE.RoadCenterline.fromstreet,0,255;tostreet "To Street Intersection" true true false 255 Text 0 0,First,#,CityOfPullmanGIS.SDE.RoadCenterline,CityOfPullmanGIS.SDE.RoadCenterline.tostreet,0,255;GlobalID "GlobalID" false false true 38 GlobalID 0 0,First,#,CityOfPullmanGIS.SDE.RoadCenterline,CityOfPullmanGIS.SDE.RoadCenterline.GlobalID,-1,-1;roadname "Road Name" true true false 255 Text 0 0,First,#,CityOfPullmanGIS.SDE.RoadCenterline,CityOfPullmanGIS.SDE.RoadCenterline.roadname,0,255;speedlimit "Speed Limit" true true false 2 Short 0 5,First,#,CityOfPullmanGIS.SDE.RoadCenterline,CityOfPullmanGIS.SDE.RoadCenterline.speedlimit,-1,-1;ownedby "Owned By" true true false 255 Text 0 0,First,#,CityOfPullmanGIS.SDE.RoadCenterline,CityOfPullmanGIS.SDE.RoadCenterline.ownedby,0,255;RoadMatrixID "RoadMatrix ID" true true false 255 Text 0 0,First,#,CityOfPullmanGIS.SDE.RoadCenterline,CityOfPullmanGIS.SDE.RoadCenterline.RoadMatrixID,0,255;maintby "Maintained By" true true false 255 Text 0 0,First,#,CityOfPullmanGIS.SDE.RoadCenterline,CityOfPullmanGIS.SDE.RoadCenterline.maintby,0,255;snowmaintpriority "Snow Maintenance Priority" true true false 255 Text 0 0,First,#,CityOfPullmanGIS.SDE.RoadCenterline,CityOfPullmanGIS.SDE.RoadCenterline.snowmaintpriority,0,255;OBJECTID "OBJECTID" false true false 4 Long 0 9,First,#,CityOfPullmanGIS.SDE.RoadCenterline,RoadCenterlinePoints_SpatialJoin_busroutes.OBJECTID,-1,-1;Join_Count "Join_Count" true true false 4 Long 0 0,First,#,CityOfPullmanGIS.SDE.RoadCenterline,RoadCenterlinePoints_SpatialJoin_busroutes.Join_Count,-1,-1;TARGET_FID "TARGET_FID" true true false 4 Long 0 0,First,#,CityOfPullmanGIS.SDE.RoadCenterline,RoadCenterlinePoints_SpatialJoin_busroutes.TARGET_FID,-1,-1;centerlineid "Centerline ID" true true false 20 Text 0 0,First,#,CityOfPullmanGIS.SDE.RoadCenterline,RoadCenterlinePoints_SpatialJoin_busroutes.centerlineid,0,20;ORIG_FID "ORIG_FID" true true false 4 Long 0 0,First,#,CityOfPullmanGIS.SDE.RoadCenterline,RoadCenterlinePoints_SpatialJoin_busroutes.ORIG_FID,-1,-1;shape_id "shape_id" true true false 500 Text 0 0,First,#,CityOfPullmanGIS.SDE.RoadCenterline,RoadCenterlinePoints_SpatialJoin_busroutes.shape_id,0,500;route_id "route_id" true true false 500 Text 0 0,First,#,CityOfPullmanGIS.SDE.RoadCenterline,RoadCenterlinePoints_SpatialJoin_busroutes.route_id,0,500;agency_id "agency_id" true true false 500 Text 0 0,First,#,CityOfPullmanGIS.SDE.RoadCenterline,RoadCenterlinePoints_SpatialJoin_busroutes.agency_id,0,500;route_short_name "route_short_name" true true false 500 Text 0 0,First,#,CityOfPullmanGIS.SDE.RoadCenterline,RoadCenterlinePoints_SpatialJoin_busroutes.route_short_name,0,500;route_long_name "route_long_name" true true false 500 Text 0 0,First,#,CityOfPullmanGIS.SDE.RoadCenterline,RoadCenterlinePoints_SpatialJoin_busroutes.route_long_name,0,500;route_desc "route_desc" true true false 500 Text 0 0,First,#,CityOfPullmanGIS.SDE.RoadCenterline,RoadCenterlinePoints_SpatialJoin_busroutes.route_desc,0,500;route_type "route_type" true true false 500 Text 0 0,First,#,CityOfPullmanGIS.SDE.RoadCenterline,RoadCenterlinePoints_SpatialJoin_busroutes.route_type,0,500;route_url "route_url" true true false 500 Text 0 0,First,#,CityOfPullmanGIS.SDE.RoadCenterline,RoadCenterlinePoints_SpatialJoin_busroutes.route_url,0,500;route_color "route_color" true true false 500 Text 0 0,First,#,CityOfPullmanGIS.SDE.RoadCenterline,RoadCenterlinePoints_SpatialJoin_busroutes.route_color,0,500;route_text_color "route_text_color" true true false 500 Text 0 0,First,#,CityOfPullmanGIS.SDE.RoadCenterline,RoadCenterlinePoints_SpatialJoin_busroutes.route_text_color,0,500;route_type_text "route_type_text" true true false 500 Text 0 0,First,#,CityOfPullmanGIS.SDE.RoadCenterline,RoadCenterlinePoints_SpatialJoin_busroutes.route_type_text,0,500;MercatorLength "MercatorLength" true true false 8 Double 0 0,First,#,CityOfPullmanGIS.SDE.RoadCenterline,RoadCenterlinePoints_SpatialJoin_busroutes.MercatorLength,-1,-1;weekly_trips "weekly_trips" true true false 2 Short 0 0,First,#,CityOfPullmanGIS.SDE.RoadCenterline,RoadCenterlinePoints_SpatialJoin_busroutes.weekly_trips,-1,-1;weekly_trips_join "weekly_trips_join" true true false 255 Text 0 0,First,#,CityOfPullmanGIS.SDE.RoadCenterline,RoadCenterlinePoints_SpatialJoin_busroutes.weekly_trips_join,0,255" #</Process>
</lineage>
<itemProps>
<itemLocation>
<linkage Sync="TRUE">file://\\pullman-wa.gov\Shares\Home\sjenkins\Map Resources\Map Services\Pullman Transit\Pullman Transit.gdb</linkage>
<protocol Sync="TRUE">Local Area Network</protocol>
</itemLocation>
<itemName Sync="TRUE">RoadCenterline_BusTripSummary</itemName>
<imsContentType Sync="TRUE">002</imsContentType>
</itemProps>
<coordRef>
<type Sync="TRUE">Projected</type>
<geogcsn Sync="TRUE">GCS_North_American_1983</geogcsn>
<csUnits Sync="TRUE">Linear Unit: Foot_US (0.304801)</csUnits>
<projcsn Sync="TRUE">NAD_1983_StatePlane_Washington_South_FIPS_4602_Feet</projcsn>
<peXml Sync="TRUE">&lt;ProjectedCoordinateSystem xsi:type='typens:ProjectedCoordinateSystem' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/2.9.0'&gt;&lt;WKT&gt;PROJCS[&amp;quot;NAD_1983_StatePlane_Washington_South_FIPS_4602_Feet&amp;quot;,GEOGCS[&amp;quot;GCS_North_American_1983&amp;quot;,DATUM[&amp;quot;D_North_American_1983&amp;quot;,SPHEROID[&amp;quot;GRS_1980&amp;quot;,6378137.0,298.257222101]],PRIMEM[&amp;quot;Greenwich&amp;quot;,0.0],UNIT[&amp;quot;Degree&amp;quot;,0.0174532925199433]],PROJECTION[&amp;quot;Lambert_Conformal_Conic&amp;quot;],PARAMETER[&amp;quot;False_Easting&amp;quot;,1640416.666666667],PARAMETER[&amp;quot;False_Northing&amp;quot;,0.0],PARAMETER[&amp;quot;Central_Meridian&amp;quot;,-120.5],PARAMETER[&amp;quot;Standard_Parallel_1&amp;quot;,45.83333333333334],PARAMETER[&amp;quot;Standard_Parallel_2&amp;quot;,47.33333333333334],PARAMETER[&amp;quot;Latitude_Of_Origin&amp;quot;,45.33333333333334],UNIT[&amp;quot;Foot_US&amp;quot;,0.3048006096012192],AUTHORITY[&amp;quot;EPSG&amp;quot;,2286]],VERTCS[&amp;quot;NAVD88_height_(ftUS)&amp;quot;,VDATUM[&amp;quot;North_American_Vertical_Datum_1988&amp;quot;],PARAMETER[&amp;quot;Vertical_Shift&amp;quot;,0.0],PARAMETER[&amp;quot;Direction&amp;quot;,1.0],UNIT[&amp;quot;Foot_US&amp;quot;,0.3048006096012192],AUTHORITY[&amp;quot;EPSG&amp;quot;,6360]]&lt;/WKT&gt;&lt;XOrigin&gt;-117498300&lt;/XOrigin&gt;&lt;YOrigin&gt;-98850300&lt;/YOrigin&gt;&lt;XYScale&gt;3048.0060960121928&lt;/XYScale&gt;&lt;ZOrigin&gt;-100000&lt;/ZOrigin&gt;&lt;ZScale&gt;10000&lt;/ZScale&gt;&lt;MOrigin&gt;-100000&lt;/MOrigin&gt;&lt;MScale&gt;10000&lt;/MScale&gt;&lt;XYTolerance&gt;0.0032808333333333331&lt;/XYTolerance&gt;&lt;ZTolerance&gt;0.001&lt;/ZTolerance&gt;&lt;MTolerance&gt;0.001&lt;/MTolerance&gt;&lt;HighPrecision&gt;true&lt;/HighPrecision&gt;&lt;WKID&gt;102749&lt;/WKID&gt;&lt;LatestWKID&gt;2286&lt;/LatestWKID&gt;&lt;VCSWKID&gt;105703&lt;/VCSWKID&gt;&lt;LatestVCSWKID&gt;6360&lt;/LatestVCSWKID&gt;&lt;/ProjectedCoordinateSystem&gt;</peXml>
</coordRef>
</DataProperties>
<CreaDate>20191127</CreaDate>
<CreaTime>12150600</CreaTime>
<SyncDate>20230201</SyncDate>
<SyncTime>10193200</SyncTime>
<ModDate>20230201</ModDate>
<ModTime>10193200</ModTime>
</Esri>
<idinfo>
<descript>
<abstract>Road segments that represent the centerlines of all roadways or carriageways and used for address geocoding, as well as a source for public works and other agencies responsible for the active management of the road network.</abstract>
<purpose>Road Centerlines</purpose>
</descript>
<keywords>
<theme>
<themekt>X-Ray</themekt>
<themekey>Transportation</themekey>
</theme>
</keywords>
<accconst/>
<useconst/>
<status>
<progress/>
<update/>
</status>
<spdom>
<bounding>
<westbc>NaN</westbc>
<eastbc>NaN</eastbc>
<northbc>NaN</northbc>
<southbc>NaN</southbc>
</bounding>
</spdom>
</idinfo>
<eainfo>
<detailed Name="RoadCenterline_BusTripSummary">
<attr>
<attrlabl Sync="TRUE">OBJECTID</attrlabl>
<attalias Sync="TRUE">OBJECTID</attalias>
<attrtype Sync="TRUE">Integer</attrtype>
<attwidth Sync="TRUE">4</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
<attrdef Sync="TRUE">Internal feature number.</attrdef>
<attrdefs Sync="TRUE">Esri</attrdefs>
<attrdomv>
<udom Sync="TRUE">Sequential unique whole numbers that are automatically generated.</udom>
</attrdomv>
</attr>
<attr>
<attrlabl Sync="TRUE">OBJECTID_1</attrlabl>
<attalias Sync="TRUE">OBJECTID_1</attalias>
<attrtype Sync="TRUE">OID</attrtype>
<attwidth Sync="TRUE">4</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
<attrdef Sync="TRUE">Internal feature number.</attrdef>
<attrdefs Sync="TRUE">Esri</attrdefs>
<attrdomv>
<udom Sync="TRUE">Sequential unique whole numbers that are automatically generated.</udom>
</attrdomv>
</attr>
<attr>
<attrlabl Sync="TRUE">SHAPE</attrlabl>
<attalias Sync="TRUE">Shape</attalias>
<attrtype Sync="TRUE">Geometry</attrtype>
<attwidth Sync="TRUE">0</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
<attrdef Sync="TRUE">Feature geometry.</attrdef>
<attrdefs Sync="TRUE">Esri</attrdefs>
<attrdomv>
<udom Sync="TRUE">Coordinates defining the features.</udom>
</attrdomv>
</attr>
<attr>
<attrlabl Sync="TRUE">centerlineid</attrlabl>
<attalias Sync="TRUE">Centerline ID</attalias>
<attrtype Sync="TRUE">String</attrtype>
<attwidth Sync="TRUE">20</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
<attrdef Sync="TRUE">A unique id for the road centerline segment</attrdef>
</attr>
<attr>
<attrlabl Sync="TRUE">fullname</attrlabl>
<attalias Sync="TRUE">Full Road Name</attalias>
<attrtype Sync="TRUE">String</attrtype>
<attwidth Sync="TRUE">300</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
<attrdef Sync="TRUE">The full name of the road including any prefix and/or suffix in mixed case format for Esri Community Map contributors</attrdef>
</attr>
<attr>
<attrlabl Sync="TRUE">roadclass</attrlabl>
<attalias Sync="TRUE">Road Class</attalias>
<attrtype Sync="TRUE">String</attrtype>
<attwidth Sync="TRUE">20</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
<attrdef Sync="TRUE">Functional classification of roads based on type of service</attrdef>
</attr>
<attr>
<attrlabl Sync="TRUE">created_user</attrlabl>
<attalias Sync="TRUE">created_user</attalias>
<attrtype Sync="TRUE">String</attrtype>
<attwidth Sync="TRUE">255</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
</attr>
<attr>
<attrlabl Sync="TRUE">created_date</attrlabl>
<attalias Sync="TRUE">created_date</attalias>
<attrtype Sync="TRUE">Date</attrtype>
<attwidth Sync="TRUE">8</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
</attr>
<attr>
<attrlabl Sync="TRUE">last_edited_user</attrlabl>
<attalias Sync="TRUE">last_edited_user</attalias>
<attrtype Sync="TRUE">String</attrtype>
<attwidth Sync="TRUE">255</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
</attr>
<attr>
<attrlabl Sync="TRUE">last_edited_date</attrlabl>
<attalias Sync="TRUE">last_edited_date</attalias>
<attrtype Sync="TRUE">Date</attrtype>
<attwidth Sync="TRUE">8</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
</attr>
<attr>
<attrlabl Sync="TRUE">stantecunique</attrlabl>
<attalias Sync="TRUE">Stantec Unique ID</attalias>
<attrtype Sync="TRUE">Integer</attrtype>
<attwidth Sync="TRUE">4</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
</attr>
<attr>
<attrlabl Sync="TRUE">fromstreet</attrlabl>
<attalias Sync="TRUE">From Street Intersection</attalias>
<attrtype Sync="TRUE">String</attrtype>
<attwidth Sync="TRUE">255</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
</attr>
<attr>
<attrlabl Sync="TRUE">tostreet</attrlabl>
<attalias Sync="TRUE">To Street Intersection</attalias>
<attrtype Sync="TRUE">String</attrtype>
<attwidth Sync="TRUE">255</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
</attr>
<attr>
<attrlabl Sync="TRUE">GlobalID</attrlabl>
<attalias Sync="TRUE">GlobalID</attalias>
<attrtype Sync="TRUE">GlobalID</attrtype>
<attwidth Sync="TRUE">38</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
</attr>
<attr>
<attrlabl Sync="TRUE">roadname</attrlabl>
<attalias Sync="TRUE">Road Name</attalias>
<attrtype Sync="TRUE">String</attrtype>
<attwidth Sync="TRUE">255</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
</attr>
<attr>
<attrlabl Sync="TRUE">speedlimit</attrlabl>
<attalias Sync="TRUE">Speed Limit</attalias>
<attrtype Sync="TRUE">SmallInteger</attrtype>
<attwidth Sync="TRUE">2</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
</attr>
<attr>
<attrlabl Sync="TRUE">ownedby</attrlabl>
<attalias Sync="TRUE">Owned By</attalias>
<attrtype Sync="TRUE">String</attrtype>
<attwidth Sync="TRUE">255</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
</attr>
<attr>
<attrlabl Sync="TRUE">RoadMatrixID</attrlabl>
<attalias Sync="TRUE">RoadMatrix ID</attalias>
<attrtype Sync="TRUE">String</attrtype>
<attwidth Sync="TRUE">255</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
</attr>
<attr>
<attrlabl Sync="TRUE">maintby</attrlabl>
<attalias Sync="TRUE">Maintained By</attalias>
<attrtype Sync="TRUE">String</attrtype>
<attwidth Sync="TRUE">255</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
</attr>
<attr>
<attrlabl Sync="TRUE">snowmaintpriority</attrlabl>
<attalias Sync="TRUE">Snow Maintenance Priority</attalias>
<attrtype Sync="TRUE">String</attrtype>
<attwidth Sync="TRUE">255</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
</attr>
<enttyp>
<enttypl Sync="TRUE">RoadCenterline_BusTripSummary</enttypl>
<enttypt Sync="TRUE">Feature Class</enttypt>
<enttypc Sync="TRUE">0</enttypc>
</enttyp>
<attr>
<attrlabl Sync="TRUE">Join_Count</attrlabl>
<attalias Sync="TRUE">Join_Count</attalias>
<attrtype Sync="TRUE">Integer</attrtype>
<attwidth Sync="TRUE">4</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
</attr>
<attr>
<attrlabl Sync="TRUE">TARGET_FID</attrlabl>
<attalias Sync="TRUE">TARGET_FID</attalias>
<attrtype Sync="TRUE">Integer</attrtype>
<attwidth Sync="TRUE">4</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
</attr>
<attr>
<attrlabl Sync="TRUE">centerlineid_1</attrlabl>
<attalias Sync="TRUE">Centerline ID</attalias>
<attrtype Sync="TRUE">String</attrtype>
<attwidth Sync="TRUE">20</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
</attr>
<attr>
<attrlabl Sync="TRUE">ORIG_FID</attrlabl>
<attalias Sync="TRUE">ORIG_FID</attalias>
<attrtype Sync="TRUE">Integer</attrtype>
<attwidth Sync="TRUE">4</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
</attr>
<attr>
<attrlabl Sync="TRUE">shape_id</attrlabl>
<attalias Sync="TRUE">shape_id</attalias>
<attrtype Sync="TRUE">String</attrtype>
<attwidth Sync="TRUE">500</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
</attr>
<attr>
<attrlabl Sync="TRUE">route_id</attrlabl>
<attalias Sync="TRUE">route_id</attalias>
<attrtype Sync="TRUE">String</attrtype>
<attwidth Sync="TRUE">500</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
</attr>
<attr>
<attrlabl Sync="TRUE">agency_id</attrlabl>
<attalias Sync="TRUE">agency_id</attalias>
<attrtype Sync="TRUE">String</attrtype>
<attwidth Sync="TRUE">500</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
</attr>
<attr>
<attrlabl Sync="TRUE">route_short_name</attrlabl>
<attalias Sync="TRUE">route_short_name</attalias>
<attrtype Sync="TRUE">String</attrtype>
<attwidth Sync="TRUE">500</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
</attr>
<attr>
<attrlabl Sync="TRUE">route_long_name</attrlabl>
<attalias Sync="TRUE">route_long_name</attalias>
<attrtype Sync="TRUE">String</attrtype>
<attwidth Sync="TRUE">500</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
</attr>
<attr>
<attrlabl Sync="TRUE">route_desc</attrlabl>
<attalias Sync="TRUE">route_desc</attalias>
<attrtype Sync="TRUE">String</attrtype>
<attwidth Sync="TRUE">500</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
</attr>
<attr>
<attrlabl Sync="TRUE">route_type</attrlabl>
<attalias Sync="TRUE">route_type</attalias>
<attrtype Sync="TRUE">String</attrtype>
<attwidth Sync="TRUE">500</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
</attr>
<attr>
<attrlabl Sync="TRUE">route_url</attrlabl>
<attalias Sync="TRUE">route_url</attalias>
<attrtype Sync="TRUE">String</attrtype>
<attwidth Sync="TRUE">500</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
</attr>
<attr>
<attrlabl Sync="TRUE">route_color</attrlabl>
<attalias Sync="TRUE">route_color</attalias>
<attrtype Sync="TRUE">String</attrtype>
<attwidth Sync="TRUE">500</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
</attr>
<attr>
<attrlabl Sync="TRUE">route_text_color</attrlabl>
<attalias Sync="TRUE">route_text_color</attalias>
<attrtype Sync="TRUE">String</attrtype>
<attwidth Sync="TRUE">500</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
</attr>
<attr>
<attrlabl Sync="TRUE">route_type_text</attrlabl>
<attalias Sync="TRUE">route_type_text</attalias>
<attrtype Sync="TRUE">String</attrtype>
<attwidth Sync="TRUE">500</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
</attr>
<attr>
<attrlabl Sync="TRUE">MercatorLength</attrlabl>
<attalias Sync="TRUE">MercatorLength</attalias>
<attrtype Sync="TRUE">Double</attrtype>
<attwidth Sync="TRUE">8</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
</attr>
<attr>
<attrlabl Sync="TRUE">weekly_trips</attrlabl>
<attalias Sync="TRUE">weekly_trips</attalias>
<attrtype Sync="TRUE">SmallInteger</attrtype>
<attwidth Sync="TRUE">2</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
</attr>
<attr>
<attrlabl Sync="TRUE">weekly_trips_join</attrlabl>
<attalias Sync="TRUE">weekly_trips_join</attalias>
<attrtype Sync="TRUE">String</attrtype>
<attwidth Sync="TRUE">255</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
</attr>
<attr>
<attrlabl Sync="TRUE">Shape_Length</attrlabl>
<attalias Sync="TRUE">Shape_Length</attalias>
<attrtype Sync="TRUE">Double</attrtype>
<attwidth Sync="TRUE">8</attwidth>
<atprecis Sync="TRUE">0</atprecis>
<attscale Sync="TRUE">0</attscale>
<attrdef Sync="TRUE">Length of feature in internal units.</attrdef>
<attrdefs Sync="TRUE">Esri</attrdefs>
<attrdomv>
<udom Sync="TRUE">Positive real numbers that are automatically generated.</udom>
</attrdomv>
</attr>
</detailed>
</eainfo>
<dataIdInfo>
<envirDesc Sync="TRUE">Microsoft Windows 10 Version 10.0 (Build 19044) ; Esri ArcGIS 12.9.0.32739</envirDesc>
<dataLang>
<languageCode Sync="TRUE" value="eng"/>
<countryCode Sync="TRUE" value="USA"/>
</dataLang>
<idCitation>
<resTitle Sync="TRUE">RoadCenterline_BusTripSummary</resTitle>
<presForm>
<PresFormCd Sync="TRUE" value="005"/>
</presForm>
</idCitation>
<spatRpType>
<SpatRepTypCd Sync="TRUE" value="001"/>
</spatRpType>
<idAbs/>
<searchKeys>
<keyword>3D</keyword>
<keyword>Bus</keyword>
<keyword>Routes</keyword>
<keyword>Trips</keyword>
<keyword>Test</keyword>
</searchKeys>
<idPurp>Test</idPurp>
<idCredit/>
<resConst>
<Consts>
<useLimit/>
</Consts>
</resConst>
</dataIdInfo>
<mdLang>
<languageCode Sync="TRUE" value="eng"/>
<countryCode Sync="TRUE" value="USA"/>
</mdLang>
<distInfo>
<distFormat>
<formatName Sync="TRUE">File Geodatabase Feature Class</formatName>
</distFormat>
</distInfo>
<mdHrLv>
<ScopeCd Sync="TRUE" value="005"/>
</mdHrLv>
<mdHrLvName Sync="TRUE">dataset</mdHrLvName>
<refSysInfo>
<RefSystem>
<refSysID>
<identCode Sync="TRUE" code="2286"/>
<idCodeSpace Sync="TRUE">EPSG</idCodeSpace>
<idVersion Sync="TRUE">5.3(9.0.0)</idVersion>
</refSysID>
</RefSystem>
</refSysInfo>
<spatRepInfo>
<VectSpatRep>
<geometObjs Name="RoadCenterline_BusTripSummary">
<geoObjTyp>
<GeoObjTypCd Sync="TRUE" value="002"/>
</geoObjTyp>
<geoObjCnt Sync="TRUE">0</geoObjCnt>
</geometObjs>
<topLvl>
<TopoLevCd Sync="TRUE" value="001"/>
</topLvl>
</VectSpatRep>
</spatRepInfo>
<spdoinfo>
<ptvctinf>
<esriterm Name="RoadCenterline_BusTripSummary">
<efeatyp Sync="TRUE">Simple</efeatyp>
<efeageom Sync="TRUE" code="3"/>
<esritopo Sync="TRUE">FALSE</esritopo>
<efeacnt Sync="TRUE">0</efeacnt>
<spindex Sync="TRUE">TRUE</spindex>
<linrefer Sync="TRUE">FALSE</linrefer>
</esriterm>
</ptvctinf>
</spdoinfo>
<mdDateSt Sync="TRUE">20230201</mdDateSt>
<Binary>
<Thumbnail>
<Data EsriPropertyType="PictureX">/9j/4AAQSkZJRgABAQEAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a
HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCADIASwDASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA
AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3
ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm
p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA
AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx
BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK
U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3
uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD2a1v4
Lm1SZSVV2KjcO/Sqy6Wh1Brtn3hgQUYZBzTrK/trlHjiQR7MkIBjI9RTprr90pibHOCMc0AXI41i
QIqqqjsBgVFPOsakAgAdT6VF9rzb72+UAct/hUQBYh3XBHKIedvufU/yppAIYhIweZc45SM/zb39
qWbzzDI8IDS44zU0abjk9OpJp1rdW00kiQyBmQ4NDYHM2eoT2t2XZmfecSKe/wD9euhjmeSTzI0w
mOc02bTLYXRuFUKx+9TYNRtXuvsqtjHQ9ifSkA85tmM0QzA3+sT+6fUf1FJc28NzBtb5oW5Vh/Cf
UVYk/c/P/AeoNU7mYaXC8/lvLaH7yRjJUk9QPSnuM5y6tntJzG/4H1FS2eny3hJX5EH8RFdBPaw3
UcYlBMZwyN3HtVuJI4oxGigKO1IRk6do3lSebdAMwPyoOn1NbRwo55NICFHAxTTQApOaSigDNAAc
t0prERrnqaVmCjArNZri4uJQxRbDaAHXO9m7ge3vTSCw4yPcTtHBwTxJN2X2X1NNYhEEMYKxr6nl
j6n3q9F5UUC+WAExgKO1UxfWsl75LAbum7tn0obAyLy9LZihOB0Zv6CqHStrVtKMbNc2+Ch5ZAOQ
fWsWkBNbCYzqYCQ479gPeugtzFexlUKlV4YDqT61zf2mSOLyRhY2OSR1PsfaprKaeC6RrfLOeNo/
iHpQB0aSPARHOcgcJKf5H/GrrA8H1ppWPafOAJZcFPSh5BgADAHAFNgZd/8A6PqunXXRVmMbn/Zd
SB/49trK1dBa3KS4/wBRM2T6L99R/wB9KK2NaTzdOlZRlo181R7oQ4/Vapa7h7R7gDKtCs/H8TRk
Nj8gapaxN8P8ai+un36GjPFFd2JidiO6sPWuZkjeGUo4wwra0e4W50xADlo/3bfUU+8shdJ6SD7r
VBgjDileKUOnX09fatoO7sscUe+dhnYei+7VXsrB9+2Pa038TnlYx/U1pW0ajdb2Zbywf31033nP
fH+cVSXczbctI/ePt7fyi0cL+ZOT++uCOnsPT6U2W4CA2dh94f6yXrtP9TTZrgSIbezPl268PKO/
rj/GprH7KLYyRFSi9MevvQ3ca2tHYWCwMUJC8buWJ6k+tWrNY9u8rlxwc9qhtLppWZJDyeRT1Jiu
cdn/AJ0rvoVZEWqzbii+nNVIbZ5I9wHGavXdusskbE47GnfKnypnApDMTTdGuEufMlYxLGeCD97/
AOtWk8MEeGJbYOv+0fQUajdzRWpa3h86TokW7aZD9ew96lhgdyJZQC+OFXonsP8AGnbqwCKGSZle
RQuPuIOkY/qanaFVxj1qVAAAFpxGe1DYGVq8V5JDHFaj5WOHxwf/ANVUbDS7i11DfK20IBgr0f2r
ogOeaYIwZMmkBFPbG5tpEZypccEdq4+4t5LOcxS5V15BHf3FdvJIkKF5GCqOpNZmrzWgt8zKrkj5
fU/SgCha3s13CPO/g4B7GtO2MixHeuYz61FpsEVxEsikeWOiitCaSOKMlyAoFAFTi0O1zutX4B/u
H/D+VTD5GCscg/db1qKCUSxkkBoW4BzmkH+jsIZSTC5/dv8A3T6GnuMtYoxTUYhtj9ex9afikIQD
NNeQIp5AA6k02WZY1JJwB1NVm6CSdeOqQnv7t/hTSAGYSrvkyIT0XoZP8BUMkpkbJwAOAo6AUkkj
SOWY5NZ95eiPMcRy/c+lDYE8uorats2+YT95c9BVeLSWubhTbv8A6O/Ic9V9j71mdSSTknqTWnpL
TxMzqcREdD3PrSA3JIwEWNXLMg4JPX61gajaLG3nRAhW+8n90/4VpiRg+/PNTptmuQwXIxkg+tAH
MwW0l3KIo1yT19BXS2ljBpUORl5iPvN2qO4ubXSPljQedIckL2HrTDP9oAcNlT0oAnSfdNl+h71N
NIEUd/SqNPjI8xS+So7UATxpJJ++cfuxwQe4PWs2Fd+hRROctazG2cn0PyEn8GrovklhIHQjGBWF
bpv1DVbHOPtEIlT2OME/mRWkNmVF21MHwzJva7tnklt5kYbWTB3L3JB9TXTtYX0jgG5hW3bqwjIc
D8WI/SuS0ed4vG8LShVhuEkVc9AoBYfyrt3k+0qZJGMdovrwX/wFJqza7GuMow9q5LrqQeUJY/Jg
Pk2KD55AeZPXn+tQSzLNF5cP7mxQcsOC/wBPQUlxci5Te/7qyT7q4wX+vt7Vj3d610doGyIfdT/G
pepy76LYdeX3nDyoRsgXgAd6m0e58q4MDf6ubj8aza6DRrGHyVuSweQ9P9j/AOvSbKbsSAtDL7qa
0ZcSRCRev3hVC4z57Z61cs23w7T/AAnH4UDLG5XiDdc1Ue4CsQBn3oZjGkkeTwcj6Vat7WPyFLJu
J5rWCilzSJd72RFBasW3ud8h6tjH5DsKv4SNMVnS6zZ2sjRPIRIpwQFJrJ16+MsiQx5CAbg4PD/S
sihdX1K5S48iINEBzu/vf/Wq7pmtJdRlJ8JKo7fxe9Zdmw1OH7FPnzUGYpMZx7GtS1sIdOgw48yV
+px19hQBqHa4DKcj2qQAnkCq1rEYY8MeTzj0pst+0Uxj2Z9OaALjwxzRlJVDKexrnPEVtO8sbxQg
wop5XqPrW1FdrJId2Vb+6arPqtt9sa1Z8HH3j93PpQBzenX72U5IGY2+8P60X+oSXsvOREOi+v1r
pH0u0MDoIwBJySPWsCTSnt5z9oYCIdGz94UAS6FIyzMr5EDDj03VvvGoBilG6NhislVCqAoAA6Yr
QjdvIAl/4D60AIuY3FtMxIP+qlP8j7/zp80jwoPMxzwAvJY+wpszqbUxuhkdjhEHU+/t9aZZK8M+
y8bfcEfI/Yj0HvVWvqMAjoDNIu6ReQo5VPr6mqrMXYsxyT3rTjJRdjfjWXqlrOYGe3BCj7w749ql
sRnXl9jMUJ57t6fSs6jgVfs7EtiWYYHZT/WgBlpZGXEkgwnYetagAAAAwBS1Zt7Yync3C0ARwwPM
wCjj1qPUNQisUNvbENMeGf8Au1ak1K3DNb27gsvDEdq5m/jiFyVgl3qeXI9fSgBjXJmTY4Lsp4kJ
/Me9XdPulUC3kwAT8jeh9DWeBjgCmMxY7U/E+lAHSEYODRWbY3bF/LmdmzgITWpGu+QLtJPoKALF
rK6A/wB2suTUYbXXJbtv9Xa27Ryt/tMwKqPU5FS32oFDJb2kqI0Y/f3LDKQD0H95z2ArnfsL68y2
doGhtI38x5JOST3ZvVj6VtTh1ZcVbVlGylk1HVvtSoxuo5Q9tb/wuuctz6Y4FdvE51IRySsMHpCO
iH0PvVW30S1t4RbwuVn3bo7rHzBvf/PNEMskdxKxiKXKf8fMK/xj/nonrSmk3zRMqtT2kr20Whs3
UNrHYuLkjYRye/4VxxxuO3OM8Z64rb1aKS7hSeOTzEVc4ByCPUVh1kUFaOi3EkV+kakbHPzBjgf/
AK6zs5qWCGSeUJEDu659PegDpb4YuD7in2PJkycDjNVWZmCh33soALetW7JSscjEHBxigB0zKZFZ
f4eD9K0UxsGOmKzYU82eQHpirEM4SPY5AKnHNXNW0JTuctqUE4unkdWYyHP3Tke1a9vpHm6SkU+5
ZfvDP8PtWXfau95EkezawHzsO/0rY0a9murYrKpJTgSf3qgoxI5bnSLt0KAt0weh9CK6S0u3mQCS
BldcZJHB46ilu7GG62GRMspyDUpxChkc5oAkMiqhkkIVRySax5Z0uZTJGwZT0Iqpr17vWFA5AIJZ
APfg1R095RPtQZQ/e9BQBtLJldj5I7EdRWf/AGHcPM37xWj6788n8PWpLq5SCI/Nl2+6B1+tU9O1
CSzuQzEsjcOP60AddDEEt0jHRRgZrnfEEE3nrKfmixtGOx966PzVCBs8EZFUnkMjYxkUAYtgLmJs
SxlYwMqW/lWuZGOAqFpWHyqf5n0FOdy7rEihn689FHqf881Yt7fGcZZj95j1NP1AZDCY8sp3St95
yP5e1LIguE8uT5W6qw4IPqKviNUHNV5038jg9qLgVY3ZyYZcCdfycetS+YFQ78gCo5I/tCgbtkyc
qw7Gkjk84MrqFnTh0z19x7UeYHLz3EJvzPDFiPOQp7+9asUiyxh0OQap6tZpFKZYuh5ZQOlXNEtJ
IEe6nIjhIzhv50gL1ta7vnk4UetZur6zx9ntT+6HDuO/09q0bi4i1C0aG3l4YcEda5eeJ4ZnhlGH
XgigBhJIyrEH1FQgkEkDkfeX+tOH7s4P3D0PpTnXPI4YdKAGb/Mbah47mpAAowKYB5gyvDirtrZy
XEYkf93EPvM39KAG2trJdShY+AOWbsKu3upiK3kjgnEUKfLPd9z/ALCDuxqpeahFHA8MTeVaocSO
PvOf7o9T/LqccZy7CyuPEFwsznyNOtzgEdPovqfU1rGHVmtOnzLmlt/X9f1ratLebW3EcK/Z7KI8
k87f/inP6V1FvbxWlusFvHtjX8yfU1Xsbqz8xbKFRFEvEZ7E/wCNX5I3VsYpSnfRbETlzMaAHBBX
8+9Q3Nsbny2SQR3cfMMp7/7LVY2SLGDz9acY90eT8w/iAqE2ncylHqtzNhuggZ2jMMYbE8Z/5Yt6
/wC6aqanp5iLTxD5Ccso7e/0rVuImYrKm0zgYVj92Uf3W9DVG2u4YVaPePsy/wADHL2/+y46ge/S
qkr6oSl/XYy7a2kupdiDgfeY9AK2o4o7ePy4hx3Y9WNSmOGKBVg2qp5IHf3qOoNArXiKmAbemAaz
vI2xb3O3P3R3NS2b4ZkJ4IoAmtSBduvrTp7TfKWBxmo0IS8Q9jWlitKnR+RMeqOdh8PxrcFpW3xD
O1e/41sxwpHGqRrtUdAKSK4hmd1jkDMhwwB6GpGbA461mUIRg5Y59BUJeSWaSJoSEUAhj0apgDnr
zUF9exWNuWc5cj5VHU0AYWuyebeQ26+WAo+hB961LfT86ascirHLg/Mn865Y7pZM8szn6k10tnaT
R28BnncPGSQgPY9jQBzbxsszR/eYNt47mt/T9KW2UXN0AZf4UP8AD/8AXq/9ngSQ3AhXzj/Fjmms
Gc5JoAazNI3Wkyxfy4uo+8x6IPf39qMs5KRHAU/O/Zfb6/yq3Hap5WzBWM/5zT2AW2tgEwuduclj
1Y+ppby/hsYjyNwH5VWlaezGxXzGeh9K5vUpWe52lywAzj0NIC63iK5a7WTA8kcFPUetdDDPHcwr
JGwZWHFcba2k17KEiXgdWxwPrXVWFt9ltliBzjkn3oAlkTHzDrUUkZlxJGQs6dD2b2PtU0sgVT61
Cr/xnhR3oArJdW95cSRxkfaoAPNiPVc1n63NcsyxniDGRjufetd03kXduB5uMMP7w9DTJY4b62JA
yjcMO6nv+NN9wOVgvPsr5TcJAMBh0GfWoHZ3kJdsyddx/iq5eWJs38s8ofun1qkRj5G6fwmkA9SH
Ugj2IpFJRgjHg9D/AEpvO70cD/voVft7MSwtcXX7m1QZZm4z7CgAtLISt9ol+SFPvE/xe1Utb1aS
S1lFrIkESDAkY8E91X1OOp7dOpo1HUzdoX5hsIh8q9C3uah0jQW1OYapqvyWif8AHvbHjI9SOwra
MVHWW/5GtOmmueew3TNMl1mJL3UR9n02IfIg48z6e3vWnc3vngW8K+TBGMKi8cVJqNyJ5wkbgwoA
FC9B9KosmcMMbh0qJz5iZ1HL0BHz7MK6nRtWFwot5secB8pP8QrmIYZLuUJCv70dR6D39qcd8MuD
lZFPbsagg6y9uWL7FYYHXFV4pmjk3dQeo9ar2tz9vTp+/UfMo7+9TOrQP8xAI569KALjyRxsFfBR
x8yntWfeWh0+6bUraMTK6hZh3dfes261BpHxExCg8t3NbGm6is8eyTBbHzL/AFFNOxEo31W5AbWP
7IL7TJN9sRuMP88eh9quRfZ3gW6i+dGUMo+veqU8b6DcNdQAvp8x/exjnbnuKfaBLZjFHIHtpiXt
2HQg8lfqD+lNx7bEwdtLf8AfJI0jFmOTUtoFLnccNjj3pPszkgp8wJ/KrkKRWysDy+OTUmoyRdwV
16q1SPeYPVRx3YCszUNRMBS0gTzbyQZSEdh/eb0FQx+HbedPM1CR5rluWYMQB7D2rTdK5PXQ3VjS
It5aKGc5YgdTUMEU8fmefNvyxK8YwKS1j+yq2+Z5C7FvmPSrBfuenasyjnJtami1B2iZXhB2hexH
rVueKHW7UTQsFnUYwe3sazdRg8zUJnt1BRRucA8g9+Ku6Tpbj9/KzRkj5VHp6mgCxp+lLZ4lk+ec
jp2WtBgF+Zj81N84xny5OX7H1FNJzlmNAAxZ+v5VViluLq5ni8kxwIQFmDA7/UL/AI06N2vGIXi3
6bweX9QPb3qxKrxqjR8KgxsHTFPYY97XdbhF+VR0A6VWl1M2NqwkQuy8Af40+9v3TT2mt03N0P8A
s+9c1DdvHKzSEyJJ98HvSEWE1i5NwGlYyRscGP29q0rjSYp4/Olk8pV53H096y7aPT3vFRpH2FgV
YHj6V0F/bPfWTQo20cEZ74oALO3hit1jt23Ied2fvVZkkEKbR1rGsLe/tLGYhlRj9xW7HuauyS+T
btczjdtGSB3oAeenmSn5fT1qtNMZT6L2FZ1vqE95cMXAMZ5GOi1NcXKW8eScuei+tAGjbSKgCggO
e2etSSK0bm5gBOf9ZH/e9/rXKNcSNMJt5EgPBHauh07UVuo8niVR8y+vvTTAnnghu7bIw0TDIPpX
M3lo1vKY5QSD0PrXUsptmM0YLQPy6AdP9oVHfNZwrFJIQ+4/uo1GSx/2aLX2HYxbOwjgt/tuosqR
RcjP+etUb+Sa/Y3eof6PYRYaC1PBP+2/17Cti9kVSLi8K748eXF1SEnpx3esaaCa8nae5DbYjuEf
o3qfU9D+VawSjqaU6alLUfpmmLq22/uoylqH/cQEY3kfxN7egq3rN3JJIIVGETqvY1sOFtLGGQDc
qxk4HfODXMXNy087O3Lt0HoKybCrNydui2K4k2cAbg3QehqxaQy3NykAxufoe1RJGFJbqx6mrlvN
FBDI43faeiHHC+p+tIyNqUR6HZrsi3mU7WfueKzjPZXRIkwrkYy3B/Oor68kuYbdJJN5VdxPuaz4
+dz+p/SgDftIVtRmI/N3buadPELiJkJIz3rn4ZnhQyI7KOuAe30q7HqksaL5yB84GRwaAK0kbRSF
HGCP1pY5GhkWSNsMOQauzTW13Fy/luOhbis4HIBoA6nT7+K8gMcgGCMOh7f/AFqy57U6HM0bgtpc
zZyOsLeorPgne3kEkZww/Wuj0+8j1SB7WeMdOntVRlYiUb6rcW1uisgjd1LkbkfPyzL/AHh7+oqt
qGqYmeC2KPcgZY5ykI9W9/QVRuIbnT5WsLa1F5CPmVCu4R5/kantltYIkhmiFu5O4oy7SzHqR/jV
8qWpPM7WW4llYuY2aGRvMlbMkzffc+/t7dKuLZW8Q2mFZD3ZuSTUWo6kLVBb23EhHzP6D2rBOck7
jzyeaSqO+o1T+87FrqC2h86dsA9KrT6jDc74LKYGcj5WPQ+wNN1XTVuLVXgJLxqcDOd1ZFppdzcl
JADHHn756iszQSDTr5rgFY3Rlblz2PrXTCYFcf8ALQcU8sVQIGLEDBY1BIoBDl9uOre1AA678l2w
Rzn0quYmvXw2Ra9gesnufb+dTLGbhgXBEQOQh/i9z/hTrlXhdZ1OQBzmnsMkaFdgAwm0fKemKytT
1Z0gEcJALkqzg9x2FN1W++2WeLdgUVv3uOo/+tWZZaa1/KBtKxA/M/8AhSELbalJZo2751I4B5/A
+1XNPsre7nFx8vk87oj2P9RR/wAI/O07JvAiHRu5FbsVnHDCsSKAFHYUAZ6aZaW9z5qjdzlUPRa0
HmBXaMrx1FNaNUcZFPYBF8xxz2FAFcAxwqZXLYHfv71g6jqDXe6JSRF0P+1WzPKWPXk/pWPe2W1T
NEPlHLKO3vQBUt7w2MLKF3J1HsajZ2lYuzbie9WrWzM+GcER/wA6feWQjHmRLhe6jtQBRqW3aVbh
DDnzM8YpsUTzSBIxljV5pE08tbW+17sLulkb7sQ9T/hVQg5uyKhBzdkadxrcOnQrDIjS3T/cgjG4
nP8ASufTUJLG+kla1laeUEb9uBEOpVM9Ov51PaJsmLRK0t3N/Ex+Yj1J7f5FbEcEOnwmaZ90uMF/
6L6V0ScKa5UrmspU4e6lfzMzTEu7i/e6uIIJoUA+zIkwOw9y3qenNXSiosqX0UsDOWJkxuTn3qKK
ztb4NdpGbeYtjzE4Y++R1qwqarb/AOovUkQdFnTdn8etT7jVk/vHHkez+8uWM8V1ZrbFlM0SgYz1
HQEexFZd5om1y9sOSSXQn+VTtaiYiZ7LyLlc7Z7Ruc+pHf8AHNNTUtRgOyRIb1F64wsn5dKydNoc
qLm+aJjSQSRHEiMp9xUZ4UsegrpV17Spj5N0DbSHgpMu3P496fNodleR7oGADd0PH+FTZmEoSj8S
OS5WI9mb+tK/yx7R34rVu9Durd1ZB5iDPQcis10YS7WUgrzzSJGOPup7/wAqU/NKB6c0qjdISO3F
JHzlv7x/SgAk5AX+8cfhT6YPmlP+yMU+gArb0pjaabNdAZkkbZED3PT/ABrFxngdScV0tssTXsNi
kik2UYaVPRmGR/j+NNAi5bwiyhEYO+Zzukc/xHuaqXcVtcMVl+fPUkZGakuZ1aRhG4OeuDVGeVYI
i7dB2FK4FE6V9nuZpoJTKJAAY5iWUY/u5+717U0QQj/WwXKt6INwH41JLqaDb5Qyx5YN2FKuppj5
o2B9jTv3Hc2rWeWOQ29zjzFGdwHDD1FXHJxgdPWkuIVnjxkq45Vx1U1VE5jDJOdrr/Co+9/u0Wvs
BIzLEpZmwo6mmLG0zh5VwoOUT09z6n+VLHG0j+ZIBkfdTsn+J96shM+1GwCqpPSsrXWuhbgRn9z/
AB46/wD6qk1PVvsimKEgzY57haqWWsvO8dvPHv3fKWHf8KQihpIY6ggRCykEMB0x711UcccKBI1C
qOgAqJII4M+TEqZ67RjNSqO2eaABtxVtpw2OPrVGyub4NJHdoCV+6443VeZwPlHLVA8ixtgnLH9K
AJFIXMkhy3pVSe4Lt1/+tTJZizYHSolBZsDrQAAFjgcmlnuIrOA7+Sf4f71R3d5FYREk7nPYf56V
hyzPcSGR2yT+lAGhbX/mSFJAq5Py46fSr4UsQoXJPQVk2Vg12wY5WMdT3P0q5cXxuS9vZS+XEnyT
XY52/wCynq3vVwg5vQuEHJ6ENxOkMz2OntHFOf8AXXB5WH6ere1VhbqTHY2UTMAd7eYcs7f89JD3
9hStbJdSw2dlbIptySrP83kk9WYn7zmtbNro1t5afPK/J3H5pD6sa2lNQXLEc6lvcp7CxpBpFsWZ
zJM/LOfvSH+grFubqW8l3ueeiqOgqK5mmuJWld8uex6D2HpU2mIJ75FYY2/MQe+K52zI6K1gEVrH
ER0HP17029n+y2jOvDdF+tTCRX3BCCVOCPSs3W1lMUICkryWx+n9aQypDrE6n94Fk9+h/Srw1Wzn
QC4VcDtKoYD8awKY/wAzovbqaE7bDTa1R0b2dneRYjnZVPVWIlQ/g+cfhWe2g3lm3mafI0fOc2sp
Uf8AfDbl/ICqG4x/OpK+4OKsw6veQRAlg5PA3D/CtFVfXU2jiakdN15k8niHWLGMpLbxTyZGBIpi
Y+vqD+lasWqaVqQCTqI5SOUlXB/Oqlvr6SBoryNSvckZWpZNL0i/j+RPJzzmJvl/75+6fxFXzUpb
qxTnRn8St6Ek/hy3lUtbSlAeeDmqM+gzwD90wdR0B4pf7E1WxO/TNS3r/ck7/wBB+AFB8S6npvGr
aRIUHWa35H5d6l0m/gd/67C+r838Np/n+JjIpUfOCpJyQe1PxXQW+seHtc+QTReb3ST5HFE3htG+
a2nIB6BuR+dZtNOzMpwlB2krGZo9v9o1KPI+VPnb8K3JJVt7K8vsAPMxxx1x8o/QZqKz0+XTbSdn
KmeUhEx/KoPEB8m3tbVM+Wo/lwKOhBgqSpyCQ3cg4JqSS4llQI77lBz0qOmucIaQCJyWf1OB9P8A
OafSKNqgelQyPLvxGoIHX60AdzJPsAOCSfuoOrVA0Blk8+R8XS/cbHyp7e9WILcglnbfIfvNjH5D
sPapWaMsUVlLL95c0722GQW0wfcrLscH5lPY/wCFNv55Et2W3G6UjgUyeJgwlj/1g6Z/iHof8afa
tG+XXOSf4uo9jQ+4jn30i98tZSu5nPIzyPrW1pumJaLuPzSkct6ewrQ25607GBSAMelZz2zDUvtK
zsF24ZO1XiWkO1eF7mqFzIRJsBG0enegCU3GQViUk+uKqyB1f58gmlNw+MLhR7VNCFmiPm5yvRqA
KyruYCoru8SzUqnzSnoPT61Bd6mI3kht0IZTgu1ZRJZizEknqTQA2ZnkcyltznrnvV3TdOM37yTK
wYzzwf8A9VO02yE8hlmGIEGSWOB+PtT7mb+0kKKrrpi9Qp2tcY/9BT9TWkKfN6Fwhza9CC9vxep5
NvI8OnA7HkjGHuD/AHI/Qe9T2tpPcgRRqkECcDyx8sQ9F9W/2qfa20F/cwQjDRKNxYDbwOm0dhmt
HU7mSztVNuiqobb04X/69aTqacsVZF1J6csdEQzXFtpMAtrdR5mOFPP4t6msGZmuJC8rFnJ+8aSQ
eaxZyWY8lj1qPLp1+ZfXvWDZiLlk6/Mvr3rV0xdsMl1jjG1T/OsxSHwFOc8VrX7PbQWtnFEz72CM
VP3e5NCAsWEbGMEfflJYn69P0xVya2njPzqSMdetFt+7DSYHyjipH1GdiPugegHWkwM+S2il+/GC
fXoaxZ4VhupFUMB0G6usinimYCSIBhyCKo6+I5okZAfMU8AL1oA5uQ8Bf7xxSHHmD0QZqZbad28x
YyVUY/GmSW8yR7nQgSHr7UAR8lAp6u2TUiSMs2UZk2j+E45po5kJ7AYFIhwhc9+fwoA0rXWLiJiH
xIo/A/pWlb+Io3JEgZRnHzc/rXNglIS2PmPOPenou1AvpQB0Vxpmg6wubizgZj/Go2n8xg1Wj8N3
dkd2j65cxL/zyuMTJ9OcEfnWQrFTlSVPqDiuj0W5a4jAY/PGSGPqKvnlazNY16kVZPT70U5NS1q1
uok1DTkuUiG9ns26+h2n/GrI13QdVxDNMI5f+ecwKMK0YHwklyRkyv8AL/ujgfmBn8ahurXTNTUx
3ltFJ2JYZP5jmj3dmVz05fHH7v8AL/hilL4filUvZXIKnoCQw/MVk3Wl3lu6+ZCSgOdy81bm8HiM
+ZpGp3No3Zd29B7AVUluvGejITLbwanEP7nDY/SrVNS+GRp9Xpz1pzXo9H/kVm+UZP5U2NTsz3PN
W18S6feKov8AThbSnhvMJXB9Pu0efpkpLQ+eU6fuyuP1IP6UvYzJeDrL7Jq6jqzxxpDExSYffI9K
o6XHdTXgljYgZ+d27/41sT2EGpBXJ2SL1K9xUstu8di0dniNgPlrI5iSeVY1wPmJ7VWdXQiZF+bG
ZEHceo96z9PkNnk3j7S33Fbk5q/GJZpt6nn17CmmBdhmEiBgQcjII70skmFLOcKP1rNnFza3UUkQ
QWxc+epzlfdfb1qa8bc685XGRjvQ0Akl3I5IX5UPQVXY4BJpaZjefakBJbKLgjacr3IpNRv0tF8q
PBkxwPT3NZst7JbTlLVwsajGAOCaoSb5Zd4y0jHkf3qAGyF3kMmSzk8j1rRstPaTM1wfKgTli3FT
QwW+m2/2y+cKR0HU57ADu1KbiW4KzXCmNQf3dv1K+hP95vboK0jTuuZ7FxhpzS2JLgC4URsvl2q4
IiP8fu/t6KOtTxw7iN64XjCHv7tj+VLDGy4aTmXrjOQn+J/lTpZVjRiTgAZJrOc3U91aRREqrqe7
HRL+v6Y2501rqZbi3uBHMi7QSvB+uKYZ7mMCDULUOnZ85B/4EB1+oFZU1/NK+UZkQdAD/OpoNZu4
eGIlX0andpWJSaWjJzaWl1dSxJFNahQCsj4KPn3BP9Kgn0a6iG5AJU7Mnerv9r2ropeBkLf3cY/z
+FWIZYpjut3ye+xtrfkcj+VTzd0HM1ujBtrdvt8fylSrZJI7Vp586/Zu0S4/4Eev6Yq5JcIm4u0R
ZR92YeWQP94ZBqDTlj+zLPIkkbTMXG8ZUg9OR7Y61S1V0UmnsWpP3duidzyar1blRZV3qSeONvzA
/lVYIzZwpOOtICW3X5Wc/Sonbc5NJqE7WVim0YdjxkVWtJ2uIizKBg44PWgCyASeBVa7tTdKB5mz
byARnJq9D8qvJ6DA+pqGgDF1GNkYKsZCYCKfX1NVXHCoO5/Stm+t5Z1XyyMLzgmqK6fcMWfaFI4w
x60AVG5dV7Dk0+pJLZoofOJBbOGUNnFQiRT359DxQA6ui063NppZKt+9nIVSOxNc/HGZZUiHVziu
thMLXaW8bKwtE+cKc4Y9j+HNNAitrUotrJYYjt2gKMelc4kskbbkdg3qDWjrc5kulXnaBn8//rYr
L6Y/SkBowazcREbwHHqODV//AISNEVcIzsTyrcHH1rn6YnzOzf8AARQB1sV3p2qqyyQKzAciRAcf
jTxo1jj90qovooUj9Qa5VJHhfdG5VvUVbXVrpVxlD7kUXKUpLZl3TXkjgjbfu9PYelW77VVt02oM
zEfd/u/WsoR3Wm27SOmC52gdQp9TVOKKa7n2IC8jHk/40Eh++u5+8krmulgH2CxX7TKAE6n1NFra
Q6XD2eduprF1R7qW6JlVig+6AOKANi0ul1ASEdQeh7f/AFqYyiI+VJxET8rH+A+h9vQ1U0e0khf7
XKSiEEKvdverzT297HKAykL8rCmmBXdHVirVnXd71ihPszf0FaUR2utrKSQRmGT+8O6n3FVr/ST/
AK62GQThk/rQ0BkKpZgqAsTwAO9aDvbaJai4ucyXD/LFCnLO3oo/mabc3NtoFuhdTPfTcQwJyzH+
ijuao28M73Zurki41GQYwPuQr/dHoPU961hTSXPPb8zWMElzS2GzQXNzc299eTyC6WTMNrDggDB+
Uep9W6DFb1pbOjCSQhpz6fdjHoPU+9LZ2PlkyMd8zDDPjt6D0FW3cRjanXufSoqVHU9P62Oec5VX
5f1+ASIEi4YZzyO9ZOoxytGGU5QfeUfzq/znNJcER2TzjkqOR/KoKSsc8D3FPihed9iD6nsKdBA9
zIdvAzlm7Cp5LkQgw22Ao6v3JoGXZdPhaONeQyrjIptrZ/ZpS4fcSMDjGK1dNX+07bzZoDFjgOOj
+9J/ZM634l81TbqOF7/jQAX9uJ7eGD5d8hAJx0HelbS3ALWUpgUcBOqn6g1KMy37Sdo12r/vHqD+
lGtXUljpqmFirswGfQUNITSe5myxXkMm+W0ZiOPMtXCt/wB8nj9aSLUGLgebFIem2QGGT8M8NTLb
xHPGAtxEsg/vDg1sLHZ6rarcGEYccZHI5oC1tiuJ45oyk6bR/cnXH/j3SplgtBEsfkmIAcFeRVZ9
HaH/AI9Llox2jb5l/Kq3+mWpO6A89Wgbr7kHj8jQF+6NCW0YxKIWDqOTg81T8tg4QqQScc1H9suT
dwlDEYeRIpzHKx7YDcfrWkl0jsAXUt2WUbW/DPWjfYaaexUuAok2qOFGKrzSeVA791UkfWrdxCyt
uCPjvnmsnU5MRLGP4jz+FAGT5g/iDL9aXCuOxFOxmmGNevQ+ooA1NCtwdQ8zB2xLuOe30rbtNn2W
W7jjAku235xgkfw5/DFUYLVrXSvLQnz7phGSeo7E/hVnWbj7LahIjtIAVcdqfQBk0DqmJk+UeorM
u76F4jEiB8jAbGAKWHW7uNdshEydw/X86S2s4pgZirBCx2qen/16QGc6usBl2nZ03ds01BtQDv3r
pZLVbmxEO4IM5HGayZdLuYxlAJV9UOT+XWgClShselDAq21gQw7EYNMLBTg5/KgDuJYUmQxSAbG6
j1qKKzg02BjDGzE9TnJqYYj+Z+X9Kid2c5P5UARhVWQyO+9s8Cop7+K1XdIBlug6mluCywsY13OB
wPWuYlkkllZpSS+cHPb2oAvX2pm4JjiJEfc+v/1qZp8EhlE2dqD/AMeqrF5ayr5oyg9O1bi4Kjb0
xxigCXyvtUbq5+XIPuD2IqjqWtnT/wDQFhE+qn/VoDxt/vsew+tPvdRaAG0slU3WMyOfuxD1Pv6D
rWOtiZJDFAWe6kbdJOepPqf14/8Ar1vGMYLmqfJf10NHy0o89T7hlpYStcvM8hnvZeJZyOAP7q+g
/wA+meis7JbdMAZY9SaisFjhRomwJo+HH9RV2ZioCr90jqO9ZTlKbvL+v+AYylKq7y27f5iSShRt
T8TUNFOVRjc3A7e9SUCrkbmOFHekkcMpBAEeOQemPemyzKq7nYKg9egrHurtrhyqkiLsPWgAnues
MGFhHHHer+naSDCb29Gy3Qbtp6sKuaPoP3bm7X3WM/1rfngjnt2hdcowwRQBlxa9YOfLV2RRwpZS
B/8AWq7dXcMVk05lTygMl9wxj61i3HhdsE284/3XFWp7cRWENiQDkCM+mT1NNAPsgk1tGxlH78+a
GB+8p+7+mKy9Yu4JLj7M7SuI2+92HH61ozxgPwpSJFCptHAAFc7LCsk8hglR9zH5c7T+Gev4UMCa
HTo5ZkxcK0OfmIPNaM2rRaeIrazCyogIbP8An61SsLWWHzHlRkJ+UKy4P1qneW32aTcD8jkke1ID
pkvFuESRCORlgDnFVmmc7huOD2qhoIeWWaLI8rGSe4J6fyrWksXVsIQ/GaAI4VikBjkjzwTu7imo
ImHl5ZM8AY3L+VO2tDE5ZSGPyjNQqSvI60mkxOKe5YVJof8AUsceiHcAP904/SmtLFP8s8Cscc7O
G/FTg/kKaLpY1Lzn92vU45qcPa3cf7uaOUf3G6/lRqK0lsyi2kWlyf8ARpdr9dh4Yf8AATVUaLcR
3KB1DJu5/wAK1ZbM47464cbh/iKVXuYE37m2Lyc/Ov8AiPyouuoc1tyRYi+pgEfu7ZMA/wC0R/hW
HrVx510EB4UZ/P8A+tWvY3TNbM00LZlJdmj+bGegwOePpUU2lW18zPDKrP8AxbW5H1FU/Iq99jmx
k4UV0IjEKRwD+BQD9e/65qtHpElrdLI5yic8jkmrcfLljzjmkA5nKOAP4Rio8nORxQeTmhVZzhQS
fQUAD7ZV2yosg/2hRDa2saf8e5bJzyc0+OF5HK4wQMnNaVt5cECq+Nx5NAERGBzSYG33NFFAGJrN
xIs/2YEqmAW96oIjXWVVS0qjPA+8BRRQA6zsnu3/ALsa/eb+lW7nUBGpsrEhRGcSzdRH7e7e1FFb
0Yp3k+hvRirOT6EEFuzbYIUOT82DyTn+Nj71qwwwWaGMODM33jnnNFFc6k5tykcEJOrUlOerTaKd
7ZvcRgwytDMpBDr1Izyv0NWbaVZwAx2EHDA/wmiiq6HSWPK2KZG+ZQcDHemqrzyBVGWPQCiikIZq
OiXsqgxMrqBnZnBzU+jaGbdhcXSjzP4UPO33oooA36xde1OWx8lIGCyMcnIzxRRQA3StblvZWiki
HyjJdamJ82+Lf88xjP8AtHt/X8aKKaAvGMGHZjgiuMuNNvbeRgbaQqGyGUbhj60UUgOugXz7KIzx
KGKg7fSoJ9OiKkq2PY0UUASx20dvAqooUDrgdaXzEAz+tFFAFO83TuCnzADnFVdjAhSpBPTNFFAF
HU7iAQNbxuWk3gNxgAD+fNZXTBBoooA2tEvLyW8WEys8QBLbucCtC6nCGK1EcjfbJDHlVJCqOpJ7
cUUU1uNFyZBI5VY1JTv0xVKe3YjJXcy/d8wZ5+vWiip5Ve6I5Fe5DDqE0ZKuJVI6iT94PruGSB9a
cl4091n7KDalP+PiBg4LZ5GB2+tFFaQ96HMy6fvQ5n3JhbJPl7eZJVB5ANTwJFbyFmDITwN1FFS1
ZiLEzqyhUIJY4rHu9Kl1S6eaO7khRP3ahehx3/X9KKKcXbVDR//Z</Data>
</Thumbnail>
</Binary>
</metadata>
