"Get us off 1C" has been the most common request in our inbox since 2022. Companies are looking for an ERP that doesn't depend on Russian developers, runs in the cloud and integrates with European services. Odoo is the most mature option on that market, but migrating from 1C is its own discipline: different data model, different accounting logic and users who have worked in the same screens for a decade. This is the five-stage plan we use on real projects, with the timeline, the traps and the budget.

Why companies are leaving 1C

For Ukrainian companies the question is not only technical. Ukraine imposed sanctions on the Russian developer 1C in 2017 as part of the National Security and Defense Council decision enacted by Presidential Decree No. 133/2017, alongside Yandex, VK and Mail.ru. Since 2022, security teams, auditors and foreign partners increasingly treat any dependency on Russian software, updates or developers as a business risk.

Beyond sanctions, our clients usually name three practical reasons:

  • Cloud and remote work. Typical 1C deployments rely on remote desktop sessions and file or SQL databases on a local server. Odoo is a web application from the start.
  • Integrations. European banks, marketplaces, payment providers and logistics services offer REST APIs and ready connectors for Odoo, and rarely for 1C.
  • Talent and vendor lock-in. Every 1C customization ties you to a shrinking pool of developers. Odoo is written in Python and JavaScript, its Community Edition is open source under LGPL v3 (Odoo on GitHub), so there is a large and growing pool of developers and implementation partners.

1C and Odoo: what is actually different

Understanding the differences up front saves weeks of arguing later.

Aspect 1C:Enterprise Odoo
Architecture Desktop or thin client, configuration-specific objects Web application, modular apps on one ORM
Accounting model Register-based postings generated by documents Journal entries generated by business documents
Customization Configuration changes in the 1C IDE, often modifying the vendor configuration Separate Python modules that extend standard ones
Upgrades Merging vendor updates into a modified configuration Database upgrade service plus porting custom modules
Licensing Per workstation or user, plus server licenses Community free; Enterprise per user per month (Odoo pricing)
Hosting Usually on-premise Odoo Online, Odoo.sh or on-premise

The most important line is customization. In 1C, teams typically edit the vendor configuration itself, so every update becomes a merge project. In Odoo, custom logic lives in separate modules that inherit from standard ones. That only works if you resist the urge to rebuild 1C screens one by one.

Stage 1. Audit — 2 weeks

Before we touch Odoo, we inventory 1C: which configurations are in use, which reports are critical and how much custom code has accumulated. Usually 30–40% of features turn out to be unused, and those don't get migrated.

  • Registry of documents and operation types actually used in the last 12 months
  • Reports run monthly or more often, and who reads them
  • Custom processing and exchanges with banks and marketplaces
  • Integrations with fiscal devices, software cash registers (PRRO) and EDI
  • Data volumes: partners, products, open documents, years of history

The output is a one-page scope: what moves, what is replaced by standard Odoo, what is rebuilt and what is retired.

Stage 2. Architecture — 1 week

We draw a map: what stays in 1C during the transition, what migrates immediately and what is replaced by native Odoo modules. Most clients want to "do it all in one weekend", which is almost always a bad idea. A phased transition over 3–6 months cuts risk dramatically: if something goes wrong, it affects one process, not the whole company.

A typical phasing:

  1. Phase 1: CRM, sales, purchasing and inventory in Odoo; accounting stays in 1C and receives documents through an exchange.
  2. Phase 2: accounting moves to Odoo from the start of a quarter or fiscal year.
  3. Phase 3: HR, manufacturing, website and eCommerce, field service.

Localization: check it before you sign

Odoo ships a Ukrainian fiscal localization module (l10n_ua), but it contains only a basic chart of accounts (Odoo source; Odoo fiscal localizations). Tax invoices registered with the State Tax Service, VAT declarations, payroll under Ukrainian law and PRRO integration come from partner modules or custom development. Budget for them explicitly; this is where 1C still has a head start.

Stage 3. Data — 3–5 weeks

  1. Export reference data (partners, products, warehouses, chart of accounts) from 1C to XML or CSV using standard data exchange processing or direct database queries.
  2. Deduplicate and normalize — 60% of all the data work. A decade of 1C usually means the same customer under three names and products without consistent units.
  3. Import into Odoo through the standard import tool for simple cases (Odoo docs: import and export) and scripts against Odoo's external API for everything else (JSON-2 API).
  4. Move open items: open orders, unpaid invoices, stock balances and opening account balances. We rarely migrate full transaction history; read-only access to the old 1C database covers audit needs.
  5. Reconcile checksums at every step — stock quantities and values, receivables, payables and trial balance. Without this, finance won't sign off.

A minimal import script looks like this:

import requests

ODOO = "https://erp.example.com"
HEADERS = {"Authorization": "bearer <api-key>", "X-Odoo-Database": "prod"}

def create_partner(row):
    payload = {
        "vals_list": [{
            "name": row["name"].strip(),
            "vat": row["edrpou"] or False,
            "ref": row["code_1c"],          # keep the 1C code for reconciliation
            "is_company": True,
        }]
    }
    r = requests.post(f"{ODOO}/json/2/res.partner/create", json=payload, headers=HEADERS)
    r.raise_for_status()
    return r.json()[0]

Keeping the original 1C code in a reference field on every record is the single most useful habit: it makes reconciliation, re-imports and debugging trivial.

Stage 4. Customization — 4–8 weeks

Unique business processes become custom Odoo modules. Not "make it look like 1C" — that's an antipattern. A team that clings to the old interface never gets the benefits of the new system, and every Odoo upgrade becomes more expensive.

Our rules for customization:

  • Configure before you code. Odoo's standard apps, automation rules and Studio cover more than most teams expect.
  • Extend, don't fork. Inherit standard models and views in separate modules; never edit Odoo's core code.
  • Every custom module has an owner and tests, because it will need to be ported at every major upgrade.

The worst thing you can do is replicate 1C on Odoo. The best is to rethink the processes and use the transition to pay down tech debt.

Stage 5. Launch and parallel run — 4 weeks

For the first 2–4 weeks both systems run in parallel: key operations are duplicated in both. It's expensive, but it builds confidence in the data. We compare daily sales, stock movements and cash positions, and investigate every difference until the root cause is clear. After the final reconciliation passes, 1C switches to read-only and is later decommissioned.

Training happens before go-live, not after. Key users test their own scenarios on a copy of production with their own data, and each department has a power user who answers first-line questions during the first month.

Common mistakes

  • Big-bang go-live in the middle of a quarter. Move accounting at the start of a period.
  • Migrating ten years of history. It multiplies data work for little value.
  • Underestimating localization — tax reporting and payroll are rarely "out of the box" for Ukraine.
  • No owner on the business side. An ERP project led only by IT turns into a technical migration of old processes.

Budget and timeline

Company size Duration Budget
Small business (up to 30 users) 3–4 months €25,000–€45,000
Mid-market (30–150 users) 5–7 months €60,000–€150,000
Enterprise (150+ users) 8+ months from €200,000

These figures cover our implementation work; Odoo Enterprise subscriptions and hosting come on top. Once you are live, plan regular upgrades — we cover that in Odoo 17 vs Odoo 18: what changed and is it worth migrating.

For a detailed budget breakdown, see How much does Odoo implementation cost. Ukrainian e-commerce integrations are covered in Integrating Odoo with Nova Poshta and monobank, and the edition choice in Odoo Community vs Enterprise.

FAQ

How long does a migration from 1C to Odoo take? Three to seven months for most small and mid-sized companies, depending on the number of processes and the amount of customization.

Can we migrate historical data from 1C? Yes, but we recommend moving reference data, open items and opening balances, and keeping the old database read-only for history.

Is Odoo suitable for Ukrainian accounting? Yes, with partner localization modules for tax invoices, VAT reporting and payroll. The standard Ukrainian module covers only the chart of accounts.

Community or Enterprise? Community is free and open source; Enterprise adds accounting features, Studio, mobile apps and the official upgrade service. Most mid-market clients choose Enterprise.

Sources

  1. President of Ukraine. Decree No. 133/2017 on sanctions.
  2. Odoo. Source code on GitHub and Ukrainian localization module.
  3. Odoo. Fiscal localizations.
  4. Odoo. Import and export data.
  5. Odoo. External JSON-2 API.
  6. Odoo. Pricing.