🔒
Admin Access Required
Portal Settings are restricted to Admins.
Contact your administrator to request the Admin role.
Contact your administrator to request the Admin role.
⚙️ First-Time Setup — Dataverse Table Required
The
cf_headlessbizappconfigs table was not found. Create it in Dataverse to store all portal settings org-wide (users, prompts, API keys, themes, news feeds).
- Go to make.powerapps.com → Tables → New table
- Display name:
HeadlessBizApp Config| Schema name:cf_HeadlessBizAppConfig - Add the following columns:
cf_settingkey— Text, Required, 255 chars (unique key per record)cf_settingvalue— Multiline Text, 4000 chars (value as plain text or JSON)cf_settingtype— Choice: UserAccess=100000000, AIPrompt=100000001, APIKey=100000002, Theme=100000003, NewsFeed=100000004cf_displayname— Text, 255 chars (human-readable label)cf_usermail— Text, 255 chars (email — UserAccess records only)cf_role— Choice: Admin=100000000, Manager=100000001, Viewer=100000002 (UserAccess only)cf_moduleaccess— Multiline Text, 2000 chars (JSON module flags — UserAccess only)cf_issensitive— Yes/No, default No (masks value in UI — APIKey records)cf_isenabled— Yes/No, default Yes (soft-disable a feed or key)
- Save & publish, then refresh this page.
👥 User Access Management
Assign roles and control which portal sections each user can access. Saved to Dataverse.
Loading users…
📋 Role Definitions
Default access matrix per role. Override per-user in the table above.
| Role | Hub | Sales | CRM Cases | Time Tracker | Project Ops | Customer Health | Settings |
|---|---|---|---|---|---|---|---|
| Admin | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Manager | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| Viewer | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
💡 How enforcement works: On each page load, the portal checks the signed-in user's role from Dataverse and hides navigation tiles / restricts access accordingly.
Add
checkPortalAccess() to any page to enforce role-based visibility. See the code comment in this file for the implementation snippet.
🤖 AI Master Prompts
System prompts injected into each AI feature across the portal. Saved org-wide to Dataverse — applies to all portal users on their next page load.
📬 Inbox AI Digest
Hub · index.html
📊 Sales AI Insights
Sales Dashboard
🎫 Cases AI Assist
CRM Cases
🏥 Customer Health AI
Customer Health
🔥 Hot Opportunities AI Summary
Sales Hub · AI Summary tab
🔑 API Keys & Endpoints
Stored in Dataverse — configured once by an Admin, available to all portal users. Sensitive keys are masked in the UI.
Used by: Inbox AI Digest · Cases AI Assist · Customer Health AI
Format:
Format:
sk-ant-api03-…
Used by: Sales Dashboard AI insights panel
Function:
Function:
AskSalesAI @ cloudfronts-sales-ai.azurewebsites.net
Used by: News panel on all portal pages
Get yours at
Get yours at
rss2json.com
Azure AD App Registration details — read-only. Change in source code only.
CLIENT ID
TENANT ID
OData v9.2 base URL — read-only.
⚠ Security Note
API keys are stored in browser localStorage — accessible to any JavaScript on this origin.
For a shared or high-security environment, proxy API calls through an Azure Function with Key Vault-backed secrets instead of storing the key in the browser.
🎨 Module Themes
Choose a colour theme for each dashboard module. Saved org-wide (this browser). Theme will apply when users load the module.
📊 Sales Hub
🎫 Cases Dashboard
💚 Customer Stercoms
⏱ Time Tracker
🚀 Project Ops
🏠 Hub (Home)
📰 Tech News — RSS Sources
Manage RSS feeds shown in the sliding news panel (📰 icon in the header). Saved org-wide to Dataverse.
➕ Add New Feed