Build-to-order Odoo module for shift schedules, rosters and shift-change requests — built, installed and supported by ECOSIRE. One-time license from $299.00 USD for Odoo 17, 18, 19 — includes 12 months of updates and support.

Build-to-order Odoo module for shift schedules, rosters and shift-change requests — built, installed and supported by ECOSIRE.
No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.
Employee Shift Scheduling & Roster is a build-to-order Odoo module that ECOSIRE designs, develops, installs and supports for your team — this is not an instant apps.odoo.com download. After purchase, our Odoo engineers scope your shift patterns, build the module against your Odoo 17, 18 or 19 database (Community or Enterprise), deploy it, and hand you a clean, upgrade-safe addon with full source, documentation and a support window.
Individual shift creation on a per-employee, per-day basis with start/end times, break duration and location captured on a dedicated hr.shift model
Bulk shift generation across a chosen date range — pick employees, days of week and a template, and the module generates dozens of shifts in one action
Reusable shift templates and recurring patterns (e.g. Early / Late / Night, or a rotating 4-on-4-off cycle) stored in hr.shift.template and applied on demand
Employee self-service shift-change and swap requests with a manager approval workflow (draft → submitted → approved/rejected)
Automated notifications on request submission and approval via Odoo Automation Rules (base.automation), keeping managers and staff in sync
Computed coverage and planned-hours fields using @api.depends — instantly see headcount per shift and flag under- or over-staffed slots
Shift managers in retail, hospitality and manufacturing spend hours wrestling spreadsheets, WhatsApp threads and paper rosters. This module brings that entire workflow inside Odoo's HR suite. A new hr.shift model (with a supporting hr.shift.template model) lets you create shifts individually or in bulk across a date range, assign them to employees linked to your existing hr.employee records, and publish a clean weekly or monthly roster. Computed fields using @api.depends roll up planned hours, headcount per shift and coverage gaps automatically, so an under-staffed Saturday evening is visible before it becomes a problem.
Employees raise shift-change and swap requests through a dedicated request model with a proper approval chain; managers approve or reject from a list/kanban view, and an automated action (Odoo Automation Rules / base.automation) can notify the affected parties and update attendance expectations. Every roster is a QWeb PDF report you can print for the noticeboard or export to Excel, and an optional Shift-vs-Attendance view compares what you planned (hr.shift) against what the hr.attendance records actually captured — surfacing no-shows, late starts and unplanned overtime.
Access is locked down the Odoo way: ir.model.access.csv grants row-level CRUD to a Shift Manager group, and record rules keep team leads scoped to their own department. Views are delivered as standard XML (with OWL components where the roster grid benefits from a richer client-side experience), and everything is reachable over XML-RPC / JSON-RPC so your POS, workforce app or BI tool can read the schedule. Because we build it as a first-class module — clean __manifest__.py, versioned, dependency-declared against hr and optionally hr_attendance — it upgrades cleanly and never touches Odoo core files.
Runs a shop floor with variable footfall and part-time staff. Needs to build a fair weekly roster fast, react to sick calls with quick swaps, and print a schedule for the back-office noticeboard — without leaving Odoo or reverting to spreadsheets.
Coordinates front-of-house and kitchen crews across split shifts and peak weekends. Wants templated shift patterns, coverage warnings for busy service windows, and self-service swap requests so staff sort cover among themselves with manager sign-off.
Manages rotating day/night crews on a production line where under-staffing halts output. Relies on bulk shift creation for the whole rota, conflict detection against time-off, and a shift-vs-attendance view to catch no-shows before they hit throughput.
Owns compliance and pay accuracy. Needs planned hours to reconcile against actual hr.attendance, exportable rosters for payroll, and role-scoped access so team leads only touch their own department's schedule.
Buy the license on ecosire.com and download the Employee Shift Scheduling & Roster module ZIP from your account dashboard.
Extract the ZIP into your Odoo custom addons folder on the server (or upload via Apps > Install from file on Odoo.sh / runbot).
Activate Developer Mode, open Apps, click Update Apps List, search for Employee Shift Scheduling & Roster, and press Install.
Open the new menu, paste your ECOSIRE license key, connect any external credentials (Shopify, Amazon, Stripe, etc.), and save.
Run the built-in connection test, sync your first 10 records, and schedule the recurring cron. Contact support if anything fails.
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| Fits your exact shift patterns & approval flow | Built to your rotations, sites and sign-off chain | Possible, but you scope and build it all yourself | Only what the generic app author anticipated | |
| Bulk shift creation across date ranges | Yes — generate a full rota in one action | Only if you build the wizard yourself | Sometimes; varies by app and often limited | |
| Employee shift-change / swap requests with approvals | Full self-service workflow with automated notifications | Build the model, states and automation from scratch | Sometimes basic; approval depth varies | |
| Printable QWeb roster report & Excel export | Branded PDF roster + export delivered and editable | You author the QWeb template and export logic | Report often fixed and not brandable | |
| Shift-vs-attendance reconciliation | Dedicated view comparing planned vs hr.attendance | Custom reporting effort required | Rarely included | |
| Odoo 17 / 18 / 19 + Community/Enterprise fit | Built and tested for your exact version and edition | Depends entirely on your in-house skill | May lag versions or require paid upgrades | |
| Install, configuration, training & support included | We install, configure, train and support post-launch | Entirely on your team | Self-install; support depends on the author | |
| Upgrade-safe, no core patching | Clean addon with proper __manifest__.py, never touches core | Risk of shortcuts that break on upgrade | Quality varies by author |
No. This is a build-to-order module. After purchase, ECOSIRE's Odoo engineers scope your shift patterns and approval rules, build the module against your specific Odoo 17, 18 or 19 database, and install it for you. You receive the full source and a working, configured system — not a generic ZIP you have to make fit yourself.
Typical lead time is 2 to 4 weeks from the point we finish requirements gathering, depending on how complex your shift patterns, multi-site setup and integrations are. A straightforward single-site roster lands toward the two-week end; rotating multi-department patterns with attendance reconciliation and API integrations take longer. We confirm a firm timeline in the kickoff call before development starts.
Every build includes a defined post-go-live support and bug-fix window with agreed response times, covering any defects in the delivered module. Because we hand over clean, upgrade-safe source with a proper __manifest__.py that never patches Odoo core, the module carries forward across point releases. Ongoing enhancements, new features or major-version migrations (e.g. Odoo 18 to 19) can be arranged under a maintenance retainer.
Both. The module is built on standard Odoo framework primitives (models.Model, ir.model.access.csv, QWeb, Automation Rules) and depends on the hr module, which ships in Community. We tailor the build to whichever edition and version (17, 18 or 19) you run. Enterprise-only niceties such as the Gantt view are used only if your edition supports them.
Yes. The shift-vs-attendance view reconciles planned shifts against Odoo's hr.attendance records natively. Beyond that, every model is exposed over Odoo's XML-RPC and JSON-RPC APIs, so your POS, time-clock hardware or third-party workforce app can read and write the schedule. We scope and build the specific integration points you need as part of the engagement.
Both are supported. Employees can raise shift-change and swap requests from their own portal/self-service view, which flow into a manager approval queue (draft → submitted → approved/rejected). Managers can also create, edit and reassign shifts directly. Automated actions notify the relevant people at each step so nothing falls through the cracks.
Build-to-order Odoo module for shift schedules, rosters and shift-change requests — built, installed and supported by ECOSIRE.