<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://sugarclub.sugarai.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Sugar 25.2 Customization Guide</title><link>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/1013/sugar-25-2-customization-guide</link><description /><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><item><title>Sugar 25.2 Customization Guide</title><link>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/1013/sugar-25-2-customization-guide</link><pubDate>Wed, 01 Oct 2025 18:31:31 GMT</pubDate><guid isPermaLink="false">5c521d64-519d-47a6-9065-134618b211bf:3307f36c-90a1-4f3c-b6a7-d6d6641bf5cb</guid><dc:creator>Rafael Fernandes</dc:creator><comments>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/1013/sugar-25-2-customization-guide#comments</comments><description>Current Revision posted to Dev Tutorials by Rafael Fernandes on 10/1/2025 6:31:31 PM&lt;br /&gt;
&lt;p&gt;The purpose of this document is to provide insight to Sugar Developers for upgrading custom Sugar code, extensions, and integrations to the Sugar 25.2 release. This guide focuses on changes in&amp;nbsp;&lt;span&gt;Sugar 25.2&lt;/span&gt;&amp;nbsp;that could cause an immediate impact on Sugar customizations and integrations built for earlier Sugar versions.&lt;/p&gt;
&lt;p&gt;Please check out the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="/dev-club/m/event-recaps/3045"&gt;Sugar 25.2 Developer Webinar recording&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;for more developer highlights.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;For Admin and End User release notes, please visit the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Release_Notes/25.2.0_Release_Notes/"&gt;Sugar 25.2.0 Release Notes&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1ff80k9i32"&gt;User Experience Updates&lt;/h2&gt;
&lt;h3 id="mcetoc_1gb30ctl1e"&gt;&lt;span style="font-size:inherit;"&gt;&lt;span class="TextRun SCXW218900661 BCX0" lang="EN" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW218900661 BCX0" data-ccp-parastyle="heading 2"&gt;Modernized Dropdown Editor&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-start="232" data-end="471"&gt;In this release, we&amp;rsquo;ve modernized the Dropdown Editor UI, transitioning from BWC to Sidecar for a cleaner, more streamlined admin experience. Admins can now manage entire dropdown lists from a single view&amp;mdash;no more editing one row at a time.&lt;/p&gt;
&lt;p data-start="115" data-end="326"&gt;&lt;strong data-start="328" data-end="343"&gt;What&amp;rsquo;s new:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li data-start="115" data-end="326"&gt;
&lt;p&gt;&lt;strong data-start="492" data-end="516"&gt;Redesigned Interface&lt;/strong&gt;: New Sidecar layout with updated header, inline editing, and consistent list view styling. Supports dark mode.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="115" data-end="326"&gt;
&lt;p&gt;&lt;strong&gt;Formatting Flow Fix &amp;amp; Toggle Control:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Chart colors no longer drive dropdown styling; instead, formatting is now defined at the dropdown level and pushed to charts for consistency..&lt;/p&gt;
&lt;ul&gt;
&lt;li data-start="296" data-end="364"&gt;
&lt;p data-start="298" data-end="364"&gt;New&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="302" data-end="337"&gt;&amp;quot;Enable formatting in dropdown&amp;quot;&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;toggle added per dropdown.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="367" data-end="486"&gt;
&lt;p data-start="369" data-end="486"&gt;Toggle is&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="379" data-end="401"&gt;enabled by default&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;for:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="407" data-end="424"&gt;sales_stage_dom&lt;/code&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="426" data-end="443"&gt;quote_stage_dom&lt;/code&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="445" data-end="462"&gt;case_status_dom&lt;/code&gt;, and&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="468" data-end="485"&gt;lead_status_dom&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="489" data-end="580"&gt;
&lt;p data-start="491" data-end="580"&gt;When&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="496" data-end="508"&gt;disabled&lt;/strong&gt;, formatting is hidden in the UI but preserved and still used in charts.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="583" data-end="683"&gt;
&lt;p data-start="585" data-end="683"&gt;When&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="590" data-end="601"&gt;enabled&lt;/strong&gt;, users can customize styles (colors, fonts) via the conditional formatting panel.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="686" data-end="803"&gt;
&lt;p data-start="688" data-end="803"&gt;Chart colors fallback to the chart palette for items without formatting; white and black are excluded and replaced.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Conditional Formatting&lt;/strong&gt;: New Conditional Format Options control panel that allows&lt;span&gt;&amp;nbsp;users to customize the appearance of dropdown values using styles, icons, and colors&lt;/span&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The following stock/out-of-the-box dropdowns were predefined with conditional formatting for awareness and usability:&amp;nbsp;&lt;code&gt;sales_stage_dom&lt;/code&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;quote_stage_dom&lt;/code&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;case_status_dom&lt;/code&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;lead_status_dom&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Formatting will be reflected as soon as saved on List View, Record View, Focus Drawer, Reports, Other components using the dropdown values, All views in sugar&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Even if user selects RGB, we only reflect Hex number in the input&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong data-start="630" data-end="646"&gt;Add New Rows&lt;/strong&gt;: Easily add multiple items with editable fields for Display Label and Classification (for&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="737" data-end="754"&gt;sales_stage_dom&lt;/code&gt;). Only completed rows are saved.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="790" data-end="897"&gt;
&lt;p&gt;&lt;strong data-start="790" data-end="809"&gt;Improved Search&lt;/strong&gt;: Real-time search across Item Name and Display Label fields with partial match support.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="900" data-end="1048"&gt;
&lt;p&gt;&lt;strong data-start="900" data-end="922"&gt;Restore to Default&lt;/strong&gt;: Revert dropdowns to their original out-of-the-box (OOTB) state, including default sort order. Available only for OOTB lists.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1051" data-end="1148"&gt;
&lt;p&gt;&lt;strong data-start="1051" data-end="1084"&gt;Bulk Editing &amp;amp; Reduced Clicks&lt;/strong&gt;: Edit multiple rows at once and save all changes in one action.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1151" data-end="1272"&gt;
&lt;p&gt;&lt;strong data-start="1151" data-end="1176"&gt;Sort by Display Label&lt;/strong&gt;: New sort button allows ascending/descending sort; order persists across sessions and is saved.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1275" data-end="1392"&gt;
&lt;p&gt;&lt;strong data-start="1275" data-end="1304"&gt;Inline Editing &amp;amp; Deletion&lt;/strong&gt;: Edit Display Label and Classification fields directly; delete items with confirmation.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1395" data-end="1487"&gt;
&lt;p&gt;&lt;strong data-start="1395" data-end="1423"&gt;Drag-and-Drop Reordering&lt;/strong&gt;: Rearrange items via drag-and-drop. Changes are saved on click.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1490" data-end="1579"&gt;
&lt;p&gt;&lt;strong data-start="1490" data-end="1516"&gt;Unsaved Change Warning&lt;/strong&gt;: Users are prompted before navigating away from unsaved edits.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Devs can still define&amp;nbsp;custom styles (e.g.,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;backgroundColor, textColor, icon, iconColor&lt;/code&gt;) for dropdown fields using extension framework (&lt;code&gt;custom/application/Ext/DropdownsStyle/dropdowns_style.ext.php&lt;/code&gt;).&lt;/p&gt;
&lt;h3 id="mcetoc_1gb30ctl1e"&gt;Adding support to Shared Drive files on Google Drive&lt;/h3&gt;
&lt;p data-start="232" data-end="471"&gt;The Google Drive connector for Sugar has been enhanced to support access to shared files. Users can now interact with files that are shared with them or located in Shared Drives. This includes the ability to set a Shared Drive as the root path, define variable file paths on record views, and seamlessly navigate through folders within Shared Drives. Additionally, users can switch between viewing files in &amp;quot;My Files,&amp;quot; &amp;quot;Shared with me,&amp;quot; and Shared Drives. If a user attempts to access a Shared Drive they do not have permission to view, a message will appear within the dashlet indicating the lack of access, with the option to navigate to an accessible area instead.&lt;/p&gt;
&lt;div&gt;
&lt;div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn"&gt;
&lt;div class="relative flex-col gap-1 md:gap-3"&gt;
&lt;h3 id="mcetoc_1j5hknrrm0"&gt;Enable Row-Level Actions in List View Dashlets&lt;/h3&gt;
&lt;div&gt;
&lt;div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn"&gt;
&lt;div class="relative flex-col gap-1 md:gap-3"&gt;
&lt;div class="flex max-w-full flex-col grow"&gt;
&lt;div dir="auto" data-message-author-role="assistant" data-message-id="e60a4390-8308-4251-a10b-5a6239bb908d" data-message-model-slug="gpt-4o"&gt;
&lt;div class="markdown prose dark:prose-invert w-full break-words dark"&gt;
&lt;p data-start="19" data-end="705" data-is-last-node="" data-is-only-node=""&gt;In this release, we&amp;#39;ve&amp;nbsp;added row-level actions on List view dashlets, enabling users to take immediate action on records directly within dashboards and Focus Drawers. This improvement aligns with Sugar&amp;rsquo;s goal of&amp;nbsp;UX efficiency, reducing clicks and streamlining workflows. The available actions now mirror those found in the standard module list views, using the familiar action menu design for consistency. The preview option has been intentionally excluded to suit the context of dashlets.&lt;/p&gt;
&lt;div&gt;
&lt;div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn"&gt;
&lt;div class="relative flex-col gap-1 md:gap-3"&gt;
&lt;div class="flex max-w-full flex-col grow"&gt;
&lt;div dir="auto" data-message-author-role="assistant" data-message-id="269059f9-331f-43d5-a7e5-913f02e20322" data-message-model-slug="gpt-4o"&gt;
&lt;div class="markdown prose dark:prose-invert w-full break-words dark"&gt;
&lt;p data-start="671" data-end="888" data-is-last-node="" data-is-only-node=""&gt;&lt;strong data-start="671" data-end="680"&gt;Note:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;This functionality has been implemented as a new plugin and integrated into relevant views. Custom or extended views that include inline editing may require a review to ensure compatibility with this update.&lt;/p&gt;
&lt;h3 id="mcetoc_1j5hknrrm1"&gt;Opportunity&amp;nbsp;Delta&amp;nbsp;in List and Record Views&lt;/h3&gt;
&lt;div&gt;
&lt;div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn"&gt;
&lt;div class="relative flex-col gap-1 md:gap-3"&gt;
&lt;div class="flex max-w-full flex-col grow"&gt;
&lt;div dir="auto" data-message-author-role="assistant" data-message-id="e60a4390-8308-4251-a10b-5a6239bb908d" data-message-model-slug="gpt-4o"&gt;
&lt;div class="markdown prose dark:prose-invert w-full break-words dark"&gt;
&lt;p&gt;To improve visibility into how opportunities evolve over time, we&amp;#39;ve introduced a new&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;Change Over Time&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;dropdown labeling &amp;quot;Show changes&amp;quot; across Opportunity list views (module and subpanels), record views, and dashlets (LV &amp;amp; RV). This enables sellers and managers to quickly see cumulative changes without piecing together discrete audit log entries.&lt;/p&gt;
&lt;p data-start="518" data-end="535"&gt;&lt;strong data-start="518" data-end="535"&gt;Key Features:&lt;/strong&gt;&lt;/p&gt;
&lt;ul data-start="536" data-end="941"&gt;
&lt;li data-start="536" data-end="650"&gt;
&lt;p data-start="538" data-end="650"&gt;&lt;strong data-start="538" data-end="576"&gt;New Time-Based Comparison Dropdown&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;with four options:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="596" data-end="602"&gt;None&lt;/code&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="604" data-end="617"&gt;Last 7 days&lt;/code&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="619" data-end="633"&gt;Last 14 days&lt;/code&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="635" data-end="649"&gt;Last 30 days&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="651" data-end="736"&gt;
&lt;p data-start="653" data-end="736"&gt;Compares current opportunity data to its value at the end of the selected past day.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="737" data-end="835"&gt;
&lt;p data-start="739" data-end="765"&gt;Highlights value changes in::&lt;/p&gt;
&lt;ul data-start="768" data-end="835"&gt;
&lt;li data-start="768" data-end="787"&gt;
&lt;p data-start="770" data-end="787"&gt;&lt;strong data-start="770" data-end="787"&gt;Likely Amount&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="790" data-end="815"&gt;
&lt;p data-start="792" data-end="815"&gt;&lt;strong data-start="792" data-end="815"&gt;Expected Close Date&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="818" data-end="835"&gt;
&lt;p data-start="820" data-end="835"&gt;&lt;strong data-start="820" data-end="835"&gt;Sales Stage&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul data-start="965" data-end="1259"&gt;
&lt;li data-start="965" data-end="1068"&gt;
&lt;p data-start="967" data-end="1068"&gt;Selection is&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="980" data-end="999"&gt;sticky per view&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(e.g., list view and record view can maintain independent settings).&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1069" data-end="1189"&gt;
&lt;p data-start="1071" data-end="1189"&gt;When navigating using the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="1097" data-end="1111"&gt;focus icon&lt;/strong&gt;, the source view&amp;rsquo;s selection is respected and carried to the target dashlets.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1190" data-end="1259"&gt;
&lt;p data-start="1192" data-end="1259"&gt;If no prior context exists, the default selection is&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="1245" data-end="1258"&gt;Last 7 days&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;This feature leverages historical data available through Sugar&amp;#39;s Enhanced Forecasting and is only available to customers with the Opportunities dataset. For customers without this dataset, the feature will not be functional.&lt;/p&gt;
&lt;h3 id="mcetoc_1iv0j7tfp2" data-start="83" data-end="136"&gt;Add Transcription, Recording, and Summary fields on the Meetings module&lt;/h3&gt;
&lt;p&gt;&lt;span&gt;We&amp;#39;re improving Meetings module in this release by adding transcription, recording and summary fields to the record view in view/edit modes.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1j5hknrrm2"&gt;&lt;span&gt;Dynamic Record View Dashlet Rendering for Flex Relate Fields in Focus Drawer&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;Enhanced the Focus Drawer experience by enabling dynamic rendering (new tab) of related records defined via flex relate (&amp;quot;Relate To&amp;quot;) fields within a Record View Dashlet. Users can now configure a dashlet to automatically display the appropriate related record based on the selected module and record in the flex relate field without needing to manually toggle between module tabs. This&amp;nbsp;improves context access and ensures only relevant record views are shown, improving usability and efficiency when working across related modules.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="mcetoc_1i7u16d9e5"&gt;&lt;span&gt;&lt;span class="TextRun SCXW118627354 BCX0" lang="EN-US" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW118627354 BCX0" data-ccp-parastyle="heading 2"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="NormalTextRun SCXW249156672 BCX0"&gt;&lt;/span&gt;&lt;/span&gt;Sugar REST API updates&lt;/h2&gt;
&lt;p&gt;This Sugar release introduces REST&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;code&gt;v11_27&lt;/code&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id="mcetoc_1gjpkca900"&gt;Dropdown Editor&lt;/h3&gt;
&lt;p&gt;Set details of dropdown.&lt;/p&gt;
&lt;div class="content-scrollable-wrapper"&gt;
&lt;pre&gt;PUT &amp;lt;sugar instance&amp;gt;/rest/v11_27/Administration/dropdownEditor/:dropdownName&lt;/pre&gt;
&lt;p&gt;Get details of dropdown that can be changed.&lt;/p&gt;
&lt;div class="content-scrollable-wrapper"&gt;
&lt;pre&gt;GET &amp;lt;sugar instance&amp;gt;/rest/v11_27/Administration/dropdownEditor/:dropdownName&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Create Dropdown DOM issue as a php-file in customer storage directory.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;div class="content-scrollable-wrapper"&gt;
&lt;pre&gt;POST &amp;lt;sugar instance&amp;gt;/rest/v11_27/Administration/dropdownEditor/create&lt;/pre&gt;
&lt;h3 id="mcetoc_1gjpkca900"&gt;Enhancements to&amp;nbsp;Package Builder APIs&amp;rsquo; error handling&lt;/h3&gt;
&lt;p&gt;We have improved our Package Builder API for clear and consistent error codes that are returned for known failure scenarios.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong data-renderer-mark="true"&gt;For Example:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;200 OK, 201 Created, 400 Bad Request, 404 Not Found, 500 Internal Server Error.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul class="ak-ul" data-indent-level="1"&gt;
&lt;li&gt;
&lt;p data-renderer-start-pos="402"&gt;Error messages include actionable context (e.g., missing fields, invalid formats, unsupported package types)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul class="ak-ul" data-indent-level="1"&gt;
&lt;li&gt;
&lt;p data-renderer-start-pos="516"&gt;All existing error-prone areas are covered (e.g., input validation, external service failures, internal exceptions)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul class="ak-ul" data-indent-level="1"&gt;
&lt;li&gt;
&lt;p data-renderer-start-pos="637"&gt;Fallbacks or default behaviors are implemented where appropriate&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul class="ak-ul" data-indent-level="1"&gt;
&lt;li&gt;
&lt;p data-renderer-start-pos="707"&gt;Errors follow our API error response standard (e.g., HTTP status codes, message structure)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The following endpoints were improved:&lt;/p&gt;
&lt;pre&gt;POST &amp;lt;sugar instance&amp;gt;/rest/v11_27/Administration/package/customizations&lt;br /&gt;&lt;br /&gt;POST &amp;lt;sugar instance&amp;gt;/rest/v11_27/Administration/package&lt;br /&gt;&lt;br /&gt;GET &amp;lt;sugar instance&amp;gt;/rest/v11_27/Administration/package/id&lt;br /&gt;&lt;br /&gt;POST &amp;lt;sugar instance&amp;gt;/rest/v11_27/Administration/package/remote&lt;br /&gt;&lt;br /&gt;POST &amp;lt;sugar instance&amp;gt;/rest/v11_27/Administration/package/data&lt;br /&gt;&lt;br /&gt;POST &amp;lt;sugar instance&amp;gt;/rest/v11_27/Administration/package/getRemotePackages&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;h3 id="mcetoc_1gjpkca900"&gt;Historical Deltas API&lt;/h3&gt;
&lt;p&gt;Retrieves historical delta changes for a module based on a timestamp and list of records.&lt;/p&gt;
&lt;div class="content-scrollable-wrapper"&gt;
&lt;pre&gt;POST &amp;lt;sugar instance&amp;gt;/rest/v11_27/historically/delta&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1ff80k9i33"&gt;&lt;code&gt;&lt;/code&gt;&lt;/h3&gt;
&lt;h3 id="mcetoc_1ff80k9i33"&gt;&lt;code&gt;&lt;/code&gt;&lt;/h3&gt;
&lt;h2 id="mcetoc_1ftl03hrg6"&gt;&lt;span style="font-size:inherit;"&gt;PHP Library Upgrades&lt;/span&gt;&lt;/h2&gt;
&lt;h3 id="mcetoc_1iuf1asts0"&gt;Upgrade PHP libs to the latest Minor versions without breaking changes&lt;/h3&gt;
&lt;p&gt;In this release, we&amp;#39;ve updated all minor and patch versions of our PHP libraries as declared in the composer. Since these are minor and patch updates, no breaking changes are expected. The updates primarily include newly generated models and improved PHP version compatibility.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;aws/aws-sdk-php             3.342.19 AWS SDK for PHP - Use Amazon Web Services in your PHP project
doctrine/dbal               3.9.4    Powerful PHP database abstraction layer (DBAL) with many features for da...
egulias/email-validator     4.0.4    A library for validating emails against several RFCs
guzzlehttp/guzzle           7.9.3    Guzzle is a PHP HTTP client library
laminas/laminas-escaper     2.16.0   Securely and safely escape HTML, HTML attributes, JavaScript, CSS, and URLs
league/oauth2-client        2.8.1    OAuth 2.0 Client Library
microsoft/microsoft-graph   2.29.0   The Microsoft Graph SDK for PHP
rector/rector               2.0.11   Instant Upgrade and Automated Refactoring of any PHP code
rlanvin/php-rrule           2.5.2    Lightweight and fast recurrence rules for PHP (RFC 5545)&lt;/pre&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1gj2kiufk0"&gt;PHP-Parser&lt;/h3&gt;
&lt;p&gt;&lt;span&gt;Sugar utilizes a&amp;nbsp;PHP library called&amp;nbsp;&lt;a href="https://github.com/nikic/PHP-Parser/tree/master"&gt;PHP-Parser&lt;/a&gt;&amp;nbsp;Its purpose is to simplify static code analysis and manipulation.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;There are major internal changes in this library, if you use them, please refer to this library&amp;rsquo;s upgrade procedure&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://github.com/nikic/PHP-Parser/blob/master/UPGRADE-5.0.md"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;div class="content-scrollable-wrapper"&gt;
&lt;pre&gt;nikic/php-parser &amp;rarr; ^v5.4.0&lt;/pre&gt;
&lt;/div&gt;
&lt;h3 id="mcetoc_1gj2kiufk0"&gt;&lt;/h3&gt;
&lt;div&gt;&lt;/div&gt;
&lt;h2 id="mcetoc_1ff80k9i33"&gt;&lt;span style="font-size:inherit;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;JS Library Upgrades&lt;/h2&gt;
&lt;div class="content-scrollable-wrapper"&gt;
&lt;h3 id="mcetoc_1fda51lpf4"&gt;Low to Minimum Impact&amp;nbsp;Upgrade on various JS&amp;nbsp;libraries&lt;/h3&gt;
&lt;p&gt;We have performed a patch upgrade on several JavaScript libraries used within our codebase. These upgrades are considered low to minimum impact and should not affect Sugar developers in any meaningful way. Most of the components upgraded are used for internal build processes or tooling.&lt;/p&gt;
&lt;p&gt;There are no known breaking changes associated with these updates.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;@babel/core -&amp;gt; 7.27.4
@sugarcrm/ventana -&amp;gt; 1.1.19
handlebars -&amp;gt; 4.7.8-sugarcrm
babel-loader -&amp;gt; 9.2.1
bootstrap  -&amp;gt; 5.3.7
gulp -&amp;gt; 5.0.1
jquery-migrate -&amp;gt; 3.5.2
sinon -&amp;gt; 21.0.0
tailwindcss -&amp;gt; 3.4.17
underscore -&amp;gt; 1.13.7
webpack -&amp;gt; 5.99.9
eslint-plugin-import -&amp;gt; 2.31.0
cure53/DOMPurify -&amp;gt; 3.2.6
stylelint-config-standard -&amp;gt; 38.0.0&lt;/pre&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1j5hknrrm3"&gt;&lt;span&gt;DOMPurify JS Library&lt;/span&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn"&gt;
&lt;div class="relative flex-col gap-1 md:gap-3"&gt;
&lt;div class="flex max-w-full flex-col grow"&gt;
&lt;div dir="auto" data-message-author-role="assistant" data-message-id="8778637e-7a32-4e7c-a539-f7b8b9aba45c" data-message-model-slug="gpt-4o"&gt;
&lt;div&gt;
&lt;div class="markdown prose dark:prose-invert w-full break-words dark"&gt;
&lt;p data-start="19" data-end="397" data-is-last-node="" data-is-only-node=""&gt;The DOMPurify library is now integrated as a standard dependency, replacing the previously used forked version. This update improves the maintainability and transparency of the codebase by aligning with standard package management practices. Functionality that relies on DOMPurify remains unchanged, and the library is properly bundled and referenced throughout the application.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="mcetoc_1iipslfhq0"&gt;Supported Platforms Update&lt;/h2&gt;
&lt;h3 id="mcetoc_1j5hknrrm4"&gt;&lt;span style="font-size:inherit;"&gt;Support for OAuth 2.0 token-based authorization with Exchange Online and Sugar email functions&lt;/span&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn"&gt;
&lt;div class="relative flex-col gap-1 md:gap-3"&gt;
&lt;div class="flex max-w-full flex-col grow"&gt;
&lt;div dir="auto" data-message-author-role="assistant" data-message-id="7e91f8eb-92d0-42d3-9eb4-8e0f56738542" data-message-model-slug="gpt-4o"&gt;
&lt;div class="markdown prose dark:prose-invert w-full break-words dark"&gt;
&lt;p data-start="97" data-end="525"&gt;Sugar now supports sending emails via Microsoft Exchange Online using OAuth 2.0, in alignment with&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://learn.microsoft.com/en-us/answers/questions/2202498/basic-authentication-for-smtp-deprecation"&gt;Microsoft&amp;rsquo;s announcement to permanently disable Basic Authentication for SMTP AUTH in Exchange Online starting September 2025.&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;This enhancement ensures continued compatibility and improved security by allowing outbound email functionality to operate without relying on SMTP when using Microsoft OAuth 2.0.&lt;/p&gt;
&lt;p data-start="527" data-end="849"&gt;With this update, when an outbound email account is configured using Microsoft OAuth 2.0, Sugar will send emails through the Microsoft Graph API instead of SMTP. This change is specific to Exchange Online accounts using Microsoft OAuth and does not impact other connection types, such as username/password or Google OAuth.&lt;/p&gt;
&lt;p data-start="851" data-end="1247"&gt;To enable this functionality, administrators must register an application in Azure with the necessary API permissions (Mail.Send, Mail.Read, IMAP.AccessAsUser.All, offline_access) and configure the Microsoft connector in Sugar with the application&amp;#39;s client ID and secret. Once authorized, the email status will indicate successful authentication, allowing emails to be sent using the new method.&lt;/p&gt;
&lt;p data-start="1249" data-end="1596"&gt;This transition will occur automatically, requiring no action from customers. However, the shift to the Microsoft Graph API will require adjusting OAuth scopes,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;necessitating users to re-authorize their email accounts in Sugar&lt;/strong&gt;.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn"&gt;
&lt;div class="relative flex-col gap-1 md:gap-3"&gt;
&lt;div class="flex max-w-full flex-col grow"&gt;
&lt;div dir="auto" data-message-author-role="assistant" data-message-id="7e91f8eb-92d0-42d3-9eb4-8e0f56738542" data-message-model-slug="gpt-4o"&gt;
&lt;div&gt;
&lt;div class="markdown prose dark:prose-invert w-full break-words dark"&gt;
&lt;p data-start="1249" data-end="1596"&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;This improvement has been backported to&amp;nbsp;Sugar&amp;nbsp;25.1.x.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="mcetoc_1ff80k9i33"&gt;Configurability&amp;nbsp;updates&lt;/h2&gt;
&lt;h3 id="mcetoc_1iv0j7tfp1"&gt;&lt;a id="Improved_Control_Over_Field_Updates_by_Proces_Definitions"&gt;&lt;/a&gt;Improved Control Over Field Updates by Process Definitions&lt;/h3&gt;
&lt;p&gt;We are enhancing the control over the fields that can be modified by Process Definitions. By default, only fields that are visible in the user interface will be eligible for updates. Fields not exposed on the frontend will no longer be modified automatically by these processes, in other words, if the field is available to be added to any UI it means it is exposed, doesn&amp;#39;t necessarily mean it has be in a Record View for example.&lt;/p&gt;
&lt;p data-start="74" data-end="312"&gt;For teams needing more specific behavior, it&amp;rsquo;s now possible to configure a denylist of fields that should not be updated by Process Definitions. This provides greater flexibility and precision in how automation interacts with your data. You can define this using a new&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="346" data-end="361"&gt;$sugar_config&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;setting. For example, the configuration below prevents&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="417" data-end="435"&gt;field_to_block_1&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="440" data-end="458"&gt;field_to_block_2&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;ModuleName1&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;from being updated by Process Definitions:&lt;/p&gt;
&lt;p data-start="504" data-end="747"&gt;&lt;pre class="ui-code" data-mode="php"&gt;$sugar_config[&amp;#39;bpm_denylisted_fields&amp;#39;] = [
  &amp;#39;ModuleName1&amp;#39; =&amp;gt; [&amp;#39;field_to_block_1&amp;#39;, &amp;#39;field_to_block_2&amp;#39;],
  &amp;#39;ModuleName2&amp;#39; =&amp;gt; [&amp;#39;another_field_to_block&amp;#39;],
];
&lt;/pre&gt;&lt;/p&gt;
&lt;p data-start="641" data-end="780"&gt;&lt;strong data-start="641" data-end="650"&gt;Note:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;When this&amp;nbsp;sugar_config is set, only the specified fields will be blocked &amp;mdash; regardless of their visibility in the user interface.&lt;/p&gt;
&lt;h3 id="mcetoc_1f77psegv7"&gt;Sugar Config Settings&lt;/h3&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;strong&gt;Setting Name&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;strong&gt;Default&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;strong&gt;Override Example&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;bpm_denylisted_fields&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;[]&lt;/td&gt;
&lt;td&gt;&lt;span&gt;$sugar_config['bpm_denylisted_fields'] = [ &amp;#39;ModuleName1&amp;#39; =&amp;gt; ['field_to_block_1', 'field_to_block_2'], &amp;#39;ModuleName2&amp;#39; =&amp;gt; ['another_field_to_block']];&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;This new config will be used to include specific fields in the &amp;#39;allowed fields to be modified by BPM&amp;#39;.&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;features.&lt;span&gt;enableStrictContentSecurityPolicy&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;false&lt;/td&gt;
&lt;td&gt;&lt;span&gt;$sugar_config['features']['enableStrictContentSecurityPolicy'] = true;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;If enabled, the application will enforce a strict Content Security Policy (CSP)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="mcetoc_1f77psegvb"&gt;Removed Functions / Libraries / Features&lt;/h2&gt;
&lt;h3 id="mcetoc_1j5hknrrm5"&gt;Removal of Legacy Modules Metadata Extension Path&lt;/h3&gt;
&lt;p&gt;As part of our ongoing efforts to modernize Sugar Core, this release removes support for the legacy&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;include/modules_override.php&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;file path used for module metadata customizations. This path was used in versions prior to Sugar 6.3.x but is no longer recommended or necessary. You&amp;nbsp;should be using the supported&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://support.sugarcrm.com/smartlinks/developer_guide/architecture/extensions/include/"&gt;Extensions Framework&lt;/a&gt;&amp;nbsp;with the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="534" data-end="543"&gt;Include&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;extension for all metadata customizations.&lt;/p&gt;
&lt;p&gt;A new healthcheck&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;bucket &amp;#39;F&amp;#39;&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(manual customization) has been added to ensure compatibility to this version.&lt;/p&gt;
&lt;h3 id="mcetoc_1iv0j7tfp2" data-start="83" data-end="136"&gt;Removal of&amp;nbsp;Unused Platform&lt;/h3&gt;
&lt;p&gt;As part of ongoing SugarCore cleanup efforts, the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;kiosk&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;platform has been removed to streamline with our products and services.&lt;/p&gt;
&lt;h3 id="mcetoc_1fda51lpf4"&gt;Removing gulp-filter JS lib&lt;/h3&gt;
&lt;p&gt;The&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;gulp-filter&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;library has been removed from the project after verifying it was only used in a single instance within&amp;nbsp;a Gulp task. Its functionality has been replaced with a native filter function applied directly within the stream. This change retains the original filtering logic and preserves the existing behavior and output of the task.&lt;/p&gt;
&lt;h3 id="mcetoc_1fda51lpf4"&gt;Removing uglify-js and socket.io JS lib&lt;/h3&gt;
&lt;p&gt;Removed the legacy socket.io dependency from package.json as it was no longer used anywhere in the codebase. This also removed its transitive dependency uglify-js.&lt;/p&gt;
&lt;h2 id="mcetoc_1g4djj0su0"&gt;Data Changes&lt;/h2&gt;
&lt;h3 id="mcetoc_1gj9pc6si2"&gt;New Indexes for Calls and Meetings&lt;/h3&gt;
&lt;p&gt;To enhance the performance of queries involving Calls and Meetings using our FilterApi, we&amp;rsquo;ve added new indexes to the corresponding module definitions (vardefs). These indexes are designed to optimize data retrieval on such modules by our FilterApi:&lt;/p&gt;
&lt;ul&gt;
&lt;li data-renderer-start-pos="1"&gt;&lt;code&gt;idx_calls_series_event_deleted&lt;/code&gt;&amp;nbsp;
&lt;ul&gt;
&lt;li data-renderer-start-pos="1"&gt;&amp;#39;series_deleted&amp;#39;, &amp;#39;event_type&amp;#39;, &amp;#39;deleted&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-renderer-start-pos="1"&gt;&lt;code&gt;idx_calls_date_mod_rep_parent_id&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;-&amp;nbsp;
&lt;ul&gt;
&lt;li data-renderer-start-pos="1"&gt;&amp;#39;date_modified&amp;#39;, &amp;#39;repeat_parent_id&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="mcetoc_1f77psegvl"&gt;Platform Updates&lt;/h2&gt;
&lt;h3 id="mcetoc_1ij671fi12"&gt;Scheduler Jobs Now Run on a Consistent Timezone&lt;/h3&gt;
&lt;p data-start="419" data-end="565"&gt;We&amp;rsquo;ve updated the Scheduler UI to make it easier to see exactly when jobs will run&amp;mdash;based on your local timezone. No more mental math or guesswork.&lt;/p&gt;
&lt;p data-start="567" data-end="832"&gt;While this improves clarity in the interface, the underlying execution behavior hasn&amp;rsquo;t changed yet: jobs still run based on the timezone of the system user (ID = 1). We&amp;rsquo;re actively working to align the backend behavior with UTC-based scheduling in a future release.&lt;/p&gt;
&lt;p data-start="834" data-end="899"&gt;For full details or clarification, read the &lt;a href="/dev-club/b/dev-blog/posts/retraction-update-on-scheduler-job-timezone-behavior"&gt;retraction here&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="mcetoc_1j5hknrrm6"&gt;Enhanced SystemProcessLock Handling to Prevent Redundant Execution During Admin QRR&lt;/h3&gt;
&lt;p data-start="134" data-end="681"&gt;Resolved an issue where regular user requests could unintentionally trigger cascading expensive operations, such as metadata and language cache rebuilds, during or immediately after an admin-initiated Quick Repair &amp;amp; Rebuild (QRR). Previously, when cache files were deleted by an admin QRR, regular users encountering missing cache would queue behind a system-level lock and subsequently attempt to perform the same rebuild operations once the lock was released. This behavior caused unnecessary server load, timeouts, and a degraded user experience.&lt;/p&gt;
&lt;p data-start="683" data-end="1067"&gt;With this enhancement, the lock handling logic has been updated to prevent non-admin users from executing expensive operations when the lock cannot be acquired. Instead, such requests will now safely return without action, ensuring that only admin users can initiate these processes. This significantly reduces server load and improves system responsiveness during cache rebuilding scenarios.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn"&gt;
&lt;div class="relative flex-col gap-1 md:gap-3"&gt;
&lt;div class="flex max-w-full flex-col grow"&gt;
&lt;div dir="auto" data-message-author-role="assistant" data-message-id="7e91f8eb-92d0-42d3-9eb4-8e0f56738542" data-message-model-slug="gpt-4o"&gt;
&lt;div&gt;
&lt;div class="markdown prose dark:prose-invert w-full break-words dark"&gt;
&lt;p data-start="1249" data-end="1596"&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;This improvement has been backported to&amp;nbsp;Sugar&amp;nbsp;25.1.x.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="mcetoc_1j5hknrrm7"&gt;Improved Deep Linking Support for SugarCRM on Mobile Devices&lt;/h3&gt;
&lt;p data-start="302" data-end="605"&gt;In this release, we have implemented improvements to the experience of opening Sugar links from mobile devices. This update addresses inconsistent behaviors when accessing CRM links from email or messages, ensuring a more predictable and seamless user journey on both Android and iOS platforms.&lt;/p&gt;
&lt;p data-start="612" data-end="633"&gt;&lt;strong data-start="612" data-end="633"&gt;What&amp;#39;s new:&lt;/strong&gt;&lt;/p&gt;
&lt;ul data-start="635" data-end="1391"&gt;
&lt;li data-start="635" data-end="869"&gt;
&lt;p data-start="637" data-end="869"&gt;&lt;strong data-start="637" data-end="664"&gt;Universal Link Support:&amp;nbsp;&lt;/strong&gt;SugarCRM mobile app now uses&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://developer.apple.com/documentation/xcode/allowing-apps-and-websites-to-link-to-your-content/"&gt;Universal Links&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(iOS) and App Links (Android) to seamlessly redirect users from supported emails/messages directly into the app&amp;mdash;bypassing the mobile browser when possible.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="871" data-end="1043"&gt;
&lt;p data-start="873" data-end="1043"&gt;&lt;strong data-start="873" data-end="895"&gt;Smart App Prompts:&amp;nbsp;&lt;/strong&gt;Users without the SugarCRM mobile app installed are now prompted to download it from the App Store or Google Play when tapping a SugarCRM link.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1045" data-end="1212"&gt;
&lt;p data-start="1047" data-end="1212"&gt;&lt;strong data-start="1047" data-end="1083"&gt;Improved Workflow Link Behavior:&amp;nbsp;&lt;/strong&gt;Links generated from workflows (e.g., SugarBPM) now attempt to open in the app rather than defaulting to the mobile browser.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1214" data-end="1391"&gt;
&lt;p data-start="1216" data-end="1391"&gt;&lt;strong data-start="1216" data-end="1246"&gt;Browser Consistency Fixes:&amp;nbsp;&lt;/strong&gt;Addressed inconsistent behavior across third-party browsers (e.g., Edge, Chrome) especially on iPhone, ensuring reliable app-switch prompts.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="2453" data-end="2679"&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Support for this feature on custom or on-premise domains requires configuration changes and updates to the Mobile App to include those domains. Customers should contact support for implementation guidance.&lt;/p&gt;
&lt;h3 id="mcetoc_1ij671fi12"&gt;Enhanced Content Security Policy (CSP) for Improved Application Security&lt;/h3&gt;
&lt;p data-start="207" data-end="462"&gt;As part of our ongoing commitment to application security, we are introducing&amp;nbsp;&lt;strong data-start="287" data-end="327"&gt;Strict Content Security Policy (CSP)&lt;/strong&gt;. This policy significantly reduces the risk of malicious script execution by restricting the sources from which scripts can be loaded.&lt;/p&gt;
&lt;p data-start="464" data-end="531"&gt;To support this enhancement, we&amp;rsquo;ve refactored the frontend code to:&lt;/p&gt;
&lt;ul data-start="533" data-end="640"&gt;
&lt;li data-start="533" data-end="588"&gt;
&lt;p data-start="535" data-end="588"&gt;Remove inline event handlers and&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="568" data-end="581"&gt;javascript:&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;URIs&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="589" data-end="640"&gt;
&lt;p data-start="591" data-end="640"&gt;Add&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="595" data-end="602"&gt;nonce&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;attributes to all&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="621" data-end="631"&gt;&amp;lt;script&amp;gt;&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;elements&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="642" data-end="717"&gt;These changes ensure that only trusted scripts are executed in the browser.&lt;/p&gt;
&lt;p data-start="719" data-end="906"&gt;This feature is&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="735" data-end="755"&gt;configurable via&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="756" data-end="768"&gt;App.config&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(&lt;code data-start="770" data-end="834"&gt;$sugar_config['features']['enableStrictContentSecurityPolicy']&lt;/code&gt;) and requires a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="851" data-end="885"&gt;QRR&lt;/strong&gt;&amp;nbsp;after being toggled.&lt;/p&gt;
&lt;p data-start="908" data-end="1101"&gt;The rollout will follow a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="934" data-end="953"&gt;phased approach&lt;/strong&gt;, beginning in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="968" data-end="988"&gt;report-only mode&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;to monitor violations, with full enforcement to follow in both core and customization layers in future releases.&lt;/p&gt;
&lt;h3 id="mcetoc_1iv32kek40"&gt;Declarative Metadata&amp;nbsp;Refactoring&lt;/h3&gt;
&lt;p&gt;As part of our ongoing efforts to make Sugar&amp;#39;s metadata fully declarative and serializable, this release includes the first phase of refactoring non-declarative components within Sugar Core. Previously, some metadata included conditional logic that needed refactoring. We&amp;rsquo;ve begun restructuring&amp;nbsp;some&amp;nbsp;areas to align with a declarative format, laying the groundwork for&amp;nbsp;the new Metadata generation we&amp;#39;ve discussed&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="/dev-club/m/event-recaps/3010"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="mcetoc_1j5hknrrm8"&gt;Replace the TCPDF with SugarPdf in MapsGenerator&lt;/h3&gt;
&lt;p&gt;In this release, we&amp;#39;ve updated&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="217" data-end="258"&gt;MapsGenerator.php::createPDF()&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;to use SugarPDF instead of directly using TCPDF.&lt;/p&gt;
&lt;h3 id="mcetoc_1j5hknrrm9"&gt;Added Backend Framework for Dropdown Classifications&lt;/h3&gt;
&lt;p data-start="130" data-end="389"&gt;In this release, we&amp;#39;ve introduced backend support for a generic dropdown classification framework as part of the Dropdown Editor enhancements. This replaces hardcoded logic (e.g.,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;sales_stage_dom&lt;/code&gt;) with a scalable, metadata-driven approach, enabling configurable mappings between dropdown values and classification categories..&lt;/p&gt;
&lt;p data-start="391" data-end="403"&gt;&lt;strong&gt;Key details:&lt;/strong&gt;&lt;/p&gt;
&lt;ul data-start="404" data-end="871"&gt;
&lt;li data-start="404" data-end="488"&gt;
&lt;p data-start="406" data-end="488"&gt;Classifications are defined using metadata and stored via the extension framework.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="489" data-end="669"&gt;
&lt;p data-start="491" data-end="517"&gt;A classification includes:&lt;/p&gt;
&lt;ul data-start="520" data-end="669"&gt;
&lt;li data-start="520" data-end="541"&gt;
&lt;p data-start="522" data-end="541"&gt;A unique identifier&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="544" data-end="602"&gt;
&lt;p data-start="546" data-end="602"&gt;Translatable classification options (&lt;code data-start="583" data-end="601"&gt;app_list_strings&lt;/code&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="605" data-end="669"&gt;
&lt;p data-start="607" data-end="669"&gt;Mappings between dropdown values and classification categories&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-start="670" data-end="794"&gt;
&lt;p data-start="672" data-end="794"&gt;No API or UI changes in this implementation &amp;mdash; a helper class is provided to handle loading and saving classification data.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="795" data-end="871"&gt;
&lt;p data-start="797" data-end="871"&gt;Designed to support future use with multiple classifications per dropdown.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="873" data-end="956"&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;This implementation does&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="904" data-end="911"&gt;not&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;expand classifications to all dropdowns yet,&amp;nbsp;&lt;code&gt;sales_stage_dom&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;only&lt;/p&gt;
&lt;h3 id="mcetoc_1j5hknrrma"&gt;Prevent Data Loss on Market MLP Uninstallation and upgrade&lt;/h3&gt;
&lt;p&gt;In this release, we&amp;#39;re addressing a critical issue where upgrading to Market MLP version 25.1 resulted in unintended data loss, specifically affecting connector setting configurations that were expected to persist through the uninstallation process. Additionally, the upgrade mechanism has been improved to ensure proper cleanup of residual files and directories from previous installations, which previously caused version conflicts, broken dependencies, and unexpected behavior in the new version. These enhancements ensure a smoother and more reliable upgrade experience..&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&amp;nbsp;&lt;span&gt;If on upgrade customer does not have active market license then the features would not show up after upgrade even if they have MLP installed.&lt;/span&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1j5hknrrmb"&gt;SugarLive&amp;nbsp;compatibility with the V2 console for Amazon Connect&lt;/h3&gt;
&lt;p&gt;For SugarLive, Sugar provides SugarServeSampleBot.zip which was only compatible with the Amazon Lex V1 console. However, in Amazon Connect, there is a warning about the Lex V1 console being discontinued after September 15, 2025. We have now implemented and updated the SugarServeSampleBot.zip file to make it compatible with the V2 console.&lt;/p&gt;
&lt;h3 id="mcetoc_1gb30ctl1e"&gt;Bug Fixes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed an issue with the FilterApi that was returning extra fields in the response payload even&amp;nbsp;when filtering by using args&amp;nbsp;&lt;code&gt;fields.&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Fixed QRR Occasionally Fails to Rebuild Module/Class Cache, Causing Outages and UI Errors caused by race conditions during concurrent or overlapping QRR executions or user requests during cache rebuild.&lt;/li&gt;
&lt;li&gt;Fixed an issue for a specific scenario where user licenses were failing to update&lt;/li&gt;
&lt;li&gt;Fixed an issue that a&amp;nbsp;calculated field using the countConditional function in combination with a relate field (e.g. countConditional($notes,&amp;quot;name&amp;quot;,createList(&amp;quot;test&amp;quot;))) caused a &amp;ldquo;Too many tables&amp;rdquo; error when a large number of one-to-one relationships were created between modules&lt;/li&gt;
&lt;li&gt;Fixed an issue on&amp;nbsp;Uncaught TypeError: Sugarcrm\\Sugarcrm\\Security\\Escaper\\Escape::html() caught on upgrade from 14.0.1 to 25.1&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Fixed an issue where Sugar Automate licenses and UI elements disappear after manual license validation and only reappear when an online validation is performed.&lt;/li&gt;
&lt;li&gt;Fixed an issue with our silentUpgrader that, in some cases,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;the healthcheck was still executed during the upgrade&amp;nbsp;even if the instance was configured with&lt;/span&gt;&amp;nbsp;&amp;ldquo;Bypass Healthcheck&amp;rdquo; option enabled.&lt;/li&gt;
&lt;li&gt;Fixed an issue where&amp;nbsp;&lt;span&gt;People names (Contacts, Leads, Users) currently do not have a display option for how names are traditionally written in Chinese.&amp;nbsp;The LastFirst name format has been added to the default list to support proper name display across the product (e.g., Contacts list view, record view, Lead, and Assigned To fields)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Fixed an issue on the Case Summary Chart and Opportunity Metrics Chart (migrated from Sucrose to Chart.JS) where, if only one label was present, it&amp;nbsp;displayed at the bottom of the chart in a space too small to display it properly&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Fixed an issue where&amp;nbsp;Users&amp;nbsp;were receiving a permission error when trying to use Doc Merge for Quote records and have {currency_name.iso4217} in the template.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Fixed an issue where regular users triggered redundant rebuilds after admin QRR due to SystemProcessLock, causing server overload due to multiple expensive operations running simultaneously.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Fixed an issue where Generating a Quote from the Revenue Line Item detail view doesn&amp;#39;t allow the generated Quote to be saved.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Fixed an issue where Update Momentum of In-Progress Smart Guides&amp;#39; scheduler fails on NULL score or point values.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Fixed an issue where a single email failure due to a Laminas error could halt the entire import scheduler, leaving the email unread and causing repeated failures.&lt;/li&gt;
&lt;li&gt;Fixed an issue where&amp;nbsp;Developer user encounters error when editing Timeline. Developer only users will not see this option but users with Admin and Developer access will.&lt;/li&gt;
&lt;li&gt;Fixed an issue when a user has a profile date format that is not ISO compliant, the date outputted into a PDF is not valid in ISO format, Sugar was using current date but should interpret that date&amp;nbsp;correctly.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="mcetoc_1ij671fi12"&gt;Sugar Core Security Updates&lt;/h3&gt;
&lt;p&gt;As part of our ongoing efforts to keep Sugar clean, fast, reliable, and most importantly secure, we have updated&amp;nbsp;Sugar Core code in different areas of the application such as Package Scanner, Studio, Module Installer, UI rendering, API endpoints, Legacy SOAP API, File Uploads, Portal, PII Fields, ACL rules, Legacy Workflows, Smart Guides, HTTP Headers and BWC modules. Not only those changes but we&amp;#39;ve cleaned up and improve our logging messages around deprecations.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn"&gt;
&lt;div class="relative flex-col gap-1 md:gap-3"&gt;
&lt;div class="flex max-w-full flex-col grow"&gt;
&lt;div dir="auto" data-message-author-role="assistant" data-message-id="7e91f8eb-92d0-42d3-9eb4-8e0f56738542" data-message-model-slug="gpt-4o"&gt;
&lt;div&gt;
&lt;div class="markdown prose dark:prose-invert w-full break-words dark"&gt;
&lt;p data-start="1249" data-end="1596"&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;Some of those security improvements&lt;/span&gt;&amp;nbsp;were backported to&amp;nbsp;Sugar&amp;nbsp;25.1.x.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="mcetoc_1gqa6vaoc8"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;
&lt;div class="code-block sc-ezYOhE gBYPJJ"&gt;
&lt;h2 id="mcetoc_1hgt5tqlsa"&gt;Healthcheck&amp;nbsp;Updates&lt;/h2&gt;
&lt;div class="code-block sc-ezYOhE gBYPJJ"&gt;
&lt;div class="code-block sc-ezYOhE gBYPJJ"&gt;
&lt;ul&gt;
&lt;li&gt;Built a health scanner tool to detect cloud instances using&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;SugarMarket MLP&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;versions&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&amp;lt; 2.2&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;and send it to&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;bucket F&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Built a healthcheck to detect and support&amp;nbsp;the removal of the legacy&amp;nbsp;&lt;code&gt;include/modules_override.php&lt;/code&gt;&amp;nbsp;file path and send it to&amp;nbsp;&lt;code&gt;bucket F&lt;/code&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="code-block sc-ezYOhE gBYPJJ"&gt;
&lt;div class="code-block sc-ezYOhE gBYPJJ"&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: Sugar 25.2&lt;/div&gt;
</description></item><item><title>Sugar 25.2 Customization Guide</title><link>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/1013/sugar-25-2-customization-guide/revision/3</link><pubDate>Mon, 29 Sep 2025 13:40:54 GMT</pubDate><guid isPermaLink="false">5c521d64-519d-47a6-9065-134618b211bf:3307f36c-90a1-4f3c-b6a7-d6d6641bf5cb</guid><dc:creator>Rafael Fernandes</dc:creator><comments>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/1013/sugar-25-2-customization-guide#comments</comments><description>Revision 3 posted to Dev Tutorials by Rafael Fernandes on 9/29/2025 1:40:54 PM&lt;br /&gt;
&lt;p&gt;The purpose of this document is to provide insight to Sugar Developers for upgrading custom Sugar code, extensions, and integrations to the Sugar 25.2 release. This guide focuses on changes in&amp;nbsp;&lt;span&gt;Sugar 25.2&lt;/span&gt;&amp;nbsp;that could cause an immediate impact on Sugar customizations and integrations built for earlier Sugar versions.&lt;/p&gt;
&lt;p&gt;Please check out the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="/dev-club/m/event-recaps/3045"&gt;Sugar 25.2 Developer Webinar recording&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;for more developer highlights.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;For Admin and End User release notes, please visit the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Release_Notes/25.2.0_Release_Notes/"&gt;Sugar 25.2.0 Release Notes&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1ff80k9i32"&gt;User Experience Updates&lt;/h2&gt;
&lt;h3 id="mcetoc_1gb30ctl1e"&gt;&lt;span style="font-size:inherit;"&gt;&lt;span class="TextRun SCXW218900661 BCX0" lang="EN" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW218900661 BCX0" data-ccp-parastyle="heading 2"&gt;Modernized Dropdown Editor&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-start="232" data-end="471"&gt;In this release, we&amp;rsquo;ve modernized the Dropdown Editor UI, transitioning from BWC to Sidecar for a cleaner, more streamlined admin experience. Admins can now manage entire dropdown lists from a single view&amp;mdash;no more editing one row at a time.&lt;/p&gt;
&lt;p data-start="115" data-end="326"&gt;&lt;strong data-start="328" data-end="343"&gt;What&amp;rsquo;s new:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li data-start="115" data-end="326"&gt;
&lt;p&gt;&lt;strong data-start="492" data-end="516"&gt;Redesigned Interface&lt;/strong&gt;: New Sidecar layout with updated header, inline editing, and consistent list view styling. Supports dark mode.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="115" data-end="326"&gt;
&lt;p&gt;&lt;strong&gt;Formatting Flow Fix &amp;amp; Toggle Control:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Chart colors no longer drive dropdown styling; instead, formatting is now defined at the dropdown level and pushed to charts for consistency..&lt;/p&gt;
&lt;ul&gt;
&lt;li data-start="296" data-end="364"&gt;
&lt;p data-start="298" data-end="364"&gt;New&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="302" data-end="337"&gt;&amp;quot;Enable formatting in dropdown&amp;quot;&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;toggle added per dropdown.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="367" data-end="486"&gt;
&lt;p data-start="369" data-end="486"&gt;Toggle is&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="379" data-end="401"&gt;enabled by default&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;for:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="407" data-end="424"&gt;sales_stage_dom&lt;/code&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="426" data-end="443"&gt;quote_stage_dom&lt;/code&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="445" data-end="462"&gt;case_status_dom&lt;/code&gt;, and&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="468" data-end="485"&gt;lead_status_dom&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="489" data-end="580"&gt;
&lt;p data-start="491" data-end="580"&gt;When&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="496" data-end="508"&gt;disabled&lt;/strong&gt;, formatting is hidden in the UI but preserved and still used in charts.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="583" data-end="683"&gt;
&lt;p data-start="585" data-end="683"&gt;When&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="590" data-end="601"&gt;enabled&lt;/strong&gt;, users can customize styles (colors, fonts) via the conditional formatting panel.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="686" data-end="803"&gt;
&lt;p data-start="688" data-end="803"&gt;Chart colors fallback to the chart palette for items without formatting; white and black are excluded and replaced.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Conditional Formatting&lt;/strong&gt;: New Conditional Format Options control panel that allows&lt;span&gt;&amp;nbsp;users to customize the appearance of dropdown values using styles, icons, and colors&lt;/span&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The following stock/out-of-the-box dropdowns were predefined with conditional formatting for awareness and usability:&amp;nbsp;&lt;code&gt;sales_stage_dom&lt;/code&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;quote_stage_dom&lt;/code&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;case_status_dom&lt;/code&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;lead_status_dom&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Formatting will be reflected as soon as saved on List View, Record View, Focus Drawer, Reports, Other components using the dropdown values, All views in sugar&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Even if user selects RGB, we only reflect Hex number in the input&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong data-start="630" data-end="646"&gt;Add New Rows&lt;/strong&gt;: Easily add multiple items with editable fields for Display Label and Classification (for&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="737" data-end="754"&gt;sales_stage_dom&lt;/code&gt;). Only completed rows are saved.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="790" data-end="897"&gt;
&lt;p&gt;&lt;strong data-start="790" data-end="809"&gt;Improved Search&lt;/strong&gt;: Real-time search across Item Name and Display Label fields with partial match support.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="900" data-end="1048"&gt;
&lt;p&gt;&lt;strong data-start="900" data-end="922"&gt;Restore to Default&lt;/strong&gt;: Revert dropdowns to their original out-of-the-box (OOTB) state, including default sort order. Available only for OOTB lists.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1051" data-end="1148"&gt;
&lt;p&gt;&lt;strong data-start="1051" data-end="1084"&gt;Bulk Editing &amp;amp; Reduced Clicks&lt;/strong&gt;: Edit multiple rows at once and save all changes in one action.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1151" data-end="1272"&gt;
&lt;p&gt;&lt;strong data-start="1151" data-end="1176"&gt;Sort by Display Label&lt;/strong&gt;: New sort button allows ascending/descending sort; order persists across sessions and is saved.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1275" data-end="1392"&gt;
&lt;p&gt;&lt;strong data-start="1275" data-end="1304"&gt;Inline Editing &amp;amp; Deletion&lt;/strong&gt;: Edit Display Label and Classification fields directly; delete items with confirmation.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1395" data-end="1487"&gt;
&lt;p&gt;&lt;strong data-start="1395" data-end="1423"&gt;Drag-and-Drop Reordering&lt;/strong&gt;: Rearrange items via drag-and-drop. Changes are saved on click.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1490" data-end="1579"&gt;
&lt;p&gt;&lt;strong data-start="1490" data-end="1516"&gt;Unsaved Change Warning&lt;/strong&gt;: Users are prompted before navigating away from unsaved edits.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Devs can still define&amp;nbsp;custom styles (e.g.,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;backgroundColor, textColor, icon, iconColor&lt;/code&gt;) for dropdown fields using extension framework (&lt;code&gt;custom/application/Ext/DropdownsStyle/dropdowns_style.ext.php&lt;/code&gt;).&lt;/p&gt;
&lt;h3 id="mcetoc_1gb30ctl1e"&gt;Adding support to Shared Drive files on Google Drive&lt;/h3&gt;
&lt;p data-start="232" data-end="471"&gt;The Google Drive connector for Sugar has been enhanced to support access to shared files. Users can now interact with files that are shared with them or located in Shared Drives. This includes the ability to set a Shared Drive as the root path, define variable file paths on record views, and seamlessly navigate through folders within Shared Drives. Additionally, users can switch between viewing files in &amp;quot;My Files,&amp;quot; &amp;quot;Shared with me,&amp;quot; and Shared Drives. If a user attempts to access a Shared Drive they do not have permission to view, a message will appear within the dashlet indicating the lack of access, with the option to navigate to an accessible area instead.&lt;/p&gt;
&lt;div&gt;
&lt;div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn"&gt;
&lt;div class="relative flex-col gap-1 md:gap-3"&gt;
&lt;h3 id="mcetoc_1j5hknrrm0"&gt;Enable Row-Level Actions in List View Dashlets&lt;/h3&gt;
&lt;div&gt;
&lt;div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn"&gt;
&lt;div class="relative flex-col gap-1 md:gap-3"&gt;
&lt;div class="flex max-w-full flex-col grow"&gt;
&lt;div dir="auto" data-message-author-role="assistant" data-message-id="e60a4390-8308-4251-a10b-5a6239bb908d" data-message-model-slug="gpt-4o"&gt;
&lt;div class="markdown prose dark:prose-invert w-full break-words dark"&gt;
&lt;p data-start="19" data-end="705" data-is-last-node="" data-is-only-node=""&gt;In this release, we&amp;#39;ve&amp;nbsp;added row-level actions on List view dashlets, enabling users to take immediate action on records directly within dashboards and Focus Drawers. This improvement aligns with Sugar&amp;rsquo;s goal of&amp;nbsp;UX efficiency, reducing clicks and streamlining workflows. The available actions now mirror those found in the standard module list views, using the familiar action menu design for consistency. The preview option has been intentionally excluded to suit the context of dashlets.&lt;/p&gt;
&lt;div&gt;
&lt;div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn"&gt;
&lt;div class="relative flex-col gap-1 md:gap-3"&gt;
&lt;div class="flex max-w-full flex-col grow"&gt;
&lt;div dir="auto" data-message-author-role="assistant" data-message-id="269059f9-331f-43d5-a7e5-913f02e20322" data-message-model-slug="gpt-4o"&gt;
&lt;div class="markdown prose dark:prose-invert w-full break-words dark"&gt;
&lt;p data-start="671" data-end="888" data-is-last-node="" data-is-only-node=""&gt;&lt;strong data-start="671" data-end="680"&gt;Note:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;This functionality has been implemented as a new plugin and integrated into relevant views. Custom or extended views that include inline editing may require a review to ensure compatibility with this update.&lt;/p&gt;
&lt;h3 id="mcetoc_1j5hknrrm1"&gt;Opportunity&amp;nbsp;Delta&amp;nbsp;in List and Record Views&lt;/h3&gt;
&lt;div&gt;
&lt;div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn"&gt;
&lt;div class="relative flex-col gap-1 md:gap-3"&gt;
&lt;div class="flex max-w-full flex-col grow"&gt;
&lt;div dir="auto" data-message-author-role="assistant" data-message-id="e60a4390-8308-4251-a10b-5a6239bb908d" data-message-model-slug="gpt-4o"&gt;
&lt;div class="markdown prose dark:prose-invert w-full break-words dark"&gt;
&lt;p&gt;To improve visibility into how opportunities evolve over time, we&amp;#39;ve introduced a new&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;Change Over Time&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;dropdown labeling &amp;quot;Show changes&amp;quot; across Opportunity list views (module and subpanels), record views, and dashlets (LV &amp;amp; RV). This enables sellers and managers to quickly see cumulative changes without piecing together discrete audit log entries.&lt;/p&gt;
&lt;p data-start="518" data-end="535"&gt;&lt;strong data-start="518" data-end="535"&gt;Key Features:&lt;/strong&gt;&lt;/p&gt;
&lt;ul data-start="536" data-end="941"&gt;
&lt;li data-start="536" data-end="650"&gt;
&lt;p data-start="538" data-end="650"&gt;&lt;strong data-start="538" data-end="576"&gt;New Time-Based Comparison Dropdown&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;with four options:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="596" data-end="602"&gt;None&lt;/code&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="604" data-end="617"&gt;Last 7 days&lt;/code&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="619" data-end="633"&gt;Last 14 days&lt;/code&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="635" data-end="649"&gt;Last 30 days&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="651" data-end="736"&gt;
&lt;p data-start="653" data-end="736"&gt;Compares current opportunity data to its value at the end of the selected past day.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="737" data-end="835"&gt;
&lt;p data-start="739" data-end="765"&gt;Highlights value changes in::&lt;/p&gt;
&lt;ul data-start="768" data-end="835"&gt;
&lt;li data-start="768" data-end="787"&gt;
&lt;p data-start="770" data-end="787"&gt;&lt;strong data-start="770" data-end="787"&gt;Likely Amount&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="790" data-end="815"&gt;
&lt;p data-start="792" data-end="815"&gt;&lt;strong data-start="792" data-end="815"&gt;Expected Close Date&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="818" data-end="835"&gt;
&lt;p data-start="820" data-end="835"&gt;&lt;strong data-start="820" data-end="835"&gt;Sales Stage&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul data-start="965" data-end="1259"&gt;
&lt;li data-start="965" data-end="1068"&gt;
&lt;p data-start="967" data-end="1068"&gt;Selection is&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="980" data-end="999"&gt;sticky per view&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(e.g., list view and record view can maintain independent settings).&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1069" data-end="1189"&gt;
&lt;p data-start="1071" data-end="1189"&gt;When navigating using the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="1097" data-end="1111"&gt;focus icon&lt;/strong&gt;, the source view&amp;rsquo;s selection is respected and carried to the target dashlets.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1190" data-end="1259"&gt;
&lt;p data-start="1192" data-end="1259"&gt;If no prior context exists, the default selection is&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="1245" data-end="1258"&gt;Last 7 days&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;This feature leverages historical data available through Sugar&amp;#39;s Enhanced Forecasting and is only available to customers with the Opportunities dataset. For customers without this dataset, the feature will not be functional.&lt;/p&gt;
&lt;h3 id="mcetoc_1iv0j7tfp2" data-start="83" data-end="136"&gt;Add Transcription, Recording, and Summary fields on the Meetings module&lt;/h3&gt;
&lt;p&gt;&lt;span&gt;We&amp;#39;re improving Meetings module in this release by adding transcription, recording and summary fields to the record view in view/edit modes.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1j5hknrrm2"&gt;&lt;span&gt;Dynamic Record View Dashlet Rendering for Flex Relate Fields in Focus Drawer&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;Enhanced the Focus Drawer experience by enabling dynamic rendering (new tab) of related records defined via flex relate (&amp;quot;Relate To&amp;quot;) fields within a Record View Dashlet. Users can now configure a dashlet to automatically display the appropriate related record based on the selected module and record in the flex relate field without needing to manually toggle between module tabs. This&amp;nbsp;improves context access and ensures only relevant record views are shown, improving usability and efficiency when working across related modules.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="mcetoc_1i7u16d9e5"&gt;&lt;span&gt;&lt;span class="TextRun SCXW118627354 BCX0" lang="EN-US" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW118627354 BCX0" data-ccp-parastyle="heading 2"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="NormalTextRun SCXW249156672 BCX0"&gt;&lt;/span&gt;&lt;/span&gt;Sugar REST API updates&lt;/h2&gt;
&lt;p&gt;This Sugar release introduces REST&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;code&gt;v11_27&lt;/code&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id="mcetoc_1gjpkca900"&gt;Dropdown Editor&lt;/h3&gt;
&lt;p&gt;Set details of dropdown.&lt;/p&gt;
&lt;div class="content-scrollable-wrapper"&gt;
&lt;pre&gt;PUT &amp;lt;sugar instance&amp;gt;/rest/v11_27/Administration/dropdownEditor/:dropdownName&lt;/pre&gt;
&lt;p&gt;Get details of dropdown that can be changed.&lt;/p&gt;
&lt;div class="content-scrollable-wrapper"&gt;
&lt;pre&gt;GET &amp;lt;sugar instance&amp;gt;/rest/v11_27/Administration/dropdownEditor/:dropdownName&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Create Dropdown DOM issue as a php-file in customer storage directory.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;div class="content-scrollable-wrapper"&gt;
&lt;pre&gt;POST &amp;lt;sugar instance&amp;gt;/rest/v11_27/Administration/dropdownEditor/create&lt;/pre&gt;
&lt;h3 id="mcetoc_1gjpkca900"&gt;Enhancements to&amp;nbsp;Package Builder APIs&amp;rsquo; error handling&lt;/h3&gt;
&lt;p&gt;We have improved our Package Builder API for clear and consistent error codes that are returned for known failure scenarios.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong data-renderer-mark="true"&gt;For Example:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;200 OK, 201 Created, 400 Bad Request, 404 Not Found, 500 Internal Server Error.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul class="ak-ul" data-indent-level="1"&gt;
&lt;li&gt;
&lt;p data-renderer-start-pos="402"&gt;Error messages include actionable context (e.g., missing fields, invalid formats, unsupported package types)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul class="ak-ul" data-indent-level="1"&gt;
&lt;li&gt;
&lt;p data-renderer-start-pos="516"&gt;All existing error-prone areas are covered (e.g., input validation, external service failures, internal exceptions)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul class="ak-ul" data-indent-level="1"&gt;
&lt;li&gt;
&lt;p data-renderer-start-pos="637"&gt;Fallbacks or default behaviors are implemented where appropriate&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul class="ak-ul" data-indent-level="1"&gt;
&lt;li&gt;
&lt;p data-renderer-start-pos="707"&gt;Errors follow our API error response standard (e.g., HTTP status codes, message structure)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The following endpoints were improved:&lt;/p&gt;
&lt;pre&gt;POST &amp;lt;sugar instance&amp;gt;/rest/v11_27/Administration/package/customizations&lt;br /&gt;&lt;br /&gt;POST &amp;lt;sugar instance&amp;gt;/rest/v11_27/Administration/package&lt;br /&gt;&lt;br /&gt;GET &amp;lt;sugar instance&amp;gt;/rest/v11_27/Administration/package/id&lt;br /&gt;&lt;br /&gt;POST &amp;lt;sugar instance&amp;gt;/rest/v11_27/Administration/package/remote&lt;br /&gt;&lt;br /&gt;POST &amp;lt;sugar instance&amp;gt;/rest/v11_27/Administration/package/data&lt;br /&gt;&lt;br /&gt;POST &amp;lt;sugar instance&amp;gt;/rest/v11_27/Administration/package/getRemotePackages&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;h3 id="mcetoc_1gjpkca900"&gt;Historical Deltas API&lt;/h3&gt;
&lt;p&gt;Retrieves historical delta changes for a module based on a timestamp and list of records.&lt;/p&gt;
&lt;div class="content-scrollable-wrapper"&gt;
&lt;pre&gt;POST &amp;lt;sugar instance&amp;gt;/rest/v11_27/historically/delta&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1ff80k9i33"&gt;&lt;code&gt;&lt;/code&gt;&lt;/h3&gt;
&lt;h3 id="mcetoc_1ff80k9i33"&gt;&lt;code&gt;&lt;/code&gt;&lt;/h3&gt;
&lt;h2 id="mcetoc_1ftl03hrg6"&gt;&lt;span style="font-size:inherit;"&gt;PHP Library Upgrades&lt;/span&gt;&lt;/h2&gt;
&lt;h3 id="mcetoc_1iuf1asts0"&gt;Upgrade PHP libs to the latest Minor versions without breaking changes&lt;/h3&gt;
&lt;p&gt;In this release, we&amp;#39;ve updated all minor and patch versions of our PHP libraries as declared in the composer. Since these are minor and patch updates, no breaking changes are expected. The updates primarily include newly generated models and improved PHP version compatibility.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;aws/aws-sdk-php             3.342.19 AWS SDK for PHP - Use Amazon Web Services in your PHP project
doctrine/dbal               3.9.4    Powerful PHP database abstraction layer (DBAL) with many features for da...
egulias/email-validator     4.0.4    A library for validating emails against several RFCs
guzzlehttp/guzzle           7.9.3    Guzzle is a PHP HTTP client library
laminas/laminas-escaper     2.16.0   Securely and safely escape HTML, HTML attributes, JavaScript, CSS, and URLs
league/oauth2-client        2.8.1    OAuth 2.0 Client Library
microsoft/microsoft-graph   2.29.0   The Microsoft Graph SDK for PHP
rector/rector               2.0.11   Instant Upgrade and Automated Refactoring of any PHP code
rlanvin/php-rrule           2.5.2    Lightweight and fast recurrence rules for PHP (RFC 5545)&lt;/pre&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1gj2kiufk0"&gt;PHP-Parser&lt;/h3&gt;
&lt;p&gt;&lt;span&gt;Sugar utilizes a&amp;nbsp;PHP library called&amp;nbsp;&lt;a href="https://github.com/nikic/PHP-Parser/tree/master"&gt;PHP-Parser&lt;/a&gt;&amp;nbsp;Its purpose is to simplify static code analysis and manipulation.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;There are major internal changes in this library, if you use them, please refer to this library&amp;rsquo;s upgrade procedure&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://github.com/nikic/PHP-Parser/blob/master/UPGRADE-5.0.md"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;div class="content-scrollable-wrapper"&gt;
&lt;pre&gt;nikic/php-parser &amp;rarr; ^v5.4.0&lt;/pre&gt;
&lt;/div&gt;
&lt;h3 id="mcetoc_1gj2kiufk0"&gt;&lt;/h3&gt;
&lt;div&gt;&lt;/div&gt;
&lt;h2 id="mcetoc_1ff80k9i33"&gt;&lt;span style="font-size:inherit;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;JS Library Upgrades&lt;/h2&gt;
&lt;div class="content-scrollable-wrapper"&gt;
&lt;h3 id="mcetoc_1fda51lpf4"&gt;Low to Minimum Impact&amp;nbsp;Upgrade on various JS&amp;nbsp;libraries&lt;/h3&gt;
&lt;p&gt;We have performed a patch upgrade on several JavaScript libraries used within our codebase. These upgrades are considered low to minimum impact and should not affect Sugar developers in any meaningful way. Most of the components upgraded are used for internal build processes or tooling.&lt;/p&gt;
&lt;p&gt;There are no known breaking changes associated with these updates.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;@babel/core -&amp;gt; 7.27.4
@sugarcrm/ventana -&amp;gt; 1.1.19
handlebars -&amp;gt; 4.7.8-sugarcrm
babel-loader -&amp;gt; 9.2.1
bootstrap  -&amp;gt; 5.3.7
gulp -&amp;gt; 5.0.1
jquery-migrate -&amp;gt; 3.5.2
sinon -&amp;gt; 21.0.0
tailwindcss -&amp;gt; 3.4.17
underscore -&amp;gt; 1.13.7
webpack -&amp;gt; 5.99.9
eslint-plugin-import -&amp;gt; 2.31.0
cure53/DOMPurify -&amp;gt; 3.2.6
stylelint-config-standard -&amp;gt; 38.0.0&lt;/pre&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1j5hknrrm3"&gt;&lt;span&gt;DOMPurify JS Library&lt;/span&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn"&gt;
&lt;div class="relative flex-col gap-1 md:gap-3"&gt;
&lt;div class="flex max-w-full flex-col grow"&gt;
&lt;div dir="auto" data-message-author-role="assistant" data-message-id="8778637e-7a32-4e7c-a539-f7b8b9aba45c" data-message-model-slug="gpt-4o"&gt;
&lt;div&gt;
&lt;div class="markdown prose dark:prose-invert w-full break-words dark"&gt;
&lt;p data-start="19" data-end="397" data-is-last-node="" data-is-only-node=""&gt;The DOMPurify library is now integrated as a standard dependency, replacing the previously used forked version. This update improves the maintainability and transparency of the codebase by aligning with standard package management practices. Functionality that relies on DOMPurify remains unchanged, and the library is properly bundled and referenced throughout the application.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="mcetoc_1iipslfhq0"&gt;Supported Platforms Update&lt;/h2&gt;
&lt;h3 id="mcetoc_1j5hknrrm4"&gt;&lt;span style="font-size:inherit;"&gt;Support for OAuth 2.0 token-based authorization with Exchange Online and Sugar email functions&lt;/span&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn"&gt;
&lt;div class="relative flex-col gap-1 md:gap-3"&gt;
&lt;div class="flex max-w-full flex-col grow"&gt;
&lt;div dir="auto" data-message-author-role="assistant" data-message-id="7e91f8eb-92d0-42d3-9eb4-8e0f56738542" data-message-model-slug="gpt-4o"&gt;
&lt;div class="markdown prose dark:prose-invert w-full break-words dark"&gt;
&lt;p data-start="97" data-end="525"&gt;Sugar now supports sending emails via Microsoft Exchange Online using OAuth 2.0, in alignment with&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://learn.microsoft.com/en-us/answers/questions/2202498/basic-authentication-for-smtp-deprecation"&gt;Microsoft&amp;rsquo;s announcement to permanently disable Basic Authentication for SMTP AUTH in Exchange Online starting September 2025.&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;This enhancement ensures continued compatibility and improved security by allowing outbound email functionality to operate without relying on SMTP when using Microsoft OAuth 2.0.&lt;/p&gt;
&lt;p data-start="527" data-end="849"&gt;With this update, when an outbound email account is configured using Microsoft OAuth 2.0, Sugar will send emails through the Microsoft Graph API instead of SMTP. This change is specific to Exchange Online accounts using Microsoft OAuth and does not impact other connection types, such as username/password or Google OAuth.&lt;/p&gt;
&lt;p data-start="851" data-end="1247"&gt;To enable this functionality, administrators must register an application in Azure with the necessary API permissions (Mail.Send, Mail.Read, IMAP.AccessAsUser.All, offline_access) and configure the Microsoft connector in Sugar with the application&amp;#39;s client ID and secret. Once authorized, the email status will indicate successful authentication, allowing emails to be sent using the new method.&lt;/p&gt;
&lt;p data-start="1249" data-end="1596"&gt;This transition will occur automatically, requiring no action from customers. However, the shift to the Microsoft Graph API will require adjusting OAuth scopes,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;necessitating users to re-authorize their email accounts in Sugar&lt;/strong&gt;.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn"&gt;
&lt;div class="relative flex-col gap-1 md:gap-3"&gt;
&lt;div class="flex max-w-full flex-col grow"&gt;
&lt;div dir="auto" data-message-author-role="assistant" data-message-id="7e91f8eb-92d0-42d3-9eb4-8e0f56738542" data-message-model-slug="gpt-4o"&gt;
&lt;div&gt;
&lt;div class="markdown prose dark:prose-invert w-full break-words dark"&gt;
&lt;p data-start="1249" data-end="1596"&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;This improvement has been backported to&amp;nbsp;Sugar&amp;nbsp;25.1.x.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="mcetoc_1ff80k9i33"&gt;Configurability&amp;nbsp;updates&lt;/h2&gt;
&lt;h3 id="mcetoc_1iv0j7tfp1"&gt;&lt;a id="Improved_Control_Over_Field_Updates_by_Proces_Definitions"&gt;&lt;/a&gt;Improved Control Over Field Updates by Process Definitions&lt;/h3&gt;
&lt;p&gt;We are enhancing the control over the fields that can be modified by Process Definitions. By default, only fields that are visible in the user interface will be eligible for updates. Fields not exposed on the frontend will no longer be modified automatically by these processes, in other words, if the field is available to be added to any UI it means it is exposed, doesn&amp;#39;t necessarily mean it has be in a Record View for example.&lt;/p&gt;
&lt;p data-start="74" data-end="312"&gt;For teams needing more specific behavior, it&amp;rsquo;s now possible to configure a denylist of fields that should not be updated by Process Definitions. This provides greater flexibility and precision in how automation interacts with your data. You can define this using a new&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="346" data-end="361"&gt;$sugar_config&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;setting. For example, the configuration below prevents&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="417" data-end="435"&gt;field_to_block_1&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="440" data-end="458"&gt;field_to_block_2&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;ModuleName1&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;from being updated by Process Definitions:&lt;/p&gt;
&lt;p data-start="504" data-end="747"&gt;&lt;pre class="ui-code" data-mode="php"&gt;$sugar_config[&amp;#39;bpm_denylisted_fields&amp;#39;] = [
  &amp;#39;ModuleName1&amp;#39; =&amp;gt; [&amp;#39;field_to_block_1&amp;#39;, &amp;#39;field_to_block_2&amp;#39;],
  &amp;#39;ModuleName2&amp;#39; =&amp;gt; [&amp;#39;another_field_to_block&amp;#39;],
];
&lt;/pre&gt;&lt;/p&gt;
&lt;p data-start="641" data-end="780"&gt;&lt;strong data-start="641" data-end="650"&gt;Note:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;When this&amp;nbsp;sugar_config is set, only the specified fields will be blocked &amp;mdash; regardless of their visibility in the user interface.&lt;/p&gt;
&lt;h3 id="mcetoc_1f77psegv7"&gt;Sugar Config Settings&lt;/h3&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;strong&gt;Setting Name&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;strong&gt;Default&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;strong&gt;Override Example&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;bpm_denylisted_fields&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;[]&lt;/td&gt;
&lt;td&gt;&lt;span&gt;$sugar_config['bpm_denylisted_fields'] = [ &amp;#39;ModuleName1&amp;#39; =&amp;gt; ['field_to_block_1', 'field_to_block_2'], &amp;#39;ModuleName2&amp;#39; =&amp;gt; ['another_field_to_block']];&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;This new config will be used to include specific fields in the &amp;#39;allowed fields to be modified by BPM&amp;#39;.&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;features.&lt;span&gt;enableStrictContentSecurityPolicy&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;false&lt;/td&gt;
&lt;td&gt;&lt;span&gt;$sugar_config['features']['enableStrictContentSecurityPolicy'] = true;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;If enabled, the application will enforce a strict Content Security Policy (CSP)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="mcetoc_1f77psegvb"&gt;Removed Functions / Libraries / Features&lt;/h2&gt;
&lt;h3 id="mcetoc_1j5hknrrm5"&gt;Removal of Legacy Modules Metadata Extension Path&lt;/h3&gt;
&lt;p&gt;As part of our ongoing efforts to modernize Sugar Core, this release removes support for the legacy&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;include/modules_override.php&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;file path used for module metadata customizations. This path was used in versions prior to Sugar 6.3.x but is no longer recommended or necessary. You&amp;nbsp;should be using the supported&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://support.sugarcrm.com/smartlinks/developer_guide/architecture/extensions/include/"&gt;Extensions Framework&lt;/a&gt;&amp;nbsp;with the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="534" data-end="543"&gt;Include&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;extension for all metadata customizations.&lt;/p&gt;
&lt;p&gt;A new healthcheck&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;bucket &amp;#39;F&amp;#39;&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(manual customization) has been added to ensure compatibility to this version.&lt;/p&gt;
&lt;h3 id="mcetoc_1iv0j7tfp2" data-start="83" data-end="136"&gt;Removal of&amp;nbsp;Unused Platform&lt;/h3&gt;
&lt;p&gt;As part of ongoing SugarCore cleanup efforts, the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;kiosk&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;platform has been removed to streamline with our products and services.&lt;/p&gt;
&lt;h3 id="mcetoc_1fda51lpf4"&gt;Removing gulp-filter JS lib&lt;/h3&gt;
&lt;p&gt;The&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;gulp-filter&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;library has been removed from the project after verifying it was only used in a single instance within&amp;nbsp;a Gulp task. Its functionality has been replaced with a native filter function applied directly within the stream. This change retains the original filtering logic and preserves the existing behavior and output of the task.&lt;/p&gt;
&lt;h3 id="mcetoc_1fda51lpf4"&gt;Removing uglify-js and socket.io JS lib&lt;/h3&gt;
&lt;p&gt;Removed the legacy socket.io dependency from package.json as it was no longer used anywhere in the codebase. This also removed its transitive dependency uglify-js.&lt;/p&gt;
&lt;h2 id="mcetoc_1g4djj0su0"&gt;Data Changes&lt;/h2&gt;
&lt;h3 id="mcetoc_1gj9pc6si2"&gt;New Indexes for Calls and Meetings&lt;/h3&gt;
&lt;p&gt;To enhance the performance of queries involving Calls and Meetings using our FilterApi, we&amp;rsquo;ve added new indexes to the corresponding module definitions (vardefs). These indexes are designed to optimize data retrieval on such modules by our FilterApi:&lt;/p&gt;
&lt;ul&gt;
&lt;li data-renderer-start-pos="1"&gt;&lt;code&gt;idx_calls_series_event_deleted&lt;/code&gt;&amp;nbsp;
&lt;ul&gt;
&lt;li data-renderer-start-pos="1"&gt;&amp;#39;series_deleted&amp;#39;, &amp;#39;event_type&amp;#39;, &amp;#39;deleted&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-renderer-start-pos="1"&gt;&lt;code&gt;idx_calls_date_mod_rep_parent_id&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;-&amp;nbsp;
&lt;ul&gt;
&lt;li data-renderer-start-pos="1"&gt;&amp;#39;date_modified&amp;#39;, &amp;#39;repeat_parent_id&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="mcetoc_1f77psegvl"&gt;Platform Updates&lt;/h2&gt;
&lt;h3 id="mcetoc_1ij671fi12"&gt;Scheduler Jobs Now Run on a Consistent Timezone&lt;/h3&gt;
&lt;p data-start="224" data-end="596"&gt;In this release, we&amp;#39;ve implemented a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="261" data-end="289"&gt;long-awaited enhancement&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;that brings consistency to scheduler job execution times. Previously, job execution depended on the timezone of the scheduler&amp;#39;s assigned user.&amp;nbsp;As Sugar automatically updates user timezones&amp;mdash;and admin users might share credentials across different locations&amp;mdash;this led to jobs running at&amp;nbsp;different times.&lt;/p&gt;
&lt;p data-start="598" data-end="771"&gt;With this update, scheduler jobs now run based on a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="650" data-end="686"&gt;centralized (UTC), consistent timezone&lt;/strong&gt;, eliminating timezone-related surprises and ensuring reliable, predictable behavior.&lt;/p&gt;
&lt;ul data-start="1098" data-end="1370"&gt;
&lt;li data-start="935" data-end="1013"&gt;
&lt;p data-start="1100" data-end="1247"&gt;In the Scheduler UI, execution times are shown in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="1150" data-end="1173"&gt;your local timezone&lt;/strong&gt;, so you always know exactly when it will trigger&amp;mdash;no mental math required.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1248" data-end="1370"&gt;
&lt;p data-start="1250" data-end="1370"&gt;Existing schedulers remain unchanged, but we now clearly display their scheduled times based on your profile&amp;rsquo;s timezone.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="mcetoc_1j5hknrrm6"&gt;Enhanced SystemProcessLock Handling to Prevent Redundant Execution During Admin QRR&lt;/h3&gt;
&lt;p data-start="134" data-end="681"&gt;Resolved an issue where regular user requests could unintentionally trigger cascading expensive operations, such as metadata and language cache rebuilds, during or immediately after an admin-initiated Quick Repair &amp;amp; Rebuild (QRR). Previously, when cache files were deleted by an admin QRR, regular users encountering missing cache would queue behind a system-level lock and subsequently attempt to perform the same rebuild operations once the lock was released. This behavior caused unnecessary server load, timeouts, and a degraded user experience.&lt;/p&gt;
&lt;p data-start="683" data-end="1067"&gt;With this enhancement, the lock handling logic has been updated to prevent non-admin users from executing expensive operations when the lock cannot be acquired. Instead, such requests will now safely return without action, ensuring that only admin users can initiate these processes. This significantly reduces server load and improves system responsiveness during cache rebuilding scenarios.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn"&gt;
&lt;div class="relative flex-col gap-1 md:gap-3"&gt;
&lt;div class="flex max-w-full flex-col grow"&gt;
&lt;div dir="auto" data-message-author-role="assistant" data-message-id="7e91f8eb-92d0-42d3-9eb4-8e0f56738542" data-message-model-slug="gpt-4o"&gt;
&lt;div&gt;
&lt;div class="markdown prose dark:prose-invert w-full break-words dark"&gt;
&lt;p data-start="1249" data-end="1596"&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;This improvement has been backported to&amp;nbsp;Sugar&amp;nbsp;25.1.x.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="mcetoc_1j5hknrrm7"&gt;Improved Deep Linking Support for SugarCRM on Mobile Devices&lt;/h3&gt;
&lt;p data-start="302" data-end="605"&gt;In this release, we have implemented improvements to the experience of opening Sugar links from mobile devices. This update addresses inconsistent behaviors when accessing CRM links from email or messages, ensuring a more predictable and seamless user journey on both Android and iOS platforms.&lt;/p&gt;
&lt;p data-start="612" data-end="633"&gt;&lt;strong data-start="612" data-end="633"&gt;What&amp;#39;s new:&lt;/strong&gt;&lt;/p&gt;
&lt;ul data-start="635" data-end="1391"&gt;
&lt;li data-start="635" data-end="869"&gt;
&lt;p data-start="637" data-end="869"&gt;&lt;strong data-start="637" data-end="664"&gt;Universal Link Support:&amp;nbsp;&lt;/strong&gt;SugarCRM mobile app now uses&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://developer.apple.com/documentation/xcode/allowing-apps-and-websites-to-link-to-your-content/"&gt;Universal Links&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(iOS) and App Links (Android) to seamlessly redirect users from supported emails/messages directly into the app&amp;mdash;bypassing the mobile browser when possible.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="871" data-end="1043"&gt;
&lt;p data-start="873" data-end="1043"&gt;&lt;strong data-start="873" data-end="895"&gt;Smart App Prompts:&amp;nbsp;&lt;/strong&gt;Users without the SugarCRM mobile app installed are now prompted to download it from the App Store or Google Play when tapping a SugarCRM link.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1045" data-end="1212"&gt;
&lt;p data-start="1047" data-end="1212"&gt;&lt;strong data-start="1047" data-end="1083"&gt;Improved Workflow Link Behavior:&amp;nbsp;&lt;/strong&gt;Links generated from workflows (e.g., SugarBPM) now attempt to open in the app rather than defaulting to the mobile browser.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1214" data-end="1391"&gt;
&lt;p data-start="1216" data-end="1391"&gt;&lt;strong data-start="1216" data-end="1246"&gt;Browser Consistency Fixes:&amp;nbsp;&lt;/strong&gt;Addressed inconsistent behavior across third-party browsers (e.g., Edge, Chrome) especially on iPhone, ensuring reliable app-switch prompts.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="2453" data-end="2679"&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Support for this feature on custom or on-premise domains requires configuration changes and updates to the Mobile App to include those domains. Customers should contact support for implementation guidance.&lt;/p&gt;
&lt;h3 id="mcetoc_1ij671fi12"&gt;Enhanced Content Security Policy (CSP) for Improved Application Security&lt;/h3&gt;
&lt;p data-start="207" data-end="462"&gt;As part of our ongoing commitment to application security, we are introducing&amp;nbsp;&lt;strong data-start="287" data-end="327"&gt;Strict Content Security Policy (CSP)&lt;/strong&gt;. This policy significantly reduces the risk of malicious script execution by restricting the sources from which scripts can be loaded.&lt;/p&gt;
&lt;p data-start="464" data-end="531"&gt;To support this enhancement, we&amp;rsquo;ve refactored the frontend code to:&lt;/p&gt;
&lt;ul data-start="533" data-end="640"&gt;
&lt;li data-start="533" data-end="588"&gt;
&lt;p data-start="535" data-end="588"&gt;Remove inline event handlers and&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="568" data-end="581"&gt;javascript:&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;URIs&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="589" data-end="640"&gt;
&lt;p data-start="591" data-end="640"&gt;Add&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="595" data-end="602"&gt;nonce&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;attributes to all&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="621" data-end="631"&gt;&amp;lt;script&amp;gt;&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;elements&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="642" data-end="717"&gt;These changes ensure that only trusted scripts are executed in the browser.&lt;/p&gt;
&lt;p data-start="719" data-end="906"&gt;This feature is&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="735" data-end="755"&gt;configurable via&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="756" data-end="768"&gt;App.config&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(&lt;code data-start="770" data-end="834"&gt;$sugar_config['features']['enableStrictContentSecurityPolicy']&lt;/code&gt;) and requires a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="851" data-end="885"&gt;QRR&lt;/strong&gt;&amp;nbsp;after being toggled.&lt;/p&gt;
&lt;p data-start="908" data-end="1101"&gt;The rollout will follow a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="934" data-end="953"&gt;phased approach&lt;/strong&gt;, beginning in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="968" data-end="988"&gt;report-only mode&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;to monitor violations, with full enforcement to follow in both core and customization layers in future releases.&lt;/p&gt;
&lt;h3 id="mcetoc_1iv32kek40"&gt;Declarative Metadata&amp;nbsp;Refactoring&lt;/h3&gt;
&lt;p&gt;As part of our ongoing efforts to make Sugar&amp;#39;s metadata fully declarative and serializable, this release includes the first phase of refactoring non-declarative components within Sugar Core. Previously, some metadata included conditional logic that needed refactoring. We&amp;rsquo;ve begun restructuring&amp;nbsp;some&amp;nbsp;areas to align with a declarative format, laying the groundwork for&amp;nbsp;the new Metadata generation we&amp;#39;ve discussed&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="/dev-club/m/event-recaps/3010"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="mcetoc_1j5hknrrm8"&gt;Replace the TCPDF with SugarPdf in MapsGenerator&lt;/h3&gt;
&lt;p&gt;In this release, we&amp;#39;ve updated&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="217" data-end="258"&gt;MapsGenerator.php::createPDF()&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;to use SugarPDF instead of directly using TCPDF.&lt;/p&gt;
&lt;h3 id="mcetoc_1j5hknrrm9"&gt;Added Backend Framework for Dropdown Classifications&lt;/h3&gt;
&lt;p data-start="130" data-end="389"&gt;In this release, we&amp;#39;ve introduced backend support for a generic dropdown classification framework as part of the Dropdown Editor enhancements. This replaces hardcoded logic (e.g.,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;sales_stage_dom&lt;/code&gt;) with a scalable, metadata-driven approach, enabling configurable mappings between dropdown values and classification categories..&lt;/p&gt;
&lt;p data-start="391" data-end="403"&gt;&lt;strong&gt;Key details:&lt;/strong&gt;&lt;/p&gt;
&lt;ul data-start="404" data-end="871"&gt;
&lt;li data-start="404" data-end="488"&gt;
&lt;p data-start="406" data-end="488"&gt;Classifications are defined using metadata and stored via the extension framework.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="489" data-end="669"&gt;
&lt;p data-start="491" data-end="517"&gt;A classification includes:&lt;/p&gt;
&lt;ul data-start="520" data-end="669"&gt;
&lt;li data-start="520" data-end="541"&gt;
&lt;p data-start="522" data-end="541"&gt;A unique identifier&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="544" data-end="602"&gt;
&lt;p data-start="546" data-end="602"&gt;Translatable classification options (&lt;code data-start="583" data-end="601"&gt;app_list_strings&lt;/code&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="605" data-end="669"&gt;
&lt;p data-start="607" data-end="669"&gt;Mappings between dropdown values and classification categories&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-start="670" data-end="794"&gt;
&lt;p data-start="672" data-end="794"&gt;No API or UI changes in this implementation &amp;mdash; a helper class is provided to handle loading and saving classification data.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="795" data-end="871"&gt;
&lt;p data-start="797" data-end="871"&gt;Designed to support future use with multiple classifications per dropdown.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="873" data-end="956"&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;This implementation does&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="904" data-end="911"&gt;not&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;expand classifications to all dropdowns yet,&amp;nbsp;&lt;code&gt;sales_stage_dom&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;only&lt;/p&gt;
&lt;h3 id="mcetoc_1j5hknrrma"&gt;Prevent Data Loss on Market MLP Uninstallation and upgrade&lt;/h3&gt;
&lt;p&gt;In this release, we&amp;#39;re addressing a critical issue where upgrading to Market MLP version 25.1 resulted in unintended data loss, specifically affecting connector setting configurations that were expected to persist through the uninstallation process. Additionally, the upgrade mechanism has been improved to ensure proper cleanup of residual files and directories from previous installations, which previously caused version conflicts, broken dependencies, and unexpected behavior in the new version. These enhancements ensure a smoother and more reliable upgrade experience..&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&amp;nbsp;&lt;span&gt;If on upgrade customer does not have active market license then the features would not show up after upgrade even if they have MLP installed.&lt;/span&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1j5hknrrmb"&gt;SugarLive&amp;nbsp;compatibility with the V2 console for Amazon Connect&lt;/h3&gt;
&lt;p&gt;For SugarLive, Sugar provides SugarServeSampleBot.zip which was only compatible with the Amazon Lex V1 console. However, in Amazon Connect, there is a warning about the Lex V1 console being discontinued after September 15, 2025. We have now implemented and updated the SugarServeSampleBot.zip file to make it compatible with the V2 console.&lt;/p&gt;
&lt;h3 id="mcetoc_1gb30ctl1e"&gt;Bug Fixes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed an issue with the FilterApi that was returning extra fields in the response payload even&amp;nbsp;when filtering by using args&amp;nbsp;&lt;code&gt;fields.&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Fixed QRR Occasionally Fails to Rebuild Module/Class Cache, Causing Outages and UI Errors caused by race conditions during concurrent or overlapping QRR executions or user requests during cache rebuild.&lt;/li&gt;
&lt;li&gt;Fixed an issue for a specific scenario where user licenses were failing to update&lt;/li&gt;
&lt;li&gt;Fixed an issue that a&amp;nbsp;calculated field using the countConditional function in combination with a relate field (e.g. countConditional($notes,&amp;quot;name&amp;quot;,createList(&amp;quot;test&amp;quot;))) caused a &amp;ldquo;Too many tables&amp;rdquo; error when a large number of one-to-one relationships were created between modules&lt;/li&gt;
&lt;li&gt;Fixed an issue on&amp;nbsp;Uncaught TypeError: Sugarcrm\\Sugarcrm\\Security\\Escaper\\Escape::html() caught on upgrade from 14.0.1 to 25.1&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Fixed an issue where Sugar Automate licenses and UI elements disappear after manual license validation and only reappear when an online validation is performed.&lt;/li&gt;
&lt;li&gt;Fixed an issue with our silentUpgrader that, in some cases,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;the healthcheck was still executed during the upgrade&amp;nbsp;even if the instance was configured with&lt;/span&gt;&amp;nbsp;&amp;ldquo;Bypass Healthcheck&amp;rdquo; option enabled.&lt;/li&gt;
&lt;li&gt;Fixed an issue where&amp;nbsp;&lt;span&gt;People names (Contacts, Leads, Users) currently do not have a display option for how names are traditionally written in Chinese.&amp;nbsp;The LastFirst name format has been added to the default list to support proper name display across the product (e.g., Contacts list view, record view, Lead, and Assigned To fields)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Fixed an issue on the Case Summary Chart and Opportunity Metrics Chart (migrated from Sucrose to Chart.JS) where, if only one label was present, it&amp;nbsp;displayed at the bottom of the chart in a space too small to display it properly&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Fixed an issue where&amp;nbsp;Users&amp;nbsp;were receiving a permission error when trying to use Doc Merge for Quote records and have {currency_name.iso4217} in the template.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Fixed an issue where regular users triggered redundant rebuilds after admin QRR due to SystemProcessLock, causing server overload due to multiple expensive operations running simultaneously.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Fixed an issue where Generating a Quote from the Revenue Line Item detail view doesn&amp;#39;t allow the generated Quote to be saved.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Fixed an issue where Update Momentum of In-Progress Smart Guides&amp;#39; scheduler fails on NULL score or point values.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Fixed an issue where a single email failure due to a Laminas error could halt the entire import scheduler, leaving the email unread and causing repeated failures.&lt;/li&gt;
&lt;li&gt;Fixed an issue where&amp;nbsp;Developer user encounters error when editing Timeline. Developer only users will not see this option but users with Admin and Developer access will.&lt;/li&gt;
&lt;li&gt;Fixed an issue when a user has a profile date format that is not ISO compliant, the date outputted into a PDF is not valid in ISO format, Sugar was using current date but should interpret that date&amp;nbsp;correctly.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="mcetoc_1ij671fi12"&gt;Sugar Core Security Updates&lt;/h3&gt;
&lt;p&gt;As part of our ongoing efforts to keep Sugar clean, fast, reliable, and most importantly secure, we have updated&amp;nbsp;Sugar Core code in different areas of the application such as Package Scanner, Studio, Module Installer, UI rendering, API endpoints, Legacy SOAP API, File Uploads, Portal, PII Fields, ACL rules, Legacy Workflows, Smart Guides, HTTP Headers and BWC modules. Not only those changes but we&amp;#39;ve cleaned up and improve our logging messages around deprecations.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn"&gt;
&lt;div class="relative flex-col gap-1 md:gap-3"&gt;
&lt;div class="flex max-w-full flex-col grow"&gt;
&lt;div dir="auto" data-message-author-role="assistant" data-message-id="7e91f8eb-92d0-42d3-9eb4-8e0f56738542" data-message-model-slug="gpt-4o"&gt;
&lt;div&gt;
&lt;div class="markdown prose dark:prose-invert w-full break-words dark"&gt;
&lt;p data-start="1249" data-end="1596"&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;Some of those security improvements&lt;/span&gt;&amp;nbsp;were backported to&amp;nbsp;Sugar&amp;nbsp;25.1.x.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="mcetoc_1gqa6vaoc8"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;
&lt;div class="code-block sc-ezYOhE gBYPJJ"&gt;
&lt;h2 id="mcetoc_1hgt5tqlsa"&gt;Healthcheck&amp;nbsp;Updates&lt;/h2&gt;
&lt;div class="code-block sc-ezYOhE gBYPJJ"&gt;
&lt;div class="code-block sc-ezYOhE gBYPJJ"&gt;
&lt;ul&gt;
&lt;li&gt;Built a health scanner tool to detect cloud instances using&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;SugarMarket MLP&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;versions&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&amp;lt; 2.2&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;and send it to&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;bucket F&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Built a healthcheck to detect and support&amp;nbsp;the removal of the legacy&amp;nbsp;&lt;code&gt;include/modules_override.php&lt;/code&gt;&amp;nbsp;file path and send it to&amp;nbsp;&lt;code&gt;bucket F&lt;/code&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="code-block sc-ezYOhE gBYPJJ"&gt;
&lt;div class="code-block sc-ezYOhE gBYPJJ"&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: Sugar 25.2&lt;/div&gt;
</description></item><item><title>Sugar 25.2 Customization Guide</title><link>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/1013/sugar-25-2-customization-guide/revision/2</link><pubDate>Mon, 29 Sep 2025 13:40:36 GMT</pubDate><guid isPermaLink="false">5c521d64-519d-47a6-9065-134618b211bf:3307f36c-90a1-4f3c-b6a7-d6d6641bf5cb</guid><dc:creator>Rafael Fernandes</dc:creator><comments>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/1013/sugar-25-2-customization-guide#comments</comments><description>Revision 2 posted to Dev Tutorials by Rafael Fernandes on 9/29/2025 1:40:36 PM&lt;br /&gt;
&lt;p&gt;The purpose of this document is to provide insight to Sugar Developers for upgrading custom Sugar code, extensions, and integrations to the Sugar 25.2 release. This guide focuses on changes in&amp;nbsp;&lt;span&gt;Sugar 25.2&lt;/span&gt;&amp;nbsp;that could cause an immediate impact on Sugar customizations and integrations built for earlier Sugar versions.&lt;/p&gt;
&lt;p&gt;Please check out the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="/dev-club/m/event-recaps/3045"&gt;Sugar 25.2 Developer Webinar recording&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;for more developer highlights.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;For Admin and End User release notes, please visit the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://support.sugarcrm.com/SmartLinks/Release_Notes/25.2.0_Release_Notes/"&gt;Sugar 25.2.0 Release Notes&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="mcetoc_1ff80k9i32"&gt;User Experience Updates&lt;/h2&gt;
&lt;h3 id="mcetoc_1gb30ctl1e"&gt;&lt;span style="font-size:inherit;"&gt;&lt;span class="TextRun SCXW218900661 BCX0" lang="EN" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW218900661 BCX0" data-ccp-parastyle="heading 2"&gt;Modernized Dropdown Editor&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-start="232" data-end="471"&gt;In this release, we&amp;rsquo;ve modernized the Dropdown Editor UI, transitioning from BWC to Sidecar for a cleaner, more streamlined admin experience. Admins can now manage entire dropdown lists from a single view&amp;mdash;no more editing one row at a time.&lt;/p&gt;
&lt;p data-start="115" data-end="326"&gt;&lt;strong data-start="328" data-end="343"&gt;What&amp;rsquo;s new:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li data-start="115" data-end="326"&gt;
&lt;p&gt;&lt;strong data-start="492" data-end="516"&gt;Redesigned Interface&lt;/strong&gt;: New Sidecar layout with updated header, inline editing, and consistent list view styling. Supports dark mode.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="115" data-end="326"&gt;
&lt;p&gt;&lt;strong&gt;Formatting Flow Fix &amp;amp; Toggle Control:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Chart colors no longer drive dropdown styling; instead, formatting is now defined at the dropdown level and pushed to charts for consistency..&lt;/p&gt;
&lt;ul&gt;
&lt;li data-start="296" data-end="364"&gt;
&lt;p data-start="298" data-end="364"&gt;New&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="302" data-end="337"&gt;&amp;quot;Enable formatting in dropdown&amp;quot;&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;toggle added per dropdown.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="367" data-end="486"&gt;
&lt;p data-start="369" data-end="486"&gt;Toggle is&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="379" data-end="401"&gt;enabled by default&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;for:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="407" data-end="424"&gt;sales_stage_dom&lt;/code&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="426" data-end="443"&gt;quote_stage_dom&lt;/code&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="445" data-end="462"&gt;case_status_dom&lt;/code&gt;, and&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="468" data-end="485"&gt;lead_status_dom&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="489" data-end="580"&gt;
&lt;p data-start="491" data-end="580"&gt;When&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="496" data-end="508"&gt;disabled&lt;/strong&gt;, formatting is hidden in the UI but preserved and still used in charts.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="583" data-end="683"&gt;
&lt;p data-start="585" data-end="683"&gt;When&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="590" data-end="601"&gt;enabled&lt;/strong&gt;, users can customize styles (colors, fonts) via the conditional formatting panel.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="686" data-end="803"&gt;
&lt;p data-start="688" data-end="803"&gt;Chart colors fallback to the chart palette for items without formatting; white and black are excluded and replaced.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Conditional Formatting&lt;/strong&gt;: New Conditional Format Options control panel that allows&lt;span&gt;&amp;nbsp;users to customize the appearance of dropdown values using styles, icons, and colors&lt;/span&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The following stock/out-of-the-box dropdowns were predefined with conditional formatting for awareness and usability:&amp;nbsp;&lt;code&gt;sales_stage_dom&lt;/code&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;quote_stage_dom&lt;/code&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;case_status_dom&lt;/code&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;lead_status_dom&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Formatting will be reflected as soon as saved on List View, Record View, Focus Drawer, Reports, Other components using the dropdown values, All views in sugar&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Even if user selects RGB, we only reflect Hex number in the input&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong data-start="630" data-end="646"&gt;Add New Rows&lt;/strong&gt;: Easily add multiple items with editable fields for Display Label and Classification (for&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="737" data-end="754"&gt;sales_stage_dom&lt;/code&gt;). Only completed rows are saved.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="790" data-end="897"&gt;
&lt;p&gt;&lt;strong data-start="790" data-end="809"&gt;Improved Search&lt;/strong&gt;: Real-time search across Item Name and Display Label fields with partial match support.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="900" data-end="1048"&gt;
&lt;p&gt;&lt;strong data-start="900" data-end="922"&gt;Restore to Default&lt;/strong&gt;: Revert dropdowns to their original out-of-the-box (OOTB) state, including default sort order. Available only for OOTB lists.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1051" data-end="1148"&gt;
&lt;p&gt;&lt;strong data-start="1051" data-end="1084"&gt;Bulk Editing &amp;amp; Reduced Clicks&lt;/strong&gt;: Edit multiple rows at once and save all changes in one action.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1151" data-end="1272"&gt;
&lt;p&gt;&lt;strong data-start="1151" data-end="1176"&gt;Sort by Display Label&lt;/strong&gt;: New sort button allows ascending/descending sort; order persists across sessions and is saved.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1275" data-end="1392"&gt;
&lt;p&gt;&lt;strong data-start="1275" data-end="1304"&gt;Inline Editing &amp;amp; Deletion&lt;/strong&gt;: Edit Display Label and Classification fields directly; delete items with confirmation.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1395" data-end="1487"&gt;
&lt;p&gt;&lt;strong data-start="1395" data-end="1423"&gt;Drag-and-Drop Reordering&lt;/strong&gt;: Rearrange items via drag-and-drop. Changes are saved on click.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1490" data-end="1579"&gt;
&lt;p&gt;&lt;strong data-start="1490" data-end="1516"&gt;Unsaved Change Warning&lt;/strong&gt;: Users are prompted before navigating away from unsaved edits.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Devs can still define&amp;nbsp;custom styles (e.g.,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;backgroundColor, textColor, icon, iconColor&lt;/code&gt;) for dropdown fields using extension framework (&lt;code&gt;custom/application/Ext/DropdownsStyle/dropdowns_style.ext.php&lt;/code&gt;).&lt;/p&gt;
&lt;h3 id="mcetoc_1gb30ctl1e"&gt;Adding support to Shared Drive files on Google Drive&lt;/h3&gt;
&lt;p data-start="232" data-end="471"&gt;The Google Drive connector for Sugar has been enhanced to support access to shared files. Users can now interact with files that are shared with them or located in Shared Drives. This includes the ability to set a Shared Drive as the root path, define variable file paths on record views, and seamlessly navigate through folders within Shared Drives. Additionally, users can switch between viewing files in &amp;quot;My Files,&amp;quot; &amp;quot;Shared with me,&amp;quot; and Shared Drives. If a user attempts to access a Shared Drive they do not have permission to view, a message will appear within the dashlet indicating the lack of access, with the option to navigate to an accessible area instead.&lt;/p&gt;
&lt;div&gt;
&lt;div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn"&gt;
&lt;div class="relative flex-col gap-1 md:gap-3"&gt;
&lt;h3 id="mcetoc_1j5hknrrm0"&gt;Enable Row-Level Actions in List View Dashlets&lt;/h3&gt;
&lt;div&gt;
&lt;div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn"&gt;
&lt;div class="relative flex-col gap-1 md:gap-3"&gt;
&lt;div class="flex max-w-full flex-col grow"&gt;
&lt;div dir="auto" data-message-author-role="assistant" data-message-id="e60a4390-8308-4251-a10b-5a6239bb908d" data-message-model-slug="gpt-4o"&gt;
&lt;div class="markdown prose dark:prose-invert w-full break-words dark"&gt;
&lt;p data-start="19" data-end="705" data-is-last-node="" data-is-only-node=""&gt;In this release, we&amp;#39;ve&amp;nbsp;added row-level actions on List view dashlets, enabling users to take immediate action on records directly within dashboards and Focus Drawers. This improvement aligns with Sugar&amp;rsquo;s goal of&amp;nbsp;UX efficiency, reducing clicks and streamlining workflows. The available actions now mirror those found in the standard module list views, using the familiar action menu design for consistency. The preview option has been intentionally excluded to suit the context of dashlets.&lt;/p&gt;
&lt;div&gt;
&lt;div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn"&gt;
&lt;div class="relative flex-col gap-1 md:gap-3"&gt;
&lt;div class="flex max-w-full flex-col grow"&gt;
&lt;div dir="auto" data-message-author-role="assistant" data-message-id="269059f9-331f-43d5-a7e5-913f02e20322" data-message-model-slug="gpt-4o"&gt;
&lt;div class="markdown prose dark:prose-invert w-full break-words dark"&gt;
&lt;p data-start="671" data-end="888" data-is-last-node="" data-is-only-node=""&gt;&lt;strong data-start="671" data-end="680"&gt;Note:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;This functionality has been implemented as a new plugin and integrated into relevant views. Custom or extended views that include inline editing may require a review to ensure compatibility with this update.&lt;/p&gt;
&lt;h3 id="mcetoc_1j5hknrrm1"&gt;Opportunity&amp;nbsp;Delta&amp;nbsp;in List and Record Views&lt;/h3&gt;
&lt;div&gt;
&lt;div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn"&gt;
&lt;div class="relative flex-col gap-1 md:gap-3"&gt;
&lt;div class="flex max-w-full flex-col grow"&gt;
&lt;div dir="auto" data-message-author-role="assistant" data-message-id="e60a4390-8308-4251-a10b-5a6239bb908d" data-message-model-slug="gpt-4o"&gt;
&lt;div class="markdown prose dark:prose-invert w-full break-words dark"&gt;
&lt;p&gt;To improve visibility into how opportunities evolve over time, we&amp;#39;ve introduced a new&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;Change Over Time&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;dropdown labeling &amp;quot;Show changes&amp;quot; across Opportunity list views (module and subpanels), record views, and dashlets (LV &amp;amp; RV). This enables sellers and managers to quickly see cumulative changes without piecing together discrete audit log entries.&lt;/p&gt;
&lt;p data-start="518" data-end="535"&gt;&lt;strong data-start="518" data-end="535"&gt;Key Features:&lt;/strong&gt;&lt;/p&gt;
&lt;ul data-start="536" data-end="941"&gt;
&lt;li data-start="536" data-end="650"&gt;
&lt;p data-start="538" data-end="650"&gt;&lt;strong data-start="538" data-end="576"&gt;New Time-Based Comparison Dropdown&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;with four options:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="596" data-end="602"&gt;None&lt;/code&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="604" data-end="617"&gt;Last 7 days&lt;/code&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="619" data-end="633"&gt;Last 14 days&lt;/code&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="635" data-end="649"&gt;Last 30 days&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="651" data-end="736"&gt;
&lt;p data-start="653" data-end="736"&gt;Compares current opportunity data to its value at the end of the selected past day.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="737" data-end="835"&gt;
&lt;p data-start="739" data-end="765"&gt;Highlights value changes in::&lt;/p&gt;
&lt;ul data-start="768" data-end="835"&gt;
&lt;li data-start="768" data-end="787"&gt;
&lt;p data-start="770" data-end="787"&gt;&lt;strong data-start="770" data-end="787"&gt;Likely Amount&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="790" data-end="815"&gt;
&lt;p data-start="792" data-end="815"&gt;&lt;strong data-start="792" data-end="815"&gt;Expected Close Date&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="818" data-end="835"&gt;
&lt;p data-start="820" data-end="835"&gt;&lt;strong data-start="820" data-end="835"&gt;Sales Stage&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul data-start="965" data-end="1259"&gt;
&lt;li data-start="965" data-end="1068"&gt;
&lt;p data-start="967" data-end="1068"&gt;Selection is&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="980" data-end="999"&gt;sticky per view&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(e.g., list view and record view can maintain independent settings).&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1069" data-end="1189"&gt;
&lt;p data-start="1071" data-end="1189"&gt;When navigating using the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="1097" data-end="1111"&gt;focus icon&lt;/strong&gt;, the source view&amp;rsquo;s selection is respected and carried to the target dashlets.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1190" data-end="1259"&gt;
&lt;p data-start="1192" data-end="1259"&gt;If no prior context exists, the default selection is&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="1245" data-end="1258"&gt;Last 7 days&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;This feature leverages historical data available through Sugar&amp;#39;s Enhanced Forecasting and is only available to customers with the Opportunities dataset. For customers without this dataset, the feature will not be functional.&lt;/p&gt;
&lt;h3 id="mcetoc_1iv0j7tfp2" data-start="83" data-end="136"&gt;Add Transcription, Recording, and Summary fields on the Meetings module&lt;/h3&gt;
&lt;p&gt;&lt;span&gt;We&amp;#39;re improving Meetings module in this release by adding transcription, recording and summary fields to the record view in view/edit modes.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1j5hknrrm2"&gt;&lt;span&gt;Dynamic Record View Dashlet Rendering for Flex Relate Fields in Focus Drawer&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;Enhanced the Focus Drawer experience by enabling dynamic rendering (new tab) of related records defined via flex relate (&amp;quot;Relate To&amp;quot;) fields within a Record View Dashlet. Users can now configure a dashlet to automatically display the appropriate related record based on the selected module and record in the flex relate field without needing to manually toggle between module tabs. This&amp;nbsp;improves context access and ensures only relevant record views are shown, improving usability and efficiency when working across related modules.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="mcetoc_1i7u16d9e5"&gt;&lt;span&gt;&lt;span class="TextRun SCXW118627354 BCX0" lang="EN-US" data-contrast="auto"&gt;&lt;span class="NormalTextRun SCXW118627354 BCX0" data-ccp-parastyle="heading 2"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="NormalTextRun SCXW249156672 BCX0"&gt;&lt;/span&gt;&lt;/span&gt;Sugar REST API updates&lt;/h2&gt;
&lt;p&gt;This Sugar release introduces REST&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;code&gt;v11_27&lt;/code&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id="mcetoc_1gjpkca900"&gt;Dropdown Editor&lt;/h3&gt;
&lt;p&gt;Set details of dropdown.&lt;/p&gt;
&lt;div class="content-scrollable-wrapper"&gt;
&lt;pre&gt;PUT &amp;lt;sugar instance&amp;gt;/rest/v11_27/Administration/dropdownEditor/:dropdownName&lt;/pre&gt;
&lt;p&gt;Get details of dropdown that can be changed.&lt;/p&gt;
&lt;div class="content-scrollable-wrapper"&gt;
&lt;pre&gt;GET &amp;lt;sugar instance&amp;gt;/rest/v11_27/Administration/dropdownEditor/:dropdownName&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Create Dropdown DOM issue as a php-file in customer storage directory.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;div class="content-scrollable-wrapper"&gt;
&lt;pre&gt;POST &amp;lt;sugar instance&amp;gt;/rest/v11_27/Administration/dropdownEditor/create&lt;/pre&gt;
&lt;h3 id="mcetoc_1gjpkca900"&gt;Enhancements to&amp;nbsp;Package Builder APIs&amp;rsquo; error handling&lt;/h3&gt;
&lt;p&gt;We have improved our Package Builder API for clear and consistent error codes that are returned for known failure scenarios.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong data-renderer-mark="true"&gt;For Example:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;200 OK, 201 Created, 400 Bad Request, 404 Not Found, 500 Internal Server Error.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul class="ak-ul" data-indent-level="1"&gt;
&lt;li&gt;
&lt;p data-renderer-start-pos="402"&gt;Error messages include actionable context (e.g., missing fields, invalid formats, unsupported package types)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul class="ak-ul" data-indent-level="1"&gt;
&lt;li&gt;
&lt;p data-renderer-start-pos="516"&gt;All existing error-prone areas are covered (e.g., input validation, external service failures, internal exceptions)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul class="ak-ul" data-indent-level="1"&gt;
&lt;li&gt;
&lt;p data-renderer-start-pos="637"&gt;Fallbacks or default behaviors are implemented where appropriate&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul class="ak-ul" data-indent-level="1"&gt;
&lt;li&gt;
&lt;p data-renderer-start-pos="707"&gt;Errors follow our API error response standard (e.g., HTTP status codes, message structure)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The following endpoints were improved:&lt;/p&gt;
&lt;pre&gt;POST &amp;lt;sugar instance&amp;gt;/rest/v11_27/Administration/package/customizations&lt;br /&gt;&lt;br /&gt;POST &amp;lt;sugar instance&amp;gt;/rest/v11_27/Administration/package&lt;br /&gt;&lt;br /&gt;GET &amp;lt;sugar instance&amp;gt;/rest/v11_27/Administration/package/id&lt;br /&gt;&lt;br /&gt;POST &amp;lt;sugar instance&amp;gt;/rest/v11_27/Administration/package/remote&lt;br /&gt;&lt;br /&gt;POST &amp;lt;sugar instance&amp;gt;/rest/v11_27/Administration/package/data&lt;br /&gt;&lt;br /&gt;POST &amp;lt;sugar instance&amp;gt;/rest/v11_27/Administration/package/getRemotePackages&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;h3 id="mcetoc_1gjpkca900"&gt;Historical Deltas API&lt;/h3&gt;
&lt;p&gt;Retrieves historical delta changes for a module based on a timestamp and list of records.&lt;/p&gt;
&lt;div class="content-scrollable-wrapper"&gt;
&lt;pre&gt;POST &amp;lt;sugar instance&amp;gt;/rest/v11_27/historically/delta&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1ff80k9i33"&gt;&lt;code&gt;&lt;/code&gt;&lt;/h3&gt;
&lt;h3 id="mcetoc_1ff80k9i33"&gt;&lt;code&gt;&lt;/code&gt;&lt;/h3&gt;
&lt;h2 id="mcetoc_1ftl03hrg6"&gt;&lt;span style="font-size:inherit;"&gt;PHP Library Upgrades&lt;/span&gt;&lt;/h2&gt;
&lt;h3 id="mcetoc_1iuf1asts0"&gt;Upgrade PHP libs to the latest Minor versions without breaking changes&lt;/h3&gt;
&lt;p&gt;In this release, we&amp;#39;ve updated all minor and patch versions of our PHP libraries as declared in the composer. Since these are minor and patch updates, no breaking changes are expected. The updates primarily include newly generated models and improved PHP version compatibility.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;aws/aws-sdk-php             3.342.19 AWS SDK for PHP - Use Amazon Web Services in your PHP project
doctrine/dbal               3.9.4    Powerful PHP database abstraction layer (DBAL) with many features for da...
egulias/email-validator     4.0.4    A library for validating emails against several RFCs
guzzlehttp/guzzle           7.9.3    Guzzle is a PHP HTTP client library
laminas/laminas-escaper     2.16.0   Securely and safely escape HTML, HTML attributes, JavaScript, CSS, and URLs
league/oauth2-client        2.8.1    OAuth 2.0 Client Library
microsoft/microsoft-graph   2.29.0   The Microsoft Graph SDK for PHP
rector/rector               2.0.11   Instant Upgrade and Automated Refactoring of any PHP code
rlanvin/php-rrule           2.5.2    Lightweight and fast recurrence rules for PHP (RFC 5545)&lt;/pre&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1gj2kiufk0"&gt;PHP-Parser&lt;/h3&gt;
&lt;p&gt;&lt;span&gt;Sugar utilizes a&amp;nbsp;PHP library called&amp;nbsp;&lt;a href="https://github.com/nikic/PHP-Parser/tree/master"&gt;PHP-Parser&lt;/a&gt;&amp;nbsp;Its purpose is to simplify static code analysis and manipulation.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;There are major internal changes in this library, if you use them, please refer to this library&amp;rsquo;s upgrade procedure&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://github.com/nikic/PHP-Parser/blob/master/UPGRADE-5.0.md"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;div class="content-scrollable-wrapper"&gt;
&lt;pre&gt;nikic/php-parser &amp;rarr; ^v5.4.0&lt;/pre&gt;
&lt;/div&gt;
&lt;h3 id="mcetoc_1gj2kiufk0"&gt;&lt;/h3&gt;
&lt;div&gt;&lt;/div&gt;
&lt;h2 id="mcetoc_1ff80k9i33"&gt;&lt;span style="font-size:inherit;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;JS Library Upgrades&lt;/h2&gt;
&lt;div class="content-scrollable-wrapper"&gt;
&lt;h3 id="mcetoc_1fda51lpf4"&gt;Low to Minimum Impact&amp;nbsp;Upgrade on various JS&amp;nbsp;libraries&lt;/h3&gt;
&lt;p&gt;We have performed a patch upgrade on several JavaScript libraries used within our codebase. These upgrades are considered low to minimum impact and should not affect Sugar developers in any meaningful way. Most of the components upgraded are used for internal build processes or tooling.&lt;/p&gt;
&lt;p&gt;There are no known breaking changes associated with these updates.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;@babel/core -&amp;gt; 7.27.4
@sugarcrm/ventana -&amp;gt; 1.1.19
handlebars -&amp;gt; 4.7.8-sugarcrm
babel-loader -&amp;gt; 9.2.1
bootstrap  -&amp;gt; 5.3.7
gulp -&amp;gt; 5.0.1
jquery-migrate -&amp;gt; 3.5.2
sinon -&amp;gt; 21.0.0
tailwindcss -&amp;gt; 3.4.17
underscore -&amp;gt; 1.13.7
webpack -&amp;gt; 5.99.9
eslint-plugin-import -&amp;gt; 2.31.0
cure53/DOMPurify -&amp;gt; 3.2.6
stylelint-config-standard -&amp;gt; 38.0.0&lt;/pre&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1j5hknrrm3"&gt;&lt;span&gt;DOMPurify JS Library&lt;/span&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn"&gt;
&lt;div class="relative flex-col gap-1 md:gap-3"&gt;
&lt;div class="flex max-w-full flex-col grow"&gt;
&lt;div dir="auto" data-message-author-role="assistant" data-message-id="8778637e-7a32-4e7c-a539-f7b8b9aba45c" data-message-model-slug="gpt-4o"&gt;
&lt;div&gt;
&lt;div class="markdown prose dark:prose-invert w-full break-words dark"&gt;
&lt;p data-start="19" data-end="397" data-is-last-node="" data-is-only-node=""&gt;The DOMPurify library is now integrated as a standard dependency, replacing the previously used forked version. This update improves the maintainability and transparency of the codebase by aligning with standard package management practices. Functionality that relies on DOMPurify remains unchanged, and the library is properly bundled and referenced throughout the application.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="mcetoc_1iipslfhq0"&gt;Supported Platforms Update&lt;/h2&gt;
&lt;h3 id="mcetoc_1j5hknrrm4"&gt;&lt;span style="font-size:inherit;"&gt;Support for OAuth 2.0 token-based authorization with Exchange Online and Sugar email functions&lt;/span&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn"&gt;
&lt;div class="relative flex-col gap-1 md:gap-3"&gt;
&lt;div class="flex max-w-full flex-col grow"&gt;
&lt;div dir="auto" data-message-author-role="assistant" data-message-id="7e91f8eb-92d0-42d3-9eb4-8e0f56738542" data-message-model-slug="gpt-4o"&gt;
&lt;div class="markdown prose dark:prose-invert w-full break-words dark"&gt;
&lt;p data-start="97" data-end="525"&gt;Sugar now supports sending emails via Microsoft Exchange Online using OAuth 2.0, in alignment with&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://learn.microsoft.com/en-us/answers/questions/2202498/basic-authentication-for-smtp-deprecation"&gt;Microsoft&amp;rsquo;s announcement to permanently disable Basic Authentication for SMTP AUTH in Exchange Online starting September 2025.&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;This enhancement ensures continued compatibility and improved security by allowing outbound email functionality to operate without relying on SMTP when using Microsoft OAuth 2.0.&lt;/p&gt;
&lt;p data-start="527" data-end="849"&gt;With this update, when an outbound email account is configured using Microsoft OAuth 2.0, Sugar will send emails through the Microsoft Graph API instead of SMTP. This change is specific to Exchange Online accounts using Microsoft OAuth and does not impact other connection types, such as username/password or Google OAuth.&lt;/p&gt;
&lt;p data-start="851" data-end="1247"&gt;To enable this functionality, administrators must register an application in Azure with the necessary API permissions (Mail.Send, Mail.Read, IMAP.AccessAsUser.All, offline_access) and configure the Microsoft connector in Sugar with the application&amp;#39;s client ID and secret. Once authorized, the email status will indicate successful authentication, allowing emails to be sent using the new method.&lt;/p&gt;
&lt;p data-start="1249" data-end="1596"&gt;This transition will occur automatically, requiring no action from customers. However, the shift to the Microsoft Graph API will require adjusting OAuth scopes,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;necessitating users to re-authorize their email accounts in Sugar&lt;/strong&gt;.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn"&gt;
&lt;div class="relative flex-col gap-1 md:gap-3"&gt;
&lt;div class="flex max-w-full flex-col grow"&gt;
&lt;div dir="auto" data-message-author-role="assistant" data-message-id="7e91f8eb-92d0-42d3-9eb4-8e0f56738542" data-message-model-slug="gpt-4o"&gt;
&lt;div&gt;
&lt;div class="markdown prose dark:prose-invert w-full break-words dark"&gt;
&lt;p data-start="1249" data-end="1596"&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;This improvement has been backported to&amp;nbsp;Sugar&amp;nbsp;25.1.x.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="mcetoc_1ff80k9i33"&gt;Configurability&amp;nbsp;updates&lt;/h2&gt;
&lt;h3 id="mcetoc_1iv0j7tfp1"&gt;&lt;a id="Improved_Control_Over_Field_Updates_by_Proces_Definitions"&gt;&lt;/a&gt;Improved Control Over Field Updates by Process Definitions&lt;/h3&gt;
&lt;p&gt;We are enhancing the control over the fields that can be modified by Process Definitions. By default, only fields that are visible in the user interface will be eligible for updates. Fields not exposed on the frontend will no longer be modified automatically by these processes, in other words, if the field is available to be added to any UI it means it is exposed, doesn&amp;#39;t necessarily mean it has be in a Record View for example.&lt;/p&gt;
&lt;p data-start="74" data-end="312"&gt;For teams needing more specific behavior, it&amp;rsquo;s now possible to configure a denylist of fields that should not be updated by Process Definitions. This provides greater flexibility and precision in how automation interacts with your data. You can define this using a new&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="346" data-end="361"&gt;$sugar_config&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;setting. For example, the configuration below prevents&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="417" data-end="435"&gt;field_to_block_1&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="440" data-end="458"&gt;field_to_block_2&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;ModuleName1&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;from being updated by Process Definitions:&lt;/p&gt;
&lt;p data-start="504" data-end="747"&gt;&lt;pre class="ui-code" data-mode="php"&gt;$sugar_config[&amp;#39;bpm_denylisted_fields&amp;#39;] = [
  &amp;#39;ModuleName1&amp;#39; =&amp;gt; [&amp;#39;field_to_block_1&amp;#39;, &amp;#39;field_to_block_2&amp;#39;],
  &amp;#39;ModuleName2&amp;#39; =&amp;gt; [&amp;#39;another_field_to_block&amp;#39;],
];
&lt;/pre&gt;&lt;/p&gt;
&lt;p data-start="641" data-end="780"&gt;&lt;strong data-start="641" data-end="650"&gt;Note:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;When this&amp;nbsp;sugar_config is set, only the specified fields will be blocked &amp;mdash; regardless of their visibility in the user interface.&lt;/p&gt;
&lt;h3 id="mcetoc_1f77psegv7"&gt;Sugar Config Settings&lt;/h3&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;strong&gt;Setting Name&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;strong&gt;Default&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;strong&gt;Override Example&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;bpm_denylisted_fields&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;[]&lt;/td&gt;
&lt;td&gt;&lt;span&gt;$sugar_config['bpm_denylisted_fields'] = [ &amp;#39;ModuleName1&amp;#39; =&amp;gt; ['field_to_block_1', 'field_to_block_2'], &amp;#39;ModuleName2&amp;#39; =&amp;gt; ['another_field_to_block']];&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;This new config will be used to include specific fields in the &amp;#39;allowed fields to be modified by BPM&amp;#39;.&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;features.&lt;span&gt;enableStrictContentSecurityPolicy&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;false&lt;/td&gt;
&lt;td&gt;&lt;span&gt;$sugar_config['features']['enableStrictContentSecurityPolicy'] = true;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;If enabled, the application will enforce a strict Content Security Policy (CSP)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="mcetoc_1f77psegvb"&gt;Removed Functions / Libraries / Features&lt;/h2&gt;
&lt;h3 id="mcetoc_1j5hknrrm5"&gt;Removal of Legacy Modules Metadata Extension Path&lt;/h3&gt;
&lt;p&gt;As part of our ongoing efforts to modernize Sugar Core, this release removes support for the legacy&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;include/modules_override.php&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;file path used for module metadata customizations. This path was used in versions prior to Sugar 6.3.x but is no longer recommended or necessary. You&amp;nbsp;should be using the supported&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://support.sugarcrm.com/smartlinks/developer_guide/architecture/extensions/include/"&gt;Extensions Framework&lt;/a&gt;&amp;nbsp;with the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="534" data-end="543"&gt;Include&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;extension for all metadata customizations.&lt;/p&gt;
&lt;p&gt;A new healthcheck&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;bucket &amp;#39;F&amp;#39;&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(manual customization) has been added to ensure compatibility to this version.&lt;/p&gt;
&lt;h3 id="mcetoc_1iv0j7tfp2" data-start="83" data-end="136"&gt;Removal of&amp;nbsp;Unused Platform&lt;/h3&gt;
&lt;p&gt;As part of ongoing SugarCore cleanup efforts, the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;kiosk&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;platform has been removed to streamline with our products and services.&lt;/p&gt;
&lt;h3 id="mcetoc_1fda51lpf4"&gt;Removing gulp-filter JS lib&lt;/h3&gt;
&lt;p&gt;The&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;gulp-filter&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;library has been removed from the project after verifying it was only used in a single instance within&amp;nbsp;a Gulp task. Its functionality has been replaced with a native filter function applied directly within the stream. This change retains the original filtering logic and preserves the existing behavior and output of the task.&lt;/p&gt;
&lt;h3 id="mcetoc_1fda51lpf4"&gt;Removing uglify-js and socket.io JS lib&lt;/h3&gt;
&lt;p&gt;Removed the legacy socket.io dependency from package.json as it was no longer used anywhere in the codebase. This also removed its transitive dependency uglify-js.&lt;/p&gt;
&lt;h2 id="mcetoc_1g4djj0su0"&gt;Data Changes&lt;/h2&gt;
&lt;h3 id="mcetoc_1gj9pc6si2"&gt;New Indexes for Calls and Meetings&lt;/h3&gt;
&lt;p&gt;To enhance the performance of queries involving Calls and Meetings using our FilterApi, we&amp;rsquo;ve added new indexes to the corresponding module definitions (vardefs). These indexes are designed to optimize data retrieval on such modules by our FilterApi:&lt;/p&gt;
&lt;ul&gt;
&lt;li data-renderer-start-pos="1"&gt;&lt;code&gt;idx_calls_series_event_deleted&lt;/code&gt;&amp;nbsp;
&lt;ul&gt;
&lt;li data-renderer-start-pos="1"&gt;&amp;#39;series_deleted&amp;#39;, &amp;#39;event_type&amp;#39;, &amp;#39;deleted&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-renderer-start-pos="1"&gt;&lt;code&gt;idx_calls_date_mod_rep_parent_id&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;-&amp;nbsp;
&lt;ul&gt;
&lt;li data-renderer-start-pos="1"&gt;&amp;#39;date_modified&amp;#39;, &amp;#39;repeat_parent_id&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="mcetoc_1f77psegvl"&gt;Platform Updates&lt;/h2&gt;
&lt;h3 id="mcetoc_1ij671fi12"&gt;Scheduler Jobs Now Run on a Consistent Timezone&lt;/h3&gt;
&lt;p data-start="224" data-end="596"&gt;In this release, we&amp;#39;ve implemented a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="261" data-end="289"&gt;long-awaited enhancement&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;that brings consistency to scheduler job execution times. Previously, job execution depended on the timezone of the scheduler&amp;#39;s assigned user.&amp;nbsp;As Sugar automatically updates user timezones&amp;mdash;and admin users might share credentials across different locations&amp;mdash;this led to jobs running at&amp;nbsp;different times.&lt;/p&gt;
&lt;p data-start="598" data-end="771"&gt;With this update, scheduler jobs now run based on a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="650" data-end="686"&gt;centralized (UTC), consistent timezone&lt;/strong&gt;, eliminating timezone-related surprises and ensuring reliable, predictable behavior.&lt;/p&gt;
&lt;ul data-start="1098" data-end="1370"&gt;
&lt;li data-start="935" data-end="1013"&gt;
&lt;p data-start="1100" data-end="1247"&gt;In the Scheduler UI, execution times are shown in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="1150" data-end="1173"&gt;your local timezone&lt;/strong&gt;, so you always know exactly when it will trigger&amp;mdash;no mental math required.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1248" data-end="1370"&gt;
&lt;p data-start="1250" data-end="1370"&gt;Existing schedulers remain unchanged, but we now clearly display their scheduled times based on your profile&amp;rsquo;s timezone.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="mcetoc_1j5hknrrm6"&gt;Enhanced SystemProcessLock Handling to Prevent Redundant Execution During Admin QRR&lt;/h3&gt;
&lt;p data-start="134" data-end="681"&gt;Resolved an issue where regular user requests could unintentionally trigger cascading expensive operations, such as metadata and language cache rebuilds, during or immediately after an admin-initiated Quick Repair &amp;amp; Rebuild (QRR). Previously, when cache files were deleted by an admin QRR, regular users encountering missing cache would queue behind a system-level lock and subsequently attempt to perform the same rebuild operations once the lock was released. This behavior caused unnecessary server load, timeouts, and a degraded user experience.&lt;/p&gt;
&lt;p data-start="683" data-end="1067"&gt;With this enhancement, the lock handling logic has been updated to prevent non-admin users from executing expensive operations when the lock cannot be acquired. Instead, such requests will now safely return without action, ensuring that only admin users can initiate these processes. This significantly reduces server load and improves system responsiveness during cache rebuilding scenarios.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn"&gt;
&lt;div class="relative flex-col gap-1 md:gap-3"&gt;
&lt;div class="flex max-w-full flex-col grow"&gt;
&lt;div dir="auto" data-message-author-role="assistant" data-message-id="7e91f8eb-92d0-42d3-9eb4-8e0f56738542" data-message-model-slug="gpt-4o"&gt;
&lt;div&gt;
&lt;div class="markdown prose dark:prose-invert w-full break-words dark"&gt;
&lt;p data-start="1249" data-end="1596"&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;This improvement has been backported to&amp;nbsp;Sugar&amp;nbsp;25.1.x.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="mcetoc_1j5hknrrm7"&gt;Improved Deep Linking Support for SugarCRM on Mobile Devices&lt;/h3&gt;
&lt;p data-start="302" data-end="605"&gt;In this release, we have implemented improvements to the experience of opening Sugar links from mobile devices. This update addresses inconsistent behaviors when accessing CRM links from email or messages, ensuring a more predictable and seamless user journey on both Android and iOS platforms.&lt;/p&gt;
&lt;p data-start="612" data-end="633"&gt;&lt;strong data-start="612" data-end="633"&gt;What&amp;#39;s new:&lt;/strong&gt;&lt;/p&gt;
&lt;ul data-start="635" data-end="1391"&gt;
&lt;li data-start="635" data-end="869"&gt;
&lt;p data-start="637" data-end="869"&gt;&lt;strong data-start="637" data-end="664"&gt;Universal Link Support:&amp;nbsp;&lt;/strong&gt;SugarCRM mobile app now uses&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://developer.apple.com/documentation/xcode/allowing-apps-and-websites-to-link-to-your-content/"&gt;Universal Links&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(iOS) and App Links (Android) to seamlessly redirect users from supported emails/messages directly into the app&amp;mdash;bypassing the mobile browser when possible.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="871" data-end="1043"&gt;
&lt;p data-start="873" data-end="1043"&gt;&lt;strong data-start="873" data-end="895"&gt;Smart App Prompts:&amp;nbsp;&lt;/strong&gt;Users without the SugarCRM mobile app installed are now prompted to download it from the App Store or Google Play when tapping a SugarCRM link.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1045" data-end="1212"&gt;
&lt;p data-start="1047" data-end="1212"&gt;&lt;strong data-start="1047" data-end="1083"&gt;Improved Workflow Link Behavior:&amp;nbsp;&lt;/strong&gt;Links generated from workflows (e.g., SugarBPM) now attempt to open in the app rather than defaulting to the mobile browser.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="1214" data-end="1391"&gt;
&lt;p data-start="1216" data-end="1391"&gt;&lt;strong data-start="1216" data-end="1246"&gt;Browser Consistency Fixes:&amp;nbsp;&lt;/strong&gt;Addressed inconsistent behavior across third-party browsers (e.g., Edge, Chrome) especially on iPhone, ensuring reliable app-switch prompts.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="2453" data-end="2679"&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Support for this feature on custom or on-premise domains requires configuration changes and updates to the Mobile App to include those domains. Customers should contact support for implementation guidance.&lt;/p&gt;
&lt;h3 id="mcetoc_1ij671fi12"&gt;Enhanced Content Security Policy (CSP) for Improved Application Security&lt;/h3&gt;
&lt;p data-start="207" data-end="462"&gt;As part of our ongoing commitment to application security, we are introducing&amp;nbsp;&lt;strong data-start="287" data-end="327"&gt;Strict Content Security Policy (CSP)&lt;/strong&gt;. This policy significantly reduces the risk of malicious script execution by restricting the sources from which scripts can be loaded.&lt;/p&gt;
&lt;p data-start="464" data-end="531"&gt;To support this enhancement, we&amp;rsquo;ve refactored the frontend code to:&lt;/p&gt;
&lt;ul data-start="533" data-end="640"&gt;
&lt;li data-start="533" data-end="588"&gt;
&lt;p data-start="535" data-end="588"&gt;Remove inline event handlers and&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="568" data-end="581"&gt;javascript:&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;URIs&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="589" data-end="640"&gt;
&lt;p data-start="591" data-end="640"&gt;Add&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="595" data-end="602"&gt;nonce&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;attributes to all&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="621" data-end="631"&gt;&amp;lt;script&amp;gt;&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;elements&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="642" data-end="717"&gt;These changes ensure that only trusted scripts are executed in the browser.&lt;/p&gt;
&lt;p data-start="719" data-end="906"&gt;This feature is&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="735" data-end="755"&gt;configurable via&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="756" data-end="768"&gt;App.config&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(&lt;code data-start="770" data-end="834"&gt;$sugar_config['features']['enableStrictContentSecurityPolicy']&lt;/code&gt;) and requires a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="851" data-end="885"&gt;QRR&lt;/strong&gt;&amp;nbsp;after being toggled.&lt;/p&gt;
&lt;p data-start="908" data-end="1101"&gt;The rollout will follow a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="934" data-end="953"&gt;phased approach&lt;/strong&gt;, beginning in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="968" data-end="988"&gt;report-only mode&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;to monitor violations, with full enforcement to follow in both core and customization layers in future releases.&lt;/p&gt;
&lt;h3 id="mcetoc_1iv32kek40"&gt;Declarative Metadata&amp;nbsp;Refactoring&lt;/h3&gt;
&lt;p&gt;As part of our ongoing efforts to make Sugar&amp;#39;s metadata fully declarative and serializable, this release includes the first phase of refactoring non-declarative components within Sugar Core. Previously, some metadata included conditional logic that needed refactoring. We&amp;rsquo;ve begun restructuring&amp;nbsp;some&amp;nbsp;areas to align with a declarative format, laying the groundwork for&amp;nbsp;the new Metadata generation we&amp;#39;ve discussed&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="/dev-club/m/event-recaps/3010"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="mcetoc_1j5hknrrm8"&gt;Replace the TCPDF with SugarPdf in MapsGenerator&lt;/h3&gt;
&lt;p&gt;In this release, we&amp;#39;ve updated&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code data-start="217" data-end="258"&gt;MapsGenerator.php::createPDF()&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;to use SugarPDF instead of directly using TCPDF.&lt;/p&gt;
&lt;h3 id="mcetoc_1j5hknrrm9"&gt;Added Backend Framework for Dropdown Classifications&lt;/h3&gt;
&lt;p data-start="130" data-end="389"&gt;In this release, we&amp;#39;ve introduced backend support for a generic dropdown classification framework as part of the Dropdown Editor enhancements. This replaces hardcoded logic (e.g.,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;sales_stage_dom&lt;/code&gt;) with a scalable, metadata-driven approach, enabling configurable mappings between dropdown values and classification categories..&lt;/p&gt;
&lt;p data-start="391" data-end="403"&gt;&lt;strong&gt;Key details:&lt;/strong&gt;&lt;/p&gt;
&lt;ul data-start="404" data-end="871"&gt;
&lt;li data-start="404" data-end="488"&gt;
&lt;p data-start="406" data-end="488"&gt;Classifications are defined using metadata and stored via the extension framework.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="489" data-end="669"&gt;
&lt;p data-start="491" data-end="517"&gt;A classification includes:&lt;/p&gt;
&lt;ul data-start="520" data-end="669"&gt;
&lt;li data-start="520" data-end="541"&gt;
&lt;p data-start="522" data-end="541"&gt;A unique identifier&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="544" data-end="602"&gt;
&lt;p data-start="546" data-end="602"&gt;Translatable classification options (&lt;code data-start="583" data-end="601"&gt;app_list_strings&lt;/code&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="605" data-end="669"&gt;
&lt;p data-start="607" data-end="669"&gt;Mappings between dropdown values and classification categories&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-start="670" data-end="794"&gt;
&lt;p data-start="672" data-end="794"&gt;No API or UI changes in this implementation &amp;mdash; a helper class is provided to handle loading and saving classification data.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="795" data-end="871"&gt;
&lt;p data-start="797" data-end="871"&gt;Designed to support future use with multiple classifications per dropdown.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="873" data-end="956"&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;This implementation does&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong data-start="904" data-end="911"&gt;not&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;expand classifications to all dropdowns yet,&amp;nbsp;&lt;code&gt;sales_stage_dom&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;only&lt;/p&gt;
&lt;h3 id="mcetoc_1j5hknrrma"&gt;Prevent Data Loss on Market MLP Uninstallation and upgrade&lt;/h3&gt;
&lt;p&gt;In this release, we&amp;#39;re addressing a critical issue where upgrading to Market MLP version 25.1 resulted in unintended data loss, specifically affecting connector setting configurations that were expected to persist through the uninstallation process. Additionally, the upgrade mechanism has been improved to ensure proper cleanup of residual files and directories from previous installations, which previously caused version conflicts, broken dependencies, and unexpected behavior in the new version. These enhancements ensure a smoother and more reliable upgrade experience..&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&amp;nbsp;&lt;span&gt;If on upgrade customer does not have active market license then the features would not show up after upgrade even if they have MLP installed.&lt;/span&gt;&lt;/p&gt;
&lt;h3 id="mcetoc_1j5hknrrmb"&gt;SugarLive&amp;nbsp;compatibility with the V2 console for Amazon Connect&lt;/h3&gt;
&lt;p&gt;For SugarLive, Sugar provides SugarServeSampleBot.zip which was only compatible with the Amazon Lex V1 console. However, in Amazon Connect, there is a warning about the Lex V1 console being discontinued after September 15, 2025. We have now implemented and updated the SugarServeSampleBot.zip file to make it compatible with the V2 console.&lt;/p&gt;
&lt;h3 id="mcetoc_1gb30ctl1e"&gt;Bug Fixes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed an issue with the FilterApi that was returning extra fields in the response payload even&amp;nbsp;when filtering by using args&amp;nbsp;&lt;code&gt;fields.&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Fixed QRR Occasionally Fails to Rebuild Module/Class Cache, Causing Outages and UI Errors caused by race conditions during concurrent or overlapping QRR executions or user requests during cache rebuild.&lt;/li&gt;
&lt;li&gt;Fixed an issue for a specific scenario where user licenses were failing to update&lt;/li&gt;
&lt;li&gt;Fixed an issue that a&amp;nbsp;calculated field using the countConditional function in combination with a relate field (e.g. countConditional($notes,&amp;quot;name&amp;quot;,createList(&amp;quot;test&amp;quot;))) caused a &amp;ldquo;Too many tables&amp;rdquo; error when a large number of one-to-one relationships were created between modules&lt;/li&gt;
&lt;li&gt;Fixed an issue on&amp;nbsp;Uncaught TypeError: Sugarcrm\\Sugarcrm\\Security\\Escaper\\Escape::html() caught on upgrade from 14.0.1 to 25.1&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Fixed an issue where Sugar Automate licenses and UI elements disappear after manual license validation and only reappear when an online validation is performed.&lt;/li&gt;
&lt;li&gt;Fixed an issue with our silentUpgrader that, in some cases,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;the healthcheck was still executed during the upgrade&amp;nbsp;even if the instance was configured with&lt;/span&gt;&amp;nbsp;&amp;ldquo;Bypass Healthcheck&amp;rdquo; option enabled.&lt;/li&gt;
&lt;li&gt;Fixed an issue where&amp;nbsp;&lt;span&gt;People names (Contacts, Leads, Users) currently do not have a display option for how names are traditionally written in Chinese.&amp;nbsp;The LastFirst name format has been added to the default list to support proper name display across the product (e.g., Contacts list view, record view, Lead, and Assigned To fields)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Fixed an issue on the Case Summary Chart and Opportunity Metrics Chart (migrated from Sucrose to Chart.JS) where, if only one label was present, it&amp;nbsp;displayed at the bottom of the chart in a space too small to display it properly&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Fixed an issue where&amp;nbsp;Users&amp;nbsp;were receiving a permission error when trying to use Doc Merge for Quote records and have {currency_name.iso4217} in the template.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Fixed an issue where regular users triggered redundant rebuilds after admin QRR due to SystemProcessLock, causing server overload due to multiple expensive operations running simultaneously.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Fixed an issue where Generating a Quote from the Revenue Line Item detail view doesn&amp;#39;t allow the generated Quote to be saved.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Fixed an issue where Update Momentum of In-Progress Smart Guides&amp;#39; scheduler fails on NULL score or point values.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Fixed an issue where a single email failure due to a Laminas error could halt the entire import scheduler, leaving the email unread and causing repeated failures.&lt;/li&gt;
&lt;li&gt;Fixed an issue where&amp;nbsp;Developer user encounters error when editing Timeline. Developer only users will not see this option but users with Admin and Developer access will.&lt;/li&gt;
&lt;li&gt;Fixed an issue when a user has a profile date format that is not ISO compliant, the date outputted into a PDF is not valid in ISO format, Sugar was using current date but should interpret that date&amp;nbsp;correctly.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="mcetoc_1ij671fi12"&gt;Sugar Core Security Updates&lt;/h3&gt;
&lt;p&gt;As part of our ongoing efforts to keep Sugar clean, fast, reliable, and most importantly secure, we have updated&amp;nbsp;Sugar Core code in different areas of the application such as Package Scanner, Studio, Module Installer, UI rendering, API endpoints, Legacy SOAP API, File Uploads, Portal, PII Fields, ACL rules, Legacy Workflows, Smart Guides, HTTP Headers and BWC modules. Not only those changes but we&amp;#39;ve cleaned up and improve our logging messages around deprecations.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn"&gt;
&lt;div class="relative flex-col gap-1 md:gap-3"&gt;
&lt;div class="flex max-w-full flex-col grow"&gt;
&lt;div dir="auto" data-message-author-role="assistant" data-message-id="7e91f8eb-92d0-42d3-9eb4-8e0f56738542" data-message-model-slug="gpt-4o"&gt;
&lt;div&gt;
&lt;div class="markdown prose dark:prose-invert w-full break-words dark"&gt;
&lt;p data-start="1249" data-end="1596"&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;span&gt;&amp;nbsp;Some of those security improvements&lt;/span&gt;&amp;nbsp;were backported to&amp;nbsp;Sugar&amp;nbsp;25.1.x.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="mcetoc_1gqa6vaoc8"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;
&lt;div class="code-block sc-ezYOhE gBYPJJ"&gt;
&lt;h2 id="mcetoc_1hgt5tqlsa"&gt;Healthcheck&amp;nbsp;Updates&lt;/h2&gt;
&lt;div class="code-block sc-ezYOhE gBYPJJ"&gt;
&lt;div class="code-block sc-ezYOhE gBYPJJ"&gt;
&lt;ul&gt;
&lt;li&gt;Built a health scanner tool to detect cloud instances using&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;SugarMarket MLP&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;versions&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&amp;lt; 2.2&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;and send it to&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;bucket F&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Built a healthcheck to detect and support&amp;nbsp;the removal of the legacy&amp;nbsp;&lt;code&gt;include/modules_override.php&lt;/code&gt;&amp;nbsp;file path and send it to&amp;nbsp;&lt;code&gt;bucket F&lt;/code&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="code-block sc-ezYOhE gBYPJJ"&gt;
&lt;div class="code-block sc-ezYOhE gBYPJJ"&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: Sugar 25.2&lt;/div&gt;
</description></item><item><title>Sugar 25.2 Customization Guide</title><link>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/1013/sugar-25-2-customization-guide/revision/1</link><pubDate>Fri, 15 Aug 2025 13:15:26 GMT</pubDate><guid isPermaLink="false">5c521d64-519d-47a6-9065-134618b211bf:3307f36c-90a1-4f3c-b6a7-d6d6641bf5cb</guid><dc:creator>Rafael Fernandes</dc:creator><comments>https://sugarclub.sugarai.com/dev-club/w/dev-tutorials/1013/sugar-25-2-customization-guide#comments</comments><description>Revision 1 posted to Dev Tutorials by Rafael Fernandes on 8/15/2025 1:15:26 PM&lt;br /&gt;
&lt;p&gt;Sugar 25.2 Customization Guide&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item></channel></rss>