Zulu Contacts Integration
Note: Zulu's Contact Sync is Back in Beta
Regretfully, we've just never been able to get the contact sync in Zulu to be reliable with Google Contacts. Some of this is that Google Contacts is changing and some if that contacts are inherently more complicated than calendar events (the calendar sync in Zulu is rock solid). So until we can get this rock solid we're demoting the contact sync to Beta and no longer supporting it.
We'll continue playing with this here but won't be able to help customers try and get it working: it just isn't reliable enough. At this point we don't have an ETA as to when this feature may be available again, if ever. Believe me, we wanted this to work as bad as you did.
Integration: Adding iCal Support to Your FileMaker File
1. Install Zulu itself.
Follow these instructions to install Zulu on your FileMaker Server.
2. Backup your file.
Really. You'll be creating a new table in the steps that follow and you should always backup before making such changes. And make sure your filename doesn't contain any spaces.
If you have FileMaker Pro Advanced, upload your file to your FileMaker Server and work on it there. Otherwise, make these changes locally before uploading the modified file to your server.
Copy the following scripts to your solution. If you're using FileMaker Advanced you can copy and paste these into your file. Otherwise, take your file off the server, and open it locally before importing the scripts: click the "Import" button at the bottom of the Manage Scripts window in your solution and import the following scripts:
- “Publish Contacts”
- 4a. Copy the “ ZuluContactConfig” table to your solution. This will create a layout with the same name and all the table's fields on it. You may hide the ZuluContactConfig layout, but do not rename it, or add/remove fields from this layout.
- If you don't have FileMaker Advanced (which lets you copy and paste tables from file to file) you'll need to recreate the “ ZuluContactConfig” table in your solution by hand, and then add all the fields from it to the default layout the FileMaker creates for you when you create a new table. There are only 14 simple fields here so this won't take long, but make sure you get the auto enter field options exactly the same as they are in the sample file.
- You can also import the table if you don't have Advanced, but take your file off the server first. From your file select File / Import Records... / File and then select the Zulu sample file. Select the ZuluContactConfig table to import and for the target, select "New Table". FileMaker will create the new table and calcs for you.
- 4b. Do the same with the "ZuluContactGroups" table, adding it to your solution and leaving the layout created for it intact. This table has more auto-enter options, so if you don't have FileMaker Advanced, make sure you get the auto-enter options right. You'll also need to create the relationship between your contacts table and the Groups table like we have in the Sample file.
5. Mapping Fields.
Copy the tab control from the “ZuluContacts” layout and paste it into your solution on a new blank layout based on your events table (or the one your brought over in 4b above). There should be nothing else (or at least no other named objects, and no script triggers) on this layout.
- You can name this layout whatever you want: this will be the name of your new contact group, though you can always change the calendar name later.
Follow the mapping instructions on the “ZuluContacts” layout, selecting the relevant fields from your file. You may need to create a couple new fields in your events table if you don't have creation and modification timestamps, and you'll almost certainly need to create the zulu_UUID and zulu_GOOGLE_DATA fields on the required tab. REmember, the yellow fields are required and you'll need to map those. The other fields are optional.
- You may want to copy some of these fields from the ZuluContacts table in our sample file.
- Fields you probably already have...
---- NameFirst NameLast etc
- Fields you likely don't already have...
---- _id_Group zulu_CREATION_TIMESTAMP zulu_DELETED zulu_GOOGLE_DATA zulu_LOCATION zulu_MODIFICATION_TIMESTAMP zulu_UUID
- Make sure the fields you create are of the same type (number, text, or timestamp) as they are in our sample file, and that your creation and modification timestamps auto enter.
Note that this zulu_UUID is not the unique ID in your table (even if you have a UUID), this is Google's UUID for the event, so be sure to create a field for this. Your unique ID gets mapped to "pkcontact". Your unique ID also needs to be a text field; this is usually not a problem but if you're performing finds on your id field you may want to change those finds to use the == operator.
The zulu_UUID also has an auto enter definition you'll want to preserve (we auto-enter a blank value). Make sure you set this up exactly as it is in our sample file and that the option "Do not replace existing value of field..." is unchecked.
Country Codes Google only supports two digit Country Codes in Contact address information. Please make sure you map a field with these codes rather than the Country name. Attempting to sync with a full Country name will cause a syncing error. Supported Country Codes
The groups tab of the field mapping (ZuluContacts) layout has a single field on it for breaking your contacts into groups. Even if you have a tagging or groups field in your file, you should create this new _id_Group field in your contacts table. Instructions for formatting the checkboxes on this field and creating its value list are on the Groups tab, but you may want to learn more about this here: Zulu Contact Groups.
5c. Related Fields
Zulu can map things like addresses, phone numbers, and email addresses to fields IN your contacts table, to fields in related tables, or to a mix of both. You can read about this now and map all of these entities at once, or just map the main name and notes fields for now, returning to map related fields once you have this up and running. Remember, that if you change your mappings (or add mappings) you'll need to click "publish" again (see step 7 below).
6. Enable XML Web Publishing.
Select File / Manage / Security and edit the privilege set(s) that will be accessing this file from iCal: make sure each has "Access via XML Web Publishing" enabled:
7. Publish your contacts.
Upload your file to your FileMaker Server if you've been doing this work locally.
Navigate to the field mapping layout in your file and run the "Publish Contacts" script which you pasted into your solution.
Enter your FileMaker account and password when prompted. This doesn't have to be the full access account and password, but it does have to have write access to the ZuluContacts table. The account and password entered aren't stored anywhere.
8. Seed the Modification Timestamp.
Enter browse mode on the Field Mapping layout in your file (the ZuluContacts layout) and place your cursor in the Modification Timestamp field (on the Zulu Fields tab). Select "Replace Field Contents..." from FileMaker's "Records" menu. Hit the radio button "Replace with calculated result" and enter 1 in the calculation which follows. Click "OK" and then click "Replace". This will seed all contacts with a modification date which is essential before your first Google sync.
Visit you Sync Admin page (<ipaddress>/zulu/admin/) and map one of your FileMaker accounts to a Google account. When you're done you can click "Sync Now" on the admin page to move your contacts to Google.