Site under construction — some content is placeholder material.
← IT Consulting

GL-Ecologiean 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

Odoo 19PythonOWLOdoo.shXMLSCSS

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 — extends planning, project, hr, and base

Models built / extended

  • planning.slot — extended with constraint engine fields and protocol window logic
  • planning.shift_type — custom model for shift classification
  • planning.employee_availability — backing model for the availability calendar
  • hr.employee — extended with role, shift-type preference, and restriction fields
  • project.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_window field on planning.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=False on all Studio view records to prevent upgrade conflicts
ListeningÓlafur Arnalds, near light