Wednesday, June 25, 2008

Funambol Community Showcase #4: Connector for SugarCRM

Last month I posted about the Funambol Connector for SugarCRM, who won the "Project of the Month" award at SugarForge. We asked Phil some questions about it as well. Here it is.

Funambol Connector for SugarCRM

By Phil Shotton

Q: Your project is a Funambol connector for SugarCRM: what does it do, what problems does it solve?
The connector enables Funambol sync clients to synchronise their contacts and events with the SugarCRM database. SugarCRM is a complete open-source CRM solution with its own internal contact lists and meeting schedules per user. The connector allows a SugarCRM user to sync his mobile device, in both directions, with his contacts and meetings stored in SugarCRM.
Q: How did you come up with the idea of creating this software?
I started a new company and we decided to try SugarCRM as a customer management system. We wanted to be able to sync our meetings and contacts in Sugar to our PIM software and mobile devices. We have a mixed environment (Windows, Linux, various mobile devices) so an open sync system was needed. I discovered Funambol and found that it had an existing SugarCRM connector. I tried using it, found a few problems, started digging into the source and (to cut a long story short) was asked to take over maintaining the connector. So I'm building on the foundations laid by others.
Q: What challenges did you encounter and what achievements are you proud of?
I'm an experienced Java programmer, but the end-to-end sync process involved many technologies that I was not familiar with. Web services, php, the whole Funambol integration. I first had to learn how to monitor soap requests using the Axis tcpmonitor, work out how to debug the SugarCRM soap interface (written in php). Then delve into the underlying Sugar d/b calls, work out the mapping of results into Contact and Calendar objects, and understand the build/package process of a Funambol connector. All in limited time. I'm now proud of understanding the sync process, and being able to very quickly respond to issues and fix them.
Q: How would you summarize your experience developing Funambol?
A steep learning curve! A lot of concepts and standards to assimilate before becoming productive. But the experience has been extremely rewarding, it's great to have people from all over the world asking questions, reporting problems, requesting changes and then at the end, saying thank you!
Q: What are the steps that you would suggest to a newbie interested in developing a Funambol connector? What are the mistakes you made in earlier stages of development that you wouldn't repeat, knowing what you do now?
First, pick a connector for a system you understand well, so you are only learning one end of the system from scratch. My first big problem was having to learn two systems (Sugar and Funambol) and a new language (php) and a new technology (SOAP). Have a straightforward environment (use the Java client for testing, don't go straight off and try and sync with outlook). Put lots of debug logging in your code. Try to have each part of the connector testable in isolation. Look at as much other code as possible.
Q: What is the roadmap for future versions of the Funambol connector for SugarCRM?
Item 1 (apart from ensuring that it works reliably) is to allow sync of shared data. Currently the connector only syncs contacts that are owned by the specific user, but sugar allows contacts to be ownerless and therefore visible by all. I also want to look at email sync, but this is a whole new can of worms! I also want to ensure that I can support multiple versions (of both SugarCRM and Funambol) with the minimum of maintenance effort, by making as much as possible driven by configuration.

I also want to look at moving to maven, and building better automated testing tools.