Project Management migration
Field-level mapping, validation, and rollback between Intervals and Asana. We move data and schema; workflows are rebuilt natively in Asana.
Intervals
Source
Asana
Destination
Compatibility
10 of 12
objects map 1:1 between Intervals and Asana.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Moving from Intervals to Asana trades a time-tracking-first tool for a general-purpose work management platform. Intervals organizes around Clients at the top, with Projects, Tasks, and Milestones nested beneath and time entries recorded per task. Asana uses Workspaces and Teams as top-level containers, with Projects holding Tasks in Sections. The most significant structural difference is that Asana does not have a native time-entry object at any pricing tier. We handle this by mapping Intervals time entries to a combination of task-level duration fields and date-stamped notes, preserving hours, dates, and billable status for billing audits. Intervals' custom activity fields require API enumeration during scoping because they are not visible in the CSV export; we enumerate all active fields and map each to a corresponding Asana custom field. Documents cannot be bulk-exported from Intervals, so we document every attachment URL and present the customer with a manual-download checklist organized by Project and Task.
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 Intervals 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.
Intervals
Client
Asana
Team or Project
1:1Intervals Clients are the top-level organizational unit containing Projects, Tasks, and time-tracking data. We map them to Asana Teams (the org-level container) or, for customers preferring a flat structure, to Projects flagged with a client-tag custom field. The mapping decision is made during scoping based on whether the customer uses Intervals' client billing features. Client status (active/inactive) maps to Team membership and Project active status in Asana.
Intervals
Person
Asana
User
1:1Intervals People records are user accounts with timesheet permissions, access levels (admin/member), and billable-rate settings. We map them to Asana Users, preserving name, email, and access-level intent (admin maps to Asana Admin on Business/Enterprise, member maps to Member). Inactive Intervals users become inactive Asana users. HubSpot-style owner-to-user mapping is not required because Intervals People and Asana Users both use email as the natural key.
Intervals
Project
Asana
Project
1:1Intervals Projects belong to a Client and contain Tasks and Milestones, with budget, start/end dates, and status. We map them to Asana Projects within the corresponding Team. The Intervals Project status (active/on-hold/archived) maps to Asana Project archived status. Budget amounts from Intervals migrate to a custom currency field in Asana because Asana does not have a native budget tracking object.
Intervals
Milestone
Asana
Milestone
1:1Intervals Milestones are date-driven checkpoints within a Project, each with optional comments. We map them to Asana Milestones, which are available from Asana Business tier ($24.99/user/month). If the destination Asana workspace is on Starter, we flag this as a tier constraint during scoping and offer to map Milestones to milestone-flagged tasks in a milestone tracking section instead. Milestone sequence, target dates, and comments all migrate directly.
Intervals
Task
Asana
Task
1:1Intervals Tasks belong to a Project and optionally to a Milestone, with assignees (People), status, estimated vs. actual hours, and task-level comments. We map them to Asana Tasks within the corresponding Project, preserving assignee (mapped to Asana User by email), due date, start date, and the task description field. Task status in Intervals (active/completed/archived) maps to Asana completion status. We preserve task ordering within the Project by setting the Asana custom field sort_order or by using the task position in the project's task list.
Intervals
Task Comment
Asana
Comment
1:1Intervals task-level comments are threaded text entries attached to Tasks. We map them to Asana Comments on the corresponding Task. Comment author maps to the Asana User by email match; comment timestamp preserves the original Intervals date. Comments posted via the Asana API are attributed to the migration service account unless the original author has a matching Asana User — we log the original author in the comment body for audit purposes.
Intervals
Milestone Comment
Asana
Comment
1:1Intervals Milestone comments follow the same mapping logic as task comments, attaching to the corresponding Asana Milestone as a Comment. Milestone-level discussion threads are preserved with author and timestamp intact. Asana Milestones are not themselves commentable in all API versions — we verify the destination API version during setup and use the appropriate endpoint.
Intervals
Project Note
Asana
Project Description or Comment
1:1Intervals Project Notes are standalone text entries scoped to a Project but not tied to Tasks or Milestones. We map these to the Asana Project description field if there is a single dominant note, or to a pinned Comment on the Project if there are multiple notes that should remain as separate entries. The mapping decision is documented in the object mapping spec before migration.
Intervals
Time Entry
Asana
Custom Field + Note
lossyIntervals time entries are the primary data object — each records hours, a date, task association, billable status, and optional notes. Asana has no native time-entry object at any pricing tier. We handle this by creating a custom field on the Task called Hours Logged (numeric) and a companion custom field Billable (checkbox). Each time entry becomes a Note on the task with the date, hours, and billable status in the note body. For customers requiring detailed billing history, we also generate a CSV export of all time entries as a companion artifact for import into a billing tool.
Intervals
Custom Activity Field
Asana
Custom Field
lossyIntervals custom activity fields are user-defined properties attached to time entries (e.g., Service Type, Expense Code, Billing Category). These are not visible in the CSV export — they appear only via the Intervals API. We enumerate all active custom activity fields during the discovery phase by querying the API, then create corresponding custom fields in Asana on the Task object. Field type mapping follows: text fields map to Asana text custom fields, dropdown values map to single-select custom fields, and numeric fields map to Asana number custom fields.
Intervals
Document
Asana
Attachment
1:1Intervals Documents are file attachments stored per Task. The platform explicitly states that documents cannot be bulk exported — only individually downloaded. We do not attempt API-based bulk document extraction. During discovery, we document every document URL organized by Project and Task. We present the customer with a manual-download checklist so they can download documents individually before we proceed with the data migration. After download, documents are re-uploaded to Asana as attachments on the corresponding tasks during the migration window.
Intervals
Task to Milestone Linkage
Asana
Task to Milestone Membership
1:1Intervals Tasks optionally belong to a Milestone via the milestone_id reference. Asana Milestones are project-level markers rather than containers, so the linkage is maintained differently — we set the Task's due date and start date to align with the target Milestone date, and we add a custom field Milestone Name to the Task that references the parent Milestone name for audit purposes. This preserves the relationship without requiring a structural workaround.
| Intervals | Asana | Compatibility | |
|---|---|---|---|
| Client | Team or Project1:1 | Fully supported | |
| Person | User1:1 | Fully supported | |
| Project | Project1:1 | Fully supported | |
| Milestone | Milestone1:1 | Fully supported | |
| Task | Task1:1 | Fully supported | |
| Task Comment | Comment1:1 | Fully supported | |
| Milestone Comment | Comment1:1 | Fully supported | |
| Project Note | Project Description or Comment1:1 | Fully supported | |
| Time Entry | Custom Field + Notelossy | Fully supported | |
| Custom Activity Field | Custom Fieldlossy | Fully supported | |
| Document | Attachment1:1 | Fully supported | |
| Task to Milestone Linkage | Task to Milestone Membership1: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.
Intervals gotchas
No bulk document export in Intervals
Custom activity fields are account-specific and require enumeration
No native bulk-import format for inter-object relationships
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 API enumeration
We audit the source Intervals workspace via API, documenting all active custom activity fields, the complete object inventory (Clients, People, Projects, Milestones, Tasks, Comments, Documents, Time Entries), and the relationship graph between objects. We query GET /activity_fields to enumerate all custom activity fields not visible in the CSV export. We count time-entry records, document attachment URLs, and identify the highest milestone count across any single project. We present a written scope and Asana tier recommendation (Starter vs. Business) based on Milestone requirement and custom field count.
Schema design and custom field provisioning
We design the Asana destination schema. This includes creating the Team hierarchy (mapped from Intervals Clients), provisioning custom fields on Tasks (Hours Logged, Billable, and all enumerated Intervals custom activity fields), and designing the Project structure within Teams. If the customer uses Intervals Milestones and the destination is on Starter tier, we confirm the Milestone workaround decision before schema is created. We deploy the initial schema to a validation environment before touching production data.
Pre-processing and relationship resolution
We pre-process the Intervals CSV exports by joining them on name and external keys to reconstruct the inter-object relationships omitted from the raw export. This produces import-ready CSVs with correctly resolved Client names, Project names, Milestone assignments, and People assignees. We validate the relationship integrity (no orphaned Tasks, no unlinked Milestones) before the first Asana import. This step is the primary reason FlitStack AI produces cleaner Asana imports than manual CSV approaches.
Sandbox validation and record sampling
We run the migration into an Asana Sandbox environment (or a clean Team in the destination workspace) using the pre-processed CSV files. The customer's project manager or admin reviews a sample of migrated records against the Intervals source — checking task descriptions, milestone dates, time-entry notes, and custom field values. We correct any mapping errors identified during this review before proceeding to production. This step typically takes two to three days and prevents errors from propagating into the live workspace.
Production migration in dependency order
We run the production migration in record-dependency order: Teams (from Clients), People (Users, validated by email), Projects, Milestones (or milestone-flagged tasks on Starter), Tasks (with assignee resolved and milestone reference restored), Comments (attached to Tasks and Milestones), Time Entries (as custom field values and timestamped notes), and Custom Activity Fields. Document re-upload follows the customer's manual-download checklist. Each phase emits a row-count reconciliation report before the next phase begins.
Cutover, validation, and document handoff
We freeze Intervals writes during cutover, run a final delta migration of any records modified during the migration window, then set the Asana workspace as the system of record. We deliver a document-download completion checklist to the customer confirming all attachment URLs have been addressed. We support a 48-hour hypercare window for reconciliation issues. We do not rebuild Intervals workflows or automations in Asana Rules — the Intervals platform has no native automation, so there is nothing to rebuild, but we document the manual processes the team used so they can be evaluated for Asana Rules if desired.
Platform deep dives
Intervals
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 Intervals 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
Intervals: Not publicly documented.
Data volume sensitivity
Intervals 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 Intervals to Asana migration scoping. Not seeing yours? Book a call.
Walk through your Intervals 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 Intervals
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.