DMS is a module for creating, managing and viewing document files directly within Odoo. This module is only the basis for an entire ecosystem of apps that extend and seamlessly integrate with the document management system.
This module adds portal functionality for directories and files for allowed users, both portal or internal users. You can get as well a tokenized link from a directory or a file for sharing it with any anonymous user.
auto_awesome What this module does
AI-generated from the code · Odoo 19.0Lets users create and organise documents in storages, directories, files, categories and tags inside Odoo, with per-directory access groups, portal sharing and tokenised links for anonymous users.
This module turns Odoo into a document management system. Users work with storages, directories (folders), files, categories and tags, and can star favourite directories.
- Files and directories are organised in a tree; each directory shows counts of subdirectories, files, total elements and total size, plus a readable size.
- Access is controlled by record access groups: each group grants create, write and delete rights, can inherit rights from a parent group, and is linked to Odoo user groups or explicit users. Directories can inherit the groups of their parent.
- Files can be linked to a record of another model (for example a customer or project) through the storage's linked models, and are then tied to that record.
- Incoming emails can be turned into files or subdirectories through a mail alias on a directory.
- Files can be moved with a move wizard, shared with a share wizard, and shared through portal URLs or tokenised links that also work for anonymous visitors.
- A configuration screen sets a maximum binary size and a list of forbidden file extensions; file names, extensions and sizes are checked.
- Deleting a business record also removes the files and directories linked to it.
- Onboarding steps guide the setup of storage, directory and file, tracked on the company.
It touches dms.storage, dms.directory, dms.file, dms.category, dms.tag, dms.access.group, ir.attachment, res.company and res.config.settings.
Depends on
Required by other modules
Menus it adds
Models and fields (17)
- base · extends an existing model
- dms.tag · new modelname, color (Color Index), active, file_ids (Files), category_id (Category), count_files, directory_ids (Directories), count_directories
- dms.file · new modelsize, active (Archived), res_id (Linked attachments record ID), content, tag_ids (Tags), checksum (Checksum/SHA1), mimetype (Type), extension, is_locked (Locked), locked_by, migration (Migration Status), path_json, res_model (Linked attachments model), save_type (Current Save Type), human_size (Size (human readable)), image_1920, path_names, storage_id, content_file, directory_id (Directory), attachment_id (Attachment File), content_binary, is_lock_editor (Editor), require_migration, root_directory_id
- dms.storage · new modelname, model, is_hidden (Storage is Hidden), model_ids (Linked Models), save_type, company_id (Company), storage_file_ids (Files), root_directory_ids (Root Directories), count_storage_files (Count Files), storage_directory_ids (Directories), count_storage_directories (Count Directories), include_message_attachments (Create files from message attachments), inherit_access_from_parent_record (Inherit permissions from related record)
- res.company · extends an existing modeldocuments_onboarding_state, documents_onboarding_file_state, documents_onboarding_storage_state, documents_onboarding_directory_state
- dms.category · new modelname, active, tag_ids (Tags), file_ids (Files), parent_id (Parent Category), count_tags, count_files, parent_path, complete_name, directory_ids (Directories), count_categories (Count Subcategories), count_directories, child_category_ids (Child Categories)
- dms.directory · new modelsize, starred, tag_ids (Tags), file_ids (Files), model_id (Model), group_ids (Groups), parent_id (Parent Directory), human_size (Size (human readable)), storage_id (Storage), count_files (Count Files Title), parent_path, alias_process (Unpack Emails as), complete_name, user_star_ids (Stars), count_elements, allowed_model_ids, count_directories (Count Subdirectories Title), count_files_title (Count Files), count_total_files (Total Files), inherit_group_ids (Inherit Groups), is_root_directory, root_directory_id, complete_group_ids (Complete Groups), child_directory_ids (Subdirectories), count_total_elements (Total Elements), storage_id_save_type, count_directories_title (Count Subdirectories), count_total_directories (Total Subdirectories), storage_id_inherit_access_from_parent_record
- ir.attachment · extends an existing model
- dms.access.group · new modelname (Group Name), users (Group Users), group_ids (Groups), perm_write (Write Access), count_users, parent_path, perm_create (Create Access), perm_unlink (Unlink Access), directory_ids (Directories), child_group_ids (Child Groups), parent_group_id (Parent Group), count_directories, explicit_user_ids (Explicit Users), perm_inclusive_write (Inherited Write Access), perm_inclusive_create (Inherited Create Access), perm_inclusive_unlink (Inherited Unlink Access), complete_directory_ids (Complete directories)
- wizard.dms.share · new model
- abstract.dms.mixin · new modelname, color, is_hidden (Storage is Hidden), company_id (Company), storage_id (Storage), category_id (Category), storage_id_save_type
- dms.security.mixin · new modelres_id (Linked attachments record ID), res_model (Linked attachments model), record_ref (Record Referenced), permission_read (Read Access), permission_write (Write Access), permission_create (Create Access), permission_unlink (Delete Access)
- res.config.settings · extends an existing modeldocuments_binary_max_size (Size), documents_forbidden_extensions (Extensions)
- dms.mixins.thumbnail · new modelicon_url (Icon URL)
- wizard.dms.file.move · new modelcount_files, directory_id (Directory)
- onboarding.onboarding · extends an existing model
- onboarding.onboarding.step · extends an existing model
Text generated by AI (DeepSeek) from reading the Odoo 19.0 code on GitHub; it may contain mistakes, so check the code before deciding. The module is very large and only part of the code was read. View the code on GitHub
Availability by version
Reviewed: 2026-11-03Confirmation status: 8 confirmed, 1 with no information of 9 versions.
Sources · Odoo 18.0
Confirmed on 2026-11-03 in branch 18.0 of OCA/dms.
terminal Installation and usage
OCA documentation · Odoo 19.0Installation
Source · Odoo 19.0Preview
python-magic library is recommended to be installed for having whole support to get proper file types and file preview.
Configuration
Source · Odoo 19.0Configuration
To configure this module, you need to:
- Create a storage
- Go to Documents -\> Configuration -\> Storages.
- Create a new document storage. You can choose between three options on
Save Type: Database: Store the files on the database as a fieldAttachment: Store the files as attachmentsFile: Store the files on the file system- Create an access group
- Next, create an administrative access group. Go to Configuration -\> Access Groups.
- Create a new group, name it appropriately, and turn on all three permissions (Create, Write and Unlink. Read is implied and always enabled).
- Add any other top-level administrative users to the group if needed (your user should already be there).
- You can create other groups in here later for fine-grained access control.
- Create a directory
- Afterward, go to Documents -\> Directories.
- Create a new directory, mark it as root and select the previously created setting.
- Select the Groups tab and add your administrative group created above. If your directory was already created before the group, you can also add it in the access groups (Configuration -\> Access Groups).
- In the directory settings, you can also add other access groups (created above) that will be able to:
- read
- create
- write
- delete
Migration
If you need to modify the storage Save Type you might want to migrate the file data. To achieve it, you need to:
- Go to Documents -\> Configuration -\> Storage and select the storage you want to modify
- Modify the save type
- Press the button Migrate files if you want to migrate all the files at once
- Press the button Manual File Migration to specify files one by one
You can check all the files that still need to be migrated from all storages and migrate them manually on Documents -\> Configuration -\> Migration
File Wizard Selection
There is an action called action_dms_file_wizard_selector to open a wizard to list files in kanban view. This can be used (example dms_attachment_link module) to add a button in kanban view with the action we need.
Usage
Source · Odoo 19.0The best way to manage the documents is to switch to the Documents view. Existing documents can be managed there and new documents can be created.
Portal functionality
You can add any portal user to DMS access groups, and then allow that group in directories, so they will see in the portal such directories and their files. Another possibility is to click on "Share" button inside a directory or a file for obtaining a tokenized link for single access to that resource, no matter if logged or not.
Installation instructions, the distribution package, dependencies and configuration steps are not shown because they have not yet been verified in the module documentation for any version.
Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.