GL-Ecologie — an ecological consulting organisation specialising in nature and wildlife research, based in the Netherlands
Odoo 19 Enterprise implementation on Odoo.sh
Centralised field planning, project tracking, and equipment inventory for a nature and wildlife research organisation
The challenge
GL-Ecologie had no centralised system for managing field staff schedules, project assignments, or equipment. Planning happened across spreadsheets and ad-hoc messages, making it difficult to enforce protocol windows, track equipment availability, or give managers a real-time view of operations.
The solution
Odoo 19 Enterprise deployed on Odoo.sh (PaaS), with a custom module built on top of the Planning, Project, and HR apps. The module adds constraint-aware scheduling, protocol intelligence, an equipment inventory subsystem, and a bulk shift creation wizard — all integrated into Odoo's native UI.
Outcomes
- ✓Employee shift scheduling with availability tracking and constraint enforcement — role matching, maximum shifts per week, morning/evening conflict detection, and weekend restrictions
- ✓Shift-to-project linking with protocol-aware scheduling alerts — warns when a field visit falls outside its protocol window or violates minimum gap rules between related visits
- ✓Inventory management for field equipment — material types, units, statuses, and consumables linked to individual shifts
- ✓Automated shift reminders sent to assigned employees 24 hours before each shift
- ✓Bulk shift creation wizard for managers — create or edit multiple shifts across resources in a single form
- ✓Deployed to production on Odoo.sh with full CI integration
Stack
Odoo 19 Enterprise · Python (ORM extensions) · XML views · OWL (Odoo Web Library) · SCSS
Technical details
Custom module
gl_custom_module— extendsplanning,project,hr, andbase
Models built / extended
planning.slot— extended with constraint engine fields and protocol window logicplanning.shift_type— custom model for shift classificationplanning.employee_availability— backing model for the availability calendarhr.employee— extended with role, shift-type preference, and restriction fieldsproject.project— extended with protocol window dates and visit gap configuration- Materials subsystem — material types, units, categories, statuses, and consumables
Constraint engine
- Availability and role-match validation at scheduling time
- Maximum shifts per week cap, configurable per employee
- Shift type preference matching
- Morning / evening conflict detection
- Weekend restriction enforcement
Protocol intelligence
- Computed
date_outside_protocol_windowfield onplanning.slot - Related-visit gap checker with dynamic warning messages surfaced in the form view
OWL component
- Employee availability calendar rendered inline in the scheduling form using Odoo Web Library
Multi-assign wizard
- Create or bulk-edit N shifts across multiple resources in a single form
- Constraint and domain logic reused via in-memory slot objects
- Entry points from the Planning menu, task form stat buttons, and list view selection bar
Odoo Studio integration
- Managed Studio-generated customisations alongside hand-written module code
- Enforced
noupdate=Falseon all Studio view records to prevent upgrade conflicts