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.
';
}
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 a14af88ee..95214da2b 100644
--- a/internal/cloudcp/portal/frontend/src/shell_view.test.ts
+++ b/internal/cloudcp/portal/frontend/src/shell_view.test.ts
@@ -211,6 +211,8 @@ describe('shell view', function() {
expect(html).toContain('License desk');
expect(html).toContain('Refund desk');
expect(html).toContain('Privacy desk');
+ expect(html).toContain('Route the issue cleanly');
+ expect(html).toContain('Open account services');
});
it('renders self-hosted overview copy when no hosted accounts are attached', function() {
diff --git a/internal/cloudcp/portal/frontend/src/shell_view.ts b/internal/cloudcp/portal/frontend/src/shell_view.ts
index 30e39c17a..6e9d60cee 100644
--- a/internal/cloudcp/portal/frontend/src/shell_view.ts
+++ b/internal/cloudcp/portal/frontend/src/shell_view.ts
@@ -801,16 +801,43 @@ function renderSupportSection(context: ShellViewContext): string {
'
Support
' +
'
Support and escalation
' +
'
Use support when hosted access looks wrong, billing does not behave as expected, or you need help with commercial licensing and privacy actions.
' +
- '
' +
- '
' +
- '
Account support
' +
- '
For access, tenant handoff, team, and billing issues, contact the hosted operations desk.
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.
' +
+ '
' +
+ '
' +
+ '' +
+ '
' +
+ '
' +
'
' +
- '
' +
- '
Commercial services
' +
- '
Self-hosted subscriptions, license recovery, refunds, and privacy requests all route through the same account surface.
' +
- '' +
+ '
' +
+ '
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.