Employment Hero Documents Sync
Pull Employment Hero documents into the Odoo Documents app, filed under one folder, tuned as data.
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 Sync
Idempotent by external id
Every document is keyed by its Employment Hero id through a cross reference table with a unique constraint. Re running the job updates in place, and a payload whose hash is unchanged is skipped, so a repeated run never creates a second copy.
Mapping ships as data
The folder, endpoint, field mapping and sync job are shipped as data records you edit from the user interface. Adjust source paths to match your organisation's payload shape without a code deployment or an upgrade overwriting your change.
Every run is audited
Each sync run records created, updated, skipped and failed counts plus duration, and a per record line for errors. One bad document is logged and isolated while the rest of the run continues, ending in a partial state rather than aborting.
Day in the life
A document landing in Odoo
The scheduled run fetches the document list from Employment Hero one page at a time. Each item is mapped to a documents.document of type url, named from the payload and linked to its Employment Hero copy. The cross reference is checked by external id: a new id creates a document under the Employment Hero folder, a known id with a changed payload updates the existing one, and an unchanged payload is skipped. The run row closes with counts and duration, and any record that failed is left on its own error line for review.
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.
Re running the job, or re fetching the same page, never duplicates. Documents are keyed by Employment Hero id through a unique cross reference, and a payload whose hash matches the last sync is skipped as unchanged.
A fingerprint of the mapping is folded into the per record hash, so editing a source path or transformer forces a rewrite of existing documents on the next run instead of leaving them stale and skipped.
One document that fails to map or write is rolled back in its own savepoint and recorded as an error line; the rest of the page keeps processing and the run ends in a partial state.
The list is read page by page through the configured page style, stopping on a short or empty page. If a hard page cap is reached the run warns that results were truncated rather than dropping records silently.
The engine retries 5xx, timeouts and 429 with exponential backoff and jitter, honours a Retry-After header clamped to a safe ceiling, and spends one rate token per logical call so a retry does not add to a 429 storm.
HR platform calls use OAuth2 bearer auth with lazy token refresh, so a run that crosses a token expiry refreshes and continues without manual intervention.
Synced documents are filed by resolving the Employment Hero folder by name, so routing holds even if the payload does not carry a folder id, and a deployment can rename or move the folder without an upgrade overwriting it.
The cross reference is scoped per connection and carries the owning company, so two connections holding the same external id never cross bind to each other's document.
What is inside
Built to do the job, end to end.
- Documents folder. A documents.document of type folder named Employment Hero, shipped with noupdate so a deployment can rename or move it without an upgrade reverting the change. Synced documents are filed here.
- Document endpoint. A GET endpoint for the HR platform document list, with page style pagination, items read from a data.items envelope and a page size of 100, registered as data on the shared endpoint registry.
- Field mapping. A pull mapping for documents.document that sets name and link url from the payload, defaults the document type to url, and resolves the folder by name. Every line is tunable from the user interface.
- Sync job. A pull job wiring the endpoint and mapping together, keyed by the document id with an updated_at path for delta runs and an Employment Hero wins conflict policy. Flag it into the daily scheduler to keep documents current.
- Automated tests. A test suite drives the shipped mapping and job against a faked API and asserts the document is created, typed as a url and filed under the Employment Hero folder.
Honest about the edges
What this does not do, so nothing surprises you.
- Sync is one direction only, Employment Hero into Odoo. This module does not push documents from Odoo back to Employment Hero.
- Documents are stored as a link to the Employment Hero copy, type url. The module does not download or store the file binary in Odoo.
- There is no webhook or real time delivery for documents in this module. Updates arrive when the job runs, on the daily scheduler or on demand.
- The shipped job is not flagged into the scheduler by default. An administrator enables it once so the daily cron picks it up.
- The shipped mapping is a starting point. Source paths must be tuned to match your Employment Hero organisation's actual document payload before production use.
- Requires the Odoo Documents app and the Employment Hero connector and sync engine, declared as dependencies. A configured Employment Hero connection is needed to sync.
Employment Hero documents, Employment Hero Odoo integration, Odoo Documents app sync, HR document sync Odoo 18, Employment Hero connector, employee document integration, certification sync Odoo, idempotent sync engine, field mapping as data, scheduled document sync, Employment Hero HR platform, Odoo 18 Community HR
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 18 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 | 4091 |
| 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