When the platform behaves unexpectedly, configuration inconsistency is a common cause — appconfig.php disagrees with the database, a tenant override is hiding a global change, a cached value is stale. This article walks through systematic diagnosis.
Diagnostic Tools
- Effective-value lookup: Type any setting key, see which scope's value won and why.
- Source breakdown: For each level (global, tenant, group, user) see the configured value and the source (appconfig.php, database).
- Cache flush: Force the configuration cache to reload from source.
- Audit log: See who changed what and when.
Common Inconsistency Patterns
- Stale cache: DB value updated but cache hasn't refreshed. Click flush cache.
- Tenant override hiding global change: You updated the global value but a tenant has an override that wins. Decide whether to clear the override.
- appconfig.php conflict: appconfig.php has a value that's also set in the DB. The DB wins. Decide which source should be authoritative.
- Wrong scope: You set the value at the wrong scope (e.g. user-level when you meant tenant-level). Move it to the right scope.
Systematic Diagnostic Procedure
- Reproduce the unexpected behaviour with a test user.
- Open the effective-value lookup and find the relevant setting.
- Compare the effective value to what you expected.
- Use the source breakdown to identify which scope's value won.
- Decide whether the value is wrong, the scope is wrong, or the cache is stale.
- Apply the fix at the appropriate scope.
- Flush cache.
- Re-test.
Worked Examples
- Password policy not enforcing: Global is 12 chars but the tenant override is 8. Either remove the override or raise the override.
- Stripe key mismatch: appconfig.php has the live key but the DB has a test key. DB wins; switch the DB value to live.
- Stale logo: New logo uploaded but old still appears. Flush cache.
- One user sees an old language: User-level preference was set in the past. Clear that user's preference to inherit current default.
Tip: Run a quarterly “configuration audit” — review which tenants have overrides, whether they're still warranted, and clean up stale ones. Less drift means easier diagnosis later.