CRM migration
Field-level mapping, validation, and rollback between Team Tracker and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Team Tracker
Source
Odoo CRM
Destination
Compatibility
12 of 12
objects map 1:1 between Team Tracker and Odoo CRM.
Complexity
BStandard
Timeline
2–5 days
Overview
Team Tracker organizes data around members, teams, tasks, projects, time entries, and attendance records — a model optimized for employee monitoring and productivity tracking. Odoo CRM organizes around leads, opportunities, contacts, projects, and timesheets — a model optimized for sales pipeline management and ERP integration. These are fundamentally different data architectures, so the migration requires careful object routing rather than a simple one-to-one field map. The most consequential mapping decision is what Team Tracker members become in Odoo. Members hold name, email, and contact data but also function as employees within Teams — a structure that Odoo splits into two separate concepts: res.partner (contacts) and hr.employee (employees). FlitStack AI routes member records by examining role metadata if available; otherwise, it creates res.partner records and flags the employee-track for Odoo HR setup. Team Tracker's teams map to hr.department, and custom team-level fields become custom fields on the department record. Tasks and projects map directly to project.task and project.project, but Team Tracker's custom task statuses (custom_status, custom_priority) require value-by-value mapping to Odoo stage names per project, and the custom fields need custom field creation in Odoo. Time entries map to account.analytic.line with project_id and user_id linkage — however, Odoo's native timesheet entry model differs from Team Tracker's log format, so timesheet data is preserved as analytic lines and a timesheet-compatible project is recommended post-migration. Attendance records from Team Tracker do not map to Odoo hr.attendance because the data shapes differ — Team Tracker records productivity metrics (location, apps used, screenshots taken) that Odoo's check-in/check-out attendance model cannot store natively. FlitStack AI preserves attendance records as custom fields on hr.employee and flags which Odoo HR attendance configuration best matches your team's needs. Workflows, alerts, and automated rules built in Team Tracker do not migrate to Odoo — those automation constructs need to be rebuilt in Odoo's Automations or Studio. We export the rule definitions so your Odoo admin has a rebuild reference.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a Team Tracker object lands in Odoo CRM, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Team Tracker
Member
Odoo CRM
res.partner
1:1Team Tracker members hold name, email, phone, and role data that maps directly to Odoo's res.partner. Email addresses are unique identifiers for de-duplication during import. If Team Tracker's members function as employees, a separate hr.employee record is also created — FlitStack AI flags dual-role members for your Odoo admin to confirm.
Team Tracker
Member
Odoo CRM
hr.employee
1:1When Team Tracker members represent employees rather than external contacts, hr.employee records are needed in Odoo HR. FlitStack AI creates the employee record with name and user linkage, and preserves the Team Tracker member_id as a custom field (team_tracker_member_id) on the employee for traceability and delta-run matching.
Team Tracker
Team
Odoo CRM
hr.department
1:1Team Tracker's Team object (name, manager, parent_team) maps to Odoo's hr.department. Odoo departments are hierarchical; parent_team resolves to parent_path in hr.department. Team-level custom fields migrate as custom fields on the department record. Note that Odoo department is not a CRM-specific object — your Odoo admin may prefer crm.team for sales team routing.
Team Tracker
Project
Odoo CRM
project.project
1:1Team Tracker projects map 1:1 to Odoo project.project. Project name, description, start_date, end_date, status, and user_id (project manager) transfer directly. The project privacy_visibility setting defaults to 'employees' in Odoo and can be adjusted per project post-migration. Additionally, the active flag, color index, and tags from Team Tracker map to Odoo's active boolean, color field, and project.tags many2many relation respectively — these require the tags to exist in Odoo before migration or be created during the schema setup phase.
Team Tracker
Task
Odoo CRM
project.task
1:1Task records map to project.task with name, description, priority, project_id, user_id (assigned to), date_deadline, and create_date preserved. The key mapping challenge is custom_status — Team Tracker's freeform status values map to project.task.stage_id via value-by-value mapping per project. FlitStack AI generates the Odoo stage names from your Team Tracker custom_status vocabulary.
Team Tracker
custom_status (Task field)
Odoo CRM
project.task.stage_id
1:1Team Tracker's custom_status field stores freeform text values like 'In Progress', 'Needs Review', 'Blocked'. These are not tied to a formal stage schema. FlitStack AI creates Odoo Kanban stages named from your actual custom_status vocabulary, scoped to each project, so the stage names match your original workflow labels. Probability and fold settings are applied as Odoo defaults.
Team Tracker
TimeEntry
Odoo CRM
account.analytic.line
1:1Team Tracker time entries (date, duration_hours, billable, task_id, user_id, description) map to Odoo analytic lines linked to the corresponding project.task via project_id and task_id. Note that Odoo's native timesheet model (project.timesheet) expects a different entry format — analytic lines preserve all data but a timesheet-compatible project configuration is recommended post-migration.
Team Tracker
Attendance
Odoo CRM
hr.attendance + custom fields on hr.employee
1:1Team Tracker attendance records include check_in, check_out, location, device_type, apps_screamshotted, websites_visited — data that does not fit Odoo hr.attendance's check-in/check-out model. FlitStack AI creates custom fields on hr.employee (check_in_custom, check_out_custom, location_custom, device_type, productivity_metrics) to preserve the full record. Odoo's standard hr.attendance can be configured independently if needed.
Team Tracker
Custom fields on Member
Odoo CRM
Custom fields on res.partner / hr.employee
1:1Team Tracker allows custom fields on member records (priority_level, alert_enabled, alert_threshold, etc.). Odoo has no pre-built equivalent for most of these. FlitStack AI creates matching custom fields on res.partner (and optionally hr.employee) using Odoo's ir.model.data approach, preserving field type, selection options, and default values. Field metadata is included in the migration plan.
Team Tracker
Custom fields on Task
Odoo CRM
Custom fields on project.task
1:1Task-level custom fields in Team Tracker (custom_field_1 through custom_field_n) require custom field creation in Odoo. FlitStack AI inspects the Team Tracker field schema, creates matching fields on project.task using Odoo field types (char, selection, date, float, etc.), and includes the full field list in the Odoo Studio setup guide delivered with the migration plan.
Team Tracker
Note / Attachment
Odoo CRM
ir.attachment
1:1Team Tracker notes and file attachments attach to the relevant parent record (member, task, project). They migrate as ir.attachment records in Odoo with res_model and res_id pointing to the mapped Odoo record. File content is re-uploaded to Odoo's filestore. Inline images in notes are extracted and re-hosted as attachment binaries.
Team Tracker
Lead / Opportunity data (if tracked in Tasks)
Odoo CRM
crm.lead
1:1If Team Tracker teams use Tasks to store informal lead or deal records (deal name in task title, deal value in a custom field), FlitStack AI surfaces this pattern during the pre-migration audit. These records are migrated to crm.lead with the mapped field values, and the mapping plan flags which tasks to reclassify as leads versus project work.
| Team Tracker | Odoo CRM | Compatibility | |
|---|---|---|---|
| Member | res.partner1:1 | Fully supported | |
| Member | hr.employee1:1 | Fully supported | |
| Team | hr.department1:1 | Fully supported | |
| Project | project.project1:1 | Fully supported | |
| Task | project.task1:1 | Fully supported | |
| custom_status (Task field) | project.task.stage_id1:1 | Fully supported | |
| TimeEntry | account.analytic.line1:1 | Fully supported | |
| Attendance | hr.attendance + custom fields on hr.employee1:1 | Fully supported | |
| Custom fields on Member | Custom fields on res.partner / hr.employee1:1 | Fully supported | |
| Custom fields on Task | Custom fields on project.task1:1 | Fully supported | |
| Note / Attachment | ir.attachment1:1 | Fully supported | |
| Lead / Opportunity data (if tracked in Tasks) | crm.lead1:1 | Fully supported |
Gotchas + challenges
Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.
Team Tracker gotchas
Screenshot archives are not exported via data migration
Idle-time discard settings affect reported hours
Tier-gated custom fields create schema gaps
Geofence and GPS polling intervals may not map 1:1
Odoo CRM gotchas
Odoo.sh version gating blocks assisted migrations from trial
Enterprise modules fail to install on Community after database restore
Custom module view inheritance breaks between Odoo major versions
Custom fields risk losing their application context on Community
API access for Community is gated behind the Custom Plan
Pair-specific challenges
Migration approach
Audit Team Tracker data and map custom fields to Odoo equivalents
FlitStack AI exports the full Team Tracker object schema including all custom fields, custom_status vocabulary, and relationship metadata. We identify which members are contacts, which are employees, and which need both Odoo records. Custom fields are matched to Odoo field types (char, selection, float, date, boolean) and a field-creation checklist is generated for your Odoo admin. This audit also surfaces informal CRM data stored in tasks (deal names, deal values) so it can be routed to crm.lead instead of project.task.
Pre-create Odoo schema: stages, custom fields, and department hierarchy
Before data moves, your Odoo admin creates the Kanban stages per project (from the Team Tracker custom_status vocabulary), custom fields on res.partner, hr.employee, and project.task, and the hr.department hierarchy from Team Tracker teams. FlitStack AI delivers exact field names, selection option lists, stage sequences, and department parent relationships in a setup checklist. Departments and stages must exist in Odoo before records that reference them are imported — otherwise the foreign key resolution fails.
Migrate foundational records in dependency order
Odoo enforces referential integrity — res.partner must exist before hr.employee (via user_id), and project.project must exist before project.task (via project_id). FlitStack AI sequences the migration in this order: (1) res.partner from Team Tracker members, (2) hr.department from teams, (3) hr.employee from members flagged as employees, (4) project.project, (5) project.task with stage_id and user_id linking, (6) account.analytic.line from time entries, (7) hr.attendance with employee_id lookup. Each batch waits for the previous foreign key resolution to complete before committing.
Run a sample migration with field-level diff and stage-name validation
A representative slice — typically 100–300 records across members, tasks, time entries, and attendance — migrates first. FlitStack AI generates a field-level diff report showing source values against destination field values, flagging: custom_status values that failed to map to a stage, member records that matched no Odoo user (owner resolution failures), time entries whose task_id resolved to no project.task, and attendance records whose employee_id resolved to no hr.employee. You review the diff and approve before the full run commits.
Execute full migration with delta-pickup window and rollback plan
The full dataset runs against Odoo CRM. A delta-pickup window (24–48 hours) captures any records modified in Team Tracker during the cutover window — this is critical for time entries logged on the day of migration. FlitStack AI maintains an audit log of every record created, updated, or skipped. If reconciliation reveals missing records or incorrect stage mapping, one-click rollback reverts the Odoo database to its pre-migration state. After rollback, the migration plan is adjusted and the run is re-executed without re-importing already-correct records.
Platform deep dives
Team Tracker
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Team Tracker and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Team Tracker and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between Team Tracker and Odoo CRM.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
8-object category — typical timelines run 2–7 days end-to-end.
API constraints
Team Tracker: Not publicly documented.
Data volume sensitivity
Team Tracker doesn't expose a bulk API — REST + parallelization used for high-volume runs.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during Team Tracker to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Team Tracker to Odoo CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Team Tracker
Other ways to arrive at Odoo CRM
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.