The purpose of this document is to provide insight to Sugar Developers for adapting custom Sugar code, extensions, and integrations to the Sugar 11.3 (Q1 2022) release. This guide provides an overview of some of the new features and identifies changes in Sugar 11.3 (Q1 2022) that could cause an immediate impact on Sugar customizations and integrations built for earlier Sugar versions.
Please check out the Q1 2022 Developer Webinar recording for more developer highlights. For Admin and End User release notes, please visit the Sugar 11.3.0 Release Notes.
User Experience Updates
Admin UI Redesign
We're introducing a new redesigned Admin landing page built on Sidecar. Sugar has kept compatibility as much as possible therefore, error messages shown on the admin page remain the same in terms of content and all the links are shown as per the role/license similar to the old admin landing page. (customers can still access the old BWC admin page via the old URL.)
Notable changes that require attention:
- Admin icons are now 12px by 12px (before was 16x16, so please update your icons)
- New Admin API endpoint to retrieve landing page definitions
- New icons use SugarIcon library instead of gif files
- Admin can search for link text/description on the admin landing page and see the results on a pop up.
- HTML markups are not supported going forward (text strings should be plain or escaped now in Sidecar)
On upgrade customers would see the new landing page UI.
We encourage you to update your references from #bwc/index.php?module=Administration to #Administration
Dropdown-Conditional RV Layouts
This release we give you the ability to create dropdown-conditional Record Views and in 11.3, we want to create a Dropdown driven RV layout that displays different Record Views depending on the Type of Record. Therefore you'll be able to control conditional field availability and position with minimal effort as well as move fields to different positions based on which are more important for some records than others. You don't need to maintain and manage duplicate dependency formulas on individual fields.
These changes were applied to [module]>Layouts>Record View
:
Updates made to fields that disappear after a DBV field is triggered will not be saved. We’ll only save values in fields that are still present in the UI. a Popup warning will appear when a user is editing the Record and then selects a Dropdown field that’s going to change the layout, to let the user know that the dropdown selected will change their view and they will lose some of their edits. If a user has no access to the selected Dropdown field, they will still see the layout view of the Record’s selected Dropdown.
On upgrade, we don’t touch users existing customizations.
Dark mode compatibility to filter divider rows
Filters and mass update row dividers have dark mode compatibility. We also improved the filter view by using a dynamic color variable “@ borderColor” when dark mode is enabled. Added to (List views, Search and select, Subpanel filters, List views dashlet configuration, Data archiver, Console config)
Node we added two css utility classes:
border-{side}-n
whereside
is empty,t
(top),b
(bottom),l
(left),r
(right) andn
is 0, 1, 2pxborder-{style}
wherestyle
is solid, dashed, dotted, double
wUtilities. Import into SugarCRM
We are bringing former wUtilities into Sugar in this release. You may want to check your code for conflicts (or became obsolete now that is part of the core). We're adding the following:
- Clone - this item allows admin to copy some of a given user's setup such as their Default Teams, Favorite Reports, Navigation Bar Module Selection, and Scheduled Reports to another user or users in a particular team or role
- Dashboards - allows to clone the already configured dashboards from particular modules to the particular user/teams/roles
- Filters - allows to clone existing user’s filters to particular user/teams/roles
- User settings - enables an option to set up different user-level preferences like Date format, Time zone, Preferred currency, etc., for a user/teams/roles
Border around Dashlets being removed
We have removed borders around dashlets in favor of box-shadows, specifically for Dashlets, we have added an extra shadow on over for header with exterior strokes.
Please check your dashlet customizations to comply with this change.
Introduce newly reusable UI components in Sugar
We are going to start looking at creating newly designed, more reusable components in Sugar. For start, we've added a new utility class that allows you to specify the background colou for a given component using only classes. Ex. bg-content-background
will set background-color: var(--content-background).
There’s been added utility for border-radius: rounded-{size}
. Right now, there are a few different sizes: rounded-none
, rounded-sm
, rounded
, rounded-md
, rounded-lg
, rounded-xl
, rounded-2xl
, rounded-3xl
, rounded-full
.
Tasks card in the Timeline Dashlet
We've added tasks card for all the Timelines for Sugar App. For all the modules for which timeline is enabled, if tasks can be related as sub-panel to that module then the task card would show up on that timeline. Users would be able to filter the timeline based on Tasks. If you've customized that, make sure you review your code.
Improvements on Loading... message
We have made an improvement on this "Loading..." message when there was a javascript error it would just stay there, now when there is a persistent “Loading…” message that does not disappear, user can close the message by clicking an “X” at the top right.. Please check your customizations if you've made an improvement on this behavior.
Forecasting at the Opportunity Level
We introduced two new fields in the Opportunity Level, "Forecast" and "Forecast Likely". “Forecasted Likely” field in Opps adds up the Likely amount for RLIs that have their values set to an included Forecast range. This is available for users using Opps + RLIs. The field will only appear on Opps not related RLIs. Users will be able to filter and report on the new field.
If users have edit access to “Forecast” on edit or create, they will see the “Set Across Revenue Line Items” checkbox and when checked, we’ll cascade the Opps value down to the related eligible RLIs. Cascading does not work on closed RLIs.
Update date on the left for timeline cards for few modules
We are updating the date on the left for Timeline Cards to be same as the date which is used for sort order i.e. Start Date for the following cards for Timeline dashlet. Our default behavior prior to this release was to sort based on the start date but display the create date on the left. Also added tooltips as the field name for the Start Date on the left of the cards for Calls, Meetings and Messages cards in order to make it more clear for the user. Please check your customizations if you've made an improvement on this behavior
Sugar REST API updates
This Sugar release introduces REST v11_15.
Admin Landing page definitions
You can now get admin definitions metadata (used by Admin Landing page Sidecar). This endpoint is only available to administrators and developers with access to any module.
GET <sugar instance>/rest/v11_15/Administration/adminPanelDefs
* Important to note that this endpoint returns two icons definition (icon and customIcon)
- icon refers to SugarIcon library (either customized/replaced or a default icon)
- customIcon is the legacy icon defined in the admin extension
Admin Landing page Errors
You can now get current system errors or warnings available on Admin landing (used by Admin Landing page Sidecar). This endpoint is only available to administrators and developers with access to any module.
GET <sugar instance>/rest/v11_15/Administration/errors
PHP Library Upgrades
Adding vanderlee/php-stable-sort-functions
We are adding back this library as it was mistakenly removed instead of deprecated.
It is not used by our core platform therefore is deprecated and will be removed for good soon.
JS Library Upgrades
Update Sidecar's NodeJS to 10
In this release, we are upgrading our Sidecar core code to be compatible with Node >=10.24.1 and NPM >=6.14.12.
There's minimum impact for developers, you might need to upgrade your versions to run some of the unit tests that rely on this versions.
Configurability updates
Sugar Logic
Work in progress.
Sugar Catalog Server
Work in progress.
SugarBPM
Work in progress.
Studio
Work in progress
Sugar Config Settings
Setting Name |
Default |
Override Example |
Description |
proxy_visible |
true (non cloud) false (cloud) |
$sugar_config['proxy_visible'] = false; | Determines whether the Proxy Settings panel is visible to administrators in Admin > System Settings. Instances running on Sugar's cloud environment will have this setting enforced as false. |
developer_mode_visible |
true (non cloud) false (cloud) |
$sugar_config['developer_mode_visible'] = false; | Determines whether the Developer Mode flag is visible to administrators in Admin > System Settings. Instances running on Sugar's cloud environment will have this setting enforced as false. |
Removed Features
Changes on our Legacy SOAP API
In this release we are updating our SOAP API to be WS-I 1.0 Compliant, therefore when accessing the soap entry point, you will be provided with rpc/encoded formatting.
You may change the encoded by literal if need be, however, we are not serving document style anymore, therefore valid options are:
https://{sugar_url)/service/v4_1/soap.php?wsdl
http:s//{sugar_url)/service/v2/soap.php?wsdl
https://{sugar_url)/service/v4_1/soap.php?wsdl&style=rpc&use=encoded
https://{sugar_url)/service/v4_1/soap.php?wsdl&style=rpc&use=literal
https://{sugar_url)/service/v2/soap.php?wsdl&style=rpc&use=literal
https://{sugar_url)/service/v2/soap.php?wsdl&style=rpc&use=encoded
Data Changes
Fixed attachment_flag is set to 1 for legacy note records
We've fixed this issue when a Note has an attachment and when you open the related Opportunity, the Note record does not appear in the Notes subpanel. The workaround was to update the attachment_flag field from 1 to 0 via an SQL query. This change will be reverted if a user edit/save the Note. Now it's fixed, so if you've customized/workaround it, please review your code.
Data Archiving process on the pmse_BpmFlow table
We no longer allow archiving directly on the pmse_bpmFlow table since this is not an exposed table in Sugar. Now the user can only see the pmse_Inbox table in the list of modules to archive dropdown.
Tre are several options on which to filter on for this table, however, the system requires that the user select ‘Process status’ as one of the filter options for this to be a valid data archiver.
When an archival process is run on the pmse_Inbox table, the entry from that table will be archived as well as all entries in pmse_BpmFlow and pmse_BpmThread that have the matching ‘cas_id’ related to that process
Filesystem Changes
Ex. Changes to Sugar filesystem structure.
Platform Updates
List View & Subpanel-Store Columns, Order, and Sort in the DB
In this release, we are storing users' List View and Sub-panel organization into the database not the browser so they can access it from anywhere and don’t have to worry about losing everything after clearing their browser. User can drag and drop their columns, change the order and widths, on LV, Subpanels, Filters, and everywhere they can change layout configs. Please check your customizations if you've implemented similar functionality.
Respect Product Categories' "Order" field in the PC dashlet
We have implemented ordering in the PC dashlet respecting the Order field, now you can choose which products show up first.
Check your customizations and/or naming If you've used the workaround (append numbers or letters) so it would order alphabetically.
Sidecar now provides an easy way to Check for License and user state
In this release, we are providing helper methods in Sidecar to check for various licenses and user states that can be used to determine if we should enable some functionality.
- hasSellLicense()
- checks if user has a Sell license
- hasServeLicense()
- checks if user has a Serve license
- hasSellServeLicense(hasBoth = false)
- if hasBoth is false, returns true if user has either Sell or Serve license
- If hasBoth is true, returns true if user has Both Sell AND Serve licenses
- hasLicense(licenseType<string | string[]>, hasAll = false)
- allows a single license type string or an array of strings license types to be passed in
- If hasAll is false, returns true if user matches any license types
- If hasAll is true, returns true is user matches ALL license types
- isSetupCompleted()
- checks that the user has already accepted the Cookie Consent & that the user has already been through the User Setup Wizard
- essentially covers the cases where we check:
- app.user.get('cookie_consent') && !app.user.get('show_wizard')
New and Improved Charts!
In this release we have selected ChartJS our core charting engine which brings easier to use, faster and responsive charting experience. With this update you have:
-
Default engine is now chartjs
-
New implementation of JSChart that uses chartjs
-
New implementation of sugarcharts.js that uses the SUGAR.charts namespace
- Added 2 new Chart Types: TreeMap and Donut
We have updated our report viewer with ChartJS which means that all Reports generated and rendered from the Reports module will render using ChartJS.
CSP - Content Security Policy UI
We've added the ability for admins to go to a new section “Content Security Policy Settings” and configured Trusted Domains for their instance.
We got 2 tabs now for this settings with the following attributes:
- Basic
-
Trusted Domains ('default-src')
-
Trusted Parent Domains ('frame-ancestors’)
-
- Advanced
-
connect-src
-
font-src
-
form-action
-
frame-src
-
script-src
-
style-src
-
Improvements on BWC modules loaded via an iframe
In this release we have made more improvements when loading BWC modules via iFrame. Specifically for authentication to work we have updated our cookies to set SameSite=None as well as setting of the secure flag, so such cookies will be served only by HTTPS.
Adding CSV in Scheduled Reports
In this release we have enabled a new option for users to select the report type which they wish to send via the report schedular. Before this release only PDF versions of reports were sent for scheduled reports. Now users would be able to select the option if they want to send the PDF, CSV or Both. Default option is PDF as that is the current behaviour. If the user selects the PDF option then only PDF version is sent. If the user selects the CSV option then only CSV version is sent. If the user selects the Both option then both PDF and CSV versions are sent as separate files (i.e. no zip file).
Font- change from Open Sans to Inter
Sugar is changing the base font in the application from Open Sans
to Inter
. This change doesn’t require backwards compatibility with Open Sans. Please check your customizations and make sure they still have the UX experience they had with the previous font. Those font files are planned to be removed in v12.2
Administration Links
As part of our efforts to support cross browsers, we are updating the way we navigate routes.
Links need to be wrapped in javascript:void()
(true for FF), e.g:
-
from
javascript:parent.SUGAR.App.router.navigate("ContractTypes", {trigger: true});
-
to
javascript:void(parent.SUGAR.App.router.navigate("ContractTypes", {trigger: true}));
void
returns undefined
after executing the expression and undefined
tells the browser to stay on the same page on navigation.
Deprecated functions
Sucrose and NVD3 Deprecated
As we move towards making ChartJS our official charting engine, we are deprecating Sucrose and NVD3 charting engines.
Open Sans Font files deprecated
Those font and related files are planned to be removed in v12.2