For Microsoft Project and Project Server teams

Resource Migration: Capacity Planning from Microsoft Project

Project Server's enterprise resource pool, costed timesheets, calendar exceptions, and cross-project capacity views are PMO-grade infrastructure. When you move off it, every one of those constructs has to be re-modelled in the new platform, and the platforms differ wildly in what they preserve. This guide walks PMO directors and resource managers through the resource-model migration end to end: what's at risk, how target platforms compare, the migration process, validation, and post-migration capacity rigor.

Updated
The capacity planner, per-person allocation, utilization, and billable hours. The direct replacement for Project Server's resource views.

TL;DR

The risk: Project Server's resource model includes constructs that most other platforms partially or fully drop. Microsoft Planner Premium has no enterprise resource pool at all. Project for the Web has no costed timesheets. Generic resources, calendar exceptions, and cross-project capacity views all translate differently across targets.

The five things to migrate: the enterprise resource pool itself, standard rates and cost-rate tables, calendar exceptions, resource leveling rules, and the cross-project capacity views your PMO uses to make staffing decisions.

The process: inventory → pick a target that preserves what matters → export → re-model in target → assign + validate → re-run capacity views → reconcile. Plan ~4 weeks of focused effort for a 100-resource pool, more if you have heavily-customised cost-rate tables or many calendar exceptions.

Sibling reading: the migration guide covers the broader move from Microsoft Project, and Onplana's resource capacity planning software shows the capacity views you re-run at the end.

Why capacity planning breaks at the cutover

Project Server's value, for the PMOs that run it well, is rarely the project plans themselves. It was the operational layer underneath: a single enterprise resource pool that every project drew from, costed timesheets that fed billing and revenue recognition, calendar exceptions that propagated automatically, and cross-project views that let resource managers make weekly staffing decisions on real allocation data. That operational layer is what's at risk. The plans migrate. The operational layer often does not.

Three failure modes show up consistently when PMOs underestimate this:

  • The "we'll re-add resources later" trap. A team migrates the project plans cleanly, then plans to re-add the resource pool the following sprint. By the time they get to it, individual project owners have already added duplicate resources to their projects, and the resource manager has lost the single-source-of-truth contract that made cross-project capacity views work.
  • The "cost rates aren't critical for go-live" trap. Standard rates are deferred to a phase 2 cleanup. Two months later, Finance discovers their monthly close requires costed timesheet data that no longer exists in the new platform because rates weren't loaded at timesheet-entry time. The data can't be retroactively reconstructed; revenue recognition stalls.
  • The "Planner Premium will work" trap. A PMO assumes Microsoft's cloud product covers the same use cases. It doesn't, for resource modelling. Planner Premium ships no enterprise resource pool, no costed timesheets, no cross-project resource view. Discovery after migration is too late.

The structural reason all three happen: the resource model is the part of Project Server that's least visible in casual product demos and least covered in vendor comparison checklists. Project plans, Gantts, and dashboards demo well. Enterprise resource pools demo poorly. So buyers underweight resource-model coverage in platform selection, then discover the gap in production. This guide is structured to surface the model first, before the migration tactics, on the assumption that the biggest decision is which target platform you pick.

What's actually in your Project Server resource model

Before deciding what to migrate, take inventory of what you have. Project Server's resource model has six layers, each of which migrates differently:

LayerWhat it isWhy it matters
Enterprise Resource PoolTenant-level list of resources every project draws fromSingle source of truth; eliminates per-project duplication
Named vs generic"Jordan Patel" (named) vs "Senior .NET Developer" (generic placeholder)Generics enable demand modelling before staffing decisions are made
Standard rates + cost-rate tablesUp to 5 rate tables per resource (rate A through E) with effective datesDrives costed timesheets, billing reconciliation, project P&L
Resource calendars + exceptionsPer-resource working hours overrides, named exceptions, holidaysCapacity calculations only work if calendar data is right
Resource Breakdown Structure (RBS)Hierarchical grouping (region/department/team) for filteringResource managers slice capacity by their reporting hierarchy
Cross-project capacity viewsResource Center view aggregating allocation across all projectsThe output of the model, staffing decisions live or die here

Not every PMO uses every layer. The right inventory question is "which of these does our team actually rely on for decisions?" If you don't run costed timesheets, the rate-table layer is decorative; you can drop it without consequence. If you don't use generics for demand modelling, you can collapse them. If you do use generics for demand modelling, that capability is non-negotiable in the target platform.

Run the inventory before you compare platforms. The outcome of the inventory is a list of must-have capabilities for the target platform, and that list shapes the rest of the migration. The next section assumes you have that list in hand.

Resource model differences across target platforms

Platform comparisons narrow when you filter for resource-model coverage. Here's the honest picture, organised by the six layers above. Pass / partial / no for each:

LayerPlanner Premium / Project for the WebOnplanaSmartsheet RMWorkfront
Enterprise Resource PoolNo (project-local only)No separate pool; each person is one organization member, added to the projects they work onYes (separate SKU)Yes
Named vs genericNo generic conceptNamed people only; an unmatched imported resource can be given an email and is assigned when that person joinsGenerics modelled as named placeholdersBoth
Standard rates + cost-rate tablesNo costed timesheetsYes, rate cards at three levels (person, role, organization default) with effective dates; no A to E tables per personSingle rate per resource (no rate-table tiers)Yes, multi-tier
Resource calendars + exceptionsPer-user only, no named exceptionsOrganization and project working calendars with named exceptions; no per-person calendar, and a file's resource calendars do not importYesYes
Resource Breakdown StructureNoNo formal RBS; teams and roles group peopleTags only, no formal hierarchyYes
Cross-project capacity viewNo (project-scope only)Yes, each person's weekly capacity against every project, on the Professional plan and up; leveling is one schedule at a timeYes (core feature)Yes
Billable utilization reporting(billable hours ÷ paid hours, per resource + rolled up)No (no billable concept)Yes, the capacity planner's billable view, on the Professional plan and upYes (core PSA report)Yes (PSA module)

Microsoft's cloud product (Planner Premium / Project for the Web, same product under different SKU labels) drops most of the resource-model surface. That's a deliberate product positioning choice, it's a team-task tool with project veneer, not a PMO platform. PMOs using Project Server's resource model in earnest cannot replace it with Planner Premium without losing significant capability.

Smartsheet's Resource Management module and Workfront both keep the enterprise pool concept. They differ on the details: Smartsheet RM is a separate SKU and adds notable per-seat cost; Workfront's enterprise pool is strong but the per-seat pricing is the highest of the four. Onplana has no separate resource pool: each person is one member of the organization, and its resource model is that person's weekly capacity across every project (on the Professional plan and up), rate cards at three levels (person, role, organization default) and working calendars with named exceptions, with no paid add-on. It has no generic resources, no per-person calendars and no formal RBS. Per-seat pricing starts at $12/seat/month (Professional). The honest comparison vs Planner Premium is on our Planner comparison page.

One more dimension that's hard to put in a table: the cross-project capacity view's quality varies a lot between platforms even when the basic capability is present. Some show only direct task assignments; some include sub-project rollups; some include placeholder generic allocation. If your resource manager makes weekly staffing decisions from this view, run a side-by-side comparison during evaluation using the top 25 resources by allocated hours.

Calculate the migration cost

Resource-model work is not a category of its own on the migration cost calculator: it falls under data migration and parallel operation. Enter your project managers, projects and current spend for a 3-year cost range across the whole move.

Open calculator

Pre-migration: inventory the resource pool

Before exporting anything, build a complete inventory of the resource model. This is a different inventory than a project-list inventory: that one catalogues projects; this one catalogues the resource layer underneath them. The deliverable is a Resource Migration Readiness Report that lists every resource artifact, where it currently lives, where it's going, and who owns the move.

  1. Resource list with attributes. Export the full enterprise resource pool with name, type (named/generic/cost), email (for named), max units, standard rate, role/title, RBS path. The OData /Resources endpoint is the canonical source; the Reporting Database has more derived fields but only on Project Server on-prem.
  2. Cost rate tables. Microsoft Project supports up to 5 cost rates per resource (Rate A through Rate E) with effective-date ranges. Export every rate tier, every effective-date row. If your PMO uses only Rate A you can ignore B–E, but verify that's actually the case before assuming.
  3. Calendar exceptions. For each resource, export the calendar exception list with exception name, date range, and working-time override. If your target platform doesn't preserve named exceptions, capture the names to a companion CSV so the rationale ("Conference week", "Holiday closure") survives.
  4. RBS hierarchy. Export the Resource Breakdown Structure: every node, parent-child links, and the resources mapped to each node. The hierarchy is what enables resource managers to filter capacity views by their reporting structure.
  5. Active assignments. Snapshot every active task assignment across every active project: which resource, which project, which task, allocated hours, actual hours, scheduled start/finish. This is the validation baseline; you'll compare allocation in the source vs target post-migration.
  6. Custom resource fields. If your PMO defined Enterprise Custom Fields on resources (security clearance level, billable flag, contract type), export those alongside the resource list. Some target platforms will model these as built-in fields, others as custom fields, others not at all, drives the field mapping decision later.

The completed Readiness Report is what the rest of the migration runs against. To spot-check the export quality before committing, run a sample resource pool through the Migration Preview tool: upload a representative resource-pool slice and see exactly which fields, rates, and exceptions transfer cleanly.

Step-by-step: migrating the resource model

Five phases, each with a deliverable and a go/no-go gate. Total elapsed time typically 3–5 weeks for a 100–250 resource pool, longer if you have heavily customised cost-rate tables or a large RBS.

Phase 1: Inventory + decisions (1 week)

Complete the pre-migration inventory above, then make the platform decision based on which resource-model layers are non-negotiable for your team. Document the decision with rationale; this is the section future-you will re-read when somebody asks why the chosen platform doesn't support feature X.

  • Run the inventory against the live tenant
  • Score each target platform against your must-have layer list
  • Pick the target; document the decision rationale
  • Get sign-off from PMO leadership on the platform choice

Gate: Resource Migration Readiness Report signed; target platform selected.

Phase 2: Export the pool (2–3 days)

Export from Project Server while it is still running, then check the export holds each layer below. Don't rely on .mpp file exports for the resource pool, those carry only project-local resource assignments, not the enterprise pool with its rates, calendars, and RBS.

  • The resource list, from /Resources
  • Calendar exceptions, from /Resources/Calendars
  • Cost-rate tables (or the Reporting DB, on-prem)
  • The RBS, from the SOAP API endpoints, which have no OData equivalent
  • Active assignments, from /Assignments
  • Counts that match the Readiness Report

Gate: Export count matches Readiness Report count for every layer.

Phase 3: Re-model in target (3–7 days)

Import the pool into the target platform, then handle the layer-by-layer translation gaps the platform comparison surfaced. Generics that don't translate get re-modelled as named placeholders. Calendar exception names that don't translate get archived. Custom resource fields get mapped to either built-in fields or custom field definitions in the target.

  • Import the resource list (target's bulk-import or API)
  • Re-create the RBS hierarchy and re-map resources to nodes
  • Load standard rates and cost-rate tables before loading any assignment data
  • Apply calendar exceptions per resource
  • Translate generic resources per the platform's model
  • Map custom resource fields

Gate: Resource pool count, RBS hierarchy, and rate-table count all match source.

Phase 4: Assign + validate (1 week)

Migrate task assignments project-by-project, in waves grouped by owner team. After each wave, the receiving team validates allocation in target vs source for their projects within 48 hours. Don't roll forward until the wave validates clean; chasing accumulated allocation drift across many projects is much harder than fixing it project-by-project.

  • Migrate assignments in waves of 10–25 projects
  • Per-resource, per-project allocation diff: source vs target
  • Investigate any variance > 5%
  • Reconcile costed-timesheet calculations on a sample of past timesheets

Gate: Per-resource allocation diff < 5% across all projects.

Phase 5: Capacity views + reconciliation (1 week)

Recreate the capacity views resource managers actually use, then run them in parallel with Project Server for at least 5 working days. Daily diff reports highlight any place the new platform's capacity calculation differs from the old platform's. Investigate every diff. Document any genuine differences as known limitations.

  • Re-build the top 5 capacity views in the target
  • Run daily diff reports for top 25 resources by allocated hours
  • Investigate variance > 5%; document genuine platform differences
  • Train resource managers on the new capacity-view UI
  • Cut over: target becomes source of truth, Project Server read-only

Gate: 5 consecutive working days of clean daily diff reports; resource managers signed off on the new capacity-view UI.

Common pitfalls and how to avoid them

The five resource-model failure modes that surface most often, with the prevention for each:

Loading rates after assignments

If you import assignments before standard rates are in place, the target platform's costed-timesheet calculations run on $0 rates until rates load, and many platforms don't recompute historical timesheet costs once rates change. Load rates first, always. Verify a sample of timesheet costs against source before bulk-loading assignments.

Flattening generics into named resources too aggressively

If your target platform doesn't have generic resources, the easy path is to collapse every generic into a named placeholder. The trap: future demand modelling now requires demand for specific named placeholders rather than 'a Senior .NET Developer', which means resource managers can't model demand independently of staffing. Keep at least placeholder named resources that explicitly represent unfilled demand.

Not re-creating the RBS hierarchy

The Resource Breakdown Structure is what enables resource managers to slice capacity by their reporting line. Without it, every capacity view is org-wide or project-scoped, neither matches the actual decision-making granularity. Re-build the hierarchy in the target as part of Phase 3, not as a phase 2 followup.

Single-day parallel operation

A 1-day parallel run does not surface enough capacity variance to validate the migration. Resource managers make weekly staffing decisions, so the validation window has to span at least one full work-week, and ideally two, to surface the patterns that matter. 5 consecutive working days of clean diff reports is the minimum bar.

Not capturing the calendar-exception names

If the target platform doesn't preserve named exceptions, exporting only the date-range data loses the rationale. Six months later when somebody asks 'why was this resource off the second week of October?', the date-range lookup tells you nothing. Capture exception names to a companion CSV during export and archive it with the rest of the records.

The pattern across all five: each one is a "we'll figure it out later" decision that's cheap at the moment of decision and expensive in production. The reconciliation work is one of the costs most often underestimated in initial budgets; on the migration cost calculator it sits under parallel operation.

Validation: did capacity planning survive?

The validation phase has three checks, each producing an evidence artifact. File them with the Resource Migration Readiness Report; together they're the audit trail of the migration.

  1. Per-resource allocation reconciliation. For the top 25 resources by allocated hours over the next 90 days, compare allocation in source vs target. Tolerance: ±5%. Larger variance means either the assignment migration was lossy or the target's capacity calculation differs structurally from Project Server's. Both need investigation. Evidence: a per-resource diff report.
  2. Costed timesheet sample reconciliation. Pick the most recent 10 closed timesheets across 5 different resources. Re-run the cost calculation in the target against the same time entries. Tolerance: ±1% (this is dollars; the tolerance is tighter than allocation diff). Variance > 1% indicates a rate mismatch, a calendar exception loss, or both. Evidence: side-by-side cost calculations.
  3. Cross-project capacity view parity. Reproduce the top 3 capacity views resource managers use most often. Side-by-side compare against the last Project Server run for the same time window. Differences in how the two views categorise allocation (direct vs sub-project, named vs generic) are expected. Document them as known platform differences in the post-migration runbook. Evidence: side-by-side screenshots with documented diff.

The validation phase output is a Migration Outcome Report covering what migrated, what didn't, and what's open. Pair it with the Readiness Report from Phase 1, the two together document the full audit trail.

What changes for finance and the CFO

The PMO owns the migration runbook, but the resource model has consequences finance teams discover after cutover unless someone surfaces them up front. Three patterns come up in every migration that involves costed resources, and each one bites differently than PMO-side issues do.

Three rate concepts that get conflated

Project Server tracks three different per-resource rates that sound similar and are NOT interchangeable: standard rate (the cost of an internal hour for allocation modelling, often fully-loaded labour cost), cost rate (the rate used to compute a timesheet's accounting cost, sometimes broken into rate tables A through E for different activity types), and bill rate (the rate charged to a client for billable hours on engagements). Some PMOs use one rate across all three concepts; some use distinct rates per concept; some use rate-table tiers within concepts.

Before exporting, ask finance which rate concepts they actually use, which rate-table tiers map to which activities, and which target-platform fields each rate populates. The export is one row per rate per resource; the import is a mapping decision that determines whether next quarter's revenue-recognition reports reconcile. A common and recoverable mistake is loading bill rates into the cost-rate field. Costed timesheets then compute against the bill rate, P&L reports show inflated costs, the fix is a re-export and re-load. A worse and harder-to-recover mistake is loading cost rates into the bill-rate field. Invoices generated against the wrong rate need to be reissued and the customer-facing remediation conversation is not free.

Capitalisation rules don't auto-move

PMOs in regulated or capex-heavy organisations often have labour-capex policies that say "engineering hours on capitalisable projects roll up to a balance-sheet asset rather than expense." In Project Server these rules typically live as views or reports built on top of the OData feed, sometimes with a per-project flag and a per-task flag. None of that infrastructure migrates automatically. The flags export (custom field values), the views and reports do not. Finance has to rebuild the capitalisation reporting on the new platform from scratch, against the same flag-bearing data.

The risk is a quiet quarter where capitalisation reporting wasn't rebuilt, hours that should have capitalised were expensed instead, and the period closes with the wrong numbers. Material errors here are a control finding. Have finance scope the capitalisation rebuild as a parallel workstream to the migration, not a follow-up, and gate cutover on at least one closed period of side-by-side capitalisation reporting that reconciles.

Billable utilization reporting needs explicit setup

Professional services PMOs live and die on billable utilization (billable hours divided by paid hours, per resource and rolled up). Project Server produces this from the combination of timesheet data plus a "billable" flag at the assignment or task level. The flag exports cleanly; the report does not. As the platform-comparison matrix above shows, target-platform support for native billable utilization reporting varies. Onplana, Smartsheet RM, and Workfront all ship the report as a first-class artefact; Microsoft's Planner Premium does not have a billable concept at all.

For PMOs migrating to a platform that does support billable utilization, gate cutover on producing a side-by-side report for the most recent 4 weeks and reconciling within ±2%. Any larger variance points at a rate-mapping mistake, a missing billable flag, or an assignment that didn't migrate. For PMOs whose target platform does not support billable utilization natively, plan to feed the OData snapshot into a downstream BI tool (Power BI, Looker, Sigma) and rebuild the report there. Either way, finance should sign off on the report's accuracy before the legacy platform is switched off. Otherwise the first month-end on the new platform is when the gap surfaces, which is the worst possible time.

Why finance needs to be in the room before cutover

In every migration where finance was looped in late, the same three issues repeat: rate mappings need re-doing because finance disagreed with the PMO's read of which rate is which; capitalisation reporting wasn't rebuilt and the first quarter-end on the new platform misreported labour capex; billable utilization variance was larger than the PMO's tolerance because finance applies different rules. None of these are platform problems; all of them are coordination gaps. The fix is cheap: add finance as a named approver on Phase 1 (inventory) and Phase 4 (assign + validate). Their sign-off is what closes the loop on the rate mapping, the capex reporting, and the billable-utilization tolerance. Without it, the PMO ships the migration and finance discovers the cost weeks later, almost always at month-end, almost never on a calendar that allows for a graceful re-do.

Long-term: maintaining capacity rigor post-migration

The migration is the catalytic event; the long-term question is whether your PMO's capacity-planning practice still functions on the new platform. Four habits that differentiate teams that maintain rigor from teams that drift:

  • Single source of truth, enforced. The enterprise resource pool is authoritative; project-local resource creation is a leading indicator of drift. Some platforms can lock down the per-project create permission. Use it if available; if not, run a weekly audit comparing per-project resource lists to the enterprise pool.
  • Quarterly rate review. Standard rates that go un-reviewed for 12+ months drift away from actual fully-loaded labour cost. Costed timesheets then drift away from finance reality. Set a quarterly cadence to review rate tables and re-baseline.
  • Named-exception discipline. Calendar exceptions accumulate silently. A resource with 30 named exceptions over 3 years is normal; without a review cadence the exceptions fossilise. Annually, review per-resource exception counts and prune anything older than the policy retention window.
  • RBS evolution. The reporting hierarchy that was right at migration time gradually goes stale as the org reorganises. Plan a 6-monthly RBS review as part of the broader org-design review cadence so the capacity-view slicing stays meaningful.

Frequently asked questions

The questions PMOs ask most often about the resource-model migration. The full FAQPage schema is embedded in this article's structured data so these surface in Google's "People Also Ask" feature.

Will my enterprise resource pool migrate to a new platform?

Most modern PM platforms can ingest a resource list with attributes (name, role, calendar, max units, standard rate), but Project Server's enterprise resource pool semantics, the cross-project pool that automatically appears in every project, only translate cleanly to a small number of platforms. Microsoft Planner Premium has no enterprise pool concept at all; resources are project-local. Smartsheet Resource Management and Workfront keep the enterprise pool model. Onplana has no separate pool: each person is one member of the organization, added to whichever projects they work on, with one weekly capacity read across all of them, and an import matches a file's resources to those members by email. If you migrate to a platform with no organization-level record of each person, you re-add resources project-by-project and lose the central reference.

What happens to costed timesheets and standard rates?

Standard rates and per-resource cost rate tables export cleanly via OData. The target platform must support per-resource cost rates AND the rates have to be present at the time of timesheet entry for billing to reconcile. Onplana (timesheets on the Professional plan and up), Workfront, and dedicated PSA tools keep this. Microsoft Planner Premium does not have a costed-timesheet concept, billable hour calculations done in Project Server disappear when you cut over.

Can I migrate resource calendars (vacation, holidays, exceptions)?

Calendar exceptions migrate as long as the target platform supports per-resource calendar overrides. Project Server lets you set named exceptions ("Conference week", "Holiday closure") that propagate to every project a resource is assigned to. Most other platforms support per-resource exceptions but flatten the named-exception metadata, the dates come across, the labels do not. For audit purposes, export the named exceptions to a CSV alongside the calendar data so the rationale is preserved even if the labels are not.

Will my resource leveling rules transfer?

No, not directly. Project Server's resource leveling is computed at the portfolio level using priority + slack heuristics that are platform-specific. Other platforms each have their own leveling engine; rules need to be re-configured. The good news is that re-leveling on the new platform usually surfaces the same overallocation hotspots as the old platform did. Plan a 1-day leveling session per active project once the migration completes.

Are generic resources ("Senior Developer") preserved?

Generic resources export with a flag distinguishing them from named resources. Whether they translate to the target depends on whether the target supports the generic-resource concept. Onplana has no generic-resource concept: work is assigned to people, and on import a resource that matches no member is listed as a warning, where you can give it an email so its work is assigned when that person joins. Smartsheet does not natively but you can model generics as named placeholder resources. Microsoft Planner Premium has no generic-resource concept at all. Plan to either re-model generics as named placeholders OR collapse them into the closest available named resource.

How do cross-project capacity views translate?

Project Server's "Resource Center" view aggregates allocation across every project the resource is assigned to. Most other platforms provide an equivalent view but the data model differs: some show only direct project assignments, others include sub-task allocations, others include placeholder generics. Run a side-by-side capacity comparison on the top 25 resources during parallel operation to surface translation differences before cutover.

Does the target platform need to be in the same data centre?

Typically no. Resource data is small enough (megabytes, not gigabytes) that latency and data residency don't affect the migration itself. What does matter for data residency is the production runtime: if your organisation has a sovereignty requirement, choose a target platform that runs in the appropriate region. Onplana's hosted service runs in one Azure region; if your data must stay in your own environment, Onplana Enterprise+ is a dedicated deployment that Onplana runs in your own Azure subscription.

How do I avoid double-counting allocation during parallel operation?

Designate a single source of truth for resource allocation during the parallel-operation window. Most teams keep the old platform as the source for the first half of the parallel period, then flip to the new platform for the second half. The receiving platform should run in advisory mode during the first half, visible to resource managers but not driving capacity decisions. The discipline matters more than the mechanism; agree the cutover date in advance and stick to it.

What about timesheet history, can my finance team still close past months?

Timesheet history exported via OData is not the same as a live timesheet system. Once the old system is switched off, a closed timesheet can no longer be re-opened to correct an entry, and revenue-recognition reports cannot run against an OData snapshot the way they ran in production. Archive the snapshot to your records-management system, and re-create historical reports in the target platform from the snapshot CSVs.

Will Onplana help me migrate the resource model specifically?

Partly. Onplana's migration wizard reads the resources in a Microsoft Project XML file and matches them to your people by email; anything unmatched is listed as a warning rather than created. Calendar exceptions do not import: the project takes your organization's working calendar. The free Migration Preview tool lets you test a sample end-to-end before committing. For full enterprise migrations the team can pair-build a runbook against your specific resource model.

Can I run resource capacity reports during the migration window?

Yes, but the reports run against ONE source of truth at a time, not a merged view. During the parallel-run phase, your authoritative report is whichever platform the assignment lives on. The trap is reporting against both and treating the union as accurate, since assignments duplicated across platforms during cutover get double-counted. Pick a date by which all NEW assignments live in the target only; before that date the old platform is authoritative for legacy work + the new platform is authoritative for any new work. Resource managers need clear comms on which view to trust on which day.

What specific metrics tell me when to trigger the cutover?

Five gate criteria: (1) Per-resource allocation reconciliation passes ±5% on the top-25-by-allocation cohort. (2) Costed timesheet sample reconciliation passes ±1% on a 10-timesheet sample. (3) Calendar exception count matches source within ±2 entries per resource. (4) RBS rollups produce capacity totals within ±3% of source per node. (5) At least one full work-week of clean parallel-run diff reports, meaning five consecutive working days where source and target capacity views match within tolerance. Any failure means the cutover is not yet ready; investigate the variance, fix the root cause, re-run the gate.

How do I handle resources split across two platforms?

Some PMOs land in a hybrid configuration: engineering teams on Onplana for PMO-grade scheduling, marketing/ops teams on Microsoft Planner Premium for lighter task work. The risk is the resource appearing in both pools with diverging capacity calculations. Two patterns work: (a) declare a primary platform per resource and treat the secondary as a downstream task list with no capacity authority, so only the primary tracks allocation and the secondary just shows individual to-dos; (b) export weekly capacity from both and aggregate in a third reporting layer (Power BI, Looker), accepting that the unified view lags by up to a week. Pattern (a) is operationally simpler but constrains who can be a "primary on Planner" resource. Pattern (b) is heavier but supports genuine multi-platform staffing. Avoid the third option ("track allocation in both and reconcile manually"). The reconciliation labour exceeds the value almost immediately.

Know what carries over. Migration on schedule.

Onplana has no separate resource pool: each person is one member of the organization, with one weekly capacity read across every project (on the Professional plan and up), and rate cards at three levels. Generic resources, per-person calendars and the RBS do not carry over: an import matches resources to people by email. Native .mpp and Project XML import. The Free plan covers the Gantt chart and critical path; paid plans start at $12/seat/month (Professional).

Need the broader migration playbook? See the migration guide. Need a numeric estimate? Run the cost calculator.