Project Management migration
Field-level mapping, validation, and rollback between Breeze and Asana. We move data and schema; workflows are rebuilt natively in Asana.
Breeze
Source
Asana
Destination
Compatibility
8 of 12
objects map 1:1 between Breeze and Asana.
Complexity
CModerate
Timeline
3-5 weeks
Overview
Moving from Breeze to Asana is a schema-normalization migration. Breeze allows each project to define its own custom field set, so a field named Priority might be a text field in one project and a dropdown in another. Asana uses a global custom field model where fields are defined once per workspace and applied to projects. We inspect each Breeze project's field schema during export scoping, detect type collisions across projects, resolve them into a unified Asana field map, and write that map before any task data moves. Breeze's public REST API does not expose task-level comments, so we cannot include comment history in the API export; we flag this gap at scoping and advise customers to use Breeze's in-app CSV export or screenshots for comment recovery. Time tracking entries migrate as a linked object attached to tasks. Tags map to Asana tags. We do not migrate Automations or Breeze Workflows; we deliver a written inventory for the customer's admin to rebuild in Asana's Workflow Builder.
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 object lands in Asana, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Breeze
Project
Asana
Project (Workspace Project)
1:1Breeze Projects map directly to Asana Projects. We preserve the project name, description, start date, due date, status, and owner. Breeze's project-level status field maps to Asana's project privacy setting and color label since Asana does not have a project-level status enum beyond Archived. If Breeze projects are set to Archived, we map them to Asana's Archived status on the project. Owner is resolved by email match against the destination Asana workspace members.
Breeze
Task
Asana
Task
1:1Breeze Tasks map to Asana Tasks. We preserve task name, description (rich text), due date, start date, priority, assignee, and status. Breeze task IDs are stored as external references on the Asana task for traceability. Breeze's To Do, In Progress, and Done statuses map to Asana's default section or to Custom Fields for status if the customer requires a named status column in List view.
Breeze
Subtask
Asana
Subtask
1:1Breeze supports one level of Subtasks under Tasks. We export the full parent-child relationship and recreate it as Asana Subtasks under the parent Task. Breeze task IDs are preserved in the Asana task notes or as a custom field for reconciliation. If any Breeze subtask contains nested subtasks, we flag those records for the customer to restructure post-migration since Asana supports infinite nesting but the source data had a non-standard depth.
Breeze
Custom Field
Asana
Custom Field (Workspace)
lossyThis is the most complex mapping in a Breeze-to-Asana migration. Breeze allows each project to define its own custom field set, so the same field name can be a text field in one project and a dropdown in another. We inspect every Breeze project's field schema during export scoping, detect all unique field names across projects, resolve type collisions (for example, Priority as text in Project A and dropdown in Project B), and build a unified Asana global Custom Field set. We then apply each field to the relevant Asana projects via Custom Field Settings. Customers are advised during scoping if significant type collisions exist and must confirm the resolution strategy before migration begins.
Breeze
Tag
Asana
Tag
1:1Breeze Tags are flat, label-style identifiers attached to Tasks. Asana Tags are also flat. We export tags as an array per task and create corresponding Tag records in the destination workspace, then apply them to each migrated task. Asana's Topics feature provides cross-project classification beyond flat tags, but since Breeze has no hierarchical taxonomy, we map tags 1:1 to Asana tags and flag Topics as a post-migration organizational option.
Breeze
Time Entry
Asana
Task (Time Log or Custom Fields)
1:manyBreeze Time Tracking entries contain billable hours, duration, date, and optional description. Asana's native time tracking is available on Premium and above plans and stores time logs against tasks. We migrate time entries as a series of time logs against the corresponding Asana task with the original duration, date, and description preserved. If the destination Asana workspace is on the Free or Standard plan without time tracking enabled, we write billable hours and duration as a number Custom Field plus a text Custom Field for description against the task, and flag the Premium time tracking upgrade as an option.
Breeze
User / Assignee
Asana
User (Workspace Member)
1:1Breeze Users are referenced by email, name, and role. We export the full user roster and map each task assignee by email against the destination Asana workspace members list. If the destination workspace does not yet have all Breeze users provisioned as members, we hold those tasks in a reconciliation queue pending user provisioning. SSO or domain-based user provisioning is outside migration scope and requires admin action before those users can be assigned in Asana.
Breeze
Statuses (per project)
Asana
Section or Custom Field (Status)
lossyBreeze uses customizable task statuses per project. Asana does not have a native per-project status enum equivalent to Breeze's model. We offer two migration strategies: map Breeze statuses to Asana Sections in List view (Section per Breeze status value, tasks grouped accordingly), or create a single-select Custom Field named Status with the Breeze status values as options and apply it to tasks. The customer chooses the strategy during scoping. We do not recommend mapping Breeze statuses directly to Asana's task completion checkbox since that loses the intermediate status values.
Breeze
Attachment (URL metadata)
Asana
Attachment (URL)
1:1Breeze attachments are stored in Breeze's file system and referenced by URL in the API. We export attachment metadata (filename, URL, size, upload date) but not the binary file content. We write the attachment URL as a link on the Asana task. Actual files must be downloaded separately from Breeze's storage and re-uploaded to Asana or a linked cloud storage provider (Google Drive, Dropbox). For migrations with hundreds of attachments, we coordinate a file export session in parallel with the API export to minimize the overall migration window.
Breeze
Comment
Asana
(none)
1:1Breeze's public REST API does not expose task-level comments. We cannot programmatically include comment history in a migration export. This is a platform-level limitation of Breeze's API, not a mapping gap. We flag this gap during scoping and advise customers to use Breeze's in-app CSV export or take screenshots of comment threads before the migration window opens. Comment recovery is a manual step that sits outside the automated migration scope.
Breeze
Budget and Estimate
Asana
Custom Field (Number or Currency)
lossyBreeze includes budget and estimate fields at the project level. Asana does not have native budget fields. We create number and currency Custom Fields on the project record (using Asana's custom fields on projects feature) and map the budget and estimate values. If the customer requires budget tracking against individual tasks, we discuss creating a project-level budget Custom Field and task-level allocation tracking as a separate configuration post-migration.
Breeze
Workflow / Automation
Asana
(none)
1:1Breeze Workflows are property-triggered automations with conditions and actions. Asana's Workflow Builder and Rules use a different trigger and action model. We do not migrate automations as code. We deliver a written inventory of every active Breeze Workflow with its trigger, conditions, actions, and a recommended Asana Workflow Builder equivalent. The customer's admin rebuilds them post-migration.
| Breeze | Asana | Compatibility | |
|---|---|---|---|
| Project | Project (Workspace Project)1:1 | Fully supported | |
| Task | Task1:1 | Fully supported | |
| Subtask | Subtask1:1 | Fully supported | |
| Custom Field | Custom Field (Workspace)lossy | Fully supported | |
| Tag | Tag1:1 | Fully supported | |
| Time Entry | Task (Time Log or Custom Fields)1:many | Fully supported | |
| User / Assignee | User (Workspace Member)1:1 | Fully supported | |
| Statuses (per project) | Section or Custom Field (Status)lossy | Fully supported | |
| Attachment (URL metadata) | Attachment (URL)1:1 | Fully supported | |
| Comment | (none)1:1 | Fully supported | |
| Budget and Estimate | Custom Field (Number or Currency)lossy | Fully supported | |
| Workflow / Automation | (none)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 gotchas
Comments are not exported via Breeze API
Attachment files require separate file-system export
Custom field schemas differ per project
No permanent free tier limits evaluation
Asana gotchas
Automation rules have no export representation
API rate limits cap bulk migration throughput
Portfolios are view-only objects that do not hold data
Custom field enum options cannot be updated via API
Subtasks do not appear in project views by default
Pair-specific challenges
Migration approach
Discovery and schema audit
We audit the source Breeze workspace across all projects. We extract the full project list, task counts per project, subtask presence and depth, user roster, and per-project custom field schemas including field names, field types, and which projects use which fields. We identify type collisions where the same field name has different types across projects and document them as a collision resolution worksheet for customer sign-off. We also extract tag names, time entry counts, attachment URLs, and any active Workflow names for the automation inventory.
Custom field collision resolution
Before any data moves, we present the customer with the collision resolution worksheet. For each field name with multiple types across projects, the customer chooses: adopt the most common type and convert all instances, split into separate fields (for example, Priority_Text and Priority_Dropdown), or rename conflicting fields to make them distinct. We update the Asana workspace global Custom Fields based on the resolved schema. This step gates the migration start date because Asana's custom fields are created before tasks are imported and cannot be bulk-edited after import without additional tooling.
Asana workspace preparation
We create the destination Asana workspace with the agreed custom field schema. We configure project structure (projects, sections, default fields), user provisioning requirements, and tag taxonomy. If the customer chose Section-based status mapping, we create sections per Breeze status value within each project. If the customer chose Custom Field status mapping, we apply the status Custom Field to the relevant projects. We run a dry-run import of a sample project to validate field mapping before processing the full dataset.
Migration in dependency order
We run the migration in this order: Users (validated against Asana workspace members), Projects (with start dates, due dates, and descriptions), Tags (created globally before task import), Tasks with Custom Field values, Subtasks, Time Entries (as time logs or custom fields depending on Asana plan), and Attachment metadata. Each phase emits a row-count reconciliation report. Tasks reference their parent task by Asana GID, resolved during the subtask phase. Owner and assignee resolution uses email matching against the workspace member list.
File export coordination
In parallel with the API export, we coordinate a file export session for Breeze attachment downloads. We provide the customer with a file-export checklist and a mapping of attachment URLs to Asana task GIDs so files can be re-uploaded to Asana or a linked storage provider. For small attachment sets, we can assist with a bulk URL download script. For large sets (hundreds of files), we recommend a dedicated file-export session with the customer acting as the data custodian for the downloaded files.
Comment recovery handoff
We cannot export comments via the Breeze API. We deliver a comment recovery guide that walks the customer's admin through Breeze's in-app CSV export for comments and a recommended screenshot workflow for any comment threads with file attachments or inline images. The guide includes per-project export steps and estimated time per project based on comment volume observed during scoping. This is a manual step the customer's team executes before or after the migration window.
Cutover, validation, and automation inventory handoff
We freeze writes to Breeze during cutover and run a delta migration of any tasks modified during the migration window. We deliver the full automation inventory: every Breeze Workflow with its trigger, conditions, and actions mapped to a recommended Asana Workflow Builder or Rule equivalent. We do not rebuild automations as part of the migration scope. We support a five-business-day post-cutover window to resolve any data quality issues raised by the customer's team. Asana Workflows and Breeze Workflows are separate rebuild engagements.
Platform deep dives
Breeze
Source
Strengths
Weaknesses
Asana
Destination
Strengths
Weaknesses
Complexity grading
Moderate Project Management migration. 1 of 8 objects need a manual workaround.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Breeze and Asana.
Object compatibility
1 of 8 objects need a manual workaround.
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: Not publicly documented by Breeze.
Data volume sensitivity
Breeze 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 to Asana migration scoping. Not seeing yours? Book a call.
Walk through your Breeze to Asana 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
Other ways to arrive at Asana
Same-Project Management migrations
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.