| Versions | 16.0 17.0 18.0 19.0 |
Employment Hero Suite Enterprise
The complete Employment Hero integration plus the Enterprise overlays that feed work entries, planning shifts, documents and Australian payroll into the Odoo Enterprise HR stack.
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
The whole suite in one install
Brings in the full Community integration plus the Enterprise overlays for work entries, planning, documents and Australian payroll, so a deployment installs one module and has the lot.
Built to survive the real world
Idempotent matching, per record isolation, signed and replay guarded webhooks, retry with backoff and a dead letter queue mean a bad row, a duplicate delivery or a flaky network does not corrupt the sync.
Tune the mapping, not the code
Endpoints, field mappings and jobs ship as data. A deployment adjusts the shape of every sync from the interface, including the country specific variants, with no code change.
Day in the life
A shift change flows through in order
A roster is edited in Employment Hero. The platform posts a webhook, the signature is verified in constant time, the event id is checked against past deliveries so a retried POST is acknowledged as a duplicate, and the change is queued on a channel keyed to that one entity. The job fetches just that record by id, maps it, resolves the resource through the external id cross reference and updates the Planning shift. A second edit to the same roster lands behind the first on the same ordered channel, so the newer state always wins. If the detail call times out, the job backs off and retries, and only a record that exhausts every attempt is parked for someone to look at.
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 webhook redelivered after a timeout is caught by the event id guard, and a concurrent duplicate that races past the check is caught by a unique constraint, so a replayed delivery is acknowledged once and never processed twice.
Two deliveries for the same entity run on a per entity ordered channel and webhook updates are forced to newest wins, so an older snapshot can never overwrite a newer record.
Each record syncs inside its own savepoint. One row that fails to write is logged as an error line and the run finishes in the partial state, instead of one bad record aborting the whole batch.
A push create carries a stable idempotency key and an update keys on the payload hash, so a resent write is deduplicated by the platform rather than creating a second record.
The delta cursor only advances to the last success strictly before the earliest failure, so a failed or concurrently changed record is re fetched next run instead of being skipped forever.
A cross worker token bucket meters the call rate and a 429 is retried against the Retry-After header, clamped so a hostile header cannot park a worker for hours.
A job left running by a worker that died is recovered by a reaper after a configurable threshold and counted as a failed attempt, so it returns to the retry path rather than hanging forever.
A delete event archives the linked record where the model supports it, otherwise unlinks it, and a hard delete blocked by a related record is kept locally and recorded rather than failing the run.
What is inside
Built to do the job, end to end.
- Pull and push synchronisation. Paginated pulls (skip and top, page number or cursor) with delta support, and pushes from Odoo that skip unchanged payloads and carry idempotency keys. Direction is per job: pull, push or both.
- Signed webhook intake. A public endpoint per connection that verifies an HMAC SHA-256 signature in constant time, caps the body size, guards against replay and queues each delivery for ordered dispatch.
- Retry queue with dead letter. A dependency free queue with exponential backoff, a configurable retry cap, a dead letter state, ordered channels for per entity work and a reaper that recovers jobs from crashed workers.
- Conflict policies. Per job inbound and outbound policies (Employment Hero wins, Odoo wins or newest wins), with webhook runs forced to newest wins to protect against out of order delivery.
- Enterprise overlays. Work entries and work entry types into the Work Entries app, rosters into Planning as shifts, and documents into the Documents app, each shipped as tunable endpoint, mapping and job data.
- Australian payroll catalogue. A country scoped work entry mapping plus endpoints for superannuation contributions and single touch payroll categories, mapping onto existing work entry types, ready for an Australian deployment to wire into its jobs.
- Encrypted credentials. OAuth access and refresh tokens are stored encrypted and restricted to system administrators, with lazy refresh handled by the connection so calls never deal with token lifetimes.
- Multi-company scoping. Connections, cross references and jobs carry a company, so one database can run separate Employment Hero connections per company without records crossing over.
Honest about the edges
What this does not do, so nothing surprises you.
- This is a meta package: it installs the full Community suite and the Enterprise overlays, and has no models of its own. Every capability comes from the modules it depends on.
- The Enterprise overlays require the matching Odoo Enterprise applications (Work Entries, Planning, Documents) to be installed. They will not function on Community alone.
- The overlays and the Australian pack ship configuration only (endpoints, mappings, jobs) and introduce no new payroll models. They map onto existing Odoo models.
- The Australian superannuation and single touch payroll endpoints are shipped ready to wire into a deployment's own jobs; they are a prepared catalogue, not pre built running syncs.
- Field mappings are starting points scoped to common payloads. A deployment with a different Employment Hero data shape adjusts the mappings to match.
- Synchronisation runs on the suite's own queue and scheduled jobs. It is near real time through webhooks and scheduled pulls, not a live two way stream.
- Targeted for Odoo 16. Use the matching build for other Odoo versions.
employment hero odoo integration, employment hero odoo 16, keypay odoo integration, odoo hr sync, odoo payroll integration, single touch payroll odoo, superannuation odoo, odoo work entries integration, odoo planning roster sync, odoo documents integration, hris integration odoo, webhook integration odoo, two way sync odoo, employee sync odoo enterprise
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