{"id":2906922,"date":"2025-07-24T14:11:09","date_gmt":"2025-07-24T21:11:09","guid":{"rendered":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=2906922"},"modified":"2025-07-24T14:11:09","modified_gmt":"2025-07-24T21:11:09","slug":"prevent-infinite-loops-in-attribute-rules","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/data-management\/prevent-infinite-loops-in-attribute-rules","title":{"rendered":"Prevent Infinite loops in 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":[23851],"tags":[302212],"industry":[],"product":[36561],"class_list":["post-2906922","blog","type-blog","status-publish","format-standard","hentry","category-data-management","tag-attribute-rules","product-arcgis-pro"],"acf":{"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'\/>"}],"short_description":"In attribute rules we protect against stack overflow when we believe an infinite loop is detected. This blog goes through ways to avoid","flexible_content":[{"acf_fc_layout":"content","content":"<div id=\"chat-container\" class=\"chat-container\">\n<div id=\"chat-display\" class=\"chat-display-class\">\n<div id=\"bot-box\" class=\"message bot-message\">\n<p>Consider this table, we have two fields: <em>group_name<\/em> and <em>common_name<\/em>. The <em>common_name<\/em> must match for all rows within the same group.<\/p>\n<p>We would like to create an attribute rule that ensures if the <em>common_name<\/em> is updated for a row, all rows within the same group receive the same name. This rule is straightforward; however, due to the attribute rules&#8217; nature, updating the common_name will trigger the rule again. This repeated triggering can lead to attempting to update the same rows repeatedly, causing a cycle and potentially exhausting the Arcade engine execution instances. Resulting in the infamous error:<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"input-container\">\n<div id=\"flush-conversation-button\" class=\"chat-submit-button\" title=\"Clear current chat session\"><\/div>\n<\/div>\n<blockquote><p><em><strong>&#8220;The evaluation of attribute rules is cyclic or exceeds maximum cascading level&#8221;<\/strong><\/em><\/p><\/blockquote>\n<p>&nbsp;<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":2907132,"id":2907132,"title":"blog1","filename":"blog1.png","filesize":4411,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/07\/blog1.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/data-management\/prevent-infinite-loops-in-attribute-rules\/blog1-16","alt":"","author":"7511","description":"","caption":"","name":"blog1-16","status":"inherit","uploaded_to":2906922,"date":"2025-07-24 20:26:41","modified":"2025-07-24 20:26:41","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":281,"height":222,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/07\/blog1-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/07\/blog1.png","medium-width":281,"medium-height":222,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/07\/blog1.png","medium_large-width":281,"medium_large-height":222,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/07\/blog1.png","large-width":281,"large-height":222,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/07\/blog1.png","1536x1536-width":281,"1536x1536-height":222,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/07\/blog1.png","2048x2048-width":281,"2048x2048-height":222,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/07\/blog1.png","card_image-width":281,"card_image-height":222,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/07\/blog1.png","wide_image-width":281,"wide_image-height":222}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>Let us author the rule anyway to prove this.<\/p>\n<p>&nbsp;<\/p>\n"},{"acf_fc_layout":"sidebar","content":"<p>An Attribute rule script that updates the same table, but fails with large rows.<\/p>\n<pre><code>\r\n<span style=\"color: #6a737d\">\/\/if the common_name hasn't change quit.<\/span>\r\n<span style=\"color: #d73a49\">if<\/span> (<span style=\"color: #e36209\">$feature<\/span>.common_name == <span style=\"color: #e36209\">$originalfeature<\/span>.common_name) <span style=\"color: #d73a49\">return<\/span>;\r\n<span style=\"color: #6a737d\">\/\/grab the variables <\/span>\r\n<span style=\"color: #d73a49\">var<\/span> g = <span style=\"color: #e36209\">$feature<\/span>.group_name\r\n<span style=\"color: #d73a49\">var<\/span> gid = <span style=\"color: #e36209\">$feature<\/span>.GlobalID\r\n<span style=\"color: #d73a49\">var<\/span> n = <span style=\"color: #e36209\">$feature<\/span>.common_name\r\n<span style=\"color: #6a737d\">\/\/look up all common_names same group and update them, we want to avoid updating the same feature and features with same name. <\/span>\r\n<span style=\"color: #d73a49\">var<\/span> fs = <span style=\"color: #e36209\">Filter<\/span>(<span style=\"color: #e36209\">$feature<\/span>set, <span style=\"color: #032f62\">\"group_name = @g and globalid &lt;&gt; @gid and (common_name &lt;&gt; @n or common_name is null)\"<\/span>) \r\n<span style=\"color: #d73a49\">var<\/span> updates = []\r\n<span style=\"color: #d73a49\">for<\/span> (<span style=\"color: #d73a49\">var<\/span> f <span style=\"color: #d73a49\">in<\/span> fs) \r\n     <span style=\"color: #e36209\">push<\/span> (updates, {<span style=\"color: #032f62\">\"globalId\"<\/span>: f.globalid, <span style=\"color: #032f62\">\"attributes\"<\/span>: {<span style=\"color: #032f62\">\"common_name\"<\/span>: n }})\r\n\r\n<span style=\"color: #d73a49\">return<\/span> {\r\n    <span style=\"color: #032f62\">\"edit\"<\/span>: [{<span style=\"color: #032f62\">\"className\"<\/span>: <span style=\"color: #032f62\">\"main.mytable\"<\/span>, <span style=\"color: #032f62\">\"updates\"<\/span>: updates}]\r\n}\r\n\r\n<\/code><\/pre>\n","image_reference":false,"layout":"standard","image_reference_figure":"","snippet":"","spotlight_name":"","section_title":"","position":"Center","spotlight_image":false},{"acf_fc_layout":"content","content":"<div id=\"chat-container\" class=\"chat-container\">\n<div id=\"chat-display\" class=\"chat-display-class\">\n<div id=\"bot-box\" class=\"message bot-message\">\n<p>This rule works for groups of rows with a few rows but fails when there is a large number of rows to be updated.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"input-container\">\n<div id=\"flush-conversation-button\" class=\"chat-submit-button\" title=\"Clear current chat session\"><\/div>\n<\/div>\n"},{"acf_fc_layout":"image","image":{"ID":2907192,"id":2907192,"title":"attribute rules cyclic infinite loop","filename":"blog2.gif","filesize":4453877,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/07\/blog2.gif","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/data-management\/prevent-infinite-loops-in-attribute-rules\/blog2-9","alt":"","author":"7511","description":"attribute rules cyclic infinite loop","caption":"attribute rules cyclic infinite loop","name":"blog2-9","status":"inherit","uploaded_to":2906922,"date":"2025-07-24 20:34:25","modified":"2025-07-24 20:34:41","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":890,"height":630,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/07\/blog2-213x200.gif","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/07\/blog2.gif","medium-width":369,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/07\/blog2.gif","medium_large-width":768,"medium_large-height":544,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/07\/blog2.gif","large-width":890,"large-height":630,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/07\/blog2.gif","1536x1536-width":890,"1536x1536-height":630,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/07\/blog2.gif","2048x2048-width":890,"2048x2048-height":630,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/07\/blog2-657x465.gif","card_image-width":657,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/07\/blog2.gif","wide_image-width":890,"wide_image-height":630}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<div id=\"chat-container\" class=\"chat-container\">\n<div id=\"chat-display\" class=\"chat-display-class\">\n<div id=\"bot-box\" class=\"message bot-message\">\n<p>To work around this issue, we need to differentiate between edits made by the user and edits made by the attribute rules. To achieve this, we can either add a new field or utilize an existing field in the table to indicate that the rule performed the update. During attribute rule execution we will set a specific value in this field (e.g. 1) to indicate the edit has been triggered from an attribute rule.<\/p>\n<p>Subsequently, we will incorporate logic to revert the field value back to its original state, ensuring no impact on the data or schema.<\/p>\n<p>I will introduce a new field called &#8220;t&#8221; and populate it with random values. It is important to note that these values will remain unchanged; they will temporarily alter during editing and then be reset back to their original values.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"input-container\">\n<div id=\"flush-conversation-button\" class=\"chat-submit-button\" title=\"Clear current chat session\"><\/div>\n<\/div>\n"},{"acf_fc_layout":"sidebar","content":"<p>An Attribute rule script that updates the same table, works with any number of rows.<\/p>\n<pre><code>\r\n\r\n<span style=\"color: #6a737d\">\/\/if the common_name hasn't change quit.<\/span>\r\n<span style=\"color: #d73a49\">if<\/span> (<span style=\"color: #e36209\">$feature<\/span>.common_name == <span style=\"color: #e36209\">$originalfeature<\/span>.common_name) <span style=\"color: #d73a49\">return<\/span>;\r\n\r\n<span style=\"color: #6a737d\">\/\/if this field has this value set, it means attribute rules has set it. We can use it to stop execution so we don't do further updates.<\/span>\r\n<span style=\"color: #6a737d\">\/\/We want to reset the original value of the field. <\/span>\r\n<span style=\"color: #6a737d\">\/\/This field can be any existing field or a new field.<\/span>\r\n<span style=\"color: #d73a49\">if<\/span> (<span style=\"color: #e36209\">$feature<\/span>.t == <span style=\"color: #005cc5\">1<\/span> &amp;&amp; <span style=\"color: #e36209\">$originalFeature<\/span>.t != <span style=\"color: #005cc5\">1<\/span> ) <span style=\"color: #d73a49\">return<\/span> {<span style=\"color: #032f62\">\"result\"<\/span>: {<span style=\"color: #032f62\">\"attributes\"<\/span>: {<span style=\"color: #032f62\">\"t\"<\/span>: <span style=\"color: #e36209\">$originalFeature<\/span>.t}}}\r\n\r\n\r\n<span style=\"color: #6a737d\">\/\/grab the variables <\/span>\r\n<span style=\"color: #d73a49\">var<\/span> g = <span style=\"color: #e36209\">$feature<\/span>.group_name\r\n<span style=\"color: #d73a49\">var<\/span> gid = <span style=\"color: #e36209\">$feature<\/span>.GlobalID\r\n<span style=\"color: #d73a49\">var<\/span> n = <span style=\"color: #e36209\">$feature<\/span>.common_name\r\n<span style=\"color: #6a737d\">\/\/look up all common_names same group and update them, we want to avoid updating the same feature and features with same name. <\/span>\r\n<span style=\"color: #d73a49\">var<\/span> fs = <span style=\"color: #e36209\">Filter<\/span>(<span style=\"color: #e36209\">$feature<\/span>set, <span style=\"color: #032f62\">\"group_name = @g and globalid &lt;&gt; @gid and (common_name &lt;&gt; @n or common_name is null)\"<\/span>) \r\n<span style=\"color: #d73a49\">var<\/span> updates = []\r\n<span style=\"color: #d73a49\">for<\/span> (<span style=\"color: #d73a49\">var<\/span> f <span style=\"color: #d73a49\">in<\/span> fs) \r\n     <span style=\"color: #e36209\">push<\/span> (updates, {<span style=\"color: #032f62\">\"globalId\"<\/span>: f.globalid, <span style=\"color: #032f62\">\"attributes\"<\/span>: {<span style=\"color: #032f62\">\"common_name\"<\/span>: n , <span style=\"color: #032f62\">\"t\"<\/span>: <span style=\"color: #005cc5\">1<\/span>}}) <span style=\"color: #6a737d\">\/\/set the field to 1 indicating attribute rules did the update. <\/span>\r\n\r\n<span style=\"color: #d73a49\">return<\/span> {\r\n    <span style=\"color: #032f62\">\"edit\"<\/span>: [{<span style=\"color: #032f62\">\"className\"<\/span>: <span style=\"color: #032f62\">\"main.mytable\"<\/span>, <span style=\"color: #032f62\">\"updates\"<\/span>: updates}]\r\n}\r\n\r\n\r\n\r\n<\/code><\/pre>\n","image_reference":false,"layout":"standard","image_reference_figure":"","snippet":"","spotlight_name":"","section_title":"","position":"Center","spotlight_image":false},{"acf_fc_layout":"content","content":"<div id=\"chat-container\" class=\"chat-container\">\n<div id=\"chat-display\" class=\"chat-display-class\">\n<div id=\"bot-box\" class=\"message bot-message\">\n<p>And when we attempt to edit, you can see that the values update correctly without any errors, and the field we used to indicate attribute rule edits remains unchanged.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"input-container\">\n<div id=\"flush-conversation-button\" class=\"chat-submit-button\" title=\"Clear current chat session\"><\/div>\n<\/div>\n"},{"acf_fc_layout":"image","image":{"ID":2907392,"id":2907392,"title":"Preventing loops in attribute rules","filename":"blog3.gif","filesize":3148565,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/07\/blog3.gif","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/data-management\/prevent-infinite-loops-in-attribute-rules\/blog3-7","alt":"","author":"7511","description":"Preventing loops in attribute rules","caption":"Preventing loops in attribute rules","name":"blog3-7","status":"inherit","uploaded_to":2906922,"date":"2025-07-24 20:51:18","modified":"2025-07-24 20:51:31","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":886,"height":630,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/07\/blog3-213x200.gif","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/07\/blog3.gif","medium-width":367,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/07\/blog3.gif","medium_large-width":768,"medium_large-height":546,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/07\/blog3.gif","large-width":886,"large-height":630,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/07\/blog3.gif","1536x1536-width":886,"1536x1536-height":630,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/07\/blog3.gif","2048x2048-width":886,"2048x2048-height":630,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/07\/blog3-654x465.gif","card_image-width":654,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/07\/blog3.gif","wide_image-width":886,"wide_image-height":630}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>&nbsp;<\/p>\n<div id=\"chat-container\" class=\"chat-container\">\n<div id=\"chat-display\" class=\"chat-display-class\">\n<div id=\"bot-box\" class=\"message bot-message\">\n<blockquote><p><em>Ideally, we want to incorporate core functionality to achieve this within attribute rules (potentially within\u00a0<code>$editContext<\/code>). We are still in the process of considering how to implement this. We will update the blog once this functionality is implemented. In the meantime, this workaround should suffice.<\/em><\/p><\/blockquote>\n<\/div>\n<\/div>\n<\/div>\n<blockquote>\n<div class=\"input-container\">\n<div id=\"flush-conversation-button\" class=\"chat-submit-button\" title=\"Clear current chat session\"><\/div>\n<\/div>\n<\/blockquote>\n"},{"acf_fc_layout":"content","content":"<p>You may download the sample geodatabase <a href=\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/07\/updatesameclass.zip\">here<\/a>.<\/p>\n"}],"show_article_image":true,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/07\/AdobeStock_237177270-ezgif.com-jpg-to-png-converter-2.png","wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/07\/AdobeStock_237177270-ezgif.com-resize.png","related_articles":""},"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>Prevent Infinite loops in 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\/arcgis-pro\/data-management\/prevent-infinite-loops-in-attribute-rules\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Prevent Infinite loops in Attribute Rules\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/data-management\/prevent-infinite-loops-in-attribute-rules\" \/>\n<meta property=\"og:site_name\" content=\"ArcGIS Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/esrigis\/\" \/>\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=\"3 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\/data-management\/prevent-infinite-loops-in-attribute-rules#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/data-management\/prevent-infinite-loops-in-attribute-rules\"},\"author\":{\"name\":\"Hussein Nasser\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/78b7647b1db598b3c791d039593e5b2b\"},\"headline\":\"Prevent Infinite loops in Attribute Rules\",\"datePublished\":\"2025-07-24T21:11:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/data-management\/prevent-infinite-loops-in-attribute-rules\"},\"wordCount\":6,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"keywords\":[\"attribute rules\"],\"articleSection\":[\"Data Management\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/data-management\/prevent-infinite-loops-in-attribute-rules#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/data-management\/prevent-infinite-loops-in-attribute-rules\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/data-management\/prevent-infinite-loops-in-attribute-rules\",\"name\":\"Prevent Infinite loops in Attribute Rules\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2025-07-24T21:11:09+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/data-management\/prevent-infinite-loops-in-attribute-rules#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/data-management\/prevent-infinite-loops-in-attribute-rules\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/data-management\/prevent-infinite-loops-in-attribute-rules#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Prevent Infinite loops in 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":"Prevent Infinite loops in 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\/arcgis-pro\/data-management\/prevent-infinite-loops-in-attribute-rules","og_locale":"en_US","og_type":"article","og_title":"Prevent Infinite loops in Attribute Rules","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/data-management\/prevent-infinite-loops-in-attribute-rules","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","twitter_card":"summary_large_image","twitter_site":"@ESRI","twitter_misc":{"Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/data-management\/prevent-infinite-loops-in-attribute-rules#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/data-management\/prevent-infinite-loops-in-attribute-rules"},"author":{"name":"Hussein Nasser","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/78b7647b1db598b3c791d039593e5b2b"},"headline":"Prevent Infinite loops in Attribute Rules","datePublished":"2025-07-24T21:11:09+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/data-management\/prevent-infinite-loops-in-attribute-rules"},"wordCount":6,"commentCount":0,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"keywords":["attribute rules"],"articleSection":["Data Management"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/data-management\/prevent-infinite-loops-in-attribute-rules#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/data-management\/prevent-infinite-loops-in-attribute-rules","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/data-management\/prevent-infinite-loops-in-attribute-rules","name":"Prevent Infinite loops in Attribute Rules","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2025-07-24T21:11:09+00:00","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/data-management\/prevent-infinite-loops-in-attribute-rules#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/data-management\/prevent-infinite-loops-in-attribute-rules"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/data-management\/prevent-infinite-loops-in-attribute-rules#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"Prevent Infinite loops in 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":"July 24, 2025","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\/2025\/07\/AdobeStock_237177270-ezgif.com-resize.png","primary_product":"ArcGIS Pro","tag_data":[{"term_id":302212,"name":"attribute rules","slug":"attribute-rules","term_group":0,"term_taxonomy_id":302212,"taxonomy":"post_tag","description":"","parent":0,"count":35,"filter":"raw"}],"category_data":[{"term_id":23851,"name":"Data Management","slug":"data-management","term_group":0,"term_taxonomy_id":23851,"taxonomy":"category","description":"","parent":0,"count":924,"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":2042,"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\/2906922","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=2906922"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/2906922\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=2906922"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=2906922"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=2906922"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=2906922"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=2906922"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}