Self-hosted subscriptions, license recovery, refunds, and privacy requests all route through the account services desk first.
Start in Account servicesUse the billing, license, refund, or privacy desk before escalating a commercial issue.
Escalate from the same deskKeep the request in one place instead of splitting it between billing and operator surfaces.
Escalation desk
Route the issue cleanly
Keep hosted operations, commercial requests, and pure support escalation on their own paths so the next person does not have to reconstruct the account state.
1. Confirm the scopeDecide whether the problem is hosted operations, commercial self-service, or direct support escalation.
2. Keep hosted and commercial separateWorkspace and team problems stay in their own desks. Billing, license, refund, and privacy work stay in Account services.
3. Escalate with contextInclude the account, workspace, and exact failed action so the escalation path starts with the same facts you saw.
';
+ return '
Support
Support desk
Use this desk when hosted access looks wrong, billing behaves unexpectedly, or you need help with commercial requests.
Self-hosted subscriptions, license recovery, refunds, and privacy requests all route through the account services desk first.
Start in Account servicesUse the billing, license, refund, or privacy desk before escalating a commercial issue.
Escalate from the same deskKeep the request in one place instead of splitting it between billing and operator surfaces.
Escalation desk
Route the issue cleanly
Keep hosted operations, commercial requests, and pure support escalation on their own paths so the next person does not have to reconstruct the account state.
1. Confirm the scopeDecide whether the problem is hosted operations, commercial self-service, or direct support escalation.
2. Keep hosted and commercial separateWorkspace and team problems stay in their own desks. Billing, license, refund, and privacy work stay in Account services.
3. Escalate with contextInclude the account, workspace, and exact failed action so the escalation path starts with the same facts you saw.
Include in the escalationAccount name, workspace name if relevant, the desk you were in, the exact button or request that failed, and whether the issue was hosted or commercial.
';
}
function renderHeaderHTML(context) {
if (context.bootstrap.authenticated) {
diff --git a/internal/cloudcp/portal/frontend/src/shell_view.test.ts b/internal/cloudcp/portal/frontend/src/shell_view.test.ts
index aacb02289..daf8bbf96 100644
--- a/internal/cloudcp/portal/frontend/src/shell_view.test.ts
+++ b/internal/cloudcp/portal/frontend/src/shell_view.test.ts
@@ -215,6 +215,9 @@ describe('shell view', function() {
expect(html).toContain('Refund desk');
expect(html).toContain('Privacy desk');
expect(html).toContain('Route the issue cleanly');
+ expect(html).toContain('Hosted path');
+ expect(html).toContain('Commercial path');
+ expect(html).toContain('Include in the escalation');
expect(html).toContain('Open account services');
});
diff --git a/internal/cloudcp/portal/frontend/src/shell_view.ts b/internal/cloudcp/portal/frontend/src/shell_view.ts
index 6c90b1c83..6b3fa3937 100644
--- a/internal/cloudcp/portal/frontend/src/shell_view.ts
+++ b/internal/cloudcp/portal/frontend/src/shell_view.ts
@@ -840,9 +840,23 @@ function renderSupportSection(context: ShellViewContext): string {
'
Support desk
' +
'
Use this desk when hosted access looks wrong, billing behaves unexpectedly, or you need help with commercial requests.
' +
+ 'Hosted path' +
+ 'Workspace access, team control, tenant handoff, and hosted billing stay on the hosted account route.' +
+ '
' +
+ '
' +
+ 'Commercial path' +
+ 'Self-hosted billing, licenses, refunds, and privacy requests stay in Account services until escalation is needed.' +
+ '
' +
+ '
' +
+ 'Escalate with context' +
+ 'Include the exact account, workspace, desk, and failed action so support can continue the same path immediately.' +
+ '
' +
+ '
' +
'
' +
- '
' +
- '
' +
+ '
' +
+ '
' +
'
Hosted account
' +
'
Account support
' +
'
Use this route when tenant handoff, workspace access, team control, or hosted billing looks wrong.
2. Keep hosted and commercial separateWorkspace and team problems stay in their own desks. Billing, license, refund, and privacy work stay in Account services.
' +
'
3. Escalate with contextInclude the account, workspace, and exact failed action so the escalation path starts with the same facts you saw.
' +
'
' +
+ '
' +
+ 'Include in the escalation' +
+ 'Account name, workspace name if relevant, the desk you were in, the exact button or request that failed, and whether the issue was hosted or commercial.' +
+ '