Project data migration versus clean slate setup: which is better for Odoo 15 implementation?

Our organization is implementing Odoo 15 Project module to replace a legacy system that’s been in use for 8 years. We’re debating whether to migrate historical project data or start fresh. The legacy system contains 340 completed projects, 89 active projects, thousands of tasks, and extensive time tracking records. Some stakeholders want full historical visibility, others argue clean slate reduces complexity and migration risks. I’m interested in hearing experiences from both approaches. What factors influenced your decision? Did you regret migrating too much or too little data? How did it impact user adoption and reporting capabilities?

Migration vs. Clean Slate: Odoo 15 Project Module Decision Framework

The decision hinges on three concrete factors: regulatory/audit requirements, reporting continuity, and migration ROI. With 340 completed projects and 8 years of time tracking, you’re looking at a non-trivial ETL effort—but “clean slate” isn’t automatically safer.


Pre-Upgrade Checks

Before committing to either path, audit the following:

  • Data quality in source system: Duplicated projects, orphaned tasks, inconsistent time entries, and missing foreign key relationships will compound migration complexity exponentially. Run a deduplication and completeness report first.
  • Legacy data model mapping: Identify how your source system’s entities map to Odoo 15’s project.project, project.task, project.task.type, and account.analytic.line (for timesheets). Many legacy systems have flatter structures that don’t translate cleanly to Odoo’s stage/kanban and analytic account model.
  • Active project dependencies: Those 89 active projects need special handling—they carry open tasks, running budgets, and potentially invoiceable timesheets. These cannot safely go into a clean slate without a manual transition plan.
  • Reporting baseline: Confirm which historical KPIs stakeholders actually query vs. which they think they’ll query. In practice, reporting on 8-year-old completed projects drops off sharply after go-live.
  • License and module scope: Verify whether your Odoo 15 edition includes Timesheets, Project Forecasting, and Billing modules—(verify in your version)—as missing modules affect which historical fields are even receivable.

Recommended Step Sequence

  1. Classify data into three tiers: Active projects (mandatory migration), completed projects <2 years (selective migration), completed projects >2 years (archive-only or exclude).
  2. Archive historical records externally: Export completed projects >2 years to a read-only reporting tool (Power BI, Metabase) or a static Odoo database instance. Users retain visibility without polluting the live environment.
  3. Migrate active projects first via Odoo’s standard import or a custom Python script using xmlrpc or ORM batch writes. Map to project.project with correct analytic_account_id linkage.
  4. Migrate tasks for active projects, preserving stage_id, user_ids, date_deadline, and planned_hours. Use stage mapping tables to translate legacy statuses to Odoo 15 kanban stages.
  5. Migrate timesheet lines (account.analytic.line) for active projects only—this protects WIP billing accuracy. Historical timesheet data for completed projects bloats the analytic ledger with minimal return.
  6. Selective migration of high-value completed projects: If specific projects are referenced in ongoing contracts or litigation, migrate them individually with a [ARCHIVE] tag prefix to distinguish them in views.
  7. UAT with power users across both project managers and finance—validate analytic account balances and timesheet totals against source system exports before cutover.
  8. Cutover freeze: Lock the legacy system 48 hours before go-live; capture a final delta export of timesheet entries for active projects and re-import.

Rollback Procedure

  • Maintain the legacy system in read-only mode for minimum 90 days post go-live—this is your real rollback.
  • Keep a full Odoo 15 database snapshot taken immediately post-migration, before users touch the system.
  • If migration data causes analytic account corruption, restore from snapshot and re-import using corrected mapping. Do not attempt in-place corrections on a corrupted analytic ledger.
  • Document which projects were migrated vs. excluded in a project.tags field so audit trails remain clear.

Bottom line: Clean slate for completed projects >2 years, full migration for active projects, selective migration for recent completed work. The hybrid approach is the only one that survives contact with real stakeholder requirements without becoming a 6-month migration project in itself.


This draft is based on general Odoo knowledge. It has not been verified against your specific version and environment. Practitioners: verify the steps and share your experience below.

We went clean slate for our Odoo 14 implementation and it was the right call. Users adapted faster without legacy baggage cluttering the interface. We archived old system data in read-only format for compliance and reference. Six months in, historical data requests were minimal.

The decision depends on your reporting requirements and compliance obligations. If you need year-over-year project performance analysis or have contractual obligations to maintain project history, migration is necessary. Otherwise, clean slate significantly reduces implementation timeline and cost. We typically recommend migrating only active projects and master data, keeping completed projects in legacy system for reference. This hybrid approach balances historical access with implementation efficiency.

We migrated everything and regretted it. The data quality issues from our legacy system polluted Odoo from day one. Inconsistent naming conventions, orphaned records, incomplete task hierarchies. We spent three months cleaning data that users rarely accessed. In retrospect, migrating just active projects and creating summary reports for historical data would have been smarter. User adoption suffered because the system felt cluttered and confusing with all that historical noise.

Consider a phased approach. Migrate active projects fully with all tasks and time entries for continuity. For completed projects, migrate only summary-level data: project name, dates, budget, actual costs, key milestones. Skip granular task details unless specific projects have ongoing warranty or support obligations. This gives you historical reporting capabilities without overwhelming the system with unnecessary detail. We used this strategy for a 400-project migration and it worked well. Historical dashboards function properly while keeping the operational interface clean.

The quality of your legacy data should drive this decision. Run data quality assessment first: completeness, consistency, accuracy. If your legacy data is well-maintained, migration adds value. If it’s messy, clean slate prevents inheriting problems. Also consider user change management. Familiar historical data can ease transition anxiety, but poor quality historical data undermines confidence in the new system. We migrated selectively based on data quality scores per project. High-quality completed projects migrated, low-quality archived externally.

From pure project management perspective, focus on what drives future decisions. Historical data value diminishes rapidly. Projects completed over two years ago rarely influence current planning unless you’re in industries with multi-year delivery cycles. For your 340 completed projects, assess how many are actually referenced. We tracked legacy system usage before migration and found that 85% of historical project access was for just 40 high-value projects. Migrate those selectively, archive the rest.

This is one of the most common dilemmas in ERP implementations, and there’s no universal answer. Based on implementations across 30+ organizations, here’s my framework for deciding:

Factors Favoring Full Migration:

  • Regulatory compliance requiring complete audit trails
  • Long-term contracts with ongoing deliverables tied to historical projects
  • Mature, high-quality legacy data with consistent standards
  • Need for multi-year trend analysis in project performance
  • Client-facing portals where customers expect historical access
  • Industries like construction, aerospace, or government contracting

Factors Favoring Clean Slate:

  • Poor legacy data quality with inconsistent records
  • High implementation timeline pressure
  • Limited budget for data cleansing and validation
  • Simple project structures without complex dependencies
  • Short project lifecycles where historical data ages quickly
  • Opportunity to establish new, better data governance practices

Hybrid Approach (Most Common): For your scenario with 340 completed and 89 active projects, I recommend:

  1. Full Migration: All 89 active projects with complete task hierarchies, time entries, expenses, and documents. These need operational continuity.

  2. Summary Migration: Completed projects from last 2 years (estimate 60-80 projects) with project-level data only: name, customer, dates, budget vs actual, final status, key deliverables. Skip granular task details.

  3. Archive Access: Older completed projects (260+ projects) remain in legacy system, kept accessible read-only for compliance. Create indexed PDF reports for critical projects.

  4. Master Data Migration: All customers, contacts, employees, cost centers, and project templates migrate fully. This ensures consistency for future projects.

Implementation Considerations:

Data Quality: Before deciding, run quality assessment on legacy data. Check for:

  • Orphaned tasks without parent projects
  • Incomplete time entries or missing approvals
  • Inconsistent naming conventions
  • Broken customer/employee references
  • Duplicate records

If quality issues exceed 15-20% of records, lean toward selective migration.

User Adoption Impact: In my experience, clean systems improve adoption. Users struggle when historical clutter obscures current work. However, completely empty systems can feel intimidating. The hybrid approach provides enough familiarity without overwhelming complexity.

Reporting Requirements: Document exactly what historical reports stakeholders need. Often, they request “everything” but actually use 3-4 specific reports. Migrate data that supports those specific reporting needs, not everything.

Timeline and Cost: Full migration typically adds 6-8 weeks to implementation and 30-40% to project cost. Data cleansing, validation, and reconciliation are time-intensive. Hybrid approach adds 2-3 weeks. Clean slate can begin user training immediately.

My Recommendation for Your Situation:

Given 89 active projects, implement the hybrid approach:

  • Migrate 89 active projects completely (estimate 3-4 weeks)
  • Migrate summary data for completed projects from 2023-present (estimate 1-2 weeks)
  • Create comprehensive archive strategy for older projects
  • Focus migration effort on ensuring master data quality

This balances historical visibility with implementation efficiency. You’ll have enough data for meaningful reporting without the complexity of full migration. User adoption will be stronger with a clean operational environment.

One final consideration: Odoo 15 Project module has significantly different structure than most legacy systems. Complex migrations often require custom transformation logic that becomes technical debt. Sometimes starting fresh with better processes outweighs preserving imperfect history.

What’s your legacy system, and what specific historical reports are stakeholders requesting? That context would help refine the recommendation further.