The purpose of this document is to provide insight to Sugar Developers for upgrading custom Sugar code, extensions, and integrations to the Sugar 13.2 (Q4 2023) release. This guide focuses on changes in Sugar 13.2 (Q4 2023) that could cause an immediate impact on Sugar customizations and integrations built for earlier Sugar versions.
Please check out the Q4 2023 Developer Webinar recording for more developer highlights. For Admin and End User release notes, please visit the Sugar 13.2.0 Release Notes.
User Experience Updates
New Timeline Enhancements
SugarCRM is now more Time-Aware with new Timeline Enhancements! In this release, we have enhanced the following areas:
- Timeline Dashlet enabled for more Sidecar Modules: New Timeline dashlets are added for most of the Sidecar modules that are available in Studio.
- More related records are enabled for each Timeline: All related records that are shown in the subpanel for each record are now enabled for the Timeline dashlet as well. Users can see more related records that are enabled by the admin for each timeline.
- Admin configuration for each Timeline for related record selection: Admin can select/de-select which related records are shown for each Timeline in Studio.
- More Changes are now tracked for each Timeline: In this release, customers will be able to track more changes for each Timeline.
- Timeline Search: In this release, we are enabling search for all the Timeines. Users have the ability to search for related records/cards which appear in the Timeline.
In this release, we are enabling all the related cards/modules which are shown in the sub-panel for the record of all timelines. By default, we are enabling all the existing modules that were present in the timeline before 13.2, with the following exceptions:
-
No BWC modules
-
No Automate modules
-
No Change Timers
-
No Document Template
Note: A sub-panel must be enabled in the admin settings for "Navigation Bar and Subpanels" in order to show the corresponding card in the Timeline.
Drag-and-Drop Document Upload
In this release, bought back the "drag and drop" functionality, that we took away when we moved to Sidecar, in document revisions, which means that now users have the ability to drag-and-drop files to quickly create a Document or update an existing one via Document Revision.
Docusign improvements
In this release, we have implemented the possibility of retrieving the list of recipients from Docusign template, without leaving Sugar. To do that new button is available: Send with a template
in the dashlet or Send
to Docusign with template
in subpanel.
A full use case would be: User needs to send a document to a certain list of recipients for signing. The list is standard (it could be a board of Directors) and stored in the DocuSign template. The user selects Send with the template, selects the template, the users, set the name, and send the document. Each user will be able to sign it on the reserved space.
We have also improved the searching capabilities to allow wildcard search in Docusign.
Sugar Automate Improvements
In this release, we have implemented the following improvements to Sugar Automate platform:
- Ability to import existing tasks to a customer journey
- When a new customer Journey is added to a record our customer would like to have the ability to move the existing activities on that record into the customer journey.
- Make assignee of a Customer Journey more visible
- Assigned to field showing avatar and user name on the smart guide panel to whom the guide is assigned.
- Smart Guide and Smart Guide Stages modules are now exposed in metadata
- Performance Upgrade while user tries to save a record using save button
Chart Legend Improvements
In this release, we have created a new field type named "legend". Existing chart.js field has been updated to use the new legend field instead of the chartjs's basic legend.
This is available for both the Report results view and Report Dashlet.
Sugar REST API updates
This Sugar release introduces REST v11_22.
Returns the activities for which RSA will be performed
Added new endpoints return the activities for which RSA will be performed
GET <sugar instance>/rest/v11_22/activitiesRSA
PHP Library Upgrades
PHP-Parser
Sugar utilizes a PHP library called PHP-Parser Its purpose is to simplify static code analysis and manipulation. In this release, we are upgrading its version to 4.16.
There are no known breaking changes in this upgrade, they are mostly bug fixes in this release.
nikic/php-parser → ^v4.16.0
PHPUnit
Sugar utilizes a PHP library called PHPUnit. PHPUnit is a programmer-oriented testing framework for PHP. It is an instance of the xUnit architecture for unit testing frameworks. In this release, we are upgrading its version to 6.9. There are no known breaking changes in this upgrade, they are mostly bug fixes in this release.
phpunit/phpunit → ^v6.9.6
Microsoft Graph SDK
Microsoft Graph SDK for PHP provides Sugar with a framework for retrieving data from a Microsoft account using the Microsoft Graph API via OAuth2 tokens. There are no known breaking changes in this upgrade, they are mostly newly generated modes and PHP version support.
microsoftgraph/msgraph-sdk-php → 1.102.0
Google PHP Client
Google API Client library enables Sugar to work with Google APIs such as Gmail, Drive or YouTube. There are major internal changes in this library, if you use them, please refer to this library’s upgrade procedure here.
google/apiclient → 2.14.0
Symfony Components
Symfony is a leading PHP framework that provides a set of common components. For example, the Symfony Security Component is used by Sugar for input validation. We've updated these libraries to the latest patch versions and removed some transitive dependencies.
symfony/cache → 5.4.23
symfony/console → 5.4.23
symfony/intl → 5.4.23
symfony/validator → 5.4.23
symfony/process → 5.4.23
Firebase PHP-JWT
Sugar utilizes a PHP library called PHP-JWT. A simple library to encode and decode JSON Web Tokens (JWT) in PHP, conforming to RFC 7519. In this release, we are upgrading its version to 6.8.
There are no known breaking changes in this upgrade, they are mostly bug fixes in this release.
firebase/php-jwt → 6.8
League Oauth2-client
Sugar utilizes a PHP library called League Oauth2-client. This package provides a base for integrating with OAuth 2.0 service providers. In this release, we are upgrading its version to 2.7
There are no known breaking changes in this upgrade, they are mostly bug fixes in this release.
league/oauth2-client → 2.7
JS Library Upgrades
Sinon.JS
Sugar currently uses the Sinon.JS library in our Javscript tests to create test sandboxes and stubs In this release, we are upgrading Sinon to 1.15.
There have been significant changes from Sinon 1.x to 15.x and because it is a major version upgrade there is some potential for breaking changes, see the official migration steps
A blog post with more details about this change is going to be posted.
Prefix JS libraries with caret (^) - Sidecar
In this release, we have applied the caret (^) prefix to all JS libraries in the package.json
file. This change simplifies the management of minor version updates released by these libraries, addressing security vulnerabilities and minor issues. Additionally, this update implies the introduction of a new minor version for fixes.
Prefix JS libraries with caret (^) - Sugar Core Platform
In this release, we have applied the caret (^) prefix to all JS libraries in the package.json
file. This change simplifies the management of minor version updates released by these libraries, addressing security vulnerabilities and minor issues. Additionally, this update implies the introduction of a new minor version for fixes.
Upgrade Yahoo! UI Library 3
In this release, we are upgrading yui3 to 3.18.1.There are no known breaking changes in this upgrade, they are mostly bug fixes in this release.
Upgrade TinyMCE Library
In this release, we are upgrading tinymce to 6.4.2. There are no known breaking changes in this upgrade, they are mostly bug fixes in this release.
Upgrade Amazon Connect Chat Javascript library.
The Amazon Connect Streams and Amazon Connect Chat JS library (ChatJS) are core SugarLive libraries. There are no known breaking changes in these upgrades which include bug fixes and enhancements.
amazon-connect-chat.js → 1.5.1
connect-streams.js → 2.5.0
amazon-connect-chat-interface.js
There are no known breaking changes in this upgrade, they are mostly bug fixes in this release.
Configurability updates
Sugar Config Settings
Setting Name |
Default |
Override Example |
Description |
smtp_mailer_keep_alive | false | $sugar_config['smtp_mailer_keep_alive'] = true; | Configuration to prevent mailer from closing connections after each email sent |
Removed Functions / Libraries / Features
Remove end-to-end from the Unit Tests
Since the seedbed test automation is sunset and we are not using the end-to-end
directory anymore, we are removing that from the unit-tests releases from now on.
This approach aids in maintaining a leaner, more secure system with reduced code overhead, thus minimizing vulnerability exposure.
Sunset FontAwesome icons in Sugar core platform
In this release, we are sunsetting/removing FontAwesome from Sugar Core Platform
- Remove references to FontAwesome for the new version of the documentation
- Remove FontAwesome fonts from the core platform
- Replace
fa
related icons with SugarIcons (sicon
)
Removal of Zend Framework components
In this release, we have removed and added a HealthCheck (bucket E) to scan for the usage of the following Zend Framework components:
- Zend_Mime*
Deprecated Functions / Libraries / Features
Deprecated use of Zend Framework components
In this release, we are deprecating and added a HealthCheck (bucket E) to scan for the usage of the following Zend Framework components:
Zend_Service*
Zend_Gdata*
Zend_Version*
Note: In this release, we have removed/updated Zend_Gdata from Sugar core code in favor of Google API Client.
Deprecated use of SugarUploadS3
In this release, we are deprecating and added a HealthCheck (bucket E) to scan for the usage of the SugarUploadS3
.
Platform Updates
New Sugar function safeCount
In this release, we have added a new utility function safeCount()
. This function should be used going forward instead of PHP's count()
.
With PHP 8.*, if you don't apply defensive coding to your counts/variables and you pass null to count, PHP will throw a TypeError in runtime and will break your code.
For that reason, Sugar Core code has been updated to replace count()
with safeCount()
and you should also update your customizations to use it.
This function has been backported an made available to v13.1, v13.0.x and v12.0.4
CloudDrive now supports SharePoint
We have created an external API and a SharePoint client for handling requests to SharePoint. Users will be able to create a Cloud Drive dashlet in any dashboard space, like Home or Side Pane dashboards, integrated with corporate SharePoint.
To use SharePoint Integration MS SharePoint connector needs to be set up and enabled in Sugar. After that user just creates the Cloud Drive dashlet for MS SharePoint Cloud Provider.
In the dashlet user can navigate through SharePoint, and manage files and folders. All the changes are synced to SharePoint.
From SharePoint dashlet, we can create Sugar Document, Send to DocuSign, Copy Link. The SharePoint permissions set up on the corporate level are respected.
Configuration to prevent mailer from closing connections after each email sent
Sugar uses PHPMailer to send emails via SMTP. PHPMailer’s default behavior is to close the connection with the SMTP server after each email sent. This can be problematic when large volumes of emails are meant to be sent quickly, such as in Campaigns, as some servers do not accept the large number of reconnections involved. PHPMailer has a boolean flag configuration available, $SMTPKeepAlive
, which determines whether the connection should be closed after each email is sent. As an admin, you now have an option (sugar_config) to turn that flag on or off for your instance.
Sugar Discover AU added by default on CSP
In this release, we are adding Sugar Discover domain *.sugarapps.com.au
by default in our CSP configuration to allow for Sugar Discover AU customers to set up dashboards without manual configuration.
Sugar Core Security Updates
As part of our ongoing efforts to keep Sugar clean, fast, reliable, and most importantly secure, we have updated Sugar Core code in different areas of the application such as Package Scanner, Module Installer, UI rendering, File Uploads and Imports.
Global Search module list only for enabled Modules
In this release, we have fixed an issue where a few modules would still show up even though they were disabled in Admin > Search > Enable/Disable modules.
Those modules were particular Stock/OOB modules that didn't fit the algorithm we had in place, but now it is fixed.
Storage Optimization for archived email content
In this release, have implemented a mechanism to archive email contents using gzip for best optimal storage. Technically, the emails_text
table has fields description
and description_html
which will be gzipped in SugarCloud only. This is expected to save significant storage without any noticeable impact.
Maps Geocode processing performance
In this release, we have significantly improved the performance of our Maps module by:
- Improve the schedulers for geocoding
- Better error handling
- Self re-queue mechanism
- Improve performance for heavy arrays
- Improve logging mechanism
- Automatic geocoding for custom modules
Denylist Updates
Symfony\Component\ExpressionLanguage\SerializedParsedExpression
Symfony\Component\Security\Core\Authentication\Token\AbstractToken
Symfony\Component\Security\Core\Authentication\Token\RememberMeToken