Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Approvals
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Property Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
      • Get a Tailored Demo
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +32 2 290 34 90
    • Get a Tailored Demo
  • Pricing
  • Help
  1. APPS
  2. Employees
  3. EH HR Document v 17.0
  4. Sales Conditions FAQ

EH HR Document

by ERP Heritage https://erpheritage.com.au
Odoo
v 17.0 Third Party 20
Download for v 17.0 Deploy on Odoo.sh
Apps purchases are linked to your Odoo account, please sign in or sign up first.
Versions 16.0 17.0 18.0 19.0
You bought this module and need support? Click here!
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Employees (hr)
• Discuss (mail)
Community Apps Dependencies Show
• EH HR Compatibility
• EH HR Platform Core
Lines of code 1065
Technical Name eh_hr_document
LicenseLGPL-3
Websitehttps://erpheritage.com.au
Versions 16.0 17.0 18.0 19.0
ERP Heritage · HR Platform
ERP Heritage / EH HR Platform

EH HR Document

Employee documents with a live expiry status and a daily chatter reminder, on the same audited HR platform.

Free · LGPL-3Odoo 17 CommunityLGPL-3v1.0.0
Document register
Live expiry status
Daily expiry cron
Hash-chained audit
Multi-company scoped

Why this module

EH HR Document

Always current

Status that never goes stale

Valid, expiring and expired are computed live from the expiry date and today, not stored, so the status stays right as the clock advances with no nightly refresh to trust.

Tamper-evident

Every change on the audit chain

Adding, editing or deleting a document writes a row to an append-only, hash-chained log you can verify on demand, so you can show who changed which document and when.

Company-safe

Records locked to their company

Each document carries a required company, and cross-company writes are refused even under sudo unless an explicit, audited override is set, so one company never edits another's records by accident.

Day in the life

A visa that does not lapse unnoticed

You record an employee's visa with its expiry date. From that moment the document shows Valid, and once it falls inside thirty days it flips to Expiring soon, highlighted amber in the list. Each day the expiry cron finds it in the window and posts a note to the document's chatter naming the date it expires. The day after expiry it reads Expired and turns red. Every one of those record edits is on the hash-chained audit log, and the whole register is scoped to the company that owns the employee.

Edge cases

The cases most modules quietly ignore.

In the shipped code today, each one a place where a cheaper module silently does the wrong thing.

No expiry date

Documents left without an expiry date are treated as never-expiring: the status is No expiry and days-to-expiry is zero, and the daily cron skips them entirely rather than alerting on a blank date.

Advisory-locked audit

Audit rows are appended under a Postgres transaction-scoped advisory lock, so two concurrent edits cannot fork the hash chain; the lock releases automatically on commit or rollback.

Cross-company override

Moving a document to a company the user does not belong to is rejected, and even a permitted cross-company write emits a dedicated audit row recording the new company and every affected record id before it proceeds.

Self-auditing JSON

Relational and date values in the before/after snapshot are coerced identically for both the stored payload and the hash material, so recordsets and dates never break serialization or the integrity chain.

Read-only self-service

The employee self group can read documents but cannot create, edit or delete them; officers can create and edit but not delete; only HR admin can remove a record, and the delete is itself audited.

Cascade on leaver

Documents are linked to the employee with ondelete cascade, so removing an employee cleanly removes their document register without orphan rows, and each deletion is recorded in the audit log first.

What is inside

Built to do the job, end to end.

  • Models this module adds. One model, eh.hr.document, holding the title, employee, document type, official number, issue date, expiry date and the computed days-to-expiry and status fields.
  • Document types in the box. A fixed type list of Passport, Visa or permit, Licence, Contract, Certificate and Other, so the register stays tidy and reportable rather than free-text.
  • The expiry cron. A daily ir.cron runs _cron_check_expiry, which searches documents expiring within thirty days and posts a chatter note on each so the reminder lives on the record.
  • Platform foundations it stands on. Built on eh_hr_core and eh_hr_compat: the audited mixin for the hash-chained log and the company-aware mixin for strict multi-company scoping, plus standard Odoo hr and mail.thread chatter.
  • Access and placement. Three access tiers (admin, officer, employee self) and a Documents menu under Employee Requests gated to the HR Officer group.

Honest about the edges

What this does not do, so nothing surprises you.

  • The daily reminder is a note posted to the document chatter, not an outbound email or push notification; followers see it through standard Odoo chatter notifications.
  • The expiring window is fixed at thirty days in code and is not exposed as a configurable setting in this module.
  • There is no file upload or attachment field on the model itself beyond standard Odoo chatter attachments; it records document metadata and dates, not the scanned document as a managed field.
  • The status and days-to-expiry fields are computed and not stored, so they cannot be grouped or filtered on directly in the database without adding a stored field.
  • Document types are a fixed selection (passport, visa, licence, contract, certificate, other) and are not user-extendable from the interface.
  • This module targets Odoo 17 Community and depends on eh_hr_core and eh_hr_compat; it is not a standalone add-on.
Search

odoo employee document management, odoo document expiry tracking, odoo passport visa expiry alert, odoo hr document register, employee licence renewal reminder odoo, odoo 17 hr documents, odoo contract certificate tracking, odoo document expiry cron, hr document audit log odoo, multi company employee documents odoo

Work with ERP Heritage

Need this fitted to the way you work?

ERP Heritage delivers end to end Odoo work: Odoo Implementation, Customization and Development, Integration, Migration, Consultation, Support and Training. We help teams put this module into production, shape it to their process, and keep it running.

Build and tailor
Odoo Implementation, Customization and Development, scoped to your workflow.
Connect and move
Odoo Integration and Migration across systems and Odoo versions.
Run and support
Odoo Support and Training so your team stays productive after go live.
Plan and advise
Odoo Consultation and ERP Consulting, from discovery to roadmap.

We work with businesses across Australia (Melbourne, Sydney, Brisbane, Perth, Adelaide, Canberra) and the Middle East (Dubai, Abu Dhabi, Riyadh, Jeddah, Doha, Kuwait City, Muscat). Start a conversation at erpheritage.com.au or email info@erpheritage.com.au.

Languages

Available in 19 languages

The interface ships translated out of the box. Switch language in Odoo and the fields, menus, and messages follow.

ArabicChinese (Simplified)Chinese (Traditional)DutchFrenchGermanHindiIndonesianItalianJapaneseKoreanPolishPortuguese (Brazil)RussianSpanishSwedishThaiTurkishVietnamese
ERP Heritage

Production-grade Odoo HR, built to an engineering bar and documented honestly. Support: info@erpheritage.com.au
Developed by Odoo Implementation Australia • LinkedIn

v1.0.0 · LGPL-3 · Odoo 17 Community

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author, please use the developer contact information. They can usually be found in the description.
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with