CRM migration

Migrate from StreetSmart to Odoo CRM

Field-level mapping, validation, and rollback between StreetSmart and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.

StreetSmart logo

StreetSmart

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

100%

13 of 13

objects map 1:1 between StreetSmart and Odoo CRM.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

StreetSmart CRMs typically store contacts, companies, deals, and activities with owner assignments and basic pipeline stage tracking. Odoo CRM consolidates these into two primary models: res.partner for contacts and companies (with address book semantics), and crm.lead for leads and opportunities with a kanban-stage pipeline. The migration maps StreetSmart contacts to res.partner, StreetSmart companies to res.partner records with a company flag, and StreetSmart deals to crm.lead with stage values translated via Odoo's stage pick-list per pipeline. Custom fields from StreetSmart land as ir.property or custom.char fields on the respective Odoo model. Owner resolution runs by email match against Odoo res.users. Activity history (calls, emails, meetings, notes) migrates as mail.message records attached to the parent crm.lead or res.partner. FlitStack sequences the load so foreign-key dependencies resolve correctly — partners before leads, then activities. Workflows, automation rules, and email templates do not migrate and must be rebuilt in Odoo Studio or via Odoo actions. The migration uses Odoo's xmlrpc external API with authenticated session handling, respecting batch-size limits to avoid rate-throttling on larger datasets.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

StreetSmart logo

StreetSmart

What's pushing teams away

  • Limited third-party integrations outside of mainstream ERP connectors — teams using niche or custom back-office systems find StreetSmart lacks out-of-the-box connectivity, requiring expensive custom development.
  • Customisation constraints on workflows and forms — businesses with non-standard service processes find the built-in workflow builder inflexible, especially for multi-step approval chains.
  • Reporting and analytics gaps — users note that built-in dashboards do not provide sufficient visibility into technician utilisation, SLA compliance, or revenue attribution, pushing them toward BI tools.
  • Customer support responsiveness — some reviewers flag delayed response times for technical issues, particularly when integrations break after platform updates.

Choosing

Odoo CRM logo

Odoo CRM

What's pulling them in

  • Teams choose Odoo CRM for its modular architecture — one base install with one-click app additions means they can adopt CRM alone and add accounting, inventory, or sales later as the business grows.
  • Small businesses pick Odoo because the Community edition is free and open-source, with no per-user or contact limits, allowing full evaluation before committing to a paid Enterprise tier.
  • The drag-and-drop Kanban pipeline and AI lead scoring are highlighted across G2 reviews as concrete features that make lead management faster and more visual than spreadsheet-based workflows.
  • Odoo's native integration with email, live chat, SMS, VoIP, and WhatsApp means inbound leads from multiple channels feed into a single pipeline without third-party middleware.
  • Companies in retail, supply chain, and construction value that Odoo's CRM module shares the same PostgreSQL database and UI as its ERP modules, eliminating data silos between sales and operations.

Object mapping

How StreetSmart objects map to Odoo CRM

Each row shows how a StreetSmart 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.

StreetSmart

Contact

maps to

Odoo CRM

res.partner

1:1
Fully supported

StreetSmart contacts map directly to Odoo res.partner records. Set partner's is_company = False. Use Odoo's address fields (street, city, state_id, country_id, zip) to match StreetSmart's address properties. Email and phone map to standard contact fields. Ensure that each contact's timezone is captured in a custom field if needed for reporting, and set the partner's type to 'contact' to distinguish from company records.

StreetSmart

Company

maps to

Odoo CRM

res.partner (company type)

1:1
Fully supported

StreetSmart companies map to Odoo res.partner with is_company = True. Parent-child company hierarchies in StreetSmart map to Odoo's parent_id on res.partner — the parent company record must migrate first to avoid circular-reference errors. If a company lacks a parent, assign it to a root-level placeholder partner to maintain referential integrity and simplify downstream reporting.

StreetSmart

Deal

maps to

Odoo CRM

crm.lead

1:1
Fully supported

StreetSmart deals migrate as Odoo crm.lead records. Set type = 'opportunity' for deals with active revenue; set type = 'lead' for pre-revenue pipeline entries. The crm.lead.name maps from StreetSmart deal name. Ensure that the deal amount is stored in the planned_revenue field, and map any custom probability values to the probability field, preserving the original sales forecasting data.

StreetSmart

Pipeline

maps to

Odoo CRM

crm.team + crm.stage

1:1
Fully supported

StreetSmart pipelines become Odoo crm.team records, one per pipeline. Each pipeline's stage set becomes crm.stage records linked to that team via team_id. This allows Odoo's kanban view to display pipeline-specific stages correctly. If multiple pipelines share identical stage names, FlitStack still creates distinct stage records per team to maintain uniqueness and avoid stage-id conflicts in the kanban layout.

StreetSmart

Pipeline Stage

maps to

Odoo CRM

crm.stage

1:1
Fully supported

Stage names map value-by-value per pipeline. Odoo requires stage sequence ordering and optional probability values per stage. Preserving StreetSmart stage-entered timestamps requires a custom datetime field on crm.lead. Map each StreetSmart stage label to an Odoo stage with the correct sequence index and assign the corresponding probability percentage to align forecasting expectations.

StreetSmart

Activity (Call/Email/Meeting)

maps to

Odoo CRM

mail.message + mail.activity

1:1
Fully supported

StreetSmart activity sub-records map to Odoo mail.message records attached to the parent crm.lead or res.partner via res_model and res_id. Use mail.message.subtype_id to classify activity type (email, call, meeting) and preserve original timestamps. If an activity lacks a subtype mapping, assign the generic 'Note' subtype to keep the record visible in Odoo's activity stream without losing historical context.

StreetSmart

Note / Attachment

maps to

Odoo CRM

ir.attachment

1:1
Fully supported

StreetSmart file attachments and inline notes re-upload to Odoo's ir.attachment model linked to the parent record. Odoo's attachment storage (filestore or external) must be confirmed before migration. Inline note content migrates as mail.message with empty subtype. Verify that the storage location has sufficient capacity for all uploaded files and set appropriate access rights to protect sensitive documents during the transition.

StreetSmart

Owner / User

maps to

Odoo CRM

res.user

1:1
Fully supported

StreetSmart owner_id on each record resolves by email match against Odoo res.users. Unmatched owners are flagged before migration runs; assign them to a fallback Odoo user or invite them to Odoo first. No record lands without an Odoo user owner.

StreetSmart

Custom Field (Contact)

maps to

Odoo CRM

ir.model.fields (x_ prefix) on res.partner

1:1
Fully supported

StreetSmart custom fields on contacts require Odoo custom field creation via Odoo Studio or direct ir.model.fields writes before data loads. Field type mapping: text → char, number → float, pick-list → selection, date → date. Track field creation as a pre-migration step.

StreetSmart

Custom Field (Deal)

maps to

Odoo CRM

ir.model.fields (x_ prefix) on crm.lead

1:1
Fully supported

StreetSmart deal-level custom properties migrate as Odoo custom fields on crm.lead. Priority flags, deal sources, and custom scoring fields require pre-creation in Odoo before migration data is loaded. Note that Odoo Enterprise offers field-level access rules; Community edition treats all custom fields as universally visible.

StreetSmart

Association (Contact-to-Company)

maps to

Odoo CRM

res.partner (address home) / child_ids

1:1
Fully supported

StreetSmart N:1 contact-to-company associations map to Odoo's child_ids on the company res.partner record. Contacts without a primary company in StreetSmart attach to a designated 'Unassigned Contacts' res.partner stub record. Ensure the stub partner is marked as inactive to prevent it from appearing in active partner searches, and set its name to 'Unassigned Contacts' for clear identification in reports.

StreetSmart

Lead Status

maps to

Odoo CRM

crm.lead.stage_id

1:1
Fully supported

StreetSmart lead status values map to Odoo crm.stage via value mapping per pipeline. New, Contacted, Qualified, Lost, Won — each maps to an Odoo stage with appropriate sequence position and probability percentage. If a lead status does not have a direct Odoo counterpart, create a custom stage with a neutral probability and label it to preserve the original categorization.

StreetSmart

System ID / Audit Trail

maps to

Odoo CRM

x_source_id (custom char on target object)

1:1
Fully supported

Store StreetSmart's internal record ID as a custom char field (e.g., x_source_id) on each Odoo record. This enables delta-run de-duplication, rollback traceability, and cross-referencing during reconciliation. Populate x_source_id with the original StreetSmart identifier before any transformations, and index the field in PostgreSQL for fast lookups during incremental syncs.

Gotchas + challenges

What specifically takes care here

Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.

StreetSmart logo

StreetSmart gotchas

High

StreetSmart API requires explicit key provisioning

Medium

Work Order status enumeration may differ between StreetSmart editions

Medium

Attachment metadata stored outside the primary Work Order record

Low

Custom fields schema is not discoverable via public documentation

Odoo CRM logo

Odoo CRM gotchas

High

Odoo.sh version gating blocks assisted migrations from trial

High

Enterprise modules fail to install on Community after database restore

Medium

Custom module view inheritance breaks between Odoo major versions

Medium

Custom fields risk losing their application context on Community

Low

API access for Community is gated behind the Custom Plan

Pair-specific challenges

  • Pipeline-to-stage mapping requires Odoo crm.stage pre-creation per team

    Odoo CRM stages are scoped to crm.team, not global. If StreetSmart has three pipelines with overlapping stage names (e.g., 'Qualified' appears in all three), Odoo requires three separate crm.stage records — one per team. FlitStack creates the team-stage structure before data lands, but your admin needs to define how many Odoo teams to create and which StreetSmart pipelines collapse into which team. Failing to pre-create stages results in null stage_id assignments on migrated crm.lead records, which breaks the kanban view.

  • Odoo XML-RPC batch limits require chunked writes on large datasets

    Odoo's external API (xmlrpc) has a default request payload limit that varies by Odoo version and hosting configuration. StreetSmart datasets exceeding 20,000 records per object require FlitStack to chunk writes and implement retry logic with exponential backoff to avoid 504 timeout errors. Additionally, Odoo Enterprise on Odoo.sh enforces stricter rate limits than self-hosted Odoo instances — the migration plan must account for your specific Odoo hosting environment before estimating cutover duration.

  • Custom fields in Odoo require pre-creation before data loads

    Odoo does not auto-create custom fields during data import. StreetSmart custom fields on contacts and deals — such as industry-specific pick-lists, deal scoring numbers, or reference IDs — must be defined as Odoo ir.model.fields records before FlitStack loads the migration dataset. The Odoo Studio UI is the fastest path for fewer than 20 custom fields; larger volumes require direct PostgreSQL writes to ir_model_fields or Odoo's technical settings. This step adds 2–4 hours of schema preparation and must be completed before the sample migration run.

  • Activity associations require parent records to exist first

    Odoo mail.message records attached to crm.lead or res.partner require the parent record to already exist in the database with a known Odoo ID. StreetSmart activity logs reference deals and contacts by source IDs that need resolution to Odoo IDs. If a deal is not yet migrated when its associated activities are processed, the activity orphan records with null res_id. FlitStack sequences the migration as Partners → Companies → Leads → Activities to resolve this dependency, but any records with broken foreign keys are flagged in the audit log.

  • StreetSmart API rate limits may extend export duration

    StreetSmart's export API applies per-minute rate limits on bulk data retrieval. For datasets above 100,000 records, the initial data extraction from StreetSmart can extend beyond a single business day depending on the tier of API access your StreetSmart instance provides. FlitStack captures the raw export under rate-limit retry conditions, but the export phase is not counted against the migration clock — it runs before the Odoo load begins. For large exports, consider scheduling during off-peak periods and ensure your API tier supports bulk retrieval to avoid timeout delays.

Migration approach

Six steps for a successful StreetSmart to Odoo CRM data migration

  1. Extract StreetSmart data via API with audit of schema

    FlitStack connects to StreetSmart's export API using scoped read access and extracts all standard objects: contacts, companies, deals, pipelines, stages, and activities. A schema audit compares StreetSmart's custom field list against Odoo's field catalog to identify custom field creation requirements before migration data is loaded. The extract phase runs read-only against StreetSmart — your team continues working uninterrupted. During extraction, FlitStack logs record counts and flags any API pagination anomalies to ensure complete data capture.

  2. Pre-create Odoo teams and crm.stage records

    Before any data lands in Odoo, FlitStack creates crm.team records for each StreetSmart pipeline and populates crm.stage records with the corresponding stage names, sequence positions, and probability values. This step converts StreetSmart's flat stage model into Odoo's team-scoped stage architecture. Your Odoo admin reviews the team-stage plan and approves or consolidates pipelines before stage records are committed. If your organization uses multiple sales units, each unit receives its own crm.team to preserve pipeline isolation and reporting accuracy.

  3. Resolve owner and user assignments by email

    StreetSmart owner IDs resolve to Odoo res.users records via email address matching. Unmatched owners — those without an Odoo user account — are listed in a pre-migration exception report. Your team either invites those users to Odoo or designates a fallback owner before the full migration run. No crm.lead or res.partner record is created without a resolved user_id, ensuring your Odoo pipeline populates with the correct salesperson attribution.

  4. Run sample migration with field-level diff

    A representative sample — typically 200–500 records spanning contacts, companies, deals, and activities — migrates first into a staging Odoo database. FlitStack generates a field-level diff report comparing source values against Odoo field values after transformation. You verify that pipeline-to-stage mapping is correct, owner resolution worked, and custom field values landed as expected. Approval of the sample diff triggers the full migration.

  5. Execute full migration with delta-pickup window

    The full dataset loads into Odoo using chunked xmlrpc writes respecting API rate limits. A delta-pickup window of 24–48 hours runs concurrently, capturing any StreetSmart records modified during the cutover window. All operations are written to FlitStack's audit log. If reconciliation finds discrepancies — missing records, failed foreign-key resolutions, or duplicate detection — FlitStack provides a one-click rollback to the pre-migration snapshot before your team goes live on Odoo CRM.

Platform deep dives

Context on both ends of the pair

StreetSmart logo

StreetSmart

Source

Strengths

  • Real-time field data sync pushes job status, location, and signatures to the back office without manual re-entry.
  • Mobile app consolidates dispatch, status updates, photo capture, and signatures into one technician interface.
  • Dispatcher scheduling and route optimisation based on technician skill, location, and availability.
  • Pre-built integrations with mainstream ERP and accounting tools for invoicing and payroll handoff.
  • Approachable feature set for small-to-mid field-service shops that find enterprise FSM platforms too heavy.

Weaknesses

  • Integration ecosystem is narrow beyond mainstream ERP connectors; niche back-office tools need custom development.
  • Built-in workflow and form builder is inflexible for multi-step approval chains and non-standard service processes.
  • Reporting and analytics dashboards lack the depth needed for technician utilisation, SLA, and revenue attribution.
  • Customer-support response time is cited as inconsistent, particularly when integrations break after platform updates.
  • Limited public review and community footprint vs Jobber, Housecall Pro, or ServiceTitan, complicating buyer due diligence.
Odoo CRM logo

Odoo CRM

Destination

Strengths

  • Modular open-source architecture lets teams start with CRM and add ERP apps as needs grow, all sharing one PostgreSQL database.
  • Free Community edition with no contact limits and full source code access means zero licensing cost for evaluation and small deployments.
  • Drag-and-drop Kanban pipeline with AI lead scoring gives a visual, prioritized view of the sales funnel without requiring custom configuration.
  • Native integrations with email, live chat, SMS, VoIP, WhatsApp, and social media feed all inbound leads into a single unified inbox.
  • Active Odoo Community Association (OCA) maintains dozens of community-maintained modules on GitHub for extended functionality.

Weaknesses

  • Gmail and email integration reliability is a recurring complaint — threads drop and conversations scatter across inboxes, disrupting sales team workflows.
  • Enterprise edition pricing stacks quickly: multiple apps at per-user rates ($25–$50/user/month) plus Odoo.sh hosting costs more than many SMBs anticipate.
  • Setup and configuration complexity increases significantly once custom fields, automation rules, and multiple installed modules are in play.
  • Odoo.sh trial databases run on a version (e.g., 18.3) that is not directly migratable to Odoo.sh, blocking the assisted migration path Odoo advertises.
  • Version upgrades between major Odoo releases (e.g., 17→18) frequently break custom module view definitions and XPath expressions, requiring manual remediation.

Complexity grading

How hard is this migration?

Standard CRM migration. 1 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across StreetSmart and Odoo CRM.

  • Object compatibility

    B

    1 of 8 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    StreetSmart: Rate-limit thresholds are not publicly documented on the developer portal.

  • Data volume sensitivity

    B

    StreetSmart doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your StreetSmart to Odoo CRM migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about StreetSmart to Odoo CRM data migrations

Answers to the questions buyers ask most during StreetSmart to Odoo CRM migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your StreetSmart to Odoo CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most StreetSmart-to-Odoo CRM migrations complete within 48–72 hours of execution time for datasets under 50,000 total records. The pre-migration phase — Odoo schema setup, custom field creation, and team-stage planning — adds 2–5 business days depending on the number of StreetSmart pipelines and custom fields. Datasets exceeding 500,000 records, or StreetSmart instances with API rate-limit constraints, extend the total timeline to 5–10 days.

Adjacent paths

Related migrations to explore

Ready when you are

Move from StreetSmart.
Land in Odoo CRM, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day