Skip navigation
All Places > Developer > Blog
1 2 3 Previous Next

Developer

190 posts

Those who have been around a while will know that SugarCRM Inc. was built around a single product called “Sugar”. Sugar is such a part of our DNA today that we often use “Sugar” and “SugarCRM” terms interchangeably. I’m sure that many Sugar Developers out there would be surprised to learn that we sell more than just Sugar at SugarCRM!

 

Sugar has been good to us but the way apps were built in 2004 and how apps are developed today are much different. We’ve been thinking about how we want to build, deploy, and maintain new applications and services today and in the future. This has led us to a long term investment to develop a framework for new cloud-based services that are tightly integrated with Sugar.

 

The tip of the spear is a new set of identity and access management services that we call Cloud Identity. Coming to a Sugar instance near you in June 2019!

 

What is SugarCRM’s Cloud Identity service?

 

Cloud Identity is a set of user authentication and access management microservices that will improve how we manage Sugar cloud users today. Regardless of the SugarCRM products and services you are using, you will be able to manage your end users in one place. This will make life easier for Sugar administrators while allowing SugarCRM engineers and Sugar Developers to more easily integrate Sugar and other applications and services including those built by partners and ISVs in the future.

 

It will offer improved OAuth 2.0 support, leverages OpenID Connect, and will also address a frequent customer request to support SAML Web Single Sign On (SSO) with the MS Outlook Plug-In.

 

Cloud Identity also supports the concept of Service Accounts which can be used to implement secure Server to Server integrations much easier without involving end user credentials.

 

It also provides a new Cloud Settings user interface that Sugar administrators will use to manage end users and some subtle but important changes to end user login experience.

 

We plan to start on-boarding new Sugar cloud customers in some regions to Cloud Identity service in June 2019.


Frequently Asked Questions

 

We’ve just recently finished up our Cloud Identity Beta where we asked a handful of partners and customers to test drive the new system. We received a lot of valuable input that we used to improve these services. We also received a number of questions from Sugar Developers that we wanted to share below:

 

How do I know if a given Sugar instance is using Cloud Identity?

SugarConfig settings are updated in order to connect a Sugar instance to Cloud Identity services. This will be done automatically for our Sugar cloud customers. Cloud Identity does not currently support Sugar on-premise installations. In practice, you can check the public metadata REST endpoint for any given Sugar cloud instance to see if it is operating in “IDM mode”.

 

GET /rest/v11_4/metadata/public

 

The response will include:

 

{

   …

   “config” : {

      …

      “idmModeEnabled”: true | false

      …

   }

   …

}

 

This setting will be true if Cloud Identity is in use.

 

How to find the Tenant ID for a given Sugar instance?

In most cases, you will not need to know the specific Tenant ID for your Sugar instance in the Sugar cloud. However, it can be useful to know if you need to login to Cloud Settings console directly.

 

 

For example, it can be used with the tenant_hint URL parameter to allow more seamless logins to Cloud Settings.

 

https://login-us-west-2.service.sugarcrm.com/?tenant_hint={TENANT_ID}

 

The Tenant ID can be retrieved from a Sugar instance’s SugarConfig settings or from the public metadata API.

 

GET /rest/v11_4/metadata/public

 

The response will include:

 

{

   …

   “config” : {

      …

      “tenant”: “srn:cloud:iam:us-west-2:{TENANT_ID}:tenant”

      …

   }

   …

}

 

The tenant config property above is an example of a Sugar Resource Name (SRN). SRNs are used to uniquely identify resources across the Sugar cloud ecosystem. You’ll see more SRNs as you adopt the new platform and we roll out more features.

 

How do I deploy a backup of a Sugar cloud instance that uses Cloud Identity?

If you have a backup of a Sugar cloud instance that was configured to use Cloud Identity then it will not likely work without some configuration changes. This is because your local system will not have permission to access the identity services running in the Sugar cloud.

 

Take the following steps to disable IDM before working with the backup.

 

Update config_override.php to set:

 

<?php

$sugar_config['idm_mode']['enabled'] = false;

 

In a terminal, remove cache/ directory contents:

 

$ rm -rf [path to sugar]/cache/*

 

How does Users module change with Cloud Identity?

User information is now federated across Cloud Identity services and the Sugar instance Users module. When a Sugar instance is connected to Cloud Identity, there will be specific User fields that are no longer owned by the Sugar instance. For example, the user name or e-mail address will be modifiable by a new Cloud Settings user interface and not within Sugar.

 

Updates that are made in Cloud Settings are pushed to Sugar user records automatically via REST APIs and also at the time of each user's login. If you have customizations that write to Users module, these changes could be overwritten by Cloud Identity services.

 

 

At this time, the following Users module fields are owned by Cloud Identity services and should only be updated via new Cloud Settings user interface.

 

  • first_name
  • last_name
  • address_street
  • address_city
  • address_state
  • address_postalcode
  • address_country
  • email_addresses
  • phone_work
  • title
  • department
  • status
  • is_admin
  • preferred_language
  • user_name

 

Custom fields on the Users module are not overwritten.

 

What are changes when authenticating via Cloud Identity?

Ultimately, Cloud Identity will provide more options for authentication and authorization. This will be the area of biggest impact for Sugar integrations.

 

Web Users

When an end user navigates to a Sugar URL and they are not yet logged in they will be redirected to a login service. This login service will have a different URL than their Sugar instance. However, once logged in they will be redirected back to their Sugar instance.

 

REST API integrations

If authenticating using REST API, the endpoint behavior is essentially unchanged. What has changed is the format for OAuth access and refresh tokens. Instead of using UUIDs, Cloud identity uses encrypted tokens that are base64 encoded. If you are storing access or refresh tokens, they can now be up to 255 characters long. However, there is no hard limit on their size and they may get longer over time.

 

Ex.

"SyeIRxNeMkRy8IBluxttQ8DzrXEt4CQp2vzoWVQFJqw.xaZOVhc8hdB630ZoLBt9LOHePZb6j6uRRKGkKgNe3RI"

 

What functionality or customizations are not supported when using Cloud Identity?

Much of the responsibility for handling authentication is now delegated to Cloud Identity services. This means that many customizations to Sugar’s authentication mechanisms are no longer supported.

 

In particular, if you have created any custom SugarOAuth2Storage* classes then these will not work when Cloud Identity is enabled. The responsibility for generating and managing authentication tokens is now the responsibility of our Sugar cloud service instead of the Sugar instance.

 

If you feel like an essential authentication feature is missing in Cloud Identity services, then please let us know by filing an enhancement request via the Support Portal.

 

When using SAML Web SSO, should I move my integration users to my external identity provider?

Some customers that have wanted to use SAML with Sugar have held off until the SugarCRM Outlook Plug-In supported it. For Sugar customers using the new Cloud Identity service, the Outlook Plug-In will now support SAML Web SSO for the first time.

 

If you’re using integration users, we recommend leaving them as local user accounts instead of moving them to your SAML identity provider. The same advice applies when using LDAP an external identity provider too. SAML Web SSO isn’t well suited for REST API integrations since it requires credentials to be entered into a browser which makes automated authentication challenging. Your SAML or LDAP identity provider should only be responsible for managing employee access to Sugar.

 

This is also a use case where Service Accounts will come into play. Service Accounts will allow for the separation of responsibility between regular user accounts and services accessing Sugar data for integration purposes. This is a feature we are planning to implement in the future.

Good Morning, Sugar Developers!

 

That's me! Gotta be festive at the holidays!

My name is Michael Shaheen and I am SugarCRM’s new Developer Advocate. I’ll be working with Matt Marum to maintain relationships between our developer community and the teams that work with the Sugar product group.

 

Let’s talk a bit about my background. I have been a developer since writing

10 print “Michael Rocks”
20 goto 10

to fill up the screen at the mall Radio Shack in the early 80s. Since then, I have worked for multiple companies as a manager of software development teams. I may have been managing, but I can never stop coding. I love to get into projects and solve problems. Lately that has been mostly front-end work (Javascript, React, SASS, task runners, etc), but I’m not a stranger to back-end. I spent many years coding in .NET, Java and PHP.

 

At home, I have a beautiful wife and 2 lovely teenage daughters. Oh and cats. We have 2 indoor and a few outdoor cats that we take care of. I also tell a lot of dad jokes (but that started before the kids).

 

Over the past 3 weeks, I have been learning all there is to know about SugarCRM as an organization and Sugar as a platform. I’m looking forward to talking to each of you through the Developer Community and, hopefully, in person as much as possible. From the conversations I’ve had with SugarCRM engineers, I know that they all want to put out the best quality product possible. The Developer Community is one of our top ways of gathering feedback. I aim to ensure your feedback is heard and acted upon. Keep your eyes peeled for a survey!

 

I am very excited to be in this new role and I can’t wait to meet you all through the Developer Community as well as at events as they arise. In the meantime, say hello in the comments or leave me a comment with your best dad joke. I’ll get you started:

 

Remember, 6 out of 7 dwarfs aren’t happy.
Matt Marum

Sugar 9 has arrived!

Posted by Matt Marum Employee Apr 9, 2019

Hey Sugar devs!

 

Spring is in the air (for the northern hemisphere)! This can mean only two things: allergy season has started and a new Sugar On-Site release is now available.

 

Let me introduce to you Sugar 9.0!

 

See below for all the information Sugar Developers need to know. Sugar end users can be directed over to one of the official Sugar release announcements: the Sugar Spring '19 announcement is for cloud customers and the Sugar 9.0 announcement is for on-premise customers.

 

In our recent developer webinar we gave an overview of the important changes coming in the Sugar 9.0 On-Site and Sugar Spring ‘19 cloud releases:

 

 

The slides from that webinar are available here.

 

Did you miss the webinar? Want to make sure you’re the first to know about important Sugar product changes? Make sure you are signed up for Sugar Developer News!

 

Here's a quick overview of what can be expected if upgrading from Winter ‘19

  • Group Outbound Email Support
  • SugarBPM™ improvements
  • Performance and scalability improvements

 

In addition to the above, here are some of the many additional updates you’ll see if upgrading from Sugar 8.0.

  • Reporting improvements including report scheduling
  • Data Privacy improvements including double opt-in
  • New Quotes configuration panel
  • Emoji support on MySQL (utf8mb4 conversion)
  • Updates to JS libraries including upgrading to jQuery 3
  • Added PHP 7.3 support
  • Updated Microsoft stack support for those hosting on Windows
  • More performance and scalability improvements

 

Check out the below resources for the rest of the details.

Impatience is a virtue

Larry Wall (the inventor of Perl) is credited with identifying the three great virtues of a programmer: "laziness, impatience, and hubris."

 

These virtues are usually shared with a wink. For example, a programmer's "laziness" will drive them to get as much work done as possible with the least amount of effort. They say that we'll write automation scripts (in Perl probably) or follow the DRY principle to remove all redundant and unnecessary effort.

 

I find the "impatience" and "hubris" virtues more interesting.

 

The virtue of "impatience" is meant to make us "write programs that don't just react to your needs, but actually anticipate them." It also means that we demand a lot from our software. We want it to be as fast, efficient, and proactive as possible. It can be just as satisfying to double the speed of a program as it was to create "v1.0" in the first place.

 

 

Impatience is a virtue that I think we share with our Sugar users. We all want Sugar to be responsive and, at best, to be able to provide an insight that anticipates every Sugar user's need. That's why we have a dedicated team of Performance Engineers that work cross-functionally with Product, Operations, and Support teams with the goal to make Sugar fast. REAL FAST.

 

The last virtue is "hubris" which means that programmers should take great pride in the code they write and the work they do. So let me exercise a little hubris by bragging about what the Performance team has accomplished over the last year.

 

Performance Testing Apparatus

We've leveraged our experience of running the Sugar cloud to put together an exhaustive  REST API performance test suite of over 15,000 API requests using JMeter. These requests exercise commonly used Sugar functions such as loading List Views, viewing and updating Record Views, performing mass updates, and much more. We combine that by using Tidbit to load the Sugar database with 60GB of data. This data set includes a half million Accounts, two million Contacts, and millions more interaction records.

 

The combination of JMeter test suite and Tidbit data set serves as the basis for testing and comparing different Sugar versions and build to build. The results below were gathered by running this same test suite against multiple Sugar versions - 8.0.1, 8.0.2, 8.3.0, and a pre-release build of Sugar 9.0.0.

 

Remember: If you are a Sugar Customer or Partner and you want to have closer look at our JMeter performance test tools, you can sign up to get access to Sugar Test Tools. Tidbit is an open source project available on our Github organization.

 

3x to 7x faster Filter API performance since July 2018

The Filter API is one of the most commonly used Sugar REST APIs. It is used to load List Views, Dashlets, Subpanels, and is commonly used by integrations that need to synchronize data between Sugar and an external system.

 

This API can introduce some performance challenges because it allows access to many records at once using arbitrary filter criteria and sort order. The performance of this API can vary widely depending on the data set, the database schema, and the options being used. So this API has been a particular area of focus for our performance engineers that having been identifying bottlenecks and eliminating them one by one.

 

As a result, Filter API performance in Sugar 9 has improved by a factor of 3x to 7x as compared to Sugar 8.0.1 which was released less than a year ago in July 2018.

 

 

Average API response time cut by more than half since July 2018

The average Sugar 9.0 response time across the 15,000 requests in our test suite is a fraction of what it was in 8.0.1. It is 40% faster than 8.0.2 and 30% faster than even our Winter '19 release. This means that no matter how you are using or integrating with Sugar, you will see significant responsiveness gains by upgrading to Sugar 9.0 (on-premise) or Spring '19 (cloud) when they come out.

 

ReleaseAverage Response Time
8.0.11.59s
8.0.21.03s
8.3.0903ms
9.0.0 (pre-release)596ms

 

Increased throughput by 70% on same hardware

If you are using Sugar on-premise, there is a substantial increase in request throughput which can translate to lower hosting costs since more users can be hosted on less hardware. Our testing shows that Sugar 9.0 should process 70% more requests in the same amount of time as the latest Sugar 8.0.2 on-premise release using the same hardware. This should help you stretch hosting dollars further.

 

 

Our work is never done

This is a really exciting time to be part of the SugarCRM ecosystem. We are adding many new products and capabilities to the SugarCRM portfolio and our Performance team is here to make sure that all these products meet and exceed our customer's performance expectations.

Hello Sugar Developers!

 

Are you excited about Sugar 9.0.0?

 

We want to make sure your customizations and integrations are ready for the Sugar 9.0 (on-premise) and Spring '19 (cloud) releases, so we’re hosting two webinars just for you!

 

What we will be covering

 

We’ll discuss the big changes that are likely to impact you including the following:

  • Review of changes in Sugar 8.1Sugar 8.2, and Sugar 8.3
  • Updated Sugar on-premise supported platforms (PHP 7.3, SQL Server 2017)
  • Introducing new REST API version 11.5 11.4 endpoints
  • API performance and scalability enhancements

 

Webinar Information

 

We are holding two sessions to accommodate various geographical locations. Please choose ONE of the following times below.

 

Monday, March 25th 4:30 - 5:30 PM PT OR Tuesday, March 26th 7:00 - 8:00 AM PT (Choose one)

 

Register Now

 

As always, we will be posting the webinar recordings to the Sugar Community for those who are unable to attend the live sessions.

Hey Sugar devs!

 

Just like clockwork, it is time for another Sugar cloud quarterly release. If you are on-premise, then you will get these features and many more in the upcoming Sugar 9.0 release in the Spring.

 

Check out the official release announcement for information that your end users will care about.

 

For Developers, we recently hosted a developer webinar we gave an overview of the important changes developers need to know:

 

 

The slides from the webinar are available here.

 

Here's a quick overview of what developers can expect in Winter '19 release.

  • We've added a bunch of new great features like the Comment Log and Product Catalog Quick Picks dashlet
  • We've enhanced the export options available in Reports module
  • We've also made a number of enhancements to Advanced Workflow including the ability to use old and new values in email templates
  • We've put in groundwork for future PHP 7.3 support
  • We've also upgraded to jQuery 3.3.x
  • And our REST API version increased to 11.4 with some additional API endpoints

 

Check out the below resources that have the rest of the details.

 

We hope you’re as excited about this release as we are!

Hello Sugar Devs!

 

My name is Patrick Sullivan and I am SugarCRM’s Escalation Manager. I live in Pennsylvania, USA and began my career at SugarCRM in 2015 as part of the Support team. As the Escalation Manager, my job is to drive resolution of critical customer issues by working across all departments at SugarCRM, especially Technical Support, Technical Account Management, Professional Services, and Product teams. In short, I make sure problems are solved and stuff gets done.

 

Back in the Sugar Fall '17 release (also known as 7.10) we introduced a brand new Emails module built using the Sidecar framework. While the new Emails module introduced a lot of new functionality, we did not include an existing feature related to Outbound Email Accounts, specifically Group Mail Accounts, that some existing Sugar customers relied on.

 

Per our documentation, group inbound email accounts allow multiple users, such as team members, to view emails from an external mail account.  We often see customers configure group inbound mail accounts for support, sales, and similar functions. In Fall ’17 and later versions of Sugar, it is very easy to set up group mail accounts for incoming email and allow many users the ability to access the inbound email.  For outbound email, the outbound email accounts must be configured for each individual user separately, providing for more granular access control.

 

Some of you missed the ease of deploying outbound email account configuration to multiple Sugar users at once. If we are talking about you then have no fear! Enrico Simonetti, Senior Technical Account Manager, has created an open source solution to allow Sugar administrators the ability to deploy outbound email accounts to entire teams with just a few clicks of the mouse. Go Enrico!

 

Accessing the Code

You can find the code for this solution in the Sugar Labs github account at:

 

https://github.com/sugarcrmlabs/OutboundEmailsDeployer

 

All you need to do is download the files, compile it into a module loadable package, and install it to your Sugar instance via Module Loader!

 

Please note that this code is provided as-is under the Apache 2.0 license.

 

Using the Deployer

Once you have installed the code, you will need to clear your browser cache.  After doing so, you will see a new section in your instance’s Admin panel called Outbound Group Email Account Deployer:

 

Opening the deployer will take you to a new page where you have several dropdown lists for selecting the applicable email account, the team to which you want to deploy the email account, and a list of all of your currently-deployed accounts.

 

For more instructions, you can find the deployer’s documentation at:

 

https://github.com/sugarcrmlabs/OutboundEmailsDeployer

 

If you have any questions, feel free to comment on this blog post, but please remember that this solution is being provided as-is.

 

Roadmap

This feature is under consideration to be included as a standard fully supported feature in a future Sugar release. Please leave feedback below if you find this feature useful!

As of this writing, all current Sugar versions (7.9 extended, 8.0, and Sugar cloud) supports and uses PHP 7.1. This PHP version was released in 2016 and entered security support on December 1st 2018. While we’ve made great strides in supporting newer PHP versions over the last few years, we have tended to be a couple years away from the latest and greatest.

 

So what is today’s latest and greatest? Well PHP 7.3 was just released on December 6th 2018. Therefore PHP 7.3 will be the next version that Sugar will support. Over the last few months our engineers have been laying the groundwork for that support in our upcoming Sugar 9.0 release.

 

Some of that work involves adding cumulative code compatibility changes for PHP 7.2 and PHP 7.3. The details of these changes can be found in the PHP 7.2 migration guide and the PHP 7.3 migration guide.

 

However, our intent is to certify support for PHP 7.1 and PHP 7.3 for Sugar 9.0. We have no plan to support PHP 7.2 now or in future. By skipping 7.2, we are able to spend more time innovating while still allowing you all to access the latest and greatest features and performance that new PHP versions offer.

 

Library updates in Sugar Winter ‘19 release

In the upcoming Sugar Winter ‘19 release, the following PHP libraries are updated. Many of these were updated to newer versions that were compatible with PHP 7.3.

 

  • doctrine/dbal: 2.7.1 → 2.8.0 (changelog)
  • ramsey/uuid: 2.9.0 → 3.8.0 (changelog)
  • symfony/{cache,console,framework-bundle,security-core,security-csrf,translation,validator}: 3.4.8 → 3.4.16 (changelog)
  • tedivm/jshrink: 1.1.0 → 1.3.1 (changelog)
  • onelogin/php-saml: v2.11 → v3.0 (changelog)

 

Additionally, we are making minor changes to the following vendored libraries for PHP 7.3 compatibility:

 

  • Smarty
  • XTemplate
  • HTMLPurifier

 

If you have custom code that uses any of the above libraries, you should verify that your customizations are still compatible.

 

Looking ahead to PHP 7.3

Finally, here are some additional PHP resources that you can review today to help you get ready to use PHP 7.3.

 

 

Let us know what you think in the comments below!

Hey Developers!

 

While we loved seeing everybody who came out to SugarCon this year, we know that a lot of you weren't able to make it. The good news is that we recorded all the developer sessions at SugarCon last October. They are all published today in the SugarCon space but we wanted to make sure you didn't miss them.

 

Check out the table below to links to the recordings, slides, and speakers.

 

 

We hope to see you all at future SugarCons and other Sugar Developer events!

Hello Sugar Developers!

 

We want to make sure your customizations and integrations are ready for the Sugar Winter ‘19 release, so we’re hosting two webinars just for you!

 

Webinar Topics

 

We’ll discuss the big changes that are likely to impact you including the following:

 

  • New REST API version: v11_4
  • New Comments Log field type and APIs
  • Enhancements to Reports module
  • Upgraded PHP and JavaScript libraries including jQuery

 

Webinar Schedule

 

We are holding two sessions to accommodate various geographical locations. Please choose ONE of the following times below.

 

Thursday, December 13th 7:00 - 8:00 AM PT

OR

Thursday, December 13th 5:00 - 6:00 PM PT

 

Register Now!

 

As always, we will be posting the webinar recordings to the Developer community  for those who are unable to attend the live sessions.

We are fast approaching the Winter '19 release into the Sugar cloud that is planned for January 2019. Some of the changes coming in this release will be upgrades to the jQuery library and associated plug-ins that are commonly used by user interface customizations to Sugar.

 

jQuery libraries upgraded from v1.12.4 to v3.3.1

 

In the Sugar Winter '19 release, we have made a significant upgrade to the jQuery versions used by Sidecar and SugarMVC (BWC) modules. 

jquery: v1.12.4 -> v3.3.1 (changelog) (Upgrade Guide)
jquery-migrate: v1.4.1 -> v3.0.1 (changelog)

 

jQuery Migrate should help maintain compatibility for custom code using older jQuery APIs. Custom code that uses deprecated jQuery APIs should be updated as soon as possible.

 

As part of the jQuery upgrade, the following jQuery plug-ins needed to be updated to be compatible with v3.3.1.


include/javascript/jquery/markitup: v1.1 -> v1.1.15 (changelog)
include/javascript/pmse/lib/jquery.layout-latest.js: v1.3.0 -> v1.6.3 (changelog)
include/javascript/jquery/jquery.timepicker.js: 1.8.8 -> 1.11.14 (changelog)

 

If you've added jQuery plug-ins to Sugar as part of your customizations, you should make sure they are compatible with jQuery 3.3.1 as well! Check out the jQuery Plugin Registry to make sure the version of the plug-in you are using is compatible with jQuery 3.3.1. If not, you may need to upgrade to a newer version of your plug-in or remove it.

 

 

This plug-in is compatible with jQuery 3.3.1.  SWEET!

 

 

We've also upgraded the Bootstrap JS library from v2.0.0 to v2.2.1 (changelog) and also moved it to a new location.

 

include/javascript/jquery/bootstrap/bootstrap.min.js (v2.0.0) has been removed
include/javascript/twitterbootstrap/bootstrap.min.js (v2.2.1) has been added 

 

If you happen to refer to the old file directly, you'll need to update your links to point to the the new location.

 

Other JavaScript library updates

While jQuery is probably the most impactful JavaScript change in this release, there are other JS libraries that you should know about.

 

Sidecar library updates

We've also made some changes to these other two Sidecar libraries. If you happen to be using them, please check out their change logs to ensure that you're still compatible.

 

sugarcrm/ventana: v1.1.1 -> v1.1.2 (changelog)
moment: v2.11.2 -> v2.22.2 (changelog)

 

Removal of JIT Chart library

The deprecated JIT chart library has been removed in this Sugar release. The JIT chart library was deprecated in Sugar 7.10 and has been replaced by Sucrose charts. Please ensure you have removed any code that uses JIT charts prior to upgrading.

 

Don't miss the Winter '19 Sugar Developer Webinar!

On Thursday, December 13, come join us in one of our live webinars about all the enhancements coming in Winter '19 to the Sugar cloud.

We can probably all agree that automated tests are great, but sometimes we put off writing them because the initial first step of getting everything working correctly can be really difficult.  

 

Good news, Sugar developers!  Writing PHPUnit tests for your customizations just got easier in Sugar Fall '18!  Our engineering team has created a test runner specifically for your custom PHPUnit tests.

 

If you do not have access to the SugarCRM provided unit test suite, submit the Developer Tools Request.

 

The first thing you'll need to do is add the SugarCRM provided unit test suite to your Sugar directory. Be sure to select the branch in the unit test suite that matches the version of your Sugar instance (needs to be 8.2 or higher). Follow the instructions in the branch's readme to add the tests to your Sugar directory, install the necessary dependencies, and update the file permissions.  

 

Now you're ready to write your tests!  Add your new PHPUnit test classes to the custom/tests/unit-php directory. You may need to create it yourself if it doesn't already exist.

 

For example, create a new file named CustomLogicHookTest.php and place it in the custom/tests/unit-php directory.  Paste the following in to the new file:

<?php
    //custom/tests/unit-php/CustomLogicHookTest.php
   
    namespace Sugarcrm\SugarcrmTestsUnit\custom;
   
    use PHPUnit\Framework\TestCase;
   
    /**
     * @coversDefaultClass \CustomLogicHook
     */

    class CustomLogicHookTest extends TestCase
    {
       
        /**
         * @covers ::aFunctionInsideTheCustomLogicHook
         */

        public function testCustomHook()
        {
            // Wow! This is a horrible test.
            // You would never do something like this just to increase your test  
            // coverage, right?
            $this->assertTrue(true);
        }
    }

In a shell, navigate to the Sugar provided unit tests directory by doing something like the following:

cd tests/unit-php

Then you can run the tests by executing

php ../../vendor/bin/phpunit --testsuite custom

or by using gulp (gulp installation instructions are available here)

gulp test:unit:php --suite custom

The above test is extremely simple and doesn't test anything. If you'd like to see an example of a larger test suite that tests Sugar customizations, check out Professor M's School for Gifted Coders.  We've recently updated our PHPUnit test suite so we can use the new test runner.  Check out the pull request associated with this change for the details.

Hey there Sugar Developers! I’m Niegel Leoncio (@niegel), CRM Manager for Bishop-Wisecarver. This year is my 2nd SugarCon and I was privileged to be chosen as a Sugar Scholar.  I attended the session "Sugar, DevOps, and IBM" led by Vineel Nirogi and Julian Coldrey and I wanted to share a few take away that I took from this session.

 

It’s easy to get distracted by the different festivities within the conference, and this year, even distractions outside of the conference is much greater since we are in Vegas. That’s why every time I attend a big event like SugarCon, I would define a goal of why I am attending and will focus my energy towards that goal. This year, it was finding the right tools and best practices now that I am enhancing my development skills. Vineel and Julian’s session is the Las Vegas jackpot that I was waiting for! Although it was the last session on the last day, it’s packed with lot of great nuggets.

 

Julian started the session by painting the picture of the challenges that they have in the beginning. It’s surprising that a company as large as IBM, with 60,000 users worldwide, 5,000+ business partners and 200+ integrations and customizations, struggles with similar issues that smaller companies like us have, except on a larger scale. They struggle with delayed delivery and about 100 code defects per release. Their challenge is – “How do we deliver value to our customers radically faster?”

Julian shared this high-level strategy in approaching this problem.

  • Setting up a goal
  • Identifying the current state
  • Learn from teams better than you
  • Design your roadmap
  • Execute the plan

 

Challenging the status quo and thinking outside the box is a principle that they embraced. They asked themselves, what can we do to shorten the time of code deployment from 45 days to 1 day. It’s an impossible task for some, but their team is ready to break barriers. As of this writing, they were able to move from a 45-day release to a weekly release with about less than 10 defects per release. Impressive!

How did they do that? Vineel took over and talked about how DevOps changed Everything. Since the definition of DevOps differs from everyone, Vineel defined DevOps as a Culture that induces sub-conscious way of continuously redesigning the working style as a Team to increase the happiness index in Software Development Cycle. He further explained that DevOps is influenced by 4 areas. These 4 areas comprise of:

  • Tools
  • Culture
  • Practices
  • Behavior

Vineel also shared some of the DevOps tools that they are using in IBM:

  • Github® - For Source Code Management
  • Jenkins® - For Continuous Integration
  • SonarQube® - For Source Code Analysis
  • PHP Analysis - PhpUnit, PhpLint, SugarLint, Jasmine
  • Zabbix® - For Production Monitoring
  • Slack® - For Communication & Feedback
  • Ansible® - To convert Infrastructure as a Code
  • Docker® - For Containerizing the application

 

For someone who is brand new into Development, knowing tools that are used by experts helps me to get a good foundation in my learning curve. Learning from their journey from identifying their challenges to achieving what they have accomplished gives me a confidence in my quest in the dev world.

 

Check out the session’s slides below to see more of what they covered.
Sugar, DevOps, and IBM

Does the idea of upgrading to the latest version of Sugar keep you awake at night? 

 

Matt Marum discussed how the development community can best be prepared for Sugar upgrades. As a reminder, Sugar cloud instances are upgraded quarterly, the current release is Fall 2018, and on-premise deployments are provided with yearly upgrades, the current release is Sugar 8. 

 

Steps to upgrade success

Preventive Care

Utilizing the latest information on the developer blogs and developer guide ensures that we won't be surprised as SugarCRM updates the Sugar platform. We, as developers, need to keep up to date. We perform preventative care to ensure that we are ready for the latest updates.

Items to be reviewed by for each release

  • Broken customizations and integrations 
  • Configuration based changes within SugarCRM
  • Custom code
  • Restrictions in Sugar Cloud with Custom Code

 

Release upgrade resources

 

Planning and testing

  • Use a staging environment - Sugar Enterprise customers have a sandbox included in their subscription. Be sure to utilize the sandbox. For all customers, it is possible to request a staging environment after GA has been announced and before the actual upgrade occurs. Be sure to leverage this staging environment to test all customizations to ensure success.

  • Heathcheck Tool - Sugar's silent upgrade application has the ability to run just the healthcheck portion of the upgrade script. Be sure to utilize this tool to determine which of your customizations need to be addressed as part of the upgrade.

  • If you get an "F" then you can’t upgrade - each item that has an F (RED) grade has a knowledge base article available on the Sugar Support website.
  • Document all customization and configurations - Be sure to have a list of all of your customizations so that you can run a full test of everything in the staging environment. It may not be necessary to test every customization for each upgrade but be sure to keep the list of changes up to date. 
  • If you utilize the list above and know the critical use cases, at a minimum it would be best to test each critical use cases before the final upgrade so that there are no surprises.

 

Follow the Sugar Developer blog and sign up for Sugar Developer news to make sure you get the latest info as it's available from SugarCRM!

 

For the slides, check out Preparing for Sugar Upgrades!

Hello!  I'm Justin Kuehlthau (@justinkuehlthau), Director of the Sugar Practice at Technology Advisors (Technology Advisors, Inc.).  This was my 8th SugarCon and this year I was lucky enough to be selected as a Sugar Scholar! 

 

I learned a lot about the future of security and authentication in Sugar from Jelle Vink, Distinguished Engineer at SugarCRM.  Jelle discussed Integration Best Practices and demoed a proof of concept integration between Android Assistance and Sugar!

 

Jelle started by covering some of the current pain points when integrating with Sugar:

  • No streamlined federated identity capabilities
  • LDAP & SAML have limited support on Mobile and Plugins
  • Credentials stored or used everywhere
    • Sugar Web Interface, Mobile, Outlook Plugin, Integrations, etc.
  • No fine grained authorization controls

 

Jellle introduced Cloud Identity Services, which will be available to Sugar cloud customers via a limited Beta launching near the end of October. Cloud Identity Services have many improved features including:

  • Federated identity solution
  • Industry standard OpenID Connect
  • Build on top of OAuth2
  • Enterprise SSO support
  • Full audit capabilities
  • Finely control what access each different application has

 

I'm very excited to see where this takes us.  Here is a video of Jelle's proof of concept integration with Android Assistant.

 

You can check out Jelle's slides here!