{"id":82991,"date":"2018-02-28T12:00:42","date_gmt":"2018-02-28T12:00:42","guid":{"rendered":"http:\/\/www.esri.com\/arcgis-blog\/products\/product\/uncategorized\/a-technical-walk-through-for-a-simple-utility-network-web-trace-tool-with-javascript\/"},"modified":"2020-02-19T07:22:28","modified_gmt":"2020-02-19T15:22:28","slug":"a-technical-walk-through-for-a-simple-utility-network-web-trace-tool-with-javascript","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/data-management\/a-technical-walk-through-for-a-simple-utility-network-web-trace-tool-with-javascript","title":{"rendered":"A technical walk-through for a simple utility network web trace tool with Javascript"},"author":7511,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"_searchwp_excluded":""},"categories":[23851,25741],"tags":[24921,36481,35691,194052],"industry":[],"product":[36571,36561,515312],"class_list":["post-82991","blog","type-blog","status-publish","format-standard","hentry","category-data-management","category-electric-gas","tag-javascript","tag-tracing","tag-utility-network-management-extension","tag-utilitynetwork","product-arcgis-enterprise","product-arcgis-pro","product-utility-network"],"acf":{"short_description":"It\u2019s time to show the power of the services oriented architecture nature of the Utility Network Management extension. Currently ArcGIS ...","flexible_content":[{"acf_fc_layout":"content","content":"<p>It\u2019s time to show the power of the services oriented architecture nature of the Utility Network Management extension. Currently ArcGIS Pro is the richest client for utility network functionality. However, that doesn\u2019t mean that the functionality is not available for other clients. If ArcGIS Pro can do it, any other client can and that is the beauty of the SOA architecture. This blog post will walk through a simple web application example that I have authored which does a <a title=\"subnetwork trace\" href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/help\/data\/utility-network\/utility-network-trace-types.htm#ESRI_SECTION1_1CDF6C09382C4CD29A2BECDBF1DD77A1\" target=\"_blank\" rel=\"noopener\">subnetwork trace<\/a> using the ArcGIS for Javascript API 4.x hitting the utility network service. For simplicity we will be working with the DEFAULT branch in this sample. The example should work on any utility network service.<br \/>\nNote: The code here has been authored from scratch to hit the Utility Network REST API directly. With the Utility Network JavaScript SDK Enhancements these will be available out of the box for devs.<\/p>\n<p><strong>Connect to ArcGIS Enterprise portal<\/strong><br \/>\nWe start by providing the username and password of a user who owns at least one web map which has a utility network. Next, we attempt to connect by acquiring a token from ArcGIS Enterprise for the provided user. The query will list all web maps that the user owns. The reason this sample works with only webmaps, is we don\u2019t want to load the raw feature service in the map view. We want to load a properly authored map with good scale dependency and well-crafted symbology.<\/p>\n<p><strong>Load Web Map and utility network Definition<\/strong><br \/>\nWhen the user selects a web map, we do two things at the same time. 1) We check if the web map is pointing to a feature service and make sure that the feature service has a utility network. Only then we create a utilitynetwork object by passing the feature service URL and the token. The Utilitynetwork class is a helper class that does all the heavy lifting of querying various end points to pull the necessary meta data to open a utility network. 2) We load the web map into a <a title=\"Map View\" href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-views-MapView.html\" target=\"_blank\" rel=\"noopener\">Map View<\/a> in the browser using the ArcGIS for Javascript 4.x api. The non-blocking asynchronous nature of javascript and promises allows the utility network to be created while the map view is loaded. The user can work with the map normally while the utility network object is being loaded.<\/p>\n<p><strong>Query and Highlight Subnetworks<\/strong><br \/>\nOnce the utilitynetwork object is created, we can do the real work. We have access to the full definition of the utility network we can list cool properties like domain networks, tiers, network attributes etc. We first populate all the <a title=\"domain networks\" href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/help\/data\/utility-network\/domain-network.htm\" target=\"_blank\" rel=\"noopener\">domains networks<\/a> in the utility network in a drop-down list. When the user selects a domain network all the <a title=\"tiers\" href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/help\/data\/utility-network\/tiers.htm\" target=\"_blank\" rel=\"noopener\">tiers<\/a> that are available in that domain network will be populated. The user selects a tier, we call a rest endpoint to query the subnetworks table to filter out all subnetworks that belong to that tier. The <a title=\"subnetworks table\" href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/help\/data\/utility-network\/view-subnetworks-table.htm\" target=\"_blank\" rel=\"noopener\">subnetworks table<\/a> is a special table published as a layer in the feature service. To get access to that layer we need to ask the utility network for its subnetwork layer id so we can query for subnetworks. The utilitynetwork helper class has a method to return the subnetwork table layer, you can look at the source code at the end of this blog to know how it\u2019s done.<\/p>\n<p>The fun part starts here when the user selects a subnetwork, and now we want to select the subnetline feature corresponding to the subnetwork. The subnetwork must be updated for this to work. Like the Subnetworks layer, the <a title=\"subnetline layer\" href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/help\/data\/utility-network\/components.htm\" target=\"_blank\" rel=\"noopener\">subnetline layer<\/a> is a special system layer and we need to ask the utility network for its id. The utilitynetwork helper class has that method that returns the subnetline layer which is in the utility network definition. We then query that layer only returning geometry since that is the only thing we are interested in. Finally, we create a graphic of the returned geometry and add it to the map view making sure to clear all existing graphics to end up with multiple graphics on the map. Here is an illustration of the result.<\/p>\n<figure id=\"attachment_101329\" aria-describedby=\"caption-attachment-101329\" style=\"width: 1667px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/02\/webapplication.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-101329\" src=\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/02\/webapplication.png\" alt=\"Subnetline feature class\" width=\"1667\" height=\"903\" \/><\/a><figcaption id=\"caption-attachment-101329\" class=\"wp-caption-text\">A graphic result of the subnetline feature class with RMT001 subnetwork selected. The Subnetwork Customer Count, Subnetwork Customer Load Amps, and other attributes pertaining to this subnetwork can be viewed here.<\/figcaption><\/figure>\n<p><strong>Trace<\/strong><br \/>\nUp until here we did not use any of the utility network core functionalities. All of that was the power of the feature service. But don\u2019t worry we are about to run our first web trace. The <a title=\"trace method\" href=\"https:\/\/developers.arcgis.com\/rest\/services-reference\/trace-utility-network-server-.htm\" target=\"_blank\" rel=\"noopener\">trace method<\/a> is a REST end-point on the Utility Network Server extension. It takes many parameters, starting points, barriers, trace type, trace definition and many related to the version and moment which are optional. In this sample we will do one <a title=\"type of trace\" href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/help\/data\/utility-network\/utility-network-trace-types.htm\" target=\"_blank\" rel=\"noopener\">type of trace<\/a> called Subnetwork Trace. We might cover other type of traces in future posts.<\/p>\n<p>To run a subnetwork trace, the REST trace method is expecting the subnetwork name along with the domain name and tier name. Good thing we have all that! What we are missing is the subnetwork definition. The subnetwork definition is what predicate the \u201cboundary\u201d of a subnetwork, an example in the electric network would be stop the trace when it finds an open device. The subnetwork definition is part of the tier the subnetwork belongs to. To retrieve that we need to pull that of the tier, and since we have loaded the entire utility network definition, we have that in memory. We now need to send a POST request with all the information including the token, after all this is how Enterprise authenticates us. Leaving the version, sessionid and moment blank, the trace will be executed on the latest representation of the Default branch.<\/p>\n<p><strong>Trace Results<\/strong><br \/>\nThis is perhaps one of the most popular questions that comes from users of the utility network. How can I get the features from the trace results? The trace results by default returns an array of features, however it only returns these attributes \u201cSourceID\u201d, \u201cGlobalID\u201d and the \u201cObjectID\u201d. No Layerid. The SourceID is an internal representation of the feature classes that acts as sources for the utility network. In the coming releases we will enhance the Trace end-point by returning the layerId however. Meanwhile we will have to map the SourceID to the LayerId. Luckily, we have that mapping in the Utility Network Definition and the Utilitynetwork helper class does have a nice method to getLayerIdfromSourceId that does just that. Now we will have to recollect all results grouped by layerId and objectIds and make few queries to retrieve the geometries of those features so we can draw graphics. After all what we are looking for is just to highlight the results on the map. Obviously, one can do more interesting things with the results of the trace.<\/p>\n<figure id=\"attachment_101330\" aria-describedby=\"caption-attachment-101330\" style=\"width: 1674px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/02\/traceresults1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-101330\" src=\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/02\/traceresults1.png\" alt=\"Trace results\" width=\"1674\" height=\"898\" \/><\/a><figcaption id=\"caption-attachment-101330\" class=\"wp-caption-text\">A graphic result of selected features from the trace result for the RMT003 subnetwork.<\/figcaption><\/figure>\n<p>Code: <a title=\"https:\/\/github.com\/hussein-nasser\/unjs\" href=\"https:\/\/github.com\/hussein-nasser\/unjs\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/hussein-nasser\/unjs<\/a><\/p>\n<p>Important note on the token: The token is short-lived (usually 30 minutes) so you will need to regenerate the token before it expires.<\/p>\n"}],"authors":[{"ID":7511,"user_firstname":"Hussein","user_lastname":"Nasser","nickname":"Hussein Nasser","user_nicename":"hussein-nasser","display_name":"Hussein Nasser","user_email":"HNasser@esri.com","user_url":"http:\/\/www.husseinnasser.com","user_registered":"2018-03-21 18:21:21","user_description":"Product Engineer at Esri, Author of several GIS books and Software Engineering Content Creator on YouTube and a podcast host.","user_avatar":"<img data-del=\"avatar\" src='https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/06\/profile.png' class='avatar pp-user-avatar avatar-96 photo ' height='96' width='96'\/>"},{"ID":7991,"user_firstname":"Utility Network","user_lastname":"Team","nickname":"Utility Network Team","user_nicename":"utilitynetworkteam","display_name":"Utility Network Team","user_email":"orion@esri.com","user_url":"","user_registered":"2018-05-17 16:42:15","user_description":"The utility network team blogs about utility industry topics and the functionality available with the ArcGIS Utility Network Management extension. #UtilityNetwork #EsriElectric #EsriGas #SmartGrid","user_avatar":"<img data-del=\"avatar\" src='https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/TeamPicture.png' class='avatar pp-user-avatar avatar-96 photo ' height='96' width='96'\/>"}],"related_articles":"","card_image":false,"wide_image":false},"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 technical walk-through for a simple utility network web trace tool with Javascript<\/title>\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\/data-management\/a-technical-walk-through-for-a-simple-utility-network-web-trace-tool-with-javascript\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"A technical walk-through for a simple utility network web trace tool with Javascript\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/data-management\/a-technical-walk-through-for-a-simple-utility-network-web-trace-tool-with-javascript\" \/>\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=\"2020-02-19T15:22:28+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@ESRI\" \/>\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\/data-management\/a-technical-walk-through-for-a-simple-utility-network-web-trace-tool-with-javascript#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/data-management\/a-technical-walk-through-for-a-simple-utility-network-web-trace-tool-with-javascript\"},\"author\":{\"name\":\"Hussein Nasser\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/78b7647b1db598b3c791d039593e5b2b\"},\"headline\":\"A technical walk-through for a simple utility network web trace tool with Javascript\",\"datePublished\":\"2018-02-28T12:00:42+00:00\",\"dateModified\":\"2020-02-19T15:22:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/data-management\/a-technical-walk-through-for-a-simple-utility-network-web-trace-tool-with-javascript\"},\"wordCount\":13,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"keywords\":[\"JavaScript\",\"tracing\",\"Utility Network Management extension\",\"utilitynetwork\"],\"articleSection\":[\"Data Management\",\"Electric &amp; Gas Utilities\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/data-management\/a-technical-walk-through-for-a-simple-utility-network-web-trace-tool-with-javascript#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/data-management\/a-technical-walk-through-for-a-simple-utility-network-web-trace-tool-with-javascript\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/data-management\/a-technical-walk-through-for-a-simple-utility-network-web-trace-tool-with-javascript\",\"name\":\"A technical walk-through for a simple utility network web trace tool with Javascript\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2018-02-28T12:00:42+00:00\",\"dateModified\":\"2020-02-19T15:22:28+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/data-management\/a-technical-walk-through-for-a-simple-utility-network-web-trace-tool-with-javascript#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/data-management\/a-technical-walk-through-for-a-simple-utility-network-web-trace-tool-with-javascript\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/data-management\/a-technical-walk-through-for-a-simple-utility-network-web-trace-tool-with-javascript#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"A technical walk-through for a simple utility network web trace tool with Javascript\"}]},{\"@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\/78b7647b1db598b3c791d039593e5b2b\",\"name\":\"Hussein Nasser\",\"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\/2018\/06\/profile.png\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/06\/profile.png\",\"caption\":\"Hussein Nasser\"},\"description\":\"Product Engineer at Esri, Author of several GIS books and Software Engineering Content Creator on YouTube and a podcast host.\",\"sameAs\":[\"http:\/\/www.husseinnasser.com\",\"https:\/\/www.linkedin.com\/in\/hnaser\/\",\"https:\/\/x.com\/hnasr\"],\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/author\/hussein-nasser\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"A technical walk-through for a simple utility network web trace tool with Javascript","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\/data-management\/a-technical-walk-through-for-a-simple-utility-network-web-trace-tool-with-javascript","og_locale":"en_US","og_type":"article","og_title":"A technical walk-through for a simple utility network web trace tool with Javascript","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/data-management\/a-technical-walk-through-for-a-simple-utility-network-web-trace-tool-with-javascript","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","article_modified_time":"2020-02-19T15:22:28+00:00","twitter_card":"summary_large_image","twitter_site":"@ESRI","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/data-management\/a-technical-walk-through-for-a-simple-utility-network-web-trace-tool-with-javascript#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/data-management\/a-technical-walk-through-for-a-simple-utility-network-web-trace-tool-with-javascript"},"author":{"name":"Hussein Nasser","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/78b7647b1db598b3c791d039593e5b2b"},"headline":"A technical walk-through for a simple utility network web trace tool with Javascript","datePublished":"2018-02-28T12:00:42+00:00","dateModified":"2020-02-19T15:22:28+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/data-management\/a-technical-walk-through-for-a-simple-utility-network-web-trace-tool-with-javascript"},"wordCount":13,"commentCount":0,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"keywords":["JavaScript","tracing","Utility Network Management extension","utilitynetwork"],"articleSection":["Data Management","Electric &amp; Gas Utilities"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/data-management\/a-technical-walk-through-for-a-simple-utility-network-web-trace-tool-with-javascript#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/data-management\/a-technical-walk-through-for-a-simple-utility-network-web-trace-tool-with-javascript","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/data-management\/a-technical-walk-through-for-a-simple-utility-network-web-trace-tool-with-javascript","name":"A technical walk-through for a simple utility network web trace tool with Javascript","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2018-02-28T12:00:42+00:00","dateModified":"2020-02-19T15:22:28+00:00","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/data-management\/a-technical-walk-through-for-a-simple-utility-network-web-trace-tool-with-javascript#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/data-management\/a-technical-walk-through-for-a-simple-utility-network-web-trace-tool-with-javascript"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/data-management\/a-technical-walk-through-for-a-simple-utility-network-web-trace-tool-with-javascript#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"A technical walk-through for a simple utility network web trace tool with Javascript"}]},{"@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\/78b7647b1db598b3c791d039593e5b2b","name":"Hussein Nasser","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\/2018\/06\/profile.png","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/06\/profile.png","caption":"Hussein Nasser"},"description":"Product Engineer at Esri, Author of several GIS books and Software Engineering Content Creator on YouTube and a podcast host.","sameAs":["http:\/\/www.husseinnasser.com","https:\/\/www.linkedin.com\/in\/hnaser\/","https:\/\/x.com\/hnasr"],"url":"https:\/\/www.esri.com\/arcgis-blog\/author\/hussein-nasser"}]}},"text_date":"February 28, 2018","author_name":"Multiple Authors","author_page":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/data-management\/a-technical-walk-through-for-a-simple-utility-network-web-trace-tool-with-javascript","custom_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/Newsroom-Keyart-Wide-1920-x-1080.jpg","primary_product":"ArcGIS Utility Network","tag_data":[{"term_id":24921,"name":"JavaScript","slug":"javascript","term_group":0,"term_taxonomy_id":24921,"taxonomy":"post_tag","description":"","parent":0,"count":151,"filter":"raw"},{"term_id":36481,"name":"tracing","slug":"tracing","term_group":0,"term_taxonomy_id":36481,"taxonomy":"post_tag","description":"","parent":0,"count":6,"filter":"raw"},{"term_id":35691,"name":"Utility Network Management extension","slug":"utility-network-management-extension","term_group":0,"term_taxonomy_id":35691,"taxonomy":"post_tag","description":"","parent":0,"count":5,"filter":"raw"},{"term_id":194052,"name":"utilitynetwork","slug":"utilitynetwork","term_group":0,"term_taxonomy_id":194052,"taxonomy":"post_tag","description":"","parent":0,"count":9,"filter":"raw"}],"category_data":[{"term_id":23851,"name":"Data Management","slug":"data-management","term_group":0,"term_taxonomy_id":23851,"taxonomy":"category","description":"","parent":0,"count":920,"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":252,"filter":"raw"}],"product_data":[{"term_id":36571,"name":"ArcGIS Enterprise","slug":"arcgis-enterprise","term_group":0,"term_taxonomy_id":36571,"taxonomy":"product","description":"","parent":0,"count":972,"filter":"raw"},{"term_id":36561,"name":"ArcGIS Pro","slug":"arcgis-pro","term_group":0,"term_taxonomy_id":36561,"taxonomy":"product","description":"","parent":0,"count":2035,"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"}],"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\/82991","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\/7511"}],"replies":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/comments?post=82991"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/82991\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=82991"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=82991"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=82991"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=82991"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=82991"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}