Nuts and Bolts SuiteCRM 7 Lead image: Lead Image © Martina Berg, Fotolia.com
Lead Image © Martina Berg, Fotolia.com
 

Open source customer relationship management software

Custom Sales

SuiteCRM 7 is a powerful open source enterprise customer relationship management solution. By Rick Timmis

SalesAgility forked the SugarCRM project back in 2013, with a bold vision to deliver an enterprise-ready, 100 percent open source customer relationship management (CRM) system when the "commercial open source" SugarCRM project did not meet expectations [1]. SuiteCRM is dedicated and committed to maintaining the free software ethos and to delivering 100 percent commitment to the open source community.

Features and Application

CRM solutions have become a cornerstone of successful business and have experienced rapid commercial growth since cloud pioneer Marc Benioff [2] brought Salesforce to the market in 1999. SuiteCRM is a very powerful business toolkit. Beneath its mild and perhaps slightly antiquated user interface is hidden a powerhouse of business automation and management tools.

SuiteCRM offers much, much more than clever contact, communication, and sales opportunity development. It provides almost all the features of a full Enterprise Resource Planning (ERP) system: product inventory, invoicing, marketing, document management, project management, support case management, event management, location mapping, email marketing, workflow automation, and more.

In this article, I offer a good level of understanding of the SuiteCRM tools and modules. Equipped with this knowledge and just a modest amount of work, you can establish a fully functional business system with significant levels of automation.

Installation and Experimentation

In my example installation, I put SuiteCRM on Ubuntu 18.04 Desktop, although for production usage, I would recommend Ubuntu Server.

SuiteCRM operates on a LAMP (Linux, Apache, MySQL, PHP) stack, so you'll need to install the various services to provide the platform. To begin, open a terminal and install all the dependency requirements with the Apt package manager:

sudo apt install mysql-server libapache2-mod-php7.2 apache2 php7.2-zip php7.2-mysql php7.2-mbstring php7.2-json php7.2-imap php7.2-gd php7.2-curl php7.2-xml php7.2-common php7.2-cli php7.2 unzip

With the supporting dependencies installed, you are now ready to download the latest stable SuiteCRM package [3]. At the time of writing, the latest release was version 7.10.11, which is the version I work with in this article. (At print, the latest version was 7.11.0.) Copy the resulting ZIP file from your Downloads folder to /var/www/, use the unzip utility (installed earlier) to unpack it, and set the ownership and permissions:

sudo cd /var/www/
sudo unzip <suitecrm zipfile>
sudo mv <suitecrm folder> ./suitecrm
sudo chown -R www-data:www-data ./suitecrm

Note that I also renamed the folder created when it was unzipped to the more generic suitecrm. This step is mostly for convenience and will help with continuity as you work through the tutorial.

Next, you need to provide a virtual host file for the Apache web server so that it knows how to serve up the SuiteCRM application. Again, change the directory to the folder where Apache keeps track of the sites it has available and create a new virtual host configuration file for your SuiteCRM application:

sudo cd /etc/apache2/sites-available
sudo touch suitecrm.conf
sudo nano -w suitecrm.com

Now copy the code shown in Listing 1 [4] into the nano text editor window to populate the suitecrm.conf file with the details for the virtual host. To save the file, use Ctrl+O to write to the file, and then exit the Nano editor with Ctrl+X.

Listing 1: suitecrm.conf

01 <VirtualHost *:80>
02     ServerAdmin webmaster@localhost
03     ServerName localhost
04
05     DocumentRoot /var/www/suitecrm/
06     <Directory />
07         Options FollowSymLinks
08         AllowOverride None
09     </Directory>
10     <Directory /var/www/suitecrm>
11         Options Indexes FollowSymLinks MultiViews
12         AllowOverride None
13         Order allow,deny
14         allow from all
15     </Directory>
16
17     ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
18     <Directory "/usr/lib/cgi-bin">
19         AllowOverride None
20         Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
21         Order allow,deny
22         Allow from all
23     </Directory>
24
25     ErrorLog ${APACHE_LOG_DIR}/error.log
26
27     # Possible values include: debug, info, notice, warn, error, crit,
28     # alert, emerg.
29     LogLevel warn
30
31     CustomLog ${APACHE_LOG_DIR}/access.log combined
32 </VirtualHost>

The final section of the system administration required to get a SuiteCRM server up and running is to activate your application installation with the Apache enable site command. Also, you need to tweak your php.ini file to allow uploads larger than 6MB, which you'll need for SuiteCRM file uploads and upgrades:

sudo nano -w etc/php/7.2/apache2/php.ini

Use the nano editor's Ctrl+W search function to find the upload_max_filesize line. By default, it is set to 2M, which you should amend to 25M.

Now you can create a database and user from the MySQL command-line interface. Ubuntu installs MySQL with root user access without a password; clearly, this is not for production use:

mysql -u root
mysql> CREATE DATABASE suitecrm;
mysql> GRANT ALL ON suitecrm.* TO 'dbuser'@'localhost 'IDENTIFIED BY 'password';
mysql>exit;

To enable the application in Apache, enter:

sudo a2ensite suitecrm

With the configuration now in place, you need to restart the Apache web server,

sudo systemctl restart apache

and begin the browser-based installation by pointing your browser to http://localhost.

The application will recognize that the application requires installation and will take you to the Setup Wizard. After you accept the GNU GPL license, the installer checks that all the system requirements are met before sending you to a configuration window (Figure 1). After filling out this screen, click Next to continue. If you see no errors in the report (Figure 2), click Next to move to the login screen (Figure 3). After logging in, you'll see the SuiteCRM Dashboard with no data (Figure 4).

Database configuration and administration user details.
Figure 1: Database configuration and administration user details.
A successful SuiteCRM installation.
Figure 2: A successful SuiteCRM installation.
The SuiteCRM login screen.
Figure 3: The SuiteCRM login screen.
SuiteCRM Dashboard with a variety of dashlets.
Figure 4: SuiteCRM Dashboard with a variety of dashlets.

Common CRM Workflow

CRM tools are typically used to develop customer relationships and sales opportunities. When you think for a minute about how sales transactions take place, they almost always involve people buying products or services from other people, which is typically modeled in a sales pipeline. A common pipeline starts with a lead (i.e., a person that either makes first contact with you or with whom you make first contact). Those of you with a marketing background will recognize a missing step, and, indeed, SuiteCRM provides tools for prospecting and delivering marketing campaigns, including email marketing. However, I won't have the opportunity to visit that step in this article.

At the start of a pipeline, you record leads in the SuiteCRM Leads module, which you will find under either the Sales or Marketing menus. To create the lead, you enter information about the person, their company or organization, where the lead came from, and summary details of any prospective sales value, if known. Notice the lead Status field is useful for providing information about a lead's progress; it can be used in workflow automation, as well.

Leads can have communication information recorded against them, too. In fact, the concept of keeping a record of email communications, calls, meetings, and other notes is a very common theme in CRM, and SuiteCRM divides this information between the History and Activities subpanels. Activities are future events that have yet to be done and can include tasks, calls, and meetings with associated reminders. Reminders can be configured to provide a pop-up when they are due, which is very useful for keeping track of lots of actions. History keeps a record of actions, including email – if you configure your email client to integrate with SuiteCRM.

When working as a sole trader or in a small business, keeping records like this can seem tiresome and is all too often considered overkill. However, the discipline of keeping these records can be paid back tenfold.

For example, imagine that Roland has been maintaining his CRM system meticulously, and his business has grown enough that he now wants to employ a salesperson and a customer account manager. Roland employs David as the customer manager and Rachel as the salesperson. Instead of Roland having to impart months or even years of client knowledge to David, he only needs to train David on how to use SuiteCRM. Similarly Roland does not need weeks to bring Rachel up to speed with the status of each lead in the sales pipeline. Moreover, by equally ensuring the same discipline is undertaken by David and Rachel, the business can grow rapidly and exponentially, because the detailed business knowledge is held within SuiteCRM and can be shared across the business.

This methodology can be applied throughout almost every SuiteCRM module. Furthermore, customer account records aggregate lead and contact history to provide a detailed historical interaction record, which can be accessed in a single click on View Summary in the drop-down on the History subpanel.

Relationships

SuiteCRM modules are commonly associated under the typical database one-to-one, one-to-many, and many-to-many relationships that are established in the relate fields of the subpanels. In the earlier workflow example, you saw the History and Activities subpanels. The action items in the subpanels represent a one-to-many relationship, wherein one lead can have many related actions. Clicking on (drilling down into) one of the action items reveals a relate field, which links back to the originating lead. This mechanism is simple, intuitive, and very powerful.

Furthermore, as you navigate around SuiteCRM, you quickly discover that your navigation is circular. It is easy to click from lead to action, action to lead, lead to contact, contact to account, account to opportunity, and so on. This empowers users with a simple method of information discovery.

Customization Tools

Of course, no database system ever provides exactly the functionality your business needs out of the box. Because SuiteCRM is open source, you could dive in under the hood and start making changes to the codebase. However, in many cases you don't need to do that, because SuiteCRM comes with its own customization studio (Figure 5).

The SuiteCRM Studio developer tool is a powerful application customization toolkit.
Figure 5: The SuiteCRM Studio developer tool is a powerful application customization toolkit.

The SuiteCRM Studio developer tool provides a neat interface that enables the creation of a variety of new fields, including drop-down selection lists and relational fields. It provides an interface designer through which you can change the layouts of the Edit, View, List, and Search forms. To ensure SuiteCRM rebuilds the interfaces on each load, you need to switch to Developer Mode from Admin | System Settings | Advanced, which you find under the user drop-down menu in the upper right-hand corner (Figure 6).

A number of customization tools are found under the user menu.
Figure 6: A number of customization tools are found under the user menu.

SuiteCRM also includes Module Builder (Figure 7), which enables the creation and integration of completely new modules and provides integration tools, including module export, through which it is possible to create customized modules that can be exported as a ZIP file and subsequently installed into another SuiteCRM instance. This method is a great way to test development ahead of installation onto a live system.

Module Builder lets you create completely new modules that you can even export to other SuiteCRM instances.
Figure 7: Module Builder lets you create completely new modules that you can even export to other SuiteCRM instances.

The tools for customizing SuiteCRM are accessed from the Profile selection under the user menu. The Administrator control panel provides a vast range of functionality for configuring SuiteCRM, including hiding and displaying modules; setting up security groups, roles, and general system behavior; and providing diagnostic and repair tools, including backup functions.

Conclusion

SuiteCRM offers so many more features than I can cover in this short article, and I encourage you to explore more. Your next step should be to perform the installation again, perhaps using a virtual machine. This time install the demonstration data, available from the More options panel in the database configuration panel (Figure 1) of the setup wizard, to populate SuiteCRM with example data, so you can explore a populated sales pipeline, as described earlier. Additionally, it provides plenty of data for exploring the SuiteCRM system in more detail, including examples of the charting dashlets, reports, and spot analytics.

To really experience the power of SuiteCRM, have a go at creating your own customizations with the Studio tools.