All posts
General6 min read

Odoo project management: task dependencies, milestones, time tracking, and Gantt charts

Odoo Project handles task dependencies, milestone gating, and time entry in one tool. The gap between Odoo and a dedicated project management system narrows significantly once you configure the features that are off by default.

Odoo Project is often the overlooked module in an ERP implementation. Teams configure inventory and accounting carefully, then put tasks in a free-form kanban that nobody maintains consistently. The module has features that make it function like a real project management tool - but most of them require activation.

Project configuration checklist#

Enable the project features that match your workflow before users start creating tasks.

In Settings → Project:

FeatureWhen to enable
Task DependenciesIf tasks have sequential prerequisites
MilestonesFor deadline tracking and release gates
TimesheetsIf time tracking is required (integrates with HR Timesheets)
SubtasksFor decomposing large tasks
Task RecurrenceFor repeating operational tasks
Project StagesFor pipeline-style project tracking
RatingFor customer satisfaction on task delivery

Task dependencies#

With task dependencies enabled, each task has a "Depends on" field. A task cannot move to "Done" until all dependency tasks are also done.

Create a dependency: open a task → Depend on → search for the prerequisite task.

In Gantt view, dependencies render as connecting arrows. The dependent task's start date cannot precede its dependency's end date in the Gantt view (though Odoo does not enforce this in the form view - it is visual only).

Limitation: Odoo's dependency system is not a full critical-path engine. It does not automatically shift dates forward when a dependency slips. Date management remains manual. For automatic scheduling based on dependencies, a tool like MS Project or dedicated PSA software is required.

Milestones#

Milestones are fixed-date checkpoints. Enable them per project: Project → [Project] → Settings → Milestones.

Create a milestone: Project → [Project] → Milestones → New. Set a name and deadline date.

Assign tasks to a milestone: task form → Milestone field.

The milestone widget shows:

  • Tasks assigned to the milestone and their status.
  • Whether the milestone is at risk (incomplete tasks past the deadline).

In the project overview, milestones appear as diamond markers on the timeline. Overdue milestones display in red.

Use milestones for sprint boundaries, release gates, or external client deliverable checkpoints. Milestones do not block task progress - they are reporting markers, not hard gates.

Time tracking and timesheets#

With the Timesheets feature enabled, each task has an allocated hours field and a logged hours field.

Record time from the task form: Timesheets tab → Add a line → set date, employee, hours.

Or use the timer: open a task → click the timer button to start recording. Click again to stop and log the session.

The timesheet lines are the same records as Timesheets → My Timesheets. They integrate with the billing module: if the project is billable, logged hours can be invoiced via the Timesheets → Invoicing menu.

Planned vs. actual:

  • Allocated hours - the budgeted effort.
  • Effective hours - hours logged via timesheets.
  • Remaining hours - calculated: allocated − effective.

The task progress bar shows percentage of allocated hours consumed. This is how project managers spot tasks going over budget before they complete.

Kanban, list, Gantt, and calendar views#

Project tasks are available in four views:

ViewBest for
KanbanSprint/agile boards, status-based flow
ListSorting and bulk editing, time allocation review
GanttTimeline, milestone visualization, dependency display
CalendarDeadline-driven scheduling

Switch views from the top-right icon in a project. The Gantt view requires enabling task dates (start date + deadline) on tasks. Without dates, the Gantt shows tasks as floating bars with no positioning.

Setting dates on multiple tasks: In list view, enable the start date and deadline columns, then inline-edit. Faster than opening each task individually.

Stages and pipeline management#

Projects use stages to represent workflow states. Default stages: New → In Progress → Done.

Customize stages per project: Project → [Project] → [Column gear icon] → Edit. Name the stage and set fold behavior (folded stages hide from Kanban view by default).

Create project-specific stages vs. shared stages:

  • Shared stages (created from Settings → Project → Stages) apply to all projects.
  • Per-project stages appear only in that project's Kanban view.

For teams running multiple project types (software development + client services + internal operations), per-project stages prevent the stage list from becoming unmanageable.

Personal vs. team tasks#

By default, tasks belong to a project. Enable private tasks: Settings → Project → Private Tasks. These are personal to-do items visible only to the assigned user.

Team tasks (project-assigned) are visible to all project followers. Control who sees a project via the project's Privacy setting: Invited Employees, All Employees, or Portal Users (for client-facing projects).

Integration with CRM and sales#

If your projects originate from sales: in the project settings, enable Customer Ratings and Sales Order tracking. When a project is linked to a sale order, billable tasks automatically appear in the invoice creation flow.

For professional services companies, the flow is:

  1. Opportunity won → Sale Order confirmed → Project created automatically.
  2. Project tasks created with allocated hours (from the SOL product).
  3. Timesheets logged against tasks.
  4. Invoice generated from the project's uninvoiced timesheets.

This integration eliminates manual time-to-invoice reconciliation.

Try ERPeek on your own Odoo module - ask questions, scaffold tests, and explore your codebase in plain language.

Get started free