View Single Post
Old 06-09-2009, 08:36 PM   #1 (permalink)
MV10
Hello, my name is .......
 
Join Date: Apr 2009
Posts: 9
 
Device(s):
Thanks: 0
Thanked 1 Time in 1 Post
Default Dev wants opinions: Outlook contact sync (non Exchange)

I'm a developer writing an application to sync Outlook 2007 contacts with GMail. These are regular local-PST contacts, not Exchange, and yes, for now I'm exclusively focused on Outlook 2007 since that's what I have available. I may look at older versions (which I own) if this one works out. Anyway, I've tried most (all?) of the sync apps and didn't enjoy the experience. I've done the export/import thing and consider that a temporary fix. So I decided to do something about it myself.

The application I have today runs in the background and periodically pulls contact data from both systems. It can identify matches using a variety of prioritized criteria, and it has a way to systematically decide what data needs to be updated in each contact list. It can write changes to both sides. So it's largely done -- except for some decisions about that sync methodology.

The tricky thing about sync is that the GMail and Outlook contact data fields are totally different.

For example, GMail allows unlimited e-mail contacts which are tagged as Home, Work, and Other. By contrast, Outlook only supports three e-mail addresses, and they're not tagged at all. What should a sync app do if the GMail account has four addresses, but only three Outlook slots to store them?

A different example: GMail also supports unlimited phone numbers, also tagged with about six categories. On the other hand, Outlook can handle sixteen phone numbers, each with a fixed category. Some are a bit odd, like Radio Telephone. What should the sync app do if the GMail account has three Work numbers? Outlook only has Business 1 and Business 2...

Granted, these are what programmers call "edge cases" -- they won't apply to most users. But I'm hoping to find some people with large, complex Outlook address books who will weigh in with opinions about how they'd like problem cases handled.

Here is a comparison of the contact data in each system (exlcuding largely similar fields, and excluding the vast array of Outlook fields that simply have no GMail equivalent)--

E-mail Addresses:
GMail: Unlimited, tagged as Home, Work, Other
Outlook: 3, not tagged at all

Phone Numbers:
GMail: Unlimited, tagged as Home, Work, Mobile, Work Fax, Home Fax, Pager, Other
Outlook: 16, one each of Primary, Mobile, Car, Home, Home 2, Business, Business 2, Assistant, Callback, Company, Business Fax, Home Fax, Pager, Other, Radio Telephone, TTY/TDD

Postal Addresses:
GMail: Unlimited, tagged as Home, Work, Other
Outlook: 4, one each of Home, Mailing, Business, Other

IM Addresses:
GMail: Unlimited, tagged as GoogleTalk, AIM, Yahoo, Skype, QQ, MSN, ICQ, Jabber
Outlook: 1, untagged (probably should equate to MSN, but...?)

Generic "Other" Field:
GMail: Unlimited, tagged as Home, Work, Other
Outlook: No direct equivalent

Web Address:
GMail: No direct equivalent
Outlook: 1, not tagged

The contact name is a special case. GMail does a poor job importing Outlook contacts since it leaves the name blank on business-only contacts. I guess Google devs only talk to their friends. The app I've written will fix your imported list in GMail by substituting the company name if the name is missing. Lots of little stuff like that is easy to do. It's the "unlimited" lists in GMail and the many places where there isn't a direct correlation that are creating questions in my mind.

When something doesn't quite match up should the app simply not do anything? Or would you prefer a partially successful sync? What about some sort of manual conflict resolution? What other options would you like to see in a sync app? (Limited to sync activity and contacts -- I don't plan to mess with ToDo lists, calendars or anything outside of contacts.)

You've got a dev's attention... share your thoughts and ideas.
MV10 is offline  
Reply With Quote
The Following User Says Thank You to MV10 For This Useful Post:
njperry (02-25-2010)