The purpose of this document is to provide insight to Sugar Developers for upgrading custom Sugar code, extensions, and integrations to the Sugar 12.2 (Q4 2022) release. This guide focuses on changes in Sugar 12.2 (Q4 2022) that could cause an immediate impact on Sugar customizations and integrations built for earlier Sugar versions.
Please check out the Q4 2022 Developer Webinar recording for more developer highlights. For Admin and End User release notes, please visit the Sugar 12.2.0 Release Notes.
User Experience Updates
Extend Focus Drawer functionality to Report Drill Down results
Added Focus Drawers to Reports. When a user drills into a report's chart, sidecar links will display a focus drawer icon to the right of these. When a focus drawer (side drawer) is open from a top-bottom drawer, the focus drawer will stack on top of the top-bottom drawer. Closing a focus drawer opened from a top-bottom drawer lands the user in the initial top-bottom drawer. Focus drawer will follow regular bread-crumbing behavior. Clicking on a link from a top-bottom or focus drawer navigates the user to the link and kills all drawers.
Introducing Metrics Tab to Consoles
In this release we are introducing a new feature called “Metrics” in this release enabling Metric ribbons for consoles that provide a holistic view of the metrics that matter the most. Each metric ribbon contains a number of Metric tabs each providing snapshot information that focuses on the points where the agents are regularly monitoring and taking action. The new metric ribbon is enabled for both Service Console as well as Renewal Console. This would completely change the way a Service or a Sales agent works in Sugar consoles.
This new Module provides a list view with all the available metrics where you can manage its settings, filters and define the layout, admins can also delete a metric if they need to.
We are also releasing some out-of-the-box metric tabs as follows:
-
User can see the following OOTB Metric tabs for Cases for Service Console
-
My Cases
-
Filter Criteria : All Cases assigned to me and not Closed/Rejected/Duplicate ( Current filter criteria for the Cases tab for Service Console)
-
-
My Team’s Cases
-
Filter Criteria: All Cases assigned to me and anyone in my team and not Closed/Rejected/Duplicate
-
-
All Unassigned
-
Filter Criteria: All Unassigned Cases and not Closed/Rejected/Duplicate
-
-
All Escalated
-
Filter Criteria: All Escalated Cases assigned to me and anyone in my team and not Closed/Rejected/Duplicate
-
-
-
User can see the following OOTB Metric tabs for Accounts for Renewal Console
-
My Accounts
-
Filter Criteria : Current filter criteria for the Accounts tab for Renewal Console)
-
-
-
User can see the following OOTB Metric tabs for Opportunities tab for Renewal Console
-
My Opportunities
-
Filter Criteria : Current filter criteria for the Opportunities tab for Renewal Console)
-
-
Note: On upgrade, If no customization is done only OOTB metrics would be available after upgrade, if admins have customized, new customized metric tab will be the default one and should be shown as first tab.
Align Forecasting metrics UX
We are modifying forecasting KPI/metrics user experience with the new Metrics modules which is a change in the visualization of the Opportunity count in the metric boxes. These will now be displayed as a gray badge to match Serve views..
Embed report results directly in email body
In this release, we are embedding report results for scheduled reports directly in the email body rather than as attachments.
The report chart and data table are included directly in the email body. Can be scrolled. No pagination. Very large reports (~200 rows) are sent only in attachments.
Sugar REST API updates
This Sugar release introduces REST v11_18.
Nearby search with distance filter Rest API endpoints
Added a new endpoint which returns geocoded records based on radius, latitude and longitude
GET <sugar instance>/rest/v11_18/maps/nearby
PHP Library Upgrades
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 latest stable version and removed some transitive dependencies.
"symfony/cache": "^v5.4.10"
"symfony/console": "^v5.4.10"
"symfony/event-dispatcher": "^v5.4.9"
"symfony/expression-language": "^v5.4.10"
"symfony/intl": "^v5.4.10"
"symfony/polyfill-intl-idn": "^v1.26.0"
"symfony/security-core": "^v5.4.10"
"symfony/security-csrf": "^v5.4.9"
"symfony/validator": "^v5.4.10"
"symfony/process": "^v5.4.8"
Smarty (smarty/smarty)
Sugar utilizes a PHP library called Smarty In this release, we are bumping up Smarty to v3.1.45. This is a minor upgrade with no impact to Sugar code.
JS Library Upgrades
jQuery UI
In this release, we are upgrading jQuery UI to v1.13. jQuery team has put together an upgrade guide per component as a reference.
In case you use any of the affected components, please make sure to review and upgrade accordingly.
SugarCRM Ventana
Ventana is being bumped up to 1.1.13 and it has been upgraded in Sugar 12.2 as well.
Supported Platforms Update
DocMerge Deployed on Supported Regions
DocMerge services have been deployed in EU, APAC, and CAC regions for better performance and compliance.
Configurability updates
Sugar API Platforms
Developers use the platform parameter to distinguish their custom platform from other clients when using the Sugar API.
We have added sugarlambda
to the core platform APIs.
Sugar Config Settings
Setting Name |
Default |
Override Example |
Description |
symfony_deprecation_log | false | $sugar_config['symfony_deprecation_log'] = true; | enable logging of deprecation warnings, triggered by Symfony components |
Data Changes
Opportunities Module
We are adding the following fields to the Opportunities module for faster and better integrate with Sugar Predict.
- ai_opp_conv_score_absolute labeled “Prediction Value”
- ai_opp_conv_bin_accuracy labeled “Prediction Bin Accuracy”
- ai_opp_conv_multiplier labeled “Prediction Multiplier”
Leads Module
We are adding the following fields to the Leads module for faster and better integrate with Sugar Predict.
- ai_conv_score_absolute labeled “Prediction Value”
- ai_conv_bin_accuracy labeled “Prediction Bin Accuracy”
- ai_conv_multiplier labeled “Prediction Multiplier”
- ai_icp_fit_score_absolute labeled “ICP Value”
- ai_icp_fit_bin_accuracy labeled “ICP Bin Accuracy”
- ai_icp_fit_multiplier labeled “ICP Multiplier”
Platform Updates
Improvements to ExternalResourceClient
- We heard you and our ExternalResourceClient now accepts IPs on HTTP (non-secure) URLs, e.g http://999.999.999.999/api/get/1 now is allowed as before it would throw an exception.
- We are also improving ExternalResourceClient to be compatible with PSRs 7,17,18 by adding a new method
sendRequest()
to make our class compatible with PSR standards.- When using
sendRequest()
in the output should be values of"X-Amzn-Trace-Id"
key (they are unique for each request/response).
- When using
- We are improving DNS lookups over HTTPS (a.k.a. DoH), it won't impact you or your code, it's an under-the-hood improvement.
- Few bugs were fixed related to multiple redirects and URL changes
curl_*, socket_*, and stream_* functions checks enabled
As announced in the previous release, 12.2 enables Sugar's package scanner to block those functions on MLP uploads.
As a reminder, the following plan has been put in place to ease the transition:
-
For the Sugar_12.1.0 release, the config parameter (
enableEnhancedModuleChecks
) will be disabled by default allowing MLPs with HTTP clients like curl, socket, and streams to be updated/installed. -
For Sugar_12.2.0 and Sugar_12.3.0 we will enable the config so that MLPs with the above functions will be blocked however Cloud Support has the ability to turn this off.
-
For Sugar_13.0.0 we will be removing the config, by this time we will have given everyone 4 releases times as per our deprecation policy.
-
This client should be backported to all supported sugar versions.
DocMerge Performance Improvement
In this release, we have improved the performance of DocMerge functionality by introducing caching in different layers while dealing with metadata and merging.
Deprecations warnings to its own log file
Developers may want to add also the following to collect deprecation warnings into a separate deprecations.log file, keeping in sugarcrm.log only important messages
$sugar_config['logger']['channels']['deprecation'] = [
'level' => 'warning',
'handlers' => [
[
'type' => 'File',
'name' => 'deprecations',
],
],
];
Restricting Module Loader for Sugar Essentials
Our Sugar Essentials customers will no longer be able to install nor uninstall packages using Module Loader, they can, however, delete uninstalled packages through the UI.
UI will present an explanatory text in the UI for those types of customers.
Uploads are encoded jow
In this release, we are improving the security of our file uploads (any upload). If there are any PHP type of comand in the file being uploaded, we will encode that to prevent executing while storing at rest and will decode when it's being read it back.
Removed Functions / Libraries
PHP stable sort removed
PHP stable sort functions library (vanderlee/php-stable-sort-functions
) has been removed in Sugar 12.2.
Symfony Components
Symfony is a leading PHP framework that provides a set of common components, the following components were removed in Sugar 12.2.
symfony/translation
symfony/http-kernel
Multiple Dead code removed from Sugar Core
As part of our ongoing efforts to keep Sugar clean, fast, reliable, and secure, we are removing dead code from Sugar Core.
Remove Opens Sans as font
We've added a new font, Inter as our default and only font. Now it's time to clean up and remove Open Sans font-family in the core platform.
SugarCloud Insights
We are making our SugarCloud insights downloads much better, more reliable and more secure in this release. We are introducing a new API for downloads and deprecating the current API.
Introducing new Downloading Backups API
In this release, we are introducing a new Rest API for SugarCloud Insights backups for our SugarCloud customers.
This API follows our Sugar API standards as you need an OAuth token to retrieve data from.
Backups API requires those headers:
- Sugar OAuth-Token provided by your instance's API OAuth-token call.
- Your Sugar instance's FQDN, for example: mysugarinstance.sugarondemand.com
- API: this is your SugarCloud Insights URL that can be retrieved when you're logged in to SCI, for now, it should be one of those
- Non IDM enabled customers: sugarcloud-insights.service.sugarcrm.com
- usw2 customers: sugarcloud-insights-usw2.service.sugarcrm.com
- cac1 customers: sugarcloud-insights-cac1.service.sugarcrm.com
- apse1 customers: sugarcloud-insights-apse1.service.sugarcrm.com
- apse2 customers: sugarcloud-insights-apse2.service.sugarcrm.com
- euc1 customers: sugarcloud-insights-euc1.service.sugarcrm.com
- euw2 customers: sugarcloud-insights-euw2.service.sugarcrm.com
curl -X POST
-H Cache-Control:no-cache
-H "Content-Type: application/json"
-H OAuth-Token: <OAUTH_TOKEN>
-H X-Sugar-FQDN: <FQDN>
https:/<site_url>/api/v1/backups
Payload return:
{
"backups":[{
"created_at":"2022-08-03T07:03:01Z",
"expires_at":"2022-09-02T07:03:01Z",
"download_url":"https://your_backup_archive",
"exclude_uploads":false,
"compressed_size":3838288,
"uncompressed_size":3845144,
"md5_checksum":"25d90b5fb93605d86da0862ec350610f"
}]
}
Note: The "download_url" link is a temporary URL that will become invalid after a period of time, if that happens, you must make a new request to the API.
Deprecating Downloading Backups From the Backups Module
We are deprecating the Ops Module Filter API in December 2022, which means it will still work as it is currently (in addition to the new REST API endpoint offered in 12.2). Customizations using the old endpoint should be updated to leverage the new API added in 12.2.
Customers should still be able to use the legacy Backups module/API until December 2022. Once the Ops Module filter API has been removed, downloads can only be retrieved via the new API endpoint so we encourage you to upgrade all customizations or integrations to use the new API before the end of 2022.
Uploads Folder not Included by Default
Customers have requested to remove uploads_folder from backups due to the size of their backups.
We heard you and now uploads is not enabled by default and will be excluded on your backups moving forward, reducing the size of your backups focusing only on what matters.