SugarClub
SugarClub
  • User
  • Site
  • Search
  • User
  • Groups & Discussions
    Groups & Discussions
    • Product Forums
      Product-focused Q&A, discussions, best practices, fixes, and help
      Product Forums
      • Sugar Market
      • Sugar Sell & Enterprise
      • Sugar Serve
      • sales-i
    • User Groups
      Professional, Industry, Language
    • Get Involved
      Learn how to become a Raving Fan
    • Social Club
      Live, interactive, virtual meetups with other Sugar customers and Sugar’s Subject Matter experts!
    • Leadership Lounge
      Network with fellow organizational leaders, ask questions, and share insights
    • Developers
      Visit DevClub, the SugarClub group for Sugar Developers
      Developers
      • DevClub
      • Mobile Developers
      • Developer Builds
        Supplemental access level required. Inquiries: developers@sugarcrm.com
    • Additional Groups (Access Required)
      Groups that require special access will be displayed here. Contact sugarclub@sugarcrm.com for assistance. Click here to see all groups
      Additional Groups (Access Required)
      • SugarCloud Platform
  • Product Information
    Product Information
    • Release Central
      Find release-specific content to prepare for your next Sugar update
    • Documentation & Resources
      Looking to expand your Sugar knowledge? Explore our in-depth documentation and other helpful resources!
    • Product Update Blogs
      Updates about each Sugar product
    • Customer Stories »
      Case Studies by SugarCRM
  • Training & Certification
    Training & Certification
    • Training & Certification Home
      Live & On-Demand classes, Quick Videos, Sugar Certifications, and more!
    • Quick Videos
      Short videos about using Sugar
    • My SugarU Dashboard »
    • SugarU News & Updates
  • Adoption
    Adoption
    • Grow Adoption Framework
      Get started on your adoption journey and review the adoption resources from SugarCRM
  • Calendar
  • News
    News
    • Sugar News
    • SugarCRM.com News »
    • Dev Blog
    • SugarCRM Marketplace Blog
  • Help
    Help
    • Welcome to Sugar!
      New to Sugar? Get started here!
    • SugarClub Help & Instructions
      Learn more about SugarClub and find answers to questions about this site
    • New to SugarClub?
      Start your community journey here
    • Technical Support
      Sugar's support resources
      Technical Support
      • Case Portal »
        Access the SugarCRM Case Portal
      • Working with Sugar Support »
        Find out more about engaging with the SugarCRM Support team
      • SugarCloud Information
        Find information about SugarCloud service updates and site status. Contact sugarclub@sugarcrm.com to request access
  • More from Sugar
    More from Sugar
    • DevClub
    • PartnerClub
    • Support
    • SugarOutfitters Marketplace
    • sugarcrm.com
  • DevClub
  • PartnerClub
  • Support
  • Marketplace
  • sugarcrm.com
DevClub
DevClub
Dev Tutorials Sugar 12.3 (Q1 2023) Customization Guide
Click here to join this group and curate your SugarClub experience.
  • +On-Boarding Framework
  • -Customization Guides
    • Sugar 25.1 Customization Guide
    • Sugar 14.2 (Q4 2024) Customization Guide
    • Sugar 14.1 (Q3 2024) Customization Guide
    • Sugar 14.0 (Q2 2024) Customization Guide
    • Sugar 13.3 (Q1 2024) Customization Guide
    • Sugar 13.2 (Q4 2023) Customization Guide
    • Sugar 13.1 (Q3 2023) Customization Guide
    • Sugar 13.0 (Q2 2023) Customization Guide
  • +Modern UI Technical Guide
  • +Automated PHP Compatibility Tool
  • Did you know? Copying related records is a breeze!
  • How to write code for SugarCloud webinar Q&A
  • HOW TO: enforce ACL on Tags
  • Programatically manage Dropdown List
  • Remove custom fields created via package installation
  • Sugar Developer Tools
  • Tutorial:  How to register custom platforms in Sugar instances via Platform extension
  • Adding a google reCAPTCHA in a Web-to-Lead form
  • Sugar Developer Blog Style Guide

Sugar 12.3 (Q1 2023) Customization Guide

The purpose of this document is to provide insight to Sugar Developers for upgrading custom Sugar code, extensions, and integrations to the Sugar 12.3 (Q1 2023) release. This guide focuses on changes in Sugar 12.3 (Q1 2023) that could cause an immediate impact on Sugar customizations and integrations built for earlier Sugar versions.

Please check out the Q1 2023 Developer Webinar recording for more developer highlights. For Admin and End User release notes, please visit the Sugar 12.3.0 Release Notes.

User Experience Updates

Sidebar Navigation (UI Redesign)

Sugar is implementing a customer-inspired, research-based redesign of the user interface and navigation. This redesign gives you more visual real estate, serving up more relevant data at your fingertips to help increase your productivity and accelerate goal achievements. For that, Sugar has relocated MegaMenu from the top header to the left navigation, removed the footer, and updated module icons. All module icons are now consistent throughout the App and users can choose to display icons or letters for each module.

We have compiled a throughout Technical Guide with everything you need to know about this change.

Focus Drawer Tabs

With this release, we are introducing a new and improved way of working with focus drawers in Sugar i.e. “Focus Drawer Tabs”. Focus drawer tabs are a better way for Serve/Sell agents to easily view and obtain all the information related to any record within the focus drawers. 

With this new feature, each record link clicked in a focus drawer opens a new tab within the same focus drawer showing the record information in the record view. Clicking on the focus drawer icon in the focus drawer will also open a new tab with the focus dashboard view. Each focus drawer tab is identified with the corresponding module name and the name of the corresponding record. 

This new feature is a great way to increase productivity for Serve/Sell agents as they now can quickly view the details of any record link within the focus drawer without having to leave the focus drawer screen. Also, with the new focus drawer tabs, users can easily navigate to and fro across the tabs within the focus drawer without closing any of the opened focus drawer tabs. 

Console Usability Improvements 

In this release, we have done a number of console usability enhancements in order to improve the service and sell agent’s experience and our customer's ability to deliver superior sales & service experiences to their customers by bringing data to the agent instead of agents having to click around to find the information they need.

  • Agents will be able to resize the columns as per their needs whenever they want.
  • They will be able to click on any of the record links on the multiline list view & Overview tab to open the record view within the focus drawer on the console.
  • Enhanced the record view dashlets on the consoles such that the dashlet title is now clickable and clicking on the title opens the corresponding record view within the focus drawer on the consoles.
  • We have also enabled case number as a clickable link on the Service console case list view to make it easy for the service agent to access all the cases when they are working on the focus drawer on the service console.

Reports Viewer Improvements

In this release, we are implementing multiple feedbacks gathered since Sugar has introduced the Reports Viewer. The report improvements work consisted of: 

  • Resizable columns for Summation-type and Rows and Columns-type reports 
  • Improving User Interface based on customer requests 
  • Improving the performance of the reports 
  • Increasing consistency across the Reports Viewer and Reports Dashlet 
  • Backporting the important issues to earlier versions 

Module Names and Icons Improvements

In this release, we are introducing an improved module renaming functionality that improves our previous "Rename Modules" module in Sugar.

Aligning with Sugar's UI Redesign, Module Names and Icons, provides administrators with a new way of renaming modules by language and displaying icons or abbreviations in the new Sidebar/Rail menu.

SugarIcon Library Updates

SugarIcon library has been updated to include more icons. Those icons are also available in our Styleguide documentation. Developers should be able to reference the list of supported icons and usage instructions under Admin > Styleguide > Base CSS > Icons.s
sicon-sugar-u
sicon-document-lg
sicon-knowledgebase-xl
sicon-sugar-club

Sugar REST API updates

This Sugar release introduces REST v11_19.

Module Names and Icons Rest API endpoints

Added new endpoints to maintain Module Names and Icons (former Rename Modules) per language.

GET <sugar instance>/rest/v11_19/Administration/module-names-and-icons/:language 
PUT <sugar instance>/rest/v11_19/Administration/module-names-and-icons/:language

PHP Library Upgrades

Prepare for the Library Upgrades coming in 12.3 (Q1 2023)

We have put together a technical blog post with significant insights for you to prepare for those upgrades.

Doctrine DBAL (doctrine/dbal)

Doctrine DBAL provides Sugar with a powerful database abstraction layer with many features for database schema introspection, schema management, and PDO abstraction. There are breaking changes that may affect your customizations documented on DBAL's official upgrade notes.

doctrine/dbal ^2.13.2 → 3.3.7

Note: We are adding a new Health Check to prevent upgrades for DBAL customizations.

Monolog (monolog/monolog)

Sugar utilizes a PHP library called Monolog Monolog sends your logs to files, sockets, inboxes, databases, and various web services. In this release, we are upgrading its version to 2.8. 

There are breaking changes that may affect your customizations documented on DBAL's official upgrade notes.

monolog/monolog 1.22.0 →  ^2.8.0

Moontoast Math (moontoast/math)

Sugar utilizes a PHP library called Moontoast Math. Moontoast\Math is useful for working with integers that are larger than (or may become larger than, through mathematical computations) PHP's max integer value for a given system. In this release, we are replacing Moontoast\Math with Brick\Math as Moontoast has no support for the latest versions of PHP.

moontoast/math 1.22.0 →  brick/math@0.9.3

Guzzle (guzzlehttp/guzzle)

Sugar utilizes a PHP library called Guzzle. Guzzle is a PHP HTTP client that makes it easy to send HTTP requests and trivial to integrate with web services.

There are no known breaking changes in this upgrade, they are mostly newly generated modes and PHP version support.

guzzlehttp/guzzle 6.3.3 →  ^6.5.8

Smarty (smarty/smarty)

Sugar utilizes a PHP library called Smarty for rendering PDFs in PDF Manager and also for rendering HTML pages used by Backwards Compatibility (BWC) modules. In this release, we will be upgrading that library to version 4. There are breaking changes that may affect your customizations documented on Smarty's official upgrade notes. Sugar has managed to keep compatibility with previous versions, however, you should upgrade your customizations to be compatible with Smarty 4.x.

smarty/smarty 3.1.45 → ^4.2.0

Google PHP Client (google/apiclient)

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.9.2 → ^2.10.1

AWS SDK PHP (aws/aws-sdk-php)

AWS SDK PHP library enables Sugar to interact with AWS web services has been upgraded. Check out the CHANGELOG for more details.

aws/aws-sdk-php 3.183.13 → ^3.238.6

Laminas Mail (laminas/laminas-mail)

Laminas\Mail enables Sugar to compose and send both text and MIME-compliant multipart email messages. We've updated these libraries to the latest patch, there are no known breaking changes in this upgrade.

laminas/laminas-mail ^2.14.0 → ^2.16.0

The following packages were upgraded as transitive dependencies.

laminas/laminas-mime 2.7.4 → 2.10.0
laminas/laminas-stdlib 3.2.1 → 3.13.0
laminas/laminas-validator 2.13.4 → 2.25.0

PhpMailer (phpmailer/phpmailer)

PhpMailer provides Sugar with a full-featured email transfer class for PHP. We've updated these libraries to the latest patch, there are no known breaking changes in this upgrade, changes are documented in the CHANGELOG.

phpmailer/phpmailer v6.5.0 → ^6.6.4

Ramsey UUID (ramsey/uuid)

ramsey/uuid enables Sugar to generate and work with universally unique identifiers (UUIDs). We've updated these libraries to the latest patch, there are no known breaking changes in this upgrade.

ramsey/uuid 3.8.0 → ^3.8.0 (3.9.6)

Ultra-lite Container (ultra-lite/container)

ultra-lite/container is a PHP library for the dependency injection container. We've updated these libraries to the latest patch, there are no known breaking changes in this upgrade.

ultra-lite/container 6.2.0 → ^7.0.2

Beberlei Assert (beberlei/assert)

A simple PHP library that contains assertions and guard methods for input validation (not filtering!) in business- models, libraries, and application low-level code. We've updated these libraries to the latest patch, there are no known breaking changes in this upgrade changes are documented in the CHANGELOG.

beberlei/assert ^2.9.9 → ^v3.3.2

JS Library Upgrades

jQuery

In this release, we've updated jQuery to the latest patch, there are no known breaking changes in this upgrade.

jquery 3.6.0 → ^3.6.0

Underscore.js

In this release, we've updated Underscore.js to the latest patch, there are no known breaking changes in this upgrade.

underscore 1.13.1 → ^1.13.6

Moment.js

In this release, we've updated Moment.js to the latest patch, there are no known breaking changes in this upgrade.

moment 2.10.6 → ^2.29.0

Chart.js

In this release, we've updated Chart.js to the latest patch, there are no known breaking changes in this upgrade.

chartjs 3.6.1 → 3.9.1

TinyMCE

In this release, we've upgraded TinyMCE to its latest supported version. There were a considerable amount of changes taken care of by our team.

The list of changes can be found in this comparison between versions.

tinymce 4.9.11 → 6.2.0

SugarCRM Ventana

Ventana is being bumped up to 1.1.14 and it has been upgraded to Sugar 12.3 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

Calculated Dropdown Fields

In this release, we added the ability to use Sugar Logic on fields of data type “Dropdown” by making these fields Calculated.

Admins will be able to streamline different business processes without the need to write any code or use SugarBPM.

Results coming out SugarLogic will be written to the database and Sugar will not validate the result, if the result isn't a valid option in the DOM for that dropdown list, it will display as a blank field in the record view due to no matches.

Sugar Config Settings

Setting Name

Default

Override Example

Description

maxPinnedModules 4 $sugar_config['maxPinnedModules'] = 6; admins can change the config property to show more/less number of icons in the sidebar-nav

Removed Functions / Libraries / Features

Removal of Laminas Bridge

The Laminas Zendframework Bridge (laminas/laminas-zendframework-bridge) has been removed as it was a dependency from laminas mail and no longer is in use.

Multiple Dead code were 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.

Platform Updates

SugarAutomate has migrated from an MLP to core sugar code.

In this release, SugarAutomate (formerly CJP) is no longer an MLP and is now officially part of the core code in Sugar Sell, Serve, and Enterprise.

The upgrade script when migrating the 12.3 will remove the old Automate MLP so that there are no conflicts with the new 12.3 code. The experience for Automate MLP users and Automate 12.3 and higher users will be identical. Additionally, users without the Automate license enabled will not see any difference in the Sugar user interface. Smart Guide modules/fields are not available for Non-Automate users.

MySQL 8.0.31 Compatibility Fix

In this release, we are fixing a parenthesis compatibility issue specific to MySQL v8.0.31 that would fail with error: MySQL error 1250: Table 'job_queue' from one of the SELECTs cannot be used in global ORDER clause.

Note: This fix will be backported to versions 11.0.x and 12.0.x of Sugar.

SugarOutfitters Links

In this release, we are adding links to SugarOutfitters for administrators and end-users.

As an administrator, I would like to be aware of and discover the SugarOutfitters marketplace as an easy way to extend, configure, or customize my Sugar instance (Added a new Link for SugarOutfitters to the Developer Tools panel)

As a Sugar user, I would like to know how to find add-ons and extensions that can help me get my work done and make Sugar more valuable to me so we would like to add the SugarOutfitters link to the Help icon in the sidebar nav 

Profile and Browser Time Zones Always in Sync

When browser and user profile timezone are different, we’ll automatically update profile timezone to match browser timezone.  

User’s will no longer see discrepancies between their browser and user profile timezone. When users log into their Sugar instance and their browser time differs from their user profile timezone, we will automatically update their profile timezone and notify the user of this change.  

More information about scheduled jobs

In order to provide more information to admins and developers, additional columns have been added to the Schedulers module. The additional columns will surface details about scheduled jobs successes or failures. 

Add language dropdown to Sugar's login Screen

With the removal of the footer, the language dropdown has been removed and moved to the Login screen and the Mobile web link was added to the left of it.

Add support of Strict RFC compliant redirects to ExternalResourceClient

Strict RFC-compliant redirects mean that POST redirect requests are sent as POST requests vs. doing what most browsers do (for 301 and 302) which is redirect POST requests with GET requests. There are multiple types of redirects:

301 Moved Permanently
302 Found
303 See Other
307 Temporary Redirect
08 Permanent Redirect

Note: For 307 and 308 redirects browsers follow RFC while ExtrernalResourceClient treats them similarly to 301 and 302.

Compile list of boost values for all fields across all modules

In order to assess how to adjust the out-of-the-box global search boost values, we need a comprehensive list of all the fields currently configured for search and what the boost value is.

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
new Sugar CLI command, "elastic:show_boost_values", to show boost values for fts enabled fields for modules.
usage:
bin/sugarcrm elastic:show_boost_values -h
Description:
show boost values for fts enabled fields for modules
Usage:
elastic:show_boost_values [options]
Options:
--modules=MODULES Comma separated list of modules to search.
-h, --help Display help for the given command. When no command is given display help for the list command
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi|--no-ansi Force (or disable --no-ansi) ANSI output
-n, --no-interaction Do not ask any interactive question
--profile Display timing and memory usage information
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
new Sugar CLI command, "elastic:show_boost_values", to show boost values for fts enabled fields for modules.

usage:
bin/sugarcrm elastic:show_boost_values -h
Description:
show boost values for fts enabled fields for modules

Usage:
elastic:show_boost_values [options]

Options:
--modules=MODULES Comma separated list of modules to search.
-h, --help Display help for the given command. When no command is given display help for the list command
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi|--no-ansi Force (or disable --no-ansi) ANSI output
-n, --no-interaction Do not ask any interactive question
--profile Display timing and memory usage information
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Reset password email with a reset link it instead of a temporary password

In this release, we fixed an issue when resetting a password for a user, for instances that are not IDM enabled, they are receiving a temporary password instead.

Path Validation when including PHP files

In this release, we started the process to replace direct include files to use FileLoader::validateFilePath as part of our larger commitment to have a central place of control on all direct file inclusions, where the filename is not literal, for example:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// With
require FileLoader::validateFilePath("{$foo}/bar.php");
require_once FileLoader::validateFilePath("{$foo}/bar.php");
// Replace.
include "{$foo}/bar.php";
include_once "{$foo}/bar.php";
// With
try {
include FileLoader::validateFilePath("{$foo}/bar.php");
} catch (\Throwable $e) {
LoggerManager::getLogger()->fatal("'include' failed with error: " . $e->getMessage());
}
try {
include_once FileLoader::validateFilePath("{$foo}/bar.php");
} catch (\Throwable $e) {
LoggerManager::getLogger()->fatal("'include' failed with error: " . $e->getMessage());
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
// With
require FileLoader::validateFilePath("{$foo}/bar.php");
require_once FileLoader::validateFilePath("{$foo}/bar.php");

// Replace.
include "{$foo}/bar.php";
include_once "{$foo}/bar.php";

// With
try {
   include FileLoader::validateFilePath("{$foo}/bar.php");
} catch (\Throwable $e) {
   LoggerManager::getLogger()->fatal("'include' failed with error: " . $e->getMessage());
}

try {
   include_once FileLoader::validateFilePath("{$foo}/bar.php");
} catch (\Throwable $e) {
   LoggerManager::getLogger()->fatal("'include' failed with error: " . $e->getMessage());
}

  • Sugar 12.3
  • Sugar Q1 2023
  • 0 comments
  • 0 members are here
  • Sign in to reply
Related
Recommended