SugarCRM SupportDocumentationSugar DeveloperSugar Developer Guide 7.10IntroductionMigration Guide
This release is only available for On-Demand customers.

Migration Guide

Purpose

The purpose of this document is to provide insight to Sugar Developers for upgrading custom Sugar code, extensions, and integrations to 7.10 (Fall '17) release. This guide focuses on changes in Sugar 7.10 (Fall '17) that could cause an immediate impact on Sugar customizations and integrations built for Sugar 7.9.x.  

Sugar Instance Upgrade Path

The upgrade path for 7.10 is from 7.9 releases. Upgrades to Sugar On-Demand instances are scheduled automatically. Owners of Sugar On-Demand instances will be contacted one week prior to their upgrade with an opportunity to test their upgraded instance within a sandbox environment.

Expected to Affect Most Developers

This section explains items expected to have widest impact on Sugar customizations and integrations when migrated to Sugar 7.10. We expect that these items will affect most developers. 

Sugar 7.10 (Fall '17) is an On-Demand only release!

The Sugar 7.10 (Fall '17) release is for Sugar On-Demand customers only! We will provide source code downloads for the sole purposes of development and quality assurance. Production use of Sugar 7.10 outside of Sugar On-Demand is unsupported and will not be tolerated.

Elasticsearch 5.4 Upgrade

We have made a major upgrade in our Elasticsearch support moving from v1.7.x to v5.4. This should be transparent for On-Demand customers but Sugar Developers will need to update their local development and QA environments will need to be upgraded to use Elasticsearch 5.4

Use of private Sidecar APIs is now restricted

User interface customizations are typically built using the Sidecar framework. There have been a number of changes in Sidecar to better modularize the code and control access to private Sidecar APIs.

We've made some changes to Sidecar framework which will prevent customizations from calling private Sidecar methods unless the Sugar JS Config sidecarCompatMode setting is true. The default value will be false. The compatibility mode should be used as a temporary work around. All JavaScript customizations are expected to use public Sidecar APIs. 

If necessary, here is an example of how you can enable sidecarCompatMode using ./config_override.php

<php
$sugar_config['additional_js_config'] = array('sidecarCompatMode' => true);

Sidecar Changes

This section provides an overview of Sidecar related changes that could affect upgrades of UI customizations. 

JavaScript Library changes

An unused jquery-quicksearch plug-in was removed in this Sugar release. Ensure that customizations do not use quicksearch jQuery plug-in and that they do not reference ./sidecar/lib/jquery/wicked.js.

The Backbone.js library has been upgraded from version 1.2.3 to 1.3.3 in this Sugar release. View the Backbone.js change log for more details on how your Sidecar based customizations may be affected. 

The jquery-placeholder plugin has been removed in this Sugar release. It is no longer needed in modern browsers that fully support HTML5. This change will not affect customizations unless direct references exist to ./sidecar/lib/jquery-placeholder.

Sidecar JavaScript APIs

Sidecar BeanCollection and MixedBeanCollection now take full advantage of Sugar Collection REST APIs. They now track changes of multiple adds or removals of related records, support for pagination, and etc. Working with related collections of records within Sidecar can now be done more easily and efficiently. If you have JavaScript code that extends BeanCollection or MixedBeanCollection then you should test your code to ensure that it still works properly.

The following Sidecar method was removed in this Sugar release. Please verify that your customizations do not use this method prior to upgrading to Sugar 7.10.

beanCollection#resetOptions()

Sidecar File changes

Many Sidecar source files were moved or removed as part of refactoring the codebase. The following Sidecar files were moved or removed in this Sugar release. Please verify that your customizations do not reference these files prior to upgrading to Sugar 7.10.

./include/api/help/module_filter_record_get_help.html
./include/javascript/jquery/jquery.effects.custombounce.js
./sidecar/gulp/assets/files.json
./sidecar/gulp/assets/base-files.json
./sidecar/gulp/assets/default-tests.json
./sidecar/gulp/assets/jquery.json
./sidecar/gulp/assets/zepto.json
./sidecar/gulp/util.js
./sidecar/lib/backbone
./sidecar/lib/backbone/backbone.js
./sidecar/lib/backbone/backbone.min.js
./sidecar/lib/jasmine
./sidecar/lib/jasmine/jasmine_favicon.png
./sidecar/lib/jasmine/jasmine-html.js
./sidecar/lib/jasmine/jasmine.js
./sidecar/lib/jasmine/MIT.LICENSE
./sidecar/lib/jasmine/jasmine.css
./sidecar/lib/jasmine-zepto
./sidecar/lib/jasmine-zepto/jasmine-zepto.js
./sidecar/lib/jasmine-ci
./sidecar/lib/jasmine-ci/utils
./sidecar/lib/jasmine-ci/utils/core.js
./sidecar/lib/jasmine-ci/utils/console-runner.js
./sidecar/lib/jasmine-ci/jasmine-reporters
./sidecar/lib/jasmine-ci/jasmine-reporters/jasmine.phantomjs-reporter.js
./sidecar/lib/jasmine-jquery
./sidecar/lib/jasmine-jquery/jasmine-jquery.js
./sidecar/lib/jasmine-sinon
./sidecar/lib/jasmine-sinon/jasmine-sinon.js
./sidecar/lib/jquery-placeholder
./sidecar/lib/jquery-placeholder/jquery.placeholder.js
./sidecar/lib/jquery-placeholder/README.md
./sidecar/lib/jquery-placeholder/LICENSE-MIT.txt
./sidecar/lib/jquery-placeholder/tests
./sidecar/lib/jquery-placeholder/tests/tests.js
./sidecar/lib/jquery-placeholder/tests/index.html
./sidecar/lib/jquery-placeholder/demo.html
./sidecar/lib/jquery-placeholder/bower.json
./sidecar/lib/jquery-ui
./sidecar/lib/jquery-ui/css
./sidecar/lib/jquery-ui/css/smoothness
./sidecar/lib/jquery-ui/css/smoothness/jquery-ui-1.11.4.custom.min.css
./sidecar/lib/jquery-ui/css/smoothness/images
./sidecar/lib/jquery-ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
./sidecar/lib/jquery-ui/css/smoothness/images/ui-icons_454545_256x240.png
./sidecar/lib/jquery-ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
./sidecar/lib/jquery-ui/css/smoothness/images/ui-icons_888888_256x240.png
./sidecar/lib/jquery-ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
./sidecar/lib/jquery-ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png
./sidecar/lib/jquery-ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
./sidecar/lib/jquery-ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
./sidecar/lib/jquery-ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
./sidecar/lib/jquery-ui/css/smoothness/images/ui-icons_2e83ff_256x240.png
./sidecar/lib/jquery-ui/css/smoothness/images/ui-icons_222222_256x240.png
./sidecar/lib/jquery-ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
./sidecar/lib/jquery-ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png
./sidecar/lib/jquery-ui/js
./sidecar/lib/jquery-ui/js/jquery-ui-1.11.4.custom.min.js
./sidecar/lib/jquery-ui/js/jquery-1.7.1.min.js
./sidecar/lib/jquery/wicked.js
./sidecar/lib/jquery/jquery-migrate-1.2.1.min.js
./sidecar/lib/jquery/jquery.iframe.transport.js
./sidecar/lib/jquery/jquery.min.js
./sidecar/lib/sugarapi/sugarapi.js
./sidecar/lib/sugarapi/demoServerData.js
./sidecar/lib/sugarapi/demoRestServer.js
./sidecar/lib/zepto
./sidecar/lib/zepto/ajax.js
./sidecar/lib/zepto/detect.js
./sidecar/lib/zepto/event.js
./sidecar/lib/zepto/fx.js
./sidecar/lib/zepto/fx_methods.js
./sidecar/lib/zepto/readme.txt
./sidecar/lib/zepto/selector.js
./sidecar/lib/zepto/touch.js
./sidecar/lib/zepto/zepto.js
./sidecar/src/core/cookies.js

Introduction of v11 REST API

This Sugar release introduces v11 of the Sugar REST API. We strongly encourage developers to start consuming the v11 REST endpoints. At this time, there are only minor differences between v11 and v10. The v10 REST API continues to be supported in this Sugar release.

The following REST endpoints behave differently in v11 as a result of platform changes to support Shareable Dashboards.

GET rest/v11/Dashboards
POST rest/v11/Dashboards 

Passing REST API version via HTTP header

REST API version can now be specified via HTTP Accept header. REST API version should be specified in either URL or in HTTP Accept header but not in both locations at once. Both of the examples below represent valid requests to v10 API.

Example 1)

GET <sugar>/rest/v10/me

Example 2)

GET <sugar>/rest/me 
...
Accept: application/vnd.sugarcrm.core+json; version=10

 

Shareable Dashboards

As part of the new Shareable Dashboards, the old default dashboards that were stored in metadata are converted into dashboard records in the Sugar database during upgrade. To configure different default dashboards for Sugar users, please use Shareable Dashboards instead of modifying dashboard metadata.

The following default dashboard metadata locations are no longer recognized in this Sugar release.

./modules/<module>/clients/base/layouts/list-dashboard
./modules/<module>/clients/base/layouts/record-dashboard

The old out of the box dashboards will also be converted to the new dashboard format. 

If you have customized your dashboards to use names other than list-dashboard.php or record-dashboard.php, they will not be upgraded to the new dashboard type. If you want to create a shareable dashboard record similar to your old customized dashboard, you can generate it manually through the UI.

The dashboard_module field has been changed from varchar to enum.

The view_name field has changed from type varchar to enum.  The view_name field will be converted during upgrade process. If you happen to have custom layouts that use Dashboards besides the default "Record," "List," or "Activity Stream," then you will need to update the dashboard_view_name_list dropdown list to add those additional layouts.

All custom Dashboard module Record Views will be renamed to end in .bak.  You have the option of retrieving your custom dashboard record view by renaming it so it does not end in .bak.  Note that if you reinstate your old custom dashboard record view, you will override the new Sugar dashboard record view.  A future release will remove all custom dashboard record views ending in .bak, so you should review these files if they exist to see if you still need them.

Expected to Affect Some Developers

This section explains items expected to have a moderate impact on Sugar customizations and integrations when migrated to Sugar 7.10 (Fall '17). It is expected that these items will affect some developers.

Deprecation of NVD3 and JIT in favor of Sucrose charts

In this release, we have updated Reports to use Sucrose instead of NVD3.  

As part of our plan to migrate entirely to the Sucrose chart library, we are deprecating JIT and NVD3 libraries and plan to remove them in a future Sugar release. Existing customizations that use JIT or NVD3 should migrate to Sucrose at this time. For information on how you can begin leveraging Sucrose in your dashlets, see the tutorial available at http://bit.ly/tutorial_dashlets

New Sugar Identity Manager implementation

This release includes the first phase of a longer term Identity Manager project. 

A number of Sugar Authentication classes have been deprecated and will be removed in a future Sugar release.

./modules/Users/authentication/LDAPAuthenticate/
./modules/Users/authentication/SAMLAuthenticate/
./modules/Users/authentication/SugarAuthenticate/

Developers should use the following new Identity Manager classes instead. In the long term we plan to refactor Identity Management into a service that is separate from core Sugar application.

./modules/Users/authentication/IdmLDAPAuthenticate/
./modules/Users/authentication/IdmSAMLAuthenticate/
./modules/Users/authentication/IdmSugarAuthenticate/

Emails module moved to Sidecar

The Emails module has been converted over to Sidecar framework. This means that UI customizations to the Sugar Emails module will need to be rewritten for this Sugar release.

A custom ACL strategy has been created for new Emails module. ACLs for Emails can now be configured from the Role Management screen in the Administration panel. There are some additional special ACL rules that will be applied as well. For example, archived emails are not editable, draft emails can only be owned by the current user, and etc.

PHP Type Hints added to REST API classes

PHP Type Hints were added to many REST API service related classes to support improvements in support for type declarations in PHP 7. This can cause runtime errors when functions are called using incorrectly typed parameters. These errors can affect custom classes that extend core REST API classes.

./clients/base/api/BulkApi.php
public function bulkCall(ServiceBase $api, array $args)

./clients/base/api/CalendarEventsApi.php
public function updateCalendarEvent(ServiceBase $api, array $args)
public function deleteCalendarEvent(ServiceBase $api, array $args)
public function updateRecurringCalendarEvent(SugarBean $bean, ServiceBase $api, array &$args)
public function deleteRecordAndRecurrences(ServiceBase $api, array $args)
public function deleteRecurrences(SugarBean $bean)
protected function initializeArgs(array $args, SugarBean $bean = null)
protected function adjustStartDate(array &$args)
protected function filterOutRecurrenceFields(array $args)
protected function shouldAutoInviteParent(SugarBean $bean, array $args)
protected function getRecurringSequence(array $args)
./clients/base/api/CollectionApi.php
protected function mapSourceArguments(CollectionDefinitionInterface $definition, $source, array $args)
abstract protected function getSourceData(ServiceBase $api, $source, array $args);
abstract protected function getSourceCount(ServiceBase $api, $source, array $args);

./clients/base/api/ConfigModuleApi.php
public function config(ServiceBase $api, array $args)

./clients/base/api/ConnectorApi.php
public function getConnectors(ServiceBase $api, array $args)
public function validateHash(array $args)

./clients/base/api/CurrentUserApi.php
public function retrieveCurrentUser(ServiceBase $api, array $args)
protected function getUserHash(User $user)
public function updateCurrentUser(ServiceBase $api, array $args)
public function updatePassword(ServiceBase $api, array $args)
public function verifyPassword(ServiceBase $api, array $args)
protected function getUserPref(User $user, $pref, $metaName, $category = 'global')
protected function getUserPrefTimezone(User $user, $category = 'global')
protected function getUserPrefCurrency(User $user, $category = 'global')
protected function getUserPrefSignature_default(User $user)
protected function getUserPrefSignature_prepend(User $user, $category = 'global')
protected function getUserPrefEmail_link_type(User $user)
protected function getUserPrefLanguage(User $user)
protected function changePassword(SugarBean $bean, $old, $new)
public function userPreferences(ServiceBase $api, array $args)
public function userPreferencesSave(ServiceBase $api, array $args)
public function userPreference(ServiceBase $api, array $args)
public function userPreferenceSave(ServiceBase $api, array $args)
public function userPreferenceDelete(ServiceBase $api, array $args)
public function getMyFollowedRecords(ServiceBase $api, array $args)

./clients/base/api/DuplicateCheckApi.php
protected function trimArgs(array $args)
protected function populateFromApi(ServiceBase $api, SugarBean $bean, array $args, array $options = array())

./clients/base/api/FileApi.php
public function saveFilePut(ServiceBase $api, array $args, $stream = 'php://input')
protected function checkFileAccess(SugarBean $bean, $field, array $args)
public function saveFilePost(ServiceBase $api, array $args, $temporary = false)
public function getFileList(ServiceBase $api, array $args)
public function getFile(ServiceBase $api, array $args)
public function removeFile(ServiceBase $api, array $args)
public function getArchive(ServiceBase $api, array $args)
protected function deleteIfFails(SugarBean $bean, array $args)
protected function getFileInfo(SugarBean $bean, $field, ServiceBase $api)
protected function isFileEncoded(ServiceBase $api, array $args)

./clients/base/api/FileTempApi.php
public function saveTempImagePost(ServiceBase $api, array $args)
public function getTempImage(ServiceBase $api, array $args)

./clients/base/api/FilterApi.php
protected function populateRelatedFields(SugarBean $bean, $data)
protected function removeRelateCollectionsFromSelect(array $options)

./clients/base/api/GlobalSearchApi.php
public function globalSearch(ServiceBase $api, array $args)
protected function formatResults(ServiceBase $api, ResultSetInterface $results)
protected function formatBeanFromResult(ServiceBase $api, Result $result)

./clients/base/api/HelpApi.php
public function getHelp(ServiceBase $api, array $args)
public function getExceptionsHelp(ServiceBase $api, array $args)

./clients/base/api/ListApi.php
public function parseArguments(ServiceBase $api, array $args, SugarBean $seed = null)
public function listModule(ServiceBase $api, array $args)
protected function performQuery(ServiceBase $api, array $args, SugarBean $seed, $queryParts, $limit, $offset)

./clients/base/api/LocaleApi.php
public function localeOptions(ServiceBase $api, array $args)

./clients/base/api/LoggerApi.php
public function logMessage(ServiceBase $api, array $args)

./clients/base/api/MassUpdateApi.php
public function massDelete(ServiceBase $api, array $args)
public function massUpdate(ServiceBase $api, array $args)

./clients/base/api/MetadataApi.php
protected function getTypeFilter(array $args, $default)
protected function getModuleFilter(array $args, $default)
protected function isOnlyHash(array $args)
public function getPublicMetadata(ServiceBase $api, array $args)
protected function filterResults(array $args, $data, $typeFilter, $onlyHash = false, $baseChunks = array(), $perModuleChunks = array(), $moduleFilter = array())

./clients/base/api/ModuleApi.php
public function getEnumValues(ServiceBase $api, array $args)
public function updateRecord(ServiceBase $api, array $args)
public function updateRelatedRecords(ServiceBase $api, SugarBean $bean, array $args)
public function retrieveRecord(ServiceBase $api, array $args)
public function deleteRecord(ServiceBase $api, array $args)
public function setFavorite(ServiceBase $api, array $args)
public function unsetFavorite(ServiceBase $api, array $args)
protected function getRelatedFields(array $args, SugarBean $bean)
protected function moveTemporaryFiles(array $args, SugarBean $bean)
protected function getLoadedAndFormattedBean(ServiceBase $api, array $args)
protected function processAfterCreateOperations(array $args, SugarBean $bean)
./clients/base/api/ModuleCollectionApi.php
protected function getSourceData(ServiceBase $api, $source, array $args)
protected function getSourceCount(ServiceBase $api, $source, array $args)

./clients/base/api/OAuth2Api.php
protected function getOAuth2Server(array $args)
public function token(ServiceBase $api, array $args)
public function logout(ServiceBase $api, array $args)
public function bwcLogin(ServiceBase $api, array $args)

./clients/base/api/PasswordApi.php
public function requestPassword(ServiceBase $api, array $args)

./clients/base/api/PingApi.php
public function ping(ServiceBase $api, array $args)

./clients/base/api/PipelineChartApi.php
public function pipeline(ServiceBase $api, array $args)
protected function buildQuery(ServiceBase $api, SugarBean $seed, $tp, $amount_field, $type = 'user')

./clients/base/api/RSSFeedApi.php
public function getFeed(ServiceBase $api, array $args)
public function getFeedLimit(array $args)

./clients/base/api/RecentApi.php
protected function parseArguments(array $args)
public function getRecentlyViewed(ServiceBase $api, array $args, $acl = 'list')
protected function getRecentlyViewedQueryObject(SugarBean $seed, array $options)

./clients/base/api/RecordListApi.php
public function recordListCreate(ServiceBase $api, array $args)
public function recordListDelete(ServiceBase $api, array $args)
public function recordListGet(ServiceBase $api, array $args)

./clients/base/api/RegisterLeadApi.php
protected function updateBean(SugarBean $bean, ServiceBase $api, array $args)
public function createLeadRecord(ServiceBase $api, array $args)

./clients/base/api/RelateCollectionApi.php
protected function getSourceData(ServiceBase $api, $source, array $args)
protected function getSourceCount(ServiceBase $api, $source, array $args)

./clients/base/api/RelateRecordApi.php
protected function checkRelatedSecurity(ServiceBase $api, array $args, SugarBean $primaryBean, $securityTypeLocal = 'view', $securityTypeRemote = 'view')
protected function getRelatedFields(ServiceBase $api, array $args, SugarBean $primaryBean, $linkName, SugarBean $seed = null)
public function getRelatedRecord(ServiceBase $api, array $args)
public function createRelatedRecord(ServiceBase $api, array $args)
public function createRelatedLink(ServiceBase $api, array $args)
public function createRelatedLinks(ServiceBase $api, array $args, $securityTypeLocal = 'view', $securityTypeRemote = 'view')
public function updateRelatedLink(ServiceBase $api, array $args)
public function deleteRelatedLink(ServiceBase $api, array $args)
public function createRelatedLinksFromRecordList(ServiceBase $api, array $args)

./clients/base/api/TwitterApi.php
public function getTweets(ServiceBase $api, array $args)
public function getCurrentUser(ServiceBase $api, array $args)

./clients/base/api/vCardApi.php
public function vCardSave(ServiceBase $api, array $args)
public function vCardDownload(ServiceBase $api, array $args)
public function vCardImport(ServiceBase $api, array $args)
protected function getVcardForRecord(ServiceBase $api, array $args)

./clients/mobile/api/CurrentUserMobileApi.php
protected function getUserHash(User $user)

./clients/portal/api/CurrentUserPortalApi.php
public function retrieveCurrentUser(ServiceBase $api, array $args)
public function updateCurrentUser(ServiceBase $api, array $args)
protected function changePassword(SugarBean $bean, $old, $new)
./data/SugarBean.php
public function populateFromRow(array $row, $convert = false)

./include/Expressions/Dependency.php
public function fire(SugarBean $target)
private function fireActions(SugarBean $target, $useFalse = false)

./include/Expressions/Expression/Numeric/NumericExpression.php
protected function isCurrencyField(SugarBean $bean, $field)
protected function getFieldPrecision(SugarBean $bean, $field)
./include/SugarObjects/templates/file/File.php
public function populateFromRow(array $row, $convert = false)

./include/SugarObjects/templates/person/Person.php
protected function getVCalData(array $options)

./include/api/SugarApi.php
public function requireArgs(array $args, $requiredFields = array())
protected function formatBean(ServiceBase $api, array $args, SugarBean $bean, array $options = array())
protected function formatBeans(ServiceBase $api, array $args, $beans, array $options = array())
protected function loadBean(ServiceBase $api, array $args, $aclToCheck = 'view', array $options = array())
protected function updateBean(SugarBean $bean, ServiceBase $api, array $args)
protected function toggleFavorites(SugarBean $bean, $favorite)

./include/api/SugarListApi.php
public function parseArguments(ServiceBase $api, array $args, SugarBean $seed = null)

./modules/Accounts/clients/base/api/AccountsApi.php
public function opportunityStats(ServiceBase $api, array $args)

./modules/ActivityStream/clients/base/api/ActivitiesApi.php
protected function checkParentPreviewEnabled(User $user, $module, $id)

./modules/Administration/clients/base/api/AdministrationApi.php
public function searchReindex(ServiceBase $api, array $args)
public function searchStatus(ServiceBase $api, array $args)
public function searchFields(ServiceBase $api, array $args)
public function elasticSearchQueue(ServiceBase $api, array $args)
public function elasticSearchRouting(ServiceBase $api, array $args)
public function elasticSearchIndices(ServiceBase $api, array $args)
public function elasticSearchMapping(ServiceBase $api, array $args)

./modules/Audit/clients/base/api/AuditApi.php
public function viewChangeLog(ServiceBase $api, array $args)
./modules/Calendar/clients/base/api/CalendarApi.php
public function inviteeSearch(ServiceBase $api, array $args)
protected function buildSearchParams(array $args)
protected function transformInvitees(ServiceBase $api, array $args, $searchResults)
protected function getMatchedFields(array $args, $record, $maxFields = 0)
./modules/Categories/clients/base/api/TreeApi.php
protected function createNewBean(ServiceBase $api, array $args)
public function prepend(ServiceBase $api, array $args)
public function append(ServiceBase $api, array $args)
public function insertBefore(ServiceBase $api, array $args)
public function insertAfter(ServiceBase $api, array $args)
public function moveBefore(ServiceBase $api, array $args)
public function moveAfter(ServiceBase $api, array $args)
public function moveFirst(ServiceBase $api, array $args)
public function moveLast(ServiceBase $api, array $args)
public function tree(ServiceBase $api, array $args)
public function children(ServiceBase $api, array $args)
public function next(ServiceBase $api, array $args)
public function prev(ServiceBase $api, array $args)
public function getParent(ServiceBase $api, array $args)
public function path(ServiceBase $api, array $args)
public function filterSubTree(ServiceBase $api, array $args)
public function filterTree(ServiceBase $api, array $args)

./modules/Contacts/clients/base/api/ContactsApi.php
public function influencers(ServiceBase $api, array $args)
public function opportunityStats(ServiceBase $api, array $args)
public function getFreeBusySchedule(ServiceBase $api, array $args)
protected function getBean(ServiceBase $api, array $args)
protected function getAccountBean(ServiceBase $api, array $args)
protected function getAccountRelationship(ServiceBase $api, array $args, $account, $relationship, $limit = 5, $query = array())

./modules/Dashboards/clients/base/api/DashboardApi.php
public function createDashboard(ServiceBase $api, array $args)
./modules/Dashboards/clients/base/api/DashboardListApi.php
public function getDashboards(ServiceBase $api, array $args)
./modules/Documents/Document.php
public function populateFromRow(array $row, $convert = false)

./modules/Documents/clients/base/api/DocumentsFileApi.php
protected function checkFileAccess(SugarBean $bean, $field, array $args)
protected function deleteIfFails(SugarBean $bean, array $args)

./modules/DynamicFields/templates/Fields/TemplateField.php
public function populateFromRow(array $row)

./modules/DynamicFields/templates/Fields/TemplateRelatedTextField.php
public function populateFromRow(array $row)

./modules/Emails/Email.php
public function populateFromRow(array $row, $convert = false)

./modules/Emails/clients/base/api/MailApi.php
public function createMail(ServiceBase $api, array $args)
public function updateMail(ServiceBase $api, array $args)
public function archiveMail(ServiceBase $api, array $args)
protected function handleMail(ServiceBase $api, array $args)
public function recipientLookup(ServiceBase $api, array $args)
public function findRecipients(ServiceBase $api, array $args)
public function validateArguments(array &$args)
protected function validateRecipients(array $args, $argName, $isRequired = false)
protected function initMailRecord(array $args)
public function validateEmailAddresses(ServiceBase $api, array $args)
public function saveAttachment(ServiceBase $api, array $args)
public function removeAttachment(ServiceBase $api, array $args)
public function clearUserCache(ServiceBase $api, array $args)

./modules/EmbeddedFiles/clients/base/api/EmbeddedFileApi.php
public function saveFilePost(ServiceBase $api, array $args, $temporary = false)
public function getFile(ServiceBase $api, array $args)

./modules/ExpressionEngine/clients/base/api/RelatedValueApi.php
public function getRelatedValues(ServiceBase $api, array $args)
protected function isFieldCurrency(SugarBean $bean, $field)

./modules/ExpressionEngine/clients/base/api/SugarLogicFunctionsApi.php
public function getSugarLogicFunctions(ServiceBase $api, array $args)

./modules/Filters/clients/base/api/PreviouslyUsedFiltersApi.php
public function setUsed(ServiceBase $api, array $args)
public function getUsed(ServiceBase $api, array $args)
public function deleteUsed(ServiceBase $api, array $args)

./modules/ForecastManagerWorksheets/clients/base/api/ForecastManagerWorksheetsApi.php
public function assignQuota(ServiceBase $api, array $args = array())

./modules/ForecastWorksheets/clients/base/api/ForecastWorksheetsApi.php
public function forecastWorksheetSave(ServiceBase $api, array $args)
protected function getClass(array $args)

./modules/Forecasts/clients/base/api/ForecastsApi.php
public function returnEmptySet(ServiceBase $api, array $args)
public function forecastsInitialization(ServiceBase $api, array $args)
public function retrieveSelectedUser(ServiceBase $api, array $args)
public function timeperiod(ServiceBase $api, array $args)
protected function getTimeperiodFilterClass(array $args)
public function getReportees(ServiceBase $api, array $args)
public function getOrgTree(ServiceBase $api, array $args)
protected function compareSettingsToDefaults(Administration $admin, $forecastsSettings, ServiceBase $api)
public function getQuota(ServiceBase $api, array $args)

./modules/Forecasts/clients/base/api/ForecastsChartApi.php
public function chart(ServiceBase $api, array $args)
protected function getClass($file, $klass, array $args)

./modules/Forecasts/clients/base/api/ForecastsFilterApi.php
public function forecastsCommitted(ServiceBase $api, array $args)

./modules/Forecasts/clients/base/api/ForecastsModuleApi.php
protected function getClass(array $args)

./modules/Forecasts/clients/base/api/ForecastsProgressApi.php
public function progressRep(ServiceBase $api, array $args)
public function progressManager(ServiceBase $api, array $args)

./modules/History/clients/base/api/HistoryApi.php
protected function scrubFields(array $args)
./modules/Home/clients/base/api/MostActiveUsersApi.php
public function getMostActiveUsers(ServiceBase $api, array $args)

./modules/KBContents/clients/base/api/KBContentsApi.php
public function relatedDocuments(ServiceBase $api, array $args)
public function disableApi(ServiceBase $api, array $args)

./modules/KBContents/clients/base/api/KBContentsFilterApi.php
protected function filterByContainingExcludingWords(ServiceBase $api, array $args, $filterArgs)

./modules/KBContents/clients/base/api/KBContentsRelateRecordApi.php
public function createRelatedLinks(ServiceBase $api, array $args, $securityTypeLocal = 'view', $securityTypeRemote = 'view')

./modules/KBContents/clients/base/api/KBContentsUsefulnessApi.php
protected function vote(ServiceBase $api, array $args, $isUseful)
public function voteUseful(ServiceBase $api, array $args)
public function voteNotUseful(ServiceBase $api, array $args)

./modules/Leads/clients/base/api/LeadConvertApi.php
public function convertLead(ServiceBase $api, array $args)
protected function loadModule(ServiceBase $api, $module, $data)
protected function loadModules(ServiceBase $api, $modulesToConvert, $data)

./modules/Leads/clients/base/api/LeadsApi.php
public function getFreeBusySchedule(ServiceBase $api, array $args)
protected function getAccountBean(ServiceBase $api, array $args, $record)
protected function getAccountRelationship(ServiceBase $api, array $args, $account, $relationship, $limit = 5, $query = array())

./modules/Meetings/clients/base/api/MeetingsApi.php
public function getAgenda(ServiceBase $api, array $args)
public function getExternalInfo(ServiceBase $api, array $args)

./modules/ModuleBuilder/parsers/views/AbstractMetaDataParser.php
protected function _standardizeFieldLabels(array &$fielddefs)
public static function _trimFieldDefs(array $def)
public static function getClientStudioValidation(array $studio, $view, $client)

./modules/ModuleBuilder/parsers/views/GridLayoutMetaDataParser.php
public static function _trimFieldDefs(array $def)

./modules/ModuleBuilder/parsers/views/ListLayoutMetaDataParser.php
public static function _trimFieldDefs(array $def)

./modules/ModuleBuilder/parsers/views/SubpanelMetaDataParser.php
public static function _trimFieldDefs(array $def)

./modules/Opportunities/clients/base/api/OpportunitiesEnumApi.php
public function getEnumValues(ServiceBase $api, array $args)

./modules/OutboundEmailConfiguration/clients/base/api/OutboundEmailConfigurationApi.php
public function listConfigurations(ServiceBase $api, array $args)
public function convertQuote(ServiceBase $api, array $args)
public function createRecordList(ServiceBase $api, array $args)

./modules/Reports/clients/base/api/ReportsDashletsApi.php
public function getSavedReports(ServiceBase $api, array $args)
public function getSavedReportChartById(ServiceBase $api, array $args)

./modules/Reports/clients/base/api/ReportsExportApi.php
public function exportRecord(ServiceBase $api, array $args)

./modules/RevenueLineItems/clients/base/api/RevenueLineItemsGlobeChartApi.php
public function salesByCountry(ServiceBase $api, array $args)

./modules/SchedulersJobs/SchedulersJob.php
protected function sudo(User $user)

./modules/Tags/clients/base/api/TagsApi.php
public function updateBean(SugarBean $bean, ServiceBase $api, array $args)

./modules/Teams/clients/base/api/TeamsRelateRecordApi.php
protected function checkRelatedSecurity(ServiceBase $api, array $args, SugarBean $primaryBean, $securityTypeLocal = 'view', $securityTypeRemote = 'view')

./modules/TimePeriods/clients/base/api/TimePeriodsCurrentApi.php
public function getCurrentTimePeriod(ServiceBase $api, array $args)
public function getTimePeriodByDate(ServiceBase $api, array $args)

./modules/Users/User.php
public function populateFromRow(array $row, $convert = false)

./modules/Users/clients/base/api/UsersApi.php
public function deleteUser(ServiceBase $api, array $args)
public function getFreeBusySchedule(ServiceBase $api, array $args)

./modules/Users/clients/base/api/UsersRelateRecordApi.php
protected function checkRelatedSecurity(ServiceBase $api, array $args, SugarBean $primaryBean, $securityTypeLocal = 'view', $securityTypeRemote = 'view')
./modules/pmse_Inbox/clients/base/api/PMSECasesListApi.php
public function selectCasesList(ServiceBase $api, array $args)
public function selectLogLoad(ServiceBase $api, array $args)
public function clearLog(ServiceBase $api, array $args)
public function configLogLoad(ServiceBase $api, array $args)
public function configLogPut(ServiceBase $api, array $args)
public function returnProcessUsersChart(ServiceBase $api, array $args)
public function returnProcessStatusChart(ServiceBase $api, array $args)

./modules/pmse_Inbox/clients/base/api/PMSEEngineApi.php
public function getNotes(ServiceBase $api, array $args)
public function saveNotes(ServiceBase $api, array $args)
public function deleteNotes(ServiceBase $api, array $args)
public function retrieveHistoryLog(ServiceBase $api, array $args)
public function engineRoute(ServiceBase $api, array $args)
public function engineClaim(ServiceBase $api, array $args)
public function reassignRecord(ServiceBase $api, array $args)
public function adhocReassign(ServiceBase $api, array $args)
public function getReassign(ServiceBase $api, array $args)
public function getFormDataReassign(array $args)
public function getAdhoc(ServiceBase $api, array $args)
public function getFormDataAdhoc(array $args)
public function changeCaseUser(ServiceBase $api, array $args)
public function userListByTeam(ServiceBase $api, array $args)
public function updateChangeCaseFlow(ServiceBase $api, array $args)
public function reactivateFlows(ServiceBase $api, array $args)
public function cancelCase(ServiceBase $api, array $args)
public function reassignFlows(ServiceBase $api, array $args)
public function getReassignFlows(ServiceBase $api, array $args)
public function getUnattendedCases(ServiceBase $api, array $args)
public function selectCase(ServiceBase $api, array $args)
public function getCaseRecord(ServiceBase $api, array $args)
public function getSettingsEngine(ServiceBase $api, array $args)
public function putSettingsEngine(ServiceBase $api, array $args)

./modules/pmse_Inbox/clients/base/api/PMSEEngineFilterApi.php
protected function formatBeans(ServiceBase $api, array $args, $beans, array $options = array())

./modules/pmse_Inbox/clients/base/api/PMSEImageGeneratorApi.php
public function getFile(ServiceBase $api, array $args)
public function getTempImage(ServiceBase $api, array $args)
public function getProjectFile(ServiceBase $api, array $args)
public function getProcessImage(ServiceBase $api, array $args)

./modules/pmse_Project/clients/base/api/PMSEProjectApi.php
public function retrieveCustomProject(ServiceBase $api, array $args)
public function updateCustomProject(ServiceBase $api, array $args)
protected function getLoadedAndFormattedBean(ServiceBase $api, array $args)
public function getBRFields(ServiceBase $api, array $args)
public function getCrmData(ServiceBase $api, array $args)
public function putCrmData(ServiceBase $api, array $args)
public function getActivityDefinition(ServiceBase $api, array $args)
public function putActivityDefinition(ServiceBase $api, array $args)
public function getEventDefinition(ServiceBase $api, array $args)
public function putEventDefinition(ServiceBase $api, array $args)
public function getGatewayDefinition(ServiceBase $api, array $args)
public function putGatewayDefinition(ServiceBase $api, array $args)
public function verifyRunningProcess(ServiceBase $api, array $args)

./modules/pmse_Project/clients/base/api/PMSEProjectCRUDApi.php
public function deleteRecord(ServiceBase $api, array $args)

./modules/pmse_Project/clients/base/api/PMSEProjectImportExportApi.php
public function projectDownload(ServiceBase $api, array $args)
public function projectImport(ServiceBase $api, array $args)

./modules/pmse_Project/pmse_BpmFlow/pmse_BpmFlow.php
public function populateFromRow(array $row, $convert = false)

Expected to Affect Few Developers

This section explains items expected to have a low impact on Sugar customizations and integrations when migrated to Sugar 7.10 (Fall '17). It is expected that these items will affect few developers. 

Significant refactoring of Sugar Portal

There have been significant code level changes to Sugar Enterprise's Sugar Portal feature. Cleanup here was necessary as the Portal was affected by changes related to Shareable Dashboards.

./modules/KBContents/clients/portal/layouts/list-dashboard/list-dashboard.php has been replaced with ./modules/KBContents/clients/portal/layouts/rhs-pane/rhs-pane.php.  Any customizations related to list-dashboard.php will need to be updated.  

The Sidecar component dashboard-list has been renamed to portal-list. As part of this renaming, the following files have been renamed: 

./clients/portal/layouts/dashboard-list/dashboard-list.php is now ./clients/portal/layouts/portal-list/portal-list.php.
./clients/portal/views/dashboard-list-top/dashboard-list-top.hbs is now ./clients/portal/views/portal-list-top/portal-list-top.hbs.

./clients/portal/views/dashboard-list-top/dashboard-list-top.js is now ./clients/portal/views/portal-list-top/portal-list-top.js Any customizations related to dashboard-list.phpdashboard-list-top.hbs, or dashboard-list-top.js will need to be updated.

 The portal home page has been renamed. As part of this renaming, the following files have been renamed:

./clients/portal/layouts/dashboard/dashboard.php is now ./clients/portal/layouts/home/home.php.

./clients/portal/layouts/dashboard/dashboard.js is now ./clients/portal/layouts/home/home.js Any customizations related to dashboard.php or dashboard.js will need to be updated. 

Removal of /rest/<version>/<module>/filter/<filter_id> REST API endpoint

The following deprecated REST endpoint was removed in this Sugar release. Please use the alternative REST API instead.

/rest/<version>/<module>/filter/<filter_id> 

Use /rest/<version>/<module>/filter?filter_id=<id> instead. 

Removal of Account::remove_redundant_http() method

The following deprecated PHP method has been removed in this Sugar release. Please ensure your customizations are not using it

Account::remove_redundant_http()

Last modified: 10/20/2017 02:51pm