There is a pretty common issue that we have seen come up again recently a few times. How to best support features of different editions of SugarCRM without knowing the ultimate edition that a module gets installed on. More specifically, how to support team security while also allowing a module to support CE. It comes up in two different scenarios:

  • Scenario 1: A module created originally for Pro or above wants to add support for CE
  • Scenario 2: A module created originally for CE wants to add support for Pro and above

In Scenario 2, not adding support for teams won't cause any blocker issues that prevent SugarCRM from being usable. The main issue there is that an organization just can't take advantage of team security for that module. Obviously adding support for teams can be a big benefit and need for many organizations.

Scenario 1 is where you can run into big issues. If your module was originally intended for Pro or above and now supports CE and proper care isn't taken your users may/will run into issues that render the module useless. Here is a common error message that will appear:

Msg 207, Level 16, State 1, Line 9 Invalid column name 'team_set_id'.

The change required to cover both Scenario 1 and 2 is straight forward. We check the flavor (edition) of the current instance in the vardefs and turn on/off team support based on what we find:

By checking the $sugar_flavor we can determine whether we want to enable team security or not. It's as simple as adding this to any module's vardefs.php that needs to support teams.