Project Management migration
Field-level mapping, validation, and rollback between Triskell and Asana. We move data and schema; workflows are rebuilt natively in Asana.
Triskell
Source
Asana
Destination
Compatibility
6 of 12
objects map 1:1 between Triskell and Asana.
Complexity
CModerate
Timeline
4-6 weeks
Overview
Triskell and Asana are fundamentally different tools. Triskell is a portfolio-centric PPM designed for strategic alignment, financial tracking, and capacity governance across programs and projects at enterprise scale. Asana is a task and project management platform optimized for team collaboration, workflow automation, and cross-functional visibility. The migration is not a simple record copy: Triskell's top-down hierarchy (Portfolio, Program, Project, Task) must flatten into Asana's workspace-team-project-task structure, and Triskell's native financial management module has no direct Asana equivalent. Triskell does not expose a public API, so data extraction relies on CSV exports from within the application. We validate and transform those exports, map custom field values to Asana custom fields, and write records through Asana's REST API. Dashboards, saved reports, and automations are not migration-eligible; we document them for the customer's admin to rebuild on Asana.
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 Triskell 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.
Triskell
Portfolio
Asana
Workspace + Project
1:manyTriskell Portfolios are the top-level strategic container with ownership and metadata but no direct Asana equivalent. We map Portfolios to Asana Workspaces (for multi-division organizations) or to top-level Projects with a Portfolio flag custom field. If the customer has multiple Portfolios representing distinct business units, each becomes a separate Asana Workspace or a dedicated Team. Parent Portfolio metadata migrates as a text custom field and a Workspace-level description.
Triskell
Program
Asana
Project or Section
1:1Triskell Programs sit between Portfolios and Projects and carry budget summaries, status rollups, and custom fields. We map Programs to Asana Projects at the team level, preserving the Program-to-Portfolio linkage via a custom field (parent_portfolio_ref__c) that references the destination Workspace or Project. Programs with no child Projects migrate as standalone Projects with a program_type__c custom field set to 'program' for identification.
Triskell
Project
Asana
Project
1:1Triskell Projects are the primary work container and map directly to Asana Projects. We map project name, description, status, start and due dates, and owner directly. Custom fields at the Project level migrate to Asana custom fields scoped to the project or to the team's portfolio of projects. Triskell's per-project-type status workflows require a stage-mapping table built during scoping; any status value not valid in the destination Asana project is flagged before import.
Triskell
Task
Asana
Task
1:1Triskell Tasks map to Asana Tasks under their parent Project. We preserve task name, description, assignee, due date, start date (requires Asana Premium), priority, and custom field values. Task ordering and hierarchy within the parent Project are preserved via Asana Sections and via the parent_task_gid field for subtasks. Triskell Tasks without a due date migrate as dateless Asana Tasks.
Triskell
Custom Fields (Portfolio level)
Asana
Workspace-level Custom Fields
lossyTriskell custom fields at the Portfolio level (e.g., strategic priority, portfolio owner, investment tier) migrate to Asana custom fields at the Workspace level or as Project-level custom fields on top-level Portfolio Projects. We enumerate all Portfolio-level custom fields from the customer's configuration export, map data types to Asana field types (text, number, date, enum, multi-enum), and create them before Portfolio-level records are written.
Triskell
Custom Fields (Program level)
Asana
Project-level Custom Fields
lossyTriskell custom fields at the Program level (e.g., program sponsor, investment request status, capacity headroom) map to Asana custom fields scoped to the Projects that represent Programs. We apply the same type-mapped approach and create the destination fields in the target Asana project before Program records are imported. Fields that reference picklist values valid in Triskell but not in Asana are flagged for the customer to define before import.
Triskell
Custom Fields (Project and Task level)
Asana
Project and Task Custom Fields
lossyTriskell custom fields at the Project and Task levels migrate to Asana custom fields at the corresponding project and task level. Number fields (e.g., budget allocated, actual spend) map to Asana number fields with currency formatting where applicable. Multi-select fields map to Asana enum or multi-enum fields. We validate picklist values against the Asana destination project before writing records with a held-reconciliation queue for any unmapped values.
Triskell
Budget and Financial Data
Asana
Custom Number Fields
lossyTriskell's native budget tracking (budget amounts, actuals, forecasts, and expense data) has no Asana equivalent. We migrate these as custom number fields: budget_allocated__c, budget_spent__c, budget_forecast__c, and budget_variance__c. Currency data migrates as a number with the customer's base currency noted in a separate field. Financial reporting built on these fields must be reconstructed in Asana as custom reports or connected to an external BI tool.
Triskell
User / Owner
Asana
User (via email lookup)
1:1Triskell user records and project/program ownership assignments migrate as owner references in Asana. We resolve Triskell owner records by email against the destination Asana organization's User table. Any Triskell Owner without a matching Asana User goes to a reconciliation queue; the customer's admin provisions the missing User before record import resumes. Inactive Triskell users are mapped to inactive Asana Users if historical assignment must be preserved.
Triskell
Status Workflow
Asana
Project Status + Custom Enum Field
lossyTriskell supports distinct status workflows per project type. We export the active workflow configuration from Triskell and build a stage-mapping table for each project type. In Asana, we use the native Project Status field (on track, at risk, off track) as a summary indicator, and create a custom enum field (triskell_status__c) to preserve the original Triskell workflow stage value. Records that reference unmapped status values are held in a review queue rather than written silently with a default status.
Triskell
Attachment
Asana
Attachment
1:1Triskell file attachments linked to Projects and Tasks migrate to Asana attachments on the corresponding Tasks. We migrate file references where the platform exposes a download URL through the CSV export. Files exceeding Asana's 100MB attachment limit are flagged in the migration inventory with file name, size, and original location for manual re-upload. We document the full attachment list in the scoping worksheet so the rebuild effort is scoped rather than discovered post-migration.
Triskell
Dashboards and Reports
Asana
None (not migratable)
1:1Triskell dashboards and saved report configurations are UI-layer constructs built from saved queries and visualization settings. They are not accessible via standard data export and are not migrated by FlitStack AI. We document every Triskell dashboard's constituent metrics, filters, and data sources in the scoping worksheet so the customer's admin can reconstruct them in Asana using Asana Portfolios (Business tier) or custom BI connections.
| Triskell | Asana | Compatibility | |
|---|---|---|---|
| Portfolio | Workspace + Project1:many | Fully supported | |
| Program | Project or Section1:1 | Fully supported | |
| Project | Project1:1 | Fully supported | |
| Task | Task1:1 | Fully supported | |
| Custom Fields (Portfolio level) | Workspace-level Custom Fieldslossy | Fully supported | |
| Custom Fields (Program level) | Project-level Custom Fieldslossy | Fully supported | |
| Custom Fields (Project and Task level) | Project and Task Custom Fieldslossy | Fully supported | |
| Budget and Financial Data | Custom Number Fieldslossy | Fully supported | |
| User / Owner | User (via email lookup)1:1 | Fully supported | |
| Status Workflow | Project Status + Custom Enum Fieldlossy | Fully supported | |
| Attachment | Attachment1:1 | Fully supported | |
| Dashboards and Reports | None (not migratable)1:1 | Not 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.
Triskell gotchas
No publicly documented REST API for direct data extraction
Dashboard and report configurations are not migration-eligible
Status workflow differences between project types cause import validation failures
Custom field schema varies by object level and must be discovered per customer
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
Export guidance and data discovery
We guide the customer through Triskell's native CSV export workflow for each object level: Portfolios, Programs, Projects, Tasks, and Custom Fields. Because Triskell has no public API, the export is a manual step performed by the customer's Triskell administrator. We provide a structured export template specifying which fields to include and how to handle multi-level hierarchy exports. The customer also provides a field inventory screenshot or export for each object level so we can enumerate the custom field schema before building the migration mapping.
Schema design and hierarchy mapping
We design the Asana destination schema based on the Triskell export analysis. This includes creating Asana Workspaces (or mapping to existing Workspaces), Teams, and Projects that represent the Triskell Portfolio and Program levels. We create all custom fields (text, number, date, enum, multi-enum) at the appropriate scope before any data import, and configure the stage-mapping table for Triskell status workflows to Asana project status and custom enum fields. Schema is validated in an Asana test environment before production migration.
Financial data field engineering
Triskell's native budget and financial tracking fields have no Asana equivalent. We engineer custom number fields (budget_allocated__c, budget_spent__c, budget_forecast__c, budget_variance__c) at the Project level in Asana to preserve the raw financial inputs. We document the original Triskell formula logic (e.g., variance = forecast minus actual) in the handoff worksheet so the customer's admin can rebuild calculations in a BI tool or external dashboard. If the customer requires native budget tracking in Asana, we recommend evaluating an Asana-certified budget app from the Asana App Directory.
User reconciliation and owner mapping
We extract every distinct Triskell Owner referenced on Portfolio, Program, Project, and Task records and match by email against the destination Asana organization's User table. Owners without a matching Asana User go to a reconciliation queue. The customer's Asana admin provisions missing Users before record import resumes. We preserve the original Triskell owner assignment as owner_gid__c on the migrated record for audit. Inactive Triskell users are mapped to inactive Asana Users if the historical assignment must be preserved.
Production migration in dependency order
We run production migration in hierarchy order: Workspaces (from Portfolios), Teams, Projects (from Programs and Projects), Tasks (with parent_project_gid resolved), Custom Field values (with enum value mapping validated against the destination field's options), Attachments (with files under 100MB migrated via the Asana API, larger files flagged for manual re-upload), and Financial data (custom number fields). Each phase emits a row-count reconciliation report before the next phase begins. The Triskell instance is placed in read-only mode during the cutover window.
Cutover, validation, and workflow handoff
We freeze Triskell writes during cutover, run a final delta migration of any records modified during the migration window, then enable Asana as the system of record. We deliver the dashboard and report inventory document (with constituent metrics and filters), the workflow inventory document (with recommended Asana Rules equivalents), and the financial field mapping document to the customer's admin team. We support a one-week hypercare window for reconciliation issues. We do not rebuild Triskell workflows as Asana Rules inside the migration scope; that is a separate engagement or an internal admin task.
Platform deep dives
Triskell
Source
Strengths
Weaknesses
Asana
Destination
Strengths
Weaknesses
Complexity grading
Moderate Project Management migration. 4 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Triskell and Asana.
Object compatibility
4 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
Triskell: Not publicly documented.
Data volume sensitivity
Triskell 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 Triskell to Asana migration scoping. Not seeing yours? Book a call.
Walk through your Triskell 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 Triskell
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.