Asana → Linear
Move active product and engineering work from Asana to Linear while preserving comments, projects, dependencies, files, identities, and a deliberate workflow instead of importing years of stale tasks.
Should you make this move?
Both platforms have a case. Compare what you gain with what you give up before scheduling the cutover.
Asana
- Flexible project planning serves many departments and work styles
- Structured ownership, status, and workflow views improve operational visibility
- Broad flexibility can produce inconsistent structures and administrative sprawl
- Custom fields, automations, history, and reporting are difficult to reproduce exactly
Linear
- Fast, opinionated product-development workflows keep software teams focused
- Structured ownership, status, and workflow views improve operational visibility
- Non-software work and highly customized enterprise processes fit poorly
- Custom fields, automations, history, and reporting are difficult to reproduce exactly
Linear: Fast, opinionated product-development workflows keep software teams focused. This removes a major source-side concern: Broad flexibility can produce inconsistent structures and administrative sprawl.
What you lose: Flexible project planning serves many departments and work styles. What you inherit: Non-software work and highly customized enterprise processes fit poorly.
Know the shape of the move.
This timeline assumes
- One Asana organization with at most 20 teams and 20,000 active tasks.
- A Linear workspace admin runs the importer.
- Only owned active work and selected history are imported.
- Users are mapped before confirmation.
- Asana stays read-only for one delivery cycle.
What survives the move.
“Partial” and “manual” are not footnotes. They are work that must be scheduled and verified.
| Item | Outcome | Impact | What happens | Mitigation |
|---|---|---|---|---|
| Task names and notes | clean | critical | Linear maps tasks to issues and notes to Markdown descriptions. | Test long notes, formatting, and links. |
| Comments | clean | high | The dedicated Asana importer supports comments. | Reconcile counts on decision-heavy tasks. |
| Assignees | partial | high | Users must map to Linear identities or issues become unassigned. | Complete and approve the user map before import. |
| Projects | partial | critical | A Linear issue can belong to one project, so one is chosen for multi-homed Asana tasks. | Choose the canonical project and preserve other memberships as labels or links. |
| Statuses and sections | partial | critical | Linear documents imported status as Backlog or Done, not the full Asana workflow. | Design Linear statuses and reclassify active work after import. |
| Subtasks and dependencies | clean | high | Sub-issues and blocked/blocking relations are supported. | Test deep nesting and critical dependency chains. |
| Attachments | partial | high | Files except images and videos can become links in descriptions; destination storage behavior differs. | Open every critical file and preserve durable originals. |
| Custom fields | manual | high | There is no universal mapping for every Asana field. | Map to priority, estimate, label, project, cycle, or description. |
| Rules, forms, portfolios, goals, and approvals | lost | critical | Asana application workflows do not transfer as working Linear behavior. | Rebuild only approved product workflows and retain business planning elsewhere if needed. |
| Personal preferences and notifications | lost | low | Inbox, follows, favorites, and notification state do not migrate. | Provide onboarding defaults and let users configure preferences. |
Where each thing goes.
| Source | Destination | Method | Notes |
|---|---|---|---|
| Task name | Issue title | automatic | Preserve stable source ID in metadata. |
| Notes | Description | automatic | Converted to Markdown. |
| Assignee | Assignee | transform | Requires user mapping. |
| Priority | Priority | automatic | Verify scale semantics. |
| Project | Project | transform | Choose one for multi-project tasks. |
| Tag | Team label | automatic | Normalize duplicates. |
| Subtask and dependency | Sub-issue and blocked/blocking | automatic | Verify chains. |
| Custom field | Priority, estimate, label, project, cycle, or description | manual | Map by meaning. |
Make the move recoverable.
Create the source-of-truth backup
Preserve projects, tasks, comments, files, users, fields, rules, and active-work decisions.
- Inventory teams, projects, tasks by state, users, guests, fields, rules, forms, portfolios, goals, and integrations.
- Export critical projects and an API-backed count manifest.
- Download critical attachments.
- Classify tasks as import, archive, or discard.
- Record user and project mappings.
Proof to capture: A manifest accounts for every active task, comment class, attachment, user, project, and workflow.
Work scope and identity map
Import only owned work with correct assignees.
- Choose active and required history.
- Map every user.
- Block on unowned critical tasks.
Proof to capture: Save the input, output, command or tool settings, warnings, and final item counts.
Workflow redesign
Turn Asana sections into a coherent Linear flow.
- Define team statuses.
- Map multi-project tasks.
- Reclassify active work after import.
Proof to capture: Save the input, output, command or tool settings, warnings, and final item counts.
The things most likely to hurt.
These are operating limits. Treat every “Stop if” condition as a blocked migration, not a suggestion.
Multi-homed tasks lose context
A task belongs to multiple Asana projects.
- Consequence
- Teams lose one planning context.
- Mitigation
- Choose one project and preserve others explicitly.
Stop if: Any critical project membership has no representation.
Backlog and Done flatten active workflow
Active tasks land in broad default states.
- Consequence
- Current delivery status is wrong.
- Mitigation
- Run a controlled post-import reclassification before cutover.
Stop if: Critical active work cannot be assigned a correct state.
Both systems automate work
Asana rules and Linear integrations both create tasks.
- Consequence
- Duplicate work and notifications.
- Mitigation
- Disable source automation first.
Stop if: A test event writes to both systems.
Do the work in this order.
- Days 1–2 · scope
Scope and model
8–12 hours active2 days elapsedTeam review waiting- Classify work.
- Design Linear teams, statuses, projects, labels, and identities.
Depends on: Asana and Linear admins
Stop / go checkpointPilot?
Go when: Every active work class has an owner and destination.
Stop when: Critical custom workflow is unmapped.
- Day 3 · backup
Backup
4–7 hours active1 day elapsedExports waiting- Export project and count evidence.
- Preserve files and mappings.
Depends on: Approved scope
Stop / go checkpointImport?
Go when: Counts and critical context reconcile.
Stop when: Any active project is absent.
- Days 4–6 · pilot
Pilot import
8–13 hours active3 days elapsedImporter and owner review waiting- Import representative teams.
- Validate comments, users, projects, dependencies, and files.
- Reclassify workflow.
Depends on: Backup
Stop / go checkpointWaves?
Go when: Representative team scenarios pass.
Stop when: Critical context or ownership is wrong.
- Days 7–10 · waves
Import waves
7–14 hours active2–4 days elapsedImport processing waiting- Import by team.
- Reconcile and reclassify each wave.
- Rebuild integrations.
Depends on: Passed pilot
Stop / go checkpointFreeze?
Go when: Every wave reconciles.
Stop when: Duplicates or missing task relationships remain.
- Days 11–15 · cutover
Delta and delivery cycle
3–9 hours active3–5 days elapsedNormal team usage waiting- Freeze Asana.
- Apply final changes.
- Switch intake and observe one cycle.
Depends on: Imported waves
Stop / go checkpointClose rollback?
Go when: All teams deliver from Linear.
Stop when: A critical workflow remains source-only.
Cut over with a way back.
Cutover
Make Linear the only work tracker after a final Asana delta.
- Freeze Asana edits and rules.
- Capture final changed tasks.
- Apply reviewed deltas to Linear.
- Switch forms, Slack, Git, and email intake.
- Make Asana read-only.
- Run triage and planning.
Proof to capture: One system receives work and all active tasks have correct owner, state, and context.
Rollback
Resume Asana without losing Linear work.
- Freeze Linear.
- Export post-cutover issues and changes.
- Restore Asana access and rules.
- Apply reviewed deltas.
- Restore intake.
Proof to capture: Asana owns all current work and Linear is read-only.
- Missing active work
- Wrong assignees
- Broken dependencies
- Critical comment/file loss
- Failed intake integration
Prove the migration worked.
Every blocking check must pass. Capture the evidence before cleanup begins.
| Pass | ID | Check | Method | Expected result | Evidence |
|---|---|---|---|---|---|
V-01Blocking | Task disposition | Reconcile stable IDs. | 100% imported, archived, or discarded. | Task report. | |
V-02Blocking | Assignees | Compare counts and samples. | Correct owners. | User map. | |
V-03Blocking | Membership | Review multi-project tasks. | Canonical project and retained context. | Project exceptions. | |
V-04Blocking | Active status | Run team planning scenarios. | Current state is correct. | Team sign-off. | |
V-05Blocking | Comments and files | Inspect critical tasks. | Required context opens. | Context log. | |
V-06Blocking | Subtasks and dependencies | Compare critical chains. | Relationships match. | Dependency report. | |
V-07Blocking | Single intake | Trigger each integration. | One Linear issue and no Asana write. | Delivery log. | |
V-08Blocking | Team permissions | Test member, guest, and unauthorized users. | Approved access only. | Access matrix. |
Remove the scaffolding safely.
Safe after: One complete delivery cycle and all team-owner sign-offs.
- Archive exports and mappings.
- Revoke migration tokens.
- Remove obsolete Asana rules and intake.
- Keep Asana read-only through retention.
- Update workflow documentation.
- Schedule quarterly access and stale-work reviews.
Built to be reviewed.
Tested 2026-07-19. Next scheduled review: 2026-10-19.
- Linear: import issues from AsanaAccessed 2026-07-19
- Asana: export project dataAccessed 2026-07-19