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

You are currently reviewing an older revision of this page.

  • History View current version

Sugar 10.0 (Q2 2020) Customization Guide

Purpose

The purpose of this document is to provide insight to Sugar Developers for upgrading custom Sugar code, extensions, and integrations to the Sugar Q2 2020 release. This guide focuses on changes in Sugar Q2 2020 that could cause an immediate impact on Sugar customizations and integrations built for Sugar 9.3 (Winter '20). 

 

  • Purpose
  • Sugar Instance Upgrade Path 
  • Cloud and On-Premise Sugar Release
  • Expected to Affect Few Developers
      • REST API Endpoint Changes
      • Module Loader API
      • Field label Placement

 

Sugar Instance Upgrade Path 

The upgrade path for 10.0.0-preview.1 and 10.0.0-preview.2 (this "Preview") is from 9.3 (Winter '20). There will be no upgrade path from 10.0.0-preview.1 and 10.0.0-preview.2 to the GA version of the Sugar Q2 2020 releases.

 

Cloud and On-Premise Sugar Release

For those looking to upgrade from Sugar 9.0, you will be catching up with additional content released last Summer '19, Fall '19 and Winter '20. In addition to this guide, please review the Sugar 9.1, Sugar 9.2, and Sugar 9.3 migration guides and Sugar 9.1, Sugar 9.2, and Sugar 9.3 release notes on the Sugar Support site to get a full view of changes since Sugar 9.0.

 

Expected to Affect Few Developers

This section explains items expected to have a low impact on Sugar customizations and integrations when migrated to Sugar 10.0. It is expected that these items will affect few developers. This release addressed many smaller bug fixes and UI changes. There are not many issues that require special attention from a development standpoint. You may want to take note of the following regarding your customizations before you upgrade: 

 

REST API Endpoint Changes

Currently, records with many SugarLogic related value formulas can cause the URI to become too long using GET, causing a 414 error.  Therefore, the existing GET endpoint for the ExpressionEngine's related values API (/ExpressionEngine/:record/related) has been deprecated. It has been replaced with a POST endpoint of the same name.

 

Sample request:

{
  "id": "a915cff8-1dec-11ea-b203-7200015efab0",
  "action": "related",
  "module": "Opportunities",
  "fields": [
    {
      "type": "rollupConditionalSum",
      "link": "revenuelineitems",
      "relate": "likely_case",
      "condition_field": "sales_stage",
      "condition_expr": "forecastSalesStages(\"true\",\"false\")"
    },
    {
      "type": "maxRelatedDate",
      "link": "revenuelineitems",
      "relate": "date_closed"
    },
    {
      "type": "rollupMax",
      "link": "revenuelineitems",
      "relate": "date_closed_timestamp"
    },
    {
      "type": "rollupConditionalSum",
      "link": "revenuelineitems",
      "relate": "best_case",
      "condition_field": "sales_stage",
      "condition_expr": "forecastSalesStages(\"true\",\"false\")"
    },
    {
      "type": "rollupConditionalSum",
      "link": "revenuelineitems",
      "relate": "worst_case",
      "condition_field": "sales_stage",
      "condition_expr": "forecastSalesStages(\"true\",\"false\")"
    },
    {
      "type": "count",
      "link": "revenuelineitems"
    },
    {
      "target": "closed_revenue_line_items",
      "type": "countConditional",
      "link": "revenuelineitems",
      "condition_field": "sales_stage",
      "condition_expr": "createList(\"Closed Won\",\"Closed Lost\")"
    },
    {
      "target": "included_revenue_line_items",
      "type": "countConditional",
      "link": "revenuelineitems",
      "condition_field": "commit_stage",
      "condition_expr": "forecastIncludedCommitStages()"
    }
  ]
}

 

Module Loader API

This is exciting - new REST Endpoints have been added for working with Module Loadable Packages.

 

  • /Administration/packages/:unFile
    • DELETE endpoint.
    • Delete the specified package.
    • Package 'unFile' hash must be provided.
    • Package 'unFile' hash can be found in staging package list.
  • /Administration/packages/:id/disable/
    • GET endpoint.
    • Disable the specified package.
    • Package id hash must be provided.
    • Package id can be found in installed package list.
  • /Administration/packages/:id/enable/
    • GET endpoint.
    • Enable the specified package.
    • Package id hash must be provided.
    • Package id can be found in installed package list.
  • /Administration/packages/:file_install/install/
    • GET endpoint.
    • Installs the specified package.
    • Package 'file_install' hash must be provided.
    • file_install hash could be found in staging package list.
  • /Administration/packages/
    • GET endpoint.
    • Lists all packages in the system.
  • /Administration/packages/installed/
    • GET endpoint.
    • Lists all installed packages.
  • /Administration/packages/staged/
    • GET endpoint.
    • Lists staged packages in the system.
  • /Administration/packages/:id/uninstall/
    • GET endpoint.
    • Uninstalls the specified package.
    • Package id hash must be provided.
    • Package id can be found in installed package list.
  • /Administration/packages
    • POST endpoint.
    • Uploads a module loadable package via a multi-part form request.
    • The only parameter is 'upgrade_zip' which must contain a valid module loadable zip file.

 

Field label Placement

An option has been added to allow users to designate whether field labels in record views will appear beside the field or above the field. This could affect your customized layouts as it is per-user and therefore one user's record view may now differ from another's. Field label placement will be set to "Beside Field Value" by default for all users upon upgrade.
This setting overrides labelsOnTop viewDef which is deprecated as of this release. So, every user will see their preferred label placement regardless of ANY other settings because there is no code option to set this value. It can only be changed from the User's profile settings. If this causes any issues with your customizations, your best bet is to write css overrides in a new MLP.