CRM migration
Field-level mapping, validation, and rollback between Urban-Hawks and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Urban-Hawks
Source
Odoo CRM
Destination
Compatibility
12 of 12
objects map 1:1 between Urban-Hawks and Odoo CRM.
Complexity
BStandard
Timeline
24–72 hours
Overview
Urban Hawks stores field-service CRM data — contacts, companies, opportunities, and activities — with platform-specific custom properties for remote assistance, technician scheduling, and service-ticket tracking. Odoo CRM uses a unified res.partner model for both contacts and companies, and a single crm.lead object that switches between Lead and Opportunity based on type. This architectural shift requires flattening Urban Hawks' N:N contact-company relationships into Odoo's primary-partner model, translating custom field-service properties into Odoo custom fields or ir.attachment records, and mapping pipeline stages into Odoo's crm.stage kanban lanes. We extract Urban Hawks data via its REST API using scoped read access, transform field types and pick-list values, and load via Odoo's xmlrpc API in dependency order: partners first, then leads, then activities. Workflows, AR integrations, and custom automations do not migrate — we export their definitions as JSON blueprints for Odoo Studio or custom module recreation. A delta-pickup window captures any records modified during the cutover so Odoo reflects Urban Hawks' final 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 Urban-Hawks 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.
Urban-Hawks
Contact
Odoo CRM
res.partner
1:1Urban Hawks contacts map directly to Odoo res.partner records. Odoo treats contacts and companies as the same model — the is_company boolean field distinguishes a company record from an individual contact. Contacts without a primary company receive a placeholder partner record.
Urban-Hawks
Company
Odoo CRM
res.partner
1:1Urban Hawks companies map to Odoo res.partner records with is_company=True. The N:N relationship between Urban Hawks contacts and companies collapses to a single parent_id link on each contact partner — one primary company per contact, with secondary companies stored in partner relations.
Urban-Hawks
Lead
Odoo CRM
crm.lead
1:1Urban Hawks leads map to Odoo crm.lead records with type='lead'. The lead's name, contact name, email, phone, and source information transfer directly, and its status maps to a crm.stage via value‑mapping. Odoo creates a corresponding res.partner from the lead contact data automatically if it does not already exist; otherwise the lead links to the existing partner.
Urban-Hawks
Opportunity
Odoo CRM
crm.lead
1:1Urban Hawks opportunities map to Odoo crm.lead records with type='opportunity'. The opportunity name becomes the crm.lead name, amount maps to planned_revenue, probability is taken from source probability field, and close_date maps to date_deadline. Stage names are translated via value‑mapping to Odoo crm.stage records, and the owner is resolved by email match to Odoo res.users. If the linked contact does not yet exist in Odoo, a new res.partner record is created.
Urban-Hawks
Pipeline
Odoo CRM
crm.team + crm.stage
1:1Urban Hawks pipelines map to Odoo sales teams (crm.team). Each pipeline's stages map to crm.stage records within that team, preserving stage order and probability values. Teams with multiple pipelines in Urban Hawks spawn multiple crm.team records in Odoo, each with its own stage configuration and members. The pipeline name becomes the team name, and the default stage for new leads is set to the first Odoo kanban stage.
Urban-Hawks
Call Activity
Odoo CRM
mail.activity
1:1Urban Hawks call records map to Odoo mail.activity with activity_type_id set to 'call'. The call duration, outcome, and notes transfer to the activity's fields, while the original timestamp becomes the activity's date. The activity is linked to the parent crm.lead or res.partner, and the owner is resolved by email match to Odoo res.users. If the caller contact is not yet a partner, a new res.partner record is created.
Urban-Hawks
Email Activity
Odoo CRM
mail.activity
1:1Urban Hawks email records map to Odoo mail.activity with activity_type_id set to 'email'. The email subject becomes the activity's display name, and the body is stored as the activity's note field. The original timestamp is preserved, and the owner is resolved by email match to Odoo res.users. The activity is attached to the corresponding crm.lead or res.partner, creating a full communication history in Odoo.
Urban-Hawks
Meeting
Odoo CRM
calendar.event
1:1Urban Hawks meeting records map to Odoo calendar.event with start datetime, stop datetime, and name as the event title. The meeting description and location are transferred to the event's description field. Attendees are resolved by matching the meeting's invitee emails to Odoo res.partner records, populating partner_ids. The organizer is set by matching the original owner to an Odoo res.users record.
Urban-Hawks
Note
Odoo CRM
mail.message
1:1Urban Hawks notes map to Odoo mail.message records attached to the crm.lead with message_type='comment'. The original creation timestamp and author are preserved, and the note text becomes the message body. If the note contains file attachments, they are re‑uploaded as ir.attachment records linked to the same crm.lead, preserving the original file name and MIME type.
Urban-Hawks
Custom Field-Service Properties
Odoo CRM
x_studio_* / ir.attachment
1:1Urban Hawks custom properties for AR annotations, technician assignments, and service-ticket metadata require Odoo custom fields created via Odoo Studio or a custom module. Some field-service attachments (AR snapshots, diagnostic files) migrate as ir.attachment records linked to the parent crm.lead.
Urban-Hawks
Attachment / File
Odoo CRM
ir.attachment
1:1Urban Hawks file attachments are re‑uploaded to Odoo ir.attachment records linked to the parent res.partner or crm.lead. Each attachment preserves its original file name, MIME type, and binary data (datas_base64). The Odoo filestore size limits apply per instance configuration; files exceeding the limit are flagged for manual upload after migration.
Urban-Hawks
Owner / User
Odoo CRM
res.users
1:1Urban Hawks owner IDs are resolved by matching the owner email to Odoo res.users. If a match is found, the Odoo user_id is assigned to the record; if not, the owner is flagged and the record is assigned to a fallback Odoo user or placed in a staging queue for manual resolution. All resolution decisions are logged in the migration audit trail for traceability.
| Urban-Hawks | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | res.partner1:1 | Fully supported | |
| Company | res.partner1:1 | Fully supported | |
| Lead | crm.lead1:1 | Fully supported | |
| Opportunity | crm.lead1:1 | Fully supported | |
| Pipeline | crm.team + crm.stage1:1 | Fully supported | |
| Call Activity | mail.activity1:1 | Fully supported | |
| Email Activity | mail.activity1:1 | Fully supported | |
| Meeting | calendar.event1:1 | Fully supported | |
| Note | mail.message1:1 | Fully supported | |
| Custom Field-Service Properties | x_studio_* / ir.attachment1:1 | Fully supported | |
| Attachment / File | ir.attachment1:1 | Fully supported | |
| Owner / User | res.users1: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.
Urban-Hawks gotchas
No documented public API for automated export
AR session media files require separate file handling
Custom field schema varies per account with no reference schema
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 Urban Hawks schema and export data via REST API
We connect to Urban Hawks using scoped read access and extract all CRM objects: contacts, companies, leads, opportunities, activities, and custom properties. We inventory custom field names, pick-list values, and owner records. This inventory drives the Odoo field-creation checklist and value-mapping plan. The audit also identifies N:N contact-company relationships that require collapse-to-primary decisions before migration. We also capture any API usage constraints, such as pagination limits and rate‑throttling policies, to anticipate export timing and avoid data truncation during the extraction phase.
Create Odoo custom fields and configure crm.team and stage setup
Before any data loads, your Odoo admin (or our team) creates the custom fields identified in the Urban Hawks audit — using Odoo Studio for standard fields or a custom module for relational or computed fields. We also deliver a crm.team and crm.stage setup plan so each Urban Hawks pipeline maps to an Odoo sales team with correctly sequenced stages, probabilities, and team-member assignments.
Resolve owners and users by email match
Urban Hawks owner IDs are matched against Odoo res.users by email address. We generate an owner-resolution report listing matched users, unmatched owners, and fallback assignments. Your team either creates Odoo user accounts for unmatched owners or approves fallback assignments before migration runs. No crm.lead or res.partner record lands without a valid user_id. If any owner lacks a corresponding Odoo user, we can optionally provision a temporary generic account and flag the record for later reassignment after go‑live.
Run sample migration with field-level diff
A representative slice — typically 200–500 records spanning contacts, companies, leads, opportunities, and activities — migrates first using Odoo's xmlrpc API in dependency order: partners first (with is_company=True for companies), then leads and opportunities, then activities. We generate a field-level diff comparing source values to Odoo field values so you verify stage mapping, owner resolution, and custom field population before the full run commits.
Full migration with delta-pickup window and audit log
The full migration runs against your Odoo instance. A delta-pickup window of 24–48 hours captures records created or modified in Urban Hawks during cutover so Odoo reflects the final source state at go-live. Every operation is logged in an audit trail. If reconciliation fails — missing required fields, owner mismatches, or data-quality issues — one-click rollback reverts the Odoo instance to its pre-migration state while your team works in Urban Hawks uninterrupted.
Platform deep dives
Urban-Hawks
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Urban-Hawks and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Urban-Hawks and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between Urban-Hawks 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
Urban-Hawks: Not publicly documented. For Salesforce-hosted deployments, standard Salesforce API limits apply..
Data volume sensitivity
Urban-Hawks 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 Urban-Hawks to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Urban-Hawks 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 Urban-Hawks
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.