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


215 posts

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:


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:


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



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 The specified item was not found. 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


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, requesting access is easy, all you need to do is send an e-mail to with your request. For more information, see this post.


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:

    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?

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!

Hi peeps! My name is Kristján Geir Mathiesen and I work for Origo, an Icelandic Sugar partner. I´ve enjoyed attending SugarCon for the last three years - this year was just as much fun as ever


Me being from Europe and the year being 2018, GDPR has been on my mind and to do list for the past 18 months. When I looked over the SugarCon agenda and saw that David Wheeler was doing a presentation on data privacy, I just knew I had to attend it.



 Below are some of the highlights that stood out for me.


  • Consent should always be stored with audits and how it was obtained - basis for the processing is additionally very important.
  • Basis for processing must be checked and re-checked since the basis for processing might be revoked at any time! Make sure the basis are kept up to date.
  • Great idea to audit anything that relates to data privacy - including the source - to make any post-work easier to perform.
  • Sugar recommends: Don´t erase records, erase content of records.

  • New ErasureFieldList function was added for manual erase (see code in slides).
  • Personally Identifiable Information (PII) is tricky and can be delusive, like the 2006 paper reveals in this slide:



David´s presentation is called "Deep Dive into Data Privacy Architecture."  You can check out his slides here.

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! 


One of the interesting sessions I attended was presented by Jorge Arroyo, VP of Engineering and Fellow at SugarCRM, and Alexey Klimko, Senior Software Engineer at SugarCRM.  This session covered planning and architecting for and troubleshooting performance in Sugar.


This break out session started with Jorge discussing performance in Sugar and ways it can be improved.  My favorite quote of the presentation was:

Solutions must be architected and designed for performance.  The #1 element of user experience is performance.  You must plan for it during all phases of your project.

Main Takeaways

Jorge and Alexey split the presentation into two main parts:  performance and troubleshooting.


Performance by Jorge

List Views

List view performance is determined by the database.  The key to list view performance is indices.  If you’re going to sort on a field, you should consider having an index on it.  On the other hand, you do not want too many indices.  As such, you must be judicious with the fields you allow your users to sort on.


When typing in a search, Sugar list views automatically search by your filter after a 300ms pause.  If you type "Arr", pause for more than 300ms, type "oy", pause for more than 300ms, type "a" and then stop in order to search for Arroya, you’ve actually performed 3 searches for 1 search.  The pause delay can be modified via Sugar Config or you can disable the type-ahead search.  List views and search queries are 80% of the load on your instance.


Record Views

To improved Record view performance, only show the information you need.  Every chart in a dashlet in the Intelligence Pane is a report that runs.


Save action performance is affected by Workflows, Logic Hooks or external APIs.  With poor planning, 1 record save can easily be turned into many record saves.


Home Page Dashboards

Be careful when designing your Home Page.  Every chart is a report that runs and every report can potentially be looking at several different modules.  Only show what you need.  If you’re deploying a default Home Page, don’t deploy a default Home Page to all users that has a lot of Reports on it.


Troubleshooting by Alexey

Pay attention to where the issue may be.  A slow client machine cannot run Sugar well because Sugar uses a lot of JavaScript.  Sugar will not run well if there is slow network performance.  PHP runs on the web server, which must be setup properly on a correctly scaled machine.  Finally, it all requires good code.


Things To Check

Use Chrome Developer Tools to determine if Sugar is actually the issue as opposed to the Network.  PC/Browser?  What is the DB Server doing?  (Are other databases hosted on the DB Server?)  What are the slow queries in Sugar?  Review the DB statistics.  Get as many details and facts as possible: Which view? Which action? Specific user? Any page? Specific time? Specific IP? Logs? HW usage graphs? Data volume? 


When all else fails, ask Sugar Support for help.


Use Sugar's XHPROF!

SugarCRM XHProf viewer is an extended viewer based on the standard xhprof viewer by Facebook that shows some additional information like sql and elastic queries, their timing and stack traces. (


Get their slides

I tried to summarize Jorge and Alexey's big points above, but you can check out their full slide deck here.

In our recent release of SugarCRM Mobile 6.2, we made a change to the way our mobile app talks to the Sugar server.  


We made this change because Apple deprecated their UIWebView component (since iOS 8) in favor of their optimized WkWebView.  In addition to providing performance improvements, WKWebView also provides additional security features and a more responsive user experience.  But WKWebView also added enforcement of cross-origin resource sharing (CORS), so the mobile team needed to add a native proxy that runs locally on your mobile device at localhost:8081. 


This proxy allows the SugarCRM Mobile app to work around these restrictions and can introduce connectivity issues for some SugarCRM Mobile users. Most users of SugarCRM Mobile are not affected, but if you are using SugarCRM Mobile with Enterprise Mobility Management (EMM) infrastructure (i.e. Airwatch with App Tunneling configuration, or VPN) then you may have already noticed connectivity issues after upgrading to 6.2. For example, some customers have reported an issue with the app hanging on the splash screen.


If you are affected, you will need to adjust the whitelist in your EMM or Mobile Device Management (MDM) tool to allow traffic to localhost:8081. Please consult your EMM / MDM documentation for steps necessary to perform this configuration change.


Below is a diagram showing how the new proxy should work in an EMM infrastructure.

If you are an on-premise customer using our Mobile SDK, you have the option of enabling CORS support in Sugar by adjusting your .htaccess configuration to send the correct CORS headers (and removing the proxy). Sugar Enterprise customers with access to the SugarCRM Mobile SDK can build a custom app with adjusted the proxy settings for their own environment.


Please leave any questions or feedback below and we'd be happy to help!

Hi everyone! I’m Megan Sheehan, business analyst and trainer at Technology Advisors, and proud Sugar Scholar at sugarcon 2018.


Lauren Schaefer (@Lauren_Schaefer) gave the first developer-focused presentation this year, “Dissecting Professor M for Best Practices,” and it was great! Lauren did an awesome job engaging the audience with polls and interactive Q&A while sharing insights into how and why developers should engage with professor m.


The developer community is hopefully already familiar with the basics of Professor M, but Lauren explained how we can use the Professor M repo for examples of both customization and DevOps best practices. Even better, we can contribute our own code examples to the repo so that Sugar Engineering will test against them as part of their testing process – meaning your customizations will be even more ‘upgrade safe’ than ever!


Check out Lauren’s slides for all of the details.

SugarCon and Sugar Scholars

Posted by lschaefer Employee Oct 16, 2018

We had a fabulous time meeting so many of you in Las Vegas for SugarCon 2018 last week!  We learned, we laughed, and we danced.  It doesn't get much better than that!


We introduced a new program at this year's SugarCon:  Sugar Scholars.  The Sugar Scholars program is a competitive program that partners and customers applied to.  Sugar Scholars were selected based on their advocacy of Sugar all year long.  The Sugar Scholars received a scholarship to attend SugarCon and helped us run the SugarCon Developer Track.  You may have seen them greeting you at the Developer Lunches, keeping our speakers on time, and giving lightning talks (how fun were those???).


One way they are helping behind the scenes is blogging about each of the breakout sessions in the Developer Track.  Over the next few weeks, you'll see their posts in this blog.  Be sure to check out their posts as they will be including a high level overview of each session as well as a link to the speaker's slide deck.


Let me introduce you to our fabulous group of Sugar Scholars.  

From left to right, they are...

  • Niegel Leoncio, CRM Manager, Bishop Wisecarver Corp
  • Kristjan Geir Mathiesen, Systems Analyst, Origo hf
  • Justin Kuehlthau, Director, SugarCRM Practice, Technology Advisors, Inc.
  • Megan Sheehan, Business Analyst & Trainer, Technology Advisors, Inc.
  • Jeff Bickart, Director of Operations, Faye Business Systems Group 
  • Me--not actually a Sugar Scholar, but they let me jump in their picture anyway. :-)


Whether you were able to join us in Las Vegas or not, you can still join in on the fun on social media.  Be sure to check out the SugarCon Photo Album on the SugarCRM Facebook Page.  You can also discover some notable moments on the SugarCRM Developers Twitter page and the SugarCRM Twitter page.


If you have feedback from this year's conference, we'd love to hear it!  Let us know in the comments below how we can improve for next year.


We're already looking forward to SugarCon 2019!