I'm working with MS Project 2013. I have tasks set to auto-schedule, and to default to fixed work.

I have 2 milestones, one of which depends on the other. The first one triggers some work which leads to the 2nd one, but I'm not interested in tracking that work, just the two milestones. So I set milestone 2 to have milestone 1 as a predecessor with a 1 day lag, and set the durations of both to 0 days (in order to get them to turn into milestones).

The problem is that once I've done all that, they show as both completing on the same day. My intent is that milestone one is by the end of day 1, and milestone 2 is by the end of day 2. If I leave milestone 2 as a regular task with a duration of "1 day?" it schedules as I'd expect, but as soon as I change it to a milestone by setting its duration to 0 days, it jumps back onto the same day as milestone 1. Here's a pic for clarity:

enter image description here

What I'd want/expect is for milestone 2 to schedule itself for 9/30. Any way to get them to both be milestones but schedule the way I want with resorting to manual scheduling?

7 Answers 7


Milestones CAN have a duration and still be a milestone (try it by setting the Milestone checkbox on a task that has a duration (but no work)).

The milestone itself is always taken to mean the point at which the milestone "task" completes, which on zero-duration milestones is always the same as the Milestone task itself.

So if you don't want to set lags between the task dependencies, give your subordinate milestone a duration that is greater than one day and it will auto-schedule appropriately- However it is still a bit of a kludge as you have to set, say, 9 hours as the subordinate duration to make it flip over to the next day else it will just schedule it at the end of the day, assuming the predecessor milestone was completed at the start of the day...

David's answer is still the right one though- Change what you are modelling to match what happens in the real world...


Your horizontal and vertical logic needs to occur where the work takes place. The milestones should be linked to the work package that produces the result, not to each other. I'd advise to abandon your approach and schedule using normal practices.

You can still monitor only the milestones via filtering on them.

If you insist on using your approach, then use FS+2 days. Put the logic in the predecessor field that makes the schedule do what you want it to do. Since milestones are of zero duration, you need more lag than you would if it was tied to a package with >0 duration. The schedule is only so smart.


The one day lag translates to 8 hours. Your first milestone is scheduled for 8:00 am, the second milestone is scheduled for 5:00 pm the same day.

I agree with David, you should have a task of reviewing the report and creating the recommendations. If you only wish to show the milestones, then apply a filter.


Be wary of using eDays, as these will give unexpected results if your lags span weekends or other non-working days. These are specifically delays in calendar days. If you have a milestone starting on Tuesday, say, at the beginning of the working day, a subsequent milestone with a lag of 1d will be posted at the end of the same working day. You can see this by changing the date format to show hours and minutes as well as the date. However, if you have a task which is initiated by that milestone then, by virtue of the fact that the work has to be done during working hours, it will schedule from the start of the following day, as it should. And what is more, if you put a milestone on that task with a SS dependency, then it will show Wednesday, at the beginning of the day... as you wanted.


I actually found a workaround I like better; I can see why my approach isn't a "strict PM" kind of approach, but it works for me.

What I did was set the end time of the first milestone to be 5:00 pm. That kicked the second one to the next day. So far, once that's done, any time I change the date of the first milestone it retains its 5:00 pm end time and the second milestone follows it automatically.

Not sure if this will break somewhere down the road or not, so I'm keeping an eye on it.


if you work in auto mode you should use edays. Put 1FS+1ed as predecessor.


Use FF+1 instead of FS+1 in the predecessor

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.