CRM migration

Migrate from MiniCRM to Odoo CRM

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

MiniCRM logo

MiniCRM

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

67%

8 of 12

objects map 1:1 between MiniCRM and Odoo CRM.

Complexity

BStandard

Timeline

3-6 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from MiniCRM to Odoo CRM is a platform consolidation for teams that have outgrown MiniCRM's micro-to-small-business ceiling and need the broader Odoo ERP ecosystem. MiniCRM organizes data around Cards (Karty) — containers that bundle contact details, company data, deal references, tasks, and custom fields in one record. Odoo separates Contacts (res.partner records), Companies (separate res.partner records or company-linked contacts), and Opportunities into distinct objects with their own pipelines and stage configurations. We resolve the Card-to-contact deconstruction during scoping, map Deals/Interests to Odoo CRM Opportunities, and migrate task assignments with owner resolution. MiniCRM's automation rules cannot be exported via API and must be rebuilt in Odoo's Studio automation framework; we deliver a written inventory of every active rule for the customer's admin to reference during rebuild. MiniCRM's limited export tooling — no documented bulk API, no public rate limit spec — requires a structured CSV and manual export approach during data extraction, which adds time to the discovery phase.

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

MiniCRM logo

MiniCRM

What's pushing teams away

  • Pricing structure is opaque and not clearly communicated — a G2 reviewer explicitly noted difficulty understanding what they were paying for and which features were included at their tier.
  • Limited advanced features as the team scales — power users outgrow the platform's capability ceiling for complex pipelines, custom objects, and integrations.
  • Recent acquisition by group.one introduces uncertainty — customers on review platforms express concern about product direction, support continuity, and whether pricing or terms may change.
  • Polish-language documentation and support — non-Polish speakers may find help resources and customer support limited when troubleshooting migration-related issues.
  • Lack of bulk API tooling — teams with large datasets report difficulty exporting data efficiently, making migration projects more manual and time-consuming.

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 MiniCRM objects map to Odoo CRM

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

MiniCRM

Card (Karta)

maps to

Odoo CRM

Contact + Opportunity (split required)

1:many
Fully supported

MiniCRM Cards are multi-purpose containers that bundle contact details, company fields, deal references, tasks, notes, and custom fields. During migration we de-containerize the Card into Odoo's normalized schema: contact fields map to res.partner, company name maps to the partner's company_name field or a separate Company contact, and the deal/interest component maps to crm.lead (Opp). Custom fields on Cards migrate to custom fields on the relevant Odoo object. We apply a decision rule during scoping to determine whether each Card's primary intent was a Contact or an Opportunity based on stage and field occupancy.

MiniCRM

Contact (Kontakt)

maps to

Odoo CRM

Contact (res.partner)

1:1
Fully supported

MiniCRM contact-level fields (name, email, phone, address) map directly to Odoo res.partner records. We use email as the dedupe key during import and preserve MiniCRM's contact_id as an external ID field partner_minicrm_id on res.partner so upserts are safe on re-run. Polish-language field labels are confirmed against the customer's export before mapping.

MiniCRM

Company (Firma)

maps to

Odoo CRM

Company Contact (res.partner, type=contact, is_company=True)

1:1
Fully supported

MiniCRM Company records with normalized fields (name, address, NIP/tax ID if populated) map to Odoo res.partner with is_company=True. Companies with fewer normalized fields receive only the fields present in the export; missing Odoo fields are left blank rather than populated with placeholder data. Company contacts are created before related person Contacts so the hierarchy is intact during import.

MiniCRM

Deal / Interest (Interes)

maps to

Odoo CRM

Opportunity (crm.lead)

1:1
Fully supported

MiniCRM Deals (Interesy) are associated with Cards and carry pipeline stage names, deal value, currency, expected close date, and owner reference. We map these to Odoo CRM crm.lead records with type=opportunity. Pipeline stage names from MiniCRM are mapped to Odoo stage_id via a config file we build during scoping that aligns each MiniCRM stage label to the nearest Odoo stage sequence, creating new Odoo stages where MiniCRM stages have no direct equivalent.

MiniCRM

Pipeline Stage

maps to

Odoo CRM

CRM Stage + Sales Team

lossy
Fully supported

MiniCRM workspace pipeline stages map to Odoo CRM stage records within the default pipeline. Stage probabilities migrate as percentage values in the stage config. If MiniCRM uses multiple workspaces with distinct pipelines, we create additional Odoo CRM Sales Teams and map each MiniCRM workspace to a corresponding Odoo team. The customer confirms team naming and user assignment during scoping.

MiniCRM

Task (Zadanie)

maps to

Odoo CRM

Project Task (project.task) or CRM Task (mail.activity)

1:1
Fully supported

MiniCRM Tasks linked to Cards map to Odoo project.task (if using Project module) or mail.activity records (if using CRM activities only). We preserve the task title, description, due date, status (stage), and assignee (user_id resolved via email match). Task recurrence patterns are documented as free-text notes in Odoo because they may not map to Odoo's recurrence model without custom configuration. Reminder settings migrate as mail.activity records with activity_type_id and reminder fields set.

MiniCRM

Note (Notatka)

maps to

Odoo CRM

Note (mail.message)

1:1
Fully supported

Free-text Notes attached to MiniCRM Cards migrate to Odoo mail.message records with message_type=comment, linked to the parent res.partner or crm.lead record via res_id and model. Author information is preserved where the MiniCRM export includes it; otherwise the note is attributed to the system migration user. Rich-text formatting is preserved where the export format supports it; plain-text otherwise.

MiniCRM

User / Worker (Pracownik)

maps to

Odoo CRM

User (res.users)

1:1
Fully supported

MiniCRM Users (Pracownicy) map to Odoo res.users records. We match by email address, which must be unique on res.users. The customer's Odoo admin provisions Users before the production migration step, and we validate that every MiniCRM owner reference resolves to an active Odoo User before record import begins. Role and permission distinctions in MiniCRM may not map directly to Odoo's access groups, so we flag any non-standard role mappings during scoping.

MiniCRM

Calendar / Event

maps to

Odoo CRM

Meeting (calendar.event)

1:1
Fully supported

MiniCRM Calendar events associated with Cards map to Odoo calendar.event records with start, stop, duration, location, and description preserved. Attendee lists migrate as calendar.attendee records linked to the event. Where MiniCRM exports attendee email addresses, we resolve them to existing Odoo res.partner records by email match; unresolved attendees are noted for manual review. All-day events and recurring events may require post-migration cleanup depending on export fidelity.

MiniCRM

Custom Field (Pole dodatkowe)

maps to

Odoo CRM

Custom Field (ir.model.fields)

lossy
Fully supported

MiniCRM custom fields on Cards (text, number, date, choice/selection types) are detected during scoping and pre-created in Odoo as ir.model.fields on res.partner or crm.lead before data import. Choice fields require explicit value mapping: each MiniCRM picklist option is mapped to the corresponding Odoo selection key. Custom field labels in Polish are preserved as field descriptions for the customer's admin to rename post-migration. Fields that exist in MiniCRM but have no Odoo equivalent are added to the migration scope only if the customer confirms they need them; otherwise they are excluded from the export plan.

MiniCRM

Tag / Label

maps to

Odoo CRM

Tag (crm.tag)

lossy
Fully supported

MiniCRM Tags applied to Cards for segmentation migrate to Odoo CRM tags on the corresponding crm.lead or res.partner record. Tags are stored in crm.tag and linked via crm.lead.tag_ids (many2many). We deduplicate tags during import — if the same label appears with different capitalizations in MiniCRM, we normalize to a single lowercase tag name and flag the consolidation for the customer's admin to review.

MiniCRM

Attachment reference

maps to

Odoo CRM

Attachment (ir.attachment)

1:1
Fully supported

File attachments referenced in MiniCRM Cards are identified during scoping. If MiniCRM exposes attachment URLs or binary data in the export, we download and upload them as ir.attachment records linked to the parent res.partner or crm.lead via res_model and res_id. Attachment size limits in Odoo (default 25MB per file) are confirmed against the largest MiniCRM attachment during scoping. Files exceeding this limit are flagged for the customer's admin to handle manually or to configure an external storage (S3, Google Drive) integration.

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.

MiniCRM logo

MiniCRM gotchas

High

Automation rules do not export via API

Medium

Pricing tier boundaries are opaque

Medium

API export tooling is limited and undocumented

Low

Acquisition by group.one may affect product continuity

Low

Polish-language interface and 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

  • MiniCRM automation rules do not export via API

    MiniCRM's Automatyzacje (trigger/action workflows tied to card status changes, field fills, and deadlines) are stored server-side and are not exposed through any documented export endpoint. We cannot migrate them programmatically. During scoping, we enumerate every active automation rule the customer has configured — including the trigger, conditions, actions, and affected Card workspaces — and deliver a written inventory with a recommended Odoo Studio Automation equivalent for each. Revenue-impacting sequences (deal stage triggers, follow-up emails, task assignments) are prioritized in the inventory. Rebuild is a separate step handled by the customer's admin or an Odoo implementation partner.

  • MiniCRM export requires a manual CSV workaround

    MiniCRM's help/export/ endpoint returns a 302 redirect and the public documentation does not document bulk export endpoints, authentication details, or rate limits. We work around this by requesting CSV/manual exports via the customer account interface where available, supplemented by screen-scraped data extracts where necessary. This adds 1-2 weeks to the discovery phase compared to a platform with a documented API. We validate export completeness against record counts in MiniCRM before mapping begins. Any gaps in the export (partial date ranges, missing custom fields) are flagged as scope risks in the scoping report.

  • Card de-containerization requires explicit mapping decisions

    MiniCRM Cards bundle contact fields, company fields, and deal data together, while Odoo separates these into distinct res.partner and crm.lead records. During scoping we ask the customer's admin to classify each Card workspace as contact-primary, deal-primary, or mixed. Mixed workspaces may produce both a Contact and an Opportunity per Card; contact-primary workspaces produce only Contact records. Failing to make this decision before migration results in either orphaned Opportunities without a Contact or duplicate Contacts without Deals, both of which require manual cleanup post-migration.

  • Polish-language labels require translation scoping

    MiniCRM is a Polish-market product. Field names, automation rule descriptions, pipeline stage labels, and custom field definitions in the data export appear in Polish. During scoping we work with the customer's team to confirm the meaning of each Polish-language label that affects the migration mapping. This overhead is typically one to three days depending on the number of custom fields and automation rules. Labels that are left unconfirmed risk being mapped to the wrong Odoo field, which is discovered only during UAT.

  • Odoo custom field creation must precede data import

    Odoo requires custom fields to be created before data can be written to them via API. We pre-create every custom field (field name, type, model assignment, selection options if applicable) in the destination Odoo database during the schema design step before any record import begins. If new custom fields are discovered in the MiniCRM export after the import has started, the import must be paused, the new fields created, and the affected records re-imported. This risk is mitigated by a thorough custom field audit during discovery.

Migration approach

Six steps for a successful MiniCRM to Odoo CRM data migration

  1. Discovery and export extraction

    We audit the MiniCRM account across all active workspaces, Cards, Contacts, Companies, Deals (Interesy), Tasks, Notes, Calendar events, Attachments, Custom Fields, and Automation Rules. Because MiniCRM lacks a documented bulk API, we request CSV and manual exports via the customer account and supplement with screen-based extracts where the account interface allows. We validate record counts against MiniCRM's own dashboard and flag any export gaps before mapping begins. The discovery output is a written migration scope document confirming object counts, custom field inventory, automation rule list, and owner count.

  2. Schema design and Card split decision

    We design the Odoo destination schema: creating custom fields on res.partner and crm.lead via Odoo Studio or direct database write, configuring CRM pipeline stages (aligning MiniCRM stage names to Odoo stages), setting up Sales Teams per MiniCRM workspace, and defining the Card-to-record split rule. The customer confirms the split decision (contact-primary vs deal-primary vs mixed per workspace) before schema deployment. We deploy into a non-production Odoo database first for validation. We also confirm the customer's Odoo edition (Community or Enterprise) and which Odoo Apps are active, as app availability affects which Odoo objects are present.

  3. Owner reconciliation and User provisioning

    We extract every distinct MiniCRM Owner (Pracownik) referenced on Cards, Tasks, and Deals and match by email against the destination Odoo org's res.users table. Any MiniCRM owner without a matching Odoo User is held in a reconciliation queue. The customer's Odoo admin provisions missing Users before production migration begins. Migration cannot insert records with owner references that resolve to inactive or absent Users, as Odoo's access control rejects the write. We also confirm whether inactive MiniCRM users (former employees) should be migrated as inactive Odoo Users to preserve historical assignment.

  4. Staging migration and reconciliation

    We run a full migration into the non-production Odoo environment using representative data volume. The customer's admin spot-checks 25-50 random records against the MiniCRM source, verifies that task assignments, deal values, and contact details match, and confirms the stage mapping is correct. We correct any field mapping errors discovered during staging before production migration begins. Staging also surfaces any duplicate detection issues — if MiniCRM has duplicate Cards for the same contact, we apply a dedupe strategy (keep most recent, keep most complete) agreed upon with the customer.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Companies (res.partner, is_company=True) first, then Contacts (res.partner, is_company=False with company_id resolved), then Opportunities (crm.lead) with partner_id and user_id resolved, then Tasks and Calendar events with res_model and res_id pointing to the correct parent records, then Notes as mail.message records, and finally Tags via crm.lead.tag_ids. Each phase emits a row-count reconciliation report before the next phase begins. We use Odoo's XML-RPC API with batch chunking and exponential backoff on rate-limit responses. We flag any records that fail import and resolve them in a retry pass before cutover.

  6. Cutover, validation, and Automation rebuild handoff

    We freeze MiniCRM writes during the cutover window, run a final delta migration of any records modified during the window, then mark Odoo as the system of record. We deliver the Automation Inventory document to the customer's admin team: every MiniCRM Automatyzacja with its trigger, conditions, and actions, plus a recommended Odoo Studio Automation equivalent. We support a one-week hypercare window where we resolve any record reconciliation issues raised by the team. We do not rebuild MiniCRM automation rules as Odoo Studio automations inside the migration scope; that is a separate engagement handled by the customer's admin or an Odoo implementation partner.

Platform deep dives

Context on both ends of the pair

MiniCRM logo

MiniCRM

Source

Strengths

  • Card-based record model is easy for small teams to understand and use immediately.
  • Monthly subscription tiers scaled to micro and small business budgets, with no upfront installation cost.
  • Built-in automation triggers and actions cover common follow-up sequences without third-party tools.
  • Active Polish-language support community and documented features tailored to local SME workflows.
  • Responsive browser-based UI accessible on desktop and mobile without requiring desktop software.

Weaknesses

  • API documentation is sparse — no public rate limit spec, no bulk export endpoint clearly documented, limiting automated migration options.
  • Pricing transparency is a known friction point — customers report difficulty understanding what features map to which subscription tier.
  • Small product team and regional focus mean fewer third-party integrations compared to global CRM platforms.
  • Automation rules cannot be exported and must be manually rebuilt in the destination system.
  • Recent acquisition by group.one introduces potential for product instability, API changes, or shifting support terms.
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. All 8 core objects map 1:1 between MiniCRM and Odoo CRM.

B

Overall complexity

Standard migration

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

  • Object compatibility

    A

    All 8 core objects map 1:1 between MiniCRM and Odoo CRM.

  • 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

    MiniCRM: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

Estimate your MiniCRM 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 MiniCRM to Odoo CRM data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Most MiniCRM to Odoo migrations land between three and six weeks for accounts under 10,000 Cards, 2,000 Deals, and a straightforward workspace structure. The primary timeline driver is MiniCRM's limited export tooling — without a documented bulk API, the data extraction phase alone takes one to two weeks longer than a platform with a full REST API. Migrations with large task histories (over 5,000 tasks), multiple Card workspaces, complex custom field schemas, or Polish-language label translation overhead move to eight to fourteen weeks.

Adjacent paths

Related migrations to explore

Ready when you are

Move from MiniCRM.
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