Arduino and SugarCRM 7 – Do we have un-handled support tickets?

Following up on my previous post about connecting an Arduino to internet with an Ethernet module, I wanted to build a quick solution to notify the support team about un-handled customer issues on the CRM system.

Arduino Sugar7 Case counter
Arduino Sugar7 Case counter

The objective is to connect via the REST API to SugarCRM and give an immediate feedback to the team using an Arduino. The output can be anything; from an awesome smoke machine, to a rotating light, a small set of LEDs, a LCD display, an audio alarm, whatever really. In this specific case it will be a set of 5 LED’s and a buzzer.

This practical example shows how to bring together Arduino micro-controllers, basic electronic skills and software web technologies. The result creates a physical device that gives real time feedback for software users about something that needs immediate attention.

Read more

SugarCRM using multiple MySQL databases

Let’s assume you currently have a MySQL Setup with one “Master” and multiple “Slaves”, and you do want to make sure your Sugar system uses the “Slave” instances for reading purposes. Alternatively, if you are looking at deploying MySQL Master/Slave instances with a click of a button to test this out, you can achieve the same setup using Amazon AWS RDS, by deploying one MySQL database with additional read replicas.

SugarCRM commercial editions already have a feature that allows to connect Sugar to a slave database for Reports and/or an additional one for module’s ListViews, providing additional performance and scalability to the application. The feature is provided out of the box and it is available by changing a configuration file, for self hosted systems.

Read more

Can I remove Team Security from SugarCRM?

Any SugarCRM Commercial Edition has a great feature for segmenting data, called Team Security.

In a nutshell, all non Administrator Users can only see SugarCRM records associated with at least one of the Teams they are part of.

…but what if in my organisation I do not want to limit who can see which records on the CRM system? Keep reading to find out the answer!

Not everybody knows that SugarCRM recently introduced the Visibility and ACL Layer that gives Partners and tech savvy End Users, a great granular control when customising record visibility and permissions.

Read more

CRM, SugarCRM and a RESTful integration

At InsightfulCRM I have been involved with SugarCRM projects of various sizes for quite few years, and I was recently asked to present at the Sydney PHP Meetup group about SugarCRM and REST integration.

Let me share the presentation I prepared for the Meetup on my blog as well:


To give you an overview, the presentation starts with an introduction about CRM and why businesses that do not have a CRM strategy should definitely consider implementing one.

Read more

California Trip – SugarCON 2012 – InsightfulCRM MVP 2011

In April I went to San Francisco to attend SugarCON 2012, representing InsightfulCRM. It was actually my first time in the United States!

InsightfulCRM is currently part of the SugarCRM Partner Advisory Board, formed by 12 partners worldwide.

The aim of the PAB is to communicate to SugarCRM executives feedback and guidance from the partner community (currently there are over 400 SugarCRM partners!).

It is awesome for us to be part of the Board!

Read more

Multiple custom footers on SugarCRM view and metadata

I recently built a customisation for SugarCRM that required a custom footer on the metadata definition file.
This was a requirement, so that the final user was not able to edit the panel from Studio, and potentially damage the javascript intensive customisation.

To build the customisation as upgrade safe as possible, I created a custom view for the module I was customising, and inside the “display()” method, I set my own custom footer in the following way:

$this->ev->defs['templateMeta']['form']['footerTpl'] = 'custom/modules/Opportunities/mycustomfooter.tpl';

Then I coded all my business logic inside the display method and at the end, I called the “parent::display()” method.

Read more