The purpose of this document is to provide insight to Sugar Developers for upgrading custom Sugar code, extensions, and integrations to the Sugar 12.0 (Q2 2022) release. This guide focuses on changes in Sugar 12.0 (Q2 2022) that could cause an immediate impact on Sugar customizations and integrations built for earlier Sugar versions.
Please check out the Q2 2022 Developer Webinar recording for more developer highlights. For Admin and End User release notes, please visit the Sugar 12.0.0 Release Notes.
Sugar Professional to Enterprise
As we talked about in our webinar, Sugar is converting professional customers to enterprise. Here are some guides we created on each topic for your reference.
- Technical Conversion Guide
- End-user Conversion Website
- Feature Comparison List (cloud and on-prem)
- FAQs
User Experience Updates
List View Improvements
This release continues to improve Sugar’s user experience, now on List Views. With this release we introduce few enhancements on pagination, headers and columns.
LV - Pagination
With this release we introduced a pagination control to divide the list view content into discrete pages and present content in a limited and digestible manner. This makes navigating records in the list views much easier and more in line with modern UI best practices.
We added a pagination control to list view. Users can now clearly see which records are being shown on the current page, navigate through the list of records easily, and jump to any other page from the current page thereby accelerating the user’s ability to find a specific record. Selection of records in the list view is now more intuitive by showing users the number of selected records across pages
LV - Fixed Headers
This new enhancement freezes the list view headers so that users can always see the headers while scrolling down the list.
When users now scroll down the lists, the field headings won’t disappear off the page. We have also capped the space available for filters so that list views are visible when users add a large number of conditions to a filter. We have added a minimize button to close an unsaved filter and increase list view space when an unsaved filter has many conditions. When minimized, users will now see an “Unsaved” indicator.
LV - Ability to Freeze first column
This feature allows the users to pin the first column data so that they can always see it when scrolling the list views to the right.
Both admins and users can configure the freeze first column feature of a list view. A user can see the freeze column option for list views if enabled in the admin settings. If the admin settings is enabled, the freeze option is available to the use.
More Dropdown-Conditional and Role-Based RV
In our previous release, we’ve introduced Dropdown Conditional RV Layouts, in this release we are extending that functionality to Dashlets and Previews making available Dropdown-based and Role-based driven layouts. As a recap, it 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.
On upgrade, “Layout determined by” is set to “Standard Layout” and “View by” is set to “Layout determined by”.
Forecasting Worksheet Enhancements
We’ve put a lot of efforts on making our forecasting experience better. Prior to this enhancements, individual reps could not make an personal commitment to their managers about what they expect to win in a sales period. clicking commit only gave the manager a sum of their in-forecast deals. now, they can make a personal commitment to their manager. we default this value to the summation of their deals, but they can type a new value, should they wish, which is then rolled to the manager upon clicking commit. uncommitted changes made to this commitment header value are not preserved when navigating away from forecasts, even if they have clicked the Save button.
Also new is a manager’s ability to make a team-level commitment. prior to 12.0, managers could make adjustments to each of their subordinate’s commitments or sums. in this way, they could make a commitment disconnected to individual deals. but they still had to attribute those commitments to themselves or their subordinates. they can still do these subordinate-level adjustments, but now they can also make an aggregate commitment for their team in the header. again, we default this to the summation of their adjusted subordinate-level commitments, but the manager can then type a new value in the header as their team commitment before clicking commit. as with the rep sheet, uncommitted changes to this header commitment will not be preserved when navigating away, even if they have clicked the save button.
- “Save” is now called “Save Draft” and exhibits same behavior as prior to 12.0
- Removed the arrow icon from “Commit” and added these two tooltips:
- Rep worksheet: “Save changes to records and submit forecast to manager”
- Manager worksheet: “Submit forecast to manager and assign quota”
Move favorites icon next to the dashboard header
As part of our user experience facelift, in this release Sugar displays the favorite star next to the name instead of the right hand corner with 10px away from the header.
Tabbed components: Update UI of tabbed components across platform
In this release our Tabbed components will blend in with background. Text will get a `@linkColor` and the selected tab border bottom will receive `@blue`.
Opps Focus Dashboard and SugarLive display related RLI List View
Prior to 12.0, if a user wanted to see the Opportunities related RLIs in the Record View dashlet, they had to manually add them. In the context of a Focus drawer, where we want all relevant information at the disposition of the user, we thought it made sense to add RLIs in the second tab so users can switch back and forth between the two, if needed.
Dropdown Classification for Sales Stage
Admins are now able to add Classification to any custom Sales Stage via the UI in Studio. Classifications will default to Open, but users will be able to select from Closed Won and Closed Lost as well. These classifications will be mapped accordingly to the existing values in the database.
Modernizing UI Continues
In this release we’re finishing up the work started in 11.3 to modernize the overall look and feel of the Sugar UI. We have improved the look and feel of the main Sugar views with a more modern approach to styling and a focus on how users interact with Sugar. We updated the elements and dimensions of the footer. We removed unnecessary dividers in different places of the application and updated the look of tabs to align with material design and accordion styling. List Views and dashlets have an updated headerpanel to reflect the same behavior exhibited in dashboards. We deprecated Open Sans for a better font and updated the style of the Search box to look like the Tags field. And lastly, we gave message modals and their loading indicators a state-of-the-art look.
Multiple Integrations added to the Core
This release also comes with multiple integrations imported to Sugar Core platform (more details on Platform Updates section):
- DocuSign - allows users to send documents such as quotes and contracts for electronic signatures directly from Sugar records
- Sugar Maps - allows users to see records plotted on a dynamic map directly in SugarCRM
- Cloud Drive - allows users to manage their OneDrive or Google Drive folders and files
Sugar License and Version Help
Starting in 12.0, it will be much easier for customers to access the right documentation and content that’s relevant to them. We exposed user license in two places, the About page and Help modal, so users will be able to easily locate their Sugar version and edition number.
Sugar REST API updates
This Sugar release introduces REST v11_16.
DocuSign Rest API endpoints
GET <sugar instance>/rest/v11_16/DocuSign/getAuthenticationUrl
DELETE <sugar instance>/rest/v11_16/DocuSign/revokeToken
POST <sugar instance>/rest/v11_16/DocuSign/send
GET <sugar instance>/rest/v11_16/DocuSign/sendReturn
POST <sugar instance>/rest/v11_16/DocuSign/saveBean
POST <sugar instance>/rest/v11_16/DocuSign/stats
POST <sugar instance>/rest/v11_16/DocuSign/getCompletedDocument
GET <sugar instance>/rest/v11_16/DocuSign/downloadDocument
POST <sugar instance>/rest/v11_16/DocuSign/downloadDocument
POST <sugar instance>/rest/v11_16/DocuSign/resendEnvelope
POST <sugar instance>/rest/v11_16/DocuSign/updateEnvelope
POST <sugar instance>/rest/v11_16/DocuSign/removeEnvelope
POST <sugar instance>/rest/v11_16/DocuSign/notification
CloudDrive Rest API endpoints
POST <sugar instance>/rest/v11_16/CloudDrive/list/files
POST <sugar instance>/rest/v11_16/CloudDrive/list/folders
POST <sugar instance>/rest/v11_16/CloudDrive/folder
GET <sugar instance>/rest/v11_16/CloudDrive/file/:fileId
POST <sugar instance>/rest/v11_16/CloudDrive/files/syncAll
POST <sugar instance>/rest/v11_16/CloudDrive/files/syncFile
POST <sugar instance>/rest/v11_16/CloudDrive/download
POST <sugar instance>/rest/v11_16/CloudDrive/delete
POST <sugar instance>/rest/v11_16/CloudDrive/createSugarDocument
GET <sugar instance>/rest/v11_16/CloudDrive/paths
POST <sugar instance>/rest/v11_16/CloudDrive/path
GET <sugar instance>/rest/v11_16/CloudDrive/path
DELETE <sugar instance>/rest/v11_16/CloudDrive/path
Sugar Maps Rest API endpoints
POST <sugar instance>/rest/v11_16/maps/getApiKey/:provider
POST <sugar instance>/rest/v11_16/maps/generateMap
PHP Library Upgrades
no change.
JS Library Upgrades
no change.
Supported Platforms Update
In this release we are updating Sugar’s Supported Platforms for PHP to comply with PHP’s EOS.
- We are dropping support for PHP 7.3 and adding support to PHP 8.0.
- PHP 7.3 to PHP 7.4 have breaking changes and incompatibilities
- Here is PHP’s official migration guide (https://www.php.net/manual/en/migration74.php)
- Backwards incompatibilities guide (https://www.php.net/manual/en/migration74.incompatible.php)
- PHP 7.4 to PHP 8.0 have breaking changes and incompatibilities
- Here is PHP’s official migration guide (https://www.php.net/manual/en/migration80.php)
- Backwards incompatibilities guide (https://www.php.net/manual/en/migration80.incompatible.php)
- PHP 7.3 to PHP 7.4 have breaking changes and incompatibilities
- We are adding support for Windows Server 2019.
- We are adding support to ElasticSearch 7.16.3.
Configurability updates
Sugar Logic
Dropdown Classification for Sales Stage
We have several SugarLogic functions that take into account the classification of your sales stages. if you have used these functions in custom calculations, and you change an existing sales stage’s classification, you will need to resave affected records or use list view’s “recalculate” option to reapply your calculating taking into account the change in stage classifications:
- {{isForecastClosed()}}: If sales_stage is in sales_stage_won OR sales_stage_lost
- {{isForecastClosedLost()}}: If sales_stage is only in sales_stage_lost
- {{isForecastClosedWon()}}: If sales_stage is only in sales_stage_won
- {{forecastSalesStages(Boolean $includeWon, Boolean $includeLost)}}: Returns list of sales stages with closed-won excluded if the first argument is false and closed-lost excluded if the second argument is false.
Sugar Catalog Server
no change.
SugarBPM
no change.
Studio
no change
Sugar Config Settings
Setting Name |
Default |
Override Example |
Description |
|
freeze_list_headers |
true |
$sugar_config[' freeze_list_headers'] = false |
Enable Persistent header for all the lists. | |
allow_freeze_first_column |
true |
$sugar_config[' allow_freeze_first_column '] = false |
|
Removed Features
none.
Data Changes
Added SugarPredict fields Natively to Sugar
We implemented 3 SugarPredict fields into Core Sugar. OOTB, these fields would be hidden, but available for the admin to add them to any layout. The fields would be activated when the user has Predict data. The three dropdown fields are ai_opp_conv_score_enum
in Opportunities, ai_conv_score_classification
and ai_icp_fit_score_classification
in Leads.
Add Market Score field to Natively to Sugar
Added a Sugar Market integer field called “market_score
” into Core Sugar to the Leads and Contacts modules. The field will appear in both, Sugar Market instances and non-Sugar Market instances. Data from Sugar Market syncs to Core Sugar for these two fields, but not the other way around.
Added Fields to Maintain Market Predict Score on Contacts and Leads
We added a new Dropdown field, “Market Interest Prediction
”, to Core Sugar in Contacts and Leads. Sell users will be able to see a Contact or Lead’s predict score and understand what their likelihood to convert to an Opportunity is based on a 1-5 score with 1 being Very Low and 5 being Very High. The field is available to be added on any Contacts or Leads Layout, but not available by default as not all Market customers have predict enabled.
Filesystem Changes
Ex. Changes to Sugar filesystem structure.
Platform Updates
Sidecar Check for License updates
In this release, you will have more ways to go deeper in the editions available and being used by the current user. You can use those constants below on the hasLicense method to check for a specific edition or use the helper methods introduced in this release.
- 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
const SUGAR_SELL_KEY = 'SUGAR_SELL'; const SUGAR_SELL_ESSENTIALS_KEY = 'SUGAR_SELL_ESSENTIALS'; const SUGAR_SELL_BUNDLE_KEY = 'SUGAR_SELL_BUNDLE'; const SUGAR_SELL_PREMIER_BUNDLE_KEY = 'SUGAR_SELL_PREMIER_BUNDLE'; const SUGAR_SELL_ADVANCED_BUNDLE_KEY = 'SUGAR_SELL_ADVANCED_BUNDLE'; const SUGAR_SERVE_KEY = 'SUGAR_SERVE'; const SUGAR_BASIC_KEY = 'CURRENT'; const SUGAR_HINT_KEY = 'HINT'; const SUGAR_PREDICT_ADVANCED_KEY = 'PREDICT_ADVANCED'; const SUGAR_PREDICT_PREMIER_KEY = 'PREDICT_PREMIER'; const SUGAR_CONNECT_KEY = 'CONNECT'; const SUGAR_DISCOVER_KEY = 'DISCOVER'; const SUGAR_MAPS_KEY = 'MAPS'; const SUGAR_ADVANCEDFORECAST_KEY = 'ADVANCEDFORECAST';
New easy to use helper methods are:
- hasConnectLicense()
- hasDiscoverLicense()
- hasHintLicense()
- hasMapsLicense()
- hasAdvancedForecastingLicense()
- hasPredictLicense()
- hasPredictAdvancedLicense()
- hasPredictPremierLicense()
DocMerge Available for Enterprise
In this release we are making DocMerge available to our Enterprise customers. As a recap, A common need among Sugar users is the ability to create letters, contracts, proposals, etc. DocMerge can be used to quickly create Microsoft Word templates that can be used to merge information from any module in Sugar.
DocuSign now part of Sugar Core
DocuSign Integration allows users to send documents such as quotes and contracts for electronic signatures directly from Sugar records. Signature status and the signed documents are maintained with their originating Sugar records, providing an uninterrupted workflow as users work within Sugar. Users can access the DocuSign integration through the DocuSign dashlet and through the Documents subpanel Actions menu.
CoudDrive now part of Sugar Core
Cloud Drive dashlet allows users to view their OneDrive or Google Drive folders and file names, upload new files, download files, open files, copy a link to the file, and create a Sugar document from a file. Users can create a new folder in OneDrive or Google Drive directly from the dashlet.
The Documents subpanel now has options to sync records to Google Drive or OneDrive, which will save the file to the folder that is currently displayed on the record view’s Cloud Drive dashlet. Admins can decide default paths for the dashlet on record view based on the module to keep files organized.
Sugar Maps now part of Sugar Core
Sugar Maps, using an integration with Microsoft Bing Maps, allows users to see records plotted on a dynamic map directly in SugarCRM. Using Maps, a user can plot a specific record, see driving directions from their address to a record, see driving directions from one record to another, and see the proximity of a record in relation to other records or in relation to a zip code. Using Maps data, users can also filter records by proximity to another record and proximity to a zip code.
Swap current custom predict Layouts to Stock SugarPredict Fields on Upgrade
We have made new stock SugarPredict fields. Customers who have already been enabled for predict have custom SugarPredict fields in their instances. Upon upgrade, we will replace the custom fields on layouts with the new stock fields. We will not, however, swap the old and new fields out on user-built capabilities including.
- Report definitions
- Saved filters
- SugarBPM definitions
- SugarLogic formulas
- List view dashlet filters and columns
Ability to mark Group Email Accounts as preferred sending accounts
Added a new checkbox field, “Preferred Sending Account“, to the OutboundEmail module. In the OutboundEmail module Record Layout, we’ll display a new panel under show more with the Teams and Preferred Sending Account fields. When composing an email from within Sugar, “From” displays Accounts they have favorited first in alphabetical order, followed by Preferred Sending Account in alphabetically order and finally, the rest of Accounts they have access to in alphabetically order.
Reduce footer and header heights
In this release there is a change to the footer dimensions in these UI updates. Footer height has been changed to 30px which translates to 1.875rem. Also keep all elements vertically aligned within that 30px height. As for headers, we reduced the height of the header bar area on Dashboards, Focus Drawers, Side panels, and all other places where dashlets exist.
Dropdown menus- remove borders and add box-shadow
Removed borderlines and surrounding border for the following Dropdown menus to mimic what dashlets look like:
- Megamenu
- Action button
- List view
- Dashlet toolbar
- Typeahead search results
Headerpane: Update list and record view headerpane to be similar to dashboards
We removed the background color on the side bar toggle button and the bottom border of the header panel.
Locking mechanism to prevent race conditions during QRR/Metadata rebuild
In this release we are introducing a locking mechanism to prevent racing conditions during few expensive operations to improve performance. Locking has been implemented on:
- QRR
- Metadata rebuild
- less->css compilation
Add PSALM as Dev Dependency
Psalm helps people maintain a wide variety of codebases – large and small, ancient and modern. On its strictest setting, it can help you prevent almost all type-related runtime errors, and enables you to take advantage of safe coding patterns popular in other languages.
Deprecated functions
none