When syncing a contact with Address Book from FileMaker using the Address Book Manipulator, the general practice is to store the Address Book ID (“ABID”) from the contact in a text field in FileMaker. This Address Book ID is a reference to that contact; if you want to open the contact in memory or display the contact in Address Book, you would pass this ABID to say “This is the contact I want to open” or “This is the contact I want to display”. You would also use this ABID when assigning or removing contacts from Groups, and Group records themselves in Address Book also have an ABID of their own.
We have experienced situations that can arise when syncing an Address Book contact that are stored in an online account. In some instances, the contact’s ABID will change as a result of an online sync. This, in turn, will disconnect the link that FileMaker was originally maintaining; for example, FileMaker has one ABID for contact “John Smith”, but Address Book has an entirely different ABID for “John Smith”. This appears to be more common with Google Contacts accounts, but iCloud also can experience this particular problem.
There are two different methods that can be used to resolve this particular kind of problem: Syncing based off of a custom field, and syncing based off of a multi-value property.
Custom Field-Based Syncing
One of the methods we recommend is to make use of a custom field to store the FileMaker record ID (which is unique per record), and utilize that as the primary way to acquire the correct ABID for a contact or group. In such a case, the process would perform PCAB_Search and provide the custom field’s name and the record ID, open the record that is returned, and acquire the ABID. This would then be used to either read more data into FileMaker, open the record to push data from FileMaker, display in Address Book, etc.
Multi-Value Property Syncing
In situations where a custom field would not be suitable (such as syncing with an iCloud account), another sync method involves using a multi-value property field to store a FileMaker identifier. For example, the developer can make use of the Notes, URL, Related Contacts, or Email Address fields. In general, it would be good practice to use the URL field, as that is a multi-value property and can have a custom label such as “FMID” to denote that the contents of that url field store the FileMaker ID. Consideration should be made if the contacts are shared, however; non-custom fields that store a FileMaker ID are editable, and can be overwritten if users set data into those fields from their devices.