Document Management
Secure, S3-backed file storage for employee compliance documents - with HR-controlled verification workflows, visibility controls, and strict tenant isolation.
Prerequisites
From Core HR:
- β Active employees - documents are always linked to a specific employee
- β S3 storage configured - backend environment must have S3 bucket credentials set up (ask your system administrator)
π€ Role-Based Access
| Action | SUPER_ADMIN | HR_ADMIN | EMPLOYEE |
|---|---|---|---|
| Create / edit document types | β | β | β |
| Delete document types | β | β | β |
| Upload documents (for any employee) | β | β | Own only |
| View HR_ONLY documents | β | β | β |
| View EMPLOYEE_VISIBLE documents | β | β | β (own) |
| Verify documents | β | β | β |
| Reject documents | β | β | β |
| Download documents | β | β | β (own, if EMPLOYEE_VISIBLE) |
| Delete documents | β | β | β |
Admin Workflow
Step 1 - Configure Document Types
Document types define what kinds of files can be uploaded and whether HR approval is required.
Navigate to: Settings β Organization β Document Types β Add Document Type
| Field | Description | Example |
|---|---|---|
| Name | Document category name | Passport |
| Description | Guidance for employees | Colour copy of government-issued passport |
| Requires Verification | If true, uploaded docs stay PENDING until HR approves | β |
| Employee Can Edit | If true, employees can replace/update their upload | false (for official contracts) |
Common document types to configure:
| Document | Requires Verification | Employee Can Edit |
|---|---|---|
| Aadhaar Card | β | β |
| PAN Card | β | β |
| Passport | β | β |
| Signed Employment Contract | β | β |
| Educational Certificate | β | β |
| Bank Account Details | β | β |
| Address Proof | β | β |
Step 2 - Review & Verify Documents
When employees upload documents that require verification, they appear in the HR queue.
Navigate to: HR Portal β Pending Verifications
For each document:
- Check the document number and expiry date
- Preview the file
- Click Verify (with optional notes) β status moves to
VERIFIED - Click Reject (with a reason) β status moves to
REJECTEDand the employee is notified to re-upload
Employee Workflow
Step 1 - Upload a Document
Navigate to: My Profile β Documents Tab β Upload Document
The upload uses a direct-to-S3 flow for efficiency:
1. You click Upload β the system generates a secure S3 upload URL2. Your file is sent directly to S3 storage (not through the backend server)3. The backend registers the file metadata (name, size, type, expiry)Fill in the upload form:
| Field | Description | Example |
|---|---|---|
| Document Type | Select from available types | Passport |
| File | PDF, JPG, or PNG only | passport_scan.pdf |
| Document Number | Passport/ID number | A1234567 |
| Expiry Date | When the document expires | 2031-05-15 |
| Visibility | EMPLOYEE_VISIBLE or HR_ONLY | EMPLOYEE_VISIBLE |
File constraints:
- β Accepted formats: PDF, JPG, PNG
- β Maximum file size: 10 MB
- β Word documents, Excel files, and other formats are rejected
Step 2 - Check Document Status
Navigate to: My Profile β Documents Tab
| Status | Meaning |
|---|---|
PENDING | Uploaded; waiting for HR verification |
VERIFIED | Approved by HR |
REJECTED | Rejected; re-upload required |
If your document is rejected, youβll see the rejection reason. Upload a corrected version.
Step 3 - Download Your Document
Navigate to: My Profile β Documents Tab β click document β Download
The system generates a temporary secure download link (presigned S3 GET URL). The link is valid for a limited time - download immediately.
Visibility Controls
| Visibility Setting | Who Can See It |
|---|---|
EMPLOYEE_VISIBLE | The employee, HR_ADMIN, and SUPER_ADMIN |
HR_ONLY | HR_ADMIN and SUPER_ADMIN only - hidden from the employeeβs portal |
Use HR_ONLY for sensitive documents like background check reports, disciplinary notices, or internal performance notes.
Tenant Isolation & Security
Every document operation is scoped to your organizationβs tenant ID. This means:
- Employees from Company A cannot access documents belonging to Company B
- Even if someone guesses a valid document UUID, cross-tenant access returns
404 Document not found - S3 keys are structured as
tenants/{tenantId}/employees/{employeeId}/docs/{filename}to enforce physical storage separation
Common Troubleshooting
| Problem | Solution |
|---|---|
| File upload rejected - βinvalid file typeβ | Only PDF, JPG, and PNG are accepted |
| File upload rejected - βfile too largeβ | Maximum is 10 MB; compress your file |
| Document stuck in PENDING for a long time | Contact HR to review the Pending Verifications queue |
| Document shows REJECTED | Check the rejection reason; re-upload a corrected version |
| Cannot see a document I uploaded | HR may have set it as HR_ONLY after upload |
| Download link expired | Generate a new download link by clicking Download again |