HADOOPT
TECHNOLOGIES
Schedule a Tech Consultation
Home
Services
Odoo ERP implementation Rollout, custom modules, migration and support. Web application development SaaS products, portals and internal platforms. Mobile application development Offline-first field apps and customer apps. AI development & automation LLM assistants, document processing, forecasting. Odoo version upgrades ↗ Move to a newer release, scoped and priced on its own site.
Products
OrgExp ↗ Budget, CAPEX and OPEX management.
Blog About Contact Schedule a Tech Consultation
Blog / Odoo 19: Complete Guide for Businesses
Odoo 19 7 min read

Projects and tasks in Odoo 19: stages, dependencies, milestones and profitability

How to set up Odoo 19 Project: task stages, dependencies, milestones, the customer portal, profitability from sales and timesheets, and Enterprise planning.

· ERP practice 22 Sep 2026

Odoo 19 Project is a Community app that handles projects, task stages, dependencies, milestones, recurring tasks and customer portal sharing out of the box. Profitability comes from two free bridge modules, Project - Account and Sales - Project, that pull sales, invoices, vendor bills and timesheet costs into each project. Gantt planning and resource scheduling are Enterprise-only.

Most project rollouts go wrong in the same place: teams design an elaborate stage board before deciding how the project will be billed. This post takes the opposite order.

What Odoo 19 Project includes in Community and Enterprise

The project module is LGPL (Community). It gives you projects, tasks and sub-tasks, per-project task stages, tags, an email alias per project so incoming mail becomes tasks, customer ratings, project updates with a status (On Track, At Risk, Off Track, On Hold, Complete), and Tasks Analysis and burndown chart reports. Odoo 19 also lets you convert a project into a template and create new projects from it.

Around it sit a few bridges worth knowing by name:

  • Project - Account (project_account, Community) computes profitability items such as vendor bills and other analytic costs and revenues.
  • Sales - Project (sale_project, Community) generates projects and tasks from confirmed sales orders and adds sales revenue to profitability.
  • Task Logs (hr_timesheet, Community) is the timesheet module; the app menu still reads Timesheets. Part 31 covers it.
  • Project Enterprise adds Gantt and map views; Planning and Project Planning (project_forecast) add shift-based resource planning. All three are Enterprise.

Configuring task stages, task states and project stages

Task stages belong to projects: each stage lists the projects that use it, so a software team and a site-installation team can have different boards in the same database. Configure them under Project > Configuration > Task Stages, or directly in a project's kanban.

Stages describe where the work is. Odoo 19 keeps a separate state on every task for what is happening to it: In Progress, Changes Requested, Approved and Waiting, plus the closed states Done and Cancelled. Waiting is set automatically when a task is blocked by another task. Keep the two ideas apart: you do not need a "Blocked" or "Approved" stage when the state already says it.

A stage can also carry:

  • an email template sent to the customer when a task reaches it;
  • a rating request, with Automatic Kanban Status turning good feedback into Approved and neutral or bad feedback into Changes Requested;
  • Days to rot, which marks tasks as stale after they sit in the stage for that many days (0 disables it).

Stages for projects themselves (as opposed to tasks) are off by default. Switch on Project Stages in Project > Configuration > Settings if you manage a portfolio and want a kanban of projects by phase.

Task dependencies, milestones and recurring tasks

These three features are switched on per project, not globally. Open the project, go to the Settings tab and tick Recurring Tasks, Task Dependencies or Milestones as needed.

  • Task dependencies add a "blocked by" relation between tasks. A blocked task shows the Waiting state until its predecessors close, and in Enterprise the Gantt view draws the links.
  • Milestones have a deadline and a Reached flag, and tasks are attached to them. With Sales - Project installed, a milestone can point to a sales order line and a quantity percentage, which is how milestone billing works: reach the milestone and that share of the line counts as delivered.
  • Recurring tasks regenerate a task on a schedule. Good for monthly GST filings or maintenance visits; bad as a substitute for a proper subscription or maintenance plan.

Turn on milestones before you create service products if you intend to bill on them. The Based on Milestones invoicing policy only appears on products once the milestone feature is active.

Sharing projects with customers on the portal

Each project has a Visibility setting on its Settings tab. The four options are Invited internal users, Invited internal and portal users, All internal users, and All internal users and invited portal users. The last is the default, so new projects are open to all employees and to any portal user you explicitly invite.

To give a customer access, use Share Project and add them as a collaborator with one of three access modes: Read, Edit with limited access, or Edit. Read suits most clients. Edit with limited access lets them edit a restricted set of fields on the tasks they follow, which works well for customer-raised requests. Full Edit is rarely what you want on a client-facing project.

Project profitability from sales, timesheets and vendor bills

Profitability runs on the analytic account linked to the project; Odoo creates one when a feature such as timesheets needs it. The project's right-hand panel groups revenues and costs into lines such as Timesheets (Billed on Timesheets), Timesheets (Fixed Price), Timesheets (Billed on Milestones), Timesheets (Non-Billable), Materials, Customer Invoices, Down Payments, Vendor Bills, Other Revenues and Other Costs, depending on which modules are installed.

Three things have to be true for those numbers to be meaningful:

  1. Employees need an Hourly Cost on their employee record, otherwise timesheet cost is zero.
  2. Service products need the right Create on Order value (Task, Project, or Project & Task) and invoicing policy, so the sales order line is linked to the project.
  3. Vendor bills for subcontractors or materials need the project's analytic account on the line.

For an Indian services business this is where a Tally migration shows its limits: Tally tracks cost centres, but it does not know which task or employee produced the cost. Moving to per-project analytic accounts is worth the effort. Profitability is a management view; statutory GST reporting still runs from the journal entries, as described in part 22.

A sensible setup order, with Enterprise planning last

  1. Decide how each type of work is billed: fixed price, timesheets, milestones or not at all.
  2. Create service products with the matching invoicing policy and Create on Order value.
  3. Build one project, its stages and its Settings tab, then convert it to a template.
  4. Set employee hourly costs and switch on timesheets for projects that need them.
  5. Invite one friendly customer to the portal before rolling it out to everyone.
  6. Only then add Planning (Enterprise) for shift and capacity scheduling.

Planning works in shifts on a Gantt chart. With Project Planning installed, shifts can be linked to projects and tasks, and the Planning settings include options for employees to switch shifts or unassign themselves before a deadline. It pays off when people are shared across several projects; for a single team it is often more ceremony than value.

Once projects are in shape, the next step is getting time recorded and billed properly. Continue with timesheets and billable hours in Odoo 19, or talk to us if you want a second pair of eyes on your project structure.

Questions we get asked

Is Odoo 19 Project free in Community edition?

Yes. The Project app is licensed LGPL-3 and ships with Odoo Community. It includes tasks, sub-tasks, stages, task dependencies, milestones, recurring tasks, customer portal sharing and profitability through the Community bridge modules. Gantt and map views come from Project Enterprise, and resource scheduling comes from the Planning app, both of which need an Odoo Enterprise subscription.

How do I enable task dependencies in Odoo 19?

Task dependencies are enabled per project. Open the project, go to its Settings tab and tick Task Dependencies. Tasks then get a "blocked by" field, and a task whose predecessors are still open shows the Waiting state automatically. Milestones and recurring tasks are switched on in the same place, so you can enable them only on the projects that need them.

Can customers see their project tasks in the Odoo portal?

Yes. Set the project's visibility to an option that includes portal users, then use Share Project to add the customer as a collaborator. Choose Read, Edit with limited access, or Edit. Read-only suits most client projects. The customer then sees the project and its tasks from their portal account and can follow progress without emailing your team.

How does Odoo 19 calculate project profitability?

Profitability runs on the analytic account linked to each project. Odoo groups revenue from sales orders and invoices, timesheet cost from employee hourly costs, and costs from vendor bills and other analytic lines into a profitability panel on the project. It is only accurate if employees have an hourly cost, service products are linked to projects, and bills carry the project's analytic account.

← Previous Appraisals, goals and skills in Odoo 19 Next → Timesheets and billable hours in Odoo 19: billing models, validation and timers
Keep reading
Odoo 19 Getting started with Odoo 19: what changed and where to begin 6 min read Odoo 19 Installing Odoo 19 from source, Docker or packages 7 min read Odoo 19 Odoo 19 hosting: Odoo Online vs Odoo.sh vs on-premise 6 min read