Let the platform do the work

Introduction

Overview

The Sugar Developer Guide is an essential resource for developers who are new to Sugar or to CRM and web-based applications. It describes how to configure and customize the Sugar platform for a broad range of tasks applicable to any organization that has a need to manage business relationships with people.

Prerequisites

Using and understanding the documentation contained in the Sugar Developer Guide requires basic programming and software development knowledge. Specifically, you should be familiar with the PHP general-purpose scripting language and the SQL programming language for accessing databases.

Understanding Sugar's Framework

Designed as the most modern web-based CRM platform available today, Sugar has quickly become the business application standard for companies around the world. The Sugar application framework has a sophisticated extension model built into it, allowing developers to make significant customizations to the application in an upgrade-safe and modular manner. It is easy to modify the core files in the distribution; you should always check for an upgrade-safe way to make changes. Educating developers on how to make upgrade-safe customizations is one of the key goals of this Developer Guide. For more information on Sugar's structure, please review the architecture section.

Supported Platforms

Originally, Sugar® was written on the LAMP stack (i.e. Linux, Apache, MySQL, and PHP), but has since added support for every operating system on which the PHP programming language runs, for the Microsoft IIS web server, and for the Microsoft SQL Server, IBM® DB2®, and Oracle databases. For more information about supported software versions and recommended stacks, please refer to the main Supported Platforms page.

Sugar Products

Sugar has several CRM products available: Sugar Sell, Sugar Serve, and Sugar Enterprise, which are all sold under a commercial subscription agreement. These products are developed by the same development team using the same source tree with different modules and features available depending on the product. A comparison of each product's features is available in the License Types section of the User Management documentation in the Administration Guide.

Developer Policy

The rules and guidelines for developing or integrating with the Sugar platform are published in our Developer Policy.

Development Tools

Sugar has a set of built-in tools that you can use to your advantage when troubleshooting or developing.

Developer Mode

Developer Mode will allow for Sugar to recompile cached files when the page is reloaded. The following file types are rebuilt:

  • Handlebar Templates (.hbt)
  • Smarty Templates (.tpl)
  • JavaScript Controllers (.js)

When Developer Mode is enabled, The Sidecar JavaScript library references the full JavaScript files located in ./sidecar/ rather than the concatenated and minified cached versions. You can turn on Developer Mode by navigating to Admin > System Settings. For more information, please refer to the System documentation.

Note: This setting should remain off unless developing because it will degrade system performance.

Diagnostic Tool

When troubleshooting issues, you may find the diagnostic tool to be helpful. This tool will export a zipped package containing the requested diagnostics and is available even if you are hosting your instance on Sugar's cloud service.

The diagnostic tool has the ability to export the following:

  • SugarCRM config.php
  • SugarCRM Custom directory
  • phpinfo()
  • MySQL - Configuration Table Dumps
  • MySQL - All Tables Schema
  • MySQL - General Information
  • MD5 info
    • Copy files.md5
    • Copy MD5 Calculated array
  • BeanList/BeanFiles files exist
  • SugarCRM Log File
  • Sugar schema output (VARDEFS)

You can use the diagnostic tool by navigating to Admin > Diagnostic Tool. For more information, please refer to the System documentation in the Administration Guide.

Composer

When building applications, some developers prefer to use Composer to manage their external dependencies and make them more intuitive. For more information, please refer to the Composer documentation.