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
1227 lines
35 KiB
JSON
1227 lines
35 KiB
JSON
[
|
|
{
|
|
"id": "F001",
|
|
"description": "CE owns a new service-request host package or feature slice that defines the core domain types and public interfaces for portal service requests",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Summary",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F002",
|
|
"description": "CE defines a `ServiceRequestExecutionProvider` interface for pluggable submission execution behavior",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Data / API / Integrations",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F003",
|
|
"description": "CE defines a `ServiceRequestFormBehaviorProvider` interface for pluggable form behavior",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Data / API / Integrations",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F004",
|
|
"description": "CE defines a `ServiceRequestVisibilityProvider` interface for pluggable visibility evaluation",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Data / API / Integrations",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F005",
|
|
"description": "CE defines a `ServiceRequestTemplateProvider` interface for starter template registration",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Data / API / Integrations",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F006",
|
|
"description": "CE optionally defines a `ServiceRequestAdminExtensionProvider` interface for provider-specific authoring panels",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Data / API / Integrations",
|
|
"UX / UI Notes"
|
|
]
|
|
},
|
|
{
|
|
"id": "F007",
|
|
"description": "CE ships a built-in `ticket-only` execution provider",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Summary",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F008",
|
|
"description": "CE ships a built-in `basic` form-behavior provider",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Summary",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F009",
|
|
"description": "CE ships a built-in `all-authenticated-client-users` visibility provider",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Security / Permissions",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F010",
|
|
"description": "CE ships at least one starter template pack that creates normal editable service request drafts",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Summary",
|
|
"Users and Primary Flows"
|
|
]
|
|
},
|
|
{
|
|
"id": "F011",
|
|
"description": "Service-request entrypoints resolve providers by key through registries instead of hard-coded enterprise branching",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Non-functional Requirements",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F012",
|
|
"description": "EE can register additional providers through a single enterprise entrypoint without changing CE table shapes",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Summary",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F013",
|
|
"description": "The feature remains coherent and buildable in CE when EE provider registrations are absent",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Non-functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F014",
|
|
"description": "Migration creates a tenant-owned `service_request_definitions` table for mutable draft definitions",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F015",
|
|
"description": "Definitions store portal-facing metadata including name, description, icon, and sort order",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"UX / UI Notes"
|
|
]
|
|
},
|
|
{
|
|
"id": "F016",
|
|
"description": "Definitions store an optional category reference used for portal grouping",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"UX / UI Notes"
|
|
]
|
|
},
|
|
{
|
|
"id": "F017",
|
|
"description": "Definitions store an optional `linked_service_id` reference to `service_catalog`",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F018",
|
|
"description": "Definitions store provider keys for execution, form behavior, and visibility",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F019",
|
|
"description": "Definitions store provider config blobs for execution, form behavior, and visibility",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F020",
|
|
"description": "Definitions track draft, published, and archived lifecycle state",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F021",
|
|
"description": "Definitions track created-by, updated-by, and publish-related audit timestamps needed for normal product behavior",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F022",
|
|
"description": "Migration creates an immutable `service_request_definition_versions` table",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F023",
|
|
"description": "Published versions snapshot portal metadata from the source definition",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F024",
|
|
"description": "Published versions snapshot form schema and field presentation from the source definition",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F025",
|
|
"description": "Published versions snapshot provider keys and provider config from the source definition",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F026",
|
|
"description": "Version numbers increment monotonically per definition as new publishes occur",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F027",
|
|
"description": "Publishing records the user and timestamp responsible for a given version",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F028",
|
|
"description": "Definitions can create a new mutable draft based on the currently published version without mutating historical versions",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"reviewNotes": [
|
|
"Reviewed 2026-03-29: resolved by transitioning published definitions into draft mode on first edit while the portal continues serving the latest published version snapshot."
|
|
],
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Users and Primary Flows"
|
|
]
|
|
},
|
|
{
|
|
"id": "F029",
|
|
"description": "Migration creates a tenant-owned `service_request_submissions` table for durable intake records",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F030",
|
|
"description": "Submissions store the definition id and version id used when the request was submitted",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F031",
|
|
"description": "Submissions store tenant, client, contact, and requester user ownership fields",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Security / Permissions",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F032",
|
|
"description": "Submissions store the normalized submitted payload captured from the published definition snapshot",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F033",
|
|
"description": "Submissions store execution status and a concise execution error summary when downstream startup fails",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Observability"
|
|
]
|
|
},
|
|
{
|
|
"id": "F034",
|
|
"description": "Submissions store `created_ticket_id` when a ticket-backed provider succeeds",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F035",
|
|
"description": "Submissions store `workflow_execution_id` or equivalent workflow reference when a workflow-backed provider succeeds",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F036",
|
|
"description": "Submissions store created and updated timestamps for request-history presentation",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Data / API / Integrations",
|
|
"Users and Primary Flows"
|
|
]
|
|
},
|
|
{
|
|
"id": "F037",
|
|
"description": "Migration creates a `service_request_submission_attachments` table or equivalent attachment linkage structure",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F038",
|
|
"description": "Attachment rows link a submission to persisted file or document storage references",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Data / API / Integrations",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F039",
|
|
"description": "Archiving a definition preserves its versions and historical submissions",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Rollout / Migration"
|
|
]
|
|
},
|
|
{
|
|
"id": "F040",
|
|
"description": "Historical submissions remain readable even when linked service-catalog or category records later change names",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F041",
|
|
"description": "MSP admins can navigate to a new Service Requests management area",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Users and Primary Flows",
|
|
"UX / UI Notes"
|
|
]
|
|
},
|
|
{
|
|
"id": "F042",
|
|
"description": "The Service Requests list shows draft, published, and archived definitions",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Users and Primary Flows",
|
|
"UX / UI Notes"
|
|
]
|
|
},
|
|
{
|
|
"id": "F043",
|
|
"description": "The Service Requests list supports creating a blank definition",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Users and Primary Flows"
|
|
]
|
|
},
|
|
{
|
|
"id": "F044",
|
|
"description": "The Service Requests list supports creating a definition from a template",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Users and Primary Flows"
|
|
]
|
|
},
|
|
{
|
|
"id": "F045",
|
|
"description": "Admins can duplicate an existing definition into a new draft",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Users and Primary Flows",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F046",
|
|
"description": "Admins can archive and unarchive definitions from the management surface",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"UX / UI Notes"
|
|
]
|
|
},
|
|
{
|
|
"id": "F047",
|
|
"description": "The editor has a basics section for name, description, icon, category, and sort order",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"reviewNotes": [
|
|
"Reviewed 2026-03-29: resolved by editable basics controls plus a dedicated server action for name, description, icon, category, and sort order."
|
|
],
|
|
"prdRefs": [
|
|
"UX / UI Notes",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F048",
|
|
"description": "The editor has a linkage section for optional service-catalog association",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"UX / UI Notes",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F049",
|
|
"description": "The editor has a form-authoring section for the request form",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"reviewNotes": [
|
|
"Reviewed 2026-03-29: resolved by inline form-authoring controls wired through MSP actions for add/update/remove/reorder."
|
|
],
|
|
"prdRefs": [
|
|
"UX / UI Notes",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F050",
|
|
"description": "The editor has an execution section driven by the selected execution provider",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"reviewNotes": [
|
|
"Reviewed 2026-03-29: resolved by provider-driven execution authoring, including ticket routing, workflow settings, form-behavior config, and visibility config."
|
|
],
|
|
"prdRefs": [
|
|
"UX / UI Notes",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F051",
|
|
"description": "The editor has a publish section that distinguishes current draft state from the last published version",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"UX / UI Notes",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F052",
|
|
"description": "Admins can save an incomplete draft without making it visible in the portal",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Users and Primary Flows",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F053",
|
|
"description": "Admins can preview the portal-facing service card before publishing",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"reviewNotes": [
|
|
"Reviewed 2026-03-29: resolved by the shared service card preview, which now renders icon metadata visually instead of leaking the raw icon slug."
|
|
],
|
|
"prdRefs": [
|
|
"UX / UI Notes"
|
|
]
|
|
},
|
|
{
|
|
"id": "F054",
|
|
"description": "Admins can preview the rendered request form before publishing",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"reviewNotes": [
|
|
"Reviewed 2026-03-29: resolved by the disabled rendered-form preview in the editor that mirrors the field schema."
|
|
],
|
|
"prdRefs": [
|
|
"UX / UI Notes",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F055",
|
|
"description": "Publishing validates the full definition and blocks publication when required configuration is missing or invalid",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Acceptance Criteria (Definition of Done)"
|
|
]
|
|
},
|
|
{
|
|
"id": "F056",
|
|
"description": "Publishing creates a new immutable version rather than editing the prior published state in place",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F057",
|
|
"description": "Template instantiation creates a normal editable draft that is detached from the template source after creation",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Summary",
|
|
"Users and Primary Flows"
|
|
]
|
|
},
|
|
{
|
|
"id": "F058",
|
|
"description": "CE starter templates are presented as optional shortcuts rather than a required setup path",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Summary",
|
|
"UX / UI Notes"
|
|
]
|
|
},
|
|
{
|
|
"id": "F059",
|
|
"description": "Admins can view submissions scoped to a specific definition from the management experience",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Users and Primary Flows",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F060",
|
|
"description": "Admins can open a submission detail view showing requester identity, submitted values, and downstream execution references",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Users and Primary Flows",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F061",
|
|
"description": "The CE basic form builder supports a short-text field type",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"UX / UI Notes"
|
|
]
|
|
},
|
|
{
|
|
"id": "F062",
|
|
"description": "The CE basic form builder supports a long-text field type",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"UX / UI Notes"
|
|
]
|
|
},
|
|
{
|
|
"id": "F063",
|
|
"description": "The CE basic form builder supports a dropdown/select field type",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"UX / UI Notes"
|
|
]
|
|
},
|
|
{
|
|
"id": "F064",
|
|
"description": "The CE basic form builder supports a checkbox field type",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"UX / UI Notes"
|
|
]
|
|
},
|
|
{
|
|
"id": "F065",
|
|
"description": "The CE basic form builder supports a date field type",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"UX / UI Notes"
|
|
]
|
|
},
|
|
{
|
|
"id": "F066",
|
|
"description": "The CE basic form builder supports a file-upload field type",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"UX / UI Notes"
|
|
]
|
|
},
|
|
{
|
|
"id": "F067",
|
|
"description": "Field configuration supports label and help text for each field",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"UX / UI Notes"
|
|
]
|
|
},
|
|
{
|
|
"id": "F068",
|
|
"description": "Field configuration supports marking fields as required",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F069",
|
|
"description": "Field configuration supports static default values for supported field types",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F070",
|
|
"description": "Select fields support admin-authored option lists",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F071",
|
|
"description": "Admins can add new fields to the form builder",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"reviewNotes": [
|
|
"Reviewed 2026-03-29: resolved by add-field editor controls and server actions that call the basic form builder helpers."
|
|
],
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Users and Primary Flows"
|
|
]
|
|
},
|
|
{
|
|
"id": "F072",
|
|
"description": "Admins can remove fields from the form builder",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"reviewNotes": [
|
|
"Reviewed 2026-03-29: resolved by remove-field controls in the editor backed by removeServiceRequestFormFieldAction."
|
|
],
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Users and Primary Flows"
|
|
]
|
|
},
|
|
{
|
|
"id": "F073",
|
|
"description": "Admins can reorder fields in the form builder",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"reviewNotes": [
|
|
"Reviewed 2026-03-29: resolved by move-up/move-down editor controls backed by reorderServiceRequestFormFieldsAction."
|
|
],
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Users and Primary Flows"
|
|
]
|
|
},
|
|
{
|
|
"id": "F074",
|
|
"description": "Generated field keys remain stable across reorder and presentation-only edits",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Data / API / Integrations",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F075",
|
|
"description": "Publish validation rejects duplicate or invalid field keys in the basic builder",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Security / Permissions"
|
|
]
|
|
},
|
|
{
|
|
"id": "F076",
|
|
"description": "The basic builder stores a neutral schema representation on the draft definition",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Data / API / Integrations",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F077",
|
|
"description": "The published version stores the immutable form snapshot derived from the draft definition",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Data / API / Integrations",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F078",
|
|
"description": "The portal client shows a first-class `Request Services` navigation item",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Users and Primary Flows",
|
|
"UX / UI Notes"
|
|
]
|
|
},
|
|
{
|
|
"id": "F079",
|
|
"description": "The Request Services landing page shows only published definitions",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Users and Primary Flows",
|
|
"Security / Permissions"
|
|
]
|
|
},
|
|
{
|
|
"id": "F080",
|
|
"description": "The Request Services landing page groups definitions by category when categories are configured",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"UX / UI Notes",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F081",
|
|
"description": "The Request Services landing page evaluates visibility rules before listing a definition to a portal user",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Security / Permissions",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F082",
|
|
"description": "Service cards display icon, title, and short description from the published definition",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"reviewNotes": [
|
|
"Reviewed 2026-03-29: resolved by shared icon rendering in the portal catalog and request detail header, so published icon metadata is shown visually instead of as raw slug text."
|
|
],
|
|
"prdRefs": [
|
|
"UX / UI Notes",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F083",
|
|
"description": "Opening a service card navigates to a request detail page for the published definition",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Users and Primary Flows",
|
|
"UX / UI Notes"
|
|
]
|
|
},
|
|
{
|
|
"id": "F084",
|
|
"description": "The request detail page renders the form from the immutable published version snapshot rather than from the mutable draft",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F085",
|
|
"description": "Static default values are applied when the portal request form first renders",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Users and Primary Flows"
|
|
]
|
|
},
|
|
{
|
|
"id": "F086",
|
|
"description": "Portal users can provide file uploads for definitions that include file-upload fields",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Security / Permissions"
|
|
]
|
|
},
|
|
{
|
|
"id": "F087",
|
|
"description": "Submit-time validation enforces required-field rules against the published version snapshot",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Security / Permissions"
|
|
]
|
|
},
|
|
{
|
|
"id": "F088",
|
|
"description": "Submit-time validation rejects direct portal submissions to definitions that are not currently visible to the requesting user",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Security / Permissions",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F089",
|
|
"description": "Submitting a request persists a durable submission row before provider execution begins",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F090",
|
|
"description": "Successful submission shows a confirmation state containing a stable request identifier",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Users and Primary Flows",
|
|
"UX / UI Notes"
|
|
]
|
|
},
|
|
{
|
|
"id": "F091",
|
|
"description": "Portal users can view a My Requests list scoped to their client ownership",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Users and Primary Flows",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F092",
|
|
"description": "The My Requests list shows request name, submission time, and current submission status",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"UX / UI Notes",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F093",
|
|
"description": "Portal users can open a request-detail page for one of their own submissions",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Users and Primary Flows",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F094",
|
|
"description": "Submission details render the submitted answers using the field presentation from the version snapshot",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"reviewNotes": [
|
|
"Reviewed 2026-03-29: resolved by snapshot-aware submission detail rendering for select labels, checkbox values, and file-upload answers backed by attachment field mapping."
|
|
],
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F095",
|
|
"description": "Submission details show uploaded attachment references when the submission included file uploads",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Security / Permissions"
|
|
]
|
|
},
|
|
{
|
|
"id": "F096",
|
|
"description": "Portal users cannot list or open submissions that belong to a different client/contact context",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Security / Permissions",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F097",
|
|
"description": "The `ticket-only` execution provider is selectable in the editor without requiring any EE code",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Summary",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F098",
|
|
"description": "The `ticket-only` provider lets admins configure default ticket routing values needed by the existing portal ticket creation path",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"reviewNotes": [
|
|
"Reviewed 2026-03-29: resolved by the ticket-routing configuration panel in the editor for board/status/priority/category/subcategory/assignment/title mapping."
|
|
],
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F099",
|
|
"description": "The `ticket-only` provider maps request payload values into ticket title and ticket description/notes content",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F100",
|
|
"description": "The `ticket-only` provider uses the existing client-portal contact/client resolution model instead of inventing a parallel access model",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Data / API / Integrations",
|
|
"Security / Permissions"
|
|
]
|
|
},
|
|
{
|
|
"id": "F101",
|
|
"description": "The `ticket-only` provider writes the created ticket id back onto the submission when ticket creation succeeds",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F102",
|
|
"description": "The `ticket-only` provider marks the submission with execution failure while keeping the submission persisted when ticket creation fails",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Observability"
|
|
]
|
|
},
|
|
{
|
|
"id": "F103",
|
|
"description": "Confirmation and request-history views expose a linked ticket reference when a ticket-backed submission succeeds",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"reviewNotes": [
|
|
"Reviewed 2026-03-29: resolved by linking ticket-backed confirmation and request-history detail states to the existing client-portal ticket detail route."
|
|
],
|
|
"prdRefs": [
|
|
"Users and Primary Flows",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F104",
|
|
"description": "Definitions can be published successfully without any linked service-catalog item",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F105",
|
|
"description": "The linked-service picker reuses existing service-catalog search patterns rather than introducing a second catalog-search model",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Data / API / Integrations",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F106",
|
|
"description": "The editor shows the selected linked-service record clearly enough for admins to confirm what commercial service is associated",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"UX / UI Notes",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F107",
|
|
"description": "Publish validation rejects linked-service references that no longer resolve to a valid service-catalog row",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Security / Permissions",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F108",
|
|
"description": "Templates may prefill a linked service and ticket-mapping defaults while remaining fully editable before publish",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"reviewNotes": [
|
|
"Reviewed 2026-03-29: resolved by aligning starter-template execution defaults with ticket-only runtime support, including template-based titles and optional suppression of form-response description output."
|
|
],
|
|
"prdRefs": [
|
|
"Users and Primary Flows",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F109",
|
|
"description": "EE registers a `workflow-only` execution provider through the enterprise provider entrypoint",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F110",
|
|
"description": "EE registers a `ticket-plus-workflow` execution provider through the enterprise provider entrypoint",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F111",
|
|
"description": "Workflow-backed provider configuration lets admins choose the workflow to run for a definition",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Users and Primary Flows"
|
|
]
|
|
},
|
|
{
|
|
"id": "F112",
|
|
"description": "Workflow-backed provider configuration lets admins map request submission data into workflow inputs",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F113",
|
|
"description": "The `ticket-plus-workflow` provider can pass the created ticket id into workflow inputs alongside the submitted request data",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F114",
|
|
"description": "Successful workflow-backed execution writes the resulting workflow reference back onto the submission record",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F115",
|
|
"description": "Workflow startup failures leave the submission persisted and marked with execution failure",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Observability"
|
|
]
|
|
},
|
|
{
|
|
"id": "F116",
|
|
"description": "Portal request-history views can surface workflow references when the selected provider creates them",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Users and Primary Flows",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F117",
|
|
"description": "EE registers an advanced form-behavior provider through the enterprise provider entrypoint",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F118",
|
|
"description": "The advanced form-behavior provider supports conditional show/hide rules for fields",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"UX / UI Notes"
|
|
]
|
|
},
|
|
{
|
|
"id": "F119",
|
|
"description": "The advanced form-behavior provider supports requester, client, or context-aware default values",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Requirements > Functional Requirements",
|
|
"Users and Primary Flows"
|
|
]
|
|
},
|
|
{
|
|
"id": "F120",
|
|
"description": "Publish validation rejects invalid conditional-logic configuration in advanced form mode",
|
|
"implemented": true,
|
|
"reviewed": true,
|
|
"prdRefs": [
|
|
"Security / Permissions",
|
|
"Requirements > Functional Requirements"
|
|
]
|
|
}
|
|
]
|