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-30 Estimated time: 3 min
You are viewing version r1 of this guide. View the current version
Module Research Notes

Tenancy

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.

Report a content problem