Project Management migration
Field-level mapping, validation, and rollback between Runrun.it and Asana. We move data and schema; workflows are rebuilt natively in Asana.
Runrun.it
Source
Asana
Destination
Compatibility
9 of 12
objects map 1:1 between Runrun.it and Asana.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Runrun.it and Asana organize work differently at the object level, which makes this migration structural rather than a simple record copy. Runrun.it uses a Project-centric model with embedded Kanban stages and a two-step document upload to Amazon S3; Asana uses a Section-based task organization with a single-step attachment API and a 100MB per-file import ceiling. We handle the document upload sequencing so attachments arrive intact, map Runrun.it Kanban stage names to Asana Sections, and push time entries to Asana custom fields (Standard tier) or native time tracking (Premium). We do not migrate Runrun.it automations or custom templates as code; we deliver a written inventory of every automation and template requiring rebuild in Asana Workflow Builder or the Rules engine so your admin can rebuild them post-migration.
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 Runrun.it 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.
Runrun.it
Project
Asana
Project
1:1Runrun.it Projects map to Asana Projects with name, description, start date, and end date preserved. We create each Project in Asana before any Tasks are imported so that the Project membership and section structure are in place. If Runrun.it Projects have shared budgets or custom cost fields, these become Asana custom fields (number or currency type). Multi-workspace Runrun.it instances map to multiple Asana Teams or a single Asana Organization with Projects distributed by department.
Runrun.it
Task
Asana
Task
1:1Runrun.it Tasks map to Asana Tasks with title, description, assignee, due date, start date (requires Asana Premium), priority, and estimated hours preserved. Subtasks in Runrun.it map to Asana Subtasks nested under the parent Task. We map task priority (low, medium, high, urgent) to Asana custom field dropdown or Notes prefix so the priority context is visible without opening the task detail.
Runrun.it
Time Entry
Asana
Time Tracking (Premium) or Custom Field (Standard)
lossyIf the destination Asana workspace is on Premium or above, we push Runrun.it time entries to Asana's native time tracking fields (start time, end time, duration). On Standard tier, time entries migrate as Asana custom fields (text or number) holding the duration value in decimal hours. Runrun.it's billable hour flag becomes an Asana checkbox custom field. We round durations explicitly to avoid silent conversion drift between minute-based and decimal-based tracking.
Runrun.it
Kanban Stage
Asana
Section
lossyRunrun.it Kanban stages (To Do, In Progress, Review, Done, or custom names) map to Asana Sections within each Project. We extract the stage names from Runrun.it's per-Project stage configuration, create matching Sections in Asana, and assign Tasks to their corresponding Section during import. If multiple Runrun.it Projects share stage names, we preserve the per-Project stage configuration in an Asana custom field for audit.
Runrun.it
Document
Asana
Attachment
1:1Runrun.it documents require a two-step migration: first creating the task attachment record via POST /api/v1.0/tasks/:task_id/documents, then pushing the file to the Amazon S3 presigned URL before associating it with the Task. We handle both steps and verify the S3 bucket is accessible during scoping. Asana enforces a 100MB per-file ceiling during API import; any file exceeding this threshold is flagged and excluded from the import with a record in the reconciliation report.
Runrun.it
User / Member
Asana
User
1:1Runrun.it team members (email, name, role, hourly rate) map to Asana Users by email address match. We create a user mapping table during discovery. Any Runrun.it Member without a matching Asana User goes to a reconciliation queue for the customer's admin to provision the account before record import resumes. Hourly rate becomes an Asana number custom field on the User profile.
Runrun.it
Tag
Asana
Label
1:1Runrun.it tags_data arrays migrate to Asana Labels. We preserve the tag name and note that Asana Labels are scoped per Project by default but can be made organization-wide. The customer chooses label scope during scoping. If Runrun.it has more tags per Task than Asana supports in a single field (16 labels per Task), we prioritize the most-used tags and flag the remainder.
Runrun.it
Custom Field
Asana
Custom Field
lossyRunrun.it custom fields on Tasks (field_label and field_value) map to Asana custom fields of the closest matching type: text to text, number to number, date to date, dropdown to enum. Some Runrun.it custom field types (e.g., formula fields, relational fields) have no direct Asana equivalent and are skipped with a note in the migration inventory. We pre-create the Asana custom field definitions before any Task data is imported.
Runrun.it
Comment
Asana
Comment
1:1Runrun.it comments attached to Tasks migrate as Asana Task comments. The comment body, author (resolved to Asana User by email), and timestamp preserve. If Runrun.it comments include @mentions, we convert the mention format to Asana's @mention syntax. Threaded comments in Runrun.it become flat comments in Asana with a visual indicator noting the original thread depth.
Runrun.it
Attachment (URL)
Asana
Attachment (URL)
1:1External URL attachments in Runrun.it (attachable_type = external link) migrate to Asana URL attachments on the corresponding Task. We preserve the attachment title and URL. If the URL points to a resource that requires authentication or is a Runrun.it-internal link, we flag it for the customer to update post-migration.
Runrun.it
Custom Template
Asana
Template (manual rebuild)
1:1Runrun.it custom templates define pre-populated Task structures and Kanban stage configurations per Project type. We document every custom template with its Task structure, stage names, default custom field values, and assignee rules in a written inventory. Asana does not have a direct template migration path; the customer uses the inventory to rebuild templates in Asana via the Project-from-Template feature.
Runrun.it
Workflow / Automation
Asana
Rules / Workflow Builder (manual rebuild)
1:1Runrun.it workflow rules (auto-assignment, status changes, notification triggers) do not migrate as code. We deliver a written inventory of every active Runrun.it workflow with its trigger conditions, actions, and the recommended Asana Rules or Workflow Builder equivalent. The customer's admin rebuilds automations post-migration using the inventory as a checklist.
| Runrun.it | Asana | Compatibility | |
|---|---|---|---|
| Project | Project1:1 | Fully supported | |
| Task | Task1:1 | Fully supported | |
| Time Entry | Time Tracking (Premium) or Custom Field (Standard)lossy | Fully supported | |
| Kanban Stage | Sectionlossy | Fully supported | |
| Document | Attachment1:1 | Fully supported | |
| User / Member | User1:1 | Fully supported | |
| Tag | Label1:1 | Fully supported | |
| Custom Field | Custom Fieldlossy | Fully supported | |
| Comment | Comment1:1 | Fully supported | |
| Attachment (URL) | Attachment (URL)1:1 | Fully supported | |
| Custom Template | Template (manual rebuild)1:1 | Fully supported | |
| Workflow / Automation | Rules / Workflow Builder (manual rebuild)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.
Runrun.it gotchas
Two-step document upload requires S3 coordination
No documented API rate limits
No mobile app means no mobile-only data
Time tracking data requires currency and rounding alignment
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 source audit
We audit the source Runrun.it instance across projects, tasks, time entries, document count and size distribution, Kanban stage names per Project, custom fields and their types, tags, and active workflow rules. We verify the Runrun.it API credentials and confirm S3 presigned URL access for document migration. We extract a complete user roster with email addresses and roles and cross-reference against the target Asana workspace user list. The discovery output is a written scope document with record counts per object, document size histogram, and a Kanban stage name map.
Schema design and custom field provisioning
We design the destination Asana schema before any data moves. This includes creating Asana Projects with List, Board, and Timeline views, provisioning custom fields (Standard tier: start_date, billable flag, duration, hourly rate; Premium: native time tracking), creating Labels scoped per Project or organization-wide, and mapping Runrun.it Kanban stage names to Asana Sections. We verify that every Runrun.it custom field type has a valid Asana equivalent or is flagged for exclusion.
Sandbox validation
We run a representative migration into the customer's Asana sandbox (or a trial workspace) with a sample of 50-100 records per object type. The customer's project manager or admin spot-checks task assignments, section placements, time entry values, and attachment integrity. We resolve any mapping corrections before production migration begins. This step also validates that the S3 presigned URL flow for documents completes without authentication errors.
User provisioning and owner reconciliation
We extract every distinct Runrun.it Member referenced on Tasks, Projects, and time entries and match by email against the destination Asana workspace user table. Members without a matching Asana User are held in a reconciliation queue. The customer's admin provisions any missing Asana Users and confirms active/inactive status before record import resumes.
Production migration in dependency order
We run production migration in this order: Users (validated), Projects (with Section structure), Tasks (with Section assignment, assignee, due date, start date, priority, and estimated hours), time entries (native on Premium, custom fields on Standard), Labels (created before Task import), Tags (applied to Tasks after Label creation), Comments (after Task creation), Attachments (after Task creation, two-step S3 push included), and custom fields. Each phase emits a row-count reconciliation report before the next phase begins. We use Asana API rate limit handling with exponential backoff.
Cutover, validation, and automation handoff
We freeze Runrun.it write access during cutover, run a final delta migration of any Tasks or time entries modified during the migration window, then set Asana as the system of record. We deliver the Workflow and Template inventory document to the customer's admin team. We support a three-day hypercare window where we resolve any record-level issues raised by the project team. We do not rebuild Runrun.it automations or templates as code inside the migration scope.
Platform deep dives
Runrun.it
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 Runrun.it 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
Runrun.it: Not publicly documented.
Data volume sensitivity
Runrun.it 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 Runrun.it to Asana migration scoping. Not seeing yours? Book a call.
Walk through your Runrun.it 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 Runrun.it
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.