ERP migration
Field-level mapping, validation, and rollback between Breeze ERP and Acumatica. We move data and schema; workflows are rebuilt natively in Acumatica.
Breeze ERP
Source
Acumatica
Destination
Compatibility
11 of 12
objects map 1:1 between Breeze ERP and Acumatica.
Complexity
BStandard
Timeline
3–6 weeks
Overview
Breeze ERP is a project-management-centric SaaS with boards, tasks, time tracking, and custom fields. Its data model centers on Projects containing Tasks, with contacts and companies as secondary entities. Breeze has no native GL, AP/AR, or inventory management. Acumatica is a mid-market cloud ERP built on a relational database (SQL Server or MySQL underneath) with separate modules for Financials, Distribution, Inventory, Projects, and CRM. The two platforms model business data fundamentally differently: Breeze uses flat key-value custom fields while Acumatica uses typed DAC extensions with Usr-prefixed custom fields requiring schema setup. Acumatica's relational model enforces referential integrity — master data (Customers, Vendors, Inventory Items) must load before transactional data (Project Tasks, Sales Orders). FlitStack AI sequences the migration so parent entities land first, foreign keys resolve cleanly, and project-task hierarchies from Breeze become sub-records under Acumatica Projects. We support import via Acumatica Import Scenarios (CSV-driven), direct database insert, or API-based load — chosen per entity based on data volume. Every Breeze custom field gets mapped to a corresponding Acumatica custom field with type-aware conversion. User accounts from Breeze resolve to Acumatica contacts by email match. Files attached to Breeze tasks re-upload as NoteDocuments linked to the target Project Task. Workflows, automations, and sequences do not migrate — those have to be rebuilt in Acumatica's automation engine. FlitStack provides Breeze automation exports as rebuild reference documents. All imports run with scoped read access on Breeze; your team continues working. A 24–48 hour delta pickup captures changes made during the final data cutover before you switch over to Acumatica.
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 Breeze ERP object lands in Acumatica, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Breeze ERP
Project
Acumatica
PMProject
1:1Breeze Projects map directly to Acumatica PMProject records. We preserve the original Breeze project name, description, status, start/due dates, and estimated hours as PMProject fields. Breeze task hierarchies become PMTask sub-records under the project. Custom fields on the Breeze project map to Usr-prefixed fields on PMProject via Acumatica DAC extension.
Breeze ERP
Task
Acumatica
PMTask
1:1Breeze Tasks under a project map to PMTask sub-records in Acumatica's Projects module. Each task inherits the PMProjectID from its parent Breeze project. Task name maps to summary, description maps to the detail field, and priority maps to PMTask.urgencycd with value conversion. Breeze status (To Do, In Progress, Done) maps to PMTask.status with Acumatica-specific status codes.
Breeze ERP
User / Team Member
Acumatica
Contact (Users as Contacts)
1:1Breeze team members resolve to Acumatica Contacts by email match. The Contact.FullName maps from Breeze user display name, and Email maps directly. Unmatched Breeze users are flagged before migration — you either create Acumatica user accounts first or assign those records to a fallback Contact. Breeze user IDs are stored as a custom reference field for owner traceability.
Breeze ERP
Custom Field (Project-level)
Acumatica
PMProject Usr-field (DAC extension)
1:1Breeze project-level custom fields map to Acumatica PMProject extension fields with Usr-prefixed names. Type-aware mapping: text → string(256), number → decimal, date → date, picklist → selector. Each field requires an Acumatica Customization Project to define the DAC extension and publish it before data loads. FlitStack delivers the field-definition mapping plan as part of the schema setup package.
Breeze ERP
Custom Field (Task-level)
Acumatica
PMTask Usr-field (DAC extension)
1:1Breeze task custom fields become Acumatica PMTask extension fields (Usr-prefixed). Acumatica requires the DAC extension to be published in a Customization Project before PMTask records with those fields can be inserted. FlitStack sequences the migration so custom field definitions are deployed first, then PMTask data loads. Picklist fields from Breeze require value-by-value mapping against Acumatica selector definitions.
Breeze ERP
Task Priority
Acumatica
PMTask.urgencycd
1:1Breeze task priority (Low, Medium, High) maps to Acumatica PMTask urgency codes using value translation: Low → Urgency 2 (Low), Medium → Urgency 3 (Medium), High → Urgency 4 (High). Urgency code defaults (Urgency 1–4) are defined in Acumatica's Priority code table. If your Acumatica instance uses custom urgency codes, we map against your actual code values.
Breeze ERP
Task Status
Acumatica
PMTask.status
1:1Breeze task status (To Do, In Progress, Done, Cancelled) maps to Acumatica PMTask.status codes. Acumatica's default Project Task statuses are New, In Progress, Completed, and Cancelled — we map each Breeze status to the closest Acumatica equivalent. Breeze CompletedDate maps to PMTask.dateCompleted where applicable. If Breeze uses custom task statuses, we produce a full value-mapping table during the planning phase.
Breeze ERP
Time Tracking (Estimated Hours)
Acumatica
PMTask.estimatedHours
1:1Breeze estimated hours on a task map to PMTask.estimatedHours. This field is available on PMTask and enables Acumatica's project budget vs. actual reporting. If Breeze stores estimated hours at the project level rather than the task level, those map to PMProject.estimatedDuration or a custom field on PMProject depending on your Acumatica configuration.
Breeze ERP
Time Tracking (Actual Hours)
Acumatica
PMTask labor items / ProjCost
1:1Breeze actual logged hours become Acumatica ProjCost labor items linked to the PMTask. Each Breeze time-entry maps to a ProjCost record with the employee as the cost code, hours as the quantity, and the task's labor item as the inventory ID. This preserves individual time entries as cost transactions rather than collapsing them into a single aggregate figure.
Breeze ERP
File Attachment
Acumatica
NoteDocument / UploadFile
1:1Breeze file attachments on tasks download and re-upload as NoteDocuments in Acumatica, linked to the corresponding PMTask or PMProject. File name and the original upload timestamp are preserved as note attributes. Acumatica's default file size limit is 25 MB per file; files exceeding this are flagged for manual handling or chunked upload.
Breeze ERP
Project Tag / Category
Acumatica
PMProject.classID / UsrCustomField
1:manyBreeze allows multiple tags per project. Acumatica PMProject uses a single classID field for classification. The primary Breeze tag maps to classID; additional tags are stored in a custom multi-select field (UsrBreezeTags__c) or as a related note. We surface the tag mapping plan before migration so you can decide whether to consolidate tags into a single classID or use the custom multi-select approach.
Breeze ERP
Breeze Project ID
Acumatica
UsrBreezeProjectID__c (PMProject)
1:1Breeze's internal project ID is stored as a custom text field (UsrBreezeProjectID__c) on PMProject. This serves as the source system reference for delta-run de-duplication, reconciliation audits, and rollback identification. It is required for the delta pickup window to work correctly — new or modified Breeze records are matched against this ID during the final sync pass.
| Breeze ERP | Acumatica | Compatibility | |
|---|---|---|---|
| Project | PMProject1:1 | Fully supported | |
| Task | PMTask1:1 | Fully supported | |
| User / Team Member | Contact (Users as Contacts)1:1 | Fully supported | |
| Custom Field (Project-level) | PMProject Usr-field (DAC extension)1:1 | Fully supported | |
| Custom Field (Task-level) | PMTask Usr-field (DAC extension)1:1 | Fully supported | |
| Task Priority | PMTask.urgencycd1:1 | Fully supported | |
| Task Status | PMTask.status1:1 | Fully supported | |
| Time Tracking (Estimated Hours) | PMTask.estimatedHours1:1 | Fully supported | |
| Time Tracking (Actual Hours) | PMTask labor items / ProjCost1:1 | Fully supported | |
| File Attachment | NoteDocument / UploadFile1:1 | Fully supported | |
| Project Tag / Category | PMProject.classID / UsrCustomField1:many | Fully supported | |
| Breeze Project ID | UsrBreezeProjectID__c (PMProject)1: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.
Breeze ERP gotchas
No publicly documented API or bulk export endpoint
HTML-only export from web interface lacks field-level schema
No published technical reference for integrators or migration partners
Acumatica gotchas
API user licenses cap concurrent sessions and request throughput
Multi-tenant filtering requires CompanyID awareness
Custom fields require separate discovery before field mapping
Notes and attachments use a separate linked table structure
Implementation timelines frequently run 3–9 months end-to-end
Pair-specific challenges
Migration approach
Extract Breeze data at API rate limits and map custom fields
FlitStack connects to Breeze via its API using scoped read access, pulling Projects, Tasks, Users, Contacts, and custom field definitions in sequence. We respect the Breeze API rate limit of 100 calls per minute and track daily call counts to avoid hitting the 5,000/day ceiling on large migrations. For large datasets we distribute extraction across multiple days. We simultaneously inventory every custom field definition in Breeze — field label, type, and pick-list values — to produce the Acumatica DAC extension plan. File attachments on tasks are queued for download separately from the API pull. We deliver a data inventory report before any Acumatica schema work begins.
Build Acumatica Customization Project and schema extensions
FlitStack delivers a complete schema setup package for your Acumatica admin: the list of PMProject and PMTask Usr-prefixed custom fields with their types, selector definitions for pick-list fields, and the Priority/Urgency code mappings. Your admin creates and publishes the Customization Project in your Acumatica test environment before the migration dry run. This step is sequenced first because Acumatica will reject PMProject or PMTask records containing custom fields that are not defined in a published Customization Project. We provide validation scripts to confirm all custom fields are published and accessible before the data load begins.
Resolve Breeze users to Acumatica contacts and validate project hierarchy
Breeze team members are matched to Acumatica Contacts by email address — this is the owner and assignee resolution step. Unmatched Breeze users are flagged with a resolution report: either invite them to Acumatica first or assign their records to a fallback Contact. Simultaneously, we validate that every Breeze task has a parent project — tasks orphaned from their project are identified and resolved (either linked to the correct project or assigned a placeholder project). Acumatica cannot load PMTask records without a valid PMProjectID. This step runs in the Breeze data against the target Acumatica instance's contact list and produces a go/no-go decision before the dry run.
Run sample migration with field-level diff and value mapping validation
A representative slice of Breeze data — typically 100–300 records spanning 5–10 projects and their tasks — migrates into your Acumatica test environment. FlitStack generates a field-level diff comparing source Breeze values against the loaded Acumatica records. This validates the task-status and priority value mappings, confirms custom field data is populating correctly in Acumatica, and verifies that project-task hierarchies render properly in Acumatica's Projects screen. Any field with a mismatch, missing value, or truncation is corrected in the mapping plan before the full run. This step typically takes 1–2 days of clock time after the Acumatica Customization Project is published.
Execute full migration and delta pickup for in-flight changes
The full Breeze dataset loads into Acumatica using the validated mapping — Acumatica Import Scenarios for structured entities, direct API inserts for complex records. We run in batches to manage Acumatica's processing load. A delta pickup window of 24–48 hours after the full load captures any Breeze records created or modified during the cutover period while your team continues working in Breeze. After delta pickup, we run a final reconciliation report comparing total record counts and key field values between Breeze and Acumatica. FlitStack generates an audit log of every import operation. One-click rollback is available if reconciliation identifies critical mismatches.
Platform deep dives
Breeze ERP
Source
Strengths
Weaknesses
Acumatica
Destination
Strengths
Weaknesses
Complexity grading
Standard ERP migration. 3 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Breeze ERP and Acumatica.
Object compatibility
3 of 8 objects need a mapping; the rest are 1:1.
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
Breeze ERP: Not publicly documented — no published API surface, so rate limits cannot be confirmed externally..
Data volume sensitivity
Breeze ERP 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 Breeze ERP to Acumatica migration scoping. Not seeing yours? Book a call.
Walk through your Breeze ERP to Acumatica migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Breeze ERP
Other ways to arrive at Acumatica
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.