Employment Hero Planning Sync
Pull people platform rosters into Odoo Planning shifts, with the mapping you tune from the user interface, no code.
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 Planning Sync
Tune the mapping, not the source
The endpoint, field mapping and sync job ship as data. Adjust the roster source paths to match your organisation's payload shape from the user interface, with no Python edits and no upgrade to overwrite your changes.
Idempotent by roster id
Every shift is keyed to its roster external id through the cross reference, with a unique constraint. Re running a job updates the existing slot in place, and an unchanged roster is skipped, so a repeated run never creates duplicate shifts.
Resource then employee
Planning derives the employee on a shift from the assigned resource, so the mapping resolves the resource through the external id cross reference scoped to the connection. Sync employees first from the HR module and shifts land on the correct person.
Day in the life
A scheduled roster pull
The scheduled sync runs the roster job. The engine pages through the people platform roster endpoint, and for each entry maps the start and end datetimes and resolves the resource by its external id. New rosters become planning shifts, changed rosters update the existing slot in place, and unchanged rosters are skipped. One bad record is logged as an error line and the run continues, ending in a partial state rather than aborting the batch. Every run records a per record line you can 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.
Shifts are keyed by roster external id with a unique constraint, so re running a job upserts rather than duplicating, and a byte for byte unchanged roster is a no op skip.
Each roster is processed inside its own savepoint, so a single failing record rolls back just that record, is logged as an error line, and the run continues to a partial state instead of poisoning the whole batch.
The roster endpoint is pulled page by page using page index and item per page parameters, reading items from the data items envelope, and stops on a short or empty page. A page cap is logged loudly so a truncated pull is never silent.
Transient failures, timeouts and rate limit responses are retried with exponential backoff plus jitter, honouring a clamped Retry-After header, while non retryable errors raise immediately.
Calls pass through a token bucket on the HR rate group, so a roster pull spends one token per logical call and backs off before adding to a rate limit storm.
The resource lookup by external id is scoped to the active connection, so two connections holding the same roster or resource id never cross bind to each other's records.
The roster job runs with the people platform as the authoritative source on pull, so an inbound roster updates the Odoo shift as the source of truth.
If a roster references a resource that has not been synced yet, the shift resolves to no resource through the cross reference rather than failing the run; sync employees first so shifts land on the right person.
The cross reference stores the connection's company, so roster links are scoped per company across a multi company database.
What is inside
Built to do the job, end to end.
- Roster endpoint. A roster list endpoint for the people platform HR API, with page style pagination, the data items envelope path and a page size of 100, on the HR rate group.
- Starter field mapping. A pull mapping for planning slot that maps start and end times to the shift datetimes, the roster note to the shift name, and the resource through the external id cross reference. Shipped with no upgrade overwrite so your tuning survives updates.
- Roster sync job. A pull job binding the endpoint, the mapping and the planning slot model, keyed by the roster id with an updated at path for delta and conflict handling, running with the people platform as the authoritative source.
- Backed by the sync engine. Reuses the shared engine for idempotent upsert, per record savepoint isolation, audited runs, delta and full modes, retry with backoff and token bucket rate limiting. This module adds only the roster data.
Honest about the edges
What this does not do, so nothing surprises you.
- One directional. The module pulls rosters from the people platform into Odoo Planning shifts. It does not push Odoo shifts back to the people platform.
- Depends on the HR module syncing employees and their resources first. A shift resolves its resource through the cross reference, so register resources before running the roster job.
- The shipped source paths are a starter shape. Adjust them in the user interface to match your organisation's actual roster payload before relying on the sync.
- This module ships no webhook subscription for rosters, so roster updates arrive on the scheduled or manual pull rather than as real time webhook deliveries. The shipped job runs in full mode unless you enable delta.
- Requires the Odoo Planning app and the Employment Hero connection, HR and sync modules. Planning is the target, so a database without the Planning app cannot install this module.
- Maps the shift start, end, name and resource. It does not import role, template, repeat or allocation details from the roster beyond what the mapping defines.
Employment Hero Planning, roster sync Odoo, Employment Hero roster import, Odoo Planning integration, workforce scheduling sync, shift import Odoo, HR roster connector, people platform Odoo connector, planning slot sync, Odoo 16 Planning
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.
Accept ZainCash wallet payments in Iraq at your Odoo checkout, on the ZainCash Payment Gateway v2 with OAuth2, re...
Sync Employment Hero ATS recruitment job openings into the standard Odoo Recruitment app, mapping each opening on...
The New Zealand country pack for the ERP Heritage Employment Hero integration
The complete ERP Heritage Employment Hero integration in one install
Sync timesheet entries from the Employment Hero people and payroll platform into the standard Odoo Timesheets app...
Real-time MRA fiscalisation for Point of Sale receipts in Odoo 16 Community, mapping each paid POS order to the M...
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Planning (planning)
• Employees (hr) • Discuss (mail) |
| Community Apps Dependencies | Show |
| Lines of code | 4052 |
| Technical Name |
eh_hero_ent_planning |
| 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