Project Management migration
Field-level mapping, validation, and rollback between ITM Platform and Asana. We move data and schema; workflows are rebuilt natively in Asana.
ITM Platform
Source
Asana
Destination
Compatibility
7 of 13
objects map 1:1 between ITM Platform and Asana.
Complexity
CModerate
Timeline
3-5 weeks
Overview
Moving from ITM Platform to Asana is a structural migration that resolves two fundamentally different organizational models. ITM Platform uses a Portfolio-Program-Project-Task hierarchy with unlimited baseline tracking, dedicated Risk and Purchase entities, and strategic alignment tagging; Asana uses Projects as the top-level container with Tasks, Sections, and Subtasks nested inside, no native Risk or Purchase entity, and Portfolios as a reporting overlay rather than a data container. We map ITM Programs into Asana Projects or Teams, preserve ITM Tasks as Asana Tasks with parent-child relationships, and map ITM Milestones to Asana Tasks with a milestone-flag custom field. Baselines, Risks, and Purchases have no native Asana counterpart — we extract the full record set and deliver it as a structured dataset for the customer's admin to recreate manually or in a separate tool. ITM's v1/v2 API session token expiry and the absence of a bulk export endpoint govern our batch sizing and re-authentication strategy throughout the 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 ITM Platform 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.
ITM Platform
Portfolio
Asana
Portfolio
1:1ITM Portfolio records map to Asana Portfolio. We preserve the Portfolio name, description, and status. Child Programs and Projects within the Portfolio are resolved by querying Asana's portfolio_items endpoint after the migration and linked to the Portfolio as project membership records. ITM's strategic alignment tags and KPI scores on Portfolio become custom text fields on the Asana Portfolio object.
ITM Platform
Program
Asana
Team or Project
lossyITM Programs have no direct Asana equivalent. We offer two approaches during scoping: map each Program to an Asana Team (which provides member management and team-level reporting) or map each Program to a top-level Asana Project with a 'Program' prefix in the name. The approach depends on whether the customer's Asana structure uses Teams for org-wide grouping or Projects for initiative grouping. We preserve the Program's description, dates, owner, and custom fields as equivalent fields on the destination Team or Project.
ITM Platform
Project
Asana
Project
1:1ITM Projects map directly to Asana Projects. The Project name, description, start_date, due_date, status (active/on hold/closed), owner, and budget fields migrate to Asana's name, notes, start_on, due_on, and custom fields. ITM's Project-level custom fields are extracted individually and mapped to Asana custom fields defined at the workspace level, then applied to the project via the custom_field_settings endpoint. The parent-child containment of Projects under Programs is preserved via the Asana Team or parent Project mapping chosen in the Program mapping step.
ITM Platform
Task
Asana
Task
1:1ITM Tasks map to Asana Tasks with parent-child relationships preserved via the parent association. We migrate task name, description (as Notes), start_date, due_date, status, assignee (via User email resolution), estimated_hours (as a number custom field or as a subtask with time estimate), and priority. ITM's custom fields on Task are mapped to workspace-level Asana custom fields applied to the parent Project.
ITM Platform
Subtask
Asana
Checklist Item
1:manyITM Subtasks are nested one level under Tasks. Asana has a flat Task model with a Checklist feature rather than a true Subtask object. We flatten ITM Subtasks into a Checklist attached to the parent Asana Task, preserving the Subtask name and assignee (noted in the checklist item text). For ITM Subtasks with their own due dates or custom fields, we convert them to child Asana Tasks with a visual section grouping or a naming convention (e.g., 'S: [subtask name]') to signal hierarchy.
ITM Platform
Milestone
Asana
Task (milestone flag)
1:1ITM Milestones are standalone date-driven markers belonging to Projects or Tasks. We migrate them as Asana Tasks with a custom field 'Milestone' set to true, preserving the milestone name, target date, and owner. Where the milestone has no named owner in ITM, the milestone task is created with no assignee. We do not convert milestones to Asana's Section markers because Sections are not date-bound and do not appear in timeline or calendar views.
ITM Platform
Baseline
Asana
Project (custom dataset)
lossyITM Baselines capture schedule, cost, and revenue snapshots as an array per Project. Asana has no native baseline entity. We extract all baseline records per project, structure them as a JSON dataset attached as a custom field (large text) on the Asana Project, and deliver the full structured baseline dataset in a CSV export for the customer's admin to recreate in a separate planning or spreadsheet tool. We flag upfront whether the customer actively uses multiple baselines per project so we can confirm the dataset size before committing this approach.
ITM Platform
Custom Fields
Asana
Custom Fields
lossyITM custom fields are entity-scoped (project, task, risk, purchase) key-value pairs. We extract each custom field definition (name, data type, options list for enum types) and create workspace-level custom fields in Asana via POST /custom_fields. ITM text fields map to Asana text, number fields to Asana number, date fields to Asana date, and enum fields to Asana enum with the options list preserved. Custom field values are set on each migrated record via PUT /tasks/{gid} with the custom_fields array.
ITM Platform
Risk
Asana
Project or Task (manual)
lossyITM Risks are a distinct entity type with name, description, probability, impact, owner, and mitigation plan. Asana has no native Risk object. We extract all Risk records during migration and deliver them as a structured CSV with the original ITM Risk fields and a recommended Asana mapping column (Project name, Task name, or custom field bucket). The customer's admin recreates Risks as Asana Projects, Tasks with a 'Risk' tag, or a dedicated risk-management tool. We flag Risks with high probability or high impact during extraction so they can be prioritized in the rebuild.
ITM Platform
Purchase
Asana
Task or external tool (manual)
lossyITM Purchases are a distinct entity type for procurement tracking linked to Projects, with fields for name, amount, vendor, status, and custom values. Asana has no native Purchase or procurement entity. We extract all Purchase records as a structured CSV and deliver it alongside the migration. The customer's admin recreates Purchase records as Asana Tasks with custom fields for amount, vendor, and status, or in a dedicated procurement tool integrated via Asana's API.
ITM Platform
User
Asana
User
1:1ITM Users are referenced by UserID across Tasks, Risks, Programs, and Projects. We extract the full user list (name, email, role, team membership) and match by email against the destination Asana workspace members. Any ITM User without a matching Asana User is flagged in the reconciliation report for the customer's admin to provision before record import. Inactive ITM Users are mapped to inactive Asana Users if the customer needs to preserve historical assignment records.
ITM Platform
Time Entry
Asana
Task (duration)
1:1ITM Time Entries track hours logged against Tasks or Projects with date, hours, user, and description. Asana has no native time-tracking object in its free or Standard tiers; the Business tier includes a Workload view but not a time-logging feature. We migrate Time Entries as subtasks on the parent Asana Task with a naming convention (e.g., '[date] - [hours]h: [description]') preserved in the task name, or we deliver them as a structured CSV for import into a time-tracking tool such as Toggl or Harvest that integrates with Asana.
ITM Platform
Comment
Asana
Stories (Task conversation)
1:1ITM Comments on Tasks and Projects are migrated as Asana Stories attached to the parent Task. We preserve the comment text, author name, and original timestamp. User mentions and rich-text formatting are stripped during transformation to plain text. Comment attachments (if any) are skipped per the ITM Platform API limitation on binary attachment export.
| ITM Platform | Asana | Compatibility | |
|---|---|---|---|
| Portfolio | Portfolio1:1 | Fully supported | |
| Program | Team or Projectlossy | Fully supported | |
| Project | Project1:1 | Fully supported | |
| Task | Task1:1 | Fully supported | |
| Subtask | Checklist Item1:many | Fully supported | |
| Milestone | Task (milestone flag)1:1 | Fully supported | |
| Baseline | Project (custom dataset)lossy | Fully supported | |
| Custom Fields | Custom Fieldslossy | Mapping required | |
| Risk | Project or Task (manual)lossy | Fully supported | |
| Purchase | Task or external tool (manual)lossy | Fully supported | |
| User | User1:1 | Fully supported | |
| Time Entry | Task (duration)1:1 | Fully supported | |
| Comment | Stories (Task conversation)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.
ITM Platform gotchas
API session token expires 30 minutes after last call
v1 and v2 API endpoints coexist with no clear upgrade path
No documented bulk or batch API endpoint
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 probing
We audit the source ITM Platform account across all entities: Portfolios, Programs, Projects, Tasks, Subtasks, Milestones, Baselines, Risks, Purchases, Users, and Time Entries. We probe both v1 and v2 API endpoints per entity type to determine which version returns data for each resource, and we confirm the API key's rotation status and session expiry behavior. We extract the custom field definitions per entity scope, the baseline array structure, and the full user list with email addresses. The discovery output is a written migration scope document listing record counts per entity, the chosen API version per entity, the Asana workspace and team structure, and any ITM entities (Risks, Purchases, Baselines) designated for manual-handoff export rather than live migration.
Asana destination schema setup
We create the destination structure in Asana before any data import. This includes provisioning Teams (if chosen over Projects for Program mapping), creating workspace-level custom fields mapped from ITM's entity-scoped definitions, creating Portfolio records for each ITM Portfolio, and configuring the project template structure. We set up a Sandbox or test Project to validate the custom field mapping and the Program-to-Team or Program-to-Project approach before committing to production migration. The customer's Asana admin approves the schema design and custom field names before we proceed to record migration.
User provisioning and owner reconciliation
We extract every distinct ITM User referenced across Tasks, Risks, Programs, and Projects and match by email against the destination Asana workspace members. Users without a matching Asana account are listed in the reconciliation report for the customer's admin to provision before record import. We resolve ITM Owner references to Asana User references during this step so that assignee and project owner fields are satisfied at migration time rather than patched post-import.
Portfolio and Program migration
We migrate ITM Portfolios first as Asana Portfolio records, then migrate Programs as either Asana Teams or Projects depending on the scoping decision. Program-level custom fields and strategic alignment tags are extracted and applied to the destination Team or Project. Programs are migrated before their child Projects so that the containment hierarchy is established before task assignment begins.
Project and Task migration in containment order
We migrate ITM Projects in dependency order, starting with parentless Projects and then Projects nested under Programs. For each Project, we migrate the Project properties (name, description, dates, budget, custom fields), then create all Tasks with parent-child relationships resolved via the ITM Task hierarchy. Subtasks are converted to Checklist items or child Tasks. Milestones are created as Tasks with a milestone custom field flag. We migrate Comments as Stories on the parent Task. Each batch of Projects and Tasks emits a row-count reconciliation report against the ITM source count.
Baseline, Risk, and Purchase manual-handoff export
We extract Baselines as a structured JSON dataset per Project, attach a summary as a large-text custom field on each Asana Project, and deliver the full baseline dataset as a CSV. Risks and Purchases are extracted as CSVs with all original ITM fields and a recommended Asana mapping column. We flag high-priority Risks and high-value Purchases in the export. These three datasets are handed off as documented exports rather than live API-created records in Asana.
Cutover, validation, and reconciliation
We freeze writes to ITM Platform during the cutover window, run a final delta migration of any records modified since the last batch, then deliver the full Asana workspace for reconciliation. The customer's PMO lead spot-checks 25-50 random Projects and Tasks against the ITM source for field accuracy and completeness, validates that custom field values are correctly applied, and confirms that the Portfolio links and Program hierarchy resolve as expected. We resolve any mapping corrections and deliver the Baseline, Risk, and Purchase export files. We do not rebuild ITM automations, approval workflows, or resource heatmaps in Asana; these are documented in the handoff report for the customer's admin to address as a post-migration task.
Platform deep dives
ITM Platform
Source
Strengths
Weaknesses
Asana
Destination
Strengths
Weaknesses
Complexity grading
Moderate Project Management migration. 1 of 8 objects need a manual workaround.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across ITM Platform and Asana.
Object compatibility
1 of 8 objects need a manual workaround.
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
ITM Platform: Not publicly documented.
Data volume sensitivity
ITM Platform 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 ITM Platform to Asana migration scoping. Not seeing yours? Book a call.
Walk through your ITM Platform 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 ITM Platform
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.