There is a rabbit hole that is the CRMEmailPhoneData table and its non interaction with webservice updates to Email and Phone links tables. We had been testing cases where the EmailLink is deleted, (user deletes the email address for an entity but the email is used for another entity as well), EmailLink is updated to a new Email record, (user changes the email address for an entity), and the creation of different PhoneLink types, (user now only has a home phone instead of a business phone) and found that the CRM started showing errors and unsynced data. The stored procedure to update the CRMEmailPhoneData table is not run on Web Service updates to the EmailLink and PhoneLink tables so far as I know so how can the web service resync the CRMEmailPhoneData to the actual data? If the resync can only be instantiated manually then it is likely we will need to have several workarounds to provide the duplication in mapping. Any chance there is a reference to the base views that use the CRMEmailPhoneData table so that we can better test data syncronisation and edit the views if need be.
In addition the CRMEmailPhoneData table does not seem to handle the Many to Many relationship in which multiple emails, and phones of the same or mixed types can occur mapped to multiple entities which is the duty of the EmailLink and PhoneLink tables. We have a people who can have multiple email addresses and phone numbers, (it is also possible that they may have none of certain types or only some) and while the EmailLink and PhoneLink tables correctly reference the data the CRMEmailPhoneData table cannot do this mapping correctly and is constantly getting out of sync (perhaps a db view would be better?).