Document Management (DMS)¶
Last Updated: February 2026
The Document Management System (DMS) stores, organizes, and shares company files directly inside Odoo. It replaces scattered file shares and email attachments with a centralized, permission-controlled document library accessible to every department.
Target Audience: All Employees, Managers, HR, System Administrators
Installed Modules:
| Module | Purpose |
|---|---|
| DMS (core) | Storages, directories, files, tags, access groups, portal sharing |
| DMS Attachment Link | Attach DMS files to any Odoo record via the chatter |
| HR Employee Document | View and manage documents on employee profiles |
Navigation¶
Open the Documents app from the main Odoo dashboard, or use the top menu bar:
Documents
├── Files (all files you have access to)
├── Directories (folder structure)
└── Configuration
├── General Settings (upload limits, forbidden extensions)
├── Organizing
│ ├── Tags (color-coded labels)
│ └── Categories (hierarchical groupings)
└── System (Managers only)
├── Storages (where files are physically saved)
├── Migration (file storage migration tool)
└── Access Groups (permission sets)
Menu Visibility
The Documents menu is only visible to users with the DMS User security group. Configuration > System items require DMS Manager.
Key Concepts¶
Before diving in, understand these five building blocks:
- Storages — The backend that holds file data (database, file system, or linked to Odoo attachments). Every directory belongs to exactly one storage.
- Directories — Folders organized in a hierarchy. Directories inherit access rules from their parents and hold both files and subdirectories.
- Files — Individual documents with metadata, tags, version tracking, and locking support.
- Access Groups — Named permission sets that control who can read, create, edit, or delete files in a directory.
- Tags & Categories — Organizational labels. Categories group related tags (e.g., category "Department" with tags "HR", "Sales", "Operations").
Storages¶
A storage defines where file data is physically saved. You typically create one storage per use case (e.g., "Company Documents", "Employee Files").
Storage Fields¶
| Field | Description | Example |
|---|---|---|
| Name | Display name for the storage | "Company Documents" |
| Save Type | How files are stored (see below) | Database |
| Company | Restricts storage to a specific company | Scott Recycling |
| Is Hidden | Hides storage from non-manager users | False |
| Root Directories | Top-level directories in this storage | HR, Operations, Sales |
Save Types¶
| Type | How It Works | Best For |
|---|---|---|
| Database | Files stored as binary data in PostgreSQL | General documents — simplest setup, included in database backups automatically |
| File | Files stored on the server's file system | Large file collections — reduces database size |
| Attachment | Links to Odoo's built-in attachment system | Records that already use attachments (e.g., auto-creating directories for sales orders) |
Which Save Type to Use
For most company document storage, Database is the simplest and most reliable choice. Files are backed up with the database and require no extra server configuration. Use File only if you expect very large volumes that would bloat the database.
Attachment Storage — Special Options¶
When save type is set to Attachment, two additional options appear:
| Field | Description |
|---|---|
| Inherit Access from Parent Record | File permissions follow the linked Odoo record's access rules instead of DMS access groups |
| Include Message Attachments | Automatically create DMS files from attachments posted in the chatter |
| Models | Which Odoo models this storage applies to (e.g., Sale Order, Purchase Order) |
Directories¶
Directories are the folder structure inside a storage. They can be nested to any depth.
Directory Fields¶
| Field | Description | Example |
|---|---|---|
| Name | Folder name | "HR Documents" |
| Is Root Directory | True for top-level folders (directly under a storage) | True |
| Storage | Which storage this directory belongs to (set automatically for non-root) | "Company Documents" |
| Parent Directory | Parent folder (required for non-root directories) | "HR Documents" |
| Category | Optional category for classification | "Department Files" |
| Tags | Color-coded labels | "Confidential", "2026" |
| Access Groups | Which groups control access to this directory | "HR Team", "All Employees Read" |
| Inherit Groups | Whether to inherit parent directory's access groups | True |
Directory Hierarchy¶
Directories form a tree:
Storage: Company Documents
├── HR Documents (root directory)
│ ├── Policies (child directory — inherits HR access groups)
│ ├── Benefits (child directory)
│ └── Employee Files (child directory)
├── Operations (root directory)
│ ├── SOPs (child directory)
│ └── Safety (child directory)
└── Sales (root directory)
├── Proposals (child directory)
└── Contracts (child directory)
Directory Features¶
Starring — Click the star icon on any directory to add it to your favorites. Use the "Starred Directories" filter to quickly find them.
Email Alias — Directories can have an email alias (e.g., hr-docs@yourdomain.com). Emails sent to the alias automatically create files from the attachments. The Alias Process setting controls behavior:
| Setting | Behavior |
|---|---|
| Files | Email attachments become files in this directory |
| Directory | A new subdirectory is created, and attachments go inside it |
Stat Buttons — The directory form shows counts for subdirectories and files. Click either button to jump to the full list.
Files¶
Files are the actual documents stored in the DMS.
File Fields¶
| Field | Description | Example |
|---|---|---|
| Name | File name (including extension) | "Employee_Handbook_2026.pdf" |
| Directory | Which folder this file lives in | "HR Documents / Policies" |
| Content | The file data (upload via the content field) | (binary) |
| Extension | Auto-detected file extension | ".pdf" |
| MIME Type | Auto-detected file type | "application/pdf" |
| Size | File size (auto-calculated) | "2.4 MB" |
| Category | Optional category | "Policy Documents" |
| Tags | Color-coded labels | "Current", "All-Staff" |
| Locked By | User who locked the file (if any) | "Dan Smith" |
Uploading Files¶
- Navigate to Documents > Files
- Click New (or use the Upload button in kanban view)
- Select the target Directory
- Click the content field to upload your file
- Add tags and category as needed
- Click Save
File Locking¶
Locking prevents other users from editing a file while you're working on it.
| Action | How | What Happens |
|---|---|---|
| Lock | Click Lock button on the file form (or from the kanban dropdown) | File shows a "Locked" ribbon; only you can edit or upload a new version |
| Unlock | Click Unlock button | Lock is released; anyone with write access can edit again |
Lock Behavior
Locking only prevents edits — other users can still read and download a locked file. Only the user who locked the file (or a manager) can unlock it.
Archiving Files¶
Files can be archived (soft-deleted) rather than permanently removed:
- Archive: From the file form or kanban dropdown, select Archive. The file is hidden from default views but still exists.
- Restore: Use the Archived Files filter in the search bar, open the file, and click Unarchive.
Moving Files¶
To move files to a different directory:
- Select one or more files in the list/kanban view
- Use Action > Move Files from the toolbar
- Select the target directory
- Confirm the move
Moving Files Changes Permissions
When you move files, they inherit the access groups of the new directory. Users who could access the file before may lose access, and new users may gain access.
Access Groups¶
Access groups are the permission system for DMS. They control who can do what with files and directories.
Access Group Fields¶
| Field | Description | Example |
|---|---|---|
| Name | Group name (must be unique) | "HR Team — Full Access" |
| Parent Group | Inherit permissions from a parent group | "All Employees — Read" |
| Create | Members can create new files/subdirectories | True |
| Write | Members can edit existing files | True |
| Unlink | Members can delete files | False |
| Groups | Link to Odoo security groups (all users in those groups gain access) | "Human Resources / Officer" |
| Explicit Users | Individual users added directly | "Dan Smith", "Jane Doe" |
Read Access Is Always Granted
Every access group grants read access by default. The checkboxes control create, write, and delete permissions on top of read.
Permission Inheritance¶
Access groups support a hierarchy:
All Employees — Read Only
└── HR Team — Full Access (inherits read, adds create/write/unlink)
└── HR Managers — Delete (inherits everything, adds unlink)
When a child group has a parent:
- All users from the parent group are automatically included
- Permissions are additive — if the parent grants create, the child also has create even without its own checkbox
Linking Groups to Directories¶
- Open a Directory record
- Go to the Groups tab
- Add the access group(s) that should have access
Child directories with Inherit Groups enabled automatically get their parent's groups. Disable this to set independent permissions on a subdirectory.
Portal & Sharing¶
Portal Access¶
External portal users can access DMS documents at the /my/dms URL if they are added to a DMS access group linked to a directory.
To grant portal access:
- Add the portal user to a DMS access group (via the Explicit Users field)
- Assign that access group to the directories they should see
- The portal user will see their documents at My Account > Documents
Sharing Links¶
The Share wizard generates tokenized links that can be sent to anyone — even users without an Odoo account.
- Open a file or directory
- Click Action > Share (DMS Manager required)
- The wizard generates a unique URL with an access token
- Send the link to the recipient
Share Links Are Read-Only
Shared links provide download access only. Recipients cannot edit or delete files through a share link.
Employee Documents¶
The HR Employee Document module connects DMS to employee records, making it easy to store and find employee-related files (contracts, certifications, ID copies, etc.).
How It Works¶
- Each employee record gets a Documents stat button showing the count of attached files
- Click the stat button to see all documents for that employee
- Documents are stored as standard Odoo attachments linked to the employee record
For Employees¶
- Employees can view their own documents through the public employee view
- The stat button only appears when viewing your own record
- Self-service access — no need to ask HR for copies of your documents
For HR¶
- HR Officers and Managers see the Documents stat button on all employee records
- Click the stat button to view, upload, or manage documents for any employee
- Use the attachment search to find specific documents across employees
Attachment Linking¶
The DMS Attachment Link module bridges the DMS with Odoo's standard attachment system (the chatter).
Adding DMS Files to Records¶
On any record with a chatter (sales orders, contacts, etc.):
- Look for the Add DMS File button next to the standard file upload button in the chatter
- Click it to open the DMS file selector (kanban view)
- Browse or search for the file you want to attach
- Click Add on the file card
- The DMS file is linked as an attachment on the record
How It Works Internally¶
- The attachment links to the DMS file — it doesn't duplicate the data
- Downloading the attachment retrieves the content from the DMS file
- If the DMS file is updated, the attachment reflects the latest version
- Deleting the attachment does not delete the DMS file (and vice versa)
Configuration¶
General Settings¶
Navigate to Documents > Configuration > General Settings (or Settings app > Documents):
| Setting | Description | Default |
|---|---|---|
| Maximum Upload Size | Max file size in MB. Files larger than this are rejected. | 25 MB |
| Forbidden Extensions | Comma-separated list of blocked file types | (none) |
Recommended Forbidden Extensions
Consider blocking executable file types to prevent security risks: exe,msi,bat,cmd,ps1,vbs,js,wsf,scr
Creating a Storage¶
- Go to Documents > Configuration > System > Storages
- Click New
- Enter a Name (e.g., "Company Documents")
- Set Save Type to Database (recommended for most use cases)
- Click Save
Creating an Access Group¶
- Go to Documents > Configuration > System > Access Groups
- Click New
- Enter a Name (e.g., "All Employees — Read Only")
- Set permission checkboxes (Create, Write, Unlink) as needed
- In the Groups tab, add Odoo security groups whose members should have access
- Optionally add individual users in the Explicit Users tab
- Click Save
Setting Up Directory Structure¶
- Go to Documents > Directories
- Click New
- Check Is Root Directory
- Select the Storage you created
- Enter a Name (e.g., "HR Documents")
- In the Groups tab, add the appropriate access groups
- Click Save
- To create subdirectories, click New again, leave "Is Root Directory" unchecked, and select the parent directory
Common Tasks¶
Setting Up DMS for the First Time (Admin)¶
- Create a storage: Documents > Configuration > System > Storages > New. Name it "Company Documents", save type "Database". Save.
- Create access groups:
- "All Employees — Read Only" — no create/write/unlink checkboxes, add the "Internal User" Odoo group
- "Department Managers — Full Access" — check create and write, add relevant manager groups
- "Admin — Full Control" — check all permissions, add yourself
- Create the root directory structure:
- "HR Documents" — root, assign "All Employees — Read Only" + "HR Team — Full Access"
- "Operations" — root, assign "All Employees — Read Only" + "Department Managers"
- "Sales" — root, assign "Sales Team" groups
- Create subdirectories under each root as needed (Policies, SOPs, Contracts, etc.)
- Upload initial documents into the appropriate directories
Uploading a Document¶
- Go to Documents > Files
- Click New
- Select the target Directory from the dropdown
- Click the Content field and select your file
- Add Tags for easy searching (optional but recommended)
- Click Save
Sharing a File with an External User¶
- Open the file you want to share
- Click Action > Share (requires DMS Manager permission)
- The wizard generates a unique link
- Copy the link and send it to the recipient via email
Finding Documents¶
Use the powerful search and filter tools on the Files view:
- Search bar — Type a filename to search
- Filters — "My Files" shows only files you created; "Archived Files" shows soft-deleted files
- Group By — Organize results by directory, category, storage, or color
- Search Panel — The left sidebar shows the directory tree and categories for quick navigation; click any directory to filter to its contents
- Date Filters — Filter by creation or modification date
Managing Employee Documents¶
- Open the Employees app and select an employee
- Click the Documents stat button (visible to HR Officers/Managers, or to the employee viewing their own record)
- To upload: click Upload in the attachment view and select the file
- Documents are automatically linked to the employee record and respect HR access rules
Tips¶
Use Tags Consistently
Establish a tagging convention early. For example, use year tags ("2025", "2026"), status tags ("Current", "Archived", "Draft"), and department tags. Consistent tagging makes searching much easier as your document library grows.
Set Up Categories Before Directories
Create your category hierarchy first (e.g., "Policies", "Contracts", "Certifications"), then assign categories to directories and files. This gives you a second axis for organizing beyond the folder structure.
Use Access Group Inheritance
Instead of creating separate access groups for every directory, use a hierarchy. Create a base "All Employees — Read" group, then create child groups like "HR — Full Access" that inherit from it. This reduces maintenance overhead.
Star Your Frequently Used Directories
Click the star icon on directories you access daily. Use the "Starred Directories" filter to jump straight to them without navigating the full tree.
Lock Before Editing
If you're downloading a file to edit it locally (e.g., a Word document), lock it first to prevent someone else from uploading a conflicting version while you work.
Security¶
Security Groups¶
| Group | Access Level | Who Has It |
|---|---|---|
| DMS User | View all non-hidden files and directories. Full CRUD on files, directories, tags, categories, and own access groups. | All internal users (inherits from Internal User) |
| DMS Manager | Everything DMS User has, plus: manage storages, access hidden storages, manage all access groups (not just own), share files via wizard. | Administrators |
| Portal User | Read-only access to files/directories they've been explicitly granted access to via access groups. | External portal users |
Record Rules¶
| Rule | Effect |
|---|---|
| Multi-Company | Users only see storages, directories, and files belonging to their company (or company-agnostic records) |
| File Locking | Only the user who locked a file can modify it; all others get read-only access to locked files |
| Hidden Storage | Storages marked "Is Hidden" are only visible to DMS Managers |
| Access Group Ownership | DMS Users can only edit/delete access groups they created; Managers can edit all |
| Computed Permissions | Read/create/write/delete access on individual directories and files is controlled by the access groups assigned to each directory |
External Resources¶
- OCA DMS on GitHub — Source code, issues, and contributions
- OCA DMS Module Page — Official OCA module listing