Here is a guest post from a couple members of the Sugar Developer community.  Yann Berges and Cédric Mourizard from Synolia, an Elite SugarCRM Partner, share some insights on how to improve the quality of Elasticsearch results in Sugar.

Elasticsearch in Sugar 7

Since Sugar 6.5, Elasticsearch has been included as a core feature of the Sugar Application and became a required component in Sugar 7.x releases. You can find some information regarding installation, configuration, and monitoring of Elasticsearch in the Knowledge Base.

It works very well and is pretty fast!

However, the default configuration is often too strict with diacritics such as accent and stressed letters found in languages like French.  For example, the default configuration will not match e with é during a global search which is not desirable for us.

Search for

Search for “Saute” did not match “Sautéed”

Below we will explore how Elasticsearch Analyzers can be used to address this issue.  It is quite easy and does not require custom code!

Continue Reading…

Have you checked out the Current Opportunities at SugarCRM lately?  We’re hiring heavily today across all sorts of technical roles at Sugar – including an open position to work with me as a Developer Advocate for SugarCRM!

What does a Sugar Developer Advocate do?

In the past, the term the industry tended to use was “Developer Evangelist” – which frankly always sounded a bit fishy to me.  For me, I much preferred the term “Developer Advocate” which is now much more common in the Software industry.  An Evangelist sounds like someone who is more style than substance.  An Advocate is someone who should listen as much as they talk.

This means that Sugar Developer Advocate act as ambassadors to the Sugar Developer community as well as being a critical stakeholder within SugarCRM Engineering that represents the wants and needs of Sugar Developer community and the Sugar 7 platform.  I think this is a great position for anybody with some good software development experience who is energetic, has good communication skills, has a positive attitude, and loves working with developers!

Check out the posting for more details!

A long established tradition within Engineering here at SugarCRM is something that we call “Hack Week”.  A couple times a year we fly our engineers from all over the world to our headquarters in Cupertino, CA for a week of fun, creativity, and some serious hacking.  On the week of July 27th 2015, it happened again!

Continue Reading…

Do you write unit tests for your Sugar customizations?

Do you performance test your Sugar on-site deployments?

Every developer knows they should be building unit tests and performance tests but sometimes it is just too hard to get started from nothing.  Well now SugarCRM Engineering is going to make it easy for you!

The Sugar 7 unit test suite and performance test frameworks that we use to develop Sugar 7 are now available to current customers and partners via Github!

This is the first release in a new effort to provide enhanced standardized development tooling and automation to the Sugar Developer community.

At this time, we are only releasing these tools to existing Sugar Customers and Sugar Partners.  So these private Github repositories require that you are logged in using your Github account in order to access them.  You may also need to request access from SugarCRM if you cannot access these repositories currently.

In the coming weeks, we will be posting step-by-step tutorials for creating Sugar 7 unit tests and custom JMeter scenarios. So stay tuned!

More details below.

Continue Reading…

If you’ve used Sugar 7.5 or earlier then you have probably noticed that it take a few moments after a record appears for all the subpanels to finish being populated with data.

Long list of subpanels

Long list of subpanels

This was because each subpanel generated a separate round-trip HTTP transaction from the browser to Sugar web server in order to fetch the related records for each represented relationship.

However, in Sugar 7.6 this behavior has been improved due to the introduction of the Bulk API.

Continue Reading…

In Sugar 7.6, we added an awesome little undocumented feature that we’re calling Sweet Spot.

Try the matching shortcut key sequence below within a Sugar 7.6 window.

OS Shortcut
Mac OS X cmd+shift+space
Windows ctrl+shift+space
Linux ctrl+shift+space
Sweet Spot in action

Sweet Spot in action

Sweet Spot will appear.

Full text search using Sweet Spot

Full text search using Sweet Spot

Then start typing!

Actions in Sweet Spot

Actions in Sweet Spot

All you Sugar Developers and Sugar Administrators will like the Actions feature which allows you to quickly run many actions from anywhere in the application.  Administrators additionally get easy access to many administrative functions through Sweet Spot.

There are actually several more features that we haven’t shown here.  But we will leave the rest for you guys to discover on your own!

Plans for this feature are still evolving but we think it will ultimately grow into an exciting addition to the Sugar user experience.  Try it out today in any Sugar 7.6 instance!

In our previous “Hello World” dashlet post, we established what a minimal dashlet entailed.  In these next post, we’ll be building on those skills to create a more useful dashlet that takes advantage of Sugar 7 List Views.  We will be creating a dashlet for Cases that binds to the list’s Collection and sums the number of Cases by their status.  So if the Cases list contains 5 records, and 3 of those are in “New” state and 2 are in “Closed” state then we want our dashlet to display “New: 3” and “Closed: 2”.  To the code!

File Structure

Again, using what we learned in the previous post, we’re going to create a folder in custom/clients/base/views/ called “case-count-by-status“. Inside that folder you should create 3 files:

  • case-count-by-status.php
  • case-count-by-status.js
  • case-count-by-status.hbs

You should have something that looks like the following screenshot: caseCountByStatusFileStructure

While technically optional, we will also utilize the Language extension in order to provide multilingual support for our example dashlet.  This extension file will be located at custom/Extension/application/Ext/Language/

Continue Reading…