Project Management migration
Field-level mapping, validation, and rollback between Worksection and Asana. We move data and schema; workflows are rebuilt natively in Asana.
Worksection
Source
Asana
Destination
Compatibility
12 of 13
objects map 1:1 between Worksection and Asana.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Worksection to Asana is a data-model migration that preserves work records but cannot preserve Worksection's project history, stage links, or visual color tags. Worksection organizes work into Projects containing Tasks with Subtasks, Time entries, and per-project custom fields; Asana uses Projects containing Tasks with Sections, Custom fields, and native time tracking available on Starter and above. We extract Worksection records through its REST API with chunked GET requests to respect the 8kB limit, resolve per-project custom field schemas into Asana local or global custom fields based on the destination tier, and map task dependencies to Asana Timeline with documented gaps for the dependency types that do not transfer. We do not migrate Worksection's Workflow rules, automations, or project activity logs as these are platform-specific and must be rebuilt in Asana's Rules engine 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 Worksection 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.
Worksection
Project
Asana
Project
1:1Worksection Projects map directly to Asana Projects with name, description, status, start date, and due date preserved. Project folder hierarchy is flattened into Asana Sections or sub-Projects depending on the customer's preference during scoping. Worksection's project color tags and pinned image states are dropped by Worksection's own export logic and cannot be reconstructed; we flag this as a cosmetic gap in the scope document.
Worksection
Task
Asana
Task
1:1Worksection Tasks map to Asana Tasks with title, description (migrated as rich text), assignee (resolved via email to Asana User), due date, priority, and status preserved. Task start date from Worksection maps to the Custom field Start Date in Asana if the customer requires it; Asana's native due_date field covers the due date. Completed_at timestamp migrates to a custom field completed_at__c for audit since Asana marks completion without storing a separate timestamp.
Worksection
Subtask
Asana
Subtask
1:1Worksection Subtasks map to Asana Subtasks under their parent Task. The parent-child relationship is preserved by setting the parent Task's GID as the subtask's parent reference. Worksection allows deeper nesting in some configurations; Asana supports subtasks up to 15 levels deep. If Worksection nesting exceeds this, we document the overflow and map the deepest records as top-level Tasks with a custom field parent_original_id__c for the customer's admin to reorganize manually.
Worksection
Time Entry
Asana
Time tracking entries (Task time logged)
1:1Worksection time entries with hours and descriptions map to Asana time tracking entries on the corresponding Task. Worksection's hourly rate multiplied by hours produces a cost value; if the customer needs cost tracking in Asana, we create a custom currency field actual_cost__c on the Task and populate it during import. Worksection's built-in timer start/stop events do not have a separate representation in Asana and are not migrated as discrete records.
Worksection
Cost and Rate
Asana
Custom currency field
1:1Worksection's per-task financial costs and per-project hourly rates have no native Asana equivalent. We create a custom currency field cost_actual__c on Tasks (if Advanced tier or above) and a custom currency field hourly_rate__c on Projects, populating them from the Worksection export. Cost reporting in Asana relies on Portfolio time-tracking summaries or a third-party integration; we document this gap and recommend the customer's admin evaluate Asana's native reporting or a timesheet app post-migration.
Worksection
Comment
Asana
Stories (Task comments)
1:1Worksection task comments map to Asana Stories attached to the Task. Author attribution (email resolved to Asana User), comment body, and original timestamp are preserved. Threaded discussions in Worksection are flattened into sequential Stories in Asana since Asana's comment model is not natively threaded.
Worksection
Attachment
Asana
Attachment
1:1File attachments on Worksection Tasks and Projects migrate as Asana Attachments. We resolve FTP-linked files and Google Drive references by downloading to a temporary location and uploading to Asana's attachment storage. Large attachments are chunked to respect API limits on both platforms. Image attachments and pinned images from Worksection are included, but pinned image states (visual marker position) are not preserved as they have no data representation in the export payload.
Worksection
Label
Asana
Tags
1:1Worksection task Labels and stage tags map to Asana Tags. Multi-select labels in Worksection become multiple Asana Tags on the same Task. Worksection's color-coded labels lose their color mapping since Asana's tag color is assigned per tag name independently; we note the color-to-tag mapping in the scope document for the customer to re-apply manually if needed.
Worksection
Member
Asana
User
1:1Worksection Member accounts (email, name, role) map to Asana Users. We resolve by email match during import. Any Worksection member without a matching Asana User is held in a reconciliation queue; the customer's admin provisions the missing Asana User before record import resumes. Inactive or archived Worksection members can be mapped to Asana Guests if the destination org allows Guest access, or omitted with a note in the scope.
Worksection
Team and Department
Asana
Team
1:1Worksection Teams and Departments map to Asana Teams. We extract the team structure from Worksection's member-to-team assignments and create corresponding Asana Teams. If Worksection's team permissions layer (view, edit, admin) is used, we document the permission mapping for the customer's admin to reconfigure in Asana's Team settings post-migration.
Worksection
Custom Field (per-project)
Asana
Custom field (local or global)
lossyWorksection custom fields created per-project via Administration require field-level mapping because each Worksection project can define its own schema independently. We consolidate all unique field names across the source account, map data types (text to Asana Text, number to Number, date to Date, dropdown to Single-select or Multi-select), and create either local custom fields on each Asana Project or global custom fields in the organization field library depending on the destination Asana tier. Custom fields are available from Asana Starter tier onward.
Worksection
Gantt Dependency
Asana
Dependency (Timeline)
1:1Worksection task dependencies visible in the Gantt chart migrate to Asana Dependencies linked to the Timeline view. We map finish-to-start dependencies directly to Asana's finish_to_start dependency type. Worksection's stage-to-stage 'next stage' linking does not transfer and is dropped by Worksection's own migration export; we document every instance of this pattern in the scope for manual reconstruction in Asana's Timeline. Start-to-start, finish-to-finish, and start-to-finish dependency types in Worksection map to their equivalents in Asana.
Worksection
Project History
Asana
Not migratable
1:1Worksection's project history, audit trails, and past-state activity logs are not transferred in any migration export. This is a Worksection platform restriction and applies regardless of migration destination. We flag this upfront during scoping so the customer understands that moving to Asana means losing the full chronological record of who did what and when within the existing Worksection account. There is no workaround for this data loss.
| Worksection | Asana | Compatibility | |
|---|---|---|---|
| Project | Project1:1 | Fully supported | |
| Task | Task1:1 | Fully supported | |
| Subtask | Subtask1:1 | Fully supported | |
| Time Entry | Time tracking entries (Task time logged)1:1 | Fully supported | |
| Cost and Rate | Custom currency field1:1 | Fully supported | |
| Comment | Stories (Task comments)1:1 | Fully supported | |
| Attachment | Attachment1:1 | Fully supported | |
| Label | Tags1:1 | Fully supported | |
| Member | User1:1 | Fully supported | |
| Team and Department | Team1:1 | Fully supported | |
| Custom Field (per-project) | Custom field (local or global)lossy | Fully supported | |
| Gantt Dependency | Dependency (Timeline)1:1 | Fully supported | |
| Project History | Not migratable1: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.
Worksection gotchas
Project history is permanently dropped on any migration
Stage links and 'next stage' dependencies do not migrate
Color tags and pinned image states are not transferred
8kB GET request limit requires chunked API reads
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 Worksection export scoping
We audit the source Worksection account across all projects, extracting record counts for Tasks, Subtasks, Time entries, Comments, Attachments, Labels, Members, Teams, and per-project custom field schemas. We identify the Worksection API credentials (OAuth 2.0 bearer token with its 24-hour access window and 30-day refresh cycle), assess the total export volume against the 8kB GET limit to determine the chunking strategy, and flag the project history loss to the customer before any extraction begins. The discovery output is a written migration scope with record counts, custom field catalog, and a data gap register.
Asana destination setup and custom field provisioning
We create the destination structure in Asana: Projects (one per Worksection Project), Teams (mapped from Worksection Departments), local or global Custom Fields based on the Asana tier, and any custom fields required for time-entry cost tracking. If the destination Asana account is on the free plan, we flag the time-tracking limitation and agree on the custom field approach before provisioning. Custom fields are created in a Sandbox or staging Project first and validated before the full migration proceeds.
Chunked extraction from Worksection API
We extract Worksection records in paginated batches using the 8kB GET limit as the chunk boundary. Large projects with many tasks are split across multiple API calls with offset-based pagination. We log each chunk boundary, validate total record counts against expected dataset sizes, and re-request any chunk that returns a truncated payload. Member records are extracted first to build the email-to-User lookup table used for assignee resolution throughout the migration.
Schema mapping and transformation
We apply the field mapping transforms: Worksection Task priority to Asana Custom field or Tag; Worksection task status to Asana section membership or Custom field; Worksection time entries to Asana time tracking entries with cost calculated in a custom currency field; Worksection Labels to Asana Tags; Worksection per-project custom fields to the consolidated Asana custom field catalog. The transformation output is a staging dataset validated for completeness before any Asana insert begins.
Sandbox migration and reconciliation
We run a full migration into a test Asana Workspace or Project using a representative data sample (typically 10-20% of total records chosen across high, medium, and low complexity Projects). The customer's project manager or admin spot-checks record counts, field populatedness, hierarchy integrity (parent Task to Subtask relationships), and attachment accessibility. We correct any mapping errors before the production migration phase begins. This step also validates that the Asana API rate limits do not throttle the import under real volume.
Production migration in dependency order
We run production migration in record-dependency order: Teams and Members first (for User resolution), then Projects, then Tasks (with Subtasks nested), then Time entries, then Comments, then Attachments, then Labels and Custom field values. Each phase emits a row-count reconciliation report before the next phase begins. We disable Asana notifications during import to prevent team spam. Worksection writes are frozen during the final cutover delta to avoid record divergence between the source and destination.
Cutover, dependency handoff, and automation rebuild inventory
We freeze the Worksection account at cutover, run a final delta migration of any records modified during the migration window, then enable Asana as the system of record. We deliver a written inventory of Worksection Workflow rules and automations that cannot migrate to Asana's Rules engine, with a recommended Asana Rules equivalent for each. We support a one-week hypercare window where we resolve any reconciliation issues. We do not rebuild Worksection Workflows as Asana Rules inside the migration scope; that is a separate engagement or an internal admin task.
Platform deep dives
Worksection
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 Worksection 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
Worksection: GET requests capped at 8kB per call; overall rate limits not publicly documented.
Data volume sensitivity
Worksection 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 Worksection to Asana migration scoping. Not seeing yours? Book a call.
Walk through your Worksection 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 Worksection
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.