I posted this in the Dynamics virtual user group, but I suspect not all Dynamics users are aware of it, so am posting it more generally.
We have a custom entity related to Contact, but this entity has a number of lookups and some of these themselves have lookups. The docs say that you can only sync entities related up to 2 levels to a standard synced entity, but we were finding that we could only sync the first level of custom entity, i.e. the entity related to Contact. When I tried to add a second level of custom entity to the sync, I got the error "This object was modified in CRM since the sync was last enabled. To update these changes, please disable and enable sync again.". This error is misleading because no modifications had been made in CRM.
I discovered that it is essential to set up the custom entities to be synced in a particular order. Here is the response from Marketo Support (which worked), in case anyone else hits this problem:
Here is the summary of the steps involved to refresh the schema:
1. Disable the global Salesforce sync.
2. Remove the objects from use from all assets (i.e. campaigns, smart lists etc).
2. Next, disable the sync on the level 1 custom entity and any other related object.
3. Refresh the schema.
4. After the Schema refreshes, enable the sync for the custom entity furthest related from the Contact (in our case), then enable the sync for the custom entity directly related to the Contact (and any other objects that need to be re-enabled).
5.Enable the Global Salesforce Sync.
Hope this is useful to others -