SugarCRM SupportProduct GuidesSugar DeveloperSugar Developer Guide 10.0IntroductionSugar 9.3 to 10.0 Migration Guide

Sugar 9.3 to 10.0 Migration Guide

Overview

The purpose of this document is to provide insight to Sugar Developers for upgrading custom Sugar code, extensions, and integrations to the 10.0.x 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.x (Winter '20). 

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-Only 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 Developer Notes for Upgrading From Spring '19 (9.0) section of the release notes on the Sugar Support site to get a full view of changes since Sugar 9.0.

REST API Version Number

The current version for the Sugar REST API is v11.8 as of Sugar 10.0 (Q2 2020).

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 and replaced with a POST endpoint of the same name.

Sample JSON 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

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.

For more information about what changed in Sugar 9.3.x, please refer to the following related documents:

Last modified: 2021-01-13 13:39:51