Project Management migration
Field-level mapping, validation, and rollback between ]project-open[ and Microsoft Project. We move data and schema; workflows are rebuilt natively in Microsoft Project.
]project-open[
Source
Microsoft Project
Destination
Compatibility
9 of 10
objects map 1:1 between ]project-open[ and Microsoft Project.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Migrating from ]project-open[ to Microsoft Project is a scoped project-data migration, not a full platform replacement. ]project-open[ bundles project management with ERP-level financials, CRM, ticketing, and timesheet tracking in a single integrated stack. Microsoft Project is a scheduling and resource-management tool — it has no native equivalent for costs, invoices, companies, tickets, or timesheet billing rates. We extract all schedulable data (projects, tasks, resources, assignments, calendars, and baseline snapshots) from the ]project-open[ PostgreSQL backend, map it to the Microsoft Project data model, and validate against the destination before cutover. We do not migrate workflows, custom reports, ticketing queues, financial records, or CRM data — these require a separate inventory and a different destination system. The migration runs entirely against the source database because ]project-open[ exposes no public REST or SOAP API.
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 ]project-open[ object lands in Microsoft Project, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
]project-open[
Project
Microsoft Project
Project
1:1]project-open[ project_id maps to a new Microsoft Project (.mpp) plan or Project for the web project. We extract project_name, project_status_id (potential/active/closed), start_date, end_date, percent_complete, and any baseline or forecast cost fields. The acs_objects hierarchy preserves parent-child project groupings. If the customer uses Project for the web (Planner consolidation target), we use the Microsoft Graph API to create projects; for Project Desktop, we build a validated .mpp file from the extracted schema.
]project-open[
Task
Microsoft Project
Task
1:1Tasks are stored by task_id referencing the project tree. We traverse the task tree by querying task and the parent-child relationship fields, then write each task into Microsoft Project with the correct WBS hierarchy, outline level, duration, start/finish dates, and predecessor/successor dependencies. The Microsoft Project predecessor field maps from ]project-open['s task dependency records stored in im_timesheet_task_dependency or equivalent dependency tables. Constraint dates, delay (lag), and task type (fixed duration, fixed work, fixed units) are mapped from the source task_type and constraint configuration.
]project-open[
Resource / Team Member
Microsoft Project
Resource
1:1]project-open[ stores resource assignments via acs_rels and the im_timesheet module. We extract user_id, first_names, last_name, and email from the acs_users table, and map availability and calendar data from im_timesheet_plan entries. Assignments in Microsoft Project require the resource to exist in the resource sheet before assignment records are written. We create Resources from the user list, set Max Units to 100% by default, and optionally import cost rates from any im_cost_center_rates data if the customer requests cost-based resource planning in Microsoft Project.
]project-open[
Task Assignment
Microsoft Project
Assignment
1:1]project-open[ task assignments (user to task with hours or percentage) live in im_timesheet_task_initial_metric or im_timesheet_tasks. We map these to Microsoft Project Assignment records (Task ID + Resource ID) with the Work field set from the source hours. Assignment-level actual work, remaining work, and actual start/finish dates migrate if source data is available in the timesheet or cost tracking module.
]project-open[
Project Calendar
Microsoft Project
Project Calendar / Base Calendar
1:1]project-open[ stores working hours and exceptions in im_hours_per_day and im_calendar_exception tables. We reconstruct a Microsoft Project calendar from these records, setting the base calendar working time and exceptions (holidays, non-working days) to preserve the project schedule accuracy. Resource calendars in Microsoft Project are set to the default Standard calendar unless source data provides per-resource exceptions.
]project-open[
Custom Fields
Microsoft Project
Enterprise Custom Fields (outline text, flag, number, date, cost, duration)
lossy]project-open[ dynamic custom attributes per project or task are discovered by querying the attribute storage tables before migration. We create Microsoft Project Enterprise Custom Fields with matching types (Text, Flag, Number, Date, Cost, Duration) in the destination. Outline Text custom fields are used for ]project-open[ category or classification fields. The mapping is limited to 10 custom fields per object type on Project for the web; Project Desktop has no such limit. Customers with more than 10 custom fields per type must prioritise the highest-value fields or use Project Plan 5 with Project Online which has a higher custom field ceiling.
]project-open[
Company
Microsoft Project
— no equivalent
1:1Companies in ]project-open[ (im_companies) store customer and provider records with object_type_id, company_status_id, and contact links. Microsoft Project has no company or account object. We do not migrate companies as records. If the customer requires company context on tasks, we can write company name or ID into a custom text field on the task or project for reference. Full company and contact data should be migrated to a CRM system separately.
]project-open[
Ticket
Microsoft Project
— no equivalent
1:1Tickets (im_tickets) with ticket_status_id, ticket_type_id, assignees, and conversation threads have no Microsoft Project equivalent. Project management systems do not track support tickets as a core object. We do not migrate tickets. We can export ticket records to a CSV for the customer's review and recommend a helpdesk system (Zendesk, Freshdesk, or ServiceNow) for ticket data. Issue tracking that is purely project-level (blockers, risks) can be written into a Microsoft Project task with a custom flag or note field.
]project-open[
Cost / Invoice
Microsoft Project
— no equivalent
1:1Financial records in ]project-open[ (im_costs with variable_cost_p, invoice amounts, billing status) map to project cost fields in Microsoft Project at best (cost type, total cost, budget). However, invoice generation, billing workflow, accounts payable/receivable, and cost-centre hierarchies have no Microsoft Project equivalent. We do not migrate financial records. We can export them to CSV and map any project-level budget costs to Microsoft Project task or summary cost fields if the source data is structured accordingly.
]project-open[
Timesheet Entry
Microsoft Project
— no equivalent
1:1Timesheet hours logged against projects and users (im_timesheet costing entries) do not map to Microsoft Project native objects. Actual work data in Microsoft Project is assignment-level and is used for earned value analysis, not for billing or financial reporting. We do not migrate timesheet billing records. If the customer needs actual work hours imported, we can write them as actual work on Microsoft Project assignments, but this overwrites any hours already tracked post-migration.
| ]project-open[ | Microsoft Project | Compatibility | |
|---|---|---|---|
| Project | Project1:1 | Fully supported | |
| Task | Task1:1 | Fully supported | |
| Resource / Team Member | Resource1:1 | Fully supported | |
| Task Assignment | Assignment1:1 | Fully supported | |
| Project Calendar | Project Calendar / Base Calendar1:1 | Fully supported | |
| Custom Fields | Enterprise Custom Fields (outline text, flag, number, date, cost, duration)lossy | Mapping required | |
| Company | — no equivalent1:1 | Fully supported | |
| Ticket | — no equivalent1:1 | Fully supported | |
| Cost / Invoice | — no equivalent1:1 | Fully supported | |
| Timesheet Entry | — no equivalent1: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.
]project-open[ gotchas
No public API forces direct PostgreSQL database access
Boolean fields use 't'/'f' char values not native booleans
Complex acs_objects inheritance and acs_rels traversal
Custom fields require pre-migration field discovery and mapping
Date and datetime storage formats vary across modules
Microsoft Project gotchas
Project for the web is being retired and merged into Microsoft Planner
Planner-tier portfolio features are incomplete despite Plan 5 labeling
Web app constraint controls are weaker than the Windows desktop client
Project requires a separate license not bundled with standard Microsoft 365
Project Online API is edition-gated and inconsistently documented
Pair-specific challenges
Migration approach
Database access and schema discovery
We receive read-only database credentials from the customer and establish a scoped PostgreSQL connection to the ]project-open[ instance. We run schema discovery queries against acs_objects, acs_rels, the task and project tables, im_timesheet modules, im_costs, and im_tickets. We identify every distinct table that stores migratable data, map foreign-key relationships, and run the custom attribute discovery pass against all project and task objects. The output is a complete data inventory and a schema dependency graph.
Destination product clarification and field mapping design
We confirm the target Microsoft product with the customer: Project Desktop (.mpp output), Project for the web / Planner (Microsoft Graph API), or Project Online PWA (SharePoint REST API). We design the field mapping for each migratable object — project, task, resource, assignment, calendar, and custom fields — against the destination data model. Objects without a destination equivalent (companies, tickets, costs, timesheet billing records) are flagged in a written Exclusion Inventory delivered before migration begins.
Data extraction and transformation
We execute SQL extraction queries against the ]project-open[ PostgreSQL database, preserving the acs_objects hierarchy for project groupings and traversing acs_rels for user-to-project assignments. We convert all '_p' boolean fields from 't'/'f' to true/false during extraction. Dates are normalised to UTC. Custom attribute discovery results are merged into the extraction output. The transformed dataset is staged in a secure, isolated environment before any write to the destination.
Sandbox or pilot import
For Project Desktop migrations, we generate a pilot .mpp file and share it with the customer's project manager for visual validation — confirming task hierarchy, WBS numbering, dependencies, resource names, and date accuracy. For Project for the web and Project Online, we run a pilot import against a test environment using the Microsoft Graph API or PWA API, then reconcile the output against the source extract. Corrections to the field mapping are applied before the full production migration.
Production cutover
We freeze writes to ]project-open[ during the cutover window, extract a final delta of any records created or modified since the initial extraction, and merge the delta into the destination. We run production import in dependency order: project and calendar first, then resources, then tasks and assignments. Custom fields are applied last. We produce a row-count reconciliation report and a mapping coverage report confirming which source fields landed in the destination and which were excluded per scope.
Handoff and Exclusion Inventory delivery
We deliver the reconciled project file(s) to the customer with a mapping summary. We also deliver the written Exclusion Inventory — a complete list of source objects that were not migrated, the reason for exclusion, and the recommended alternative system for each. We do not rebuild ]project-open[ workflows, reports, or automations in Microsoft Project as part of the migration scope. We support a one-week post-cutover window for data questions and validation issues raised during user acceptance testing.
Platform deep dives
]project-open[
Source
Strengths
Weaknesses
Microsoft Project
Destination
Strengths
Weaknesses
Complexity grading
Standard Project Management migration. 1 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 ]project-open[ and Microsoft Project.
Object compatibility
1 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
]project-open[: Not applicable — no public API.
Data volume sensitivity
]project-open[ 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 ]project-open[ to Microsoft Project migration scoping. Not seeing yours? Book a call.
Walk through your ]project-open[ to Microsoft Project migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave ]project-open[
Other ways to arrive at Microsoft Project
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.