Best workflow for developing modules

Hey everyone!

I’m new to SuiteCRM and I’m trying to configure the system to our organization’s requirements. I’ve been trying to create my own package through the Module Builder but there are many features that are undocumented that I haven’t been able to figure out how to best implement. Many discussions online encourage creating files manually rather than using the MB and I’m a bit unsure what is the best process to develop packages.

I’ve tried to compile my problems into a list of questions below. Thanks for taking the time to read it through and helping me out!

  1. Reading the SugarCRM documentation they encourage you to only use the MB for the first deployment and then configure the rest using Studio. From my understanding Studio changes don’t apply if I were to redeploy or export the module (which I will have to do when I install it in production), so this hardly seems to be the best way to develop packages? From my understanding Studio should be used to tailor a system by modifying or connecting modules, not to develop packages. Please correct me if I’m wrong.
  2. If I want to add an action to the sidebar of a module it seems like I must manually edit files. Is this correct? I have no problem with this but in this case where should I make these changes for them to be exported when I want to export/deploy my package? Looking at the directory structure there seems to be references to my module in many different subdirectories (modules/, custom/, etc.). Where would be the correct place to make these changes and still have it as a self-contained package?
  3. In my short amount of time with SuiteCRM I’ve encountered many bugs, is this just a coincidence or is the product not considered production ready yet?

Thank you very much for your help and feedback!

I don’t have time for a long explanation now, but I can give you a few pointers:

  1. Whatever Studio does, it does in the custom directory. Whatever you do, you should do it there also. A typical strategy to deploy to production is to move the files from custom directory to the new server, along with a database dump.

Here is a way to track what Studio (or Module Builder) are doing:

https://pgorod.github.io/Audit-File-Accesses/

  1. Yes, this needs a code change. All your changes go in the custom directory:

https://pgorod.github.io/Custom-folder/

  1. It’s a large app, there’s some technical debt, and PHP isn’t the most robust thing to build on. But it should work, and often if there are too many bugs it’s a sign of something broken in the installation (permissions issues, for example).

If I may suggest yet another reading from my blog, I think often people go too quickly into custom modules and Studio, when it’s better to work with the default modules, whenever possible. Check out this article to get a feeling for that kind of approach (although you probably don’t need to go into all that complexity explained there):

https://pgorod.github.io/Concepts-Accounts-Contacts/

Thanks! I’ll check out the resources you linked to! Much appreciated!