Project Management migration
Field-level mapping, validation, and rollback between Merlin Project and Asana. We move data and schema; workflows are rebuilt natively in Asana.
Merlin Project
Source
Asana
Destination
Compatibility
14 of 15
objects map 1:1 between Merlin Project and Asana.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Moving from Merlin Project to Asana requires a file-export-based migration rather than an API-based migration, which is the most significant constraint on the source side. Merlin Project has no public REST API, so every object must be extracted by opening each view in the desktop application, configuring visible columns to include custom fields and Notes, and running CSV export per open view. We scope these exports by view type, validate column completeness against a pre-migration checklist, and parse the resulting CSVs into Asana's data model. Activities with duration and date fields map directly to Asana tasks; Dependencies stored as predecessor/successor references in CSV require a transform step to become Asana dependencies; Resources with hourly rates map to Asana Assignees with time tracking notes rather than a native rate field. The four non-exportable views (Mindmap, Kanban, Netplan, Reports) cannot be migrated programmatically. We document these as manual handoff items with screenshots the customer captures before migration and a written rebuild guide for Asana. We do not migrate Merlin Project reports, automations, or resource-level conflict indicators as these are in-app constructs without a data export path.
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 Merlin Project 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.
Merlin Project
Project
Asana
Project
1:1Merlin Project files map to Asana Projects. Each Merlin Project file is a self-contained project with nested Activities, Resources, and Assignments. We extract project metadata (name, start date, notes) from the Gantt view CSV and create a corresponding Asana Project with the project start date set as a custom field since Asana Projects do not have a native start date field separate from the first task due date. Projects are created before any child object import so that Asana GID references are available for task assignment.
Merlin Project
Activity
Asana
Task
1:1Merlin Activities map to Asana Tasks within the target Project. We parse activity_name, start_date, end_date, duration, notes, and custom properties from the CSV. Custom properties defined per project in Merlin appear as additional columns in the export and map to Asana custom fields (text, date, number, or enum depending on content). Task due dates in Asana map from Merlin end_date; start_date is preserved as a custom field since Asana Tasks do not have a native separate start date.
Merlin Project
Milestone
Asana
Task (marked as Milestone)
1:1Merlin Milestones export as Activity rows with a milestone flag column. We set the Asana Task's start and due date to the milestone date and mark it as a Milestone subtask within the parent task hierarchy or as a top-level task with the milestone checkbox enabled. Milestone notes migrate as task descriptions.
Merlin Project
Dependency
Asana
Dependency
1:1Merlin Dependencies are stored as predecessor/successor references per Activity in CSV export. We parse dependency_type (Finish-to-Start, Start-to-Start, Finish-to-Finish, Start-to-Finish) and the predecessor task reference. Asana's dependency API supports Finish-to-Start natively; Start-to-Start and Finish-to-Finish dependencies are recorded as custom fields on the task since Asana's UI only exposes Finish-to-Start. We reconstruct the full dependency chain and create Asana dependencies using the Asana REST API after tasks are inserted.
Merlin Project
Resource (Person)
Asana
User (Assignee)
1:1Merlin Resources of type Person map to Asana Users by email lookup. The Merlin Resource export includes resource name, email (if entered), type, and hourly rate. We match by email against the destination Asana workspace members. Any Merlin Resource without an email or without a matching Asana User is placed in a reconciliation queue for the customer's admin to provision access before the migration runs. Hourly rates from Merlin are stored in a custom field on the migrated tasks for reference.
Merlin Project
Resource (Equipment/Material)
Asana
Custom Field or Tag
lossyMerlin Resource types for equipment and materials do not have a direct Asana equivalent. Equipment resources map to a custom multi-select field (resource_type) on tasks with the value set to the equipment name. Material resources map to tags on the task. We recommend the customer's admin defines these custom fields in Asana before migration begins.
Merlin Project
Assignment
Asana
Task Assignee
1:1Merlin Assignments (the linking table between Activities and Resources) export as rows with activity reference, resource reference, allocation percentage, and work units. We resolve the Asana Task GID from the Activity mapping, the Asana User GID from the Resource-User lookup, and set the task assignee. Allocation percentage is preserved as a note on the task since Asana does not have a native task-level allocation percentage field; we recommend a workload management review after migration.
Merlin Project
Attachment
Asana
Attachment
1:1Merlin Attachments export as a CSV list with file names, paths, and parent activity references. We extract the file list and upload each file to the corresponding Asana Task as an attachment via the Asana Attachments API. File metadata (original upload date, file size) is preserved in the attachment record. Attachments are uploaded after all tasks exist in Asana to ensure the parent task GID is available.
Merlin Project
Custom Fields (Activity-level)
Asana
Custom Fields
1:1Merlin Custom Fields defined at the Activity level appear as additional columns in the Activity CSV export if the exported view has those columns visible. We map column data types to Asana custom field types: text strings to text, dates to date, numbers to numeric, and enumerated values to enum. We create the custom fields in Asana under the project or organization's field library before migration, then populate values during task insert. Any custom field not visible in the exported view is omitted and flagged in the export checklist.
Merlin Project
Notes (Activity-level)
Asana
Task Description (Comments)
1:1Merlin Activity Notes appear as a column in the exported view if the Notes column is visible. We migrate the Notes content as the Asana Task description (rich text). If the customer used Merlin's internal comments or annotations, these are not separately exportable and are flagged as a manual handoff item for the customer to copy manually into Asana task comments post-migration.
Merlin Project
Scheduling Constraints
Asana
Custom Fields
1:1Merlin scheduling constraints (As Late As Possible, As Soon As Possible, Fixed Dates) are in-app flags that do not have a standard export field. We ask customers to document constraint values manually before migration and map them to Asana custom fields (constraint_type, constraint_date). Scheduling conflict indicators shown in Merlin's UI are not exported data and are not migrated; the destination system re-evaluates constraint validity independently.
Merlin Project
Mindmap View
Asana
Manual Rebuild (Documentation)
1:1Merlin Mindmap views cannot be exported to CSV or any interchange format. The brainstorming structure captured in Mindmap views is documented as a manual rebuild item. We ask the customer to screenshot the Mindmap view before migration and deliver a written guide for recreating the structure as a task hierarchy in Asana. This is a post-migration admin task, not a programmatic migration item.
Merlin Project
Kanban View
Asana
Manual Rebuild (Asana Board)
1:1Merlin's Kanban view is a visual board representation of Activities with status columns. The underlying Activity data is captured in the Activity export, but the board layout and column structure are not exportable. We migrate the Activity status column (if visible in the exported view) to an Asana custom field that can serve as the basis for an Asana Board view. The specific column structure and WIP limits from Merlin Kanban are documented for manual rebuild in Asana's Board view.
Merlin Project
Netplan View
Asana
Manual Rebuild (Asana Timeline with Dependencies)
1:1The Merlin Netplan view is a network diagram visualization over the dependency and scheduling data. It has no export format. The underlying Activities, Dependencies, and scheduling data are fully captured in the Activity and Dependency exports. We deliver a written guide for the customer to rebuild the network view in Asana's Timeline view using the migrated dependency chain. The Netplan visualization itself is not migratable.
Merlin Project
Reports View
Asana
Manual Rebuild (Asana Dashboards/Portfolios)
1:1Merlin Reports are in-app generated charts and summaries with no export capability. The underlying data driving those reports (Activities, Resources, assignments) is fully migrated. Asana's reporting (Dashboards, Portfolios, custom formulas) replaces Merlin Reports. We deliver a written report inventory from the customer's screenshots taken before migration with recommended Asana Dashboard widget configurations for each.
| Merlin Project | Asana | Compatibility | |
|---|---|---|---|
| Project | Project1:1 | Fully supported | |
| Activity | Task1:1 | Fully supported | |
| Milestone | Task (marked as Milestone)1:1 | Fully supported | |
| Dependency | Dependency1:1 | Fully supported | |
| Resource (Person) | User (Assignee)1:1 | Fully supported | |
| Resource (Equipment/Material) | Custom Field or Taglossy | Fully supported | |
| Assignment | Task Assignee1:1 | Fully supported | |
| Attachment | Attachment1:1 | Fully supported | |
| Custom Fields (Activity-level) | Custom Fields1:1 | Mapping required | |
| Notes (Activity-level) | Task Description (Comments)1:1 | Fully supported | |
| Scheduling Constraints | Custom Fields1:1 | Mapping required | |
| Mindmap View | Manual Rebuild (Documentation)1:1 | Not supported | |
| Kanban View | Manual Rebuild (Asana Board)1:1 | Not supported | |
| Netplan View | Manual Rebuild (Asana Timeline with Dependencies)1:1 | Not supported | |
| Reports View | Manual Rebuild (Asana Dashboards/Portfolios)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.
Merlin Project gotchas
No public API — migrations run on CSV exports only
Mindmap, Kanban, Netplan, and Reports views are not exportable
CSV export captures only the currently open view's column set
Multi-user license management is per-seat with manual license codes
Scheduling conflicts detected by Merlin are not exported
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
Export preparation and column checklist
We provide the customer with a structured export checklist specifying the five Merlin Project views to open and export: Activity/Gantt view, Resource view, Assignment view, Attachment view, and any view containing custom fields. For each view, we list the exact columns that must be visible before export, including Notes, custom properties, resource rates, and constraint flags. The customer runs these exports from within Merlin Project on macOS or iPad. We review each exported CSV for row count, column completeness, and data quality before processing begins.
Project and workspace setup in Asana
We create the target Asana Projects using the Asana API, setting project name, default view (Timeline recommended for projects with Gantt heritage), and project start date as a custom field. If the customer has multiple Merlin Project files, we create corresponding Asana Projects and map them 1:1. We create any custom fields in Asana (resource type, hourly rate, constraint type, milestone flag) under the project's field library or organization library before any task data is loaded.
Dependency parsing and non-standard dependency tagging
We parse the Merlin Activity CSV for dependency columns (predecessor references and dependency type). Finish-to-Start dependencies are converted to Asana dependency records via the Asana API after the dependent tasks exist. Start-to-Start, Finish-to-Finish, and Start-to-Finish dependencies are parsed, stored in a custom field on the successor task (dependency_type__c), and the customer is notified of the non-standard mapping for manual resolution in Asana if needed. The full dependency chain is validated against the Merlin export to confirm no references are orphaned.
User reconciliation and resource mapping
We extract every Merlin Resource referenced in the Assignment export, match by email against the Asana workspace members list, and build a resource-to-user lookup table. Any Merlin Resource without an email or without a matching Asana User is flagged in the reconciliation report. The customer's admin provisions the missing Asana users before the migration proceeds to the task insert phase. Resource type (Person, Equipment, Material) and hourly rates are mapped to custom fields on the tasks.
Task, attachment, and engagement migration
Activities are inserted as Asana Tasks via the Asana API in dependency order (tasks with no predecessors first, then successors once predecessor GIDs are known). Custom field values from the Merlin Activity export populate the corresponding Asana custom fields. Attachments are uploaded to the corresponding task GID. Activity Notes migrate as task descriptions. Non-exportable view documentation (screenshots of Mindmap, Kanban, Netplan, Reports) is collected from the customer's pre-migration capture and packaged as a manual rebuild guide delivered alongside the migrated data.
Cutover, validation, and manual rebuild handoff
We run a final delta migration for any Merlin records modified during the export and migration window, then deliver the completed Asana workspace with row-count reconciliation against the source CSVs. We deliver the non-exportable view rebuild guide covering Mindmap structure, Kanban board layout, Netplan network diagram, and Reports with recommended Asana equivalents. We support a three-day hypercare window for data discrepancy resolution. We do not rebuild Merlin automations in Asana as these are not exportable; the rebuild guide is a documented handoff for the customer's admin.
Platform deep dives
Merlin Project
Source
Strengths
Weaknesses
Asana
Destination
Strengths
Weaknesses
Complexity grading
Standard Project Management 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 Merlin Project and Asana.
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
Merlin Project: Not applicable.
Data volume sensitivity
Merlin Project 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 Merlin Project to Asana migration scoping. Not seeing yours? Book a call.
Walk through your Merlin Project 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 Merlin Project
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.