Best practice for creating new modules

Greetings. Noob to SuiteCRM, so I hope that I’m not asking something too basic.

In SuiteCRM, you can create a new module using the Module Builder. I understand that when you are dealing with a concept for which no module exists, this is required. But what is the guidance for deciding between modifying an existing module or creating a new module?

For instance, I need a “Patrons” module. This could be a custom module of type “Person”; but it could also be a relabeled stock Contacts or Accounts modules with a number of new fields added. When is it advisable to modify a stock module, vs when is it advisable to create a new module?

In a more conceptual way, think about modules as “Entities”. Let’s take a look on 2 out-of-the box modules: contacts and leads. Both are people. But they play very different roles in very different contexts.

The CRM, indeed, has a routine to convert leads into contacts. Clearly they are not the same thing, otherwise there would be no need to convert one in the another.

So, if you need extra info about an existing entity, let’s say, I want to know the Tik-Tok user of a contact, then add a field to the contact module.

In the other hand, let’s say you will use CRM to hire people. A candidante is indeed a person, but it is different from a contact and from a user - if the candidate is hired, may be she becomes a user. In this case, I’d create an new module, candidate, using a person template in the module builder.

I don’t know if I answered your question.

Adding to mtierno’s good advice, I would say there is a big advantage in using the default modules, because there is a lot of code, a lot of ways that they are tied in with other processes in the CRM.

So the default Contacts module is way more powerful than starting a new module from e Person entity.

I make some similar considerations in this blog post, you might want to read it: