Employment Hero Documents
File Employment Hero documents straight into the Odoo Documents app, kept current by a tunable sync job.
Store price is USD 196 all-in: installing this also pulls the 3 paid ERP Heritage modules it depends on.
Why this module
Employment Hero Documents
Files live with the rest of your records
Employment Hero documents land in the Odoo Documents app under a single folder, so certifications and employee files sit where the rest of your operation already looks instead of in a separate portal.
Tune the mapping from the screen
The folder, endpoint, mapping and job ship as data with noupdate set, so you can rename the folder, adjust source paths or add mapping lines from the user interface and an upgrade will not overwrite your changes.
Re-running never duplicates
Every document is keyed to its Employment Hero id through a cross reference with a database uniqueness constraint, and an unchanged payload is skipped, so a job can run again and again without creating a second copy.
Day in the life
From the Employment Hero portal to the Documents app
An operator points the shipped job at the HR connection and runs it. The job pages through the organisation's documents one hundred at a time, creating each one as a link in the Odoo Documents app under the Employment Hero folder, named from the payload. A document seen before is matched by its external id and left alone when nothing changed, or refreshed in place when Employment Hero has newer values. One bad record is logged and the run carries on, ending with a count of created, updated, skipped and failed. Tick the job into the shared daily schedule and the same flow repeats unattended.
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.
Each document is linked to its Employment Hero id through a cross reference protected by a unique constraint on model, connection and external id, so re-running the job upserts in place and never creates a duplicate.
The mapped values plus a fingerprint of the mapping are hashed per record. An identical hash is skipped as unchanged, so a re-run touches only what actually moved, and editing the mapping forces a clean rewrite next run.
Every record is processed inside its own savepoint. A single failing document is rolled back and logged as an error line while the rest of the batch commits, and the run ends in a partial state rather than aborting everything.
The shipped endpoint pages through the documents list one hundred at a time using the platform page and size parameters, reading items from the data dot items envelope and stopping on a short or empty page.
Transient failures, timeouts and rate-limit responses are retried with exponential backoff and jitter, honouring a Retry-After header up to a safe cap, so a brief outage does not fail the whole run.
Calls draw on a cross-worker rate budget by default, so a multi-worker deployment honours one shared request rate against the platform instead of each worker spending its own.
Documents are filed by resolving the Employment Hero folder by name, with that name as the default, so routing holds even when the payload carries no folder of its own.
On update the job is set so Employment Hero wins, treating the platform as the authoritative copy, so a local edit to a synced document is overwritten by the next pull rather than diverging silently.
The HR connection uses OAuth2 with lazy, single-flight token refresh, so an expired access token is rotated safely under concurrent runs without two workers racing the refresh.
What is inside
Built to do the job, end to end.
- A destination folder. A dedicated Employment Hero folder in the Documents app, shipped with noupdate so you can rename or move it and an upgrade will not undo the change.
- A documents endpoint. A GET list endpoint for the organisation's documents, paging one hundred at a time and reading items from the data dot items envelope.
- A starter mapping. A pull mapping that fills the document name, sets the type to link, carries the Employment Hero url and routes the record into the Employment Hero folder, every line tunable as data.
- A runnable sync job. A pull job binding the endpoint, the mapping and the Documents model, keyed on the external id and the updated-at timestamp, with Employment Hero set as authoritative on conflict.
- The shared sync engine. Idempotent upsert, cross-reference tracking, per-record isolation, retry with backoff and audited runs all come from the underlying engine this module configures.
- Per-run audit. Each run records created, updated, skipped and failed counts plus per-record lines and any error messages, so you can see exactly what synced.
Honest about the edges
What this does not do, so nothing surprises you.
- Sync is one way only, pulling documents from Employment Hero into Odoo. It does not push Odoo documents back to the platform.
- Documents are stored as a link to the Employment Hero copy, not downloaded as binary file content into Odoo.
- The shipped job is set to pull the full list each run. Delta-only pulls and conflict precedence are engine features but are not configured for this job out of the box.
- The job is not enabled in the scheduled run on install. It runs on demand until you tick it into the shared daily schedule.
- Real-time webhook delivery is not part of this module. It depends on the HR connector and the Documents app only, not on the webhook module.
- The starter mapping assumes name, type, url and folder source paths. Adjust the source paths to match your own organisation's document payload shape.
- Requires a configured and authorised Employment Hero HR connection, the eh_hero_hr module and the Odoo Documents app.
Employment Hero documents, Employment Hero Odoo integration, Odoo Documents app sync, HR document management Odoo, employee certifications sync, Employment Hero connector, idempotent document upsert, field mapping without code, Employment Hero HR platform, Odoo 17 Community, people platform document sync, paginated API pull
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.
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.
Modules teams pair with this one.
Premium ERP Heritage modules that extend the same stack, each built to the same engineering bar.
The Canada country pack for the ERP Heritage Employment Hero integration
A dependency free asynchronous job queue that runs long running and fan out work out of band of the request that...
Post Irish payslips to the general ledger on the Irish chart of accounts
Interactive drag and drop Gantt planner for Odoo 17 Community project tasks with a deterministic server side sche...
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Documents (documents)
• Discuss (mail) • Employees (hr) |
| Community Apps Dependencies | Show |
| Lines of code | 4102 |
| Technical Name |
eh_hero_ent_documents |
| License | OPL-1 |
| Website | https://www.erpheritage.com.au/ |
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