Tenancy Reference Public

Module Research Notes

Evidence gathered from the current Tenancy module files — controllers, models, configs, and migrations — before writing these user guide pages.

Guide version: r1 Module version: 1.3.0 Updated: 2026-07-22 Estimated time: 3 min 3 views
Reference

Module Research Notes

Evidence gathered from the current module files before writing the user guide pages.

Slug: multi_tenancyVersion: 1.3.0Category: Multi-tenancyReviewed: 2026-07-11

Research Sources Inspected

Source path

modules/Tenancy

Feature flags marked true

  • Controllers
  • Models
  • Views
  • Language
  • Permissions
  • Left Menu
  • Default Menu
  • Routes

Evidence Summary

Manifest

module.json defines slug multi_tenancy, version 1.3.0, category Multi-tenancy, and the module capability flags used in this guide.

Runtime surface

15 controller file(s), 35 view file(s), and 59 route mapping(s) were found.

Data surface

1 model file(s), 0 declared table(s), and 0 migration file(s) were found.

Operations surface

13 permission key(s), 0 job(s), 0 seeder(s), and 0 test file(s) were found.

Detailed File Evidence

Controllers and methods

  • BaseMT
  • Tenancy_app_dash
  • Tenancy_auditlogs
  • Tenancy_backups
  • Tenancy_billing
  • Tenancy_cronjobs
  • Tenancy_database
  • Tenancy_dbmigration
  • Tenancy_dbseeder
  • Tenancy_modules
  • Tenancy_overview
  • Tenancy_setup
  • Tenancy_status
  • Tenancy_users
  • Tenant_manager

Jobs and schedules

No scheduled module jobs were found.

Routes sampled

RouteTarget
multi_tenancy/view/(:any)/(:any)Tenancy_overview/view/$1/$2
multi_tenancy/view/(:any)Tenancy_overview/view/$1
multi_tenancy/tenancy_tab/(:any)/(:any)Tenancy_overview/tenancy_tab/$1/$2
multi_tenancy/tenancy_tab/(:any)Tenancy_overview/tenancy_tab/$1
multi_tenancy/generate_company_slugTenancy_setup/generate_company_slug
multi_tenancy/validate_company_slugTenancy_setup/validate_company_slug
multi_tenancy/update_company_slug_modal_formTenancy_setup/update_company_slug_modal_form
multi_tenancy/update_company_slugTenancy_setup/update_company_slug
multi_tenancy/setup_tenantTenancy_setup/setup_tenant
multi_tenancy/get_tenant_setup_progressTenancy_setup/get_tenant_setup_progress
multi_tenancy/tenant_setup_progress_modal_formTenancy_setup/tenant_setup_progress_modal_form
multi_tenancy/setup_tenancy_modal_formTenancy_setup/setup_tenancy_modal_form
multi_tenancy/tenant_status_modal_formTenancy_status/tenant_status_modal_form
multi_tenancy/update_tenant_statusTenancy_status/update_tenant_status
multi_tenancy/tenant_archive_modal_formTenancy_status/tenant_archive_modal_form
multi_tenancy/archive_tenantTenancy_status/archive_tenant
multi_tenancy/tenant_users_list_data/(:any)Tenancy_users/tenant_users_list_data/$1
multi_tenancy/tenant_admin_reset_password_modalTenancy_users/tenant_admin_reset_password_modal
multi_tenancy/tenant_admin_reset_passwordTenancy_users/tenant_admin_reset_password
multi_tenancy/tenant_user_modal_formTenancy_users/tenant_user_modal_form
39 additional route(s) omitted for readability.

README topics

  • Structure
  • Routing
  • Visibility (main tenant only)
  • Activation
  • Notes / known integrations

Operating Implications

  • Permission coverage is part of the module contract, so every workflow should be tested with a role-limited user and an administrator.

Known Risks from the Manifest

  • Visible only on the MAIN database to admins (should_include_tenancy()); the Deployments menu group declares main_tenant_only and Left_menu honors it. The Tenant_manager 'Tenants' page (moved here from the Clients tab) re-checks should_include_tenancy() server-side.
  • Controllers were flattened from application/controllers/multitenancy/<Class> to modules/Tenancy/controllers/Tenancy_<class> (App_Router resolves only top-level routes). Public multi_tenancy/* URLs are unchanged via module routes.
  • Cron_manager loads the moved view multi_tenancy/partials/cron_times via global package paths (cross-module view load, runbook G2).
  • RBAC permission registry for tenant management remains in core Roles.php (MVC-only scope); the module consumes those keys and does not re-declare them.
Was this guide helpful?

Report a content problem