Platform Tenant, Profile, Module, Capability And Configuration — Administrator And Support Runbook¶
- Status:
SOURCE-RECONCILED REPOSITORY RUNBOOK / CURRENT ADMIN AND TARGET RELEASE PATH SEPARATED - Current source baseline:
qa@4f6165bc4c53a7d98b0c246392dd9ed5bd75c21c - Source authority:
PLATFORM_TENANT_PROFILE_CAPABILITY_CONFIGURATION_SOURCE_AUTHORITY.md - Rebuild packet:
PLATFORM_TENANT_PROFILE_CAPABILITY_CONFIGURATION_REBUILD_PACKET.md - Audience: super-admin, tenant administrator, configuration release owner, deployment operator and read-only support
- Important: current Admin Console operations and target Control Tower release procedures are different. This document does not authorize a current module/config change or reveal secret values.
1. Purpose¶
Use this Runbook to determine why a tenant, page, API, workflow or provider behaves differently and to prepare a safe configuration change without confusing:
Tenant
Profile
Module
Capability
Config
Credential
Menu/Page/API
Action/Record
The first task is diagnosis and authoritative reread, not toggling settings.
2. Roles¶
2.1 Super Administrator¶
May inspect multiple tenants and use explicitly allowed cross-tenant admin routes.
Required:
- name the target tenant;
- preserve actor versus impersonated subject;
- record authorization/correlation reference where required;
- verify local/global mapping before portable operation;
- avoid using tenant
0as a business data context.
2.2 Tenant Administrator¶
May manage only the current tenant through the permitted Admin Console paths.
Must not:
- select another tenant ID;
- edit platform-global definitions;
- infer provider readiness from a saved config field;
- bypass a disabled module/capability.
Approved integration-credential management¶
An authenticated tenant administrator (role 1) may reveal and update only
the allowlisted, tenant-owned integration credential fields on Provider
Settings for the effective tenant. Super-administrators may do the same for
an explicitly selected tenant. This permission does not apply to login
passwords, browser sessions, user personal credentials, arbitrary environment
variables, arbitrary config keys, or a disabled module/capability.
2.3 Configuration Release Owner¶
Owns target draft/review/publish/apply/rollback, not ordinary business operations.
2.4 Support Operator¶
Read-only diagnosis by default.
May collect safe metadata, screenshots and IDs. Must not change module/config state while diagnosing unless separately authorized.
2.5 Deployment Operator¶
Applies one approved release to one named deployment target and records exact local readback.
3. Before Any Diagnosis¶
Record:
date/time and timezone
current source/deployed SHA
deployment type: shared SaaS or dedicated
environment and database identity
target local tenant ID
target global tenant UUID/mapping state, if available
actor and subject
access mode: direct / impersonation / admin override / system
page/API/job/provider involved
current request/correlation ID
expected business result
Do not record:
- passwords;
- OAuth tokens;
- API keys;
- secret config values;
- authorization headers;
- full cookies/session data;
- raw provider credential payloads.
4. Diagnose Effective Tenant¶
Step 4.1 — Identify entrypoint¶
WEB page
API route
CLI job
Integration callback
Step 4.2 — Identify tenant provenance¶
For WEB/API:
- check whether impersonation is active;
- identify original actor and target subject separately;
- identify session tenant;
- check whether the route uses an explicit allowlisted admin override;
- check whether the route opts into strict tenant principal.
For job/integration:
- identify explicit local tenant binding;
- identify global mapping if used;
- verify one tenant child context;
- reject reliance on deployment fallback for a new write.
Step 4.3 — Classify context¶
STRICT + MAPPED
STRICT + LEGACY_LOCAL_ONLY
COMPATIBILITY_ONLY
MISMATCH / INVALID
Stop¶
Stop if:
- tenant target is ambiguous;
- scalar and typed tenant differ;
- global/local mapping conflicts;
- impersonation actor/subject is malformed;
- a consequential write would use compatibility-only context.
5. Diagnose Operating Profile¶
Current profile may not be a first-class Runtime assignment.
Step 5.1 — Separate fact from inference¶
Documented process/profile expectation:
ctc-execution or mk-order
Current Runtime evidence:
modules + configs + routes + record classes + numeric compatibility
Do not report an inferred profile as an explicit tenant assignment.
Step 5.2 — Record profile disposition¶
EXPLICIT ASSIGNMENT VERIFIED
COMPATIBILITY INFERENCE
MISSING
INVALID / VERSION CONFLICT
UNKNOWN
Step 5.3 — Check non-implications¶
Profile does not prove:
- module enabled;
- named workflow enabled;
- role authorized;
- config valid;
- credential available.
6. Diagnose Module State¶
For the exact module key:
- verify module catalog row;
- verify tenant-module row;
- record
IS_ENABLED, tier and lifecycle metadata without modifying it; - identify current caller policy;
- identify page/API module mapping;
- identify source/DB read errors.
Classify:
EXPLICIT_ENABLED
EXPLICIT_DISABLED
UNCONFIGURED_COMPATIBILITY
SOURCE_ERROR_COMPATIBILITY
INVALID
UNKNOWN
Important current rule¶
A missing tenant-module row or module-source error may currently allow access. Do not change this globally during diagnosis.
Exact readback¶
Read:
- module catalog key;
- tenant assignment row or confirmed absence;
- page/module mapping;
- route module key;
- observed current decision/reason;
- target-role page/API result when separately authorized.
7. Diagnose Named Process Capability¶
Ask:
What exact behavior is being requested?
Which process/module owns it?
Is it narrower than the module?
Which profile applies?
Which config/credential prerequisites exist?
Examples:
render MK documents
create Export Brokerage job
apply inventory allocation
reverse Scale ticket
deliver QBO invoice
Current source may not expose a named capability result. In that case record:
CURRENT AD HOC POLICY
Do not fabricate an enabled/disabled capability from module state alone.
8. Diagnose Config Value¶
Step 8.1 — Identify the exact key and owner¶
Record:
- config key;
- owning module/provider/process;
- expected type;
- whether secret;
- allowed fallback sources;
- applicable profiles;
- current caller.
Step 8.2 — Identify source and validity¶
Classify:
TENANT_CONFIG / VALID
PUBLISHED_SNAPSHOT / VALID
DEPLOYMENT_ENV / VALID FALLBACK
LEGACY_DEFAULT / COMPATIBILITY
CALLER_DEFAULT / COMPATIBILITY
MISSING
INVALID
SOURCE_ERROR
UNKNOWN
Step 8.3 — Do not infer from scalar result¶
A returned false, 0, empty string or default can mean several different current conditions. Inspect safe metadata/source behavior before concluding.
Step 8.4 — Numeric compatibility¶
When behavior depends on Client 1/2 or another numeric tenant branch, record:
compatibility selector
actual business difference
proposed profile/capability/config owner
caller removal condition
Do not add another numeric branch.
9. Diagnose Credential Availability¶
Never read or display the secret value during ordinary support diagnosis.
Verify:
credential key/reference
owner module
owner tenant local/global identity
source type
encrypted/external/env availability
module result
capability result
provider caller
Classify:
AVAILABLE / OWNER MATCHED
UNAVAILABLE / MISSING
UNAVAILABLE / INVALID
UNAVAILABLE / SOURCE ERROR
UNAVAILABLE / OWNER MISMATCH
DEPLOYMENT FALLBACK
A valid credential does not authorize a provider call.
9.1 Approved credential reveal/update procedure¶
This procedure is limited to a named provider credential that is already in the Provider Settings allowlist.
- Confirm the effective tenant and an authorized Administrator or Super-administrator session.
- Select the credential and use Show. The browser sends a POST request for that credential only; it is never part of the initial HTML or provider list.
- Check the value on screen, then use Hide before moving to another credential. Hide and page exit clear the displayed field value from the page state.
- To replace it, type the new non-empty value and select the page-level Save action. Empty input is no change; removal is not implicit.
- The update response never returns the supplied value.
Provider Settings changes use one POST batch. The server validates submitted modules, non-secret config keys, and allowlisted credentials, then applies them inside one database transaction. A validation or write failure rolls back the entire batch; the browser disables Provider Settings controls until it receives the result.
When provider modules are split or renamed, apply the matching tenant-module migration before deploying the source change. Gemini, Twilio, and Telegram runtime gates fail closed when their tenant module row is absent.
The reveal route is a POST-only, allowlisted credential endpoint under the
tenant Admin API. It rechecks the existing Admin Console role/session and
effective tenant server-side, returns one requested value only, and sends
Cache-Control: no-store, private plus Pragma: no-cache. The existing API
transport has no separate CSRF-token contract; it keeps the same-origin
authenticated-session model used by the rest of Admin Console.
Tenant secrets are stored as SECRET.<CONFIG_KEY> values encrypted with the
server-only CTC_TENANT_SECRET_KEY AES-256-GCM utility. Updating a legacy
plaintext credential writes the encrypted companion row and wipes/retire the
legacy row in the same transaction. Key rotation is performed by replacing the
server-side key under the deployment secret-management process and re-encrypting
credential rows through an approved maintenance operation; never expose the key
or credential values in a runbook, ticket, console log, trace, analytics event,
or audit payload.
Request/audit evidence may retain actor, tenant, allowlisted credential key,
action (reveal/update), request ID, timestamp, IP, and success/failure. It
must never retain plaintext, ciphertext, encryption key, request body, response
body, exception text containing a value, or browser-console output. For an
incident, rollback is to save the previously approved credential value through
the same page; do not restore a raw value from logs.
10. Diagnose Menu / Page / API / Action / Record¶
Build one row for the failing/expected action.
| Gate | Evidence |
|---|---|
| Authentication | session/system actor |
| Tenant | strict/scalar context and mapping |
| Menu | route visibility/role mapping |
| Page | role/page guard and module page mapping |
| API | method/path/strict principal/module/menu/role |
| Capability | named behavior result or current policy |
| Config/Credential | typed or current compatibility result |
| Record | tenant ownership and state predicate |
| UI control | visible/hidden/disabled |
| Result | allow/deny/unknown and safe reason |
Required parity:
menu visibility
== page load
== initial data API
== action control
== action API
== expected record result
Do not solve a mismatch by granting Administrator globally.
11. Current Admin Console — Read Procedure¶
Current Admin Console can inspect:
- tenant identity;
- module assignments/tier;
- config rows;
- provider definitions/settings;
- onboarding controls.
Read sequence¶
- confirm deployment and target tenant;
- open Admin Console through the authorized route;
- select the exact tenant or current tenant-admin view;
- load module/config/provider tabs;
- record safe rows and counts, not secret values;
- compare to page/API/process behavior;
- classify explicit/compatibility/missing/error.
Dedicated deployment¶
The page presents tenant management as read-only. Treat this as current UI intent until API/server enforcement is independently verified.
12. Current Admin Console — Write Procedure¶
Use only with explicit authorization naming:
- tenant;
- exact module/config/identity field;
- before state;
- intended after state;
- affected pages/APIs/processes;
- rollback value;
- observation owner.
12.1 Before write¶
- reread exact target row or absence;
- capture safe before metadata;
- verify no concurrent release/apply owner;
- check Client 1/2 impact;
- verify current route and role authority;
- identify cache/restart behavior;
- prepare rollback.
12.2 Execute once¶
Perform only the named module/config/tenant command.
Do not combine unrelated changes merely because they share the Admin page.
12.3 Required readback¶
API result
+ exact local row reread
+ module/config effective helper result
+ selected page/API behavior
+ cache/version/restart result
Current direct write does not prove Control Tower release publication.
12.4 Unknown response¶
If response is missing:
- reread the exact row;
- reread effective resolution;
- determine committed/not committed/unknown;
- repeat only when absence is proven;
- never resubmit an entire tenant settings batch blindly.
13. Target Release Procedure¶
This is a target procedure and is not current Runtime functionality unless separately implemented and accepted.
Draft
-> impact preview
-> reviewer approval
-> immutable publish
-> named deployment apply
-> local row readback
-> effective resolver readback
-> selected page/API/process check
-> observation
-> rollback/supersede when needed
Required release content:
- tenant mapping;
- profile version;
- modules;
- capabilities;
- typed config;
- credential references only;
- expected applied version;
- impact/rollback;
- reviewer/approver;
- source revision.
14. Common Problems And Safe Recovery¶
Problem: Page disappeared after module change¶
Read:
- tenant module row;
- page map and registry;
- menu/role row;
- API module decision;
- current caller expectation.
Recovery:
- restore exact prior module state only when authorized;
- do not globally enable all modules;
- record unknown callers.
Problem: Page opens but action API returns forbidden¶
Read:
- page/menu role;
- API required menu routes/role IDs;
- module/capability;
- record predicate.
Recovery:
- correct the bounded mismatch;
- do not make every user Administrator.
Problem: Config saved but behavior did not change¶
Read:
- row and value type;
- caller key/source/fallback;
- static/process cache;
- profile/capability prerequisites;
- source SHA/deployment.
Recovery:
- invalidate/restart only the accepted consumer;
- do not rewrite the value repeatedly.
Problem: Behavior changed after missing config¶
Check whether a caller default or numeric tenant compatibility applies. Document the fallback source.
Problem: Provider says credential missing¶
Check safe availability/owner/module/capability; never copy secret values into logs or chat.
Problem: Super-admin sees different behavior while impersonating¶
Separate actor, subject, target tenant, client 0 bypass and impersonation status. Unimpersonated client-0 bypass must not be assumed under impersonation.
Problem: Dedicated tenant settings appear read-only¶
Verify deployment type and server/API enforcement before concluding that all writes are impossible.
15. Escalation Packet¶
Collect:
source/deployed SHA
deployment/environment
local/global tenant identity and mapping state
actor/subject/access mode
page/API/job/provider
menu/page/module/capability/config key
safe module/config/credential resolution
published/applied release IDs if any
before/after row metadata
request/correlation ID
exact error code/reason
selected readback result
cache/restart state
Client 1/2 impact
attempted recovery
rollback readiness
Exclude secret values and raw auth/session payloads.
16. Prohibited Actions¶
- changing current missing-module behavior globally;
- adding numeric Client/customer branches;
- using
Config::CLIENT_IDfor a new write; - treating profile as authorization;
- treating module as named capability;
- treating config presence as provider permission;
- copying secrets between tenants;
- logging decrypted secrets;
- changing several module/config rows during diagnosis;
- retrying an unknown Admin write without reread;
- bypassing record tenant/state predicates;
- publishing Wiki instructions from target-only controls;
- claiming Control Tower publication from a direct Runtime row update.
17. Current Evidence Boundary¶
Source and prior P4 evidence: AVAILABLE
Current DB/config values: NOT READ IN THIS WAVE
Current Admin browser/API behavior: NOT RUN
Current provider credential checks: NOT RUN
Current Wiki rows: NOT READ
Target release workflow: NOT IMPLEMENTED/ACTIVATED BY THIS RUNBOOK
---¶
Source:
docs/runbooks/PLATFORM_TENANT_CONFIGURATION_ADMIN_SUPPORT_RUNBOOK.md— ctc repository · This page is an English translation of the source document. Identifiers, file paths and code symbols are unchanged.