‘Just in Time’ Ordering in Microsoft Project

I have been working with a company that wanted to model their parts ordering process in a Microsoft Project schedule.  I.e. they want to order a part needed to complete a particular job.  They also want to model any lead times involved with the parts as some can take up to 3 months to arrive once ordered.  These parts also cost as much as $250,000 so they don’t want the parts to be sat around waiting to be fitted.

Most project managers will probably be thinking this is a classic case of ‘Start to Finish’ however in the case of ordering items we need to be a little more sophisticated.

Until the moment orders have been placed, the start date of the ‘Fit Part’ task drives the date that the parts need to be ordered. (Start-to-Finish)

However, the moment that part is ordered the Lead time (delivery time) of the parts will drive the start date of the ‘Fit Part’ task. (Finish-to-Start)

We can see in the example below I have a generic ‘Predecessor Tasks’ as a placeholder that represents anything going on before we need to install the parts.

The top example is using the ‘Start-To-Finish’ relationship.  (The start date of installation drives the finish date of the ordering of parts)  This works perfectly, if you need to add more time to the ‘Lead Time’ you can increase the lag between the two tasks, the ‘Order Parts’ milestone will be pushed back in time indicating that we need to order sooner.

When the part is ordered and we mark the ‘Order Parts’ milestone as ‘100% complete’, the ‘Order Parts’ task is now locked in place as it will have an ‘Actual Start’ and ‘Actual Finish’ date.

Everything has worked as expectedup to this point however; let’s imagine that the parts company comes back to you and states that the parts will now take 5 days as opposed to 3…

If I increase the lag between the ‘Install Parts’ and the ‘Order Parts’ (to model this change) Project will attempt to push the ‘Order Parts’ back in time as this is the direction of the relationship, but as we already know the ‘Order Parts’ milestones’ dates are ‘locked’ in place.

So as you can see below, when we adjust the lag in project, nothing happens.

So what is my suggestion?

Well we need to use a ‘Finish-to-Start’ relationship from ‘Order Parts’ to ‘Install Parts’ with a lag to represent the delivery time. See below:


The problem this time around is that the scheduling engine is not telling us the ‘Just in time’ date that the parts need to ordered. This is because it’s scheduled on the Project start date as you would expect, due to the fact it doesn’t have any predecessors or constraints.

So the trick here is to make the ‘Order Parts’ task ‘As Late as Possible’ as you can see below:


By doing this the ‘Order Parts’ milestone is now representing the latest possible date that the parts need to be ordered.


When I mark the milestone as complete this time round then increase the delivery time from 3 days to 5 days the ‘Order Parts’ task is pushed out.



Interested in how EPMA can help your schedules? Contact us today at 1.888.444.EPMA or enroll for one of our training classes.

Please feel free to leave comments below or check out our other blogs on Microsoft Project, Project Server, SharePoint and Project Management Methodology.

Follow us at @EPMAinclinkedin, or facebook