Project Management migration

Migrate from AGILITY to Asana

Field-level mapping, validation, and rollback between AGILITY and Asana. We move data and schema; workflows are rebuilt natively in Asana.

AGILITY logo

AGILITY

Source

Asana

Destination

Asana logo

Compatibility

58%

7 of 12

objects map 1:1 between AGILITY and Asana.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from digital.ai Agility to Asana is an ALM-to-project-management transition, not a lateral tool swap. Agility's layered object model — Projects containing Sprints/Iterations containing Stories, Defects, and Tasks, with Test Sets and Test Cases tracked on a parallel schema — has no direct Asana equivalent. We flatten that hierarchy into Asana's Project, Section, Task, and Subtask structure, preserve the iteration calendar as a custom start/end date pair on Tasks, and use a custom field set to carry Agility severity, story points, and defect status into Asana. Custom fields are resolved using Agility's System Name (not display label) as the mapping key. We flag the edition-gated API access gap during scoping: Starter and Pro tier Agility customers cannot use the REST API or Data Mart and must use a file-based export path, which limits field and attachment coverage. Workflows, automations, Test Set schedules, and Test Case step structures do not migrate as code; we deliver a written inventory for the customer to rebuild in Asana Rules or a third-party automation layer.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

AGILITY logo

AGILITY

What's pushing teams away

  • Public pricing is not disclosed by digital.ai, requiring sales-led engagement even for small evaluations — competitors like Jira and Azure DevOps publish per-seat rates.
  • UI is widely perceived as dated relative to Jira, Linear, and Azure DevOps, particularly for individual contributors who interact with work items daily.
  • Edition gating means API and Data Mart access are restricted to higher tiers, blocking smaller orgs from automation and reporting.
  • Custom-field System-Name vs. display-label divergence creates silent data mismatches that bite teams during reporting and integration builds.
  • Smaller and less active community than Atlassian's ecosystem, so add-ons, third-party integrations, and shared expertise are harder to source.

Choosing

Asana logo

Asana

What's pulling them in

  • Organizations with distributed teams cite Asana's multiple project views (List, Board, Calendar, Timeline) as the primary reason for adoption, allowing each team member to work in their preferred interface without changing the underlying data.
  • The platform's 100+ native integrations with tools like Slack, Google Drive, Salesforce, and Microsoft Teams reduce context-switching and keep work synchronized across the stack.
  • Small teams and non-profits value the free plan's generous limits: unlimited projects and tasks for up to 15 team members with basic views, enabling teams to validate fit before committing to a paid tier.
  • Marketing and creative teams specifically praise Asana's visual project organization, reporting dashboards, and timeline views for managing cross-functional campaign workflows.
  • Project managers report that Asana's dependency management and workload views help surface bottlenecks before they derail deadlines.

Object mapping

How AGILITY objects map to Asana

Each row shows how a AGILITY 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.

AGILITY

Project

maps to

Asana

Project

1:1
Fully supported

Agility Projects are the top-level container with a stable OID, Owner, Team, and description. They map directly to an Asana Project. We preserve the project description and map the Owner to an Asana team member with Project Editor permission. Projects with multiple Teams on the source side are noted as requiring multiple Asana Project shares post-migration.

AGILITY

Iteration/Sprint

maps to

Asana

Custom Date Fields + Section or Timeline

lossy
Fully supported

Agility Iterations are first-class OID-bearing objects with start_date, end_date, status (Active/Closed/Planning), and velocity metrics. Asana has no native sprint object. We model iterations as a custom start_date__c and end_date__c pair on Tasks, and group tasks by iteration using a custom iteration_name__c text field. For teams using Asana Timeline (Gantt) view, we create a Timeline group per iteration. Velocity and cadence settings do not map; we note them in the handoff inventory for manual tracking in Asana Dashboards.

AGILITY

Story

maps to

Asana

Task

1:1
Fully supported

Agility Stories are primary work items with a title, description (rich text), status, story_points, owner, parent iteration, and a full set of custom fields. We map Stories to Asana Tasks with the name, notes (rich text), assignee (single assignee; multiple assignee cases handled via a reconciliation step), and custom fields. Story points migrate to a custom number field story_points__c. Custom field mapping uses the System Name as the Asana custom field API name, not the display label.

AGILITY

Defect

maps to

Asana

Task

1:1
Fully supported

Agility Defects share the primary work item schema with Stories but include severity, detected_in_iteration, and resolution fields. We map Defects to Asana Tasks with severity stored in a custom dropdown field defect_severity__c (Critical, High, Medium, Low) and resolution stored as a custom text field defect_resolution__c. The detected_in_iteration relationship maps to the same iteration_name__c custom field used for Stories.

AGILITY

Task (child of Story or Defect)

maps to

Asana

Subtask

1:1
Fully supported

Agility Tasks are child work items belonging to Stories or Defects. They carry assignee, estimated_hours, and status. We map them to Asana Subtasks under the parent Task record. Parent-child linkage is resolved during import using Asana's parent_task_gid field, which we populate by matching the Agility parent OID to the migrated Asana task gid via the cross-reference table generated during the import pass.

AGILITY

Test Set

maps to

Asana

Task (with custom Test Set metadata)

lossy
Fully supported

Agility Test Sets aggregate Test Cases and carry environment, test type, and status fields. Asana has no native test set object. We model each Test Set as an Asana Task with custom fields test_set_environment__c, test_set_type__c, and test_set_status__c, and attach Test Cases as Subtasks of that Task. Test Set member ordering from Agility is preserved in Subtask position order. Edition-gated schema on Starter/Pro Agility may limit available Test Set fields; we map only the intersection available in the source edition.

AGILITY

Test Case

maps to

Asana

Subtask of Test Set Task

lossy
Fully supported

Agility Test Cases carry step-level instructions, expected results, and custom fields in the Fact.Test Data Mart. We export the full step structure as Asana Subtasks under the parent Test Set Task, with each step as a separate Subtask containing the expected result in the notes field. If the destination Asana workspace has a third-party test management integration (e.g., TestRail, Qase), we map Test Cases to that tool instead and store a link reference in a custom field test_case_reference__c on the Task.

AGILITY

Issue

maps to

Asana

Task

1:1
Fully supported

Agility Issues are tracked in Fact.Issue with a schema distinct from primary work items, including issue_type, priority, and a separate custom field set. They have no parent-child relationship with Stories or Defects. We map Issues to Asana Tasks with issue_type stored in a custom dropdown field issue_type__c and priority mapped to Asana's built-in Task priority field (High, Medium, Low, or None).

AGILITY

Custom Fields

maps to

Asana

Custom Fields

lossy
Mapping required

Agility custom fields exist on most asset types and support checkbox, date, text, number, and drop-down types. The Data Mart column name derives from the System Name (internal identifier), not the user-facing display label. We extract both during discovery, generate a dual-key mapping table, and create Asana custom fields using the System Name as the API name. A custom field named 'Customer Priority' with System Name 'Custom_CustomerPriority' in Agility creates an Asana custom field with API name custom_c_customer_priority__c and display label 'Customer Priority'. Drop-down values migrate as option sets in Asana's custom field enum.

AGILITY

Attachments

maps to

Asana

Attachments

lossy
Mapping required

Agility stores binary attachments with a separate OID registry from the work item JSON payload, requiring a two-pass migration. We export attachments first, upload them to Asana via the attachments endpoint, capture the returned Asana gid, then re-associate them with the corresponding Tasks using a cross-reference table. This prevents orphaned attachment references. Maximum file size follows Asana's 100 MB per attachment limit; files exceeding this are flagged for manual chunking or alternative storage.

AGILITY

Comments

maps to

Asana

Stories, Tasks

1:1
Fully supported

Agility Comments are child objects of work items with author, timestamp, and body (rich text). We migrate comments as Asana Stories on the Task record, preserving the author display name and the original timestamp. Comment attachments (if any) are handled in the attachment pass. Rich text formatting in Agility comments maps to Asana's HTML story format.

AGILITY

Member/User

maps to

Asana

Member (via Asana workspace)

1:1
Fully supported

Agility user records include display name, email, role, and team membership. Active Directory integration in Agility can source users externally. We detect whether the destination Asana workspace uses local user management or SSO (Google, SAML). For SSO-configured Asana workspaces, we match users by email domain and flag any Agility users without matching Asana accounts for the customer's admin to provision before record import. Role mapping (Agility roles to Asana permissions) is noted in the handoff document for manual configuration.

Gotchas + challenges

What specifically takes care here

Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.

AGILITY logo

AGILITY gotchas

High

Edition-gated API access blocks migration extraction

High

Custom field System Name vs. display label mismatch

Medium

Rate limits are undocumented for direct consumption

Medium

Test Set and Test Case schemas vary by Agility edition

Medium

Attachment OID registry requires a separate migration pass

Asana logo

Asana gotchas

High

Automation rules have no export representation

High

API rate limits cap bulk migration throughput

Medium

Portfolios are view-only objects that do not hold data

Medium

Custom field enum options cannot be updated via API

Low

Subtasks do not appear in project views by default

Pair-specific challenges

  • Edition-gated API access blocks programmatic export for Starter and Pro

    digital.ai Agility's REST API and Data Mart are restricted to Enterprise-tier licenses. Starter and Pro tier customers cannot programmatically extract data and must use the built-in UI or CSV export, which omits attachment binaries, custom field System Name columns, Test Case step details, and cross-object relationship data. We identify the customer's Agility edition during scoping. If API access is unavailable we pivot to a file-based migration path using Agility's native export, though this reduces field and attachment coverage and requires more manual reconciliation. The customer should confirm their Agility edition before migration scoping begins.

  • Custom field System Name mismatch silently drops or misroutes data

    Agility's Data Mart generates column names for custom fields from the System Name (internal identifier), not the user-facing display label. A field named 'Customer Priority' in the UI may have a Data Mart column of 'Custom_CustomerPriority'. If we map using display labels alone, the Asana custom field gets created with the wrong API name and data silently fails to populate or lands in a different column. We extract both System Name and display label during discovery and generate a dual-key mapping table. Without this step, destination field matching silently fails for every custom field rename that occurs in Agility post-discovery.

  • Asana allows one assignee per task; Agility may allow multiple

    Asana Tasks support a single assignee field. Agility work items can have multiple assignees in some configurations. When multiple Agility assignees are present on a Story or Task, we map the primary assignee (first by OID order) to Asana's assignee field and store secondary assignees in a comma-separated custom field secondary_assignees__c. The customer reviews this during scoping and can choose to create additional Asana Tasks for secondary assignees if full representation is required.

  • Test management objects have no native Asana equivalent

    Agility Test Sets and Test Cases carry step-level instructions, expected results, test environments, and execution history that do not map to any native Asana object. We model Test Sets as Tasks with custom metadata fields and Test Cases as Subtasks, which preserves the structure but not the execution tracking or step-pass/fail history. Any Agility test execution history, step outcomes, or test run timestamps are noted in the handoff inventory for manual entry or a third-party test management tool integration (TestRail, Qase, or similar).

  • Attachment OID registry requires two-pass migration

    Agility stores binary attachments with their own OID registry separate from work item JSON. We export the attachment OID list alongside work item data, upload attachments to Asana in a first pass, capture the returned Asana gid, then re-associate them with the correct Tasks in a second pass using a cross-reference table. Without this two-pass approach, attachment references are orphaned and cannot be re-linked without re-uploading.

Migration approach

Six steps for a successful AGILITY to Asana data migration

  1. Discovery and edition verification

    We audit the source Agility org across edition (Starter/Pro/Enterprise), API availability, object inventory (Projects, Iterations, Stories, Defects, Tasks, Test Sets, Test Cases, Issues), custom field inventory (with System Names and display labels extracted from both the UI and Data Mart), attachment count, and member roster. If the Agility edition is Starter or Pro and the REST API is unavailable, we pivot to a file-based extraction plan using Agility's built-in export UI and document which fields and objects will have reduced coverage. The discovery output is a written migration scope with object counts, custom field mapping table, and edition-based export path decision.

  2. Schema design and custom field pre-creation

    We design the destination Asana workspace schema before any data import. This includes creating Asana Projects (one per Agility Project), custom fields on each Project or Task (using the System Name as API name, display label as field name, and the correct type — text, number, date, or enum), and a custom iteration_name__c field for grouping Tasks by Sprint/Iteration. If Test Cases are being mapped, we configure a test_case_reference__c text field on the parent Task. Custom fields are created via the Asana API before the import pass begins to ensure field IDs are available for mapping during insert.

  3. Attachment first-pass export and upload

    We extract the full attachment OID list from Agility (REST API for Enterprise, file export for Starter/Pro), download binaries to local storage, and upload them to Asana via the attachments endpoint in batches of 50 files with exponential backoff on 429 responses. We capture the returned Asana gid for each uploaded file in a cross-reference table keyed by Agility attachment OID. This pass runs before the work item import pass so that attachment associations can be resolved during insert.

  4. Work item import in dependency order

    We import records in Agility's dependency order: Projects (parent container), Iterations (date-range metadata stored as custom fields), Stories and Defects (primary work items), Tasks (child work items with parent Task gid resolved), Issues, Comments (as Asana Stories on parent Task), and Test Sets with their Test Case Subtasks. For each record we resolve the Agility owner email to an Asana user gid (with unresolved owners held in a reconciliation queue), map custom fields using the System Name-to-API-name table, and associate attachments from the cross-reference table. The iteration relationship is preserved via the iteration_name__c custom field.

  5. Sandbox or pilot validation

    For migrations exceeding 2,000 records or involving Test Cases and attachments, we run a pilot migration into a designated Asana workspace or project before the full production cutover. The customer's project manager reviews 25-50 randomly sampled records for field completeness, parent-child linkage accuracy, attachment presence, and iteration grouping. Any mapping corrections are documented and applied to the production migration script before cutover. Pilot validation is required for all Enterprise-tier Agility migrations and strongly recommended for Pro-tier.

  6. Production cutover and handoff inventory

    We freeze Agility writes during cutover, run a final delta pass for any records modified during the migration window, then mark the Asana workspace as the system of record. We deliver a written handoff inventory covering: (1) active Workflows, automations, and iteration schedules that require rebuilding in Asana Rules or a third-party tool, (2) Test Case step execution history that requires manual entry or third-party test management tool setup, (3) any Agility custom fields that could not be mapped due to data type incompatibility, and (4) a list of unresolved Agility users requiring Asana account provisioning. We support a five-business-day hypercare window for reconciliation issues. Workflow rebuild, automation rebuild, and test management tool integration are outside standard migration scope.

Platform deep dives

Context on both ends of the pair

AGILITY logo

AGILITY

Source

Strengths

  • JSON-based export/import mapping files allow declarative, auditable migration configurations that can be version-controlled
  • Custom fields are available on a wide range of asset types and exposed through both the REST API and Data Mart reporting layer
  • Multi-edition architecture means Teams, Sprints, and Iterations are first-class citizens with stable OIDs and relationship fields
  • Rate limiting is documented as a system-wide protection, reducing the risk of accidental API-induced outages during migration
  • Export and import operations can be run incrementally, supporting phased cutover rather than a single big-bang switchover

Weaknesses

  • Specific API rate limit values are not publicly documented, requiring empirical testing to calibrate migration throughput
  • Custom field Data Mart column names derive from System Names, not display labels — silent mismatches occur if this naming layer is not handled explicitly
  • Edition gating on API access means Starter and Pro tier orgs have limited or no programmatic data extraction capability
  • No public deprecation timeline or changelog for the API means schema changes between Agility versions are not proactively communicated
  • Attachments and binary assets are managed through a separate OID registry from the JSON mapping data, adding a second migration pass
Asana logo

Asana

Destination

Strengths

  • Unlimited projects and tasks on the free plan for teams up to 15 members.
  • 100+ native integrations including Salesforce, Slack, Google Drive, and Microsoft Teams.
  • Four distinct project views (List, Board, Calendar, Timeline) in a single interface.
  • Dependency management with start/end dates and predecessor links for critical path tracking.
  • Portfolio dashboards for executives to track cross-project status and workload.

Weaknesses

  • Per-seat pricing scales expensively: Advanced tier costs nearly double Starter for a 50-seat team.
  • API does not expose all UI-accessible data; some fields require screen-scraping for full fidelity.
  • Automation rule limits on lower tiers are restrictive, causing power users to upgrade or leave.
  • No native document/wiki capability forces teams to use external tools for knowledge management.
  • Rate limits (150 req/min on free, 1,500 req/min on paid) constrain bulk migration throughput.

Complexity grading

How hard is this migration?

Standard Project Management migration. 2 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across AGILITY and Asana.

  • Object compatibility

    B

    2 of 8 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    AGILITY: Rate limiting is documented but specific quota values are not publicly disclosed; limits vary by Agility edition and org tier.

  • Data volume sensitivity

    B

    AGILITY doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your AGILITY to Asana migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about AGILITY to Asana data migrations

Answers to the questions buyers ask most during AGILITY to Asana migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your AGILITY to Asana migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most migrations land between three and five weeks for accounts with up to 5,000 work items and no Test Case structure migration. Migrations with large task counts (over 50,000), Test Sets and Test Cases requiring subtask modeling, Starter/Pro tier Agility orgs with file-based export constraints, or attachment-heavy projects move to eight to fourteen weeks because of manual export handling, two-pass attachment re-association, and iteration calendar reconstruction.

Adjacent paths

Related migrations to explore

Ready when you are

Move from AGILITY.
Land in Asana, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day