Skip to main content

Document Management Architecture

Overview

Document management is implemented in com.axvero.ams.core.document/. It covers:

  • Master document lists (per workspace) maintained by admins
  • Template files uploaded by admins for each document type
  • Application type templates (pre-configured document lists for specific application types)
  • Application documents (actual documents submitted/tracked per application)

Core Entities

  • DocumentDefinition: A type of document (e.g. "Income Statement"). Belongs to a workspace. Has defaultRequired, category, allowCustomDocuments flags. Has a list of DocumentTemplate files.
  • DocumentTemplate: An admin-uploaded template file attached to a DocumentDefinition (e.g. a standard form). Has fileUrl, fileType, fileName.
  • ApplicationTemplate: An application type template created by admins. Has a name, description, applicationType tag, allowCustomDocuments, active flag. Contains a list of ApplicationTemplateDocument entries.
  • ApplicationTemplateDocument: Join between ApplicationTemplate and DocumentDefinition. Allows overriding the default required/optional status per template. Has sortOrder and instructions.
  • ApplicationDocument: An actual document submitted on a specific application. Has applicationId, optional documentDefinitionId (null = custom/ad-hoc document), status (ApplicationDocumentStatus enum), reviewNote, uploadedByUserId.
  • ApplicationDocumentStatus enum: PENDING, UPLOADED, APPROVED, REJECTED, NOT_APPLICABLE.

Relationships

  • DocumentDefinition 1-n DocumentTemplate (templates are uploaded files for the definition)
  • ApplicationTemplate 1-n ApplicationTemplateDocument → n-1 DocumentDefinition
  • Application 1-n ApplicationDocument (optional link to DocumentDefinition)

Permission Rules

  • Creating/updating DocumentDefinitions and ApplicationTemplates: requires OWNER, ADMIN, or MANAGER role on the workspace.
  • Viewing DocumentDefinitions / ApplicationTemplates: requires any workspace role (OWNER, ADMIN, MANAGER, MEMBER).
  • Submitting ApplicationDocuments: any authenticated user (clients and staff alike).
  • Reviewing ApplicationDocuments (reviewApplicationDocument): called by staff only (enforced at controller level).
  • Listing ApplicationDocuments (applicationDocuments): requires workspace role or client membership (hasUserAnyWorkspaceOrClientRole).

GraphQL API

All queries and mutations are defined in src/main/resources/graphql/documents.graphqls and documents-input.graphqls.

Workflow (typical)

  1. Admin creates DocumentDefinition records for the workspace (e.g. "Passport", "Tax Return")
  2. Admin optionally uploads DocumentTemplate files to each definition
  3. Admin creates ApplicationTemplate (e.g. "Tax Application 2026") and assigns definitions with required/optional overrides
  4. When staff creates an application, they select an ApplicationTemplate; the system knows which documents are expected
  5. Clients submit documents via submitApplicationDocument; staff review via reviewApplicationDocument