Forum Discussion

Brett_Phifer_SCI's avatar
Brett_Phifer_SCI
Copper Contributor
Dec 15, 2025

Link Procurement Tasks to deliver Just-In-Time without using up slack?

In MS Project, what is the recommended way to link procurement tasks such that the duration is the lead time of the material, the task "finishes" (material delivers) when needed by the subsequent task, and we know when to "start" the task (order material)?

If we link the procurement task to the subsequent task with Finish-Start and As Late As Possible, and the subsequent task has total slack (float), this will push the subsequent task back in the schedule and use up its float. If we use Start-Finish, the dates line up but the procurement task doesn't drive the subsequent task as it should (if procurement gets behind schedule, it won't push the subsequent task). If we use the "deadline" feature, we are still tying ourselves to a date rather than letting the schedule dynamically determine when we need to order materials.

What is the correct way in MS Project to schedule the ordering of materials so that delivery occurs just-in-time as determined by the scheduled start of the subsequent task?

11 Replies

  • Brett --

    I will be a bit of a "contrarion" on this situation.  In your example, the Predecessor (aka Driving task) is the Material Delivered task.  What I mean by this is that the Start date of the Material Delivered task determines the Finish date of the Order Materials task.  In a situation like this, in spite of the fact that some people recommend against this, I would recommend you use a Start to Finish dependency (that weird "backwards" dependency) with the Material Delivered task as the Predecessor and the Order Materials task as the Successor.

    Yes, I know this this seems to be backwards scheduling, and yes, I know that some companies FORBID their PMs from using Start to Finish dependencies, but in your situation, I think this dependency accomplishes exactly what you want.  Using this dependency, you can determine the Start date of the Order Materials task, based on its Duration, and on the Start date of the Material Delivered task.  In the end, I am a pragmatist, breaking all the "rules" to give you a solution that actually works in your situation.  Hope this "contrarion" solution helps.  😁

    • Brett_Phifer_SCI's avatar
      Brett_Phifer_SCI
      Copper Contributor

      Dale,

      Thank you for the response. The Start to Finish seems to be the cleanest, quickest way to show "order by" dates in the schedule. The drawback seems to be that, if a material delivery is delayed, this won't show the impact to subsequent tasks, correct? For example, if you are halfway thru a 6-week material lead time, you should be receiving material in 3 weeks. But you find out you won't get the material for 4 weeks (one week later than scheduled) how do you show this delay in your schedule? With Start to Finish relationship type, the schedule will say the subsequent task can Start before Material Delivery is finished.

      Thank you

      • Dale_HowardMVP's avatar
        Dale_HowardMVP
        MVP

        Brett --

        Good question.  In a situation like this, I would first increase the Duration of the Order Material task by one week, and then I would apply a SNET constraint on the Material Delivery task that shows the new delivery date.

        When you set the initial Start to Finish task dependency, you could manage the risk for the possibility of the order taking longer by adding Lead time (Negative lag) to the dependency, such as by adding 1 week of Lead time.  I realize this is not a perfect solution, then I hope this helps.

  • Every task in a critical path network has an earliest start, earliest finish, latest start, latest finish.

    The early dates are the ones normally displayed in the entry table and in the Gantt chart views. That's because those are of most immediate interests because we want to know first of all how soon can tasks start, and that's also why we need the predecessors as a priority, especially the FS0 one that every task should have.

    However, that's just what it does out of the box. You can easily make a custom view to display bars for the latest dates (format, bar styles), and of course they are all there in the schedule table, along with the free float and the total float.

    Stick to good ol' reliable CPM. The most important feature of the method is that we schedule forwards, not backwards. If you are toying with ALAP constraints and weird links, like SF and positive and negative lag, to model just- in-time or some other management fad, you can end up doing a lot of gymnastics which are unnecessary and somewhat futile anyway.

    Keep it simple. Plan to place an order for parts or materials or something asap. There is a lead time, say 60 days. It has a FS0 successor which is 100 days out. There is 40 days of free float, so you can choose any day between day 1 and day 40 to place the order.

    Any help?

     

    • Brett_Phifer_SCI's avatar
      Brett_Phifer_SCI
      Copper Contributor

      Thank you for the response. My initial suggestion was similar to yours: order everything asap (within reason, using total slack as a guide) and don't wait until the last minute. However, there are expiration dates on materials, billing constraints, as well as limited space, hence the need for a "just-in-time" delivery. What I'm really looking for is a "late date" for these procurement tasks, but I don't see an option to display the "late finish date" for selected tasks only, while displaying the normal "ASAP" dates for the remaining tasks. Is there a way to do this in MS Project? If so, I think you have solved our riddle!

      • TrevorATperfectproject's avatar
        TrevorATperfectproject
        Brass Contributor

        Brett, in addition to the reasons you mention for not ordering and getting stuff asap, such as limited space an the cost of storage, there is also consideration of insurance and warranty dates, and plain ol' cash flow. I've heard it all.

        However, so what? You still want to start with a clean asap CPM network.

        Of course, MSP does have ways to present what you say you want to display because it has custom fields, custom views, custom filters, custom groups, custom tables.

        I would copy the Gantt chart view, call the copy "Intended Order Dates Gantt Chart. Then I would copy the entry table and call the copy "Intended Order Dates Table". Then I would insert a custom start column, say Start1, and rename it "Intended Order Date", which will probably be neither the earliest start or the latest start, but some date in between. Hide all the columns you don't need. You can type in the intended dates or perhaps, better, calculate them as a formula, such as earliest start + half of the total slack (float). Then, in the view, just a matter of formatting the bar styles. Delete all but one of the existing styles, give it a name and a from and to (Start1, Start1).

        Any help?

Resources