In MSP 2013+:
1. Use the “Task Path” dialog to graphically highlight the “driving” path to any milestone of interest. Then create and manually-set a custom flag field for that path.
2. Add a custom-colored bar style for each path that you want to show, including your new custom flag field in the “Show for” column. You’ll probably also want to turn off the “Critical” bar styles by un-checking the “Critical Tasks” box on the format ribbon.
3. Note that some tasks are likely to be included on multiple driving paths. They will be colored according to whichever competing bar style is lower on the list.
In Pre-MSP 2013
1. Remove all deadlines and late (i.e. “no later than”) or mandatory (i.e. “Must”) constraints.
2. For each key milestone that you need the driving path for:
a. Set a new deadline far in advance of the existing (early) date (e.g. 100d-1000d depending on the total slack in the project.)
b. Re-schedule the project. You’ll get a lot of negative total slack values.
c. Apply a filter for the most-negative “Total Slack” value. Then create and manually set a custom flag field for the filtered tasks.
d. Remove the deadline.
3. After evaluating all the key milestones, restore legitimate deadlines and constraints.
4. Color bars the same as above.
1. Logical driving/critical paths are not static – they can change with each progress update or minor modification to the schedule. You’ll need to re-run the methods above each time the schedule is modified, which can be click-intensive and error-prone.
2. I haven’t used the Task-Path methodology above (I’m still on MSP2010), so I can’t vouch for its use. Prior MSP methodology for identifying driving predecessors has been unreliable however.
3. If your project includes variable task or resource calendars, then Total Slack becomes unreliable as an indicator of driving logic. There are some commercial add-ins that overcome this limitation and the one above.
4. If your project includes resource leveling, neither method above will accurately describe the critical path, and some results can be very misleading. I wrote an add-in that overcomes this limitation (and the preceding ones), but it is not commercially available.
Note: “Multiple Critical Paths” option sets Total Slack to zero for all open-ended paths (i.e. terminating at a task with no successors and no late constraints or deadlines.) I never use it.