Some checks are pending
Bidi Control Character Guard / bidi-control-guard (push) Waiting to run
Circular Dependency Check / Check for new circular dependencies (push) Waiting to run
Citus Migration Smoke / Combined migrations on single-node Citus (push) Waiting to run
E2E Fresh Install Tests / fresh-install-e2e (push) Waiting to run
ext-v2 guardrails / Run ext-v2 guard and ESLint (push) Waiting to run
Integration Tests / Check for relevant changes (push) Waiting to run
Integration Tests / ${{ (github.event_name == 'schedule' || github.event.inputs.suite == 'full') && 'Full integration suite' || 'Tier-1 integration subset' }} (push) Blocked by required conditions
Mobile checks / Mobile lint + typecheck (push) Waiting to run
Mobile checks / Mobile unit tests (push) Waiting to run
Mobile checks / Mobile dependency audit (report) (push) Waiting to run
Mobile checks / Mobile reproducibility checks (push) Waiting to run
Secrets guard (env backups) / Ensure no tracked env backup files (push) Waiting to run
Temporal Readiness / fast-readiness (push) Waiting to run
Temporal Readiness / docker-parity (push) Waiting to run
TypeScript Type Check / Nx affected typecheck (push) Waiting to run
Unit Tests / Skipped-test budget (push) Waiting to run
Unit Tests / Nx affected unit tests (push) Waiting to run
Unit Tests / Server unit coverage (informational) (push) Waiting to run
Validate Tenant Management Schema / Check for relevant changes (push) Waiting to run
Validate Tenant Management Schema / Validate Tenant Management Schema (push) Blocked by required conditions
EE Workflows Build Guard / ee-workflows-build-guard (push) Waiting to run
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz Source: /opt/alga-psa on psa.joliet.tech
2850 lines
65 KiB
JSON
2850 lines
65 KiB
JSON
[
|
|
{
|
|
"id": "F001",
|
|
"description": "Define shared product code constants for psa and algadesk.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Product entitlement and resolution"
|
|
]
|
|
},
|
|
{
|
|
"id": "F002",
|
|
"description": "Expose a ProductCode TypeScript type from shared package exports.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Product entitlement and resolution"
|
|
]
|
|
},
|
|
{
|
|
"id": "F003",
|
|
"description": "Add tenant interface support for product_code without replacing plan.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Product entitlement and resolution"
|
|
]
|
|
},
|
|
{
|
|
"id": "F004",
|
|
"description": "Add a tenants.product_code migration with default psa for existing tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Product entitlement and resolution"
|
|
]
|
|
},
|
|
{
|
|
"id": "F005",
|
|
"description": "Backfill existing tenants to product_code psa during migration.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Product entitlement and resolution"
|
|
]
|
|
},
|
|
{
|
|
"id": "F006",
|
|
"description": "Add database validation for allowed product_code values.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Product entitlement and resolution"
|
|
]
|
|
},
|
|
{
|
|
"id": "F007",
|
|
"description": "Resolve missing product_code values as psa for backward compatibility during rollout.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Product entitlement and resolution"
|
|
]
|
|
},
|
|
{
|
|
"id": "F008",
|
|
"description": "Fail closed for unknown non-null product_code values in product access helpers.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Product entitlement and resolution"
|
|
]
|
|
},
|
|
{
|
|
"id": "F009",
|
|
"description": "Implement getTenantProduct for explicit tenant IDs.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Product entitlement and resolution"
|
|
]
|
|
},
|
|
{
|
|
"id": "F010",
|
|
"description": "Implement getCurrentTenantProduct for session/current tenant resolution.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Product entitlement and resolution"
|
|
]
|
|
},
|
|
{
|
|
"id": "F011",
|
|
"description": "Implement ProductAccessError with stable status and code fields.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Product entitlement and resolution"
|
|
]
|
|
},
|
|
{
|
|
"id": "F012",
|
|
"description": "Implement assertProductAccess for capability checks.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Product entitlement and resolution"
|
|
]
|
|
},
|
|
{
|
|
"id": "F013",
|
|
"description": "Implement assertTenantProductAccess for API-key and worker contexts.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Product entitlement and resolution"
|
|
]
|
|
},
|
|
{
|
|
"id": "F014",
|
|
"description": "Expose a server-safe product access helper for App Router pages.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Product entitlement and resolution"
|
|
]
|
|
},
|
|
{
|
|
"id": "F015",
|
|
"description": "Expose a client-safe product context or hook for composition decisions.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Product entitlement and resolution"
|
|
]
|
|
},
|
|
{
|
|
"id": "F016",
|
|
"description": "Keep tier resolution unchanged when product_code is added.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Product entitlement and resolution"
|
|
]
|
|
},
|
|
{
|
|
"id": "F017",
|
|
"description": "Keep add-on resolution unchanged when product_code is added.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Product entitlement and resolution"
|
|
]
|
|
},
|
|
{
|
|
"id": "F018",
|
|
"description": "Document that product access, RBAC, tiers, and add-ons are independent checks.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Product entitlement and resolution"
|
|
]
|
|
},
|
|
{
|
|
"id": "F019",
|
|
"description": "Create an authoritative product surface registry module.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Product surface registry"
|
|
]
|
|
},
|
|
{
|
|
"id": "F020",
|
|
"description": "Represent AlgaDesk capabilities in the registry.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Product surface registry"
|
|
]
|
|
},
|
|
{
|
|
"id": "F021",
|
|
"description": "Represent PSA capabilities in the registry.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Product surface registry"
|
|
]
|
|
},
|
|
{
|
|
"id": "F022",
|
|
"description": "Classify MSP route groups as allowed, upgrade-boundary, or not-found for AlgaDesk.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Product surface registry"
|
|
]
|
|
},
|
|
{
|
|
"id": "F023",
|
|
"description": "Classify client portal route groups as allowed, upgrade-boundary, or not-found for AlgaDesk.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Product surface registry"
|
|
]
|
|
},
|
|
{
|
|
"id": "F024",
|
|
"description": "Classify API groups as allowed or denied for AlgaDesk.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Product surface registry"
|
|
]
|
|
},
|
|
{
|
|
"id": "F025",
|
|
"description": "Classify metadata/OpenAPI visibility by product.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Product surface registry"
|
|
]
|
|
},
|
|
{
|
|
"id": "F026",
|
|
"description": "Provide matcher helpers for static route prefixes.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Product surface registry"
|
|
]
|
|
},
|
|
{
|
|
"id": "F027",
|
|
"description": "Provide matcher helpers for dynamic route patterns.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Product surface registry"
|
|
]
|
|
},
|
|
{
|
|
"id": "F028",
|
|
"description": "Provide helper to resolve product route behavior for a pathname.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Product surface registry"
|
|
]
|
|
},
|
|
{
|
|
"id": "F029",
|
|
"description": "Provide helper to resolve product API behavior for a request path.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Product surface registry"
|
|
]
|
|
},
|
|
{
|
|
"id": "F030",
|
|
"description": "Provide helper to filter menu sections by product.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Product surface registry"
|
|
]
|
|
},
|
|
{
|
|
"id": "F031",
|
|
"description": "Provide helper to filter portal navigation by product.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Product surface registry"
|
|
]
|
|
},
|
|
{
|
|
"id": "F032",
|
|
"description": "Default unknown route groups to denied for AlgaDesk.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Product surface registry"
|
|
]
|
|
},
|
|
{
|
|
"id": "F033",
|
|
"description": "Allow future desk aliases to map to the same AlgaDesk route groups.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Product surface registry"
|
|
]
|
|
},
|
|
{
|
|
"id": "F034",
|
|
"description": "Keep registry pure and testable without database access.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Product surface registry"
|
|
]
|
|
},
|
|
{
|
|
"id": "F035",
|
|
"description": "Add optional product_code input to tenant creation utilities.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Provisioning and tenant lifecycle"
|
|
]
|
|
},
|
|
{
|
|
"id": "F036",
|
|
"description": "Default tenant creation utilities to psa when product_code is omitted.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Provisioning and tenant lifecycle"
|
|
]
|
|
},
|
|
{
|
|
"id": "F037",
|
|
"description": "Allow dev/test fixtures to create AlgaDesk tenants explicitly.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Provisioning and tenant lifecycle"
|
|
]
|
|
},
|
|
{
|
|
"id": "F038",
|
|
"description": "Allow provisioning APIs to preserve or set product_code.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Provisioning and tenant lifecycle"
|
|
]
|
|
},
|
|
{
|
|
"id": "F039",
|
|
"description": "Ensure Stripe tier mapping does not overwrite product_code.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Provisioning and tenant lifecycle"
|
|
]
|
|
},
|
|
{
|
|
"id": "F040",
|
|
"description": "Ensure mobile or IAP tier transitions do not overwrite product_code.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Provisioning and tenant lifecycle"
|
|
]
|
|
},
|
|
{
|
|
"id": "F041",
|
|
"description": "Expose product_code in admin/debug tenant views only where appropriate.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Provisioning and tenant lifecycle"
|
|
]
|
|
},
|
|
{
|
|
"id": "F042",
|
|
"description": "Add migration rollback behavior that safely removes product_code.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Provisioning and tenant lifecycle"
|
|
]
|
|
},
|
|
{
|
|
"id": "F043",
|
|
"description": "Create @alga-psa/algadesk-composition package scaffold.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk composition package"
|
|
]
|
|
},
|
|
{
|
|
"id": "F044",
|
|
"description": "Add package exports for MSP composition entrypoints.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk composition package"
|
|
]
|
|
},
|
|
{
|
|
"id": "F045",
|
|
"description": "Add package exports for client portal composition entrypoints.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk composition package"
|
|
]
|
|
},
|
|
{
|
|
"id": "F046",
|
|
"description": "Add package exports for ticket composition entrypoints.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk composition package"
|
|
]
|
|
},
|
|
{
|
|
"id": "F047",
|
|
"description": "Add package exports for client/contact composition entrypoints.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk composition package"
|
|
]
|
|
},
|
|
{
|
|
"id": "F048",
|
|
"description": "Add package exports for settings composition entrypoints.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk composition package"
|
|
]
|
|
},
|
|
{
|
|
"id": "F049",
|
|
"description": "Add package exports for KB composition entrypoints.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk composition package"
|
|
]
|
|
},
|
|
{
|
|
"id": "F050",
|
|
"description": "Restrict package dependencies to AlgaDesk-allowed domains.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk composition package"
|
|
]
|
|
},
|
|
{
|
|
"id": "F051",
|
|
"description": "Add dependency guard test that fails on billing imports.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk composition package"
|
|
]
|
|
},
|
|
{
|
|
"id": "F052",
|
|
"description": "Add dependency guard test that fails on project imports.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk composition package"
|
|
]
|
|
},
|
|
{
|
|
"id": "F053",
|
|
"description": "Add dependency guard test that fails on asset/RMM imports.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk composition package"
|
|
]
|
|
},
|
|
{
|
|
"id": "F054",
|
|
"description": "Add dependency guard test that fails on scheduling/time imports.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk composition package"
|
|
]
|
|
},
|
|
{
|
|
"id": "F055",
|
|
"description": "Add dependency guard test that fails on SLA imports.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk composition package"
|
|
]
|
|
},
|
|
{
|
|
"id": "F056",
|
|
"description": "Add dependency guard test that fails on workflow imports.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk composition package"
|
|
]
|
|
},
|
|
{
|
|
"id": "F057",
|
|
"description": "Add dependency guard test that fails on survey imports.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk composition package"
|
|
]
|
|
},
|
|
{
|
|
"id": "F058",
|
|
"description": "Add dependency guard test that fails on extension imports.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk composition package"
|
|
]
|
|
},
|
|
{
|
|
"id": "F059",
|
|
"description": "Add dependency guard test that fails on AI/chat imports.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk composition package"
|
|
]
|
|
},
|
|
{
|
|
"id": "F060",
|
|
"description": "Provide shared AlgaDesk provider stack primitives.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk composition package"
|
|
]
|
|
},
|
|
{
|
|
"id": "F061",
|
|
"description": "Resolve tenant product in the MSP layout server component.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"MSP shell and navigation"
|
|
]
|
|
},
|
|
{
|
|
"id": "F062",
|
|
"description": "Render existing PSA layout for PSA tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"MSP shell and navigation"
|
|
]
|
|
},
|
|
{
|
|
"id": "F063",
|
|
"description": "Render AlgaDesk layout for AlgaDesk tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"MSP shell and navigation"
|
|
]
|
|
},
|
|
{
|
|
"id": "F064",
|
|
"description": "Move SLA integration registration out of MSP layout module scope.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"MSP shell and navigation"
|
|
]
|
|
},
|
|
{
|
|
"id": "F065",
|
|
"description": "Register SLA integrations only for PSA composition paths.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"MSP shell and navigation"
|
|
]
|
|
},
|
|
{
|
|
"id": "F066",
|
|
"description": "Move schedule-entry integration registration out of MSP layout module scope.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"MSP shell and navigation"
|
|
]
|
|
},
|
|
{
|
|
"id": "F067",
|
|
"description": "Register schedule-entry integrations only for PSA composition paths.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"MSP shell and navigation"
|
|
]
|
|
},
|
|
{
|
|
"id": "F068",
|
|
"description": "Create AlgaDesk sidebar menu configuration.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"MSP shell and navigation"
|
|
]
|
|
},
|
|
{
|
|
"id": "F069",
|
|
"description": "Show Dashboard navigation item for AlgaDesk tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"MSP shell and navigation"
|
|
]
|
|
},
|
|
{
|
|
"id": "F070",
|
|
"description": "Show Tickets navigation item for AlgaDesk tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"MSP shell and navigation"
|
|
]
|
|
},
|
|
{
|
|
"id": "F071",
|
|
"description": "Show Clients navigation item for AlgaDesk tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"MSP shell and navigation"
|
|
]
|
|
},
|
|
{
|
|
"id": "F072",
|
|
"description": "Show Contacts navigation item for AlgaDesk tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"MSP shell and navigation"
|
|
]
|
|
},
|
|
{
|
|
"id": "F073",
|
|
"description": "Show Knowledge Base navigation item for AlgaDesk tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"MSP shell and navigation"
|
|
]
|
|
},
|
|
{
|
|
"id": "F074",
|
|
"description": "Show allowed Settings navigation for AlgaDesk tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"MSP shell and navigation"
|
|
]
|
|
},
|
|
{
|
|
"id": "F075",
|
|
"description": "Hide User Activities from AlgaDesk navigation unless explicitly allowed later.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"MSP shell and navigation"
|
|
]
|
|
},
|
|
{
|
|
"id": "F076",
|
|
"description": "Hide Service Requests from AlgaDesk navigation.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"MSP shell and navigation"
|
|
]
|
|
},
|
|
{
|
|
"id": "F077",
|
|
"description": "Hide Surveys from AlgaDesk navigation.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"MSP shell and navigation"
|
|
]
|
|
},
|
|
{
|
|
"id": "F078",
|
|
"description": "Hide Projects from AlgaDesk navigation.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"MSP shell and navigation"
|
|
]
|
|
},
|
|
{
|
|
"id": "F079",
|
|
"description": "Hide Documents module from AlgaDesk navigation except KB entry.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"MSP shell and navigation"
|
|
]
|
|
},
|
|
{
|
|
"id": "F080",
|
|
"description": "Hide Assets from AlgaDesk navigation.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"MSP shell and navigation"
|
|
]
|
|
},
|
|
{
|
|
"id": "F081",
|
|
"description": "Hide Time Management from AlgaDesk navigation.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"MSP shell and navigation"
|
|
]
|
|
},
|
|
{
|
|
"id": "F082",
|
|
"description": "Hide Billing from AlgaDesk navigation.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"MSP shell and navigation"
|
|
]
|
|
},
|
|
{
|
|
"id": "F083",
|
|
"description": "Hide Schedule and Technician Dispatch from AlgaDesk navigation.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"MSP shell and navigation"
|
|
]
|
|
},
|
|
{
|
|
"id": "F084",
|
|
"description": "Hide Workflows from AlgaDesk navigation.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"MSP shell and navigation"
|
|
]
|
|
},
|
|
{
|
|
"id": "F085",
|
|
"description": "Hide System Monitoring product links from AlgaDesk navigation except email channel health surfaces.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"MSP shell and navigation"
|
|
]
|
|
},
|
|
{
|
|
"id": "F086",
|
|
"description": "Hide Extensions from AlgaDesk navigation.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"MSP shell and navigation"
|
|
]
|
|
},
|
|
{
|
|
"id": "F087",
|
|
"description": "Keep PSA sidebar behavior unchanged for PSA tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"MSP shell and navigation"
|
|
]
|
|
},
|
|
{
|
|
"id": "F088",
|
|
"description": "Use AlgaDesk branding labels in MSP shell where product name appears.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"MSP shell and navigation"
|
|
]
|
|
},
|
|
{
|
|
"id": "F089",
|
|
"description": "Create AlgaDesk dashboard page composition.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk dashboard"
|
|
]
|
|
},
|
|
{
|
|
"id": "F090",
|
|
"description": "Show open ticket count on AlgaDesk dashboard.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk dashboard"
|
|
]
|
|
},
|
|
{
|
|
"id": "F091",
|
|
"description": "Show ticket aging summary on AlgaDesk dashboard.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk dashboard"
|
|
]
|
|
},
|
|
{
|
|
"id": "F092",
|
|
"description": "Show awaiting customer ticket summary on AlgaDesk dashboard.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk dashboard"
|
|
]
|
|
},
|
|
{
|
|
"id": "F093",
|
|
"description": "Show awaiting internal ticket summary on AlgaDesk dashboard.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk dashboard"
|
|
]
|
|
},
|
|
{
|
|
"id": "F094",
|
|
"description": "Show recently updated tickets on AlgaDesk dashboard.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk dashboard"
|
|
]
|
|
},
|
|
{
|
|
"id": "F095",
|
|
"description": "Show email channel health summary on AlgaDesk dashboard.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk dashboard"
|
|
]
|
|
},
|
|
{
|
|
"id": "F096",
|
|
"description": "Link dashboard ticket cards only to AlgaDesk-allowed ticket routes.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk dashboard"
|
|
]
|
|
},
|
|
{
|
|
"id": "F097",
|
|
"description": "Exclude billing widgets from AlgaDesk dashboard.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk dashboard"
|
|
]
|
|
},
|
|
{
|
|
"id": "F098",
|
|
"description": "Exclude project widgets from AlgaDesk dashboard.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk dashboard"
|
|
]
|
|
},
|
|
{
|
|
"id": "F099",
|
|
"description": "Exclude asset widgets from AlgaDesk dashboard.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk dashboard"
|
|
]
|
|
},
|
|
{
|
|
"id": "F100",
|
|
"description": "Exclude time/scheduling widgets from AlgaDesk dashboard.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk dashboard"
|
|
]
|
|
},
|
|
{
|
|
"id": "F101",
|
|
"description": "Exclude workflow widgets from AlgaDesk dashboard.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk dashboard"
|
|
]
|
|
},
|
|
{
|
|
"id": "F102",
|
|
"description": "Exclude AI/chat widgets from AlgaDesk dashboard.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk dashboard"
|
|
]
|
|
},
|
|
{
|
|
"id": "F103",
|
|
"description": "Create AlgaDesk settings page composition.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk settings"
|
|
]
|
|
},
|
|
{
|
|
"id": "F104",
|
|
"description": "Expose General settings tab for AlgaDesk tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk settings"
|
|
]
|
|
},
|
|
{
|
|
"id": "F105",
|
|
"description": "Expose Users settings tab for AlgaDesk tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk settings"
|
|
]
|
|
},
|
|
{
|
|
"id": "F106",
|
|
"description": "Expose Teams settings tab for AlgaDesk tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk settings"
|
|
]
|
|
},
|
|
{
|
|
"id": "F107",
|
|
"description": "Expose Ticketing settings tab for AlgaDesk tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk settings"
|
|
]
|
|
},
|
|
{
|
|
"id": "F108",
|
|
"description": "Expose Email Channels settings tab for AlgaDesk tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk settings"
|
|
]
|
|
},
|
|
{
|
|
"id": "F109",
|
|
"description": "Expose Client Portal settings tab for AlgaDesk tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk settings"
|
|
]
|
|
},
|
|
{
|
|
"id": "F110",
|
|
"description": "Expose Knowledge Base settings tab for AlgaDesk tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk settings"
|
|
]
|
|
},
|
|
{
|
|
"id": "F111",
|
|
"description": "Expose Profile or route users to profile settings as appropriate.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk settings"
|
|
]
|
|
},
|
|
{
|
|
"id": "F112",
|
|
"description": "Expose Security settings as appropriate for MSP users.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk settings"
|
|
]
|
|
},
|
|
{
|
|
"id": "F113",
|
|
"description": "Hide Language tab only if it is not part of AlgaDesk launch scope.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk settings"
|
|
]
|
|
},
|
|
{
|
|
"id": "F114",
|
|
"description": "Hide SLA settings for AlgaDesk tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk settings"
|
|
]
|
|
},
|
|
{
|
|
"id": "F115",
|
|
"description": "Hide Projects settings for AlgaDesk tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk settings"
|
|
]
|
|
},
|
|
{
|
|
"id": "F116",
|
|
"description": "Hide Interactions settings if support interactions are excluded.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk settings"
|
|
]
|
|
},
|
|
{
|
|
"id": "F117",
|
|
"description": "Hide Time Entry settings for AlgaDesk tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk settings"
|
|
]
|
|
},
|
|
{
|
|
"id": "F118",
|
|
"description": "Hide Billing settings for AlgaDesk tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk settings"
|
|
]
|
|
},
|
|
{
|
|
"id": "F119",
|
|
"description": "Hide broad Notifications settings if only ticket/email settings are included.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk settings"
|
|
]
|
|
},
|
|
{
|
|
"id": "F120",
|
|
"description": "Hide broad Integrations settings except focused email channel entry.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk settings"
|
|
]
|
|
},
|
|
{
|
|
"id": "F121",
|
|
"description": "Hide Extensions settings for AlgaDesk tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk settings"
|
|
]
|
|
},
|
|
{
|
|
"id": "F122",
|
|
"description": "Hide Experimental Features settings for AlgaDesk tenants unless explicitly retained.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk settings"
|
|
]
|
|
},
|
|
{
|
|
"id": "F123",
|
|
"description": "Reject excluded settings tabs on direct URL access.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"AlgaDesk settings"
|
|
]
|
|
},
|
|
{
|
|
"id": "F124",
|
|
"description": "Render AlgaDesk ticket list for AlgaDesk tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket list composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F125",
|
|
"description": "Keep existing PSA ticket list for PSA tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket list composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F126",
|
|
"description": "Preserve board filtering in AlgaDesk ticket list.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket list composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F127",
|
|
"description": "Preserve status filtering in AlgaDesk ticket list.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket list composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F128",
|
|
"description": "Preserve priority filtering in AlgaDesk ticket list.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket list composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F129",
|
|
"description": "Preserve category filtering in AlgaDesk ticket list.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket list composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F130",
|
|
"description": "Preserve client filtering in AlgaDesk ticket list.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket list composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F131",
|
|
"description": "Preserve search filtering in AlgaDesk ticket list.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket list composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F132",
|
|
"description": "Preserve tag filtering in AlgaDesk ticket list.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket list composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F133",
|
|
"description": "Preserve assignee filtering in AlgaDesk ticket list.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket list composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F134",
|
|
"description": "Preserve team filtering in AlgaDesk ticket list.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket list composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F135",
|
|
"description": "Preserve unassigned filtering in AlgaDesk ticket list.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket list composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F136",
|
|
"description": "Preserve due date filtering in AlgaDesk ticket list.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket list composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F137",
|
|
"description": "Preserve response state filtering in AlgaDesk ticket list.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket list composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F138",
|
|
"description": "Remove SLA status filtering from AlgaDesk ticket list.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket list composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F139",
|
|
"description": "Preserve ticket sorting in AlgaDesk ticket list.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket list composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F140",
|
|
"description": "Preserve ticket pagination in AlgaDesk ticket list.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket list composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F141",
|
|
"description": "Preserve bulk move behavior only for allowed board/status/category operations.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket list composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F142",
|
|
"description": "Ensure ticket list links resolve to AlgaDesk ticket detail composition.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket list composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F143",
|
|
"description": "Ensure quick-add ticket opens an AlgaDesk-safe ticket form.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket list composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F144",
|
|
"description": "Render AlgaDesk ticket detail for AlgaDesk tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket detail composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F145",
|
|
"description": "Keep existing PSA ticket detail for PSA tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket detail composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F146",
|
|
"description": "Show ticket title and core metadata in AlgaDesk ticket detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket detail composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F147",
|
|
"description": "Show board in AlgaDesk ticket detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket detail composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F148",
|
|
"description": "Show status in AlgaDesk ticket detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket detail composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F149",
|
|
"description": "Show priority in AlgaDesk ticket detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket detail composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F150",
|
|
"description": "Show category in AlgaDesk ticket detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket detail composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F151",
|
|
"description": "Show assigned user and team controls in AlgaDesk ticket detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket detail composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F152",
|
|
"description": "Show client and contact context in AlgaDesk ticket detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket detail composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F153",
|
|
"description": "Show tags in AlgaDesk ticket detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket detail composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F154",
|
|
"description": "Show response state controls in AlgaDesk ticket detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket detail composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F155",
|
|
"description": "Show ticket origin badge in AlgaDesk ticket detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket detail composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F156",
|
|
"description": "Show conversation/comments in AlgaDesk ticket detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket detail composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F157",
|
|
"description": "Support internal comments in AlgaDesk ticket detail for MSP users.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket detail composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F158",
|
|
"description": "Support public replies in AlgaDesk ticket detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket detail composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F159",
|
|
"description": "Support comment reactions if already core ticket behavior.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket detail composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F160",
|
|
"description": "Support rich-text ticket descriptions in AlgaDesk ticket detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket detail composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F161",
|
|
"description": "Support rich-text comments in AlgaDesk ticket detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket detail composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F162",
|
|
"description": "Support ticket attachments in AlgaDesk ticket detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket detail composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F163",
|
|
"description": "Support clipboard image attachment uploads in AlgaDesk ticket detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket detail composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F164",
|
|
"description": "Show email conversation or delivery context in AlgaDesk ticket detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket detail composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F165",
|
|
"description": "Omit SLA summary card from AlgaDesk ticket detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket detail composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F166",
|
|
"description": "Omit SLA breach/escalation controls from AlgaDesk ticket detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket detail composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F167",
|
|
"description": "Omit project task creation from AlgaDesk ticket detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket detail composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F168",
|
|
"description": "Omit project task linking from AlgaDesk ticket detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket detail composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F169",
|
|
"description": "Omit linked project task badge from AlgaDesk ticket detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket detail composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F170",
|
|
"description": "Omit interval/time management from AlgaDesk ticket detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket detail composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F171",
|
|
"description": "Omit time entry controls from AlgaDesk ticket detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket detail composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F172",
|
|
"description": "Omit asset association panels from AlgaDesk ticket detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket detail composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F173",
|
|
"description": "Omit survey summary card from AlgaDesk ticket detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket detail composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F174",
|
|
"description": "Omit AI assistant controls from AlgaDesk ticket detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket detail composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F175",
|
|
"description": "Keep permission checks for ticket update actions in AlgaDesk ticket detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket detail composition"
|
|
]
|
|
},
|
|
{
|
|
"id": "F176",
|
|
"description": "Create AlgaDesk-safe quick-add ticket composition.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket forms and reference data"
|
|
]
|
|
},
|
|
{
|
|
"id": "F177",
|
|
"description": "Allow client selection in AlgaDesk ticket create form.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket forms and reference data"
|
|
]
|
|
},
|
|
{
|
|
"id": "F178",
|
|
"description": "Allow contact selection in AlgaDesk ticket create form.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket forms and reference data"
|
|
]
|
|
},
|
|
{
|
|
"id": "F179",
|
|
"description": "Allow board selection in AlgaDesk ticket create form.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket forms and reference data"
|
|
]
|
|
},
|
|
{
|
|
"id": "F180",
|
|
"description": "Allow status defaults in AlgaDesk ticket create form.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket forms and reference data"
|
|
]
|
|
},
|
|
{
|
|
"id": "F181",
|
|
"description": "Allow priority selection in AlgaDesk ticket create form.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket forms and reference data"
|
|
]
|
|
},
|
|
{
|
|
"id": "F182",
|
|
"description": "Allow category selection in AlgaDesk ticket create form.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket forms and reference data"
|
|
]
|
|
},
|
|
{
|
|
"id": "F183",
|
|
"description": "Allow team assignment in AlgaDesk ticket create form.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket forms and reference data"
|
|
]
|
|
},
|
|
{
|
|
"id": "F184",
|
|
"description": "Allow user assignment in AlgaDesk ticket create form.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket forms and reference data"
|
|
]
|
|
},
|
|
{
|
|
"id": "F185",
|
|
"description": "Allow attachments in AlgaDesk ticket create form.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket forms and reference data"
|
|
]
|
|
},
|
|
{
|
|
"id": "F186",
|
|
"description": "Disallow asset prefill banners in AlgaDesk ticket create form.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket forms and reference data"
|
|
]
|
|
},
|
|
{
|
|
"id": "F187",
|
|
"description": "Disallow project/task fields in AlgaDesk ticket create form.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket forms and reference data"
|
|
]
|
|
},
|
|
{
|
|
"id": "F188",
|
|
"description": "Disallow time-entry defaults in AlgaDesk ticket create form.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket forms and reference data"
|
|
]
|
|
},
|
|
{
|
|
"id": "F189",
|
|
"description": "Keep board/status/priority/category management accessible through allowed ticket settings.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Ticket forms and reference data"
|
|
]
|
|
},
|
|
{
|
|
"id": "F190",
|
|
"description": "Render AlgaDesk clients list for AlgaDesk tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Clients and contacts"
|
|
]
|
|
},
|
|
{
|
|
"id": "F191",
|
|
"description": "Render AlgaDesk client detail for AlgaDesk tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Clients and contacts"
|
|
]
|
|
},
|
|
{
|
|
"id": "F192",
|
|
"description": "Render AlgaDesk contacts list for AlgaDesk tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Clients and contacts"
|
|
]
|
|
},
|
|
{
|
|
"id": "F193",
|
|
"description": "Render AlgaDesk contact detail for AlgaDesk tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Clients and contacts"
|
|
]
|
|
},
|
|
{
|
|
"id": "F194",
|
|
"description": "Allow client create/edit/delete according to RBAC.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Clients and contacts"
|
|
]
|
|
},
|
|
{
|
|
"id": "F195",
|
|
"description": "Allow contact create/edit/delete according to RBAC.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Clients and contacts"
|
|
]
|
|
},
|
|
{
|
|
"id": "F196",
|
|
"description": "Allow client location management according to RBAC.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Clients and contacts"
|
|
]
|
|
},
|
|
{
|
|
"id": "F197",
|
|
"description": "Allow contact phone number management according to RBAC.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Clients and contacts"
|
|
]
|
|
},
|
|
{
|
|
"id": "F198",
|
|
"description": "Allow contact additional email address management according to RBAC.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Clients and contacts"
|
|
]
|
|
},
|
|
{
|
|
"id": "F199",
|
|
"description": "Show client tickets on AlgaDesk client detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Clients and contacts"
|
|
]
|
|
},
|
|
{
|
|
"id": "F200",
|
|
"description": "Show contact tickets on AlgaDesk contact detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Clients and contacts"
|
|
]
|
|
},
|
|
{
|
|
"id": "F201",
|
|
"description": "Show support-relevant client/contact notes if retained for v1.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Clients and contacts"
|
|
]
|
|
},
|
|
{
|
|
"id": "F202",
|
|
"description": "Hide contract authoring on AlgaDesk client detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Clients and contacts"
|
|
]
|
|
},
|
|
{
|
|
"id": "F203",
|
|
"description": "Hide contract line management on AlgaDesk client detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Clients and contacts"
|
|
]
|
|
},
|
|
{
|
|
"id": "F204",
|
|
"description": "Hide billing configuration on AlgaDesk client detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Clients and contacts"
|
|
]
|
|
},
|
|
{
|
|
"id": "F205",
|
|
"description": "Hide tax settings on AlgaDesk client detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Clients and contacts"
|
|
]
|
|
},
|
|
{
|
|
"id": "F206",
|
|
"description": "Hide service catalog links from AlgaDesk client detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Clients and contacts"
|
|
]
|
|
},
|
|
{
|
|
"id": "F207",
|
|
"description": "Hide client assets from AlgaDesk client detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Clients and contacts"
|
|
]
|
|
},
|
|
{
|
|
"id": "F208",
|
|
"description": "Hide client projects from AlgaDesk client detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Clients and contacts"
|
|
]
|
|
},
|
|
{
|
|
"id": "F209",
|
|
"description": "Hide client document library from AlgaDesk client detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Clients and contacts"
|
|
]
|
|
},
|
|
{
|
|
"id": "F210",
|
|
"description": "Hide client survey summaries from AlgaDesk client detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Clients and contacts"
|
|
]
|
|
},
|
|
{
|
|
"id": "F211",
|
|
"description": "Use AlgaDesk-safe client cross-feature provider callbacks.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Clients and contacts"
|
|
]
|
|
},
|
|
{
|
|
"id": "F212",
|
|
"description": "Render AlgaDesk knowledge base page for MSP users.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Knowledge base and attachments"
|
|
]
|
|
},
|
|
{
|
|
"id": "F213",
|
|
"description": "Render AlgaDesk knowledge base page for portal users.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Knowledge base and attachments"
|
|
]
|
|
},
|
|
{
|
|
"id": "F214",
|
|
"description": "Allow KB article listing for AlgaDesk tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Knowledge base and attachments"
|
|
]
|
|
},
|
|
{
|
|
"id": "F215",
|
|
"description": "Allow KB article viewing for AlgaDesk tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Knowledge base and attachments"
|
|
]
|
|
},
|
|
{
|
|
"id": "F216",
|
|
"description": "Allow KB article create/edit according to RBAC.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Knowledge base and attachments"
|
|
]
|
|
},
|
|
{
|
|
"id": "F217",
|
|
"description": "Allow KB article publish/unpublish according to RBAC.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Knowledge base and attachments"
|
|
]
|
|
},
|
|
{
|
|
"id": "F218",
|
|
"description": "Prevent AlgaDesk KB pages from linking to full document management.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Knowledge base and attachments"
|
|
]
|
|
},
|
|
{
|
|
"id": "F219",
|
|
"description": "Provide ticket-attachment upload provider for AlgaDesk ticket components.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Knowledge base and attachments"
|
|
]
|
|
},
|
|
{
|
|
"id": "F220",
|
|
"description": "Provide ticket-attachment delete provider for AlgaDesk ticket components.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Knowledge base and attachments"
|
|
]
|
|
},
|
|
{
|
|
"id": "F221",
|
|
"description": "Provide ticket-attachment download/view provider for AlgaDesk ticket components.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Knowledge base and attachments"
|
|
]
|
|
},
|
|
{
|
|
"id": "F222",
|
|
"description": "Prevent AlgaDesk attachment components from exposing folder selection.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Knowledge base and attachments"
|
|
]
|
|
},
|
|
{
|
|
"id": "F223",
|
|
"description": "Prevent AlgaDesk attachment components from exposing broad document sharing.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Knowledge base and attachments"
|
|
]
|
|
},
|
|
{
|
|
"id": "F224",
|
|
"description": "Prevent AlgaDesk attachment components from exposing project/client document surfaces.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Knowledge base and attachments"
|
|
]
|
|
},
|
|
{
|
|
"id": "F225",
|
|
"description": "Keep rich-text image uploads tied to ticket/comment context.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Knowledge base and attachments"
|
|
]
|
|
},
|
|
{
|
|
"id": "F226",
|
|
"description": "Keep attachment authorization scoped to ticket visibility.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Knowledge base and attachments"
|
|
]
|
|
},
|
|
{
|
|
"id": "F227",
|
|
"description": "Resolve tenant product in client portal layout.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Client portal shell"
|
|
]
|
|
},
|
|
{
|
|
"id": "F228",
|
|
"description": "Render existing PSA portal layout for PSA tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Client portal shell"
|
|
]
|
|
},
|
|
{
|
|
"id": "F229",
|
|
"description": "Render AlgaDesk portal layout for AlgaDesk tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Client portal shell"
|
|
]
|
|
},
|
|
{
|
|
"id": "F230",
|
|
"description": "Create AlgaDesk portal sidebar.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Client portal shell"
|
|
]
|
|
},
|
|
{
|
|
"id": "F231",
|
|
"description": "Show portal Dashboard link for AlgaDesk contacts.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Client portal shell"
|
|
]
|
|
},
|
|
{
|
|
"id": "F232",
|
|
"description": "Show portal Tickets link for AlgaDesk contacts.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Client portal shell"
|
|
]
|
|
},
|
|
{
|
|
"id": "F233",
|
|
"description": "Show portal Knowledge Base link for AlgaDesk contacts.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Client portal shell"
|
|
]
|
|
},
|
|
{
|
|
"id": "F234",
|
|
"description": "Show portal Profile link for AlgaDesk contacts.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Client portal shell"
|
|
]
|
|
},
|
|
{
|
|
"id": "F235",
|
|
"description": "Show portal Client Settings link where permitted.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Client portal shell"
|
|
]
|
|
},
|
|
{
|
|
"id": "F236",
|
|
"description": "Hide portal Billing link for AlgaDesk contacts.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Client portal shell"
|
|
]
|
|
},
|
|
{
|
|
"id": "F237",
|
|
"description": "Hide portal Projects link for AlgaDesk contacts.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Client portal shell"
|
|
]
|
|
},
|
|
{
|
|
"id": "F238",
|
|
"description": "Hide portal Devices/assets link for AlgaDesk contacts.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Client portal shell"
|
|
]
|
|
},
|
|
{
|
|
"id": "F239",
|
|
"description": "Hide portal Documents link for AlgaDesk contacts.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Client portal shell"
|
|
]
|
|
},
|
|
{
|
|
"id": "F240",
|
|
"description": "Hide portal Appointments link for AlgaDesk contacts.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Client portal shell"
|
|
]
|
|
},
|
|
{
|
|
"id": "F241",
|
|
"description": "Hide portal Service Requests link for AlgaDesk contacts.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Client portal shell"
|
|
]
|
|
},
|
|
{
|
|
"id": "F242",
|
|
"description": "Hide portal Extensions link for AlgaDesk contacts.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Client portal shell"
|
|
]
|
|
},
|
|
{
|
|
"id": "F243",
|
|
"description": "Keep portal authentication behavior unchanged.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Client portal shell"
|
|
]
|
|
},
|
|
{
|
|
"id": "F244",
|
|
"description": "Render AlgaDesk portal dashboard for portal contacts.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Client portal ticketing"
|
|
]
|
|
},
|
|
{
|
|
"id": "F245",
|
|
"description": "Render AlgaDesk portal ticket list.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Client portal ticketing"
|
|
]
|
|
},
|
|
{
|
|
"id": "F246",
|
|
"description": "Render AlgaDesk portal ticket detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Client portal ticketing"
|
|
]
|
|
},
|
|
{
|
|
"id": "F247",
|
|
"description": "Render free-form portal ticket creation form.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Client portal ticketing"
|
|
]
|
|
},
|
|
{
|
|
"id": "F248",
|
|
"description": "Allow portal contacts to submit subject/title.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Client portal ticketing"
|
|
]
|
|
},
|
|
{
|
|
"id": "F249",
|
|
"description": "Allow portal contacts to submit description.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Client portal ticketing"
|
|
]
|
|
},
|
|
{
|
|
"id": "F250",
|
|
"description": "Allow portal contacts to add attachments.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Client portal ticketing"
|
|
]
|
|
},
|
|
{
|
|
"id": "F251",
|
|
"description": "Allow portal contacts to pick allowed board/category fields only if exposed by existing portal rules.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Client portal ticketing"
|
|
]
|
|
},
|
|
{
|
|
"id": "F252",
|
|
"description": "Prevent portal contacts from submitting service request definition forms.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Client portal ticketing"
|
|
]
|
|
},
|
|
{
|
|
"id": "F253",
|
|
"description": "Show portal ticket status.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Client portal ticketing"
|
|
]
|
|
},
|
|
{
|
|
"id": "F254",
|
|
"description": "Show portal ticket public conversation.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Client portal ticketing"
|
|
]
|
|
},
|
|
{
|
|
"id": "F255",
|
|
"description": "Hide internal comments from portal contacts.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Client portal ticketing"
|
|
]
|
|
},
|
|
{
|
|
"id": "F256",
|
|
"description": "Allow portal contacts to reply to tickets.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Client portal ticketing"
|
|
]
|
|
},
|
|
{
|
|
"id": "F257",
|
|
"description": "Preserve existing board visibility group enforcement.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Client portal ticketing"
|
|
]
|
|
},
|
|
{
|
|
"id": "F258",
|
|
"description": "Preserve portal ticket detail authorization.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Client portal ticketing"
|
|
]
|
|
},
|
|
{
|
|
"id": "F259",
|
|
"description": "Preserve portal ticket dashboard filtering by visible boards.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Client portal ticketing"
|
|
]
|
|
},
|
|
{
|
|
"id": "F260",
|
|
"description": "Prevent portal ticket pages from linking to billing or project pages.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Client portal ticketing"
|
|
]
|
|
},
|
|
{
|
|
"id": "F261",
|
|
"description": "Keep PSA portal ticket behavior unchanged for PSA tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Client portal ticketing"
|
|
]
|
|
},
|
|
{
|
|
"id": "F262",
|
|
"description": "Render focused Email Channels settings for AlgaDesk tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Email-to-ticket"
|
|
]
|
|
},
|
|
{
|
|
"id": "F263",
|
|
"description": "Allow inbound support mailbox/channel configuration.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Email-to-ticket"
|
|
]
|
|
},
|
|
{
|
|
"id": "F264",
|
|
"description": "Allow outbound ticket email identity configuration required for replies.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Email-to-ticket"
|
|
]
|
|
},
|
|
{
|
|
"id": "F265",
|
|
"description": "Allow mapping inbound channel to default board.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Email-to-ticket"
|
|
]
|
|
},
|
|
{
|
|
"id": "F266",
|
|
"description": "Allow mapping inbound channel to default category.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Email-to-ticket"
|
|
]
|
|
},
|
|
{
|
|
"id": "F267",
|
|
"description": "Allow mapping inbound channel to default priority.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Email-to-ticket"
|
|
]
|
|
},
|
|
{
|
|
"id": "F268",
|
|
"description": "Allow inbound channel enable/disable.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Email-to-ticket"
|
|
]
|
|
},
|
|
{
|
|
"id": "F269",
|
|
"description": "Show mailbox connection health.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Email-to-ticket"
|
|
]
|
|
},
|
|
{
|
|
"id": "F270",
|
|
"description": "Show webhook or polling health where available.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Email-to-ticket"
|
|
]
|
|
},
|
|
{
|
|
"id": "F271",
|
|
"description": "Show outbound delivery failure state where available.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Email-to-ticket"
|
|
]
|
|
},
|
|
{
|
|
"id": "F272",
|
|
"description": "Create a ticket from a new inbound email message.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Email-to-ticket"
|
|
]
|
|
},
|
|
{
|
|
"id": "F273",
|
|
"description": "Assign inbound email-created ticket to mapped board.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Email-to-ticket"
|
|
]
|
|
},
|
|
{
|
|
"id": "F274",
|
|
"description": "Assign inbound email-created ticket to mapped category when configured.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Email-to-ticket"
|
|
]
|
|
},
|
|
{
|
|
"id": "F275",
|
|
"description": "Assign inbound email-created ticket to mapped priority when configured.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Email-to-ticket"
|
|
]
|
|
},
|
|
{
|
|
"id": "F276",
|
|
"description": "Resolve inbound sender to an existing contact when possible.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Email-to-ticket"
|
|
]
|
|
},
|
|
{
|
|
"id": "F277",
|
|
"description": "Create or handle unknown inbound senders according to existing support rules.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Email-to-ticket"
|
|
]
|
|
},
|
|
{
|
|
"id": "F278",
|
|
"description": "Add a public ticket comment from an inbound reply.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Email-to-ticket"
|
|
]
|
|
},
|
|
{
|
|
"id": "F279",
|
|
"description": "Preserve email thread identifiers for dedupe.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Email-to-ticket"
|
|
]
|
|
},
|
|
{
|
|
"id": "F280",
|
|
"description": "Prevent duplicate tickets/comments from repeated email events.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Email-to-ticket"
|
|
]
|
|
},
|
|
{
|
|
"id": "F281",
|
|
"description": "Send outbound notification when MSP replies publicly if notifications are enabled.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Email-to-ticket"
|
|
]
|
|
},
|
|
{
|
|
"id": "F282",
|
|
"description": "Show email thread or delivery context on ticket detail.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Email-to-ticket"
|
|
]
|
|
},
|
|
{
|
|
"id": "F283",
|
|
"description": "Product-gate inbound webhook handlers for AlgaDesk and PSA appropriately.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Email-to-ticket"
|
|
]
|
|
},
|
|
{
|
|
"id": "F284",
|
|
"description": "Product-gate IMAP polling paths for AlgaDesk and PSA appropriately.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Email-to-ticket"
|
|
]
|
|
},
|
|
{
|
|
"id": "F285",
|
|
"description": "Product-gate email OAuth/config routes for allowed email channel use.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Email-to-ticket"
|
|
]
|
|
},
|
|
{
|
|
"id": "F286",
|
|
"description": "Hide broad integrations settings unrelated to email channels.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Email-to-ticket"
|
|
]
|
|
},
|
|
{
|
|
"id": "F287",
|
|
"description": "Hide workflow-driven email automation surfaces for AlgaDesk tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Email-to-ticket"
|
|
]
|
|
},
|
|
{
|
|
"id": "F288",
|
|
"description": "Hide survey/billing/project email template surfaces for AlgaDesk tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Email-to-ticket"
|
|
]
|
|
},
|
|
{
|
|
"id": "F289",
|
|
"description": "Create a reusable branded product-denied or upgrade boundary component.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Browser route boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F290",
|
|
"description": "Use registry-backed boundary helpers in MSP pages.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Browser route boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F291",
|
|
"description": "Use registry-backed boundary helpers in portal pages.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Browser route boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F292",
|
|
"description": "Show upgrade boundary for AlgaDesk direct hits to /msp/billing.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Browser route boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F293",
|
|
"description": "Show upgrade boundary for AlgaDesk direct hits to /msp/projects.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Browser route boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F294",
|
|
"description": "Show upgrade boundary for AlgaDesk direct hits to /msp/assets.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Browser route boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F295",
|
|
"description": "Show upgrade boundary for AlgaDesk direct hits to /msp/schedule.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Browser route boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F296",
|
|
"description": "Show upgrade boundary for AlgaDesk direct hits to /msp/technician-dispatch.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Browser route boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F297",
|
|
"description": "Show upgrade boundary for AlgaDesk direct hits to /msp/time-entry.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Browser route boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F298",
|
|
"description": "Show upgrade boundary for AlgaDesk direct hits to /msp/time-sheet-approvals.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Browser route boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F299",
|
|
"description": "Show upgrade boundary for AlgaDesk direct hits to /msp/workflow-editor.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Browser route boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F300",
|
|
"description": "Show upgrade boundary for AlgaDesk direct hits to /msp/workflow-control.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Browser route boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F301",
|
|
"description": "Show upgrade boundary for AlgaDesk direct hits to /msp/surveys.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Browser route boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F302",
|
|
"description": "Show upgrade boundary for AlgaDesk direct hits to /msp/extensions.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Browser route boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F303",
|
|
"description": "Show upgrade boundary for AlgaDesk direct hits to /msp/reports.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Browser route boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F304",
|
|
"description": "Show upgrade boundary for AlgaDesk direct hits to /msp/service-requests.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Browser route boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F305",
|
|
"description": "Return not-found/product-denied for AlgaDesk direct hits to internal/test routes.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Browser route boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F306",
|
|
"description": "Show portal upgrade/not-found boundary for excluded portal billing/projects/devices/documents/appointments/service-request routes.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Browser route boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F307",
|
|
"description": "Keep PSA direct route behavior unchanged.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Browser route boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F308",
|
|
"description": "Add product access check to ApiBaseController after tenant resolution.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"API and metadata boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F309",
|
|
"description": "Return structured product-denied response for denied AlgaDesk API groups.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"API and metadata boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F310",
|
|
"description": "Allow AlgaDesk API access to ticket CRUD routes.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"API and metadata boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F311",
|
|
"description": "Allow AlgaDesk API access to ticket comment routes.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"API and metadata boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F312",
|
|
"description": "Allow AlgaDesk API access to ticket assignment routes.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"API and metadata boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F313",
|
|
"description": "Allow AlgaDesk API access to ticket attachment/document routes.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"API and metadata boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F314",
|
|
"description": "Allow AlgaDesk API access to boards routes.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"API and metadata boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F315",
|
|
"description": "Allow AlgaDesk API access to statuses routes.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"API and metadata boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F316",
|
|
"description": "Allow AlgaDesk API access to priorities routes.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"API and metadata boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F317",
|
|
"description": "Allow AlgaDesk API access to ticket categories routes.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"API and metadata boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F318",
|
|
"description": "Allow AlgaDesk API access to clients routes.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"API and metadata boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F319",
|
|
"description": "Allow AlgaDesk API access to contacts routes.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"API and metadata boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F320",
|
|
"description": "Allow AlgaDesk API access to users/teams/roles/permissions needed for admin and assignment.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"API and metadata boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F321",
|
|
"description": "Allow AlgaDesk API access to tags routes.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"API and metadata boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F322",
|
|
"description": "Allow AlgaDesk API access to KB article routes.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"API and metadata boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F323",
|
|
"description": "Allow AlgaDesk API access to email-to-ticket configuration and webhook paths.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"API and metadata boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F324",
|
|
"description": "Deny AlgaDesk API access to billing analytics, financial, invoices, quotes, contracts, contract lines, services, service types, products, and accounting exports.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"API and metadata boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F325",
|
|
"description": "Deny AlgaDesk API access to projects routes.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"API and metadata boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F326",
|
|
"description": "Deny AlgaDesk API access to assets and RMM routes.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"API and metadata boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F327",
|
|
"description": "Deny AlgaDesk API access to schedules, time entries, time sheets, and time periods.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"API and metadata boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F328",
|
|
"description": "Deny AlgaDesk API access to automation/workflow/webhook routes outside allowed email.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"API and metadata boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F329",
|
|
"description": "Deny AlgaDesk API access to extensions routes.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"API and metadata boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F330",
|
|
"description": "Deny AlgaDesk API access to AI/chat routes.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"API and metadata boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F331",
|
|
"description": "Deny AlgaDesk API access to surveys routes.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"API and metadata boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F332",
|
|
"description": "Deny AlgaDesk API access to full document-management routes.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"API and metadata boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F333",
|
|
"description": "Filter API endpoint metadata for AlgaDesk tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"API and metadata boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F334",
|
|
"description": "Filter OpenAPI output for AlgaDesk tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"API and metadata boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F335",
|
|
"description": "Filter API docs output for AlgaDesk tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"API and metadata boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F336",
|
|
"description": "Keep PSA API behavior unchanged for PSA tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"API and metadata boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F337",
|
|
"description": "Add product assertions to representative billing server actions.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Server action boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F338",
|
|
"description": "Add product assertions to representative project server actions.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Server action boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F339",
|
|
"description": "Add product assertions to representative scheduling/time server actions.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Server action boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F340",
|
|
"description": "Add product assertions to representative asset/RMM server actions.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Server action boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F341",
|
|
"description": "Add product assertions to representative workflow server actions.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Server action boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F342",
|
|
"description": "Add product assertions to representative survey server actions.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Server action boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F343",
|
|
"description": "Add product assertions to representative extension server actions.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Server action boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F344",
|
|
"description": "Add product assertions to representative AI/chat server actions.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Server action boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F345",
|
|
"description": "Add product assertions to full document-management server actions that are not ticket attachment or KB safe.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Server action boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F346",
|
|
"description": "Avoid importing denied server action modules from AlgaDesk composition.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Server action boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F347",
|
|
"description": "Use structured ProductAccessError for denied server actions.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Server action boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F348",
|
|
"description": "Keep PSA server action behavior unchanged.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Server action boundaries"
|
|
]
|
|
},
|
|
{
|
|
"id": "F349",
|
|
"description": "Preserve existing PSA dashboard for PSA tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"PSA preservation and future aliases"
|
|
]
|
|
},
|
|
{
|
|
"id": "F350",
|
|
"description": "Preserve existing PSA settings for PSA tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"PSA preservation and future aliases"
|
|
]
|
|
},
|
|
{
|
|
"id": "F351",
|
|
"description": "Preserve existing PSA ticket composition for PSA tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"PSA preservation and future aliases"
|
|
]
|
|
},
|
|
{
|
|
"id": "F352",
|
|
"description": "Preserve existing PSA client/contact composition for PSA tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"PSA preservation and future aliases"
|
|
]
|
|
},
|
|
{
|
|
"id": "F353",
|
|
"description": "Preserve existing PSA portal composition for PSA tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"PSA preservation and future aliases"
|
|
]
|
|
},
|
|
{
|
|
"id": "F354",
|
|
"description": "Preserve existing PSA API metadata for PSA tenants.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"PSA preservation and future aliases"
|
|
]
|
|
},
|
|
{
|
|
"id": "F355",
|
|
"description": "Keep route registry capable of mapping future /desk aliases.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"PSA preservation and future aliases"
|
|
]
|
|
},
|
|
{
|
|
"id": "F356",
|
|
"description": "Do not require /desk aliases for initial AlgaDesk launch.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"PSA preservation and future aliases"
|
|
]
|
|
}
|
|
] |