The purpose of this document is to provide insight to Sugar Developers for upgrading custom Sugar code, extensions, and integrations to the Sugar 13.1 (Q3 2023) release. This guide focuses on changes in Sugar 13.1 (Q3 2023) that could cause an immediate impact on Sugar customizations and integrations built for earlier Sugar versions.
Please check out the Q3 2023 Developer Webinar recording for more developer highlights. For Admin and End User release notes, please visit the Sugar 13.1.0 Release Notes.
User Experience Updates
Tile View Improvements
In this release, we have modernized the Tile View UI and added additional functionality to make it easier for users to interact and engage with their modules, as well as added support for modules with at least 1 dropdown field.
- Configuration is available through Admin>Tile View Settings > Tile View Modules.
- Title View is available to most of the available Modules in the system.
- The header in tile view is now fixed, which means that when there are multiple tiles within a column and a scroll bar is needed, the header is always displayed.
- Added infinite scroll to Tiles, dynamically reads off of “Tiles displayed per column” to load the next number of records
- Added two new checkboxes, “Show Column Count” and “Show Column Total”, in the admin page to hide or display record count and sum on the column. In Opportunities, the field defaults to Likely.
- Added total count on tiles within a column (respecting the filter in place).
- Added total sum on tiles within a column. The sum will only be displayed for numeric type fields and will respect filters in place. When a preferred currency is enabled, it will display both, the preferred and system currency.
- Those checkboxes are enabled by default for Opportunities module
- When dropping a tile from one column to another, the tile follows sort order within the column adjusting the sum and count accordingly, as well as following filters in place.
- Added new field "Sort by" that is sticky between List View and Tile View. New control displays fields that are available and sortable in List View.
- We have removed the drag-and-drop records, within a single column, which capability to improve user experience
- Facelift colors and fonts for the new Tile views
- When in Tile View mode, users will be able to traverse Focus Drawers within a column using the up and down control same as in List Views.
- When a focus drawer is opened from a Tile, the entire column shifts to the left and the focus drawer opens to the right of it.
- Only the column from which the focus drawer is open is in view, all other columns are hidden behind the FD.
- Added stickiness between module Tile View and List View.
- Users that had bookmarked Tile View will be redirected to regular module LV on upgrade.
Dashboard filtering capability
In this release, we are making available runtime filtering capabilities to our Dashboards the same way as our Report Viewer does.
The user now has the possibility to consolidate available run time filters in the report dashlets in one single filter group, placed in the filter container. With the dashboard filter group – the user can filter on the dashboard level and will change the run time filters in all the dashlets we want.
Introducing New Pipeline Metrics
Introducing "Pipeline Metrics" - a powerful new dashlet designed to replace the existing "In Forecast" dashlet. We have upgraded the Forecast Dashboard by replacing the previous "In Forecast" dashlet with the more advanced and robust "Pipeline Metrics" dashlet. It will be migrated during upgraded.
-
We've added these additional metrics in “Display Metrics”
-
Quota (by default-order 1)
-
Calculation: Quota
-
Display label: Quota
-
Glossary description: Quota
-
-
Commitment (by default-order 2)
-
Calculation: Likely commitment
-
Display label: Commitment
-
Glossary description: Likely Commitment
-
-
Quota Coverage (by default-order 4)
-
Calculation: (Pipeline + Won + Lost)/Quota
-
Display label: Quota Coverage
-
Glossary description: (Pipeline + Won + Lost)/Quota
-
-
Gap to Quota (by default-order 5)
-
Calculation: Quota – Won
-
Display label: Gap to Quota
-
Glossary description: Quota – Won
-
-
% Won of Quota (by default-order 6)
-
Calculation: Won/Quota (display as percentage)
-
Display label: % Won of Quota
-
Glossary description: Won/Quota
-
-
Quota Gap Coverage
-
Calculation: Pipeline / Gap to Quota (displayed as 3.4x)
-
Display label: Quota Gap Coverage
-
Glossary description: Pipeline / Gap to Quota
-
-
Commitment Coverage
-
Calculation: (Pipeline + Won + Lost)/Commitment
-
Display label: Commitment Coverage
-
Glossary description: (Pipeline + Won + Lost)/Commitment
-
-
Gap to Commitment
-
Calculation: Likely Commitment - Won
-
Display label: Gap to Commitment
-
Glossary description: Likely Commitment - Won
-
-
Commitment Gap Coverage
-
Calculation: Pipeline / Gap to Likely Commitment
-
Display label: Commitment Gap Coverage
-
Glossary description: Pipeline / Gap to Likely Commitment
-
-
% Won of Commitment
-
Calculation: Won/Likely Commitment (displayed as a percentage)
-
Display label: % Won of Commitment
-
Glossary description: Won/Likely Commitment
-
-
Forecast Coverage
-
Calculation: (Pipeline + Won + Lost)/Forecast
-
Display label: Forecast Coverage
-
Glossary description: (Pipeline + Won + Lost)/Forecast
-
-
Gap to Forecast
-
Calculation: Forecast – Won (This is the same as Included Pipeline)
-
Display label: Gap to Forecast
-
Glossary description: Forecast – Won (Included Pipeline)
-
-
Forecast Gap Coverage
-
Calculation: Pipeline / Gap to Forecast
-
Display label: Forecast Gap Coverage
-
Glossary description: Pipeline / Gap to Forecast
-
-
% Won of Forecast
-
Calculation: Won/Forecast (displayed as percentage)
-
Display label: % Won of Forecast
-
Glossary description: Won/Forecast
-
-
-
Metric Tiles displays % Won for Commitment Gap, Forecast Gap, and Quota Gap
- On Info icon click, Tile View metrics will display a glossary with the appropriate definition for each metric.
-
Pipeline Metrics come with a new configuration page where you can define up to 9 metrics to be displayed.
Remove Activity Streams when not enabled
We are removing the Activity Streams toolbar buttons from List Views and Title Views when disabled by the admin. If that is enabled, it will be displayed as it is today.
Action Buttons Improvements
Up until this release, Sugar did not deliver any Action Buttons in its Stock/Out-of-the-box modules, which were restricted to Customers/Admins to add them to use its potential. In this release, we are now exploring and adding ActionButton fields to modules.
In order to boost the customer service team's efficiency and productivity, we have now added the following OOTB action buttons for cases:
- Claim: Clicking on this action button would assign the case to the logged-in user. This button is not shown if the case is already assigned to the logged-in user.
- Close: Clicking on this action button would update the case status to Closed.
- Unassign: Clicking on this action button would unassign. I.e. set the Case Assigned To field to none. This action button is only shown if the case is assigned to someone.
A new option has also been added in this release to enable Action Buttons on Focus Dashboards called "Display on Focus Dashboard Header" in the ActionButton configuration page.
Console List View Pagination
In this release, we have added pagination to the console list view, it comes with the full pagination control at the bottom and functions similarly to regular List Views. It will retrieve 20 records at the time for faster load and rendering.
Combine the console focus dashboard and other focus dashboards
We have now combined the two lists: Focus Dashboard and Multiline list view focus dashboard. Going forward, there will be only one OOTB layout for focus dashboards for each module avoiding any confusion. Users will be able to see all the focus dashboards for a module in one list and they will be able to switch among all the focus dashboards (OOTB as well as custom focus dashboards).
Sugar Automate Improvements
In this release, when a user is updating a field in a CRM parent record, the user now has the ability to create an automatic action to trigger an action on a smart guide activity/stage or on the whole smart guide. Previously customers didn’t have the option to apply automatic actions based on parent field triggers and would have to update the smart guide manually.
Another improvement for Automate is to provide the user option to show/hide stage numbers according to their business need.
Sugar REST API updates
This Sugar release introduces REST v11_21.
Current user's last application state by platform Rest API endpoints
Added new endpoints to maintain current user's last application state by platform.
GET <sugar instance>/rest/v11_21/me/last_states/:platform PUT <sugar instance>/rest/v11_21/me/last_states/:platform
Reports API
In this release, we are updating our Reports API to respect the reports definition, sugar_config and roles.
- sugar_config.disable_export - disables it completely
- sugar_config.admin_export_only - only admin can export
- Checks if the user has `
EXPORT RIGHTS
` to the `ACCOUNTS, CONTACTS, OPPORTUNITIES` modules. - Checks if the user has `
VIEW RIGHTS
` to the `ACCOUNTS, CONTACTS, OPPORTUNITIES` modules. - Checks if the user has `
ACCESS TO EVERY FIELD
` that the report contains.
This improvement is at the report/config/role definition only, Sugar will not check at the data layer.
PHP Library Updates
Updated PHP libraries for minor and patches versions
In this release, we have ran composer to update its libraries with their latest minor patches along with their intrinsic dependencies.
Configurability updates
Sugar Logic
isOwner()
This SugarLogic function returns true if the current record is assigned to the current user.
isAssigned()
This SugarLogic function returns true if the current record is assigned to any user.
Sugar Config Settings
Setting Name |
Default |
Override Example |
Description |
security.use_doh | false | $sugar_config['security']['use_doh'] = true | Enables remote Domain Name System (DNS) resolution via the HTTPS protocol. A goal of the method is to increase user privacy and security by preventing eavesdropping and manipulation of DNS data by man-in-the-middle attacks by using the HTTPS protocol to encrypt the data between the DoH client and the DoH-based DNS resolver. |
enableHttpOnlyCookies | true | $sugar_config['moduleInstaller']['features']['enableHttpOnlyCookies'] = false |
Sets cookie option to HTTP Only for loginErrorMessage cookie in case of session expiration. Feature is availabe in 13.1 to enabled httpOnly with the option to disable and in 14.0 the option to toggle is removed This has been backported to 13.0.2, 12.0.4 |
ajax_debounce_interval | 500 | $sugar_config['ajax_debounce_interval'] = 800; |
Delay in milliseconds to wait after key presses in Emails recipient search. It prevents excessive database load in case of short search conditions for email recipients. Possible Values: 600, 700, 800, or any other integer, preferably above 500 |
Data Changes
Leads and Opportunity module AI fields to accept decimal values
AI scores fields available on Leads and Opportunities module are now configured to accept DECIMAL values up to precision 8 (8 decimal points). The following fields are being updated to length 10 and precision to 8:
Leads Moduleai_conv_score_absolute
ai_conv_bin_accuracy
ai_conv_multiplier
ai_icp_fit_score_absolute
ai_icp_fit_bin_accuracy
ai_icp_fit_multiplier
Opportunities Moduleai_opp_conv_score_absolute
ai_opp_conv_bin_accuracy
ai_opp_conv_multiplier
New indexes
In this release, we are creating a new index for tracker module. It is done through vardefs and it translates to:
create index idx_userid_module_itemid_summary_datemodified on tracker ( user_id, module_name, item_id, item_summary, date_modified );
Platform Updates
Renewals Console string to “Sales Console”
In this release, we are renaming "Renewals Console" to “Sales Console” to better align with our strategy going forward. If this has already been renamed, we will not update on upgrade.
Renaming List Views Operators
In this release, we are making consistent with SugarBPM the operators in the Multiselect field type:
- From “Is any of” to “Is one of”
- From “Is not any of” to “Is not one of”
Expand List Views Date and Datetime operators
In this release, we are expanding the date and datetime field type's operators by introducing the following (user should be able to type in the field like they already can in integer fields like “Is between”):
- “More than _ days ago”: shows records from the date specified backward
- “more than 5 days ago” does not include the 5th day, it includes the 6th day backward
- “Last _ days”: shows records from today to number of days specified in the past
- “5 days ago” includes today and the 5th day in the past
- “Next _ days”: shows records from today to the number of days specified in the future (today and the last day)
- “Next _ days” includes today and the 5th day in the future
- “More than _ days in the future”: shows records from the date specified onward
- e.g “more than 5 days in the future” does not include the 5th day, it includes the 6th day onward
Global Search Display Improvements
In this release, we have improved how Global Search results are displayed in the Modules dashlet. it will now use all the space available in your screen as well as display the all records with the number of matching Modules (not only 5 as before) so users can have a full set of data from their search.
ExternalResourceClient Improvements
We have improved ExternalResourceClient to have more configurable options for developers.
- We are making NativeResolver
- DoH (DNS over HTTPS) is now an option to improve user security instead of the default option.
- We have added
setSslContextOptions
where you can specify SSL context options. - We have added
setSocketContextOptions
where you can specify Socket context options. - When instantiating ExternalResourceClient, you cannot set timeout to 0 or negative
An example on how to use the new methods:
<?php
$client = (new ExternalResourceClient())
->setSslContextOptions([
'local_cert' => '<CERT_FILE>', //CURLOPT_SSLCERT analogue
'local_pk' => '<KEY_FILE>', // CURLOPT_SSLKEY
]);
Update parent context when child context is closed
In Sugar whenever record data is updated in a child context the parent context is not updated automatically when the child context is closed (i.e. In Service Console if a field is changed in the record view dashlet in the focus drawer the changes are not reflected in the multiline list view when the focus drawer is saved and closed).
In this release, we have improved the current behavior such that every time information is changed in a child context, parent context will be updated when the child context is closed (E.g. closing focus drawers for consoles, record views, module list views etc.)
Web Logic Hooks
In this release, we have fixed an issue where an admin would create a Web Logic Hook for a particular Module and subsequently would update the module to a different one than the original.
Sugar would trigger the same event for both Modules not only the one saved last. Now Sugar will respect the Module saved for that Web Logic Hook at the time of triggering.
Uploading Files improvements
In this release, we are improving the upload functionality
- Company logo files are now enforced to be valid png/jpeg files.
- Ensure that files updated have a valid beanId associated with them before moving them to
/upload
directory - We fixed our FileApi that was throwing an error "File too large" when files were uploaded as base64
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.
Denylist Updates
SugarCronParallelJobs
SugarCronJobs