Project Management migration
Field-level mapping, validation, and rollback between WP Project Manager and Asana. We move data and schema; workflows are rebuilt natively in Asana.
WP Project Manager
Source
Asana
Destination
Compatibility
12 of 14
objects map 1:1 between WP Project Manager and Asana.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from WP Project Manager to Asana is a migration from a WordPress plugin with no public API to a cloud-native SaaS platform with a documented REST API. WP Project Manager stores all data in custom WordPress database tables (wp_cpm_projects, wp_cpm_messages, wp_cpm_task_relations, wp_cpm_task_comments) that require direct SQL extraction, while Asana expects API-based record creation with a different object hierarchy. We run read-only database queries against a staging copy of the WordPress site to extract Projects, Milestones, Tasks with Subtask trees, Comments, and File Attachment references. We resolve WordPress user IDs by matching email addresses to Asana user accounts, and we map Milestones to Asana Sections within Projects. Workflows, automations, Kanban board visual state, and Invoice records do not migrate; we deliver a written inventory of these for the customer's admin to rebuild. The Asana API enforces rate limits that require batch chunking and exponential backoff during load.
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 WP Project Manager 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.
WP Project Manager
Project
Asana
Project
1:1WP Project Manager Projects (wp_cpm_projects) map to Asana Projects. We extract project title, description, created date, and visibility setting. Project start and due dates from wp_cpm_projects map to Asana Project Start Date and Due Date fields. Projects are loaded first in the dependency order because all Tasks, Milestones, and Comments reference a project_id foreign key that must resolve at insert time.
WP Project Manager
Milestone
Asana
Section
1:1WP Project Manager Milestones are stored as type=milestone records in wp_cpm_messages with a linked project_id. Asana has no native Milestone object; we map Milestones to Asana Sections within the parent Project. The milestone title becomes the Section name, and the due date is stored as a custom field on the Section. If the customer uses milestone-to-task dependency links, we document them as a task dependency map for manual Timeline configuration in Asana.
WP Project Manager
Task
Asana
Task
1:1WP Project Manager Tasks are stored in wp_cpm_messages with type=task. We extract task title, description (from message body), due date, priority flag, and status. The project_id foreign key resolves to the Asana Project GID at migration time. Tasks without a matching parent Project are held in a reconciliation queue. Priority values (low, normal, high, urgent) map to Asana custom fields or Tags since Asana does not have a native priority field.
WP Project Manager
Subtask
Asana
Subtask
1:1WP Project Manager Subtasks are stored in wp_cpm_task_relations linked to a parent task_id. We reconstruct the subtask hierarchy by reading the relation records, ordering children under their parent task, and inserting them as Asana Subtasks under the resolved parent Task. Subtask title, description, assignee, and due date migrate directly. Subtask depth beyond two levels maps to additional Asana Subtasks with the same parent-child chain preserved.
WP Project Manager
Comment
Asana
Comment
1:1WP Project Manager Comments are stored in wp_cpm_task_comments linked to task_id. We preserve comment body, author (WordPress user ID resolved to Asana user), timestamp, and any attachment references. Author mapping uses the WordPress user-to-Asana user email resolution step. Comments on milestones and projects migrate as Project-level Comments in Asana.
WP Project Manager
File Attachment
Asana
Attachment
1:1File attachments referenced in task comments are stored as WordPress post attachments in the wp_posts table pointing to files in wp-content/uploads. The database contains the file path and attachment post record, but actual files must be transferred separately. We pair the database export with a file sync step that mirrors the uploads directory and re-attaches files to the corresponding Asana Task via the Asana Attachments API. If file path references contain absolute URLs with the source domain, we strip and normalize them during transfer.
WP Project Manager
User and Assignee
Asana
User
1:1Users in WP Project Manager are WordPress native accounts referenced by ID in wp_users. We export wp_users (user_email, display_name, user_registered) and match by email address to Asana workspace members. Any WordPress user without a matching Asana user goes to a reconciliation queue for the customer to provision accounts. WordPress role and capability assignments do not map directly to Asana's project permission model; we document the permission structure for manual rebuild in Asana Teams and Project sharing settings.
WP Project Manager
Time Tracking Entry
Asana
Time Tracking (Asana Premium feature)
1:1Time tracking entries are stored in a premium module sub-table with user_id, task_id, start/end timestamps, and notes. We extract time entries and load them as Asana time tracking entries on the migrated Tasks. Note that Asana's native time tracking requires a Premium workspace or Project Premium status; we confirm the destination workspace tier during scoping and flag any cost impact.
WP Project Manager
Custom Field
Asana
Custom Field
lossyCustom Fields in WP Project Manager are stored as PHP-serialized arrays in wp_postmeta. We deserialize the data using a read-then-parse staging script, normalize field names to ASCII-safe slugs, and map values into Asana's custom field schema (text, number, date, enum, multi-enum). Field structure varies per project in WP Project Manager, so we build a per-project custom field map during discovery. If WordPress was upgraded across PHP versions, some serialized values may fail to parse; we flag any parse failures in the migration summary.
WP Project Manager
Gantt Dependency
Asana
Task Dependency
1:1Gantt chart data in WP Project Manager is derived from task start dates, due dates, and dependency links stored in wp_cpm_task_relations. We extract dependency links (predecessor-successor pairs) and reconstruct them as Asana task dependencies using the Tasks API to add dependency relationships. Asana's dependency model supports finish-to-start, start-to-start, finish-to-finish, and start-to-finish types; we map from the WP Project Manager dependency type where available.
WP Project Manager
Recurring Task Rule
Asana
Recurring Task
lossyRecurring task rules are stored as serialized data in wp_postmeta for the Recurring Tasks premium module. We extract the recurrence pattern (daily, weekly, monthly, yearly) and next occurrence date, then configure equivalent Asana recurring tasks. Note that Asana's recurrence engine and WP Project Manager's recurrence rules are not identical; we document the mapped recurrence for the admin to validate in Asana after migration.
WP Project Manager
Task Status
Asana
Task completion status
1:1WP Project Manager task completion status (marked as done/not done) maps directly to Asana's Task completed status. We preserve the completion timestamp from wp_cpm_messages where available. Tasks completed before migration retain their completed_at date in a custom field for historical accuracy.
WP Project Manager
Invoice
Asana
Not migrated
1:1Invoice records in WP Project Manager are tightly coupled to WooCommerce and Stripe integrations with no clean export path. We do not migrate Invoice records. We recommend exporting invoices as PDF reports from WP Project Manager's UI before migration begins. Time tracking data migrates independently; financial invoice records must be re-created or imported manually in the destination accounting tool.
WP Project Manager
Kanban Board State
Asana
Not migrated
1:1Kanban column positions and board visual state are stored in JavaScript-serialized format in wp_postmeta with no stable column-schema export. We do not migrate the visual board layout. Task data migrates to the Asana List view by default; the customer's admin configures Board view columns in Asana based on the source column names documented in the migration summary.
| WP Project Manager | Asana | Compatibility | |
|---|---|---|---|
| Project | Project1:1 | Fully supported | |
| Milestone | Section1:1 | Fully supported | |
| Task | Task1:1 | Fully supported | |
| Subtask | Subtask1:1 | Fully supported | |
| Comment | Comment1:1 | Fully supported | |
| File Attachment | Attachment1:1 | Fully supported | |
| User and Assignee | User1:1 | Fully supported | |
| Time Tracking Entry | Time Tracking (Asana Premium feature)1:1 | Fully supported | |
| Custom Field | Custom Fieldlossy | Fully supported | |
| Gantt Dependency | Task Dependency1:1 | Fully supported | |
| Recurring Task Rule | Recurring Tasklossy | Fully supported | |
| Task Status | Task completion status1:1 | Fully supported | |
| Invoice | Not migrated1:1 | Fully supported | |
| Kanban Board State | Not migrated1: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.
WP Project Manager gotchas
No public API forces database-level migration
WordPress user table is the identity layer
Serialized PHP data in custom fields and settings
Attachment files are not embedded in the database
Invoice and Stripe data lacks clean export path
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
Database extraction and scoping
We receive database credentials or a phpMyAdmin export from the customer and run read-only queries against the WP Project Manager plugin tables (wp_cpm_projects, wp_cpm_messages, wp_cpm_task_relations, wp_cpm_task_comments, wp_postmeta for custom fields). We profile record counts for all object types, parse any PHP-serialized data, and identify orphaned records (tasks with no project_id, comments with no task_id). The scoping output is a written migration inventory with record counts, schema map, and any data quality flags. We confirm the destination Asana workspace tier (Premium required for time tracking and custom fields; Business required for Portfolios and Goals) before proceeding.
User reconciliation and Asana provisioning
We export all distinct WordPress users referenced as assignees, commenters, or project administrators and match them by email against the destination Asana workspace member list. Any WordPress user without a matching Asana user goes to a reconciliation queue. The customer provisions missing Asana workspace members. We do not import WordPress user accounts; we create Asana user references via email match. Project-level permission roles from WP Project Manager are documented in the migration inventory for manual rebuild in Asana's Project sharing settings.
Schema preparation in Asana
We create the destination structure in Asana before any data loads. This includes Projects (titled from wp_cpm_projects), Sections within Projects (from WP Project Manager Milestones), custom fields (mapped from parsed wp_postmeta), and Tags for priority values. Custom field creation requires a Premium or Business Asana workspace; we confirm the tier during scoping. We configure Asana API credentials with the appropriate workspace and project-level permissions, and we run a test insert of five records per object type to validate field mapping before the full migration begins.
File attachment export
We export the wp-content/uploads directory via SFTP or the hosting file manager, stripping absolute URLs with the source domain. We organize the export directory structure by task_id reference and prepare an Asana attachment upload script. File sync runs in parallel with the database migration so that file references are ready at the time of Asana record insertion. Large file volumes may require a separate file sync window.
Production migration in dependency order
We load records into Asana in dependency order: Projects first (since Tasks, Milestones, and Comments reference project_id), then Sections (Milestones mapped to Asana Sections), then Tasks (with project_id resolved, priority mapped to Tags, and due date preserved), then Subtasks (with parent task_id resolved), then Comments (with author resolved via user email match), then File Attachments (via Asana Attachments API). Each phase emits a row-count reconciliation report. Time Tracking entries load last, contingent on the destination workspace having Premium time tracking enabled. We use Asana's REST API with batch chunking and exponential backoff on rate-limit responses (Asana enforces 1,500 requests per minute on the standard tier).
Cutover, validation, and automation handoff
We freeze writes in WP Project Manager during cutover, run a final delta migration of any records modified during the migration window, then mark Asana as the system of record. We deliver a validation report comparing Asana record counts against the WP Project Manager source counts. The customer spot-checks 25-50 records across Projects, Tasks, Subtasks, and Comments. We deliver a written inventory of WP Project Manager automations (none native, but any Zapier or third-party integrations), recurring task rules, and invoice records for the admin to rebuild or recreate. We support a one-week hypercare window for reconciliation issues. Workflow Builder configurations do not migrate as code.
Platform deep dives
WP Project Manager
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 WP Project Manager 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
WP Project Manager: No vendor-imposed rate limit; effective ceiling is set by the host's WordPress configuration (PHP execution time, server resources)..
Data volume sensitivity
WP Project Manager 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 WP Project Manager to Asana migration scoping. Not seeing yours? Book a call.
Walk through your WP Project Manager 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 WP Project Manager
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.