Modify default Modules, or create new ones?

I’ve looked at SuiteCRM in the past, but noticed ver 8 was almost ready for release, so left it alone until the new ver was out and had a few updates. With 8.0.4 I think we should be good to go… :wink:

I’m looking at the default modules and seeing the need for a number of extra fields and some additional modules for things I specifically want to implement. From the potential issue of future upgrades breaking things if I’ve added or changed stuff in one of the default modules, what’s the general community feel on either editing the default modules, running updates and it just works, vs cloning and starting from scratch with the cloned modules, therefore (potentially) offsetting issues when the default modules get updates as time goes?

And yes, I realise that by editing the default modules, when updates are made to correct issues, they will be applied, however if I have cloned and used now-customized modules, none of these updates will be applied to my cloned modules.

Hi, welcome to the Community! :tada:

I wrote a bit about this in this blog post

Aha, good article. Yes, I decided that with the accounts and Contacts modules (in particular) being such core parts of everything, I should just modify them as needed and run with them. That’s pretty much what your article says.

As an aside, in SuiteCRM 8.0.x when you link an existing Contact with an additional Account, that Contact is “replicated” in the Contacts but with an Account link to the new Account. (Not really replicated - the Contact appears multiple times, each time associated with a different Account, but the Contact is actually the same Contact - delete one and you delete all (yep, this is on test data).). I can handle that, and the users will just need to be aware that if they delete one of these contacts from Contacts, not just the Relationship from the “Contacts Subpanel for an Account” they will be doing some overtime correcting that issue. :slight_smile:

Can you please open a Github issue with that Contact multiplication bug? with a nice “steps-to-reproduce” list

I don’t think that it’s a bug and contacts have always been displayed multiple times when linked to multiple accounts (all versions of SuiteCRM and even in SugarCRM 6.x)
Thats’s due to the list displaying the account name.
Considering the SQL query necessary to get the contacts list, there is just no way to avoid that.

Ok, thanks for the clarification. :+1:

Yeah, I don’t see it as a bug, but as a limitation of the way SuiteCRM displays a Contact who is linked to multiple Accounts.

The problem I do now see is that on a test system, after customising the core Accounts and Contacts modules with some extra fields and an additional relationship and some view changes, there’s no straightforward way to have this backed up and imported into another SuiteCRM instance.

Sure, I can Export the customizations, import them using Module Loader, then perform a Quick Repair and Rebuild and the layouts are there, but this does nothing with the new database fields (ie, there’s no database backup) so the views are partially incomplete and all the fields still need to be added on the target instance.

So it seems that if you modify core modules and wish to have these customizations used on another SuiteCRM instance, you’re basically SOL as far as creating a replicable set of customizations - you’d need to use Module Builder and create a whole new set of modules from scratch.

You can move the custom directory from one place to the other, this usually takes care of everything. Sometimes there are additional pieces under modules, you have to hand-pick from there any custom modules you created (I think these are only the ones created in Module builder).

Inside the custom dir, there are vardefs files that describe changes to data structures. In the Quick Repair and Rebuild, these are compared to the actual database and anything that needs changes will be proposed as an SQL query that you can execute.

So, moving the files + QR&R + Execute SQL should get you where you need to be.

1 Like