Project Management migration
Field-level mapping, validation, and rollback between Tidy Build and Microsoft Project. We move data and schema; workflows are rebuilt natively in Microsoft Project.
Tidy Build
Source
Microsoft Project
Destination
Compatibility
4 of 11
objects map 1:1 between Tidy Build and Microsoft Project.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Tidy Build to Microsoft Project is a directional shift from construction-specific job costing to general-purpose project scheduling. Tidy Build treats Projects as cost-containers with Materials, Suppliers, Quotes, and Expenses tied to the project record. Microsoft Project treats Projects as task-and-resource schedules with dependencies, baselines, and resource leveling. We map Tidy Projects to Microsoft Project Plans, Tidy Tasks to Tasks with start/duration/finish scheduling, Tidy Expenses to Expense entries mapped into custom Text fields, and Tidy Times to Assignment records. The Manager-vs-Team user tier designation migrates as a custom resource field. We do not migrate Tidy Build's workflow automations, Quotes, Purchase Orders, or Sales Records as these have no native Microsoft Project equivalent; we deliver a written inventory of these objects for the customer's admin to handle separately.
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 Tidy Build 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.
Tidy Build
Project
Microsoft Project
Project (Plan)
1:1Tidy Build Projects map directly to Microsoft Project Plans. We preserve project name, start date, target finish, status (active, on hold, closed), and cost centre metadata as custom fields (Text fields) on the Project record. Tidy Build's project group and budget summary fields migrate to Project-level custom fields for financial reference. The project-level status in Tidy (draft, active, completed) maps to a custom project-level field since Microsoft Project does not have a native project-status property beyond open/closed in the plan.
Tidy Build
Task
Microsoft Project
Task
1:1Tidy Build Tasks and Subtasks map to Microsoft Project Tasks with hierarchical parent-child relationships preserved. Task name, start date, due date, status, and description migrate directly. Tidy Build task assignments (linking tasks to users) map to Assignment records in Microsoft Project with the assigned resource and units loaded. Duration is derived from the start/due date delta if not explicitly stored in Tidy. Milestone-flagged tasks in Tidy become milestone tasks in Microsoft Project.
Tidy Build
Times (Time Entries)
Microsoft Project
Assignment + Task (timephased)
1:manyTidy Build Time entries linked to Projects and Users map to Microsoft Project Assignment records with hours entered as Work. Each time entry becomes an Assignment against the relevant Task for the relevant Resource. If the destination is Project Online, timephased data can be loaded via the PWA timesheet API. For Project for the web, we store time entry totals as a custom number field on the Assignment record since the Graph API for Project for the web does not natively support timephased assignment data. The original Tidy Build date, duration, and charge-rate references are preserved in custom fields on the Assignment.
Tidy Build
Expenses
Microsoft Project
Task + custom fields
1:manyTidy Build Expenses linked to Projects map to Microsoft Project Tasks with expense category and amount stored in custom fields (Text1 for category, Number1 for amount). Each expense record becomes a task record within the parent project so that the expense appears on the project schedule. Expense date and description are stored in additional custom fields (Date1 and Text2). Attachments on Tidy Build expense records are exported as linked files and reattached to the corresponding task in Microsoft Project.
Tidy Build
Material Items
Microsoft Project
Resource (Material type)
1:1Tidy Build Material Items with pricing levels and location hierarchies map to Microsoft Project Resources of type Material. Each material item becomes a Resource record with the material label, standard cost from the default pricing level, and unit of measure. Material categories map to a custom resource field (Text1) for grouping. Tidy Build's multi-level pricing (pricing tiers per customer or project) is stored as a custom resource field note because Microsoft Project Resources do not support per-instance pricing tiers natively.
Tidy Build
Customers
Microsoft Project
Custom field on Project (Text lookup)
many:1Tidy Build Customer records (contact name, company name, billing address) do not have a native Microsoft Project equivalent because Project has no CRM layer. We store the primary customer reference as a custom Text field on the Project record (Text5: customer_name and Text6: customer_contact). If the customer requires full CRM functionality, Microsoft Dynamics 365 Project Operations or a third-party integration is the recommended destination addition. We do not migrate Customer records as a standalone object.
Tidy Build
Suppliers
Microsoft Project
Custom field on Resource (Text lookup)
many:1Tidy Build Supplier records similarly have no native Microsoft Project equivalent. We store supplier references as custom Text fields on the Resource record for each material resource linked to that supplier. The supplier contact name and primary supplier identifier are preserved for reference. Full supplier contact records do not migrate as standalone objects.
Tidy Build
Quote
Microsoft Project
Custom field on Project
lossyTidy Build Quotes have a lifecycle state (draft, sent, approved, lost) and line-item pricing that has no direct Microsoft Project equivalent. We preserve the quote reference number, total amount, and status as custom Text and Number fields on the Project record. Line-item detail is documented in a written quote inventory we deliver to the customer. If the destination is Project Online, the customer may elect to attach the quote PDF to the project as a document via SharePoint.
Tidy Build
Purchase Order
Microsoft Project
Custom field on Resource or Project
lossyTidy Build Purchase Orders with supplier references, line items, quantities, and approval status have no native Microsoft Project equivalent. We map open Purchase Order totals and count to custom fields on the associated Project (Number2: open_po_count, Number3: open_po_value). Full PO line-item detail is documented in a written PO inventory for the customer's admin to handle in their procurement system.
Tidy Build
User (Manager vs Team)
Microsoft Project
Resource
1:1Tidy Build Users map to Microsoft Project Resources. We preserve the Manager vs Team user role designation as a custom resource field (Text3: tidy_user_role) so that the destination system can replicate the access model. Resource type is set to Material for material items and Work for people. The customer's admin provisions the Microsoft 365 accounts that correspond to Tidy Build users as Resources in Project Online or Project for the web before migration begins.
Tidy Build
Custom Fields
Microsoft Project
Custom Fields
lossyTidy Build custom field definitions on Projects and Materials are detected via the API schema during pre-migration audit. We map Tidy custom field types (text, number, date, dropdown) to the nearest equivalent Microsoft Project custom field type: text properties map to Text1-30, numeric properties map to Number1-20, date properties map to Date1-10. Custom field values are loaded at migration time against the corresponding Project or Task record. The customer admin creates the destination custom fields in Project Online PWA settings or Project for the web before migration begins.
| Tidy Build | Microsoft Project | Compatibility | |
|---|---|---|---|
| Project | Project (Plan)1:1 | Fully supported | |
| Task | Task1:1 | Fully supported | |
| Times (Time Entries) | Assignment + Task (timephased)1:many | Mapping required | |
| Expenses | Task + custom fields1:many | Fully supported | |
| Material Items | Resource (Material type)1:1 | Fully supported | |
| Customers | Custom field on Project (Text lookup)many:1 | Fully supported | |
| Suppliers | Custom field on Resource (Text lookup)many:1 | Fully supported | |
| Quote | Custom field on Projectlossy | Fully supported | |
| Purchase Order | Custom field on Resource or Projectlossy | Fully supported | |
| User (Manager vs Team) | Resource1:1 | Fully supported | |
| Custom Fields | Custom Fieldslossy | Mapping required |
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.
Tidy Build gotchas
API must be enabled per organisation before migration
User-role tier limits affect migration scoping
No publicly documented API rate limits for bulk extraction
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
Pre-migration audit and API activation
We audit the source Tidy Build account via API across active Projects, Tasks, Subtasks, Time entries, Expenses, Material Items, Quotes, Purchase Orders, and Custom Fields. We confirm that the Tidy Build Developer API is active and request activation with Tidy International if needed. We run a low-concurrency probe extraction to detect rate-limit behaviour and tune our worker threads accordingly. We extract a full schema snapshot including custom field definitions, user list, and relationship metadata. We also confirm the Microsoft Project destination variant (Project for the web vs Project Online PWA) and validate that the customer has appropriate Microsoft 365 licensing to support it.
Scope definition and custom field creation
We define the migration scope: which Projects, Tasks, and historical records will migrate versus being archived. We create the destination custom fields in Microsoft Project (Project Online via PWA enterprise custom field settings, or Project for the web via the Power Platform admin centre) to match the Tidy Build custom field schema. We define the Tidy-to-Project field mapping document covering Project name, task hierarchy, expense categorisation, time entry totals, material resource types, and customer/supplier reference fields. This document is reviewed and signed off by the customer's project manager before extraction begins.
Data extraction and transformation
We extract all Tidy Build records via the REST API in dependency order: Users first (for Resource mapping by email), then Projects, then Tasks and Subtasks with hierarchy, then Material Items as Resources, then Time entries as Assignment Work values, then Expenses as expense tasks with custom fields, then Custom Field values applied to the parent records. We transform the data during extraction: Tidy Build project status becomes a custom project field, Manager vs Team role becomes a custom resource field, material pricing levels are preserved in resource notes, and expense categories are stored in custom task fields. We flag any Tidy Build records that cannot be represented in Microsoft Project (Quotes, Purchase Orders, Customer contacts, Supplier contacts) for the written inventory output.
Destination load and resource provisioning
We load migrated data into Microsoft Project via the appropriate API: Project for the web uses Microsoft Graph (projects, tasks, assignments, resources endpoints); Project Online uses the PWA REST API. Resource records are created first so that task assignments can reference them. Task hierarchy is loaded with parent-child links preserved. We load time entry totals as Assignment Work values. We validate row counts per object and spot-check five to ten records per object against the source Tidy Build data before proceeding to the next phase.
Validation and reconciliation
We run a reconciliation pass comparing record counts and a random sample of field values between the Tidy Build source and the Microsoft Project destination. We verify task hierarchy (parent-child count), resource count, assignment mapping (task-to-resource links), and custom field population. We flag any discrepancies for correction. We deliver the written inventory of Quote, Purchase Order, Customer, and Supplier records with their Tidy Build identifiers and summary data so that the customer's admin can handle these in their downstream systems.
Cutover and written handoff
We freeze writes to Tidy Build during the cutover window, run a final delta extraction of any records modified during migration, load the delta into Microsoft Project, and confirm the destination as the system of record. We deliver the complete object mapping document, the custom field mapping document, the written Quote and Purchase Order inventory, and the Manager-vs-Team user role reference list. We support a one-week hypercare window to resolve any data quality issues raised by the project team. We do not rebuild automations, Gantt dependency structures, baseline schedules, or resource leveling rules as these require Microsoft Project-native configuration by the customer's project management team.
Platform deep dives
Tidy Build
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 Tidy Build 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
Tidy Build: Not publicly documented. Tidy International does not publish per-endpoint quotas in the open developer docs; in practice rate limits are confirmed once the integration is enabled on a customer tenant..
Data volume sensitivity
Tidy Build 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 Tidy Build to Microsoft Project migration scoping. Not seeing yours? Book a call.
Walk through your Tidy Build 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 Tidy Build
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.