Wednesday, December 15, 2010

It is all in the details.

Before I got into the consulting world, I worked at a CRM vendor where I had the fortune of working alongside some very talented individuals.  

There was a special level of understanding within the group that facilitated many tasks, especially when it came to elaborating new features to the development team.  Given this special synergy, communication amongst team members tended to be rather efficient, virtually eliminating the need for long, drawn out meetings that would usually make us want to stab our eyes out.  

Unfortunately, environments like this are not common place and simultaneously, the nature of software development requires clear and efficient communication amongst the parties involved.  Lacking this communication usually results in one of two things (or both):
  • Unexpected delays
  • Undesired results
In the world of software development, one cannot afford to leave requests open to interpretation or one might not get what was envisioned, and correcting problems will usually result in missed deadlines.  

Perhaps you are wondering about the relevance of these points to the CRM consulting world.  Allow me to explain.

Monday, December 13, 2010

You are not seeing double.

A few days ago I got reacquainted with an issue I had previously run into, but forgotten about.  Lets talk a little bit about the issue first, and then its solution. 

From time-to-time, the need to retrieve a list of SugarCRM users via the SOAP API presents itself.  For example, my CRM SkyDialer tool allows one to schedule an activity and as part of that process, one is allowed to select the user to whom the activity is assigned.

That list of users is dynamically generated by means of a call to the get_entry_list() method.  Now, for the problem.

When calling the get_entry_list() method, one has the ability to limit the records returned by specifying a WHERE clause as a parameter.  Logic would dictate that if one wanted a complete list of all active users within the instance of SugarCRM in question, the following WHERE clause would provide the desired results:

users.status = 'Active' AND users.deleted = 0

So far, so good, but somewhere in the life cycle of SugarCRM (version 5.5.1 is my best guess), a change was made to the relevant code that is responsible for providing the results.  This change in turn causes a problem when executing the get_entry_list() method with the above clause.  

If it does not provide the proper results, what exactly happens?