by Mien Trung Software

Run multiple companies inside one SuiteCRM with full data isolation, per-company record numbering, and zero extra infrastructure. One instance, any number of companies, no compromises.

Includes a 30 day guarantee
Try it Now

Release Notes

MTS Multi Organization — Release Notes


Version 1.0.0 (2025-10-22)

New Features

Multi-Company Isolation

  • Company-scoped SQL filtering on list views for all enabled modules (mts_cm_company_id_c WHERE clause)
  • ACL enforcement on detail / edit / delete views — users cannot access records from other companies
  • setCompanyForRecord logic hook (position 99): auto-tags new records with the current user's company on before_save
  • Session-based company context ($_SESSION['mts_cm_company_id_c']) with UUID format validation and live DB existence check
  • CompanyResolver::createCompanyWhere() per-request static cache to avoid redundant DB calls on list views
  • Cross-user company query restricted to admin users (security fix)

Company Module

  • Full MTS_Company bean with standard SuiteCRM CRUD views
  • Built-in field groups: Company Information, Legal Information (legal form, registration, VAT, Tax ID, managing directors, share capital, country of incorporation), Bank Details (IBAN, BIC/SWIFT, SEPA creditor ID), Commercial (payment terms)
  • Users subpanel — many-to-many relationship between Companies and Users
  • Company picker (availableCompanies view) for users assigned to multiple companies
  • Switch Company global link in navigation bar

Admin Configuration Panel

  • Admin section in Administration with three tiles: Enable Modules, Manage Companies, License
  • Activate / deactivate toggle (master switch)
  • Visible admin multi-select with real-time DB validation against actual admin users
  • Module selection grid with toggle-all button
  • Enabled modules persisted as JSON in SuiteCRM Administration settings

Record Numbering

  • mts_company_numbering DB table for per-company per-module rules
  • Format pattern engine with tokens: {PREFIX}, {YYYY}, {YY}, {MM}, {DD}, {N}, {N:X}
  • Reset periods: Never, Daily, Monthly, Yearly with conditional UPDATE to prevent concurrent duplicate counters
  • applyNumbering logic hook (position 100): reads company from bean (not session) for compatibility with admin "ALL" context
  • Numbering admin page with add / edit / delete rules
  • Numbering modal on Company detail view (per-company rule management)
  • Live format preview in the numbering form
  • AJAX endpoints: ajaxGetRules, ajaxGetFields, ajaxSaveRule, ajaxDeleteRule

License Validation

  • SugarOutfitters integration (MTSMultiOrgOutfittersLicense + MTSMultiOrg_SugarOutfitters_API)
  • Weekly cached validation stored in Administration settings
  • Two build packages: Yearly and Onetime — public key injected by build script at build time
  • License check gate in CompanyResolver::isEnabled() — invalid license silently disables all features
  • License tile in admin panel with validate UI

Technical Details

  • build.php generates two ZIP files (MTS_Multi_Organization_Yearly_x.x.x.zip and _Onetime_) with public keys injected at build time
  • All user-facing strings in $mod_strings — no hardcoded English in templates or PHP
  • CompanyResolver per-request static cache for createCompanyWhere() and per-session cache for isEnabled() / isModuleEnabled()
  • RelateFieldInstaller: install / uninstall mts_cm_company_id_c relate fields dynamically per module
  • Full i18n: English and German language files

Known Limitations

  • Records imported via SuiteCRM's native import wizard are not auto-tagged with a company.
  • The v8 REST API path does not trigger logic hooks for numbering — applies only to the legacy MVC save path.
  • Bulk-editing records from multiple companies simultaneously is not supported (edit one company context at a time).

Upcoming Features (Roadmap)

Version 1.1.0 (planned)

  • [ ] Bulk company assignment tool for existing records
  • [ ] Per-company logo upload and branding on Company record
  • [ ] Company-scoped dashboards
  • [ ] REST API v8 hook compatibility for numbering

Version 1.2.0 (planned)

  • [ ] Numbering rule import / export (JSON)
  • [ ] Company hierarchy — parent / child company relationships
  • [ ] Audit log for company context switches

Upgrade Notes

Trial to Licensed

  1. Purchase a license on the SuiteCRM Store.
  2. Go to Admin → MTS Multi Organization → License.
  3. Enter and validate the new license key.
  4. No reinstall required.

Version Upgrade

  1. Back up mts_company and mts_company_numbering tables.
  2. Go to Admin → Module Loader → Installed Packages → Uninstall current version.
  3. Upload and install the new ZIP.
  4. Run Quick Repair and Rebuild → Execute for any SQL schema changes.
  5. Re-validate the license if prompted.

Version History

Version Date Notes
1.0.0 2025-10-22 Initial release

Support: SuiteCRM Store Support

  • Website: mientrungsoft.com
  • Email: anhnhatuit@gmail.com
  • WhatsApp: +84973131884
Saving Comment Saving Comment...