Quick Links

Microsoft Project Baselining Best Practices

Once you have the complete WBS built out, assigned resources, entered the effort estimates, built your dependency network and added your deadlines and constraints, it is time to set the project baseline.  The baseline reflects the schedule agreed upon at the start of the project as well as any approved changes along the way.  It is also a powerful tool to help identify variance since progress on tasks are measured against the baseline to identify ‘Finish Variance’, ‘Work Variance’, ‘Cost Variance’, etc.

Think of the baseline feature in Microsoft Project as an old-fashioned Polaroid camera, where you take a snapshot of a point in time and you instantly have a picture of what things looked like on a certain date.  You can then hold that picture up against your current schedule to see if and how things are different.  Baselining and variance reporting is also what allows for more visual reporting, such as ‘traffic light’ indicators.

By following a few simple best practices, the baseline feature can be a tremendous help to any project manager and provide a heads-up on variance where we need to take corrective action to avoid delays or cost overruns. Watch the video and follow the detailed steps below to set and maintain your own baseline.

Setting the ‘Original’ Baseline

The ‘Original’ baseline represents the schedule as it was first approved, before project execution starts.  Typically, this is the only time we save the baseline for the ‘Entire Project’.  After this point, we should avoid “re-baselining” since that would overwrite the actuals-to-date, but rather ‘add to’ or ‘maintain’ the baseline.  To set the ‘Original’ baseline, follow these steps:

  1. Select Project > Set Baseline > Set Baseline
  2. Choose Entire Project
  3. Press OK
Baselining Best Practices

Figure: ‘Set Baseline’ options for Original Baseline


You now have the baseline set with a complete copy of the ‘Budget Cost’, ‘Budget Work’, ‘Cost’, ‘Deliverable Finish’, ‘Deliverable Start’, ‘Duration’, ‘Finish’, ‘Start’ and ‘Work’ values.  In other words, everything you would want to report against throughout the project.  In the screenshot below, you will notice that the ‘Work’ and ‘Finish’ values have been copied into their respective baseline fields and the Tracking Gantt shows the baseline underneath the current schedule bars.

Baselining Best Practices

Figure: ‘Original Baseline’ copies values for the entire project into the Baseline fields


Note: If you are doing rolling wave planning, you can use the ‘Selected tasks’ option to add one phase of the project schedule at a time to the baseline.  In this case, you would use the same principle of ‘Maintaining the Baseline’ as per below to add phases after the detailed scope has been defined and scheduled.

Saving a History of Baselines

Since the baseline can change throughout the project, it is important to save a history each time the baseline is updated.  This helps us revert back, if necessary, and allows for comparison between baselines.  To save the baseline into history, follow these steps:

  1. Select Project > Set Baseline > Set Baseline
  2. Choose Set Interim Plan
    1. Copy: Baseline
    2. Into: Baseline10 (or whichever number your organization has decided is the ‘Original’)
  3. Press OK
Baselining Best Practices

Figure: ‘Set Baseline’ options for saving a history of baselines


Having saved a history is like having a backup of your baseline plan.  If subsequent changes are made and then rejected, you can always revert back to the original baseline by copying from ‘Baseline10’ to ‘Baseline’.  In addition to ‘Baseline’ (which always represents the most recent version of the approved schedule), there are 10 baselines that can be used to save copies of baselines (Baseline 1 through Baseline10).  We always recommend that you use Baseline10 only once to copy the ‘Original’ baseline and then cycle through Baseline1 through Baseline9 for other approved changes on your project.  Each baseline is stamped with a date, but it is also a good idea to keep a log on the side to describe what each baseline represents.

Maintaining the Baseline

As major changes occur on the project, it is important to add any new, approved scope to the schedule and maintain the baseline.  In addition to adding the new scope of work to the baseline, we can also add any tasks that are affected by the added scope.  Imagine your sponsor asks to add a task to ‘Interview Customer’, which will impact your subsequent tasks and the project completion.  In that case, you would need to include not only the ‘Interview Customer’ task, but also the impacted tasks to reflect the new agreed upon schedule.  This approach helps to ensure that we keep the history of actuals-to-date, but capture the changes for upcoming work.

In our scenario, we have completed the first task “Review Process Documentation”, where we went over the baseline work estimate by 4 hours.  As a result, the ‘Work Health’ indicator has turned yellow and the ‘Cost Health’ indicator has turned red.  The ‘Schedule Health’ indicator for the subsequent tasks are now red because they have been delayed.

Baselining Best Practices

Figure: Variances are highlighted in the columns as well as the Tracking Gantt

Now, Imagine your sponsor asks to add a task to ‘Interview Customer’ (20 hours of work), which will impact your subsequent tasks and the project completion.  In that case, you would need to add the ‘Interview Customer’ task to the baseline as well as the impacted tasks to reflect the new agreed upon schedule.  This approach helps to ensure that we keep the history of variances-to-date AND capture the changes for upcoming work.

To maintain the baseline on the project that is now in execution, follow these steps:

  1. Add the task (or tasks) that represent the new scope of work, then add the effort estimate, assign resources and include the tasks in the dependency network.
  2. Select all the new tasks at the same time and press Tasks > Inactivate, which will act much the same as ‘Track Changes’ in Word, where it deletes the changes, but let’s you see what you deleted.  This way, we are viewing the current schedule, but with the new scope of work ready to be activated.
  3. With the new tasks still selected, press Tasks > Inactivate again to activate the tasks that represent the new scope of work.  Now, Change Highlighting will indicate which detailed tasks are affected by the new scope of work.
      1. In the example below, task 4 represents the new scope of work and tasks 5 and 6 are impacted by the new scope of work.  As a result, all 3 tasks can be added to the updated baseline.
      2. We can now tell the sponsor that the proposed change will change the overall finish date of the project by 3 days, cost 20 hours of work and $1,000.
    Baselining Best Practices

    Figure: ‘Inactivate’ new tasks to see the impact on existing work when they are activated again.

    Note: It can be difficult to determine which tasks are impacted by the new scope of work, so we use the Inactivate/Activate technique to help us find them.  In a complex schedule, we also frequently highlight new tasks with one color and then highlight impacted tasks with a different color.  A screenshot of this schedule can be included with the change request for sponsor approval.


    Baselining Best Practices

    Figure: Change Highlighting shows the impact of new tasks when they are activated.


  4. Select the tasks that represent the new scope of work as well as any tasks affected by the added scope.Baselining Best Practices
  5. Select Project > Set Baseline > Set Baseline
  6. Choose Selected Tasks
  7. Select to Roll up baselines: To all summary tasks
  8. Press OK and select Yes to the confirmation message



The ‘Baseline’ now represents the ‘Original’ schedule as well as the first approved change from the sponsor.  You will notice that we didn’t overwrite the variance on task 2, where we went over the baseline work estimate and ran 0.5 days late.  With this method, we preserve overages that have already occurred, but incorporate approved dates for new and existing tasks.

Baselining Best Practices


At this point, you will want to repeat the steps in ‘Saving a History of Baselines’ above, but choose Baseline9 (or Baseline1 if you prefer) this time as we want to always preserve Baseline10.

If the sponsor changes her mind on this new scope of work, we can simply delete the added tasks and copy Baseline10 into Baseline to return the schedule to the previous state.

It goes without saying that baselines should only be updated with proper authorization.  We typically see baseline changes for these reasons:

  1. Formal Change Requests
    • As demonstrated above, any formal request for new scope on the project is a valid reason for updating the baseline.
  2. Customer directed reschedule
    • When a customer delays the schedule for any reason, I typically use the ‘Update Project’ feature to push all remaining work out and show the customer the new schedule that resulted from their delay.  I then add all affected tasks to the baseline.  While the customer may not formally have ‘approved’ a change to the project, they did so indirectly by forcing the schedule.  We can still track target dates through the deadline date.
  3. Reporting on new variance
    • If a project falls far enough behind that all remaining work shows up with red indicators, it may be time to ask the sponsor for approval to update the baseline to allow the team to track new variance.  By this point, we have bigger problems than baseline perfection and it may be valuable to see where we are hitting additional delays on the remaining work.  You will still have a backup of the other baselines to revert back to for final reporting.


As you can see from the above, the baseline functionality in Microsoft Project is very powerful and allows for effective reporting.  It also does not adversely impact your project schedule in any way, it simply saves your data for comparison.  There’s no harm in trying, so go ahead and baseline your schedule today and start maintaining it.


About Sensei Project Solutions
Sensei Project Solutions is a Microsoft Partner specializing in Project and Portfolio Management (PPM) deployments with Microsoft Project and Project Server on the SharePoint platform. With extensive experience on hundreds of PPM deployments and with thousands of users trained, Sensei Project Solutions brings a process-focused approach; and support for industry standards and best practices to all engagements. We offer a complete set of services to help an organization make their Microsoft PPM deployment successful, including full implementation and support services, training, as well as pre-configured solutions and report packs.  info@senseiprojectsolutions.com


Related Content

Quick Video Tips:
Baselining with Microsoft Project
Microsoft Project Do’s & Don’ts: Inadequate Baselining

5 Things to Know about Microsoft Project Baselines
Using Protected Baselines

Kenneth Steiness
Written by Kenneth Steiness

Kenneth Steiness, PMP, PMI-SP, MCP, MCT, is an industry expert on Microsoft Project and Project Online. Kenneth has worked in the project management and scheduling field for over 20 years. He has managed customer engagements in 13 countries and throughout the United States and presented at conferences world-wide for Microsoft, PMI and MPUG. Kenneth is the CEO of Sensei Project Solutions, a certified Microsoft partner specializing in project and portfolio management deployments. Sensei offers a complete set of services to help organizations succeed with their Microsoft PPM deployments. Services include full implementation and training as well as pre-configured solutions and report packs. Visit senseiprojectsolutions.com or contact info@senseiprojectsolutions.com for more information.

Share This Post
  1. Excellent article and accompanying video, Kenneth!

  2. Clear explanation Kenneth. I do have a couple of questions
    – I am unsure why you would save to baseline10, then a subsequent change to baseline9, I thought you would move up sequentially – 1, 2, 3, … ?
    – What view are you using?

    And a couple of comments
    – The explanation of Tasks -> Inactive is interesting.
    – I tend to avoid using Baselines if I can. It can be tricky trying to reverse changes such as work and duration against Baseline versions.

  3. It may be helpful to add some Baseline “Resource” info to this article. Baselining the entire project updates “Resource Baseline values”, but Baselining Selected Tasks (even if rolling up to the summary) does NOT update “Resource Baseline values”.

    How to see this in MSP:
    A) Make a new schedule with the usual settings (40 hrs/wk, etc)
    B) Make 1 task @ 5 days duration, and assign a resource at 100%
    C) Set the Baseline for the “entire project”
    D) In the Gatt Chart view, the Task will have Baseline Work = 40
    E) Open the Resource Sheet and the Resource has Baseline Work = 40

    Now, change the task and baseline just the selected task….
    F) Open the Gantt Chart View, change the task Duration to 10 days
    G) Set the Baseline for just the “Selected Task” and check both rollup baseline boxes
    H) The task will now have Baseline Work = 80
    I) Open the Resource Sheet – the Resource STILL has Baseline Work = 40

    Why the difference in Baseline Work: The Resource’s Baseline Work and Baseline Cost fields, do NOT get updated when Baselining “Selected Tasks”.

  4. Working in MSP 2010. Not utilizing a server based system. Stand alone project file with its own resource table.

    Problem: Input not resulting in the correct Baseline2 Cost for the WBS Sub-element and Project.

    Baseline1 has been saved to Baseline2 in preparation for adding newly authorized activities to Baseline2.
    Added new activities to status file in the future that have cost and work values.
    Baseline2 updated to incorporate these activities.

    Baseline2 Cost in my WBS Sub-element does not add up to the total value.

    Additional action:
    Removed % Complete from the status of all other activities in the WBS Sub-element, baselined again.

    The Baseline2 Cost is correct at the WBS Sub-element, but the total Project Baseline2 Cost does not incorporate the new activities budget. In fact, the Baseline2 Cost decreases significantly from the total before I started this exercise.

    How do I remedy this?

  5. Hi Kenneth,

    A very nice and extencive article. I like the way you used the interim plan functionality. I used to just go back to the set baseline menu and set baseline 10. This however would not work if I made changes in between. But now I know a way to grab the baseline and use that (instead of the actual schedule) to set a new baseline.

    Erik van Hurck

  6. Dear,
    I wonder If you are able to modify/ edit the baseline wich appears in the drop down list for nomeone before? Example: If in my ms project I have the last save version on Sep 15th, but I wanted to have one before (let’s say Sep 08th)….how do you do that?
    Thanks in advance!

  7. Hi

    May I know your thoughts on how to restrict PM to re-baseline once project is baselined

  8. Kenneth Steiness


    In Project Server or Project Online, you can use the “Protected Baseline” option, so that the first 5 baselines are locked and only and administrator (PMO) can edit these. Some of our clients use these to make sure that no unauthorized changes are made. There’s no such option in the standalone version. However, you can check the baseline was set to verify that the PM hasn’t over-written it.


  9. Hi,

    Can i set the project baseline through MS project server 2010, without using MPP?

  10. I partially like your tip on using the inactivate feature to show the before and after.

  11. Hi Kenneth,
    Great post. Thank you. I did have a question though: with this method the new baseline for Line 6 doesn’t reflect the overage in Line 2, assuming Line 6 acts as a sort of uber milestone reflecting overall project health. Shouldn’t the new baseline for Line 6 actually be 0.5 days earlier? Yes, the customer asked for an additional 20 hours of work, but that change order doesn’t wipe away the fact that the project team was already 0.5 days late. Yet the way this schedule is setup it now shows that the overall schedule is on-track, which most (all?) of my business partners would call bull-crap on.

  12. Hi there,
    This was a good article, I am assuming the same process applies when removing scope that is no longer required? The issue I have with this, and I havent found a solution yet, is that when scope/hours is removed from a baseline within the current period this affects the task useage profile (hours profile) not just in the current month but in previous months too. I guess this is because when the baseline is updated MSP will automatically compress the baseline data in a shorter period. As I use the profile of hours in an excel EV model this affects history which it shouldnt.
    Does anyone have a solution on how to manage this?

  13. Is there a way to freeze a plan for a particular date and then go back to that frozen plan to produce a report? I don’t think creating a baseline is the solution but I could be wrong. Thanks you for the help. Greg

  14. Kenneth Steiness

    Hi Greg. I think what you’re describing is the Snapshot functionality that is coming to Project Web App (PWA) with the Projectum acquisition. I’m not aware of this functionality just in the Project client though, but with PWA you should be able to do it soon.

  15. Good Article

  16. Can I manually enter Baseline Work (resource load a schedule) without changing my Work hours?

  17. Hi, Joe. Kenneth asked me to respond to your question. No, you should NOT manually enter Baseline Work values for a resource loaded schedule in Microsoft Project. However, you can baseline or rebaseline a project to update the Baseline Work values without having that process impact the Work hours. Hope this helps. — Dale Howard, Microsoft Project MVP

  18. Can we set permissions in such a manner that only portfolio managers can edit baseline>>

  19. Can we set permissions so that only portfolio managers can update Baselines?

  20. Jibi – Kenneth asked me to respond to your question. If you are using Project Online or Project Server, your application administrator can change the settings for the Project Managers security group so that members of that group CANNOT save a Protected Baseline (Baseline 0 through Baseline 5). The application administrator can also change the permissions for the Portfolio Managers security group so that members of the group CAN save a Protected Baseline (Baseline 0 through Baseline 5). Hope this helps. — Dale Howard

  21. When using the “update selected tasks” option, baseline rollup totals do NOT get updated in the resource usage view. Any workaround for this issue?

  22. Steve —

    Kenneth asked me to respond to your question. I can confirm the behavior you are seeing, and believe you have correctly pointed out a design flaw in Microsoft Project. When updating a baseline using the “selected tasks” option, Microsoft Project does correctly update the baseline from the selected tasks, plus optionally their summary tasks as well. In the Resource Usage view, the new task assignments are shown for each resource, along with the associated Baseline Work and Baseline Cost for the new task assignments. However, the Baseline Work and Baseline Cost information is definitely NOT rolled up to the resource. This is the behavior I have personally seen for many years, so I am loathe to label this a bug. It is by design, I would say, but the design is not the best. Unfortunately, I do not know of any workaround. Sorry, but hope this helps.

  23. Is it possible to obtain the formulas for ‘Work Health’ indicator, ‘Cost Health’ indicator, and Schedule Health’ indicator?

  24. Rick —

    You can find the formulas in our Application Administrator book for Project Online at:


    Hope this helps.


  25. Hi

    Please assist me. I want to calculate finish variance against baseline 1, 2 or 3 up to 10. my finish variance seems to only calculate against baseline and not baseline 1 to 10.

    Thank you

  26. Hello, James —

    Kenneth asked me to respond to your question. There are two ways to see Finish Variance against the other 10 baselines: the easy way and the hard way. The easy way is to tell Microsoft Project which Baseline to use to calculate variance. To do this, click File > Options > Advanced. On the Advanced page, set the Baseline for Earned Value Calculation value to one of the 10 other Baselines, such as Baseline 1, for example. Click the OK button. Apply the Tracking Gantt view and then click the Format tab to display the Format ribbon. In the Bar Styles section of the Format ribbon, click the Baseline pick list button and select the other Baseline again, such as Baseline 1. Apply the Variance table and examine the Finish Variance values. The values are now calculated against the other Baseline you selected. When finished, click the Undo button repeatedly to undo all of these steps.

    The hard way is a lot of work. You would need to create 10 custom columns containing formulas to calculate the Finish Variance using each of the 10 baselines. I would recommend you create these custom fields using the 10 custom Duration fields and that you use a formula such as the following (used to calculate Finish Variance using the Baseline 1 set of fields):

    IIf([Baseline1 Finish]=ProjDateValue(“NA”),0,ProjDateDiff([Baseline1 Finish],[Finish],”Standard”))

    Beyond creating the 10 custom columns, I would recommend you create a custom table in which to display all 10 at once. I personally would recommend using the first method as it is the simplest. Hope this helps.



Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Please complete this equation so we know you’re not a robot. *

+ 63 = 72

Thanks for submitting your comment!
You must be logged in to comment.