Pages

Monday, June 14, 2010

SugarCRM Troubleshooting: Install Time Problems

Sometimes weird things happen for a reason.  Here is a good example.

A few days ago, I decided to reset the database for a test installation of SugarCRM 5.5 that I have on my laptop.  By that I mean that I ran the installer again, my goal being to cause it to overwrite the already existing database.  My reason for doing so is that I wanted the demo data to test something for a project I was working on.

For those of you wondering how I went about getting the installer to run again, all I did was edit my config.php file and changed this:

'installer_locked' => true,

to:

'installer_locked' => false,

That modification to config.php allows one to run the installer again although the installation may already be operational.  Obviously you wouldn't want to do this on a regular basis as this process could potentially cause you to accidentally delete your SugarCRM data, but it does have its uses and thus is helpful to know.

Now, back to my situation.  After changing my config.php file, I proceeded to walk through the installation process as normal.  I filled in the various fields with the appropriate data and continued through the installation wizard without any problems.

Problems, however, did arise when I got to the final stage of the installation wizard while creating the database.


Friday, June 4, 2010

SugarCRM Customization: Read-only Fields

It is no secret that I am a big fan of the ease of which the SugarCRM framework facilitates a number of customizations.

A few months back I shared a simple example that demonstrated said simplicity quite well through a customization of the search popup windows. Let us take a look at another equally simple and useful modification.

This time around we are going to look at something just as easy, but serving a completely different purpose.

In this scenario we will assume that we have a need to create a read-only field, one that cannot be edited via the SugarCRM interface.  This is helpful for scenarios where records may contain important data that should not be changed by any user.  A good example of this is financial data from external systems, such as your ERP solution.

Because this data is coming from another system, it is usually input into SugarCRM by means of a link or other programmatic approach that eliminates the need for the user to actually enter the data by editing the record.

Allowing users to manipulate the values would create the potential for faulty analysis.  For example, if one of the values relates to a customer's outstanding balance, a user could accidentally (or purposely) increase or decrease it, in turn misleading the next person that views said record.  Hence the value of using a read-only field.

Converting a field into a read-only field is quite simple.  Read on to see the step-by-step instructions.

Monday, May 3, 2010

Database Administration via SugarCRM Framework

Recently I found myself in a situation that required me to delete a large amount of records from a SugarCRM database.  More to the point, I needed to delete all the account and contact records.

Under normal circumstances, the task would have been rather simple.  One approach that would normally work would be to simply select all the records via the ListView and then delete the records.  A second -- and faster --- approach would be to simply truncate the table via a MySQL database administration tool such as SQLyog or phpMyAdmin.

Notice I stated "normal circumstances."  

My scenario was such that the environment hosting the SugarCRM instance in question did not allow me to select all the records and then delete them.  Due to number of records that needed to be processed (over 70K), the system tended to time out and fail.  Smaller batches was simply not going to work as it was taking a minute or more to process 200 contacts.  At that pace, it would have taken me hours to delete the entire batch of records just in one module.  

You may be wondering why I even bothered with the ListView when the SQLyog/phpMyAdmin option would have been far easier and faster.  The answer is actually equally simple.  Much like many other hosting providers, this one in particular does not provide a means for connecting directly to the database via external tools.  It is further complicated by the fact that similar tools could not be installed -- nor were available -- on the server, nor was I able to access the file system.

I am stuck, right?

Well, not quite.  After giving it some thought for a few minutes, I realized I could manipulate the SugarCRM framework to get it to do what I needed, although it is not really designed for the task I had in mind.

Let us take a look at how I solved this particular problem.