<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Join &amp; Create New Record via Attribute Rule in Geodatabase Questions</title>
    <link>https://community.esri.com/t5/geodatabase-questions/join-create-new-record-via-attribute-rule/m-p/769078#M808</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Consider the following Geodatabase Feature Class and table:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Accounts Feature Class (12 million records, updated monthly)&lt;/STRONG&gt;&lt;/P&gt;&lt;TABLE class="j-table jiveBorder" style="border: 1px solid #c6c6c6; width: 86.4662%;"&gt;&lt;THEAD&gt;&lt;TR style="background-color: #efefef; height: 2px;"&gt;&lt;TH style="width: 16%; height: 2px;"&gt;OBJECT ID&lt;/TH&gt;&lt;TH style="width: 10%; height: 2px;"&gt;CUST_ID&lt;/TH&gt;&lt;TH style="width: 10%; height: 2px;"&gt;FIRST_NAME&lt;/TH&gt;&lt;TH style="width: 10%; height: 2px;"&gt;LAST_NAME&lt;/TH&gt;&lt;TH style="width: 12%; height: 2px;"&gt;OPEN_DATE&lt;/TH&gt;&lt;TH style="width: 14.7337%; height: 2px;"&gt;GEOMETRY&lt;/TH&gt;&lt;/TR&gt;&lt;/THEAD&gt;&lt;TBODY&gt;&lt;TR style="height: 25px;"&gt;&lt;TD style="width: 16%; height: 25px;"&gt;1&lt;/TD&gt;&lt;TD style="width: 10%; height: 25px;"&gt;0956732561&lt;/TD&gt;&lt;TD style="width: 10%; height: 25px;"&gt;Jane&lt;/TD&gt;&lt;TD style="width: 10%; height: 25px;"&gt;Doe&lt;/TD&gt;&lt;TD style="width: 12%; height: 25px;"&gt;12/31/2017&lt;/TD&gt;&lt;TD style="width: 14.7337%; height: 25px;"&gt;Point&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="height: 25px;"&gt;&lt;TD style="width: 16%; height: 25px;"&gt;...&lt;/TD&gt;&lt;TD style="width: 10%; height: 25px;"&gt;...&lt;/TD&gt;&lt;TD style="width: 10%; height: 25px;"&gt;...&lt;/TD&gt;&lt;TD style="width: 10%; height: 25px;"&gt;...&lt;/TD&gt;&lt;TD style="width: 12%; height: 25px;"&gt;...&lt;/TD&gt;&lt;TD style="width: 14.7337%; height: 25px;"&gt;...&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Transactions table (80,000 records, updated hourly with a 30 day window)&lt;/STRONG&gt;&lt;/P&gt;&lt;TABLE class="j-table jiveBorder" style="border: 1px solid #c6c6c6; width: 63.4085%;"&gt;&lt;THEAD&gt;&lt;TR style="background-color: #efefef;"&gt;&lt;TH style="width: 12%;"&gt;OBJECT ID&lt;/TH&gt;&lt;TH style="width: 20%;"&gt;TRX_DATE&lt;/TH&gt;&lt;TH style="width: 11%;"&gt;CUST_NUM&lt;/TH&gt;&lt;TH style="width: 10%;"&gt;AMOUNT&lt;/TH&gt;&lt;/TR&gt;&lt;/THEAD&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD style="width: 12%;"&gt;1&lt;/TD&gt;&lt;TD style="width: 20%;"&gt;04/17/2019 14:21:56&lt;/TD&gt;&lt;TD style="width: 11%;"&gt;&lt;SPAN&gt;0956732561&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD style="width: 10%;"&gt;2.31&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="width: 12%;"&gt;...&lt;/TD&gt;&lt;TD style="width: 20%;"&gt;...&lt;/TD&gt;&lt;TD style="width: 11%;"&gt;...&lt;/TD&gt;&lt;TD style="width: 10%;"&gt;...&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Desired Result&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;TransactionsFC feature class (80,000 records, updated on the fly as Transactions Table is updated)&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;TABLE class="j-table jiveBorder" style="border: 1px solid #c6c6c6; width: 76.4411%;"&gt;&lt;THEAD style="border: inherit solid inherit;"&gt;&lt;TR style="background-color: #efefef;"&gt;&lt;TH style="width: 14%;"&gt;OBJECT ID&lt;/TH&gt;&lt;TH style="width: 23%;"&gt;TRX_DATE&lt;/TH&gt;&lt;TH style="width: 18%;"&gt;CUST_NUM&lt;/TH&gt;&lt;TH style="width: 12%;"&gt;AMOUNT&lt;/TH&gt;&lt;TH style="width: 12.1813%;"&gt;GEOMETRY&lt;/TH&gt;&lt;/TR&gt;&lt;/THEAD&gt;&lt;TBODY style="border: inherit solid inherit;"&gt;&lt;TR style="border: inherit solid inherit;"&gt;&lt;TD style="width: 14%;"&gt;1&lt;/TD&gt;&lt;TD style="width: 23%;"&gt;04/17/2019 14:21:56&lt;/TD&gt;&lt;TD style="width: 18%;"&gt;&lt;SPAN&gt;0956732561&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD style="width: 12%;"&gt;2.31&lt;/TD&gt;&lt;TD style="width: 12.1813%;"&gt;Point&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="border: inherit solid inherit;"&gt;&lt;TD style="width: 14%;"&gt;...&lt;/TD&gt;&lt;TD style="width: 23%;"&gt;...&lt;/TD&gt;&lt;TD style="width: 18%;"&gt;...&lt;/TD&gt;&lt;TD style="width: 12%;"&gt;...&lt;/TD&gt;&lt;TD style="width: 12.1813%;"&gt;...&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Now, I don't get any kind of geographic identifier in my transactions table. No address, no coordinates, no zip code, nothing. There is absolutely nothing to base any kind of geometry off of in that table nor can I get it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What I need to do is create&amp;nbsp;a new and separate feature class of the transactions which uses the geometry of its associated feature in the Accounts feature class. As a one time job, this is easily doable by joining the Transactions table to the Accounts Feature Class by CUST_ID and CUST_NUM and then exporting that to a new feature class.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There are a couple of problems that prevent me from doing that:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;STRONG&gt;Update Cadence:&lt;/STRONG&gt; My transactions table is updated hourly, with a 30 day window of transactions to the hour. So any record older than 30 days to the hour is deleted, any new transactions that have occurred within the last hour are added, and any records which have had updates are updated.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Runtime:&lt;/STRONG&gt; Doing a join between a 12m feature dataset and an 80k record table takes an abysmally long time and given the update cadence, it basically turns into a never ending geoprocessing queue. By the time one job run has finished, there may be another one or two in queue that need to be performed.&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So I'm trying to create an Attribute Rule on the Transactions table, that would do the following:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Requirement 1: Whenever a new record is added to the Transactions Table:&lt;/STRONG&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Get the Customer_NUM of the new record&lt;/LI&gt;&lt;LI&gt;Get the corresponding CUSTOMER_ID of the feature in the Accounts&amp;nbsp;feature class&lt;OL&gt;&lt;LI&gt;If there isn't a corresponding CUSTOMER_ID in the Accounts feature class, the transaction most likely is from a new Customer that was created within the last month which has not been added to my Accounts feature class. Do nothing.&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;LI&gt;Create a new feature in Transactions Feature Class, populating it with all of the attributes for the new Transaction record in the Transactions table, but using the Geometry from the corresponding Account feature in Accounts feature class&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Requirement 2: Whenever an existing record is deleted from the Transactions Table:&lt;/STRONG&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Delete the corresponding Transaction feature from the Transactions feature class.&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Requirement 3: Whenever an existing record in the Transactions Table is updated:&lt;/STRONG&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Update all of the attributes in the corresponding Transaction feature in the Transactions feature class, but do not change the geometry.&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I started playing with attribute rules in Pro (version 2.4.1) and while these attribute rules would need to work in an Oracle Enterprise Geodatabase for now, I'm just testing in a File Geodatabase.&amp;nbsp;I started trying to build an Attribute Rule on the Transactions table which would create new records in the TransactionsFC feature class as new records are added to the Transactions table (Requirement 1) but it doesn't seem to be working.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;&lt;SPAN class="keyword token"&gt;var&lt;/SPAN&gt; transaction &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; $feature&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;var&lt;/SPAN&gt; transactionID &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; $feature&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;CUST_NUM&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;var&lt;/SPAN&gt; accounts &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;Filter&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;FeatureSetByName&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;$datastore&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'ACCOUNTS'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"CUST_ID"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;true&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"CUST_ID = @transactionID"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;// If no customer accounts found, must be new customer&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;IsEmpty&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;accounts&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
  &lt;SPAN class="comment token"&gt;// do nothing&lt;/SPAN&gt;
  &lt;SPAN class="keyword token"&gt;return&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;// If one or more customer accounts found&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;Count&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;accounts&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
  &lt;SPAN class="comment token"&gt;// take the first account feature&lt;/SPAN&gt;
  &lt;SPAN class="keyword token"&gt;var&lt;/SPAN&gt; account&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;First&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;accounts&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
  &lt;SPAN class="comment token"&gt;// return an edit operation&lt;/SPAN&gt;
  &lt;SPAN class="keyword token"&gt;return&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
    &lt;SPAN class="string token"&gt;"edit"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
      &lt;SPAN class="comment token"&gt;// on the TransactionsFC feature class &lt;/SPAN&gt;
      &lt;SPAN class="string token"&gt;"className"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"TransactionsFC"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
      &lt;SPAN class="comment token"&gt;// which adds a new feature&lt;/SPAN&gt;
      &lt;SPAN class="string token"&gt;"adds"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
        &lt;SPAN class="comment token"&gt;// with the following attributes from the Loss record&lt;/SPAN&gt;
        &lt;SPAN class="string token"&gt;"attributes"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
          &lt;SPAN class="string token"&gt;"CUST_NUM"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; transactionID
        &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
        &lt;SPAN class="comment token"&gt;// and the geometry from the account&lt;/SPAN&gt;
        &lt;SPAN class="string token"&gt;"geometry"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; account
      &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;
    &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;
  &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The expression validates fine but obviously I'm missing something. Whenever a new record is created in the Transactions table, a new record is not created in the TransactionsFC with the appropriate attributes and geometry.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any help is appreciated.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sun, 12 Dec 2021 08:34:28 GMT</pubDate>
    <dc:creator>JohnMDye</dc:creator>
    <dc:date>2021-12-12T08:34:28Z</dc:date>
    <item>
      <title>Join &amp; Create New Record via Attribute Rule</title>
      <link>https://community.esri.com/t5/geodatabase-questions/join-create-new-record-via-attribute-rule/m-p/769078#M808</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Consider the following Geodatabase Feature Class and table:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Accounts Feature Class (12 million records, updated monthly)&lt;/STRONG&gt;&lt;/P&gt;&lt;TABLE class="j-table jiveBorder" style="border: 1px solid #c6c6c6; width: 86.4662%;"&gt;&lt;THEAD&gt;&lt;TR style="background-color: #efefef; height: 2px;"&gt;&lt;TH style="width: 16%; height: 2px;"&gt;OBJECT ID&lt;/TH&gt;&lt;TH style="width: 10%; height: 2px;"&gt;CUST_ID&lt;/TH&gt;&lt;TH style="width: 10%; height: 2px;"&gt;FIRST_NAME&lt;/TH&gt;&lt;TH style="width: 10%; height: 2px;"&gt;LAST_NAME&lt;/TH&gt;&lt;TH style="width: 12%; height: 2px;"&gt;OPEN_DATE&lt;/TH&gt;&lt;TH style="width: 14.7337%; height: 2px;"&gt;GEOMETRY&lt;/TH&gt;&lt;/TR&gt;&lt;/THEAD&gt;&lt;TBODY&gt;&lt;TR style="height: 25px;"&gt;&lt;TD style="width: 16%; height: 25px;"&gt;1&lt;/TD&gt;&lt;TD style="width: 10%; height: 25px;"&gt;0956732561&lt;/TD&gt;&lt;TD style="width: 10%; height: 25px;"&gt;Jane&lt;/TD&gt;&lt;TD style="width: 10%; height: 25px;"&gt;Doe&lt;/TD&gt;&lt;TD style="width: 12%; height: 25px;"&gt;12/31/2017&lt;/TD&gt;&lt;TD style="width: 14.7337%; height: 25px;"&gt;Point&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="height: 25px;"&gt;&lt;TD style="width: 16%; height: 25px;"&gt;...&lt;/TD&gt;&lt;TD style="width: 10%; height: 25px;"&gt;...&lt;/TD&gt;&lt;TD style="width: 10%; height: 25px;"&gt;...&lt;/TD&gt;&lt;TD style="width: 10%; height: 25px;"&gt;...&lt;/TD&gt;&lt;TD style="width: 12%; height: 25px;"&gt;...&lt;/TD&gt;&lt;TD style="width: 14.7337%; height: 25px;"&gt;...&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Transactions table (80,000 records, updated hourly with a 30 day window)&lt;/STRONG&gt;&lt;/P&gt;&lt;TABLE class="j-table jiveBorder" style="border: 1px solid #c6c6c6; width: 63.4085%;"&gt;&lt;THEAD&gt;&lt;TR style="background-color: #efefef;"&gt;&lt;TH style="width: 12%;"&gt;OBJECT ID&lt;/TH&gt;&lt;TH style="width: 20%;"&gt;TRX_DATE&lt;/TH&gt;&lt;TH style="width: 11%;"&gt;CUST_NUM&lt;/TH&gt;&lt;TH style="width: 10%;"&gt;AMOUNT&lt;/TH&gt;&lt;/TR&gt;&lt;/THEAD&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD style="width: 12%;"&gt;1&lt;/TD&gt;&lt;TD style="width: 20%;"&gt;04/17/2019 14:21:56&lt;/TD&gt;&lt;TD style="width: 11%;"&gt;&lt;SPAN&gt;0956732561&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD style="width: 10%;"&gt;2.31&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="width: 12%;"&gt;...&lt;/TD&gt;&lt;TD style="width: 20%;"&gt;...&lt;/TD&gt;&lt;TD style="width: 11%;"&gt;...&lt;/TD&gt;&lt;TD style="width: 10%;"&gt;...&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Desired Result&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;TransactionsFC feature class (80,000 records, updated on the fly as Transactions Table is updated)&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;TABLE class="j-table jiveBorder" style="border: 1px solid #c6c6c6; width: 76.4411%;"&gt;&lt;THEAD style="border: inherit solid inherit;"&gt;&lt;TR style="background-color: #efefef;"&gt;&lt;TH style="width: 14%;"&gt;OBJECT ID&lt;/TH&gt;&lt;TH style="width: 23%;"&gt;TRX_DATE&lt;/TH&gt;&lt;TH style="width: 18%;"&gt;CUST_NUM&lt;/TH&gt;&lt;TH style="width: 12%;"&gt;AMOUNT&lt;/TH&gt;&lt;TH style="width: 12.1813%;"&gt;GEOMETRY&lt;/TH&gt;&lt;/TR&gt;&lt;/THEAD&gt;&lt;TBODY style="border: inherit solid inherit;"&gt;&lt;TR style="border: inherit solid inherit;"&gt;&lt;TD style="width: 14%;"&gt;1&lt;/TD&gt;&lt;TD style="width: 23%;"&gt;04/17/2019 14:21:56&lt;/TD&gt;&lt;TD style="width: 18%;"&gt;&lt;SPAN&gt;0956732561&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD style="width: 12%;"&gt;2.31&lt;/TD&gt;&lt;TD style="width: 12.1813%;"&gt;Point&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="border: inherit solid inherit;"&gt;&lt;TD style="width: 14%;"&gt;...&lt;/TD&gt;&lt;TD style="width: 23%;"&gt;...&lt;/TD&gt;&lt;TD style="width: 18%;"&gt;...&lt;/TD&gt;&lt;TD style="width: 12%;"&gt;...&lt;/TD&gt;&lt;TD style="width: 12.1813%;"&gt;...&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Now, I don't get any kind of geographic identifier in my transactions table. No address, no coordinates, no zip code, nothing. There is absolutely nothing to base any kind of geometry off of in that table nor can I get it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What I need to do is create&amp;nbsp;a new and separate feature class of the transactions which uses the geometry of its associated feature in the Accounts feature class. As a one time job, this is easily doable by joining the Transactions table to the Accounts Feature Class by CUST_ID and CUST_NUM and then exporting that to a new feature class.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There are a couple of problems that prevent me from doing that:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;STRONG&gt;Update Cadence:&lt;/STRONG&gt; My transactions table is updated hourly, with a 30 day window of transactions to the hour. So any record older than 30 days to the hour is deleted, any new transactions that have occurred within the last hour are added, and any records which have had updates are updated.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Runtime:&lt;/STRONG&gt; Doing a join between a 12m feature dataset and an 80k record table takes an abysmally long time and given the update cadence, it basically turns into a never ending geoprocessing queue. By the time one job run has finished, there may be another one or two in queue that need to be performed.&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So I'm trying to create an Attribute Rule on the Transactions table, that would do the following:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Requirement 1: Whenever a new record is added to the Transactions Table:&lt;/STRONG&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Get the Customer_NUM of the new record&lt;/LI&gt;&lt;LI&gt;Get the corresponding CUSTOMER_ID of the feature in the Accounts&amp;nbsp;feature class&lt;OL&gt;&lt;LI&gt;If there isn't a corresponding CUSTOMER_ID in the Accounts feature class, the transaction most likely is from a new Customer that was created within the last month which has not been added to my Accounts feature class. Do nothing.&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;LI&gt;Create a new feature in Transactions Feature Class, populating it with all of the attributes for the new Transaction record in the Transactions table, but using the Geometry from the corresponding Account feature in Accounts feature class&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Requirement 2: Whenever an existing record is deleted from the Transactions Table:&lt;/STRONG&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Delete the corresponding Transaction feature from the Transactions feature class.&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Requirement 3: Whenever an existing record in the Transactions Table is updated:&lt;/STRONG&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Update all of the attributes in the corresponding Transaction feature in the Transactions feature class, but do not change the geometry.&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I started playing with attribute rules in Pro (version 2.4.1) and while these attribute rules would need to work in an Oracle Enterprise Geodatabase for now, I'm just testing in a File Geodatabase.&amp;nbsp;I started trying to build an Attribute Rule on the Transactions table which would create new records in the TransactionsFC feature class as new records are added to the Transactions table (Requirement 1) but it doesn't seem to be working.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;&lt;SPAN class="keyword token"&gt;var&lt;/SPAN&gt; transaction &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; $feature&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;var&lt;/SPAN&gt; transactionID &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; $feature&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;CUST_NUM&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;var&lt;/SPAN&gt; accounts &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;Filter&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;FeatureSetByName&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;$datastore&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'ACCOUNTS'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"CUST_ID"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;true&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"CUST_ID = @transactionID"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;// If no customer accounts found, must be new customer&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;IsEmpty&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;accounts&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
  &lt;SPAN class="comment token"&gt;// do nothing&lt;/SPAN&gt;
  &lt;SPAN class="keyword token"&gt;return&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&lt;SPAN class="comment token"&gt;// If one or more customer accounts found&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;Count&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;accounts&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
  &lt;SPAN class="comment token"&gt;// take the first account feature&lt;/SPAN&gt;
  &lt;SPAN class="keyword token"&gt;var&lt;/SPAN&gt; account&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;First&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;accounts&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
  &lt;SPAN class="comment token"&gt;// return an edit operation&lt;/SPAN&gt;
  &lt;SPAN class="keyword token"&gt;return&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
    &lt;SPAN class="string token"&gt;"edit"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
      &lt;SPAN class="comment token"&gt;// on the TransactionsFC feature class &lt;/SPAN&gt;
      &lt;SPAN class="string token"&gt;"className"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"TransactionsFC"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
      &lt;SPAN class="comment token"&gt;// which adds a new feature&lt;/SPAN&gt;
      &lt;SPAN class="string token"&gt;"adds"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
        &lt;SPAN class="comment token"&gt;// with the following attributes from the Loss record&lt;/SPAN&gt;
        &lt;SPAN class="string token"&gt;"attributes"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
          &lt;SPAN class="string token"&gt;"CUST_NUM"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; transactionID
        &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
        &lt;SPAN class="comment token"&gt;// and the geometry from the account&lt;/SPAN&gt;
        &lt;SPAN class="string token"&gt;"geometry"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; account
      &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;
    &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;
  &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The expression validates fine but obviously I'm missing something. Whenever a new record is created in the Transactions table, a new record is not created in the TransactionsFC with the appropriate attributes and geometry.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any help is appreciated.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 08:34:28 GMT</pubDate>
      <guid>https://community.esri.com/t5/geodatabase-questions/join-create-new-record-via-attribute-rule/m-p/769078#M808</guid>
      <dc:creator>JohnMDye</dc:creator>
      <dc:date>2021-12-12T08:34:28Z</dc:date>
    </item>
  </channel>
</rss>

