Accessing your business contacts

Companies often store their customer information in databases managed by customer relation management tools.

SugarCRM is one such popular (and open source) system, built on the extremly wide spread AMP stack (Apache HTTP, MySQL, PHP). Therefore its main user interface is web based, i.e. accessible through standard web browsers and thus also relatively platform independent.

Additional to that SugarCRM is also capable of being a web service, allowing interaction with programs of any sort through passing requests and responses formatted as XML over HTTP.
The technology deployed for this is called SOAP.

Building a SOAP client with just XML parsing libraries would be a daunting task, so there are many SOAP frameworks which help with that. Now, as KDE developers we would want to use such a framework which is as Qt-like as possible, ideally one being built with Qt.

Under these requirments our champion is KD SOAP, which is not only a Qt based library capable of talking SOAP, it also includes a code generator tools which will take a web service's API description file and generate C++/Qt proxy code for working with the web service as if it would be a local object in your application.
For the developers among this blog's readers, you can think of this as an equivalent to using qdbusxml2cpp for D-Bus services.

When we talk about contacts in the context of KDE we of course imply Akonadi, or more specifically having an Akonadi resource for accessing contact data on a certain backend.

KD SOAP enabled me to quickly develop such a resource for accessing SugarCRM addressbook, which I have now put into KDE's git.
It is still lacking polish such as KWallet integration, but is can already be used to view, edit, add and delete SugarCRM contacts through KDE addressbook interfaces.

Like all KDAB's add-on products to Qt and like Qt itself, KD SOAP is available both under Free Software (GPL) license as well as under a commercial license.
The SugarCRM resource is Free Software and licenced under GPL2 and GPL3.

The following are two screenshots showing sample contact data in both SugarCRM's native web interface as well as in KDE's native addressbook:

SugarCRM contacts in a browser
SugarCRM contacts in KDE's addressbook


Very excited to see this. I did a similar project (on Salesforce.com for the 2010 Camp KDE). Had to use "gSoap", which I found to be a bit flaky. Glad to know there's a better solution out there. If interested: https://gitorious.org/qsfdc_connector

My project has been on hiatus and in the meantime Salesforce.com has released a REST API that does much of what their SOAP interface can do, and I gather REST is a lot more popular (it's certainly simpler!). Would be curious to know what you think of the SOAP/REST debate and if you think it's worth switching my old project to either REST or KD-SOAP. Thanks, and good job on the resource.

By jaafar at Tue, 04/19/2011 - 20:29

I haven't used REST in any meaningful way yet to make a fair comparison. I guess it will always depend on whether the service provider has any preference and maintains one of them better than the other.
Or whether one provides some sort of change notification mechanism, etc.

KD SOAP is definitely capable of working with Salesforce as well, I've done a resource prototype for a company internal project trying both the SF partner API as well as the enterprise API.

I haven't looked into gSoap too deeply either, so I will refrain from comparing it as well, what I really liked about KD SOAP was the easy way of doing asynchronous operations using signal/slots as usual.

Of course one of the differences which wasn't important to me but might be to you is licencing, i.e. KD SOAP being dual licenced commerical/GPL while (IIRC) gSoap is LGPL.

By krake at Sat, 04/23/2011 - 08:52