What is IceburgCRM? What makes it different from the hundreds of other CRMs? Many to Many to Many (unlimited) Relationships.

IceburgCRM is a CRM written in PHP and Vue3 under the Laravel framework. It’s a meta driven CRM that is written in a flexible way to allow developers to quickly prototype a new CRM.

The default CRM that’s provided is loosely inspired by SugarCRM/SuiteCRM in terms of modules / fields offering all common modules. The real power is in the flexible to add dynamically add new modules on the fly and generate tables and relationships.

Relationships work slightly differently than a classic CRM that either relates data between two modules via a pivot table or through a foreign key. We allow single field relationships to other modules that act like a foreign key relationship through a field type called related. This related field type links all of the modules values as acceptable values and uses one field for display in the dropdown.

We also a many to many to many (unlimited many) relationship that is different from the standard many to many relationship. We take the idea of a pivot table but instead of joining two tables we allow joining for any number of tables. And none of the fields in any of the tables need to relate to another through a key, the relationship is implicit between the entities. This is very handy for connecting different modules that normally wouldn’t relate for specific subpanels.

Take the example of a company signing a contract.

* You might want a subpanel with just Account and Contract modules
* You might want a subpanel with just Account, Contact, Contract modules (let’s include the customer who signs)
* You might want a subpanel with Account, 3 Contact, Contract , Country, State/Province, Employee, Date (let’s include a few contacts who sign the contract, the location, the employee who sold the contract, the date it was signed, etc)
* You might want all three at the same time

Rather than including an a contact field, contract field, country field, province/state, employee signing field in the account modules where you must select these values with a picklist this new structure allow you to keep your data separate and the relationship data get’s saved to a separate table. This keeps your structure clean and clear and allows you to manage unlimited amounts of relationships and their data.

We go a little even a little further and separate relationships from the subpanels so you can reuse them on different subpanels. Perhaps you want the contract signing in a subpanel on Account and Contract records. By reusing the relationship and connecting it to different subpanels the same data is present in both locations.

The one thing you can’t do in any other CRM is have unlimited many to many relationships.