In the first two parts of this series we have installed SuiteCRM locally, imported its model into the Vertabelo database, and created relationships based on assumptions. In Part 3 we took a closer look at the most important parts of the CRM, how to use them, and how the data is stored in the database. This article will continue where Part 3 ended and will close the series. We’ll take a closer look to other modules of SuiteCRM including campaigns, opportunities, projects, documents and users, and roles administration.
As said in Part 3, SuiteCRM uses email or non-email based campaigns. Email based campaigns involve sending mass email messages to our contacts, accounts, users or leads. At the end of a campaign we’ll be able to track its efficiency and use the results in future planning. Two of the parameters we would like to track are how many new contacts and leads the campaign produced and how many clicks occurred on links included in the email.
The main table that stores data related to campaigns is the “
campaigns” table. We can divide its attributes into a few groups:
- Basic data about the campaign: “name”, “start_date”, “end_date”, “currency_id”, “budget”, “expected_cost”, “actual_cost”, “campaign_revenue”, “campaign_type”, “objective”, “content” and “frequency”
- Information about campaign data changes inside SuiteCRM: “created_by”, “modified_user_id”, “assigned_user_id”, “date_entered” and “deleted”.
As previously noted, the used naming convention is really great because most of the attributes are self-explanatory, and the same name is used for identical attributes in different tables.
We can access campaigns administration in “Marketing” -> “Campaigns”. There are two ways to create a new campaign: using the “Create Campaign (Wizard)” or “Create Campaign (Classic)“. Wizards are cool, especially in the movies (this is the funny part, please laugh now), but I’ll go with the classic approach here.
We could assign “Planning”, “Active”, “Inactive”, “Complete”, “In Queue” or “Sending” as campaign status (upper right of screen). For campaign type, list of possible values is: “Telesales”, “Mail”, “Email”, “Print”, “Web”, “Radio”, “Television” and “Newsletter”.
After we choose “Save”, a new window with two subsections: “Target List” and “Security Groups” opens.
We can see our new campaign in the “View Campaigns” list; inside the database everything has gone as we expected.
The “campaign_audit” table is used to store information about campaign data changes. For the purpose of example I have made a simple change, changing campaign status first from Active to Planning and then again from Planning to Active. You can see the result below. After we click on the “View Change Log” button, a new window containing the list of changes will pop-up.
SuiteCRM also allows us to store trackers that we can include in our campaign-related emails. Tracker URLs can be used to track campaign success or to allow a client to unsubscribe if he wishes. After a click on the URL link but before redirection the information is saved in the log table.
The same pattern, using _audit, _trkrs, and _log tables can be found elsewhere in the model.
As suggested by the name, this module enables us to manage sales opportunities. . Sales stage indicates whether a sale is still possible or whether the opportunity is past, with or without sales success. We can determine the probability of successful sales based on current status and other parameters like overall sales history, sales history for that service or region, etc.
From the model we can see that each opportunity can be related to multiple contacts. Again, most of the attributes inside the table “
opportunities” are self-explanatory or we’ve met them in previously mentioned tables.
Opportunities are created from the Sales menu. After clicking on “Create Opportunity” and filling in all the applicable data, we’ll have a form looking like this.
While Currency offers us only the “US Dollar” option, the other three combo boxes offer many more options:
- Sales stage: “Prospecting”, “Qualification”, “Needs analysis”, “Value Proposition”, “Id. Decision Maker”, “Perception Analysis”, “Proposal/Price Quote”, “Negotiation/Review”, “Closed Won” orand “Closed Lost”. After selecting the desired option, the Probability (%) will be filled with the default value for that option, which we can change. Still we can change its value if we want.
- Type: “Existing Business” orand “New Business”
- Lead source: “Cold Call”, “Existing Customer”, “Self Generated”, “Employee”, “Partner”, “Public Relations”, “Direct Mail”, “Conference”, “Trade Show”, “Web Site”, “Word of mouth”, “Email”, “Campaign” and “Other”.
After clicking “Save”, we are presented with another screen on which we can add activities, history, documents, contacts, leads, projects, and security groups.
opportunities_cstm” table is integrated with Google maps in the same way as the “_jjwg” tables.
Projects inSuiteCRM are a set of related tasks and activities that are grouped together. This organization gives us better insight into the project progress.
Projects are very important and, as we can see, they are related to many other tables in the model, including the tables “
bugs” and “
opportunities”. All of these tables are related to the “
projects” table via a many-to-many relation.
In the “
projects” table I would accentuate the following attributes:
- “name”, “description” and “priority”
- “estimated_start_date” and “estimated_end_date”
- “date_entered” and “date_modified”
- “created_by”, “modified_user_id” and “assigned_user_id”
- “status” and “deleted”
We can access projects administration under the “Collaboration” menu. We’ll click on “Create Project” and fill in project data.
After “Save” we can relate tasks, activities, history, contacts, accounts, opportunities, quotes, resources, cases, bugs and security groups with our project.
project_users_1_c” and “
project_contacts_1_c” tables are used to store metadata associated with project users and contacts.
We mentioned documents in the previous part but SuiteCRM’s documents module gives us many additional options that are worth mentioning in more detail. In Part 3 we attached two pictures, and of course they are stored as documents inside the CRM database. We can think of many other types of document, such as contract with client, internal policy, bug template, etc.
As you could guess and also see in the model, documents are related with many other tables. This is hardly unexpected. Just think of the many real-life situations in which you want to relate a document (digitally) with other data. And yes, CRM must be able to handle as many situations as we can imagine. It’s notable to mention that the table “documents” is related with the tables “
opportunities” and “
revisions”. We can also relate document with existing documents in our system.
Document administration is accessible in the “Collaboration” menu. There are many way to add new documents in SuiteCRM, but we’ll use the basic “Create Document” form.
We can choose from these options for the combo boxes:
- Document Type: “Mail Merge”, “EULA”, “NDA” and “License agreement”
- Category: “Marketing”, “Knowledge base” and “Sales”
- Status: “Active”, “Draft”, “FAQ”, “Expired”, “Under Review” and “Pending”
- Sub Category: “Marketing Collateral”, “Product Brochures” and “FAQ”
On the next screen we can relate our document to account, contacts, opportunities, cases, bugs and security groups.
Users and Roles
User rights and permission are not unique to CRM, but still it’s good to know how they function in SuiteCRM and what level of user rights we can implement.
First we’ll take a look at the user list inside our database. So far we have only one user, and that’s me, as Admin.
To add a new user in SuiteCRM we’ll go to the section “Admin” -> “User management”. Notice that the admin panel also includes links that navigate us to role management, security management and much more.
This will open a new form which allows us to edit existing users or add a new user by clicking on the “Create New User” button.
We’ll fill in all required and some optional fields.
After this we’ll see our new user in the SuiteCRM user list and in the database.
Roles in SuiteCRM are used to determine user authorizations giving or refusing access to specific module(s). By default, if a user has no role assigned he’ll be able to access all functionalities. To administer roles we’ll go to the section “Admin” -> “Role Management”. SuiteCRM contains no default roles, so none are listed upon selection of “List Roles” , and the “
roles” table in the database contains no records. We’ll enter a new role and save it.
After giving the role a name and description, we see the edit form, on which we can assign appropriate user accesses for that specific role. That screen will look like the one below:
Here we can personalize authorizations for the role, choosing to enable or disable functions related to each SuiteCRM module. Now we can simply assign the role to users wherever applicable. After we scroll down, we’ll see another part of the form, shown below.
Clicking on the “Select User” button will open a search form with a list of users. Now we can select all the users to whom we want to assign the new role. We’ll select the user, John Doe, that we created earlier.
Components, modules and security
The “acl” subject area
The “acl” stands for “Access Control Lists”. These tables are used to store authorizations for roles and users which define how they can use modules, actions and data.
The “aop” subject area
In the “aop” subject area we’ll find tables related to the “Advanced OpenPortal “component. This Joomla-based component enables us to create a user and web-friendly page to manage our SugarCRM cases.
The “aor” subject area
The “Advanced OpenReport” component provides us with ability to generate reports, including graphics and charts in the more popular formats, such as .csv, .html and .pdf.
The “aos” subject area
The “aos” refers to “Advanced OpenSales” which is one of the most regarded modules of the SuiteCRM. It contains sub-modules such as products, contracts, invoices, documents and quotes. It is worth mentioning that it was developed with the support of the SugarCRM community and that it will be upgraded with many new features in the future.
The “aow” subject area
As you could guess from its name, the “Advanced OpenWorkflow” component provides us with all necessary features needed to create and track workflows.
The “securitygroups” subject area
The SecuritySuite inside SuiteCRM controls what users can access. It’s similar to the user and roles authorizations but provides additional options. For example, “Strict Rights” has the following description: “If a user is a member of several groups only the respective rights from the group assigned to the current record are used.” We could use this component to assign different sets of rights for different teams inside our organization.
SuiteCRM tables with the “jjwg_” prefix are integrated with Google maps . We can map our accounts, contacts, leads, opportunities, meetings, targets, cases and projects.
It’s very hard to build a CRM that can cover almost any client need. I believe that SuiteCRM did a great job with this, and the product still grows. The database structure behind it is very flexible, due to the usa of random-generated primary key values and key-value (table name-primary key value) logic when referencing one of many possible tables. This greatly reduces complexity but at same time prevents usage of foreign keys. Therefore the database lacks any relations between tables. The well-chosen naming convention provides us with superior readability of the whole model. Another SuiteCRM positive along the same lines is the identification of functionally similar tables with the same suffix. Just think of the “_audit”, “_trkrs”, “_log”, “_cstm” tables mentioned in this article.