Project Management migration
Field-level mapping, validation, and rollback between ftrack and Asana. We move data and schema; workflows are rebuilt natively in Asana.
ftrack
Source
Asana
Destination
Compatibility
3 of 13
objects map 1:1 between ftrack and Asana.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from ftrack to Asana is a structural remodel, not a direct record copy. ftrack organizes work as Project > Sequence > Shot > Task with asset versioning and integrated review sessions; Asana uses Teams > Projects > Sections > Tasks with no native production-tracking entity model. We scope the migration by mapping each ftrack entity level to an Asana construct (Team, Project, Section, or Task), preserve custom attribute values including hierarchical attributes that ftrack's API returns unevaluated, and store review session and annotation metadata as task-linked comments so the context survives without requiring a dedicated review module. Pipelines, locations configuration, review sessions, and the Python-based Locations plugin do not migrate; we document these as requires-rebuild items for your Asana admin. Media files themselves are not moved—we flag expected paths and let your team manage the actual asset transfer through their existing storage infrastructure.
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 ftrack 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.
ftrack
Project
Asana
Team or Project
lossyftrack Projects are the top-level container holding Sequences, Shots, Tasks, and custom attributes. We map each ftrack Project to either an Asana Team (for organization-level grouping) or an Asana Project (for work-level grouping), depending on how many ftrack Projects exist and whether the customer uses Asana Teams for department-level separation. The ftrack Project name, status, and custom attributes migrate to the Asana Team description or Project custom fields. Schema dependency: Projects must be created before Sequences and Shots because those entities hold parent references.
ftrack
Sequence
Asana
Project or Section
lossyftrack Sequences sit between Project and Shot in the hierarchy. We map each Sequence to an Asana Project (if the customer wants per-sequence work plans) or an Asana Section within the parent Project (if sequences are treated as task groupings rather than standalone work plans). The mapping choice is made during scoping based on the customer's workflow. Sequence status, name, and custom attributes transfer to the Asana equivalent. Parent Project reference resolves to the Asana Team or Project GID created in the Project phase.
ftrack
Shot
Asana
Section or Project
lossyftrack Shots are children of Sequences and parents of Tasks. We map Shots to Asana Sections within the parent Project (the standard mapping for mid-volume shot lists) or to standalone Asana Projects (for large productions where each Shot requires its own task plan and timeline view). Shot status, thumbnail URL (stored as a text custom field reference), and custom attributes migrate. Parent Sequence reference resolves to the Asana Project or Section GID from the Sequence mapping phase.
ftrack
Task
Asana
Task
1:1ftrack Tasks are the core work unit with a parent link to Shot or Sequence, assignees, due dates, status, notes, and custom attributes. Tasks map 1:1 to Asana Tasks. Assignee email addresses resolve to Asana User GIDs via the User mapping. Due dates migrate directly. ftrack Task status values map to Asana Sections or to a custom status field depending on whether the customer uses Timeline view, which requires named Sections for stage tracking. Notes attached to the Task migrate as Asana Task Comments.
ftrack
Asset
Asana
Task Custom Field (link reference) or Attachment
lossyftrack Assets represent published files or asset builds linked to a Shot or Sequence context. Asana has no native asset library or version control. We handle Assets in one of two ways depending on the customer's choice during scoping: (a) create a custom Asana Text field asset_reference__c on Tasks, storing the original ftrack Asset name, version count, and a link to the expected file path; or (b) attach the most recent Asset Version as a file attachment to the Task. Media files themselves are not transferred; we document the expected file location and let the customer's infrastructure team manage the actual asset transfer.
ftrack
Asset Version
Asana
Task Custom Field (version list)
lossyftrack Asset Versions represent sequential publishes of an Asset, each with a version number, file path, components, and metadata. Asana has no native version history. We store the version chain as a newline-separated list in a custom Text field asset_versions__c on the linked Task (format: v1: /path/to/v1 | v2: /path/to/v2). For productions where version history is critical, we recommend using Asana's Proof attachments or a third-party DAM integration post-migration rather than storing full version chains inside task fields.
ftrack
Note
Asana
Task Comment
1:1ftrack Notes attach to any entity (Project, Shot, Task) and include author, timestamp, and body text. We migrate Notes as Asana Task Comments linked to the resolved Task. A known ftrack behavior (documented in ftrack gotchas) is that Notes posted via the webplayer sometimes attach to the wrong hierarchical level, landing at the topmost parent object instead of the intended child Task. We detect these mismatched notes during pre-migration validation by comparing each note's context_id against the task hierarchy and re-associate them with the correct parent Task before writing to Asana.
ftrack
Custom Attribute
Asana
Custom Field
lossyftrack custom attributes are key-value pairs stored in a custom_attributes dictionary on any entity type. We map each ftrack custom attribute to an Asana Custom Field of the closest matching type: Text, Number, Enum (single-select), or Date. Hierarchical custom attributes (set on a parent Shot and inherited by child Tasks) require special handling because ftrack's API returns the raw value rather than the evaluated inherited value; we query the parent entity for the effective value during migration and store that. Expression attributes (calculated formulas) return the non-evaluated expression string from ftrack's API; we flag these fields in the migration inventory and advise the customer to recalculate values in Asana manually or via a post-migration script.
ftrack
User
Asana
Asana User (Member)
1:1ftrack Users are assigned to Tasks as assignees and carry name, email, and role. We extract every distinct ftrack user referenced on Task records and match by email against the destination Asana workspace's User table. Users without a matching Asana account go into a reconciliation queue for the customer's admin to provision before Task migration begins. Inactive ftrack users are mapped to inactive Asana Members with a custom field original_ftrack_role__c storing the ftrack role designation.
ftrack
Review Session
Asana
Task Comment (with annotation data)
lossyftrack Review Sessions store frame annotations, reviewer comments, and approval status linked to an Asset Version. Asana has no native review or annotation module. We extract review session metadata (session date, reviewer name, frame number, annotation text, approval status) and store it as a formatted Asana Task Comment on the Task linked to the reviewed Asset. The original review media (annotated frames, video markup) is not transferred; we flag the expected storage location for the customer's team to manage separately.
ftrack
Task Status
Asana
Section or Custom Enum Field
lossyftrack Task Statuses are configurable per project with name, color, and sort order. Asana does not have a global status object—Statuses are represented by Section names (for List and Board views) or by a custom Enum field. We map ftrack Status values to either Asana Sections within each Project or to a custom single-select field task_status__c, depending on whether the customer uses Timeline view (which requires Sections for stage gates). Any ftrack status with no exact Asana equivalent is flagged in the scope document for the customer to map manually.
ftrack
Location
Asana
Custom Text Field (path reference)
lossyftrack Locations define storage configuration for assets and files, including cloud and on-premises paths with optional Python plugin logic. These are studio-specific and carry infrastructure-specific path logic. We do not migrate Location records as functional storage configuration because Asana has no storage configuration layer. Instead, we export Location names and path templates as a metadata document and store a reference in a custom Text field asset_location__c on Tasks where the original ftrack Location is relevant. The customer's infrastructure team uses the metadata document to configure their file management system post-migration.
ftrack
Spreadsheet (view configuration)
Asana
Not migrated
lossyftrack Spreadsheets are a view configuration (column layout, sorting, filters) rather than a data object and cannot be exported as records. We do not migrate spreadsheet views. We document the column configurations and filter settings from each ftrack Spreadsheet as a written reference so the customer's Asana admin can rebuild equivalent List or Board views in Asana. This is listed in the handoff inventory.
| ftrack | Asana | Compatibility | |
|---|---|---|---|
| Project | Team or Projectlossy | Fully supported | |
| Sequence | Project or Sectionlossy | Fully supported | |
| Shot | Section or Projectlossy | Fully supported | |
| Task | Task1:1 | Fully supported | |
| Asset | Task Custom Field (link reference) or Attachmentlossy | Fully supported | |
| Asset Version | Task Custom Field (version list)lossy | Fully supported | |
| Note | Task Comment1:1 | Fully supported | |
| Custom Attribute | Custom Fieldlossy | Fully supported | |
| User | Asana User (Member)1:1 | Fully supported | |
| Review Session | Task Comment (with annotation data)lossy | Fully supported | |
| Task Status | Section or Custom Enum Fieldlossy | Fully supported | |
| Location | Custom Text Field (path reference)lossy | Fully supported | |
| Spreadsheet (view configuration) | Not migratedlossy | 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.
ftrack gotchas
Notes attach to wrong task level in webplayer
Hierarchical custom attributes return raw values in API
Expression custom attributes not evaluated by API
Import wizard does not delete records
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 hierarchy mapping design
We audit the source ftrack workspace across Projects, Sequences, Shots, Tasks, Assets, Asset Versions, Notes, and custom attribute definitions. We assess the total record count per entity type, identify any hierarchical custom attributes and expression attributes (flagged for special handling), review the task status schema per project, and document Locations and Review Session usage. We then design the Asana schema: which ftrack Projects become Asana Teams versus Projects, which become Sections, whether Shots map to Sections or Projects, and how custom attributes map to Asana Custom Field types. The discovery output is a written migration scope with the full hierarchy flattening map and a recommended Asana workspace structure.
Sandbox migration and reconciliation
We run a full migration into an Asana Sandbox workspace (created as a separate Asana organization for testing) using production-like data volume. The customer's project manager and production lead reconcile record counts across each entity level (Projects in, Sequences in, Shots in, Tasks in, Comments in), spot-check 25-50 random Tasks against the ftrack source for field-level accuracy, and verify that custom attribute values are present and correctly typed in Asana. The customer approves the sandbox migration before production migration begins. Any mapping corrections happen here.
Owner reconciliation and user provisioning
We extract every distinct ftrack User referenced on Task records and match by email against the destination Asana workspace's User table. Users without a matching Asana account go to a reconciliation queue. The customer's Asana admin provisions any missing users (active or inactive depending on whether the original ftrack user is still active). Migration cannot proceed past Task import because Asana requires a valid assignee User GID on each Task. We validate that all ftrack users with active assignments have Asana accounts before production migration begins.
Production migration in dependency order
We run production migration in record-dependency order: Teams and Projects first (Asana structure scaffold), then Sections, then Tasks with assignees and due dates resolved, then custom field values (with hierarchical attribute resolution from parent entities), then Notes as Task Comments, then Asset metadata as custom fields. Review Session metadata is written as formatted Comments after Tasks are confirmed. Each phase emits a row-count reconciliation report before the next phase begins. API rate limiting is handled with exponential backoff and batch chunking to stay within Asana's 1,500 requests per minute ceiling on paid plans.
Cutover and delta migration
We freeze writes in ftrack during cutover, run a final delta migration of any records modified or created during the migration window, then enable Asana as the system of record. We validate that no Tasks are missing assignees, that all custom field values are populated, and that Notes migrated to the correct Task (including the webplayer note-hierarchy fix for any notes that attached to the wrong level in ftrack). We deliver the written Location configuration document, the Review Session metadata summary, and the expression attribute recalculation checklist.
Handoff and automation rebuild inventory
We deliver a written inventory of every ftrack automation, spreadsheet view, Location configuration, and review session that was not migrated, with recommended Asana equivalents. Asana Rules (Starter and above) replace ftrack's workflow triggers and conditions; the inventory documents each ftrack automation's trigger and actions and the corresponding Asana Rule. The spreadsheet column configurations are documented for manual rebuild in Asana List or Board views. We support a one-week post-cutover window for reconciliation issues. We do not rebuild Asana automations, configure Timeline views, or set up Portfolios as part of the migration scope; these are separate Asana configuration engagements.
Platform deep dives
ftrack
Source
Strengths
Weaknesses
Asana
Destination
Strengths
Weaknesses
Complexity grading
Standard Project Management migration. 2 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 ftrack and Asana.
Object compatibility
2 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
ftrack: Not publicly documented; ftrack advises optimizing queries to avoid server-side resource strain.
Data volume sensitivity
ftrack 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 ftrack to Asana migration scoping. Not seeing yours? Book a call.
Walk through your ftrack 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 ftrack
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.