Converting Microsoft Project Milestones to P6

Milestones

Converting Microsoft Project Milestones to P6

One speed bump when transferring Microsoft Project (MSP) schedules to P6 is that MSP only has milestones, whereas P6 delineates between start and finish milestones.

Converting your schedule from MSP to P6 always introduces structural challenges. A major hurdle is that MSP uses only a generic milestone type, while P6 requires a more detailed definition: Start Milestones and Finish Milestones.

On a large project of, say, 4,000 activities, manually investigating and separating these milestones into P6 categories is challenging. Fortunately, P6 has a Global Change Tool that helps make this process manageable.

This article demonstrates how to efficiently categorize transferred Microsoft Project milestones into Start and Finish Milestones within P6.

The Best Practice Approach

The best practice for separating MSP milestones into Start and Finish Milestones is to use a structural approach first. Use text filters only as a final cleanup step for the remaining, less definitive milestones. A proper MSP-to-P6 milestone conversion follows two main phases:

  1. Run the Relationship Global Changes (Structural Routines): Run your main routines that look for explicit structural triggers (SS, FF, blanks, and constraints). This safely handles a majority of your schedule based on pure mathematical logic.
  2. Use a Targeted Text Clean-up (For the Remaining Tasks): To fix remaining milestones that are stuck as Task Dependent activities or linked by standard FS chains, use a text-matching Global Change.

    Crucial Safeguard. Add the filter lines Activity Type = Task Dependent AND Original Duration = 0. This restricts text matching exclusively to broken milestones and prevents the corruption of actual work activities or already-corrected milestones.

Demonstration

When converting a schedule, data settings can sometimes cause milestones to import into P6 as standard activities rather than milestone types. In Figure 1, we see our original schedule layout inside Microsoft Project.

Milestones
Figure 1

Figure 2 displays this exact schedule immediately after being imported into P6 Professional.

Milestones
Figure 2

Note the Activity Type column. Because of the software conversion translation, the Microsoft Project milestones have imported into P6 as either Resource Dependent or Task Dependent activity types (P6 has also been known to turn all MSP milestones into P6 Start Milestones).

To clean this up efficiently, we will use a two-step Global Change process. First, we run the global change routine shown in Figure 3 to assign all Resource Dependent tasks to the Task Dependent activity type.

Milestones
Figure 3

Figure 4 displays the resulting schedule where all tasks have been successfully standardized to the Task Dependent activity type. This sets the stage for our structural milestone separation.

Milestones
Figure 4

Structural Capture

We first run our structural global change routines. Figure 5 displays the parameters used to capture as many Start Milestone tasks as possible based strictly on logic and constraints.

Milestones
Figure 5

The main triggers for this initial Start Milestone pass are:

  • Predecessors equal to blank, Predecessor or Successor Details containing “SS”
  • And the presence of any of the four start-primary constraints

Next, we run a mirror global change routine to capture Finish Milestones, Figure 6. Note that this routine explicitly excludes tasks that were already converted to the Start Milestone activity type during the first pass.

Modify Global Change
Figure 6

After running these structural routines, we apply a temporary filter, Figure 7, to isolate all remaining zero-duration, task-dependent activities that did not fit the strict structural rules.

Filter
Figure 7

Figure 8 displays the resulting pool of remaining tasks that still need to be categorized.

Pool of remaining tasks
Figure 8

Targeted Text Clean Up

The text-based cleanup phase requires close attention to detail to ensure no project milestones are missed due to typos or unique naming conventions in the original schedule.

First, we filter for task names containing the word “Start” Figure 9.

 Filter for task names
Figure 9

However, filtering strictly on the word “Start” is rarely foolproof. To make your global change routine truly comprehensive, consider expanding your criteria to include these common project control identifiers:

  1. Industry-Specific Start Identifiers: NTP, Mob (Mobilize), Arrive, Delivery, Award, Execute, Issue and Submit.
  2. Synonyms and Structural Phrasing: Begin, Inception, Launch, Open, Access, Possession.
  3. Project Management Gate Terms: Gate, Phase, and Go-Live.

Next, we run the global change routine shown in Figure 10 to isolate definitive finish events by searching for the string “Complete”.

Run the global change routine
Figure 10

Just like the start routine, filtering solely for the word “Complete” will leave gaps. You should supplement your finish routines with these terms:

  1. Contractual & Handover: Completion, Handover, Turnover, TOC (Taking Over Certificate), COD (Commercial Operation Date), Closeout.
  2. Approvals & Sign-offs: Approved, Approval, Signed, Sign-off, Accepted, Acceptance, Sanctioned, Cleared.
  3. Field Construction Ends: End, Done, Erected, Installed, Poured, Enclosed, Dried-in.
  4. Procurement & Delivery: Delivered.
  5. Testing & Commissioning: Ready, Energized, Commissioned, Tested, Passed.

For our specific demonstration project, applying these leftover global changes based strictly on the text strings “Start” and “Complete” was sufficient to successfully sort the remaining zero-duration tasks, Figure 11.

Zero-duration tasks
Figure 11

You can see in Figure 11 that after implementing our targeted text cleanup, no tasks are captured by our zero-duration task-dependent tasks filter.

Finally, we turn on the master Milestones layout filter shown in Figure 12 to display a list of all our fully cleaned and converted milestones.

Milestones layout filter
Figure 12

Figure 13 displays the final, polished list of all milestones accurately assigned to their correct Start and Finish Milestone types.

List of all milestones
Figure 13

Summary

One major challenge when transferring MSP schedules to P6 is that MSP relies on single type of project milestones, whereas P6 demands a strict distinction between Start and Finish Milestones.

The most reliable solution is a two-phase migration process.

  • First, use a structural approach to isolate the majority of zero-duration milestones using their relationship and constraint logic.
  • Second, isolate the remaining zero-duration, task-dependent activities and apply a targeted text-string cleanup routine to catch the leftovers.

By letting pure mathematical logic do the heavy lifting in phase one, your keyword cleanup phase becomes completely manageable, leaving you with only a handful of unique anomalies to review and finalize with project stakeholders.