CRM migration
Field-level mapping, validation, and rollback between Inspection Files and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Inspection Files
Source
Odoo CRM
Destination
Compatibility
11 of 12
objects map 1:1 between Inspection Files and Odoo CRM.
Complexity
BStandard
Timeline
72–96 hours
Overview
Inspection Files structures data around inspections, checklists, findings, and physical locations — an operational model that diverges significantly from Odoo CRM's crm.lead and res.partner architecture. FlitStack AI reads your Inspection Files API exports (or CSV/XLSX extracts) and maps inspection headers to crm.lead records, findings and observations to the lead description field or custom x_ fields, and asset locations to res.partner company records. Inspector user accounts resolve by email match against Odoo res.users. Attachments re-upload via Odoo's ir_attachment model and link back to the parent crm.lead using their external ID stored in x_source_id. We do not migrate Inspection Files workflow rules, scheduling logic, or equipment-level asset hierarchies — those must be rebuilt in Odoo Studio or as Python addons. The migration runs through Odoo's XML-RPC API with batch commits, a delta-pickup window after the bulk load, and an audit log of every write operation. The process begins with a comprehensive data extraction that captures all inspection records, templates, findings, locations, equipment, organizations, and attachments. A pre-migration data quality assessment identifies missing inspector emails, orphaned locations, and duplicate inspection IDs before the write run commences. Custom fields are provisioned in the target Odoo database through ir.model.fields API calls before data writes begin. The migration sequencing ensures that parent records such as locations and organizations migrate first, establishing proper relationship links for child inspection records. A sample migration of representative records validates field-level accuracy before committing to the full dataset. The delta-pickup window captures any records created or modified during the cutover period, ensuring the destination database reflects the complete source state at go-live.
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 Inspection Files 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.
Inspection Files
Inspection
Odoo CRM
crm.lead
1:1Each Inspection Files inspection record maps to one Odoo crm.lead. The inspection title becomes crm.lead.name; inspection date maps to lead create_date; the assigned inspector resolves by email to Odoo res.users. Unmatched inspectors store as x_inspector_name custom field on the lead. Inspections without a location link create standalone leads; those with location links create leads with a partner_id pointing to the mapped res.partner.
Inspection Files
Inspection Template
Odoo CRM
x_inspection_template (custom field on crm.lead)
1:1Inspection Files templates define the checklist structure. Since Odoo crm.lead has no native template field, FlitStack creates an x_template_name char field on crm.lead and writes the source template name into it. The template's item list and scoring logic does not migrate — teams must rebuild checklist logic in Odoo Studio or as Python addon custom fields.
Inspection Files
Finding / Observation
Odoo CRM
x_findings (custom field) + ir.attachment
1:1Inspection Files findings include severity, description, photo, and status. FlitStack writes the first 5 findings as comma-separated lines in x_findings_summary on crm.lead. Each finding with an attached photo creates a separate ir.attachment linked to the crm.lead via the XML-RPC create() call. Findings exceeding 5 attach as ir.attachment records only, with the lead description noting 'N additional findings stored as attachments.' Teams needing granular finding tracking should configure a custom crm.lead.findings model via Odoo Studio after migration.
Inspection Files
Location / Site
Odoo CRM
res.partner
1:1Inspection Files locations (sites, facilities) map to Odoo res.partner records of type 'company'. The location name becomes res.partner.name; address fields map directly. Parent-child location hierarchies map via res.partner.parent_id. Locations without an associated company contact create res.partner records with no linked contacts — flagged for manual review post-migration.
Inspection Files
Equipment / Asset
Odoo CRM
x_asset_ref (custom field on crm.lead) + maintenance.equipment
1:manyInspection Files equipment records linked to inspections can split two ways: the equipment ID stores in x_asset_ref on crm.lead as a reference string. If the Odoo Maintenance module is active, FlitStack also creates maintenance.equipment records for each unique asset, linking back to the location's res.partner as partner_id. Equipment without Odoo Maintenance installed remains as a custom field reference only — teams can activate the module post-migration to populate it.
Inspection Files
Inspector / User
Odoo CRM
res.users
1:1Inspection Files user accounts match to Odoo res.users by email address. Matched inspectors populate x_inspector_id (many2one to res.users) on the crm.lead. Inspection Files users without an Odoo account (e.g., read-only viewers) are flagged — their historical inspection records migrate with x_inspector_name populated, but no Odoo user link is created. FlitStack delivers a user-unmatched report so the admin can either create Odoo accounts or accept the custom-field-only reference.
Inspection Files
Inspection Attachment / Photo
Odoo CRM
ir.attachment
1:1Inspection Files file attachments (photos, PDFs, signed forms) download from the source API and re-upload to Odoo ir.attachment, linked to the parent crm.lead via res_id and res_model='crm.lead'. Odoo's ir.attachment stores files in its filestore or on cloud storage (depending on Odoo configuration). Inline images in finding descriptions download and rehost as individual ir.attachment records. Attachment count per lead is flagged if it exceeds 25 — Odoo list views can degrade with large attachment sets.
Inspection Files
Inspection Status / Stage
Odoo CRM
crm.stage
1:1Inspection Files status values (Draft, In Progress, Completed, Passed, Failed) map to Odoo crm.stage records. FlitStack creates stage records matching the source status names in the target Odoo pipeline. Stage transition timestamps from Inspection Files migrate as x_stage_changed custom datetime fields on crm.lead for reporting continuity. The pipeline stage color coding is preserved as stage color attributes.
Inspection Files
Organization / Account
Odoo CRM
res.partner (parent company)
1:1Inspection Files organizations map to res.partner records of type 'company'. The organization name maps to res.partner.name; industry, employee count, and revenue fields map to their Odoo counterparts. Multi-location organizations get a parent res.partner with child records for each location. Contacts within the organization link via res.partner.contact_ids.
Inspection Files
Custom Inspection Field
Odoo CRM
x_ custom field on crm.lead or res.partner
1:1Inspection Files custom fields on inspections create x_ prefixed fields on crm.lead. Field types map as follows: text → char, number → float, date → date, yes/no → boolean, dropdown → selection. Validation rules and conditional visibility from Inspection Files do not carry over — Odoo Studio or Python addon code must reproduce that logic post-migration. FlitStack delivers a field-mapping manifest listing every source custom field and its destination x_ equivalent.
Inspection Files
Report / PDF Export
Odoo CRM
ir.attachment (no_equivalent)
1:1Inspection Files generates PDF inspection reports tied to each inspection record. These are downloadable files, not structured data. FlitStack can attach the source PDF to the corresponding crm.lead as ir.attachment with datas and res_model='crm.lead'. However, Odoo does not natively render or index PDF content in lead search — this is informational attachment only, not a searchable report. Teams needing report-level search should rebuild reports in Odoo Reporting or a BI addon.
Inspection Files
Scheduling / Recurring Inspection
Odoo CRM
No direct equivalent
1:1Inspection Files recurring inspection schedules and auto-assignment rules are destination-side workflow logic and do not migrate. FlitStack exports the schedule configuration as a JSON manifest for reference. Teams must rebuild recurring inspection logic in Odoo using Calendar + Crm Automated Actions, or via a custom addon. The schedule manifest helps the Odoo admin understand the original cadence before rebuilding.
| Inspection Files | Odoo CRM | Compatibility | |
|---|---|---|---|
| Inspection | crm.lead1:1 | Fully supported | |
| Inspection Template | x_inspection_template (custom field on crm.lead)1:1 | Fully supported | |
| Finding / Observation | x_findings (custom field) + ir.attachment1:1 | Fully supported | |
| Location / Site | res.partner1:1 | Fully supported | |
| Equipment / Asset | x_asset_ref (custom field on crm.lead) + maintenance.equipment1:many | Fully supported | |
| Inspector / User | res.users1:1 | Fully supported | |
| Inspection Attachment / Photo | ir.attachment1:1 | Fully supported | |
| Inspection Status / Stage | crm.stage1:1 | Fully supported | |
| Organization / Account | res.partner (parent company)1:1 | Fully supported | |
| Custom Inspection Field | x_ custom field on crm.lead or res.partner1:1 | Fully supported | |
| Report / PDF Export | ir.attachment (no_equivalent)1:1 | Fully supported | |
| Scheduling / Recurring Inspection | No direct equivalent1: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.
Inspection Files gotchas
No public API reference means export relies on UI-based data extraction
Custom fields and template logic are not visible until after account review
Archived inspection records may require a separate export pass
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
Extract and profile Inspection Files data
FlitStack connects to the Inspection Files API using provided credentials and extracts all inspection records, templates, findings, locations, equipment, organizations, and attachments. For teams using CSV/XLSX exports, FlitStack ingests the files and normalizes them into a staging schema. The extraction run profiles data quality: missing inspector emails, orphaned locations, oversized attachments, and duplicate inspection IDs are flagged in a pre-migration data quality report. This report drives any pre-migration data cleansing before the Odoo write run begins.
Resolve inspector users by email against Odoo res.users
FlitStack queries the target Odoo database via XML-RPC (xmlrpc/2/object) for res.users records matching inspector email addresses from Inspection Files. Matched inspectors populate x_inspector_id on crm.lead during migration. Unmatched inspectors are listed in the user-unmatched report with the option to create new Odoo res.users before migration or accept the x_inspector_name text fallback. This step ensures no crm.lead lands without an owner resolution decision.
Create Odoo custom fields and stage records
Before writing any data, FlitStack provisions the required x_ custom fields on crm.lead and res.partner via Odoo ir.model.fields create() calls. crm.stage records matching Inspection Files status values are created in the target pipeline. This step runs in test mode first — FlitStack validates that the Odoo user has Technical Settings access (Groups: Technical Settings) before writing fields. If field creation fails due to Odoo edition restrictions (e.g., Community edition custom field limits), FlitStack surfaces the error and suggests enabling Developer Mode or using Odoo Studio to pre-create the fields.
Migrate locations and organizations to res.partner first
Odoo crm.lead requires a partner_id (res.partner) for the company association on most standard views. FlitStack sequences the migration so res.partner records for locations and organizations are written before crm.lead records. Parent-child location hierarchies are resolved by migrating parent locations first, then children with their parent_id populated. After all res.partner records are committed, FlitStack runs a relationship integrity check to ensure every lead with a location_id has a valid partner_id before proceeding to the lead migration batch.
Run sample migration with field-level diff
A representative slice of 100–300 inspections — spanning multiple locations, inspector assignments, and finding counts — migrates first. FlitStack generates a field-level diff comparing source Inspection Files values against the written Odoo crm.lead records. The diff covers: crm.lead.name vs inspection name, stage_id vs inspection status, x_inspector_id vs inspector email match, x_findings fields vs finding count, and ir.attachment links vs photo count. The admin reviews the sample diff and approves or requests adjustments before the full run commits.
Full migration with delta-pickup cutover
The full Inspection Files dataset migrates to Odoo via batched XML-RPC write calls, each batch wrapped in a transaction. After the bulk load completes, a delta-pickup window (24–48 hours) polls Inspection Files for any records modified or created since the migration start timestamp. Delta records write to Odoo in a second pass. FlitStack produces an audit log CSV listing every create and write operation with source_id, Odoo res_id, timestamp, and field names changed. One-click rollback reverts the entire crm.lead and res.partner write set if reconciliation fails.
Platform deep dives
Inspection Files
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Inspection Files and Odoo CRM.
Object compatibility
1 of 8 objects need a mapping; the rest are 1:1.
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
Inspection Files: Not publicly documented..
Data volume sensitivity
Inspection Files 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 Inspection Files to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Inspection Files 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 Inspection Files
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.