When trying to setup a changes only map on the CRM customeraddress entity you will receive the following error message.
‘eones_ch_customeraddress’ entity doesn’t contain attribute with Name = ‘eones_customeraddress_trackingid’.
Cause
The Address entity does not allow lookups to it, other than the ones available “out of the box”. When the SmartConnect plug-in creates the custom tracking entity to track which addresses have changed it tries to create the custom field ‘eones_customeraddress_trackingid’ to track changes. This field is a lookup to the Address entities unique identifier so when the map runs it pulls the most recent data from CRM.
Workaround
There are three options to get around this. You can use a real-time data source, MSSQL Table changes only, or a Bulk data source.
Real-Time
Real-Time data sources are triggered the same way changes only are, but what happens to the data is different. In changes only maps the data is sent to a tracking entity so it is ready to be processed by SmartConnect later. Real-time sends the data to SmartConnect immediately for processing.
Real-time data sources require the SmartConnect WCF service to be configured and setup in the SmartConnect CRM connector setup window. If your SmartConnect instance is online, then the SmartConnect WCF service needs to be assigned a certificate so it is externally available. If your CRM is only local, then the web service only needs to be exposed within your organization.
Here is a link to configuring the WCF Service
Here is a help article for troubleshooting real-time data sources
MSSQL Table Changes Only
MSSQL changes only is another option, but will only work if CRM is installed locally so you have access to the SQL tables. This approach won’t harm your CRM tables because it will add a trigger to the CustomerAddressBase table and read the changes to the table to write to a custom SQL table for SmartConnect to read from later.
Bulk Query restricting Modified Date
A Bulk data load can be used to only return recently updated records by using Global Variables and some scripting. Every CRM entity has a ‘Modified On’ field that contains the date of the last change to a record. We can use this field to return only records modified since the last time the map ran.
The major caveat to this approach is that in a CRM query we can only use the date not the time. So, I can’t say I want all changes since 10 AM today, I have to say I want all records since yesterday or today. You will want to store the date in a global variable, and use a pre-map task to calculate the value for the global variable similar to the one here. For assistance using Global Variables in a CRM Query, please reference this article.