{"id":2973096,"date":"2026-04-09T12:36:18","date_gmt":"2026-04-09T19:36:18","guid":{"rendered":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=2973096"},"modified":"2026-06-25T11:24:53","modified_gmt":"2026-06-25T18:24:53","slug":"using-attribute-rules-to-edit-related-records","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/education\/using-attribute-rules-to-edit-related-records","title":{"rendered":"Using Attribute Rules to Edit Related Records"},"author":412439,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"_searchwp_excluded":""},"categories":[777102,430042],"tags":[],"industry":[],"product":[36561],"class_list":["post-2973096","blog","type-blog","status-publish","format-standard","hentry","category-arcade","category-education","product-arcgis-pro"],"acf":{"authors":[{"ID":412439,"user_firstname":"Caelyn","user_lastname":"Linane","nickname":"Caelyn Linane","user_nicename":"clinaneesri-com_esriinc","display_name":"Caelyn Linane","user_email":"clinane@esri.com","user_url":"","user_registered":"2025-10-14 14:26:48","user_description":"","user_avatar":"<img alt='' src='https:\/\/secure.gravatar.com\/avatar\/05a3b79ff20d690da8bc577ed1dde12f4b81c9a3a4bc012eaf1b1bd572b7ba40?s=96&#038;d=blank&#038;r=g' srcset='https:\/\/secure.gravatar.com\/avatar\/05a3b79ff20d690da8bc577ed1dde12f4b81c9a3a4bc012eaf1b1bd572b7ba40?s=192&#038;d=blank&#038;r=g 2x' class='avatar avatar-96 photo' height='96' width='96' loading='lazy' decoding='async'\/>"}],"short_description":"How to utilize attribute rules to automate updates between related datasets.","flexible_content":[{"acf_fc_layout":"content","content":"<p>While working on a case, I collaborated with product engineer <a href=\"https:\/\/www.esri.com\/arcgis-blog\/author\/hussein-nasser\">Hussein Nasser<\/a> and came across a workflow that utilized attribute rules to automate updates between related datasets. After the case, we agreed this was a valuable topic to explore further due to its relevance in real-world scenarios and everyday GIS workflows. The following scenarios outline three ways that you can use attribute rules to update your data automatically.<\/p>\n"},{"acf_fc_layout":"content","content":"<h2><strong>Requirements<\/strong><\/h2>\n"},{"acf_fc_layout":"content","content":"<p>The automation happens because of three things working together:<\/p>\n<ul>\n<li data-start=\"1068\" data-end=\"1327\">\n<p data-start=\"159\" data-end=\"285\">A parent\u2013child relationship that links a main feature (parent) to related dependent records (child) through a relationship class.<\/p>\n<ul>\n<li>We will want to use the <a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/latest\/tool-reference\/data-management\/create-relationship-class.htm\">Create Relationship Class<\/a> tool to do this.<\/li>\n<li data-start=\"1068\" data-end=\"1327\">\n<p data-start=\"159\" data-end=\"285\">Since the child record is being updated, the attribute rule must be placed on the child layer; otherwise, it will not run.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>The rule is configured to run on UPDATE\n<ul>\n<li>You can set the rules to insert, delete, and update, but for these examples, we will just be focusing on the update trigger.<\/li>\n<\/ul>\n<\/li>\n<li>The script returns an <a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/latest\/help\/data\/geodatabases\/overview\/attribute-rule-dictionary-keywords.htm#GUID-8975042B-75FA-4FDB-8DDE-78B39819E177:~:text=%22attachment%22%0A%20%20%20%20%20%20%20%20%7D%5D%0A%20%20%20%20%7D%5D%0A%7D-,updates,dictionary%20to%20perform%20updates%20to%20a%20specified%20feature%20class%20or%20table.,-Keyword%20parameter\">update<\/a> payload that updates the parent. A payload is the data and information packaged together and sent as part of the request to update a feature.<\/li>\n<\/ul>\n<p>Once those are in place, ArcGIS Pro can do the rest!<\/p>\n"},{"acf_fc_layout":"content","content":"<h2><strong>1st Scenario: Tracking Hydrant Inspections<\/strong><\/h2>\n"},{"acf_fc_layout":"image","image":{"ID":2973177,"id":2973177,"title":"Untitled design","filename":"Untitled-design-2.gif","filesize":3004558,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/Untitled-design-2.gif","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/education\/using-attribute-rules-to-edit-related-records\/untitled-design-79","alt":"","author":"412439","description":"","caption":"","name":"untitled-design-79","status":"inherit","uploaded_to":2973096,"date":"2026-06-25 17:27:19","modified":"2026-06-25 17:27:19","menu_order":0,"mime_type":"image\/gif","type":"image","subtype":"gif","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":1728,"height":864,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/Untitled-design-2-213x200.gif","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/Untitled-design-2.gif","medium-width":464,"medium-height":232,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/Untitled-design-2.gif","medium_large-width":768,"medium_large-height":384,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/Untitled-design-2.gif","large-width":1728,"large-height":864,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/Untitled-design-2-1536x768.gif","1536x1536-width":1536,"1536x1536-height":768,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/Untitled-design-2.gif","2048x2048-width":1728,"2048x2048-height":864,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/Untitled-design-2-826x413.gif","card_image-width":826,"card_image-height":413,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/Untitled-design-2.gif","wide_image-width":1728,"wide_image-height":864}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>Firemen inspect fire hydrants across the city and record if each one is working properly. Each inspection is stored in a table, and the status of the parent hydrant is automatically updated to the feature class based on the latest inspection. This way, every hydrant always shows its current inspection status.<\/p>\n"},{"acf_fc_layout":"content","content":"<h3><strong>Data Structure<\/strong><\/h3>\n"},{"acf_fc_layout":"content","content":"<h4><strong>The Relationship Class<\/strong><\/h4>\n"},{"acf_fc_layout":"content","content":"<p>This workflow relies on a relationship between the hydrant feature class (parent) and the inspection table (child).<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":2973178,"id":2973178,"title":"FINALHYDRANTRELATIONSHIP","filename":"FINALHYDRANTRELATIONSHIP.jpg","filesize":11764,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/FINALHYDRANTRELATIONSHIP.jpg","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/education\/using-attribute-rules-to-edit-related-records\/finalhydrantrelationship","alt":"","author":"412439","description":"","caption":"","name":"finalhydrantrelationship","status":"inherit","uploaded_to":2973096,"date":"2026-06-25 17:29:26","modified":"2026-06-25 17:29:26","menu_order":0,"mime_type":"image\/jpeg","type":"image","subtype":"jpeg","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":648,"height":98,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/FINALHYDRANTRELATIONSHIP-213x98.jpg","thumbnail-width":213,"thumbnail-height":98,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/FINALHYDRANTRELATIONSHIP.jpg","medium-width":464,"medium-height":70,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/FINALHYDRANTRELATIONSHIP.jpg","medium_large-width":648,"medium_large-height":98,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/FINALHYDRANTRELATIONSHIP.jpg","large-width":648,"large-height":98,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/FINALHYDRANTRELATIONSHIP.jpg","1536x1536-width":648,"1536x1536-height":98,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/FINALHYDRANTRELATIONSHIP.jpg","2048x2048-width":648,"2048x2048-height":98,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/FINALHYDRANTRELATIONSHIP.jpg","card_image-width":648,"card_image-height":98,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/FINALHYDRANTRELATIONSHIP.jpg","wide_image-width":648,"wide_image-height":98}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>To create this relationship class the feature and table must contain the following:<br \/>\n<strong>\u00a0<\/strong>Each inspection must be tied to the correct hydrant by a unique identifier:<br \/>\n\u2022 <strong>Parent:<\/strong> GlobalID<br \/>\n\u2022 <strong>Child:<\/strong> HydrantGlobalID<\/p>\n"},{"acf_fc_layout":"content","content":"<h5><strong>Create Relationship Class Tool Parameters<\/strong><\/h5>\n"},{"acf_fc_layout":"image","image":{"ID":2973179,"id":2973179,"title":"HydrantsRelationship","filename":"HydrantsRelationship.jpg","filesize":50263,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/HydrantsRelationship.jpg","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/education\/using-attribute-rules-to-edit-related-records\/hydrantsrelationship","alt":"","author":"412439","description":"","caption":"","name":"hydrantsrelationship","status":"inherit","uploaded_to":2973096,"date":"2026-06-25 17:30:18","modified":"2026-06-25 17:30:18","menu_order":0,"mime_type":"image\/jpeg","type":"image","subtype":"jpeg","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":1021,"height":292,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/HydrantsRelationship-213x200.jpg","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/HydrantsRelationship.jpg","medium-width":464,"medium-height":133,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/HydrantsRelationship.jpg","medium_large-width":768,"medium_large-height":220,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/HydrantsRelationship.jpg","large-width":1021,"large-height":292,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/HydrantsRelationship.jpg","1536x1536-width":1021,"1536x1536-height":292,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/HydrantsRelationship.jpg","2048x2048-width":1021,"2048x2048-height":292,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/HydrantsRelationship-826x236.jpg","card_image-width":826,"card_image-height":236,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/HydrantsRelationship.jpg","wide_image-width":1021,"wide_image-height":292}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>The child table contains the field where edits occur, while the parent feature class includes a corresponding field that is updated by the attribute rule.<br \/>\n\u2022 <strong>Parent:<\/strong> Inspected (current hydrant status)<br \/>\n\u2022 <strong>Child:<\/strong> Inspected (inspection result)<\/p>\n<p>This relationship allows the rule to identify which hydrant should be updated.<\/p>\n"},{"acf_fc_layout":"content","content":"<h4><strong>The Update Payload:<\/strong><\/h4>\n"},{"acf_fc_layout":"content","content":"<p>Once a relationship class is established, you can begin building your Arcade attribute rule expression. While the logic can be customized to fit your project\u2019s needs, it must include an update payload at the end.<\/p>\n<p>This payload:<br \/>\n\u2022 Identifies the parent layer to update<br \/>\n\u2022 Targets the correct feature using the GlobalID<br \/>\n\u2022 Updates the specified field (Inspected)<br \/>\n\u2022 Returns the payload to apply the edit<\/p>\n"},{"acf_fc_layout":"content","content":"<h3><strong>The Attribute Rule Expression<\/strong><\/h3>\n"},{"acf_fc_layout":"blockquote","content":"<pre><code style=\"color: #24292e;background: #ffffff;padding: 1em\">\r\n<span style=\"color: #6a737d\">\/\/ When a hydrant inspection is updated, update the Inspected status on the parent hydrant<\/span>\r\n\r\n<span style=\"color: #6a737d\">\/\/ Initialize variables<\/span>\r\n<span style=\"color: #d73a49\">var<\/span> Inspected = <span style=\"color: #005cc5\">0<\/span>;       <span style=\"color: #6a737d\">\/\/ Temporary variable for the parent<\/span>\r\n<span style=\"color: #d73a49\">var<\/span> hydrant = <span style=\"color: #005cc5\">null<\/span>;      <span style=\"color: #6a737d\">\/\/ Parent hydrant record<\/span>\r\n<span style=\"color: #d73a49\">var<\/span> fsHydrant;           <span style=\"color: #6a737d\">\/\/ FeatureSet for querying hydrant<\/span>\r\n<span style=\"color: #d73a49\">var<\/span> payLoad = {};        <span style=\"color: #6a737d\">\/\/ Payload for updating parent<\/span>\r\n\r\n<span style=\"color: #6a737d\">\/\/ Only run this script on updates<\/span>\r\n<span style=\"color: #d73a49\">if<\/span> (<span style=\"color: #e36209\">$editContext<\/span>.editType == <span style=\"color: #032f62\">&quot;UPDATE&quot;<\/span>) {\r\n\r\n    <span style=\"color: #6a737d\">\/\/ Get the parent hydrant GlobalID from Fire Hydrants<\/span>\r\n    <span style=\"color: #d73a49\">var<\/span> hguid = <span style=\"color: #e36209\">$feature<\/span>.HydrantGlobalID;\r\n    <span style=\"color: #6a737d\">\/\/  Get related Fire Hydrants via the GlobalID<\/span>\r\n    fsHydrant = <span style=\"color: #e36209\">Filter<\/span>(\r\n        <span style=\"color: #e36209\">FeatureSetByName<\/span>(<span style=\"color: #e36209\">$datastore<\/span>, <span style=\"color: #032f62\">&quot;Fire_Hydrants&quot;<\/span>), \r\n        <span style=\"color: #032f62\">&quot;globalid = @hguid&quot;<\/span>\r\n    );\r\n    hydrant = <span style=\"color: #e36209\">First<\/span>(fsHydrant);\r\n\r\n    <span style=\"color: #6a737d\">\/\/ If parent hydrant not found, do nothing<\/span>\r\n    <span style=\"color: #d73a49\">if<\/span> (<span style=\"color: #e36209\">IsEmpty<\/span>(hydrant)) {\r\n        <span style=\"color: #d73a49\">return<\/span>;\r\n    }\r\n\r\n    <span style=\"color: #6a737d\">\/\/ Get the child inspection via the relatipnship class<\/span>\r\n    <span style=\"color: #d73a49\">var<\/span> fsInspections = <span style=\"color: #e36209\">FeatureSetByRelationshipClass<\/span>(\r\n        hydrant, \r\n        <span style=\"color: #032f62\">&quot;Fire_Hydrants_Hydrant_Inspections&quot;<\/span>\r\n    );\r\n    <span style=\"color: #d73a49\">var<\/span> child = <span style=\"color: #e36209\">First<\/span>(fsInspections); <span style=\"color: #6a737d\">\/\/ Expecting only one inspection<\/span>\r\n\r\n    <span style=\"color: #6a737d\">\/\/ Determine parent status from the child table inspection<\/span>\r\n    <span style=\"color: #d73a49\">if<\/span> (<span style=\"color: #e36209\">IsEmpty<\/span>(child)) {\r\n        Inspected = <span style=\"color: #005cc5\">0<\/span>;  <span style=\"color: #6a737d\">\/\/ Not inspected<\/span>\r\n    } <span style=\"color: #d73a49\">else<\/span> {\r\n        Inspected = child.Inspected; <span style=\"color: #6a737d\">\/\/ Copy child status<\/span>\r\n    }\r\n\r\n    <span style=\"color: #6a737d\">\/\/ Build payload to update the parent construction site<\/span>\r\n    payLoad = {\r\n        <span style=\"color: #032f62\">&quot;edit&quot;<\/span>: [\r\n            {\r\n                <span style=\"color: #032f62\">&quot;className&quot;<\/span>: <span style=\"color: #032f62\">&quot;Fire_Hydrants&quot;<\/span>,\r\n                <span style=\"color: #032f62\">&quot;updates&quot;<\/span>: [\r\n                    {\r\n                        <span style=\"color: #032f62\">&quot;globalId&quot;<\/span>: hydrant.globalid,\r\n                        <span style=\"color: #032f62\">&quot;attributes&quot;<\/span>: {\r\n                            <span style=\"color: #032f62\">&quot;Inspected&quot;<\/span>: Inspected\r\n                        }\r\n                    }\r\n                ]\r\n            }\r\n        ]\r\n    };\r\n\r\n    <span style=\"color: #6a737d\">\/\/ Return payload to execute update<\/span>\r\n    <span style=\"color: #d73a49\">return<\/span> payLoad;\r\n}\r\n<\/code><\/pre>\n"},{"acf_fc_layout":"content","content":"<h3><strong>How It Works<\/strong><\/h3>\n"},{"acf_fc_layout":"content","content":"<p>When an inspection is created or updated, the attribute rule:<br \/>\n\u2022 Finds the related hydrant using the GlobalID<br \/>\n\u2022 Retrieves the latest inspection record<br \/>\n\u2022 Updates the hydrant\u2019s Inspected field<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":2973181,"id":2973181,"title":"S1_Diagram","filename":"S1_Diagram.jpg","filesize":30239,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/S1_Diagram.jpg","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/education\/using-attribute-rules-to-edit-related-records\/s1_diagram","alt":"","author":"412439","description":"","caption":"","name":"s1_diagram","status":"inherit","uploaded_to":2973096,"date":"2026-06-25 17:32:04","modified":"2026-06-25 17:32:04","menu_order":0,"mime_type":"image\/jpeg","type":"image","subtype":"jpeg","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":609,"height":375,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/S1_Diagram-213x200.jpg","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/S1_Diagram.jpg","medium-width":424,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/S1_Diagram.jpg","medium_large-width":609,"medium_large-height":375,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/S1_Diagram.jpg","large-width":609,"large-height":375,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/S1_Diagram.jpg","1536x1536-width":609,"1536x1536-height":375,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/S1_Diagram.jpg","2048x2048-width":609,"2048x2048-height":375,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/S1_Diagram.jpg","card_image-width":609,"card_image-height":375,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/S1_Diagram.jpg","wide_image-width":609,"wide_image-height":375}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<h2><strong>2<sup>nd<\/sup> Scenario: Monitoring Main Fuse Box Status<\/strong><\/h2>\n"},{"acf_fc_layout":"image","image":{"ID":2973183,"id":2973183,"title":"Scenario2_final","filename":"Scenario2_final.gif","filesize":5337740,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/Scenario2_final.gif","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/education\/using-attribute-rules-to-edit-related-records\/scenario2_final","alt":"","author":"412439","description":"","caption":"","name":"scenario2_final","status":"inherit","uploaded_to":2973096,"date":"2026-06-25 17:32:53","modified":"2026-06-25 17:32:53","menu_order":0,"mime_type":"image\/gif","type":"image","subtype":"gif","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":1728,"height":864,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/Scenario2_final-213x200.gif","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/Scenario2_final.gif","medium-width":464,"medium-height":232,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/Scenario2_final.gif","medium_large-width":768,"medium_large-height":384,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/Scenario2_final.gif","large-width":1728,"large-height":864,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/Scenario2_final-1536x768.gif","1536x1536-width":1536,"1536x1536-height":768,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/Scenario2_final.gif","2048x2048-width":1728,"2048x2048-height":864,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/Scenario2_final-826x413.gif","card_image-width":826,"card_image-height":413,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/Scenario2_final.gif","wide_image-width":1728,"wide_image-height":864}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>Electricians inspect the status of fuse boxes in a neighborhood. There are 3-5 house fuse boxes connected to a main fuse box on an electrical pole. The status of the main parent fuse box is automatically updated based on the latest inspections of all related house fuses.<\/p>\n"},{"acf_fc_layout":"content","content":"<h3><strong>Data Structure<\/strong><\/h3>\n"},{"acf_fc_layout":"content","content":"<h4><strong>The Relationship Class<\/strong><\/h4>\n"},{"acf_fc_layout":"content","content":"<p>This workflow relies on a relationship between the main fuse box feature class (parent) and the house fuse box feature class (child).<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":2973219,"id":2973219,"title":"Scenario2GDB","filename":"Scenario2GDB.jpg","filesize":12382,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/04\/Scenario2GDB.jpg","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/education\/using-attribute-rules-to-edit-related-records\/scenario2gdb","alt":"","author":"412439","description":"","caption":"","name":"scenario2gdb","status":"inherit","uploaded_to":2973096,"date":"2026-06-25 18:16:38","modified":"2026-06-25 18:16:38","menu_order":0,"mime_type":"image\/jpeg","type":"image","subtype":"jpeg","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":644,"height":99,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/04\/Scenario2GDB-213x99.jpg","thumbnail-width":213,"thumbnail-height":99,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/04\/Scenario2GDB.jpg","medium-width":464,"medium-height":71,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/04\/Scenario2GDB.jpg","medium_large-width":644,"medium_large-height":99,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/04\/Scenario2GDB.jpg","large-width":644,"large-height":99,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/04\/Scenario2GDB.jpg","1536x1536-width":644,"1536x1536-height":99,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/04\/Scenario2GDB.jpg","2048x2048-width":644,"2048x2048-height":99,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/04\/Scenario2GDB.jpg","card_image-width":644,"card_image-height":99,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/04\/Scenario2GDB.jpg","wide_image-width":644,"wide_image-height":99}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>A unique identifier is also required to establish the relationship between the two datasets, ensuring that each house fuse record is correctly linked to its associated main fuse box.<\/p>\n<ul>\n<li>Parent GlobalID Field: <strong>GlobalID<\/strong><\/li>\n<li>Child Parent-ID Field: <strong>Main_Fuse_Box_GlobalID<\/strong><\/li>\n<\/ul>\n"},{"acf_fc_layout":"content","content":"<h5><strong>Create Relationship Class Tool Parameters<\/strong><\/h5>\n"},{"acf_fc_layout":"image","image":{"ID":2973188,"id":2973188,"title":"FuseRelationship","filename":"FuseRelationship.jpg","filesize":51274,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/FuseRelationship.jpg","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/education\/using-attribute-rules-to-edit-related-records\/fuserelationship","alt":"","author":"412439","description":"","caption":"","name":"fuserelationship","status":"inherit","uploaded_to":2973096,"date":"2026-06-25 17:36:51","modified":"2026-06-25 17:36:51","menu_order":0,"mime_type":"image\/jpeg","type":"image","subtype":"jpeg","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":1014,"height":290,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/FuseRelationship-213x200.jpg","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/FuseRelationship.jpg","medium-width":464,"medium-height":133,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/FuseRelationship.jpg","medium_large-width":768,"medium_large-height":220,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/FuseRelationship.jpg","large-width":1014,"large-height":290,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/FuseRelationship.jpg","1536x1536-width":1014,"1536x1536-height":290,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/FuseRelationship.jpg","2048x2048-width":1014,"2048x2048-height":290,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/FuseRelationship-826x236.jpg","card_image-width":826,"card_image-height":236,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/FuseRelationship.jpg","wide_image-width":1014,"wide_image-height":290}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>In this case, the parent feature includes a Main_Fuse_Box_Status field, while the child feature class contains a House_Fuse_Box_Status field to store the condition of each individual fuse.<\/p>\n<ul>\n<li>Parent Status Field: <strong>Main_Fuse_Box_Status<\/strong><\/li>\n<li>Child Status Field: <strong>House_Fuse_Box_Status<\/strong><\/li>\n<\/ul>\n"},{"acf_fc_layout":"content","content":"<h4><strong>The Update Payload<\/strong><\/h4>\n"},{"acf_fc_layout":"content","content":"<p>In this example, the rule evaluates the status of all related house fuse boxes and determines the correct value for the parent main fuse box. Then the expression ends with an update payload, which:<br \/>\n\u2022 Identifies the parent layer to update (Main_Fuse_Box)<br \/>\n\u2022 Targets the correct main fuse box using the GlobalID<br \/>\n\u2022 Updates the Main_Fuse_Box_Status field with the calculated value<br \/>\n\u2022 Returns the payload to apply the edit<\/p>\n<p>&nbsp;<\/p>\n"},{"acf_fc_layout":"content","content":"<h3><strong>The Attribute Rule Expression<\/strong><\/h3>\n"},{"acf_fc_layout":"blockquote","content":"<pre><code style=\"color: #24292e;background: #ffffff;padding: 1em\">\r\n<span style=\"color: #6a737d\">\/\/ When a house fuse is updated, update the status on the main fuse box<\/span>\r\n<span style=\"color: #d73a49\">var<\/span> FuseBoxStatus = <span style=\"color: #005cc5\">0<\/span>;  <span style=\"color: #6a737d\">\/\/ Temporary variable to calculate parent status<\/span>\r\n<span style=\"color: #d73a49\">var<\/span> FuseBoxRecord = <span style=\"color: #005cc5\">null<\/span>;\r\n<span style=\"color: #d73a49\">var<\/span> fsFuseBox;\r\n<span style=\"color: #d73a49\">var<\/span> payLoad = {};\r\n<span style=\"color: #6a737d\">\/\/ Only run on updates<\/span>\r\n<span style=\"color: #d73a49\">if<\/span> (<span style=\"color: #e36209\">$editContext<\/span>.editType == <span style=\"color: #032f62\">&quot;UPDATE&quot;<\/span>) {\r\n    <span style=\"color: #6a737d\">\/\/ Get the parent fuse box ID from the child house fuse<\/span>\r\n    <span style=\"color: #d73a49\">var<\/span> ParentFuseBoxGlobalID = <span style=\"color: #e36209\">$feature<\/span>.Main_Fuse_Box_GlobalID;\r\n    <span style=\"color: #d73a49\">if<\/span> (<span style=\"color: #e36209\">IsEmpty<\/span>(ParentFuseBoxGlobalID)) {\r\n        <span style=\"color: #d73a49\">return<\/span>;\r\n    }\r\n    <span style=\"color: #6a737d\">\/\/ Get the parent fuse box record<\/span>\r\n    fsFuseBox = <span style=\"color: #e36209\">Filter<\/span>(\r\n        <span style=\"color: #e36209\">FeatureSetByName<\/span>(<span style=\"color: #e36209\">$datastore<\/span>, <span style=\"color: #032f62\">&quot;Main_Fuse_Box&quot;<\/span>),\r\n        <span style=\"color: #032f62\">&quot;GlobalID = @ParentFuseBoxGlobalID&quot;<\/span>\r\n    );\r\n    FuseBoxRecord = <span style=\"color: #e36209\">First<\/span>(fsFuseBox);\r\n    <span style=\"color: #6a737d\">\/\/ If parent fuse box not found, do nothing<\/span>\r\n    <span style=\"color: #d73a49\">if<\/span> (<span style=\"color: #e36209\">IsEmpty<\/span>(FuseBoxRecord)) {\r\n        <span style=\"color: #d73a49\">return<\/span>;\r\n    }\r\n    <span style=\"color: #6a737d\">\/\/ Get all related house fuses via the relationship class<\/span>\r\n    <span style=\"color: #d73a49\">var<\/span> fsHouseFuses = <span style=\"color: #e36209\">FeatureSetByRelationshipClass<\/span>(\r\n        FuseBoxRecord,\r\n        <span style=\"color: #032f62\">&quot;Main_Fuse_Box_House_Fuse_Boxes&quot;<\/span>\r\n    );\r\n    <span style=\"color: #d73a49\">var<\/span> allOn = <span style=\"color: #005cc5\">true<\/span>;\r\n    <span style=\"color: #d73a49\">var<\/span> allOff = <span style=\"color: #005cc5\">true<\/span>;\r\n    <span style=\"color: #6a737d\">\/\/ Loop through each house fuse to check status<\/span>\r\n    <span style=\"color: #d73a49\">for<\/span> (<span style=\"color: #d73a49\">var<\/span> h <span style=\"color: #d73a49\">in<\/span> fsHouseFuses) {\r\n        <span style=\"color: #d73a49\">if<\/span> (h.House_Fuse_Box_Status == <span style=\"color: #005cc5\">0<\/span>) {\r\n            allOff = <span style=\"color: #005cc5\">false<\/span>;\r\n        }\r\n        <span style=\"color: #d73a49\">if<\/span> (h.House_Fuse_Box_Status == <span style=\"color: #005cc5\">1<\/span>) {\r\n            allOn = <span style=\"color: #005cc5\">false<\/span>;\r\n        }\r\n    }\r\n    <span style=\"color: #6a737d\">\/\/ Decide the fuse box status<\/span>\r\n    <span style=\"color: #d73a49\">if<\/span> (allOn) {\r\n        FuseBoxStatus = <span style=\"color: #005cc5\">0<\/span>;      <span style=\"color: #6a737d\">\/\/ On<\/span>\r\n    } <span style=\"color: #d73a49\">else<\/span> <span style=\"color: #d73a49\">if<\/span> (allOff) {\r\n        FuseBoxStatus = <span style=\"color: #005cc5\">1<\/span>;      <span style=\"color: #6a737d\">\/\/ Off<\/span>\r\n    } <span style=\"color: #d73a49\">else<\/span> {\r\n        FuseBoxStatus = <span style=\"color: #005cc5\">2<\/span>;      <span style=\"color: #6a737d\">\/\/ Warning<\/span>\r\n    }\r\n    <span style=\"color: #6a737d\">\/\/ Build the payload to update the parent fuse box<\/span>\r\n    payLoad = {\r\n        <span style=\"color: #005cc5\">edit<\/span>: [{\r\n            <span style=\"color: #005cc5\">className<\/span>: <span style=\"color: #032f62\">&quot;Main_Fuse_Box&quot;<\/span>,\r\n            <span style=\"color: #005cc5\">updates<\/span>: [{\r\n                <span style=\"color: #005cc5\">globalId<\/span>: FuseBoxRecord.GlobalID,\r\n                <span style=\"color: #005cc5\">attributes<\/span>: {\r\n                    <span style=\"color: #005cc5\">Main_Fuse_Box_Status<\/span>: FuseBoxStatus\r\n                            }\r\n                        }\r\n                    ]\r\n                }\r\n            ]\r\n        };\r\n\r\n        <span style=\"color: #d73a49\">return<\/span> payLoad;\r\n}\r\n<\/code><\/pre>\n"},{"acf_fc_layout":"content","content":"<h3><strong>How It Works<\/strong><\/h3>\n"},{"acf_fc_layout":"content","content":"<p>A user updates the status of a house fuse in the House_Fuse_Boxes feature class.<\/p>\n<ul>\n<li>The script automatically runs whenever a record is updated.<\/li>\n<li>The script locates the corresponding Main_Fuse_Box using its GlobalID.<\/li>\n<li>The script then checks all related house fuses:\n<ul>\n<li>If all are On, the parent fuse box is set to <strong>On (0).<\/strong><\/li>\n<li>If all are Off, the parent fuse box is set to <strong>Off (1).<\/strong><\/li>\n<li>If there\u2019s a mix of On and Off fuses, the parent is set to <strong>Warning (2).<\/strong><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>The values <strong data-start=\"580\" data-end=\"595\">0, 1, <\/strong>and<strong data-start=\"580\" data-end=\"595\"> 2<\/strong> are <a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/latest\/help\/data\/geodatabases\/overview\/an-overview-of-attribute-domains.htm#:~:text=would%20be%20valid.-,Coded%20Value%20Domains,-%E2%80%94A%20coded%20value\">coded domain values. <\/a><\/p>\n<p>The parent feature is updated in real time, ensuring it always reflects the combined condition of its connected house fuses.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":2973189,"id":2973189,"title":"FINALDIAGRAM","filename":"FINALDIAGRAM.jpg","filesize":22632,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/FINALDIAGRAM.jpg","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/education\/using-attribute-rules-to-edit-related-records\/finaldiagram","alt":"","author":"412439","description":"","caption":"","name":"finaldiagram","status":"inherit","uploaded_to":2973096,"date":"2026-06-25 17:38:35","modified":"2026-06-25 17:38:35","menu_order":0,"mime_type":"image\/jpeg","type":"image","subtype":"jpeg","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":638,"height":389,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/FINALDIAGRAM-213x200.jpg","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/FINALDIAGRAM.jpg","medium-width":428,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/FINALDIAGRAM.jpg","medium_large-width":638,"medium_large-height":389,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/FINALDIAGRAM.jpg","large-width":638,"large-height":389,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/FINALDIAGRAM.jpg","1536x1536-width":638,"1536x1536-height":389,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/FINALDIAGRAM.jpg","2048x2048-width":638,"2048x2048-height":389,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/FINALDIAGRAM.jpg","card_image-width":638,"card_image-height":389,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/FINALDIAGRAM.jpg","wide_image-width":638,"wide_image-height":389}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<h2><strong>3rd Scenario: Average Score for Construction Safety Inspections<\/strong><\/h2>\n"},{"acf_fc_layout":"image","image":{"ID":2973191,"id":2973191,"title":"Scenario3_final","filename":"Scenario3_final.gif","filesize":3894283,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/Scenario3_final.gif","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/education\/using-attribute-rules-to-edit-related-records\/scenario3_final","alt":"","author":"412439","description":"","caption":"","name":"scenario3_final","status":"inherit","uploaded_to":2973096,"date":"2026-06-25 17:39:18","modified":"2026-06-25 17:39:18","menu_order":0,"mime_type":"image\/gif","type":"image","subtype":"gif","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":1728,"height":864,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/Scenario3_final-213x200.gif","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/Scenario3_final.gif","medium-width":464,"medium-height":232,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/Scenario3_final.gif","medium_large-width":768,"medium_large-height":384,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/Scenario3_final.gif","large-width":1728,"large-height":864,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/Scenario3_final-1536x768.gif","1536x1536-width":1536,"1536x1536-height":768,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/Scenario3_final.gif","2048x2048-width":1728,"2048x2048-height":864,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/Scenario3_final-826x413.gif","card_image-width":826,"card_image-height":413,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/Scenario3_final.gif","wide_image-width":1728,"wide_image-height":864}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>In a neighborhood, new construction sites are regularly inspected for safety throughout their projects. Each site receives multiple inspection grades over time. When a new inspection grade is added, the system automatically calculates the average grade of all inspections for that site.<\/p>\n<p>The construction site is then color-coded based on its average grade:<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li><strong>Red<\/strong> = 0 &#8211; 33 (Low Safety)<\/li>\n<li><strong>Yellow<\/strong> = 34 &#8211; 66 (Moderate Safety)<\/li>\n<li><strong>Green<\/strong> = 67 &#8211; 100 (High Safety)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>This allows project managers to quickly see the overall safety status of each site without manually calculating averages, improving efficiency and ensuring safer construction practices.<\/p>\n"},{"acf_fc_layout":"content","content":"<h3><strong>Data Structure:<\/strong><\/h3>\n"},{"acf_fc_layout":"content","content":"<h4><strong>The Relationship Class<\/strong><\/h4>\n"},{"acf_fc_layout":"content","content":"<p>This workflow relies on a relationship between the construction site feature class (parent) and the construction safety inspections table (child).<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":2973220,"id":2973220,"title":"FINALFINALCONSTRUCTONRELATIONSHIP","filename":"FINALFINALCONSTRUCTONRELATIONSHIP.jpg","filesize":14070,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/04\/FINALFINALCONSTRUCTONRELATIONSHIP.jpg","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/education\/using-attribute-rules-to-edit-related-records\/finalfinalconstructonrelationship-2","alt":"","author":"412439","description":"","caption":"","name":"finalfinalconstructonrelationship-2","status":"inherit","uploaded_to":2973096,"date":"2026-06-25 18:18:00","modified":"2026-06-25 18:18:00","menu_order":0,"mime_type":"image\/jpeg","type":"image","subtype":"jpeg","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":642,"height":100,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/04\/FINALFINALCONSTRUCTONRELATIONSHIP-213x100.jpg","thumbnail-width":213,"thumbnail-height":100,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/04\/FINALFINALCONSTRUCTONRELATIONSHIP.jpg","medium-width":464,"medium-height":72,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/04\/FINALFINALCONSTRUCTONRELATIONSHIP.jpg","medium_large-width":642,"medium_large-height":100,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/04\/FINALFINALCONSTRUCTONRELATIONSHIP.jpg","large-width":642,"large-height":100,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/04\/FINALFINALCONSTRUCTONRELATIONSHIP.jpg","1536x1536-width":642,"1536x1536-height":100,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/04\/FINALFINALCONSTRUCTONRELATIONSHIP.jpg","2048x2048-width":642,"2048x2048-height":100,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/04\/FINALFINALCONSTRUCTONRELATIONSHIP.jpg","card_image-width":642,"card_image-height":100,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/04\/FINALFINALCONSTRUCTONRELATIONSHIP.jpg","wide_image-width":642,"wide_image-height":100}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>A unique identifier is also required to maintain the relationship between the two datasets.<\/p>\n<ul>\n<li>Parent GlobalID Field: <strong>GlobalID<\/strong><\/li>\n<li>Child Parent-ID Field: <strong>SiteGlobalID<\/strong><\/li>\n<\/ul>\n"},{"acf_fc_layout":"content","content":"<h5><strong>Create Relationship Class Tool Parameters<\/strong><\/h5>\n"},{"acf_fc_layout":"image","image":{"ID":2973195,"id":2973195,"title":"ConsctructionSiteRelationship","filename":"ConsctructionSiteRelationship.jpg","filesize":52229,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/ConsctructionSiteRelationship.jpg","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/education\/using-attribute-rules-to-edit-related-records\/consctructionsiterelationship","alt":"","author":"412439","description":"","caption":"","name":"consctructionsiterelationship","status":"inherit","uploaded_to":2973096,"date":"2026-06-25 17:41:42","modified":"2026-06-25 17:41:42","menu_order":0,"mime_type":"image\/jpeg","type":"image","subtype":"jpeg","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":1020,"height":299,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/ConsctructionSiteRelationship-213x200.jpg","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/ConsctructionSiteRelationship.jpg","medium-width":464,"medium-height":136,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/ConsctructionSiteRelationship.jpg","medium_large-width":768,"medium_large-height":225,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/ConsctructionSiteRelationship.jpg","large-width":1020,"large-height":299,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/ConsctructionSiteRelationship.jpg","1536x1536-width":1020,"1536x1536-height":299,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/ConsctructionSiteRelationship.jpg","2048x2048-width":1020,"2048x2048-height":299,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/ConsctructionSiteRelationship-826x242.jpg","card_image-width":826,"card_image-height":242,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/ConsctructionSiteRelationship.jpg","wide_image-width":1020,"wide_image-height":299}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>The parent feature stores the calculated value in a SiteGradeAverage field, while the child feature class contains an InspectionGrades field where individual inspection scores are recorded.<\/p>\n<ul>\n<li>Parent Average Field: <strong>SiteGradeAverage<\/strong><\/li>\n<li>Child Grade Field: <strong>InspectionGrades<\/strong><\/li>\n<\/ul>\n"},{"acf_fc_layout":"content","content":"<h4><strong>The Update Payload<\/strong><\/h4>\n"},{"acf_fc_layout":"content","content":"<p>In this example, the rule calculates the average of all related inspection grades and updates the parent construction site accordingly. The expression ends with an update payload, which:<br \/>\n\u2022 Identifies the parent layer to update (ConstructionSite)<br \/>\n\u2022 Targets the correct site using the GlobalID<br \/>\n\u2022 Updates the SiteGradeAverage field with the calculated average<br \/>\n\u2022 Returns the payload to apply the edit<\/p>\n<p>&nbsp;<\/p>\n"},{"acf_fc_layout":"content","content":"<h3><strong>The Attribute Rule Expression<\/strong><\/h3>\n"},{"acf_fc_layout":"blockquote","content":"<pre><code style=\"color: #24292e;background: #ffffff;padding: 1em\">\r\n<span style=\"color: #6a737d\">\/\/ When an inspection grade is updated, update the average grade on the construction site<\/span>\r\n<span style=\"color: #d73a49\">var<\/span> SiteGradeAverage = <span style=\"color: #005cc5\">0<\/span>;  <span style=\"color: #6a737d\">\/\/ Temporary variable to calculate parent average<\/span>\r\n<span style=\"color: #d73a49\">var<\/span> SiteRecord = <span style=\"color: #005cc5\">null<\/span>;    <span style=\"color: #6a737d\">\/\/ Parent Construction Site record<\/span>\r\n<span style=\"color: #d73a49\">var<\/span> fsSite;              <span style=\"color: #6a737d\">\/\/ FeatureSet for querying the Construction Site<\/span>\r\n<span style=\"color: #d73a49\">var<\/span> payLoad = {};       <span style=\"color: #6a737d\">\/\/ Payload for updating parent<\/span>\r\n\r\n<span style=\"color: #6a737d\">\/\/ Only run this script on updates<\/span>\r\n<span style=\"color: #d73a49\">if<\/span> (<span style=\"color: #e36209\">$editContext<\/span>.editType == <span style=\"color: #032f62\">&quot;UPDATE&quot;<\/span>) {\r\n\r\n    <span style=\"color: #6a737d\">\/\/ Get the parent site GlobalID from the inspection<\/span>\r\n    <span style=\"color: #d73a49\">var<\/span> ParentSiteGlobalID = <span style=\"color: #e36209\">$feature<\/span>.SiteGlobalID;\r\n    <span style=\"color: #d73a49\">if<\/span> (<span style=\"color: #e36209\">IsEmpty<\/span>(ParentSiteGlobalID)) {\r\n        <span style=\"color: #d73a49\">return<\/span>;\r\n    }\r\n\r\n    <span style=\"color: #6a737d\">\/\/ Get the parent construction site feature<\/span>\r\n    fsSite = <span style=\"color: #e36209\">Filter<\/span>(\r\n        <span style=\"color: #e36209\">FeatureSetByName<\/span>(<span style=\"color: #e36209\">$datastore<\/span>, <span style=\"color: #032f62\">&quot;ConstructionSite&quot;<\/span>),\r\n        <span style=\"color: #032f62\">&quot;GlobalID = @ParentSiteGlobalID&quot;<\/span>\r\n    );\r\n    SiteRecord = <span style=\"color: #e36209\">First<\/span>(fsSite);\r\n\r\n    <span style=\"color: #6a737d\">\/\/ If parent construction site not found, do nothing<\/span>\r\n    <span style=\"color: #d73a49\">if<\/span> (<span style=\"color: #e36209\">IsEmpty<\/span>(SiteRecord)) {\r\n        <span style=\"color: #d73a49\">return<\/span>;\r\n    }\r\n\r\n    <span style=\"color: #6a737d\">\/\/ Get all related inspections for this site<\/span>\r\n    <span style=\"color: #d73a49\">var<\/span> fsInspections = <span style=\"color: #e36209\">Filter<\/span>(\r\n        <span style=\"color: #e36209\">FeatureSetByName<\/span>(\r\n            <span style=\"color: #e36209\">$datastore<\/span>,\r\n            <span style=\"color: #032f62\">&quot;ConstructionSafetyInspections&quot;<\/span>,\r\n            [<span style=\"color: #032f62\">&quot;SiteGlobalID&quot;<\/span>, <span style=\"color: #032f62\">&quot;InspectionGrades&quot;<\/span>],\r\n            <span style=\"color: #005cc5\">false<\/span>\r\n        ),\r\n        <span style=\"color: #032f62\">&quot;SiteGlobalID = @ParentSiteGlobalID&quot;<\/span>\r\n    );\r\n\r\n    <span style=\"color: #6a737d\">\/\/ Calculate the average inspection grade<\/span>\r\n    <span style=\"color: #d73a49\">var<\/span> avg = <span style=\"color: #e36209\">Average<\/span>(fsInspections, <span style=\"color: #032f62\">&quot;InspectionGrades&quot;<\/span>);\r\n\r\n    <span style=\"color: #d73a49\">if<\/span> (<span style=\"color: #e36209\">IsEmpty<\/span>(avg)) {\r\n        SiteGradeAverage = <span style=\"color: #005cc5\">0<\/span>;\r\n    } <span style=\"color: #d73a49\">else<\/span> {\r\n        SiteGradeAverage = avg;\r\n    }\r\n\r\n    <span style=\"color: #6a737d\">\/\/ Build the payload to update the parent construction site<\/span>\r\n    payLoad = {\r\n        <span style=\"color: #005cc5\">edit<\/span>: [{\r\n            <span style=\"color: #005cc5\">className<\/span>: <span style=\"color: #032f62\">&quot;ConstructionSite&quot;<\/span>,\r\n            <span style=\"color: #005cc5\">updates<\/span>: [{\r\n                <span style=\"color: #005cc5\">globalId<\/span>: SiteRecord.GlobalID,\r\n                <span style=\"color: #005cc5\">attributes<\/span>: {\r\n                    <span style=\"color: #005cc5\">SiteGradeAverage<\/span>: SiteGradeAverage\r\n                }\r\n            }]\r\n        }]\r\n    };\r\n\r\n    <span style=\"color: #d73a49\">return<\/span> payLoad;\r\n}\r\n\r\n<\/code><\/pre>\n"},{"acf_fc_layout":"content","content":"<h3><strong>How It Works<\/strong><\/h3>\n"},{"acf_fc_layout":"content","content":"<ul>\n<li>A user updates an inspection grade in the ConstructionSafetyInspections feature class.<\/li>\n<li>The script automatically runs whenever a record is updated.<\/li>\n<li>The script retrieves the SiteGlobalID from the inspection record to identify its parent construction site.<\/li>\n<li>The script locates the corresponding ConstructionSite using its GlobalID.<\/li>\n<li>The script then retrieves all related inspection records associated with that site.<\/li>\n<li>The script calculates the average value of all InspectionGrades for that site.<\/li>\n<li>If related inspections exist, their average grade is calculated.<\/li>\n<li>The parent SiteGradeAverage field is updated in real-time to reflect the current average of all related inspection grades.<\/li>\n<\/ul>\n"},{"acf_fc_layout":"image","image":{"ID":2973198,"id":2973198,"title":"S3_Diagram","filename":"S3_Diagram.jpg","filesize":32419,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/S3_Diagram.jpg","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/education\/using-attribute-rules-to-edit-related-records\/s3_diagram","alt":"","author":"412439","description":"","caption":"","name":"s3_diagram","status":"inherit","uploaded_to":2973096,"date":"2026-06-25 17:45:57","modified":"2026-06-25 17:45:57","menu_order":0,"mime_type":"image\/jpeg","type":"image","subtype":"jpeg","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":695,"height":387,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/S3_Diagram-213x200.jpg","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/S3_Diagram.jpg","medium-width":464,"medium-height":258,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/S3_Diagram.jpg","medium_large-width":695,"medium_large-height":387,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/S3_Diagram.jpg","large-width":695,"large-height":387,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/S3_Diagram.jpg","1536x1536-width":695,"1536x1536-height":387,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/S3_Diagram.jpg","2048x2048-width":695,"2048x2048-height":387,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/S3_Diagram.jpg","card_image-width":695,"card_image-height":387,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/S3_Diagram.jpg","wide_image-width":695,"wide_image-height":387}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<h2><strong>Overall<\/strong><\/h2>\n"},{"acf_fc_layout":"content","content":"<p>All three scenarios follow the same core workflow. The rule is attached to the child, triggered on update, and returns an update to the parent. The only thing that changes is the logic, whether it\u2019s a direct value, a condition, or an average.<\/p>\n<ol>\n<li>The child record is updated.<\/li>\n<li>The script finds parent through its relationship class.<\/li>\n<li>The script then calculates new parent value.<\/li>\n<li>The script returns an update payload.<\/li>\n<li>ArcGIS Pro applies the parent update automatically.<\/li>\n<\/ol>\n<p>While these examples use relationship classes to connect parent and child datasets, similar results can also be achieved without an explicit relationship. In those cases, you can use FeatureSetByName instead of FeatureSetByRelationshipClass.<\/p>\n<p>Now that you have a foundation for how attribute rules work, you can customize them to support a wide range of workflows and automation needs.<\/p>\n<p>You can download the example project and data <a href=\"https:\/\/www.esri.com\/arcgis-blog\/attributeruleexample\">here.<\/a><\/p>\n<p>Special thanks to Hussein Nasser for collaborating on this case and contributing to this topic.<\/p>\n"}],"related_articles":"","show_article_image":true,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/Attribute-Rule-Presentation-1.jpg","wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/Attribute-Rule-Presentation-2_edited.jpg"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Using Attribute Rules to Edit Related Records<\/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\/arcgis-pro\/education\/using-attribute-rules-to-edit-related-records\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using Attribute Rules to Edit Related Records\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/education\/using-attribute-rules-to-edit-related-records\" \/>\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=\"2026-06-25T18:24:53+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@ESRI\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/education\/using-attribute-rules-to-edit-related-records#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/education\/using-attribute-rules-to-edit-related-records\"},\"author\":{\"name\":\"Caelyn Linane\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/dba070c151b9a9ffc1734e9f025758bd\"},\"headline\":\"Using Attribute Rules to Edit Related Records\",\"datePublished\":\"2026-04-09T19:36:18+00:00\",\"dateModified\":\"2026-06-25T18:24:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/education\/using-attribute-rules-to-edit-related-records\"},\"wordCount\":7,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"articleSection\":[\"Arcade\",\"Education\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/education\/using-attribute-rules-to-edit-related-records#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/education\/using-attribute-rules-to-edit-related-records\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/education\/using-attribute-rules-to-edit-related-records\",\"name\":\"Using Attribute Rules to Edit Related Records\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2026-04-09T19:36:18+00:00\",\"dateModified\":\"2026-06-25T18:24:53+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/education\/using-attribute-rules-to-edit-related-records#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/education\/using-attribute-rules-to-edit-related-records\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/education\/using-attribute-rules-to-edit-related-records#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using Attribute Rules to Edit Related Records\"}]},{\"@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\/dba070c151b9a9ffc1734e9f025758bd\",\"name\":\"Caelyn Linane\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/05a3b79ff20d690da8bc577ed1dde12f4b81c9a3a4bc012eaf1b1bd572b7ba40?s=96&d=blank&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/05a3b79ff20d690da8bc577ed1dde12f4b81c9a3a4bc012eaf1b1bd572b7ba40?s=96&d=blank&r=g\",\"caption\":\"Caelyn Linane\"},\"url\":\"\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Using Attribute Rules to Edit Related Records","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\/arcgis-pro\/education\/using-attribute-rules-to-edit-related-records","og_locale":"en_US","og_type":"article","og_title":"Using Attribute Rules to Edit Related Records","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/education\/using-attribute-rules-to-edit-related-records","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","article_modified_time":"2026-06-25T18:24:53+00:00","twitter_card":"summary_large_image","twitter_site":"@ESRI","twitter_misc":{"Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/education\/using-attribute-rules-to-edit-related-records#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/education\/using-attribute-rules-to-edit-related-records"},"author":{"name":"Caelyn Linane","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/dba070c151b9a9ffc1734e9f025758bd"},"headline":"Using Attribute Rules to Edit Related Records","datePublished":"2026-04-09T19:36:18+00:00","dateModified":"2026-06-25T18:24:53+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/education\/using-attribute-rules-to-edit-related-records"},"wordCount":7,"commentCount":0,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"articleSection":["Arcade","Education"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/education\/using-attribute-rules-to-edit-related-records#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/education\/using-attribute-rules-to-edit-related-records","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/education\/using-attribute-rules-to-edit-related-records","name":"Using Attribute Rules to Edit Related Records","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2026-04-09T19:36:18+00:00","dateModified":"2026-06-25T18:24:53+00:00","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/education\/using-attribute-rules-to-edit-related-records#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/education\/using-attribute-rules-to-edit-related-records"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/education\/using-attribute-rules-to-edit-related-records#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"Using Attribute Rules to Edit Related Records"}]},{"@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\/dba070c151b9a9ffc1734e9f025758bd","name":"Caelyn Linane","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/05a3b79ff20d690da8bc577ed1dde12f4b81c9a3a4bc012eaf1b1bd572b7ba40?s=96&d=blank&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/05a3b79ff20d690da8bc577ed1dde12f4b81c9a3a4bc012eaf1b1bd572b7ba40?s=96&d=blank&r=g","caption":"Caelyn Linane"},"url":""}]}},"text_date":"April 9, 2026","author_name":"Caelyn Linane","author_page":false,"custom_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/06\/Attribute-Rule-Presentation-2_edited.jpg","primary_product":"ArcGIS Pro","tag_data":[],"category_data":[{"term_id":777102,"name":"Arcade","slug":"arcade","term_group":0,"term_taxonomy_id":777102,"taxonomy":"category","description":"","parent":0,"count":102,"filter":"raw"},{"term_id":430042,"name":"Education","slug":"education","term_group":0,"term_taxonomy_id":430042,"taxonomy":"category","description":"","parent":0,"count":81,"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":2122,"filter":"raw"}],"primary_product_link":"https:\/\/www.esri.com\/arcgis-blog\/?s=#&products=arcgis-pro","_links":{"self":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/2973096","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\/412439"}],"replies":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/comments?post=2973096"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/2973096\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=2973096"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=2973096"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=2973096"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=2973096"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=2973096"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}