{"id":2670772,"date":"2025-02-05T04:34:37","date_gmt":"2025-02-05T12:34:37","guid":{"rendered":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=2670772"},"modified":"2025-02-10T11:19:00","modified_gmt":"2025-02-10T19:19:00","slug":"2024-recap-utility-network-enhancements-in-arcgis-maps-sdks-for-native-apps","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/developers\/2024-recap-utility-network-enhancements-in-arcgis-maps-sdks-for-native-apps","title":{"rendered":"2024 Recap: Utility Network Enhancements in ArcGIS Maps SDKs for Native Apps"},"author":366462,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"_searchwp_excluded":""},"categories":[738191,25741,22941],"tags":[],"industry":[],"product":[769142,768902,769152,768912,765412,515312,36601],"class_list":["post-2670772","blog","type-blog","status-publish","format-standard","hentry","category-developers","category-electric-gas","category-mapping","product-sdk-net","product-sdk-kotlin","product-sdk-qt","product-sdk-swift","product-maps-sdk","product-utility-network","product-developers"],"acf":{"authors":[{"ID":366462,"user_firstname":"Andy","user_lastname":"Weis","nickname":"Andy Weis","user_nicename":"aweis","display_name":"Andy Weis","user_email":"aweis@esri.com","user_url":"","user_registered":"2024-12-18 19:22:37","user_description":"Andy Weis is a product engineer for the ArcGIS Maps SDK Team with a passion for conservation and software QA via workflow testing and data management. He also enjoys playing the guitar, card games, and various DIY projects in his spare time.","user_avatar":"<img data-del=\"avatar\" src='https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/c48f810f-8292-49e1-8937-1e2d12aac857-213x200.jpg' class='avatar pp-user-avatar avatar-96 photo ' height='96' width='96'\/>"}],"short_description":"Summary of updates made to utility networks in the ArcGIS Maps SDKs for Native Apps in 2024 and examples of workflows with new API changes.","flexible_content":[{"acf_fc_layout":"content","content":"<p><span data-contrast=\"auto\">The latter half of 2024 has been an incredibly exciting time for the Utility Network community! Versions <\/span><a href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/announcements\/whats-new-in-arcgis-maps-sdks-for-native-apps-200-5\/\"><span data-contrast=\"none\">200.5<\/span><\/a><span data-contrast=\"auto\"> and <\/span><a href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/announcements\/whats-new-in-arcgis-maps-sdks-for-native-apps-200-6\/\"><span data-contrast=\"none\">200.6<\/span><\/a><span data-contrast=\"auto\"> of the ArcGIS Maps SDKs for Native apps saw the completion of many crucial capabilities for associations, network topology, and traceability.<\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:720,&quot;335559738&quot;:0,&quot;335559739&quot;:200,&quot;335559740&quot;:276}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">This blog will cover the changes that wrap up this body of work for Utility Networks in addition to metadata enhancements and support for Utility Network Schema version 7.<\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:720,&quot;335559738&quot;:0,&quot;335559739&quot;:200,&quot;335559740&quot;:276}\">\u00a0<\/span><\/p>\n<p><i><span data-contrast=\"auto\">Code examples for this blog are written in C# using ArcGIS Maps SDK for .NET but all concepts apply to the Qt, Swift, and Kotlin Maps SDKs.<\/span><\/i><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:720,&quot;335559738&quot;:0,&quot;335559739&quot;:200,&quot;335559740&quot;:276}\">\u00a0<\/span><\/p>\n"},{"acf_fc_layout":"content","content":"<h2><b><span data-contrast=\"auto\">Editing Enhancements<\/span><\/b><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:200,&quot;335559740&quot;:276}\">\u00a0<\/span><\/h2>\n<h3><span data-contrast=\"auto\">Association Editing<\/span><\/h3>\n"},{"acf_fc_layout":"image","image":{"ID":2672972,"id":2672972,"title":"editAssociations","filename":"editAssociations-e1738804532649.png","filesize":87150,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/02\/editAssociations-e1738804532649.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/developers\/2024-recap-utility-network-enhancements-in-arcgis-maps-sdks-for-native-apps\/editassociations","alt":"Association editing","author":"366462","description":"Editing connectivity and containment associations","caption":"Editing connectivity and containment associations","name":"editassociations","status":"inherit","uploaded_to":2670772,"date":"2025-02-05 22:44:12","modified":"2025-02-05 22:45:59","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":187,"height":170,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/02\/editAssociations-e1738804532649.png","thumbnail-width":187,"thumbnail-height":170,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/02\/editAssociations-e1738804532649.png","medium-width":187,"medium-height":170,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/02\/editAssociations-e1738804532649.png","medium_large-width":187,"medium_large-height":170,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/02\/editAssociations-e1738804532649.png","large-width":187,"large-height":170,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/02\/editAssociations-e1738804532649.png","1536x1536-width":187,"1536x1536-height":170,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/02\/editAssociations-e1738804532649.png","2048x2048-width":187,"2048x2048-height":170,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/02\/editAssociations-e1738804532649.png","card_image-width":187,"card_image-height":170,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/02\/editAssociations-e1738804532649.png","wide_image-width":187,"wide_image-height":170}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p><a href=\"https:\/\/developers.arcgis.com\/net\/utility-network\/get-associated-utility-elements\/\"><span data-contrast=\"none\">Associations<\/span><\/a><span data-contrast=\"auto\"> allow us to create digital representations of real-world relationships between two features. The following types of associations are supported by ArcGIS Maps SDKs for Native Apps:<\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:1080,&quot;335559738&quot;:0,&quot;335559739&quot;:200,&quot;335559740&quot;:276}\">\u00a0<\/span><\/p>\n<ul>\n<li><b><span data-contrast=\"auto\">Connectivity <\/span><\/b><span data-contrast=\"auto\">associations allow connectivity to be established between two features that are not geometrically coincident.<\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:1800,&quot;335559738&quot;:0,&quot;335559739&quot;:200,&quot;335559740&quot;:276}\">\u00a0<\/span><\/li>\n<li><b><span data-contrast=\"auto\">Containment <\/span><\/b><span data-contrast=\"auto\">associations tell us that one of the features is contained inside the other.<\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:1800,&quot;335559738&quot;:0,&quot;335559739&quot;:200,&quot;335559740&quot;:276}\">\u00a0<\/span><\/li>\n<li><b><span data-contrast=\"auto\">Structural attachment<\/span><\/b><span data-contrast=\"auto\"> associations are dedicated to connections between network features and structure network features that are physically attached, such as an electric device that is connected to a pole.<\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:1800,&quot;335559738&quot;:0,&quot;335559739&quot;:200,&quot;335559740&quot;:276}\">\u00a0<\/span><\/li>\n<\/ul>\n<p><span class=\"TextRun SCXW111354892 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW111354892 BCX8\">ArcGIS Maps SDK <\/span><\/span><a class=\"Hyperlink SCXW111354892 BCX8\" href=\"https:\/\/developers.arcgis.com\/net\/release-notes\/prior-releases\/release-notes-for-200-5\/#edit-associations\" target=\"_blank\" rel=\"noreferrer noopener\"><span class=\"FieldRange SCXW111354892 BCX8\"><span class=\"TextRun Underlined SCXW111354892 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW111354892 BCX8\" data-ccp-charstyle=\"Hyperlink\">version 200.5<\/span><\/span><\/span><\/a><span class=\"TextRun SCXW111354892 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW111354892 BCX8\"> introduced<\/span><span class=\"NormalTextRun SCXW111354892 BCX8\"> the following<\/span><span class=\"NormalTextRun SCXW111354892 BCX8\"> new routines to <\/span><span class=\"NormalTextRun SCXW111354892 BCX8\">association editing<\/span><span class=\"NormalTextRun SCXW111354892 BCX8\">:<\/span><\/span><span class=\"EOP SCXW111354892 BCX8\" data-ccp-props=\"{&quot;335559731&quot;:720}\">\u00a0<\/span><\/p>\n"},{"acf_fc_layout":"content","content":"<table style=\"width: 100%;font-size: 105%\">\n<thead>\n<tr>\n<th>New API<\/th>\n<th>Use when&#8230;<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><a href=\"https:\/\/developers.arcgis.com\/net\/api-reference\/api\/netwin\/Esri.ArcGISRuntime\/Esri.ArcGISRuntime.UtilityNetworks.UtilityNetwork.AddAssociationAsync.html\">AddAssociationAsync(UtilityAssociation)<\/a><\/td>\n<td><span data-contrast=\"auto\">Creating a new association or updating an existing one<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/td>\n<\/tr>\n<tr>\n<td><a href=\"https:\/\/developers.arcgis.com\/net\/api-reference\/api\/netwin\/Esri.ArcGISRuntime\/Esri.ArcGISRuntime.UtilityNetworks.UtilityNetwork.CanAddAssociationAsync.html\">CanAddAssociationAsync(UtilityAssociation)<\/a><\/td>\n<td><span data-contrast=\"auto\">Verifying that a utility network can accept new associations prior to adding or updating one<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/td>\n<\/tr>\n<tr>\n<td><a href=\"https:\/\/developers.arcgis.com\/net\/api-reference\/api\/netwin\/Esri.ArcGISRuntime\/Esri.ArcGISRuntime.UtilityNetworks.UtilityNetwork.DeleteAssociationAsync.html\"><span data-contrast=\"none\">DeleteAssociationAsync(UtilityAssociation)<\/span><\/a><span data-contrast=\"auto\">\/<\/span><\/p>\n<p><a href=\"https:\/\/developers.arcgis.com\/net\/api-reference\/api\/netwin\/Esri.ArcGISRuntime\/Esri.ArcGISRuntime.UtilityNetworks.UtilityNetwork.DeleteAssociationsAsync.html\"><span data-contrast=\"none\">DeleteAssociationsAsync(IEnumerable&lt;UtilityAssociation&gt;)<\/span><\/a><span data-ccp-props=\"{}\">\u00a0<\/span><\/td>\n<td data-celllook=\"0\"><span data-contrast=\"auto\">Deleting one or more associations from a utility network<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/td>\n<\/tr>\n<tr>\n<td><a href=\"https:\/\/developers.arcgis.com\/net\/api-reference\/api\/netwin\/Esri.ArcGISRuntime\/Esri.ArcGISRuntime.UtilityNetworks.UtilityNetwork.CanDeleteAssociations.html\"><span data-contrast=\"none\">CanDeleteAssociations<\/span><\/a><span data-ccp-props=\"{}\">\u00a0<\/span><\/td>\n<td data-celllook=\"0\"><span data-contrast=\"auto\">Verifying that associations can be deleted from the utility network<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/td>\n<\/tr>\n<tr>\n<td><a href=\"https:\/\/developers.arcgis.com\/net\/api-reference\/api\/netwin\/Esri.ArcGISRuntime\/Esri.ArcGISRuntime.UtilityNetworks.UtilityAssociation.-ctor.html#Esri_ArcGISRuntime_UtilityNetworks_UtilityAssociation__ctor_Esri_ArcGISRuntime_UtilityNetworks_UtilityAssociationType_Esri_ArcGISRuntime_UtilityNetworks_UtilityElement_Esri_ArcGISRuntime_UtilityNetworks_UtilityElement_\"><span data-contrast=\"none\">UtilityAssociation(UtilityAssociationType, UtilityElement, UtilityElement)<\/span><\/a><span data-ccp-props=\"{}\">\u00a0<\/span><\/td>\n<td data-celllook=\"0\"><span data-contrast=\"auto\">Creating a new association object<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/td>\n<\/tr>\n<tr>\n<td><a href=\"https:\/\/developers.arcgis.com\/net\/api-reference\/api\/netwin\/Esri.ArcGISRuntime\/Esri.ArcGISRuntime.UtilityNetworks.UtilityAssociation.-ctor.html#Esri_ArcGISRuntime_UtilityNetworks_UtilityAssociation__ctor_Esri_ArcGISRuntime_UtilityNetworks_UtilityAssociationType_Esri_ArcGISRuntime_UtilityNetworks_UtilityElement_Esri_ArcGISRuntime_UtilityNetworks_UtilityElement_System_Boolean_\"><span data-contrast=\"none\">UtilityAssociation(UtilityAssociationType, UtilityElement, UtilityElement, Boolean)<\/span><\/a><span data-ccp-props=\"{}\">\u00a0<\/span><\/td>\n<td data-celllook=\"0\"><span data-contrast=\"auto\">Creating a new association object with containment visibility specified<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/td>\n<\/tr>\n<tr>\n<td><a href=\"https:\/\/developers.arcgis.com\/net\/api-reference\/api\/netwin\/Esri.ArcGISRuntime\/Esri.ArcGISRuntime.UtilityNetworks.UtilityAssociation.-ctor.html#Esri_ArcGISRuntime_UtilityNetworks_UtilityAssociation__ctor_Esri_ArcGISRuntime_UtilityNetworks_UtilityAssociationType_Esri_ArcGISRuntime_UtilityNetworks_UtilityElement_Esri_ArcGISRuntime_UtilityNetworks_UtilityElement_System_Double_\"><span data-contrast=\"none\">UtilityAssociation(UtilityAssociationType, UtilityElement, UtilityElement, Double)<\/span><\/a><span data-ccp-props=\"{}\">\u00a0<\/span><\/td>\n<td data-celllook=\"0\"><span data-contrast=\"auto\">Creating a new association specifying the relative location of a junction along the non-spatial edge<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n"},{"acf_fc_layout":"content","content":"<p><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:0,&quot;335559731&quot;:720,&quot;335559737&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:279}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">As an example: a high voltage transformer needs to connect to the <em>low-side<\/em> terminal of a medium voltage connector. Since the association is currently set to the <em>high-side <\/em>terminal, the user will need to update the association accordingly. This can be done by creating a copy of the existing association with updates applied and replacing the old one with the new one. Below is an example of how this can be done:<\/span><\/p>\n"},{"acf_fc_layout":"content","content":"<div>\n<pre style=\"background: #222222;overflow: hidden;width: 100%;border: solid purple;border-width: .1em .1em .1em .8em;padding: .2em .6em;margin: 0;line-height: 125%\"><span style=\"color: #ffffff\"><span style=\"color: #53a342\">\/\/ Create a new association with an updated terminal value.<\/span>\r\n<span style=\"color: #9bd7f3\">associationToUpdate<\/span>.FromElement.Terminal =\r\n    <span style=\"color: #9bd7f3\">associationToUpdate<\/span>.FromElement.AssetType?.TerminalConfiguration?.\r\n    Terminals.<span style=\"color: #e4deaa\">FirstOrDefault<\/span>(<span style=\"color: #9bd7f3\">t<\/span> =&gt; <span style=\"color: #9bd7f3\">t<\/span>.Name == <span style=\"color: #cfa388\">\"XFR:Low\"<\/span>);\r\n\r\n<span style=\"color: #5d95ae\">var<\/span> <span style=\"color: #9bd7f3\">updatedAssociation<\/span> = <span style=\"color: #5d95ae\">new <\/span><span style=\"color: #5bb899\">UtilityAssociation<\/span>(<span style=\"color: #cbe09d\">UtilityAssociationType<\/span>.Connectivity,\r\n<span style=\"color: #9bd7f3;padding-left: 210px\">associationToUpdate<\/span>.FromElement,\r\n<span style=\"color: #9bd7f3;padding-left: 210px\">associationToUpdate<\/span>.ToElement);\r\n\r\n<span style=\"color: #53a342\">\/\/ Verify that the new association can be added, and that an association can be deleted.<\/span>\r\n<span style=\"color: #5d95ae\">var <\/span><span style=\"color: #9bd7f3\">canAdd<\/span> = <span style=\"color: #5d95ae\">await <\/span>utilityNetwork.<span style=\"color: #e4deaa\">CanAddAssociationAsync<\/span>(<span style=\"color: #9bd7f3\">updatedAssociation<\/span>);\r\n<span style=\"color: #dca1d9\">if<\/span> (<span style=\"color: #9bd7f3\">canAdd<\/span> &amp;&amp; utilityNetwork.<span style=\"color: #e4deaa\">CanDeleteAssociations<\/span>())\r\n{\r\n    <span style=\"color: #53a342\">\/\/ Delete the old association; add the new one.<\/span> \r\n    <span style=\"color: #5d95ae\">await <\/span>utilityNetwork.<span style=\"color: #e4deaa\">DeleteAssociationAsync<\/span>(<span style=\"color: #9bd7f3\">associationToUpdate<\/span>);\r\n    <span style=\"color: #5d95ae\">await <\/span>utilityNetwork.<span style=\"color: #e4deaa\">AddAssociationAsync<\/span>(<span style=\"color: #9bd7f3\">updatedAssociation<\/span>);\r\n}<\/span>\r\n<\/pre>\n<\/div>\n"},{"acf_fc_layout":"content","content":"<h3><span class=\"TextRun SCXW198854804 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW198854804 BCX8\" data-ccp-parastyle=\"heading 2\">Validate Network Topology<\/span><\/span><span class=\"EOP SCXW198854804 BCX8\" data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:720,&quot;335559738&quot;:0,&quot;335559739&quot;:200,&quot;335559740&quot;:276}\">\u00a0<\/span><\/h3>\n<p><span data-contrast=\"auto\">Editing utility network features creates dirty area features. These features indicate areas of the network where feature edits are out of sync with the network index. Version 200.3 of the Native Maps SDKs provides access to <\/span><a href=\"https:\/\/developers.arcgis.com\/net\/release-notes\/prior-releases\/release-notes-for-200-3\/#validate-utility-network-topology\"><span data-contrast=\"auto\">Validate Network Topolog<\/span><span data-contrast=\"none\">y<\/span><\/a><span data-contrast=\"auto\">. This process updates the network topology with any valid edits that have taken place. Error features are created if invalid connectivity is detected. This works the same as Validate Network Topology on other platforms, such as ArcGIS Pro. This reconciles discrepancies between the two tables, allowing for trace. If the edits comply with the relevant network topology rules, the edits are applied to the topology table. Otherwise, the dirty area representing that change becomes an error feature that prevents syncing and tracing so that these operations won\u2019t unintentionally produce inaccurate results.<\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:1080,&quot;335559738&quot;:0,&quot;335559739&quot;:200,&quot;335559740&quot;:276}\"> Check out our <a href=\"https:\/\/developers.arcgis.com\/net\/wpf\/sample-code\/validate-utility-network-topology\/\">samples<\/a> to see this process in action!<\/span><\/p>\n<p><span data-contrast=\"auto\">If your utility network has schema version 4 or later, you can verify NetworkState is supported, then identify any existing dirty areas or errors in the utility network using <\/span><a href=\"https:\/\/developers.arcgis.com\/net\/api-reference\/api\/netwin\/Esri.ArcGISRuntime\/Esri.ArcGISRuntime.UtilityNetworks.UtilityNetwork.GetStateAsync.html\"><span data-contrast=\"none\">UtilityNetwork.GetStateAsync()<\/span><\/a><span data-contrast=\"auto\">. If errors are present, they must be resolved. If no errors are present, but there are dirty areas, you can ValidateNetworkTopology() to resolve them.<\/span><\/p>\n"},{"acf_fc_layout":"image","image":{"ID":2673362,"id":2673362,"title":"Validate Network Topology","filename":"croppedValidateTopology.png","filesize":123095,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/02\/croppedValidateTopology.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/developers\/2024-recap-utility-network-enhancements-in-arcgis-maps-sdks-for-native-apps\/croppedvalidatetopology","alt":"Validate Network Topology","author":"366462","description":"Validate Network Topology","caption":"Validate Network Topology","name":"croppedvalidatetopology","status":"inherit","uploaded_to":2670772,"date":"2025-02-06 01:04:05","modified":"2025-02-06 01:04:33","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":921,"height":634,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/02\/croppedValidateTopology-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/02\/croppedValidateTopology.png","medium-width":379,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/02\/croppedValidateTopology.png","medium_large-width":768,"medium_large-height":529,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/02\/croppedValidateTopology.png","large-width":921,"large-height":634,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/02\/croppedValidateTopology.png","1536x1536-width":921,"1536x1536-height":634,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/02\/croppedValidateTopology.png","2048x2048-width":921,"2048x2048-height":634,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/02\/croppedValidateTopology-675x465.png","card_image-width":675,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/02\/croppedValidateTopology.png","wide_image-width":921,"wide_image-height":634}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<h3><span data-contrast=\"auto\">New metadata<\/span><\/h3>\n<p><span data-contrast=\"auto\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><span data-contrast=\"auto\">Version 200.6 of the Native Maps SDKs adds two properties to the AssetType class:<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">A <\/span><a href=\"https:\/\/developers.arcgis.com\/net\/api-reference\/api\/netwin\/Esri.ArcGISRuntime\/Esri.ArcGISRuntime.UtilityNetworks.UtilityConnectivityPolicy.html\"><b><span data-contrast=\"none\">Linear Connectivity Policy<\/span><\/b><\/a><span data-contrast=\"auto\">, defined as a property of AssetType, specifies the connectivity policy for edges in the network. There are three options available:<\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:1440,&quot;335559738&quot;:0,&quot;335559739&quot;:200,&quot;335559740&quot;:276}\">\u00a0<\/span><\/p>\n<ul>\n<li><b><span data-contrast=\"auto\">AnyVertex<\/span><\/b><span data-contrast=\"auto\">: Connectivity can be established anywhere along the edge<\/span><\/li>\n<li><b><span data-contrast=\"auto\">EndVertex<\/span><\/b><span data-contrast=\"auto\">: Connectivity can only be established at the first or last vertex of the edge<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li>\n<li><b><span data-contrast=\"auto\">None<\/span><\/b><span data-contrast=\"auto\">: This value is returned if the AssetType represents a junction, indicating, \u201cnot applicable\u201d.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li>\n<\/ul>\n<p><span data-contrast=\"auto\">When a container feature is split, the AssetType\u2019s <\/span><a href=\"https:\/\/developers.arcgis.com\/net\/api-reference\/api\/netwin\/Esri.ArcGISRuntime\/Esri.ArcGISRuntime.UtilityNetworks.UtilityContainerSplitPolicy.html\"><b><span data-contrast=\"none\">Container Split Policy<\/span><\/b><\/a><span data-contrast=\"auto\"> specifies whether the contents of that container are split. The options are as follows:<\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:1440,&quot;335559738&quot;:0,&quot;335559739&quot;:200,&quot;335559740&quot;:276}\">\u00a0<\/span><\/p>\n<ul>\n<li><b><span data-contrast=\"auto\">SplitContent<\/span><\/b><span data-contrast=\"auto\">: Content features are split at the same location, and each part is associated with the appropriated container.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li>\n<li><b><span data-contrast=\"auto\">DoNotSplitContent<\/span><\/b><span data-contrast=\"auto\">: Content features are not split. The content is associated with both of the resulting containers.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li>\n<li><b><span data-contrast=\"auto\">None<\/span><\/b><span data-contrast=\"auto\">: This value is returned on asset types that are not edge containers.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li>\n<\/ul>\n<p><span data-contrast=\"auto\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Please note that, while ArcGIS Maps SDK do <em>not<\/em> currently support splitting, the metadata given here can be used to create a custom split tool that behaves correctly.<\/span><span data-ccp-props=\"{&quot;335559685&quot;:1440}\">\u00a0<\/span><\/p>\n<h2><\/h2>\n<h2><b><span data-contrast=\"auto\">Tracing Enhancements<\/span><\/b><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:720,&quot;335559738&quot;:0,&quot;335559739&quot;:200,&quot;335559740&quot;:276}\">\u00a0<\/span><\/h2>\n<h3><span data-contrast=\"auto\">ValidateConsistency trace option<\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:1080,&quot;335559738&quot;:0,&quot;335559739&quot;:200,&quot;335559740&quot;:276}\">\u00a0<\/span><\/h3>\n<p><span data-contrast=\"auto\">Validate Consistency is a trace configuration option that adds a check for dirty areas to a trace operation. If Validate Consistency is set to <\/span><b><span data-contrast=\"auto\">true<\/span><\/b><span data-contrast=\"auto\"> and the trace encounters a dirty area, the trace will fail. Most traces will set this value to ensure correct results.<\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:1440,&quot;335559738&quot;:0,&quot;335559739&quot;:200,&quot;335559740&quot;:276}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Validate Consistency is explained in more detail in <\/span><a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/3.3\/help\/data\/utility-network\/configure-a-trace.htm)\"><span data-contrast=\"none\">ArcGIS Pro documentation.<\/span><\/a><\/p>\n"},{"acf_fc_layout":"content","content":"<div>\n<pre style=\"background: #222222;overflow: hidden;width: auto;border: solid purple;border-width: .1em .1em .1em .8em;padding: .2em .6em;margin: 0;line-height: 125%\"><span style=\"color: #ffffff\"><span style=\"color: #53a342\">\/\/ Create a new UtilityTraceParameters object, then set ValidateConsistency on its TraceConfiguration property.<\/span>\r\n<span style=\"color: #5d95ae\">var<\/span> <span style=\"color: #9bd7f3\">traceParameters<\/span> = <span style=\"color: #5d95ae\">new <\/span><span style=\"color: #5bb899\">UtilityTraceParameters<\/span>(<span style=\"color: #cbe09d\">UtilityTraceType<\/span>.Downstream,\r\n<span style=\"color: #5d95ae;padding: 252px\">new<span style=\"color: #ffffff\">[]{ startingLocation });\r\n<\/span><\/span><span style=\"color: #9bd7f3\">traceParameters<\/span>.TraceConfiguration = <span style=\"color: #5d95ae\">new<\/span> <span style=\"color: #5bb899\">UtilityTraceConfiguration<span style=\"color: #ffffff\">()\r\n{\r\n    ValidateConsistency = <span style=\"color: #5d95ae\">true<\/span>\r\n}<\/span><\/span>;<\/span>\r\n<\/pre>\n<\/div>\n"},{"acf_fc_layout":"content","content":"<h4><\/h4>\n<h3><span data-contrast=\"auto\">Flow direction-based trace<\/span><\/h3>\n<p><span data-contrast=\"auto\">A typical subnetwork trace will traverse outward from a given starting point until one or more subnetwork controllers are found. This method is an upstream trace. Conversely, a downstream trace will traverse the network from the starting point away from subnetwork controllers.<\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:1080,&quot;335559738&quot;:0,&quot;335559739&quot;:200,&quot;335559740&quot;:276}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Some utilities, particularly in the gas and water markets, prefer to maintain flow without the extra costs of maintaining subnetworks. They do this by creating a flow-based network. Starting in 200.7, the Native Maps SDKs will support tracing against these data models.<\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:1080,&quot;335559738&quot;:0,&quot;335559739&quot;:200,&quot;335559740&quot;:276}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">In a flow direction-based network, each linear feature contains a field called \u201cFLOWDIRECTION<\/span><b><span data-contrast=\"auto\">\u201d <\/span><\/b><span data-contrast=\"auto\">with one of three values, each of which represents the intended flow direction:<\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:1080,&quot;335559738&quot;:0,&quot;335559739&quot;:200,&quot;335559740&quot;:276}\">\u00a0<\/span><\/p>\n<ul>\n<li><span data-contrast=\"auto\">\u201cWith digitized\u201d, means resources flow from the From point on the edge to the To point on the edge \u2013 i.e., the order that the line was originally drawn.<\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:2700,&quot;335559738&quot;:0,&quot;335559739&quot;:200,&quot;335559740&quot;:276,&quot;335559991&quot;:360}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"auto\">\u201cAgainst digitized,\u201d is the opposite. This option represents a flow from the To point to the From point.<\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:2700,&quot;335559738&quot;:0,&quot;335559739&quot;:200,&quot;335559740&quot;:276,&quot;335559991&quot;:360}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"auto\">\u201cindeterminate\u201d means resources can flow in either direction.<\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:2700,&quot;335559738&quot;:0,&quot;335559739&quot;:200,&quot;335559740&quot;:276,&quot;335559991&quot;:360}\">\u00a0<\/span><\/li>\n<\/ul>\n<p><span data-contrast=\"auto\">Flow direction-based tracing can be enabled as a property of a trace configuration. Set \u201cUseDigitizedDirection\u201d to true and the trace will follow the direction given by the value of the \u201cFLOWDIRECTION\u201d field.<\/span><\/p>\n"},{"acf_fc_layout":"content","content":"<div>\n<pre style=\"background: #222222;overflow: hidden;width: auto;border: solid purple;border-width: .1em .1em .1em .8em;padding: .2em .6em;margin: 0;line-height: 125%\"><span style=\"color: #ffffff\"><span style=\"color: #53a342\">\/\/ Create a new UtilityTraceParameters object, then set UseDigitizedDirection on its TraceConfiguration property.<\/span>\r\n<span style=\"color: #5d95ae\">var<\/span> <span style=\"color: #9bd7f3\">traceParameters<\/span> = <span style=\"color: #5d95ae\">new <\/span><span style=\"color: #5bb899\">UtilityTraceParameters<\/span>(<span style=\"color: #cbe09d\">UtilityTraceType<\/span>.Downstream, \r\n<span style=\"color: #5d95ae;padding: 252px\">new<span style=\"color: #ffffff\">[]{ startingLocation });\r\n<\/span><\/span><span style=\"color: #9bd7f3\">traceParameters<\/span>.TraceConfiguration = <span style=\"color: #5d95ae\">new<\/span> <span style=\"color: #5bb899\">UtilityTraceConfiguration<span style=\"color: #ffffff\">()\r\n{ \r\n    UseDigitizedDirection = <span style=\"color: #5d95ae\">true\r\n<\/span>}<\/span><\/span>; <\/span>\r\n<\/pre>\n<\/div>\n"},{"acf_fc_layout":"content","content":"<p>&nbsp;<\/p>\n<p><span data-contrast=\"auto\">More information on flow direction-based networks can be found in the \u201c<\/span><a href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/water\/utility-network-digitized-direction\/\"><span data-contrast=\"none\">Introducing Tracing using Digitized Direction in the Utility Network<\/span><\/a><span data-contrast=\"auto\">\u201d <\/span><span data-contrast=\"none\">ArcGIS Blog post.<\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:200,&quot;335559740&quot;:276}\">\u00a0<\/span><\/p>\n<h3><b><span data-contrast=\"auto\">Support for schema version 7<\/span><\/b><\/h3>\n<p><span data-contrast=\"auto\">A <\/span><a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/latest\/help\/data\/utility-network\/utility-network-compatibility.htm\"><span data-contrast=\"none\">Utility Network schema<\/span><\/a><span data-contrast=\"auto\"> provides the template upon which a utility network\u2019s tables are built. Thus, the capabilities available to a particular utility network are initially defined by its schema version.\u00a0<\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:360,&quot;335559738&quot;:0,&quot;335559739&quot;:200,&quot;335559740&quot;:276}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">The Utility Network Management Release <\/span><a href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/announcements\/announcing-the-2024-network-management-release-plan\/\"><span data-contrast=\"auto\">ArcGIS Blog pos<\/span><span data-contrast=\"none\">t<\/span><\/a><span data-contrast=\"auto\"> from May 2024 was closely followed by ArcGIS Maps SDKs for Native Apps version 200.5, which introduced support for <\/span><a href=\"https:\/\/developers.arcgis.com\/net\/release-notes\/prior-releases\/release-notes-for-200-5\/#utility-network-schema-version-7\"><span data-contrast=\"none\">utility network schema version 7<\/span><\/a><span data-contrast=\"auto\">. The highlight of version 7 is the addition of 64-bit object IDs and big integer fields, a change introduced to UNs created in ArcGIS Pro from version 3.3 on.<\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:360,&quot;335559738&quot;:0,&quot;335559739&quot;:200,&quot;335559740&quot;:276}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">A few more updates have been made to the fields and domains of some standard utility network feature classes, with support for new data types added. Details can be found in <\/span><a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/latest\/help\/data\/utility-network\/utility-network-upgrade-history.htm\"><span data-contrast=\"none\">ArcGIS Pro documentation<\/span><\/a>.<span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:360,&quot;335559738&quot;:0,&quot;335559739&quot;:200,&quot;335559740&quot;:276}\">\u00a0<\/span><\/p>\n"},{"acf_fc_layout":"content","content":"<h2><b><span data-contrast=\"auto\">Summary<\/span><\/b><\/h2>\n<p><span data-contrast=\"auto\">With versions 200.5 and 200.6 of the ArcGIS Maps SDKs for Native Apps, we\u2019ve wrapped up work on a number of utility network capabilities and are excited to present them to our users.\u00a0<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Association editing allows us to create digital representations of the relationships between features. The introduction of validate network topology will give users the ability to reconcile edits into the source data\u2019s topology table, allowing for trace in user applications. Furthermore, flow direction-based traces can configure the direction of a trace based on the direction in which line features were digitized. Finally, updates to network metadata and support for utility network schema version 7 provide upgraded capability for developing apps that support bigger, more versatile operations.\u00a0<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">If you\u2019d like to learn more about how to build utility network capabilities into your applications, check out the following Native Maps SDKs samples:<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<ul>\n<li data-leveltext=\"-\" data-font=\"Aptos\" data-listid=\"5\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Aptos&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;-&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\"><a href=\"https:\/\/developers.arcgis.com\/net\/wpf\/sample-code\/display-utility-associations\/\"><span data-contrast=\"none\">Display utility associations (.NET)<\/span><\/a><span data-ccp-props=\"{}\">\u00a0<\/span><\/li>\n<\/ul>\n<ul>\n<li data-leveltext=\"-\" data-font=\"Aptos\" data-listid=\"5\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Aptos&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;-&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\"><a href=\"https:\/\/developers.arcgis.com\/net\/wpf\/sample-code\/display-content-of-utility-network-container\/\"><span data-contrast=\"none\">Display content of a utility network container (.NET)<\/span><\/a><span data-ccp-props=\"{}\">\u00a0<\/span><\/li>\n<\/ul>\n<ul>\n<li data-leveltext=\"-\" data-font=\"Aptos\" data-listid=\"5\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Aptos&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;-&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"3\" data-aria-level=\"1\"><a href=\"https:\/\/developers.arcgis.com\/net\/wpf\/sample-code\/validate-utility-network-topology\/\"><span data-contrast=\"none\">Validate Network Topology (.NET)<\/span><\/a><span data-ccp-props=\"{}\">\u00a0<\/span><\/li>\n<\/ul>\n<ul>\n<li data-leveltext=\"-\" data-font=\"Aptos\" data-listid=\"5\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Aptos&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;-&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"4\" data-aria-level=\"1\"><span data-contrast=\"auto\">Introduction to utility network and samples: <\/span><a href=\"https:\/\/developers.arcgis.com\/qt\/utility-network\/\"><span data-contrast=\"none\">Qt<\/span><\/a><span data-contrast=\"auto\"> | <\/span><a href=\"https:\/\/developers.arcgis.com\/swift\/utility-network\/\"><span data-contrast=\"none\">Swift<\/span><\/a><span data-contrast=\"auto\"> | <\/span><a href=\"https:\/\/developers.arcgis.com\/kotlin\/utility-network\/\"><span data-contrast=\"none\">Kotlin<\/span><\/a><span data-ccp-props=\"{}\">\u00a0<\/span><\/li>\n<\/ul>\n"},{"acf_fc_layout":"content","content":"<p><span class=\"TextRun SCXW239860737 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW239860737 BCX8\">We <\/span><span class=\"NormalTextRun SCXW239860737 BCX8\">can\u2019t<\/span><span class=\"NormalTextRun SCXW239860737 BCX8\"> wait to hear how these tools <\/span><span class=\"NormalTextRun SCXW239860737 BCX8\">benefit<\/span><span class=\"NormalTextRun SCXW239860737 BCX8\"> our users\u2019 ability to develop utility network-based applications!<\/span> <span class=\"NormalTextRun CommentStart CommentHighlightPipeRestRefresh CommentHighlightRest SCXW239860737 BCX8\">We\u2019d<\/span><span class=\"NormalTextRun CommentHighlightRest SCXW239860737 BCX8\"> love to hear your feedback \u2013 join the discussion on the<\/span> <\/span><a class=\"Hyperlink SCXW239860737 BCX8\" href=\"https:\/\/community.esri.com\/t5\/arcgis-maps-sdks-for-native-apps\/ct-p\/arcgis-runtime-sdks\" target=\"_blank\" rel=\"noreferrer noopener\"><span class=\"FieldRange SCXW239860737 BCX8\"><span class=\"TextRun Underlined SCXW239860737 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun CommentHighlightRest SCXW239860737 BCX8\" data-ccp-charstyle=\"Hyperlink\">Esri Community<\/span><\/span><\/span><\/a><span class=\"TextRun SCXW239860737 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun CommentHighlightRest SCXW239860737 BCX8\"> forums and share your thoughts, <\/span><span class=\"NormalTextRun CommentHighlightRest SCXW239860737 BCX8\">ideas<\/span><span class=\"NormalTextRun CommentHighlightRest SCXW239860737 BCX8\"> and questions. Yo<\/span><span class=\"NormalTextRun CommentHighlightRest SCXW239860737 BCX8\">ur feedback helps us improve and shape future releases.<\/span><\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span class=\"TextRun SCXW239860737 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun CommentHighlightRest SCXW239860737 BCX8\">\u00a0<\/span><\/span><\/p>\n"}],"related_articles":[{"ID":2311432,"post_author":"308182","post_date":"2024-05-07 12:00:13","post_date_gmt":"2024-05-07 19:00:13","post_content":"","post_title":"Introducing Tracing Using Digitized Direction in the Utility Network","post_excerpt":"","post_status":"publish","comment_status":"closed","ping_status":"closed","post_password":"","post_name":"utility-network-digitized-direction","to_ping":"","pinged":"","post_modified":"2024-05-08 09:50:11","post_modified_gmt":"2024-05-08 16:50:11","post_content_filtered":"","post_parent":0,"guid":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=2311432","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"},{"ID":1811282,"post_author":"6351","post_date":"2023-01-24 08:32:03","post_date_gmt":"2023-01-24 16:32:03","post_content":"","post_title":"Offline utility networks in ArcGIS Maps SDKs for Native Apps","post_excerpt":"","post_status":"publish","comment_status":"closed","ping_status":"closed","post_password":"","post_name":"offline-utility-networks-in-arcgis-maps-sdks-for-native-apps","to_ping":"","pinged":"","post_modified":"2025-06-05 07:26:05","post_modified_gmt":"2025-06-05 14:26:05","post_content_filtered":"","post_parent":0,"guid":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=1811282","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"},{"ID":2007292,"post_author":"6351","post_date":"2023-07-11 08:00:55","post_date_gmt":"2023-07-11 15:00:55","post_content":"","post_title":"Offline Utility Networks in ArcGIS Maps SDKs for Native Apps: Part 2","post_excerpt":"","post_status":"publish","comment_status":"closed","ping_status":"closed","post_password":"","post_name":"offline-utility-networks-in-arcgis-maps-sdks-for-native-apps-part-2","to_ping":"","pinged":"","post_modified":"2025-06-05 06:38:11","post_modified_gmt":"2025-06-05 13:38:11","post_content_filtered":"","post_parent":0,"guid":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=2007292","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"},{"ID":2011712,"post_author":"6351","post_date":"2023-07-31 08:14:24","post_date_gmt":"2023-07-31 15:14:24","post_content":"","post_title":"Offline Utility Networks in ArcGIS Maps SDKs for Native Apps: Part 3","post_excerpt":"","post_status":"publish","comment_status":"closed","ping_status":"closed","post_password":"","post_name":"offline-utility-networks-in-arcgis-maps-sdks-for-native-apps-part-3","to_ping":"","pinged":"","post_modified":"2025-06-05 06:54:10","post_modified_gmt":"2025-06-05 13:54:10","post_content_filtered":"","post_parent":0,"guid":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=2011712","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"},{"ID":1658592,"post_author":"304562","post_date":"2022-07-19 08:00:28","post_date_gmt":"2022-07-19 15:00:28","post_content":"","post_title":"ArcGIS Utility Network and ArcGIS Field Maps","post_excerpt":"","post_status":"publish","comment_status":"closed","ping_status":"closed","post_password":"","post_name":"utility-network-field-maps","to_ping":"","pinged":"","post_modified":"2022-07-19 08:45:43","post_modified_gmt":"2022-07-19 15:45:43","post_content_filtered":"","post_parent":0,"guid":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=1658592","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"},{"ID":1516332,"post_author":"9772","post_date":"2022-03-25 07:00:31","post_date_gmt":"2022-03-25 14:00:31","post_content":"","post_title":"Configure an Application to Trace a Utility Network","post_excerpt":"","post_status":"publish","comment_status":"open","ping_status":"closed","post_password":"","post_name":"configure-apps-to-trace-a-utility-network","to_ping":"","pinged":"","post_modified":"2025-03-06 10:26:15","post_modified_gmt":"2025-03-06 18:26:15","post_content_filtered":"","post_parent":0,"guid":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=1516332","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"8","filter":"raw"}],"show_article_image":true,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/02\/blogPost_validate.jpg","wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/02\/blogPost_wideValidate.jpg"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>A Comprehensive Look at ArcGIS Maps SDKs&#039; Utility Network Updates in 2024<\/title>\n<meta name=\"description\" content=\"Unlock the power of utility networks with the latest updates in the ArcGIS Maps SDKs for Native Apps in 2024. Explore new API changes and learn from real-world workflow examples.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/developers\/2024-recap-utility-network-enhancements-in-arcgis-maps-sdks-for-native-apps\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"2024 Recap: Utility Network Enhancements in ArcGIS Maps SDKs for Native Apps\" \/>\n<meta property=\"og:description\" content=\"Unlock the power of utility networks with the latest updates in the ArcGIS Maps SDKs for Native Apps in 2024. Explore new API changes and learn from real-world workflow examples.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/developers\/2024-recap-utility-network-enhancements-in-arcgis-maps-sdks-for-native-apps\" \/>\n<meta property=\"og:site_name\" content=\"ArcGIS Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/esrigis\/\" \/>\n<meta property=\"article:modified_time\" content=\"2025-02-10T19:19:00+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@ESRI\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/developers\/2024-recap-utility-network-enhancements-in-arcgis-maps-sdks-for-native-apps#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/developers\/2024-recap-utility-network-enhancements-in-arcgis-maps-sdks-for-native-apps\"},\"author\":{\"name\":\"Andy Weis\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/2c8ecd78cc28a8663d6d3f253ecf9f3a\"},\"headline\":\"2024 Recap: Utility Network Enhancements in ArcGIS Maps SDKs for Native Apps\",\"datePublished\":\"2025-02-05T12:34:37+00:00\",\"dateModified\":\"2025-02-10T19:19:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/developers\/2024-recap-utility-network-enhancements-in-arcgis-maps-sdks-for-native-apps\"},\"wordCount\":11,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"articleSection\":[\"Developers\",\"Electric &amp; Gas Utilities\",\"Mapping\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/developers\/2024-recap-utility-network-enhancements-in-arcgis-maps-sdks-for-native-apps\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/developers\/2024-recap-utility-network-enhancements-in-arcgis-maps-sdks-for-native-apps\",\"name\":\"A Comprehensive Look at ArcGIS Maps SDKs' Utility Network Updates in 2024\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2025-02-05T12:34:37+00:00\",\"dateModified\":\"2025-02-10T19:19:00+00:00\",\"description\":\"Unlock the power of utility networks with the latest updates in the ArcGIS Maps SDKs for Native Apps in 2024. Explore new API changes and learn from real-world workflow examples.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/developers\/2024-recap-utility-network-enhancements-in-arcgis-maps-sdks-for-native-apps#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/developers\/2024-recap-utility-network-enhancements-in-arcgis-maps-sdks-for-native-apps\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/developers\/2024-recap-utility-network-enhancements-in-arcgis-maps-sdks-for-native-apps#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"2024 Recap: Utility Network Enhancements in ArcGIS Maps SDKs for Native Apps\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"name\":\"ArcGIS Blog\",\"description\":\"Get insider info from Esri product teams\",\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\",\"name\":\"Esri\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"width\":400,\"height\":400,\"caption\":\"Esri\"},\"image\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/esrigis\/\",\"https:\/\/x.com\/ESRI\",\"https:\/\/www.linkedin.com\/company\/5311\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/2c8ecd78cc28a8663d6d3f253ecf9f3a\",\"name\":\"Andy Weis\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/c48f810f-8292-49e1-8937-1e2d12aac857-213x200.jpg\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/c48f810f-8292-49e1-8937-1e2d12aac857-213x200.jpg\",\"caption\":\"Andy Weis\"},\"description\":\"Andy Weis is a product engineer for the ArcGIS Maps SDK Team with a passion for conservation and software QA via workflow testing and data management. He also enjoys playing the guitar, card games, and various DIY projects in his spare time.\",\"jobTitle\":\"Product\",\"worksFor\":\"Esri\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/author\/aweis\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"A Comprehensive Look at ArcGIS Maps SDKs' Utility Network Updates in 2024","description":"Unlock the power of utility networks with the latest updates in the ArcGIS Maps SDKs for Native Apps in 2024. Explore new API changes and learn from real-world workflow examples.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/developers\/2024-recap-utility-network-enhancements-in-arcgis-maps-sdks-for-native-apps","og_locale":"en_US","og_type":"article","og_title":"2024 Recap: Utility Network Enhancements in ArcGIS Maps SDKs for Native Apps","og_description":"Unlock the power of utility networks with the latest updates in the ArcGIS Maps SDKs for Native Apps in 2024. Explore new API changes and learn from real-world workflow examples.","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/developers\/2024-recap-utility-network-enhancements-in-arcgis-maps-sdks-for-native-apps","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","article_modified_time":"2025-02-10T19:19:00+00:00","twitter_card":"summary_large_image","twitter_site":"@ESRI","twitter_misc":{"Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/developers\/2024-recap-utility-network-enhancements-in-arcgis-maps-sdks-for-native-apps#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/developers\/2024-recap-utility-network-enhancements-in-arcgis-maps-sdks-for-native-apps"},"author":{"name":"Andy Weis","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/2c8ecd78cc28a8663d6d3f253ecf9f3a"},"headline":"2024 Recap: Utility Network Enhancements in ArcGIS Maps SDKs for Native Apps","datePublished":"2025-02-05T12:34:37+00:00","dateModified":"2025-02-10T19:19:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/developers\/2024-recap-utility-network-enhancements-in-arcgis-maps-sdks-for-native-apps"},"wordCount":11,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"articleSection":["Developers","Electric &amp; Gas Utilities","Mapping"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/developers\/2024-recap-utility-network-enhancements-in-arcgis-maps-sdks-for-native-apps","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/developers\/2024-recap-utility-network-enhancements-in-arcgis-maps-sdks-for-native-apps","name":"A Comprehensive Look at ArcGIS Maps SDKs' Utility Network Updates in 2024","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2025-02-05T12:34:37+00:00","dateModified":"2025-02-10T19:19:00+00:00","description":"Unlock the power of utility networks with the latest updates in the ArcGIS Maps SDKs for Native Apps in 2024. Explore new API changes and learn from real-world workflow examples.","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/developers\/2024-recap-utility-network-enhancements-in-arcgis-maps-sdks-for-native-apps#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/developers\/2024-recap-utility-network-enhancements-in-arcgis-maps-sdks-for-native-apps"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/developers\/2024-recap-utility-network-enhancements-in-arcgis-maps-sdks-for-native-apps#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"2024 Recap: Utility Network Enhancements in ArcGIS Maps SDKs for Native Apps"}]},{"@type":"WebSite","@id":"https:\/\/www.esri.com\/arcgis-blog\/#website","url":"https:\/\/www.esri.com\/arcgis-blog\/","name":"ArcGIS Blog","description":"Get insider info from Esri product teams","publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization","name":"Esri","url":"https:\/\/www.esri.com\/arcgis-blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","width":400,"height":400,"caption":"Esri"},"image":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/esrigis\/","https:\/\/x.com\/ESRI","https:\/\/www.linkedin.com\/company\/5311\/"]},{"@type":"Person","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/2c8ecd78cc28a8663d6d3f253ecf9f3a","name":"Andy Weis","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/","url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/c48f810f-8292-49e1-8937-1e2d12aac857-213x200.jpg","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/c48f810f-8292-49e1-8937-1e2d12aac857-213x200.jpg","caption":"Andy Weis"},"description":"Andy Weis is a product engineer for the ArcGIS Maps SDK Team with a passion for conservation and software QA via workflow testing and data management. He also enjoys playing the guitar, card games, and various DIY projects in his spare time.","jobTitle":"Product","worksFor":"Esri","url":"https:\/\/www.esri.com\/arcgis-blog\/author\/aweis"}]}},"text_date":"February 5, 2025","author_name":"Andy Weis","author_page":"https:\/\/www.esri.com\/arcgis-blog\/author\/aweis","custom_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/02\/blogPost_wideValidate.jpg","primary_product":"ArcGIS Utility Network","tag_data":[],"category_data":[{"term_id":738191,"name":"Developers","slug":"developers","term_group":0,"term_taxonomy_id":738191,"taxonomy":"category","description":"","parent":0,"count":423,"filter":"raw"},{"term_id":25741,"name":"Electric &amp; Gas Utilities","slug":"electric-gas","term_group":0,"term_taxonomy_id":25741,"taxonomy":"category","description":"","parent":0,"count":253,"filter":"raw"},{"term_id":22941,"name":"Mapping","slug":"mapping","term_group":0,"term_taxonomy_id":22941,"taxonomy":"category","description":"","parent":0,"count":2692,"filter":"raw"}],"product_data":[{"term_id":769142,"name":"ArcGIS Maps SDK for .NET","slug":"sdk-net","term_group":0,"term_taxonomy_id":769142,"taxonomy":"product","description":"","parent":36601,"count":39,"filter":"raw"},{"term_id":768902,"name":"ArcGIS Maps SDK for Kotlin","slug":"sdk-kotlin","term_group":0,"term_taxonomy_id":768902,"taxonomy":"product","description":"","parent":36601,"count":33,"filter":"raw"},{"term_id":769152,"name":"ArcGIS Maps SDK for Qt","slug":"sdk-qt","term_group":0,"term_taxonomy_id":769152,"taxonomy":"product","description":"","parent":36601,"count":36,"filter":"raw"},{"term_id":768912,"name":"ArcGIS Maps SDK for Swift","slug":"sdk-swift","term_group":0,"term_taxonomy_id":768912,"taxonomy":"product","description":"","parent":36601,"count":32,"filter":"raw"},{"term_id":765412,"name":"ArcGIS Maps SDKs","slug":"maps-sdk","term_group":0,"term_taxonomy_id":765412,"taxonomy":"product","description":"","parent":756692,"count":14,"filter":"raw"},{"term_id":515312,"name":"ArcGIS Utility Network","slug":"utility-network","term_group":0,"term_taxonomy_id":515312,"taxonomy":"product","description":"","parent":36981,"count":141,"filter":"raw"},{"term_id":36601,"name":"Developers","slug":"developers","term_group":0,"term_taxonomy_id":36601,"taxonomy":"product","description":"","parent":0,"count":763,"filter":"raw"}],"primary_product_link":"https:\/\/www.esri.com\/arcgis-blog\/?s=#&products=utility-network","_links":{"self":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/2670772","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/users\/366462"}],"replies":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/comments?post=2670772"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/2670772\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=2670772"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=2670772"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=2670772"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=2670772"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=2670772"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}