| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Employees (hr) |
| Community Apps Dependencies | Show |
| Lines of code | 2615 |
| Technical Name |
wt_hrms_documents |
| License | OPL-1 |
| Website | https://way4tech.com |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Employees (hr) |
| Community Apps Dependencies | Show |
| Lines of code | 2615 |
| Technical Name |
wt_hrms_documents |
| License | OPL-1 |
| Website | https://way4tech.com |
WT HRMS Documents — Employee Document Vault with Expiry Alerts
Centralised employee document storage with auto-expiry tracking, daily cron, scheduled activity reminders, configurable alert windows per document type, and 8 pre-seeded common document types.
employee documents · document expiry · cnic tracking · passport expiry · visa expiry · document vault · hr compliance · expiry reminder · Odoo 19 · Odoo 18 · community edition · enterprise alternative · open hrms · HR software · HR automation · way4tech
Live Preview
A real screenshot from a working WT HRMS install on Odoo 19.
The Problem This Solves
Most companies discover an employee's passport, visa, or work permit has expired only when the employee tries to travel or renew it. By then, you have a problem.
Documents scattered everywhere
Some on Google Drive, some in HR's email, some in a folder on a shared drive, some on the employee's laptop. Nothing central, nothing searchable.
Expiry surprises = fines
Expired work permits can mean five-figure fines and an employee who can't legally work. Vanilla Odoo gives you no expiry calendar at all.
No onboarding checklist link
You can never tell which new joiner is missing which mandatory document, so HR audits become spreadsheets that go stale within a week.
The Solution — One Vault, Auto-Watching Expiries
Every employee document in one model, with type-driven expiry rules. A daily cron creates Odoo activity reminders before documents expire, so HR has time to act.
- ✓ Document type registry with code, expiry flag, alert-days, onboarding-required flag
- ✓ 8 pre-seeded types — CNIC/National ID, Passport, Driving License, Degree, Experience Letter, Offer Letter, Visa, Medical
- ✓ Per-document attachments — many2many on ir.attachment, scan as many copies as you need
- ✓ Auto state — Valid / Expiring Soon / Expired computed live from expiry_date
- ✓ Color-coded list — danger red for expired, warning amber for expiring, normal for valid
- ✓ Daily cron HRMS: Check Document Expiry running every 24h, alert window read from each document type
- ✓ Auto-creates Odoo activity on the document with a To-Do, deadline = expiry date, summary + note pre-filled
- ✓ De-duplicated — cron skips if a To-Do already exists, so reminders never spam
- ✓ Quick filters — Expiring Soon, Expired, group by Employee/Type/Status
- ✓ Documents tab on the employee form — see all docs in one place per person
- ✓ Mail thread + activity mixin — full audit on every document, follow-ups, mentions
- ✓ Multi-company aware — company_id field, default from env.company
Visa: 60d · Medical: 30d
License: 30d
Step-by-Step User Guide
Install
Apps → install WT HRMS Documents. It depends on WT HRMS Core, which is auto-installed if missing.
Review document types
WT HRMS → Configuration → Document Types. Eight types ship preloaded. Tweak alert_days or mark types as required for onboarding.
Add documents
Open any employee form → Documents tab, or use WT HRMS → Documents directly. Upload scans, set issue + expiry dates.
Watch the dashboard
List view colours expired records red and expiring records amber. Use search filter Expiring Soon or Expired for quick triage.
Cron does the rest
Daily cron HRMS: Check Document Expiry creates a To-Do activity on every document inside its alert window. The activity shows in the Activities widget for the assignee.
Renew, repeat
When the employee renews, edit the document, push out the expiry date, attach the new scan. The state flips back to Valid automatically.
Every Feature That Matters
Document Type Registry
Code, name, has_expiry flag, alert_days, required_for_onboarding flag, optional notes — all editable per company.
8 Pre-Seeded Types
CNIC, Passport, Driving License, Degree, Experience Letter, Offer Letter, Visa/Work Permit, Medical Certificate — ready on Day 1.
Auto-Computed State
Valid / Expiring Soon (within 30 days of today) / Expired — recomputed any time expiry_date changes.
Per-Type Alert Window
Each document type controls its own alert_days. Visa = 60 days, license = 30, passport = 90 — you decide.
Daily Cron
HRMS: Check Document Expiry runs every 24 hours, scans all documents with expiry, creates activities only for those inside the alert window.
No-Spam Reminders
Cron checks for an existing To-Do activity before creating one — never duplicates, never spams the Activities widget.
Color-Coded List
Decoration-danger on expired, decoration-warning on expiring — HR sees red rows from across the room.
Many2Many Attachments
Multiple scans/files per document — original front, original back, renewed copy, all on the same record.
Mail Thread & Activities
Inherits mail.thread + mail.activity.mixin. Full audit, internal notes, log entries on every state change to expiry_date.
Employee Form Tab
"Documents" tab on hr.employee shows the entire collection per person, in chronological-by-expiry order.
Department Filter
Stored related field department_id from employee — filter and group expiry reports by department.
HR Group Permissions
HR Officer can create/edit; HR Manager can delete and manage types. Standard Odoo HR groups, no extra setup.
Compatibility & Requirements
| Odoo Edition | Community & Enterprise |
| Odoo Version | 19.0 |
| Dependencies | wt_hrms_core (which depends on hr, mail, hr_contract) |
| Python Packages | None — Python stdlib only |
| External Services | None — runs entirely inside your Odoo instance |
About Waqas Riasat & Way4Tech
We build Odoo modules that fix real business pain — not nice-to-have features. Every WT HRMS module is hand-tested on a fresh Odoo 19 install before being published.
way4tech.com · info@way4tech.com
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module