UnitBase & Scriptum to Odoo Migration Services
We migrate companies off UnitBase registries and Scriptum BPM workflows onto Odoo 17, 18, and 19 — handling data model mapping, process reengineering, and historical log preservation. Before any migration begins, we run a full audit of your existing data structures, approval chains, and integration endpoints. The result is a scoped migration plan with defined cutover milestones, not a vague go-live date. We work on both Community and Enterprise editions, and every engagement is documented against Odoo's ORM so the output is maintainable after we leave.
Get a Free Migration Audit
Why Companies Leave UnitBase and Scriptum
The Real Problems Our Odoo Migration Team Solves
Most migrations fail because the team treats the move as a data copy job. The actual work is understanding why the old system stopped working — and designing the new one so the same problems do not reappear. UnitBase and Scriptum both hit hard ceilings, but they hit different ones. We scope the migration differently depending on where your current pain is.
UnitBase Performance Collapse at Scale
UnitBase runs on declarative metadata interpreted at query time. That works at 10,000 records. At 100,000+, complex queries consume server resources disproportionately, and interface latency becomes a daily complaint from users. We map each registry to a proper Odoo ORM model with indexed fields, replacing the flat metadata layer with a typed PostgreSQL schema. Query times on equivalent datasets drop to under 2 seconds on standard hardware.
Scriptum Approvals Disconnected from Accounting
In Scriptum, a purchase approval can be perfectly routed but still not create a journal entry or reserve budget — those steps live in a separate system and require manual re-entry. We rebuild these workflows in Odoo's Approvals app with Server Actions that write to account.move and update budget.analytic automatically at each approval transition. The accounting entry exists when the approval is granted, not two days later.
No Reliable API Out of UnitBase
UnitBase does not expose a stable, documented API. Any connection to a warehouse system, marketplace, or analytics tool requires building a custom gateway that breaks on platform updates. Odoo's JSON-RPC and REST interfaces cover every object in the data model. We migrate your data and replace custom gateways with connectors built on Odoo's standard API patterns — with authentication, retry logic, and error handling built in.
Years of Dirty Data in Both Platforms
Neither UnitBase nor Scriptum enforces the relational constraints that keep records clean over time. Duplicate contacts, transactions without period assignments, approval logs referencing deleted users — these are common in any installation running for five or more years. We run a pre-migration data audit that identifies duplicates, orphaned records, and integrity violations before touching migration scripts. Clients typically find 8–15% of existing records require cleanup before import.
What Migration Actually Covers
Our UnitBase & Scriptum to Odoo Migration Services
We scope each engagement as a defined technical deliverable: a data mapping specification, a process reengineering document, or a cutover runbook. Development does not start before the architecture is signed off. Every migration project runs on Odoo 17, 18, or 19 — Community or Enterprise — based on what your workflows actually require, not what a sales tier suggests.
Talk to Our Migration TeamData Model Mapping and Migration
UnitBase registries are flat. Odoo's ORM is relational. Bridging the two requires mapping every registry field to the correct Odoo type — fields.Char, fields.Many2one, fields.One2many, fields.Monetary — and writing transformation scripts that handle nulls, type mismatches, and lookup references. We deliver a field-level mapping document before migration begins, then execute the import via Odoo's standard framework or custom Python loaders depending on data volume. Migration includes pre- and post-load validation queries to confirm row counts and value integrity.
Scriptum BPM Process Reengineering
Scriptum routes built around BPMN diagrams do not map one-to-one to Odoo's automation layer. We analyze each Scriptum workflow — state transitions, conditions, script triggers, and notification rules — and reconstruct them using Automation Rules, Server Actions, and the Approvals app. Where Scriptum required a developer to adjust a routing condition, Odoo Studio handles the same change without code. We document every process change in a before/after spec so your operations team understands exactly what moved and why.
Historical Data and Approval Log Preservation
Companies that have run Scriptum for years have approval history they are legally or operationally required to keep. We preserve this by importing Scriptum approval logs as mail.message records attached to the corresponding Odoo objects, maintaining chronological order. For approval events referencing users no longer in the system, we create archived profiles and note the original actor in the message body. For large log volumes, pre-cutover history is exported to structured PDF/JSON archives linked from the Odoo Documents module. See also our Odoo implementation services for post-migration configuration support.
Integration Rebuild and API Bridge
If your UnitBase installation connects to external tools through custom gateways, those connections break after migration. We audit every existing integration — warehouse systems, e-commerce platforms, logistics APIs, payment processors — and rebuild each one as a proper Odoo connector using ir.config_parameter for credential management and built-in retry logic with dead-letter queuing. This is a full rebuild, not a wrapper around the old gateway. For complex third-party connections, see our Odoo integration and API development services.
Custom Module Development for Migration Gaps
Some processes in UnitBase or Scriptum do not have an equivalent in standard Odoo modules. Rather than forcing your workflow into a field it was not designed for, we build purpose-built modules using Python 3.10+, the ORM's AbstractModel and TransientModel patterns, and OWL 2 for any frontend components requiring custom views. Each custom module ships with a TransactionCase test suite and is documented against the Odoo changelog to reduce friction on future upgrades.
What We Cover End to End
Full-Cycle Migration Services
Each service below runs as a standalone engagement or as part of a broader migration program.
Why Work With Our Odoo Migration Company
We have run migrations from legacy low-code platforms, in-house Access databases, and first-generation ERPs. UnitBase and Scriptum have known architectural patterns — we have encountered the same data integrity issues and the same Scriptum routing edge cases across multiple projects. That means less discovery time and fewer surprises at cutover.
FAQ
Frequently asked questions
What is the difference between migrating from UnitBase and migrating from Scriptum?
UnitBase migrations are primarily data-structure problems. The work involves mapping flat registries to Odoo's relational model, transforming field types, and cleaning data that accumulated without integrity constraints. Scriptum migrations are primarily process problems — the data volume is usually smaller, but the work involves analyzing approval routes, condition logic, and script triggers, then reconstructing them in Odoo's automation layer without breaking the underlying business logic. Projects migrating from both platforms combine both scopes.
How long does a UnitBase to Odoo migration take?
A focused migration covering 5–10 registries with no custom module work runs 4–6 weeks from audit to go-live. A full migration including Scriptum workflow reconstruction, integration rebuilds, and a parallel-run period typically runs 10–16 weeks. The main variable is specification completeness at kickoff — projects where existing workflows are poorly documented add 30–50% to the timeline.
Will we lose historical approval data from Scriptum?
No. Active history from the past two to three years is imported as mail.message records in Odoo, visible in the Chatter panel of each document. Older history is exported to structured PDF or JSON archives and linked from Odoo's Documents module. References to users who have since left the company are handled by creating archived profiles with the original actor noted in the message body.
Do we need Odoo Enterprise, or will Community Edition work for this migration?
It depends on what UnitBase and Scriptum were doing. If UnitBase was managing financial records requiring full double-entry accounting, you probably need Enterprise — Community does not include Odoo's full Accounting module. If UnitBase functioned as a document registry without direct accounting integration, Community may cover your needs. We provide a written comparison of Enterprise vs. Community gaps relevant to your specific workflows before you commit to either. For a full breakdown, see our Odoo ERP development services.
What happens to our existing integrations — WMS, e-commerce, third-party SaaS?
Those integrations need to be rebuilt. We audit every existing connection during the pre-migration phase, document the data flow and API contract for each, and rebuild them as proper Odoo connectors. Depending on whether the external system uses webhooks, polling, or bulk file exchange, the rebuild approach varies. We scope each integration separately with its own estimate.
Can Odoo handle the record volumes we have in UnitBase?
Odoo runs on PostgreSQL and scales to tens of millions of records with proper indexing. For datasets above 5M rows, we add targeted database indexes on filtered fields, evaluate whether heavy reporting queries should run direct SQL via env.cr.execute() rather than through the ORM, and configure materialized views refreshed via ir.cron for dashboard queries. Performance is tested in the staging environment before any cutover decision.
How do UnitBase "lookup" fields translate to Odoo?
UnitBase lookup fields map to Odoo's fields.Many2one type, which creates a proper relational link between records. During migration, we import all referenced objects — contacts, products, categories — first, then import parent records with the correct relational IDs. This two-pass import ensures referential integrity on load. Where UnitBase allowed free-text lookup values with no corresponding master record, we flag those for client review during the data audit; they cannot be migrated directly without a decision on how to handle them.
What does the parallel-run period require from our team?
Your team operates in both systems simultaneously during parallel run. Sales orders, approvals, and transactions entered in one system are cross-checked in the other daily. We maintain a shared discrepancy log and resolve issues in Odoo before the decommission date. The parallel run requires extra effort from your operations team — typically two to four weeks. That overhead is worth it: it is the only reliable way to confirm Odoo handles every real-world edge case before the old system is turned off.
What information do you need to provide a migration quote?
Four inputs: your current platform (UnitBase, Scriptum, or both), the approximate number of registries or active workflows, any external systems currently connected to the platform, and your target Odoo version. If you already have a data dictionary or workflow documentation, scoping moves faster. If not, we offer a paid discovery phase that produces the migration specification — that document becomes the basis for the fixed-price contract.
Do you offer support after the migration is complete?
Yes. We offer monthly maintenance retainers covering bug fixes, minor workflow adjustments, and Odoo security patch compatibility. Retainer scope is a fixed number of developer hours per month allocated against a logged backlog. We also support version upgrades when your Odoo installation needs to move from v17 to v18 or v19 — because migrations happen more than once.
We were told our UnitBase workflows are too complex to migrate. Is that actually true?
Usually not. "Too complex to migrate" is almost always a scoping problem, not a technical one. The real work is documenting what the workflow does — including all exception states — and reconstructing it in Odoo's automation layer. Workflows that look complicated in UnitBase's metadata interface frequently simplify when written as Python Server Actions, because you can write direct conditionals instead of working around platform constraints. Cases that genuinely require custom module development are buildable — just at higher cost than standard configuration work.