Connect Odoo to GeoDynamics (IntelliTracer), the track & trace and clocking platform: vehicles are provisioned into GeoDynamics automatically, and absences registered in the field flow straight back into Odoo Time Off.
Built for Odoo 19.0. Extends the Employees, Time Off, and Fleet apps.
Set up once, run safely
The integration keeps Staging and Production completely separate, each with its own API address, access token, and mode. A single setting decides which environment is active, so there's no risk of a staging instance accidentally touching production data or credentials.
- Mock or Live mode — Mock mode returns realistic sample responses for every action, so the full sync flow can be tested in development without ever calling the real GeoDynamics API.
- Test Connection button — checks the connection with a real authenticated request and reports back in plain language whether it worked, and why if it didn't.
- Clear error messages — invalid tokens, missing permissions, wrong endpoints, and rate limits are all reported with a readable explanation instead of a raw error code, including how long to wait if GeoDynamics asks for a pause.
- Access tokens are protected — stored as masked fields, visible only to administrators, and never written to logs or notifications.
Employees, kept in sync automatically
Each employee has a dedicated GeoDynamics section (visible only to HR managers) showing whether syncing is enabled, the linked external ID, and the last time it synced successfully.
Only employees marked for sync are ever sent to GeoDynamics — name, code, work email, phone, and home address where available. If a matching person already exists in GeoDynamics, the integration recognizes them automatically by email or phone number rather than creating a duplicate, and simply links the two records together. From then on, every sync just updates that existing profile.
Syncing can happen on demand from an employee's file, in bulk for the whole team, or automatically on a schedule.
Vehicles, provisioned the same way
Company vehicles follow the same pattern: an enable flag, an external reference, and a status you can check at a glance. Name, code, and license plate or VIN are sent to GeoDynamics on first sync and kept up to date afterward — again with both a manual option per vehicle and a bulk/scheduled option for the whole fleet. Existing vehicle links are preserved automatically when upgrading, so nothing needs to be re-matched by hand.
Absences, flowing back into Odoo
GeoDynamics is treated as the source of truth for time off: absences recorded there are pulled into Odoo, never the other way round.
- Only employees who are enabled for sync and already linked to a GeoDynamics profile are included.
- The integration looks back over a configurable window (30 days by default) so historical absences are captured the first time it runs, not just new ones going forward.
- A configuration table maps each GeoDynamics absence code to the matching Odoo leave type. Absences with no matching type are skipped and logged as a warning rather than causing errors, and the same goes for absences belonging to an employee who can't be matched.
- Every imported absence carries a reference back to its GeoDynamics record, so re-running the sync updates the same leave instead of duplicating it — and if nothing has actually changed, nothing is touched, keeping performance high on repeat runs.
- Because GeoDynamics has already approved these absences, they arrive in Odoo already validated, skipping the usual approval steps.
- Durations are calculated from each employee's actual working calendar, so a full working day always counts as a full day off — correctly handling lunch breaks, part-time schedules, and non-standard rotations. Days that aren't working days for that employee (public holidays, for instance) correctly register as zero hours.
Built to run unattended, safely
Three scheduled jobs — one each for employees, vehicles, and absences — run every 15 minutes by default, with employees and vehicles always syncing before absences.
Nothing runs until it's deliberately switched on: each environment has its own on/off setting, and each of the three sync types has its own toggle on top of that. Everything ships disabled from the start. Manual "Sync now" buttons are also available in Settings, and clearly state how many records were synced, how many failed, and whether a sync was skipped because it was turned off.
Full visibility when something needs checking
Every sync writes a log line recording what happened, in which direction, which employee, vehicle, or leave it affected, and — if something went wrong — why, along with a preview of the data that was sent. To keep things tidy, absences that didn't need any changes aren't logged individually.
On top of that, every scheduled run leaves a summary record — created, updated, unchanged, and error counts — even when nothing changed, so it's always possible to confirm a sync actually ran. If an individual record fails, it's flagged and the rest of the run continues rather than stopping altogether.
Log data is kept for a configurable period (90 days by default, or indefinitely if preferred) and cleaned up automatically.
Access, organized by role
Two access levels keep things secure: a Manager role with full access to the integration's configuration and data, and a read-only User role for day-to-day visibility into logs and settings. Access tokens are only ever visible to Managers. Everything lives under a dedicated GeoDynamics menu — logs, sync history, and configuration — plus a summary panel in General Settings.
Thoroughly tested
The integration is covered by an automated test suite spanning the API connection and its error handling, employee and vehicle syncing (including duplicate matching), absence syncing in every outcome (created, updated, unchanged, unmatched), duration calculations across different working-calendar scenarios, and log cleanup.