The purpose of this document is to provide insight to Sugar Developers for upgrading custom Sugar code, extensions, and integrations to the Sugar 11.1 (Q3 2021) release. This guide focuses on changes in Sugar 11.1 (Q3 2021) that could cause an immediate impact on Sugar customizations and integrations built for earlier Sugar versions.
WORK IN PROGRESS
User Experience Updates
Refreshed UI - new SugarCRM branding and icons
New SugarCRM logo
The new monochrome SugarCRM logo has now been rolled into the product. This includes some new image file locations and in some cases file formats (ex .ico → .svg for favicons) for the new assets.
Updated Icon Library
We’ve introduced a new font-based icon library to Sugar Sell and Serve. This is a brand new SugarIcon library is replacing our use of the Font Awesome library.
This release updates the icons throughout the application (ex. record views, list views, etc.) to use SugarIcons.
Custom UI (ex. Sidecar) code that uses the Font Awesome CSS classes (ex. fa-*) will continue to work. We will be working to sunset Font Awesome upcoming releases.
Adopting the new icon library will be easy since the implementation is similar to Font Awesome. SugarIcons will use “sicon” and “sicon-” CSS classes instead of “fa” and “fa-” classes. SugarIcon icon names are different from FontAwesome icon names. More details will be shared in future updates to Sugar Styleguide.
Future Sugar Styleguide Updates
In upcoming releases, we plan to make updates and revisions to the Sugar Styleguide which includes icons, refreshed color palette, and additional design guidelines and principles that we will be applying across our product portfolio. This will allow you to provide a seamless user experience with your Sugar extensions.
Documents module upgraded to Sidecar UX
We’ve preserved existing features that were found in BWC mode. Bringing Documents to Sidecar adds dashboards, preview support, and a host of other capabilities.
SugarLive features are coming to Sugar Sell
SugarLive features and related modules like Messages and the Amazon Connect Configuration panel are now available within Sugar Sell.
List View web accessibility
We’ve added additional ARIA labels on List Views which should improve web accessibility in accordance with Section 508 requirements.
New Action Buttons field type
A new field type has been added called Action Buttons. The actions currently available for ActionButton are: Assign Record, Compose Email, Create Record, Open URL, Run Report, Update Record. Users can further customize their buttons by using SugarBPM and SugarLogic Functions for their actions.
Interactions dashlet is now the Timeline dashlet
The Interactions dashlet has been redesigned and expanded in this Sugar release. It is now called the Timeline dashlet and is now available on Accounts, Contacts, Leads, Opportunities, Quotes, and Cases modules. One of the new features is that the Timeline dashlet will highlight changes made to audited fields like the Assigned To field.
Mobile Push Notification Configuration
There's new Sugar instance system settings for enabling mobile push. SugarCloud instances will have the push notifications setting enabled by default. On-premise installations of Sugar will not support mobile push notifications. You can disable push notifications for a local Sugar installation using the following setting:
$sugar_config['push_notification']['enabled'] = false;
There's also new user preferences (mobile_notification_on_assignment
, mobile_notification_on_mention
) that allows end users to control what push notifications they can receive. Mobile users can control this preference from the SugarCRM Mobile app.
Sugar Portal Updates
Messages and Emails modules are now available in Sugar Portal. This allows portal users to view e-mails and message history associated with their Cases.
Sugar REST API updates
This Sugar release introduces REST v11_13.
You can now update display labels and dropdown lists in multiple languages. These APIs are restricted to Admin only.
PUT <sugar instance>/rest/v11_13/lang/labels/module/
PUT <sugar instance>/rest/v11_13/lang/labels/dropdown/
You can now retrieve Row and Columns Reports in CSV and JSON formats.
GET rest/v11_13/Reports/:id/csv
GET rest/v11_13/Reports/:id/json
You can now retrieve and update administrative configuration settings. These APIs are restricted to Admin only.
GET rest/v11_13/Administration/config/:category
POST rest/v11_13/Administration/config/:category
You can now retrieve the list of modules enabled for the Self-Service Portal. This API is restricted to Admin only.
GET rest/v11_13/Administration/portalmodules
You can now restore any Sugar dashboard to the default state as defined by the dashboard's original Sidecar metadata.
PUT rest/v11_13/Dashboards/:id/restore-metadata?dashboard_module=<MODULE_NAME>&dashboard=<DASHBOARD_METADATA_NAME>
Library Upgrades
Upgraded 3rd party PHP library laminas-mail to address a bug in e-mail handling.
laminas/laminas-mail: 2.10.1 → 2.14.0
See https://github.com/laminas/laminas-mail for details.
Upgraded PHP library tedivm/jshrink to allow for future support of PHP 8.0.
tedivm/jshrink: 1.3.1 → 1.4.0
See https://github.com/tedious/JShrink/releases for more details.
Removed the NuSOAP library. See Platform Updates section below for more details.
NuSOAP: 0.9.5 → N/A
Configurability updates
Sugar Logic
This new SugarLogic function allows you to retrieve data about the current user. For example, you can now design a formula that factors in the current user’s name, phone number, or department. The field name should be provided as a string and not all User fields work with this function.
currentUserField("field_name")
SugarBPM
We added a new SugarBPM Evaluation Category called “Relationship Change Evaluation” that would be triggered based on addition or removal of a Record’s relationship.
Studio
Admins can now use Studio to make relationship-based relate fields required, dependent, mergeable, importable, and mass updatable.
Config Settings
Config Setting |
Default |
Available values |
Description |
$sugar_config['web_logic_hook_timeout’] |
10 |
Integer |
Timeout (in seconds) for requests to web logic hooks |
$sugar_config['perfProfile']['TeamSecurity']['default']['disable_subquery_optimizer_hint'] |
false |
true | false |
Removed Features
Removed the “Expand Column Width” action from the Repair section of the Admin panel. This feature was no longer relevant when using a supported version of MS SQL Server.
Removed the BWC MergeRecords module which was no longer in use by any supported version of Sugar. This includes the entire contents of modules/MergeRecords/ directory.
Data Changes
Longer name fields
The max length for any “name” fields used by Sidecar modules is now 255 characters. This includes first_name and last_name on Person type records like Leads and Contacts.
Database storage optimizations
Sugar will now automatically optimize database tables after running pruning and data archiving jobs. This will help optimize query performance and reduce storage usage within SugarCloud accounts when there’s a significant reduction in the number of rows within database tables. It is recommended that these operations are performed during low usage or after hours they can affect system performance while running.
Display labels in CSV exports
When using Export Wizard to extract a CSV, dropdown (enum) and multiselect (multienum) fields now include an additional column for the display labels. When importing a CSV using the exported format, the display label columns will be ignored.
Contracts in Serve
The Contracts module is now part of Sugar Serve.
Changes to Messages module
The Messages module is now part of Sugar Sell. Messages can now have multiple participants (Contacts, Leads, and Users) instead of a single Contact. Messages is now consistent with how Meetings and Calls modules represent participants by using an invitees
collection field. During 11.1 upgrade process, the Message contact_id
is added to the invitees
collection.
Sentiment Analysis fields added to Calls and Messages
All these fields are used by SugarLive and therefore only available with Serve and Sell.
The following Sentiment analysis fields have been added to Calls.
aws_lens_data
sentiment_score_agent
sentiment_score_customer
sentiment_score_agent_first_quarter
sentiment_score_agent_second_quarter
sentiment_score_agent_third_quarter
sentiment_score_agent_fourth_quarter
sentiment_score_customer_first_quarter
sentiment_score_customer_second_quarter
sentiment_score_customer_third_quarter
sentiment_score_customer_fourth_quarter
Sentiment scores are stored as decimals ranging between -5 and 5. They are displayed within Sugar user interface using a new sentiment
field type that displays a negative (< -1.3), positive ( > 1.3), or neutral visualization.
The following Sentiment analysis fields have been added to Messages.
aws_comprehend_data
sentiment
The sentiment value is stored as a descriptive string like "positive", "neutral", etc.
Filesystem Changes
Changes to ./upload/
directory
In Sugar 11.0, Module Loadable Package uploads were moved from ./upload/upgrades/module/ to ./upgrades/module
directory.
Now in Sugar 11.1.0, each uploaded file is now stored in a subdirectory derived from the UUID filename. Existing files will be moved into subdirectories during upgrade.
For example, the file 3657325a-bdd6-11eb-9a6c-08002723a3b8
will now be stored in the ./upload/25a/
subdirectory. These UID character locations were selected to ensure even distribution of files across the new subdirectories.
In previous Sugar versions, all uploaded files would be stored in the ./upload
directory using UUIDs as filenames. This could get unwieldy and cause file system performance issues when there was an enormous number of uploaded files.
Embedded e-mail images no longer stored in /cache/images
When viewing an archived e-mail, Sugar would previously copy any associated embedded e-mail images into the ./cache/image
directory. This was done to allow Sugar to generate a URL that could be used to display image but took up additional file storage. In this release, we've eliminated the need for the ./cache/images
directory. Users may notice that the embedded e-mail images will now point to a File API endpoint instead of the cache. The upgrade to Sugar 11.1.0 will clear the ./cache/image
directory to free up storage.
Team Security updates
Performance optimization
To improve Team security related query performance on MySQL, we’ve added a query optimizer hint (“MATERIALIZATION”) on a specific subquery that significantly improves performance for instances with large numbers of Teams.
In the unlikely event that this optimization causes suboptimal query performance with your instance’s data, we’ve added a “'disable_subquery_optimizer_hint'” TeamSecurity setting that you can use to turn off this hint.
New TeamSet commands for SugarCRM command line interface (CLI)
The bin/sugarcrm CLI now supports several commands for managing TeamSets within a Sugar instance. The commands are intended to allow you to identify and eliminate unused team sets which can develop into a performance problem as their number grows.
Note that you can only use the SugarCRM CLI when Sugar is deployed on-premise.
teamset:backup |
Backs up the team_sets related tables. |
teamset:prune |
Prune all team set tables of unused team sets. Original tables will be backed up automatically. DO NOT USE while users are logged into the system! |
teamset:restore_from_backup |
Restores all team set tables from backups. DO NOT USE while users are logged into the system! |
teamset:scan |
Scan all module tables for unused team sets and report the number found. |
teamset:sql |
Print the sql query used to search for unused teamsets |
Platform Updates
Added support for MySQL 8.0
This release added support for MySQL 8.0. And in order to support MySQL 8.0, the MysqliManager::getRecursiveSelectSQL()
PHP function has been deprecated.
Removal of NuSOAP library
The NuSOAP library was used to dynamically generate WSDL files but we now use static WSDLs. The legacy SOAP API of Sugar is unchanged but you will need to make sure that the SOAP PHP extension is configured on your local environments.
The following PHP classes have been removed:
Removed Class | Alternative Class |
nusoap_server | \SoapServer |
nusoap_client | \SoapClient |
Module Loadable Package rollback on failure
Any PHP error that is encountered within 5 minutes after a Module Loadable Package (MLP) has been installed will trigger an automatic rollback where the MLP is uninstalled.
Denormalized Relate Fields
The “account_name" field for Contacts, Opportunities, RLI, and Cases modules are now denormalized by default using our Relate Field Denormalization framework. This applies to new installs as well as for those upgrading from previous Sugar versions. You can adjust which relate fields are denormalized using the Relate Field Denormalization developer tool in the Admin panel.
Deprecated functions
The following functions have been deprecated and will be removed in an upcoming Sugar release.
User::load_user()
MysqliManager::getRecursiveSelectSQL()