| Versions | 16.0 17.0 18.0 19.0 |
Employment Hero Suite Enterprise
The complete Employment Hero integration plus the Enterprise overlays, in one install.
Store price is USD 627 all-in: installing this also pulls the 22 paid ERP Heritage modules it depends on.
Why this module
Employment Hero Suite Enterprise
One install, no overlay left out
The complete Community integration plus the work entries, planning, documents and Australian payroll overlays, so you never choose between them or discover one you needed was missing. Component prices stack once into the suite with no second bundle charge.
Idempotent sync that survives retries
Every record is keyed by its external id, so a re run never duplicates and an unchanged payload is skipped. One bad record is logged and isolated; the run ends partial rather than aborting the whole batch.
Verified webhooks, queued dispatch
Inbound deliveries are HMAC SHA-256 verified in constant time and deduplicated against replays at the database level, then run through a queue that retries with backoff and dead letters poison events instead of dropping them silently.
Day in the life
A roster change lands while nobody is watching
An employee record updates in Employment Hero and a webhook fires. The endpoint verifies the signature, rejects it if the secret does not match, and checks it has not seen this event id before. A valid, new delivery is recorded and queued, and the HTTP connection is acknowledged at once so delivery stays fast. The queue picks it up, fetches just that one changed record by its id rather than re paginating the whole endpoint, maps the fields, resolves the existing Odoo record through its external id, applies your conflict policy and writes the update. If the upstream call times out, the job backs off and retries; if it keeps failing it is parked for review rather than lost. The roster, the work entry and the document all flow through the same engine the same way.
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.
A redelivered event carrying the same external event id is rejected by a database unique constraint on (connection, event id), so a duplicate delivery is never processed twice.
Outbound writes carry an idempotency key reused across every attempt, so a retried create is recognised upstream and returns the first result instead of creating a second record.
One unmappable record is logged as an error line and the run continues to completion in a partial state, rather than one bad row aborting the whole sync.
On a 429 the client honours the Retry-After header, clamps a hostile or buggy value to a safe ceiling, and otherwise backs off exponentially with jitter; a token bucket throttles before the cap is reached.
A webhook fetches only the single changed record by its id, so the delivery and all its retries cost one request and never re pull the entire endpoint.
A job left running by a worker that died is reclaimed by a reaper past a configurable threshold and routed back through the normal retry path, capped by max retries.
OAuth2 tokens are stored encrypted at rest and refreshed lazily by the connection when expired, with a leeway window so calls do not fail on a token about to lapse.
Deliveries for one entity can run on an ordered channel so an update and a later delete are processed strictly in arrival order, never concurrently or out of sequence.
Reads paginate with a strategy chosen per endpoint (odata, page or cursor) and a delta cursor advances only past records that synced cleanly, so a failed row is re fetched next run.
What is inside
Built to do the job, end to end.
- Shared sync engine. One orchestrator drives every domain: fetch and paginate, map, resolve via external id, apply the conflict policy (Employment Hero wins, Odoo wins, or most recently changed wins), create or update, record a per record line, then advance the delta cursor. Pull, push and both way directions are supported, with a dry run mode that reports what would change without writing.
- Signed webhooks and job queue. A public endpoint verifies the HMAC SHA-256 signature in constant time, caps the body size, guards replays at the database level and acknowledges quickly, deferring the actual sync to a dependency free queue. The queue retries with exponential backoff, serialises ordered channels, heartbeats long jobs, reaps stuck ones and dead letters poison deliveries.
- Hardened API client. The HTTP client rate limits with a token bucket (per process or cross worker), retries only transient failures and 429s with backoff and jitter, honours and clamps Retry-After, attaches an idempotency key to writes, and logs each call. OAuth2 tokens are encrypted at rest with lazy refresh handled by the connection.
- Enterprise overlays. Work and roster data flow into the Odoo Work Entries app, rosters into Planning shifts and documents into the Documents app, all as data driven configuration you tune without code. An Australian variant adds the superannuation and single touch payroll endpoints and a country specific work entry mapping.
- Country payroll mappings. Country base plus ready to tune mapping variants for Australia, New Zealand, the United Kingdom, Singapore, Malaysia and Canada ship with the suite, so a deployment adjusts field paths and defaults for its jurisdiction instead of writing transformer code.
Honest about the edges
What this does not do, so nothing surprises you.
- Requires the matching Odoo Enterprise applications (Payroll, Planning, Documents) to be installed; the overlays target those apps and will not provide them.
- The targeted webhook path is inbound only: a webhook pulls the one changed record into Odoo and does not push back on that run. Two way push runs on scheduled or manual full sync jobs.
- Endpoints, field mappings and sync jobs ship as data you tune to your Employment Hero configuration; this is configuration on top of the engine, not a fixed turnkey mapping for every payroll setup.
- Conflict resolution is policy based per job (which side wins), not field level merge of simultaneous edits on the same record.
- You supply your own Employment Hero API credentials and configure the connection, webhook secret and rate group; the suite does not include an Employment Hero subscription.
- Country mappings cover Australia, New Zealand, the United Kingdom, Singapore, Malaysia and Canada; other jurisdictions need their own mapping configuration.
Employment Hero Odoo integration, Employment Hero connector, KeyPay Odoo sync, Employment Hero payroll sync, Odoo work entries integration, Odoo planning shifts sync, Odoo documents sync, HR employee sync Odoo, single touch payroll Odoo, superannuation Odoo Australia, webhook integration Odoo, OAuth2 Odoo connector, idempotent sync Odoo, job queue retry Odoo, Employment Hero Enterprise suite
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.
Modules teams pair with this one.
Premium ERP Heritage modules that extend the same stack, each built to the same engineering bar.
A reusable two way synchronisation engine that keeps Odoo in step with the people and payroll platform, idempoten...
The Australia country pack for the ERP Heritage Employment Hero integration
Sync certifications, qualifications and employee document metadata from the Employment Hero people platform into...
Bring Employment Hero onboarding workflows, employee goals and contractor flags into Odoo Community as real recor...
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