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,allowCustomDocumentsflags. Has a list ofDocumentTemplatefiles. - DocumentTemplate: An admin-uploaded template file attached to a
DocumentDefinition(e.g. a standard form). HasfileUrl,fileType,fileName. - ApplicationTemplate: An application type template created by admins. Has a name, description,
applicationTypetag,allowCustomDocuments,activeflag. Contains a list ofApplicationTemplateDocumententries. - ApplicationTemplateDocument: Join between
ApplicationTemplateandDocumentDefinition. Allows overriding the defaultrequired/optionalstatus per template. HassortOrderandinstructions. - ApplicationDocument: An actual document submitted on a specific application. Has
applicationId, optionaldocumentDefinitionId(null = custom/ad-hoc document),status(ApplicationDocumentStatusenum),reviewNote,uploadedByUserId. - ApplicationDocumentStatus enum:
PENDING,UPLOADED,APPROVED,REJECTED,NOT_APPLICABLE.
Relationships
DocumentDefinition1-nDocumentTemplate(templates are uploaded files for the definition)ApplicationTemplate1-nApplicationTemplateDocument→ n-1DocumentDefinitionApplication1-nApplicationDocument(optional link toDocumentDefinition)
Permission Rules
- Creating/updating DocumentDefinitions and ApplicationTemplates: requires
OWNER,ADMIN, orMANAGERrole 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)
- Admin creates
DocumentDefinitionrecords for the workspace (e.g. "Passport", "Tax Return") - Admin optionally uploads
DocumentTemplatefiles to each definition - Admin creates
ApplicationTemplate(e.g. "Tax Application 2026") and assigns definitions with required/optional overrides - When staff creates an application, they select an
ApplicationTemplate; the system knows which documents are expected - Clients submit documents via
submitApplicationDocument; staff review viareviewApplicationDocument