{"id":668662,"date":"2019-02-11T13:53:36","date_gmt":"2019-02-11T21:53:36","guid":{"rendered":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=668662"},"modified":"2020-02-19T07:22:01","modified_gmt":"2020-02-19T15:22:01","slug":"advanced-attribute-rules-creating-utility-network-associations-with-attribute-rules","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/electric-gas\/advanced-attribute-rules-creating-utility-network-associations-with-attribute-rules","title":{"rendered":"Advanced Attribute Rules &#8211; Creating Utility Network Associations with attribute Rules"},"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":[25741],"tags":[32551,36071],"industry":[],"product":[36561,515312],"class_list":["post-668662","blog","type-blog","status-publish","format-standard","hentry","category-electric-gas","tag-arcade","tag-arcgis-utility-network-management-extension","product-arcgis-pro","product-utility-network"],"acf":{"short_description":"Using Attribute rules you can create, modify Utility Network Associations, learn more by reading this blog.","flexible_content":[{"acf_fc_layout":"content","content":"<p>With ArcGIS Pro 2.4 and Enterprise 10.7.1, we introduced the ability to author geodatabase attribute rules that edit features on other classes using special dictionary keywords and syntax. With those releases I authored a\u00a0<a href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/data-management\/advanced-gdb-attribute-rules-editing-external-features-with-attribute-rules\/\">blog post<\/a>\u00a0that demonstrates how to edit other classes using attribute rules. At ArcGIS Pro 2.5 and Enterprise 10.8, we have made improvements that allow me to demonstrate the use of dictionary keywords to create different types of utility network associations with attribute rules. With these improvements, we recommend using 2.5\/10.8 to get the most out of working with attribute rules and associations (note that some of the examples provided in this post will not work at 2.4\/10.7.1.) To learn more on the topic, see\u00a0<a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/help\/data\/geodatabases\/overview\/attribute-rule-dictionary-keywords.htm\">Attribute rule dictionary keywords<\/a>\u00a0in the help.<\/p>\n<p>&nbsp;<\/p>\n<p>Note: This blog uses Naperville Electric utility network data model.<\/p>\n<p>&nbsp;<\/p>\n<h1><\/h1>\n"},{"acf_fc_layout":"content","content":"<h1>Creating a feature attaches itself to a structure within 50 feet<\/h1>\n<p>In this example, we want that every time we create a Medium Voltage Attachment junction feature, which is a subtype on the Electric Junction class, to attach it to the first nearby Medium Voltage Single Pole we find within 50 feet.<\/p>\n<p>&nbsp;<\/p>\n<p>We will create a new<a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/help\/data\/geodatabases\/overview\/calculation-attribute-rules.htm#ESRI_SECTION1_B0BC99A68A544E318F8E0C4E431BFA64\"> immediate calculation attribute rule<\/a> using the following expression with a triggering event on insert. Make sure to exclude evaluation on the client by checking the option <strong>Exclude from application evaluation<\/strong>.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":668682,"id":668682,"title":"an Attribute rule that attaches devices to the nearest pole","filename":"rule1.png","filesize":17180,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/electric-gas\/advanced-attribute-rules-creating-utility-network-associations-with-attribute-rules\/rule1-2","alt":"an Attribute rule that attaches devices to the nearest pole","author":"7511","description":"an Attribute rule that attaches devices to the nearest pole ","caption":"an Attribute rule that attaches devices to the nearest pole ","name":"rule1-2","status":"inherit","uploaded_to":668662,"date":"2019-11-27 21:14:19","modified":"2019-11-27 21:23:58","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":640,"height":773,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1.png","medium-width":216,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1.png","medium_large-width":640,"medium_large-height":773,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1.png","large-width":640,"large-height":773,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1.png","1536x1536-width":640,"1536x1536-height":773,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1.png","2048x2048-width":640,"2048x2048-height":773,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1-385x465.png","card_image-width":385,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1.png","wide_image-width":640,"wide_image-height":773}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>Using the following expression, when creating an overhead attachment within 50 feet of a pole the attachment will automatically attaches to the pole<\/p>\n"},{"acf_fc_layout":"content","content":"<pre><code style=\"padding: 0.5em;color: #333;background: #f8f8f8\"><span style=\"color: #998;font-style: italic\">\/\/$feature is an ElectricJunction Medium Voltage Overhead Attachment<\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/Get the structureJunction feature set <\/span>\r\n<span style=\"color: #333;font-weight: bold\">var<\/span> sjFeatureSet = FeatureSetByname($datastore, <span style=\"color: #d14\">\"StructureJunction\"<\/span>, [<span style=\"color: #d14\">\"objectid\"<\/span>] ,<span style=\"color: #333;font-weight: 500\">false<\/span>)\r\n<span style=\"color: #998;font-style: italic\">\/\/We are only interested in Single Pole - Electric Medium Voltage Poles<\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/ Asset Group Electric Medium Voltage Poles - code 121<\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/ Asset Type Single Pole - 324<\/span>\r\n<span style=\"color: #333;font-weight: bold\">var<\/span> polesFeatureSet = Filter(sjFeatureSet, <span style=\"color: #d14\">\"ASSETGROUP = 121 AND ASSETTYPE = 324\"<\/span>)\r\n<span style=\"color: #998;font-style: italic\">\/\/buffer the $feature which is the Medium Voltage overhead attachment by 50 feet<\/span>\r\n<span style=\"color: #333;font-weight: bold\">var<\/span> g = buffer($feature, <span style=\"color: #008080\">50<\/span>)\r\n<span style=\"color: #998;font-style: italic\">\/\/interset and find any poles within 50 feet  <\/span>\r\n<span style=\"color: #333;font-weight: bold\">var<\/span> intersectedPoles = Intersects(polesFeatureSet,g)\r\n<span style=\"color: #998;font-style: italic\">\/\/make sure we have some results, if not just return<\/span>\r\n<span style=\"color: #333;font-weight: bold\">if<\/span> (count(intersectedPoles) == <span style=\"color: #008080\">0<\/span>) \r\n  <span style=\"color: #333;font-weight: bold\">return<\/span> $feature.notes;\r\n<span style=\"color: #998;font-style: italic\">\/\/get the first pole we find<\/span>\r\n<span style=\"color: #333;font-weight: bold\">var<\/span> pole = first(intersectedPoles)\r\n<span style=\"color: #998;font-style: italic\">\/\/return the dictionary<\/span>\r\n<span style=\"color: #333;font-weight: bold\">return<\/span> {\r\n         <span style=\"color: #998;font-style: italic\">\/\/we want to just return the value of field `notes` no change require<\/span>\r\n         <span style=\"color: #d14\">\"result\"<\/span>: $feature.notes,\r\n         <span style=\"color: #998;font-style: italic\">\/\/this keyword indicates an edit that need to happen, its an array since we can make many edits<\/span>\r\n         <span style=\"color: #d14\">\"edit\"<\/span>: \r\n              [\r\n                {\r\n                 <span style=\"color: #998;font-style: italic\">\/\/the other class we want to edit, the pole<\/span>\r\n                 <span style=\"color: #d14\">\"className\"<\/span>: <span style=\"color: #d14\">\"structurejunction\"<\/span>,\r\n                <span style=\"color: #998;font-style: italic\">\/\/the type of edit, in this case `updates` are always used when modifying associations, its an array since we can make many updates<\/span>\r\n                 <span style=\"color: #d14\">\"updates\"<\/span>:\r\n                 [\r\n                   {\r\n                   <span style=\"color: #998;font-style: italic\">\/\/we want to find what pole to associate with, we can either use the objectId or the globalId<\/span>\r\n                   <span style=\"color: #d14\">\"objectID\"<\/span>: pole.objectid,\r\n                   <span style=\"color: #998;font-style: italic\">\/\/I want the pole feature to be my 'structure' ($feature the junction)<\/span>\r\n                   <span style=\"color: #d14\">\"associationType\"<\/span>: <span style=\"color: #d14\">'structure'<\/span>\r\n                   }\r\n                 ]\r\n                }\r\n              ]\r\n            }\r\n  \r\n<\/code><\/pre>\n"},{"acf_fc_layout":"image","image":{"ID":668702,"id":668702,"title":"rule1-2","filename":"rule1-2.png","filesize":8079,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1-2.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/electric-gas\/advanced-attribute-rules-creating-utility-network-associations-with-attribute-rules\/rule1-2-2","alt":"","author":"7511","description":"","caption":"","name":"rule1-2-2","status":"inherit","uploaded_to":668662,"date":"2019-11-27 21:24:49","modified":"2019-11-27 21:24:49","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":663,"height":328,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1-2-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1-2.png","medium-width":464,"medium-height":230,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1-2.png","medium_large-width":663,"medium_large-height":328,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1-2.png","large-width":663,"large-height":328,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1-2.png","1536x1536-width":663,"1536x1536-height":328,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1-2.png","2048x2048-width":663,"2048x2048-height":328,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1-2.png","card_image-width":663,"card_image-height":328,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1-2.png","wide_image-width":663,"wide_image-height":328}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"image","image":{"ID":668712,"id":668712,"title":"rule1-3","filename":"rule1-3.png","filesize":12478,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1-3.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/electric-gas\/advanced-attribute-rules-creating-utility-network-associations-with-attribute-rules\/rule1-3","alt":"","author":"7511","description":"","caption":"","name":"rule1-3","status":"inherit","uploaded_to":668662,"date":"2019-11-27 21:24:50","modified":"2019-11-27 21:24:50","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":694,"height":402,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1-3-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1-3.png","medium-width":451,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1-3.png","medium_large-width":694,"medium_large-height":402,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1-3.png","large-width":694,"large-height":402,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1-3.png","1536x1536-width":694,"1536x1536-height":402,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1-3.png","2048x2048-width":694,"2048x2048-height":402,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1-3.png","card_image-width":694,"card_image-height":402,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1-3.png","wide_image-width":694,"wide_image-height":402}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>The script can also be modified slightly if necessary to fail the edit if no nearby poles were found<\/p>\n"},{"acf_fc_layout":"content","content":"<pre><code style=\"padding: 0.5em;color: #333;background: #f8f8f8\">\r\n<span style=\"color: #998;font-style: italic\">\/\/make sure we have some results, <\/span>\r\n<span style=\"color: #333;font-weight: bold\">if<\/span> (count(intersectedPoles) == <span style=\"color: #008080\">0<\/span>)   <span style=\"color: #333;font-weight: bold\">return<\/span> {<span style=\"color: #d14\">\"errorMessage\"<\/span>: <span style=\"color: #d14\">\"Overhead Medium Voltage attachment must be created within 50 feet of a Single Pole - Electric Medium Voltage Pole\"<\/span>}\r\n\r\n<\/code><\/pre>\n"},{"acf_fc_layout":"image","image":{"ID":668722,"id":668722,"title":"rule1-4","filename":"rule1-4.png","filesize":11645,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1-4.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/electric-gas\/advanced-attribute-rules-creating-utility-network-associations-with-attribute-rules\/rule1-4","alt":"","author":"7511","description":"","caption":"","name":"rule1-4","status":"inherit","uploaded_to":668662,"date":"2019-11-27 21:24:52","modified":"2019-11-27 21:24:52","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":825,"height":449,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1-4-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1-4.png","medium-width":464,"medium-height":253,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1-4.png","medium_large-width":768,"medium_large-height":418,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1-4.png","large-width":825,"large-height":449,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1-4.png","1536x1536-width":825,"1536x1536-height":449,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1-4.png","2048x2048-width":825,"2048x2048-height":449,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1-4.png","card_image-width":825,"card_image-height":449,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule1-4.png","wide_image-width":825,"wide_image-height":449}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<h1>Creating a structure attaches all nearby applicable features to itself<\/h1>\n<p>Now we want to create a medium voltage single pole and attaches any nearby Medium Voltage Attachments to it. However we want to make sure those junctions are not already attached to some other poles so we will filter for that. Without that additional filter we will get an error when we try to attach a junction that is already attached to another pole.<\/p>\n<p>&nbsp;<\/p>\n<p>We will create a calculation rule on the StructureJunction class this time as follows<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":668732,"id":668732,"title":"Attribute Rules attaches all nearby devices to the pole","filename":"rule2-1.png","filesize":12913,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule2-1.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/electric-gas\/advanced-attribute-rules-creating-utility-network-associations-with-attribute-rules\/rule2-1","alt":"Attribute Rules attaches all nearby devices to the pole","author":"7511","description":"Attribute Rules attaches all nearby devices to the pole","caption":"Attribute Rules attaches all nearby devices to the pole","name":"rule2-1","status":"inherit","uploaded_to":668662,"date":"2019-11-27 21:27:23","modified":"2019-11-27 21:27:57","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":440,"height":628,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule2-1-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule2-1.png","medium-width":183,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule2-1.png","medium_large-width":440,"medium_large-height":628,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule2-1.png","large-width":440,"large-height":628,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule2-1.png","1536x1536-width":440,"1536x1536-height":628,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule2-1.png","2048x2048-width":440,"2048x2048-height":628,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule2-1-326x465.png","card_image-width":326,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule2-1.png","wide_image-width":440,"wide_image-height":628}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<pre><code style=\"padding: 0.5em;color: #333;background: #f8f8f8\">\r\n\r\n<span style=\"color: #998;font-style: italic\">\/\/creating pole  <\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/$feature is the StructureJunction (pole)<\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/Get the ElectricJunction feature set <\/span>\r\n<span style=\"color: #333;font-weight: bold\">var<\/span> ejFeatureSet = FeatureSetByname($datastore, <span style=\"color: #d14\">\"ElectricJunction\"<\/span>, [<span style=\"color: #d14\">\"objectid\"<\/span>] ,<span style=\"color: #333;font-weight: 500\">false<\/span>)\r\n<span style=\"color: #998;font-style: italic\">\/\/We are only interested in Medium Voltage Attachments of <\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/ Asset Group Medium Voltage Attachment - code 7<\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/ Asset Type Overhead - 60<\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/ Also we only want junctions that are not already associated with anything. <\/span>\r\n<span style=\"color: #333;font-weight: bold\">var<\/span> mvaFeatureSet = Filter(ejFeatureSet, <span style=\"color: #d14\">\"ASSETGROUP = 7 AND ASSETTYPE = 60 AND ASSOCIATIONSTATUS = 0 \"<\/span>)\r\n<span style=\"color: #998;font-style: italic\">\/\/buffer the pole<\/span>\r\n<span style=\"color: #333;font-weight: bold\">var<\/span> g = buffer($feature, <span style=\"color: #008080\">50<\/span>)\r\n<span style=\"color: #998;font-style: italic\">\/\/Find all interested junctions<\/span>\r\n<span style=\"color: #333;font-weight: bold\">var<\/span> interestedJunctions = Intersects(mvaFeatureSet,g)\r\n<span style=\"color: #998;font-style: italic\">\/\/if there isn't any thats ok just exit<\/span>\r\n<span style=\"color: #333;font-weight: bold\">if<\/span> (count(interestedJunctions) == <span style=\"color: #008080\">0<\/span>) <span style=\"color: #333;font-weight: bold\">return<\/span> $feature.notes\r\n<span style=\"color: #998;font-style: italic\">\/\/create an array of junctions to be returned and attached<\/span>\r\n<span style=\"color: #333;font-weight: bold\">var<\/span> updatedJunctions = []\r\n<span style=\"color: #333;font-weight: bold\">var<\/span> jCount = <span style=\"color: #008080\">0<\/span>;\r\n<span style=\"color: #333;font-weight: bold\">for<\/span> (<span style=\"color: #333;font-weight: bold\">var<\/span> f <span style=\"color: #333;font-weight: bold\">in<\/span> interestedJunctions){\r\n    updatedJunctions[jCount++] = {\r\n             <span style=\"color: #998;font-style: italic\">\/\/the objectId of the junction<\/span>\r\n             <span style=\"color: #d14\">\"objectID\"<\/span>: f.objectid,\r\n             <span style=\"color: #998;font-style: italic\">\/\/we want the junction to be attached to $feature   <\/span>\r\n             <span style=\"color: #d14\">\"associationType\"<\/span>: <span style=\"color: #d14\">'attached'<\/span>\r\n            }\r\n}\r\n\r\n<span style=\"color: #998;font-style: italic\">\/\/return the dictionary<\/span>\r\n<span style=\"color: #333;font-weight: bold\">return<\/span> {\r\n         <span style=\"color: #998;font-style: italic\">\/\/we want to just return the value of field `notes` no change require<\/span>\r\n         <span style=\"color: #d14\">\"result\"<\/span>: $feature.notes,\r\n         <span style=\"color: #998;font-style: italic\">\/\/this keyword indicates an edit that need to happen, its an array since we can make many edits<\/span>\r\n         <span style=\"color: #d14\">\"edit\"<\/span>: \r\n              [\r\n                {\r\n                 <span style=\"color: #998;font-style: italic\">\/\/the other class we want to edit<\/span>\r\n                 <span style=\"color: #d14\">\"className\"<\/span>: <span style=\"color: #d14\">\"ElectricJunction\"<\/span>,\r\n                 <span style=\"color: #998;font-style: italic\">\/\/the list of updates we need to make<\/span>\r\n                 <span style=\"color: #d14\">\"updates\"<\/span>:updatedJunctions\r\n                 \r\n                }\r\n              ]\r\n            }\r\n \r\n<\/code><\/pre>\n"},{"acf_fc_layout":"content","content":"<h1>Creating a feature associate itself as content with a nearby container<\/h1>\n<p>Now we want to create a medium voltage fuse and associate it with a nearby fuse bank as content. The logic is similar, we want to find fuse banks within 50 feet and pick the first feature and associate the created fuse to it.<\/p>\n<p>&nbsp;<\/p>\n<p>We will create a calculation rule on the ElectricDevice class as follows<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":668752,"id":668752,"title":"Attribute rule that makes devices content","filename":"rule3-1.png","filesize":15382,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule3-1.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/electric-gas\/advanced-attribute-rules-creating-utility-network-associations-with-attribute-rules\/rule3-1","alt":"Attribute rule that makes devices content","author":"7511","description":"Attribute rule that makes devices content","caption":"Attribute rule that makes devices content","name":"rule3-1","status":"inherit","uploaded_to":668662,"date":"2019-11-27 21:30:03","modified":"2019-11-27 21:30:27","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":488,"height":761,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule3-1-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule3-1.png","medium-width":167,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule3-1.png","medium_large-width":488,"medium_large-height":761,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule3-1.png","large-width":488,"large-height":761,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule3-1.png","1536x1536-width":488,"1536x1536-height":761,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule3-1.png","2048x2048-width":488,"2048x2048-height":761,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule3-1-298x465.png","card_image-width":298,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule3-1.png","wide_image-width":488,"wide_image-height":761}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<pre><code style=\"padding: 0.5em;color: #333;background: #f8f8f8\">\r\n\r\n<span style=\"color: #998;font-style: italic\">\/\/creating a fuse contains itself to its assembly<\/span>\r\n\r\n<span style=\"color: #998;font-style: italic\">\/\/Assembly<\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/Asset Group: Medium Voltage Fuse Bank 14<\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/AssetType: Overhead Disconnect Fuse Holder 221<\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/Device<\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/Asset Group: Medium Votlage Fuse 29<\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/Asset Type: Overhead Cutout Sectionalizer 566<\/span>\r\n\r\n<span style=\"color: #998;font-style: italic\">\/\/$feature is an ElectricDevice Medium Voltage Fuse<\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/Get the ElecctricAssembly feature set <\/span>\r\n<span style=\"color: #333;font-weight: bold\">var<\/span> esFeatureSet = FeatureSetByname($datastore, <span style=\"color: #d14\">\"ElectricAssembly\"<\/span>, [<span style=\"color: #d14\">\"objectid\"<\/span>] ,<span style=\"color: #333;font-weight: 500\">false<\/span>)\r\n<span style=\"color: #998;font-style: italic\">\/\/We are only interested in Medium Voltage Fuse Bank assemblies<\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/ Asset Group Medium Voltage Fuse Bank Code 14<\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/ Asset Type Overhead Disconnect Fuse Holder code 221<\/span>\r\n<span style=\"color: #333;font-weight: bold\">var<\/span> assembliesFeatureSet = Filter(esFeatureSet, <span style=\"color: #d14\">\"ASSETGROUP = 14 AND ASSETTYPE = 221\"<\/span>)\r\n<span style=\"color: #998;font-style: italic\">\/\/buffer the $feature which is the Medium Voltage Fuse by 50 feet<\/span>\r\n<span style=\"color: #333;font-weight: bold\">var<\/span> g = buffer($feature, <span style=\"color: #008080\">50<\/span>)\r\n<span style=\"color: #998;font-style: italic\">\/\/interset and find any fuse banks within 50 feet  <\/span>\r\n<span style=\"color: #333;font-weight: bold\">var<\/span> intersectedAssemblies = Intersects(assembliesFeatureSet,g)\r\n<span style=\"color: #998;font-style: italic\">\/\/make sure we have some results, if not just return<\/span>\r\n<span style=\"color: #333;font-weight: bold\">if<\/span> (count(intersectedAssemblies) == <span style=\"color: #008080\">0<\/span>) \r\n  <span style=\"color: #333;font-weight: bold\">return<\/span> $feature.notes;\r\n\r\n<span style=\"color: #998;font-style: italic\">\/\/get the first assembly we find<\/span>\r\n<span style=\"color: #333;font-weight: bold\">var<\/span> assembly = first(intersectedAssemblies)\r\n<span style=\"color: #998;font-style: italic\">\/\/return the dictionary<\/span>\r\n<span style=\"color: #333;font-weight: bold\">return<\/span> {\r\n         <span style=\"color: #998;font-style: italic\">\/\/we want to just return the value of field `notes` no change require<\/span>\r\n         <span style=\"color: #d14\">\"result\"<\/span>: $feature.notes,\r\n         <span style=\"color: #998;font-style: italic\">\/\/this keyword indicates an edit that need to happen, its an array since we can make many edits<\/span>\r\n         <span style=\"color: #d14\">\"edit\"<\/span>: \r\n              [\r\n                {\r\n                 <span style=\"color: #998;font-style: italic\">\/\/the other class we want to edit, the assembly<\/span>\r\n                 <span style=\"color: #d14\">\"className\"<\/span>: <span style=\"color: #d14\">\"ElectricAssembly\"<\/span>,\r\n                <span style=\"color: #998;font-style: italic\">\/\/the type of edit, in this case `updates` are always used when modifying associations, its an array since we can make many updates<\/span>\r\n                 <span style=\"color: #d14\">\"updates\"<\/span>:\r\n                 [\r\n                   {\r\n                   <span style=\"color: #998;font-style: italic\">\/\/we want to find what assembly to associate with, we can either use the objectId or the globalId<\/span>\r\n                   <span style=\"color: #d14\">\"objectID\"<\/span>: assembly.objectid,\r\n                   <span style=\"color: #998;font-style: italic\">\/\/I want the assembly feature to be the $feature's 'container' ($feature is the fuse device)<\/span>\r\n                   <span style=\"color: #d14\">\"associationType\"<\/span>: <span style=\"color: #d14\">'container'<\/span>\r\n                   }\r\n                 ]\r\n                }\r\n              ]\r\n            }\r\n<\/code><\/pre>\n"},{"acf_fc_layout":"content","content":"<h1>Creating a container feature associate all nearby features as content to it.<\/h1>\n<p>We want to create a fuse bank and associate it all nearby fuses as content. This time we want to make sure that the nearby fuses are not already contained to any other containers.<\/p>\n<p>&nbsp;<\/p>\n<p>We will create a calculation rule on the ElectricAssembly class as follows<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":668762,"id":668762,"title":"Attribute rules creates containment association","filename":"rule4-1.png","filesize":10668,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule4-1.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/electric-gas\/advanced-attribute-rules-creating-utility-network-associations-with-attribute-rules\/rule4-1","alt":"Attribute rules creates containment association","author":"7511","description":"Attribute rules creates containment association","caption":"Attribute rules creates containment association","name":"rule4-1","status":"inherit","uploaded_to":668662,"date":"2019-11-27 21:31:40","modified":"2019-11-27 21:32:28","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":433,"height":618,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule4-1-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule4-1.png","medium-width":183,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule4-1.png","medium_large-width":433,"medium_large-height":618,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule4-1.png","large-width":433,"large-height":618,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule4-1.png","1536x1536-width":433,"1536x1536-height":618,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule4-1.png","2048x2048-width":433,"2048x2048-height":618,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule4-1-326x465.png","card_image-width":326,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule4-1.png","wide_image-width":433,"wide_image-height":618}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<pre><code style=\"padding: 0.5em;color: #333;background: #f8f8f8\">\r\n\r\n<span style=\"color: #998;font-style: italic\">\/\/creating assembly  <\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/$feature is the ElectricAssembly (fuse bank)<\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/Get the ElectricDevice featureset <\/span>\r\n<span style=\"color: #333;font-weight: bold\">var<\/span> edFeatureSet = FeatureSetByname($datastore, <span style=\"color: #d14\">\"ElectricDevice\"<\/span>, [<span style=\"color: #d14\">\"objectid\"<\/span>] ,<span style=\"color: #333;font-weight: 500\">false<\/span>)\r\n<span style=\"color: #998;font-style: italic\">\/\/ We are only interested in Medium Voltage Fuse of type Overhead Cutout Sectionalizer<\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/Device<\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/Asset Group: Medium Votlage Fuse 29<\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/Asset Type: Overhead Cutout Sectionalizer 566<\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/ Also we only want devices that are not already associated with anything. <\/span>\r\n<span style=\"color: #333;font-weight: bold\">var<\/span> mvfFeatureSet = Filter(edFeatureSet, <span style=\"color: #d14\">\"ASSETGROUP = 29 AND ASSETTYPE = 566 AND ASSOCIATIONSTATUS = 0 \"<\/span>)\r\n<span style=\"color: #998;font-style: italic\">\/\/buffer the assembly<\/span>\r\n<span style=\"color: #333;font-weight: bold\">var<\/span> g = buffer($feature, <span style=\"color: #008080\">50<\/span>)\r\n<span style=\"color: #998;font-style: italic\">\/\/Find all interesected devices<\/span>\r\n<span style=\"color: #333;font-weight: bold\">var<\/span> intersectedDevices = Intersects(mvfFeatureSet,g)\r\n<span style=\"color: #998;font-style: italic\">\/\/if there isn't any thats ok just exit<\/span>\r\n<span style=\"color: #333;font-weight: bold\">if<\/span> (count(intersectedDevices) == <span style=\"color: #008080\">0<\/span>) <span style=\"color: #333;font-weight: bold\">return<\/span> $feature.notes\r\n<span style=\"color: #998;font-style: italic\">\/\/create an array of junctions to be returned and attached<\/span>\r\n<span style=\"color: #333;font-weight: bold\">var<\/span> updatedDevices = []\r\n<span style=\"color: #333;font-weight: bold\">var<\/span> dCount = <span style=\"color: #008080\">0<\/span>;\r\n<span style=\"color: #333;font-weight: bold\">for<\/span> (<span style=\"color: #333;font-weight: bold\">var<\/span> f <span style=\"color: #333;font-weight: bold\">in<\/span> intersectedDevices){\r\n  updatedDevices[dCount++] = {\r\n             <span style=\"color: #998;font-style: italic\">\/\/the objectId of the junction<\/span>\r\n             <span style=\"color: #d14\">\"objectID\"<\/span>: f.objectid,\r\n             <span style=\"color: #998;font-style: italic\">\/\/we want the device to be content to $feature assembly<\/span>\r\n             <span style=\"color: #d14\">\"associationType\"<\/span>: <span style=\"color: #d14\">'content'<\/span>\r\n            }\r\n}\r\n\r\n<span style=\"color: #998;font-style: italic\">\/\/return the dictionary<\/span>\r\n<span style=\"color: #333;font-weight: bold\">return<\/span> {\r\n         <span style=\"color: #998;font-style: italic\">\/\/we want to just return the value of field `notes` no change require<\/span>\r\n         <span style=\"color: #d14\">\"result\"<\/span>: $feature.notes,\r\n         <span style=\"color: #998;font-style: italic\">\/\/this keyword indicates an edit that need to happen, its an array since we can make many edits<\/span>\r\n         <span style=\"color: #d14\">\"edit\"<\/span>: \r\n              [\r\n                {\r\n                 <span style=\"color: #998;font-style: italic\">\/\/the other class we want to edit<\/span>\r\n                 <span style=\"color: #d14\">\"className\"<\/span>: <span style=\"color: #d14\">\"ElectricDevice\"<\/span>,\r\n                 <span style=\"color: #998;font-style: italic\">\/\/the list of updates we need to make<\/span>\r\n                 <span style=\"color: #d14\">\"updates\"<\/span>:updatedDevices\r\n                 \r\n                }\r\n              ]\r\n            }\r\n<\/code><\/pre>\n"},{"acf_fc_layout":"content","content":"<h1>Creating a feature creates a connectivity association with another feature<\/h1>\n<p>In this example, we want when we create a Low Voltage Line End to automatically creates a connectivity association to the Low Side terminal of the first Transformer it finds.<\/p>\n<p>&nbsp;<\/p>\n<p>We will create a calculation rule on the ElectricJunction class as follows<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":668772,"id":668772,"title":"Attribute Rules connectivity associations","filename":"rule5.png","filesize":13095,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule5.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/electric-gas\/advanced-attribute-rules-creating-utility-network-associations-with-attribute-rules\/rule5","alt":"Attribute Rules connectivity associations","author":"7511","description":"Attribute Rules creating features and associations ","caption":"Attribute Rules connectivity associations","name":"rule5","status":"inherit","uploaded_to":668662,"date":"2019-11-27 21:33:40","modified":"2019-11-27 21:35:57","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":504,"height":666,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule5-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule5.png","medium-width":198,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule5.png","medium_large-width":504,"medium_large-height":666,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule5.png","large-width":504,"large-height":666,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule5.png","1536x1536-width":504,"1536x1536-height":666,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule5.png","2048x2048-width":504,"2048x2048-height":666,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule5-352x465.png","card_image-width":352,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule5.png","wide_image-width":504,"wide_image-height":666}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<pre><code style=\"padding: 0.5em;color: #333;background: #f8f8f8\">\r\n\r\n <span style=\"color: #998;font-style: italic\">\/\/creating junction  <\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/$feature is the ElectricJunction (Low Voltage Line End)<\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/Get the ElectricDevice featureset <\/span>\r\n<span style=\"color: #333;font-weight: bold\">var<\/span> edFeatureSet = FeatureSetByname($datastore, <span style=\"color: #d14\">\"ElectricDevice\"<\/span>, [<span style=\"color: #d14\">\"objectid\"<\/span>] ,<span style=\"color: #333;font-weight: 500\">false<\/span>)\r\n<span style=\"color: #998;font-style: italic\">\/\/buffer the junction<\/span>\r\n<span style=\"color: #333;font-weight: bold\">var<\/span> g =  Buffer($feature,<span style=\"color: #008080\">50<\/span>)\r\n<span style=\"color: #998;font-style: italic\">\/\/We are only interested in transformers <\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/Asset Group: Medium Voltage Transformer 38<\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/Asset Type: Overhead Three Phase 788<\/span>\r\n<span style=\"color: #333;font-weight: bold\">var<\/span> mvtFeatureSet = Filter(edFeatureSet, <span style=\"color: #d14\">\"ASSETGROUP = 38 AND ASSETTYPE = 788\"<\/span>)\r\n<span style=\"color: #998;font-style: italic\">\/\/find all intersected transformers<\/span>\r\n<span style=\"color: #333;font-weight: bold\">var<\/span> intersetdTransformers = Intersects(mvtFeatureSet,g)\r\n<span style=\"color: #998;font-style: italic\">\/\/if nothing just return<\/span>\r\n<span style=\"color: #333;font-weight: bold\">if<\/span> (count(intersetdTransformers) == <span style=\"color: #008080\">0<\/span>) <span style=\"color: #333;font-weight: bold\">return<\/span> $feature.notes\r\n<span style=\"color: #998;font-style: italic\">\/\/get the first transformer<\/span>\r\n<span style=\"color: #333;font-weight: bold\">var<\/span> transformer = first(intersetdTransformers)\r\n<span style=\"color: #998;font-style: italic\">\/\/return the dictionary<\/span>\r\n<span style=\"color: #333;font-weight: bold\">return<\/span> {\r\n         <span style=\"color: #998;font-style: italic\">\/\/we want to just return the value of field `notes` no change require<\/span>\r\n         <span style=\"color: #d14\">\"result\"<\/span>: $feature.notes,\r\n         <span style=\"color: #998;font-style: italic\">\/\/this keyword indicates an edit that need to happen, its an array since we can make many edits<\/span>\r\n         <span style=\"color: #d14\">\"edit\"<\/span>: \r\n              [\r\n                {\r\n                 <span style=\"color: #998;font-style: italic\">\/\/the other class we want to edit, the Device<\/span>\r\n                 <span style=\"color: #d14\">\"className\"<\/span>: <span style=\"color: #d14\">\"ElectricDevice\"<\/span>,\r\n                <span style=\"color: #998;font-style: italic\">\/\/the type of edit, in this case `updates` are always used when modifying associations, its an array since we can make many updates<\/span>\r\n                 <span style=\"color: #d14\">\"updates\"<\/span>:\r\n                 [\r\n                   {\r\n                   <span style=\"color: #998;font-style: italic\">\/\/we want to find what assembly to associate with, we can either use the objectId or the globalId<\/span>\r\n                   <span style=\"color: #d14\">\"objectID\"<\/span>: transformer.objectid,\r\n                   <span style=\"color: #998;font-style: italic\">\/\/since Transformer is a multiterminal device, we need to specify which terminal to connect to<\/span>\r\n                   <span style=\"color: #d14\">\"toTerminal\"<\/span> : <span style=\"color: #d14\">\"XFR:Low\"<\/span>,\r\n                   <span style=\"color: #998;font-style: italic\">\/\/I want the assembly feature to be the $feature's 'container' ($feature is the fuse device)<\/span>\r\n                   <span style=\"color: #d14\">\"associationType\"<\/span>: <span style=\"color: #d14\">'connected'<\/span>\r\n                   }\r\n                 ]\r\n                }\r\n              ]\r\n            }\r\n \r\n<\/code><\/pre>\n"},{"acf_fc_layout":"content","content":"<h1>Creating a feature creates other features and associate them<\/h1>\n<p>So far in all our examples we were dealing with existing features to associate our $feature with. However, you can still use the normal dictionary to create other features and also associate them in the process. Here is an example<\/p>\n<p>&nbsp;<\/p>\n<p>We want to write an attribute rule that triggers on inserting a new assembly. Every time we create a medium voltage regulator bank, the attribute rule will create 3 medium voltage arresters and also creates a containment association between the bank and the arresters. Here is how to do it.<\/p>\n<p>&nbsp;<\/p>\n<p>We will create a calculation rule on the ElectricAssembly class as follows<\/p>\n<p>&nbsp;<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":668782,"id":668782,"title":"Attribute Rules creates features &amp; assocaitions","filename":"rule6.png","filesize":12000,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule6.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/electric-gas\/advanced-attribute-rules-creating-utility-network-associations-with-attribute-rules\/rule6","alt":"Attribute Rules creates features & assocaitions","author":"7511","description":"Attribute Rules creates features &amp; assocaitions","caption":"Attribute Rules creates features &amp; assocaitions","name":"rule6","status":"inherit","uploaded_to":668662,"date":"2019-11-27 21:38:03","modified":"2019-11-27 21:38:15","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":742,"height":620,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule6-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule6.png","medium-width":312,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule6.png","medium_large-width":742,"medium_large-height":620,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule6.png","large-width":742,"large-height":620,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule6.png","1536x1536-width":742,"1536x1536-height":620,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule6.png","2048x2048-width":742,"2048x2048-height":620,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule6-557x465.png","card_image-width":557,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/rule6.png","wide_image-width":742,"wide_image-height":620}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<pre><code style=\"padding: 0.5em;color: #333;background: #f8f8f8\">\r\n\r\n<span style=\"color: #998;font-style: italic\">\/\/Creating a three phase Medium Voltage Regulator bank asembly will create 3 arrestors and contain them.<\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/This can also be achieved with stamped template in pro<\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/ but the attribute rule version will work with any client since the AR is executd on the server<\/span>\r\n\r\n\r\n<span style=\"color: #998;font-style: italic\">\/\/buffer the point feature 40 feet, this will give us a circle polygon geometry <\/span>\r\n<span style=\"color: #333;font-weight: bold\">var<\/span> featureGeo = Geometry($feature)\r\n<span style=\"color: #998;font-style: italic\">\/\/create the geometry of the 3 Arresters, offset the z so we don't get errors.<\/span>\r\n<span style=\"color: #333;font-weight: bold\">var<\/span> a1Geo = Point({ <span style=\"color: #d14\">'x'<\/span>: featureGeo.x, <span style=\"color: #d14\">'y'<\/span>: featureGeo.y, <span style=\"color: #d14\">'z'<\/span>: <span style=\"color: #008080\">0<\/span>, <span style=\"color: #d14\">\"spatialReference\"<\/span>: featureGeo.spatialReference })\r\n<span style=\"color: #333;font-weight: bold\">var<\/span> a2Geo = Point({ <span style=\"color: #d14\">'x'<\/span>: featureGeo.x, <span style=\"color: #d14\">'y'<\/span>: featureGeo.y, <span style=\"color: #d14\">'z'<\/span>: <span style=\"color: #008080\">2<\/span>, <span style=\"color: #d14\">\"spatialReference\"<\/span>: featureGeo.spatialReference })\r\n<span style=\"color: #333;font-weight: bold\">var<\/span> a3Geo = Point({ <span style=\"color: #d14\">'x'<\/span>: featureGeo.x, <span style=\"color: #d14\">'y'<\/span>: featureGeo.y, <span style=\"color: #d14\">'z'<\/span>: <span style=\"color: #008080\">4<\/span>, <span style=\"color: #d14\">\"spatialReference\"<\/span>: featureGeo.spatialReference })\r\n\r\n\r\n<span style=\"color: #333;font-weight: bold\">return<\/span> {\r\n       <span style=\"color: #998;font-style: italic\">\/\/we want to just return the field no change require<\/span>\r\n      <span style=\"color: #d14\">\"result\"<\/span>: $feature.notes,\r\n       <span style=\"color: #998;font-style: italic\">\/\/this keyword indicates an edit that need to happen, its an array since we can make many edits<\/span>\r\n       <span style=\"color: #d14\">\"edit\"<\/span>: [  \r\n           {  \r\n               <span style=\"color: #998;font-style: italic\">\/\/the other class we want to edit<\/span>\r\n               <span style=\"color: #d14\">\"className\"<\/span> : <span style=\"color: #d14\">\"ElectricDevice\"<\/span>, \r\n               <span style=\"color: #998;font-style: italic\">\/\/the type of edit, in this case we want to add so we say `adds`, its an array since we can make many inserts<\/span>\r\n               <span style=\"color: #d14\">\"adds\"<\/span> : [\r\n                       \r\n                      {\r\n                            <span style=\"color: #998;font-style: italic\">\/\/the attribute of the feature we want to add, <\/span>\r\n                            <span style=\"color: #998;font-style: italic\">\/\/ we only want to populate the arrestor assetgroup and assettype these values are for Medium Voltage Arrester and MV Line Arrester<\/span>\r\n                            <span style=\"color: #d14\">\"attributes\"<\/span>:  \r\n                              {\r\n                                   <span style=\"color: #d14\">\"assetgroup\"<\/span>: <span style=\"color: #008080\">25<\/span> ,\r\n                                   <span style=\"color: #d14\">\"assetType\"<\/span>: <span style=\"color: #008080\">482<\/span>\r\n                              }, \r\n                            <span style=\"color: #998;font-style: italic\">\/\/we want to use the geometry to insert the arrester<\/span>\r\n                            <span style=\"color: #d14\">\"geometry\"<\/span>: a1Geo ,\r\n\r\n                            <span style=\"color: #998;font-style: italic\">\/\/I want the arrester point feature to be the $feature's 'content' ($feature is the Medium Voltage Regulator Bank assembly )<\/span>\r\n                            <span style=\"color: #d14\">\"associationType\"<\/span>: <span style=\"color: #d14\">'content'<\/span>\r\n\r\n                      },\r\n                      {\r\n                        <span style=\"color: #998;font-style: italic\">\/\/the attribute of the feature we want to add, <\/span>\r\n                        <span style=\"color: #998;font-style: italic\">\/\/ we only want to populate the arrestor assetgroup and assettype these values are for Medium Voltage Arrester and MV Line Arrester<\/span>\r\n                        <span style=\"color: #d14\">\"attributes\"<\/span>:  \r\n                          {\r\n                               <span style=\"color: #d14\">\"assetgroup\"<\/span>: <span style=\"color: #008080\">25<\/span> ,\r\n                               <span style=\"color: #d14\">\"assetType\"<\/span>: <span style=\"color: #008080\">482<\/span>\r\n                          }, \r\n                        <span style=\"color: #998;font-style: italic\">\/\/we want to use the geometry to insert the arrester<\/span>\r\n                        <span style=\"color: #d14\">\"geometry\"<\/span>: a2Geo ,\r\n\r\n                        <span style=\"color: #998;font-style: italic\">\/\/I want the arrester point feature to be the $feature's 'content' ($feature is the Medium Voltage Regulator Bank assembly )<\/span>\r\n                        <span style=\"color: #d14\">\"associationType\"<\/span>: <span style=\"color: #d14\">'content'<\/span>\r\n\r\n                  },\r\n                  {\r\n                    <span style=\"color: #998;font-style: italic\">\/\/the attribute of the feature we want to add, <\/span>\r\n                    <span style=\"color: #998;font-style: italic\">\/\/ we only want to populate the arrestor assetgroup and assettype these values are for Medium Voltage Arrester and MV Line Arrester<\/span>\r\n                    <span style=\"color: #d14\">\"attributes\"<\/span>:  \r\n                      {\r\n                           <span style=\"color: #d14\">\"assetgroup\"<\/span>: <span style=\"color: #008080\">25<\/span> ,\r\n                           <span style=\"color: #d14\">\"assetType\"<\/span>: <span style=\"color: #008080\">482<\/span>\r\n                      }, \r\n                    <span style=\"color: #998;font-style: italic\">\/\/we want to use the geometry to insert the arrester<\/span>\r\n                    <span style=\"color: #d14\">\"geometry\"<\/span>: a3Geo ,\r\n\r\n                    <span style=\"color: #998;font-style: italic\">\/\/I want the arrester point feature to be the $feature's 'content' ($feature is the Medium Voltage Regulator Bank assembly )<\/span>\r\n                    <span style=\"color: #d14\">\"associationType\"<\/span>: <span style=\"color: #d14\">'content'<\/span>\r\n\r\n                 }\r\n\r\n\r\n             ]\r\n\r\n\r\n            }\r\n      \r\n     ]\r\n\r\n}\r\n<\/code><\/pre>\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'\/>"}],"related_articles":"","card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/Untitled-design3.png","wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/Untitled-design4.png"},"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>Advanced Attribute Rules - Creating Utility Network Associations with attribute Rules<\/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\/electric-gas\/advanced-attribute-rules-creating-utility-network-associations-with-attribute-rules\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Advanced Attribute Rules - Creating Utility Network Associations with attribute Rules\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/electric-gas\/advanced-attribute-rules-creating-utility-network-associations-with-attribute-rules\" \/>\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:01+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\/electric-gas\/advanced-attribute-rules-creating-utility-network-associations-with-attribute-rules#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/electric-gas\/advanced-attribute-rules-creating-utility-network-associations-with-attribute-rules\"},\"author\":{\"name\":\"Hussein Nasser\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/78b7647b1db598b3c791d039593e5b2b\"},\"headline\":\"Advanced Attribute Rules &#8211; Creating Utility Network Associations with attribute Rules\",\"datePublished\":\"2019-02-11T21:53:36+00:00\",\"dateModified\":\"2020-02-19T15:22:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/electric-gas\/advanced-attribute-rules-creating-utility-network-associations-with-attribute-rules\"},\"wordCount\":11,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"keywords\":[\"arcade\",\"ArcGIS Utility Network Management extension\"],\"articleSection\":[\"Electric &amp; Gas Utilities\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/electric-gas\/advanced-attribute-rules-creating-utility-network-associations-with-attribute-rules#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/electric-gas\/advanced-attribute-rules-creating-utility-network-associations-with-attribute-rules\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/electric-gas\/advanced-attribute-rules-creating-utility-network-associations-with-attribute-rules\",\"name\":\"Advanced Attribute Rules - Creating Utility Network Associations with attribute Rules\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2019-02-11T21:53:36+00:00\",\"dateModified\":\"2020-02-19T15:22:01+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/electric-gas\/advanced-attribute-rules-creating-utility-network-associations-with-attribute-rules#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/electric-gas\/advanced-attribute-rules-creating-utility-network-associations-with-attribute-rules\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/electric-gas\/advanced-attribute-rules-creating-utility-network-associations-with-attribute-rules#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Advanced Attribute Rules &#8211; Creating Utility Network Associations with attribute Rules\"}]},{\"@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":"Advanced Attribute Rules - Creating Utility Network Associations with attribute Rules","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\/electric-gas\/advanced-attribute-rules-creating-utility-network-associations-with-attribute-rules","og_locale":"en_US","og_type":"article","og_title":"Advanced Attribute Rules - Creating Utility Network Associations with attribute Rules","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/electric-gas\/advanced-attribute-rules-creating-utility-network-associations-with-attribute-rules","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","article_modified_time":"2020-02-19T15:22:01+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\/electric-gas\/advanced-attribute-rules-creating-utility-network-associations-with-attribute-rules#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/electric-gas\/advanced-attribute-rules-creating-utility-network-associations-with-attribute-rules"},"author":{"name":"Hussein Nasser","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/78b7647b1db598b3c791d039593e5b2b"},"headline":"Advanced Attribute Rules &#8211; Creating Utility Network Associations with attribute Rules","datePublished":"2019-02-11T21:53:36+00:00","dateModified":"2020-02-19T15:22:01+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/electric-gas\/advanced-attribute-rules-creating-utility-network-associations-with-attribute-rules"},"wordCount":11,"commentCount":1,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"keywords":["arcade","ArcGIS Utility Network Management extension"],"articleSection":["Electric &amp; Gas Utilities"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/electric-gas\/advanced-attribute-rules-creating-utility-network-associations-with-attribute-rules#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/electric-gas\/advanced-attribute-rules-creating-utility-network-associations-with-attribute-rules","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/electric-gas\/advanced-attribute-rules-creating-utility-network-associations-with-attribute-rules","name":"Advanced Attribute Rules - Creating Utility Network Associations with attribute Rules","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2019-02-11T21:53:36+00:00","dateModified":"2020-02-19T15:22:01+00:00","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/electric-gas\/advanced-attribute-rules-creating-utility-network-associations-with-attribute-rules#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/electric-gas\/advanced-attribute-rules-creating-utility-network-associations-with-attribute-rules"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/utility-network\/electric-gas\/advanced-attribute-rules-creating-utility-network-associations-with-attribute-rules#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"Advanced Attribute Rules &#8211; Creating Utility Network Associations with attribute Rules"}]},{"@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 11, 2019","author_name":"Hussein Nasser","author_page":"https:\/\/www.esri.com\/arcgis-blog\/author\/hussein-nasser","custom_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/11\/Untitled-design4.png","primary_product":"ArcGIS Utility Network","tag_data":[{"term_id":32551,"name":"arcade","slug":"arcade","term_group":0,"term_taxonomy_id":32551,"taxonomy":"post_tag","description":"","parent":0,"count":113,"filter":"raw"},{"term_id":36071,"name":"ArcGIS Utility Network Management extension","slug":"arcgis-utility-network-management-extension","term_group":0,"term_taxonomy_id":36071,"taxonomy":"post_tag","description":"","parent":0,"count":8,"filter":"raw"}],"category_data":[{"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"}],"product_data":[{"term_id":36561,"name":"ArcGIS Pro","slug":"arcgis-pro","term_group":0,"term_taxonomy_id":36561,"taxonomy":"product","description":"","parent":0,"count":2036,"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\/668662","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=668662"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/668662\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=668662"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=668662"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=668662"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=668662"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=668662"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}