Constraint task to start within time interval after another task. RRS feed

  • Question

  • Hi all,

    I'm kind of new to project... so I'm sorry in advance if this is a stupid or very obvious question:

    I'm modelling a project in which I need to consider the payment terms of the delivery of a machine.

    The contract states the following:

    • 40% of the machine have to be paid upon delivery,
    • however no later than 4 weeks after the supplier reported the machine to be ready for delivery.

    I have created milestones covering both the completed delivery and the readiness for delivery.

    How can I constrain the payment task to start a maximum of 4 weeks after the delivery confirmation, but right after completed delivery (if this is within this timeframe)?

    I've looked both into constraints, which only let me set a fixed date as a point of reference (i.e. start before date xx.yy.xxxx), and links, which only let me set a fixed time interval (i.e. start exactly 3 days before date xx.yy.xxxx).

    Is there an elegant way of doing this?

    Thanks very much for your insights, pointers in the right direction and any kind of help!
    It's highly appreciated!

    Wednesday, September 5, 2018 12:34 PM

All replies

  • budedatude,

    Your question is neither stupid nor obvious, particularly for someone who is new to Project so no need to apologize.

    Reading your contract the meaning is not quite clear. The first part is pretty clear, 40% on delivery. However, the intent of the second part is "mushy". What exactly does "ready for delivery" mean? How does that relate to delivery (i.e. seems like it is dependent on whoever is delivering the machine)?

    I think an example with some dates would help to clarify.

    Meanwhile you might take a look at a lag between "readiness for delivery" and the payment of 4ew (4 elapsed weeks). So for example, if the readiness for delivery task is ID 1 and the payment milestone is task ID 2, the predecessor for task ID 2 would be 1FS+4ew.


    Wednesday, September 5, 2018 3:23 PM
  • Hey John,

    thanks very much for your reply!

    What you are asking is exactly what my question is about... 

    The machine in question has already been ordered. If the contractor delivering the machine will hold to their promise the machine will be delivered on the, say, 01/12/2018.
    However, certain prerequisites on site have to be fulfilled in order for the delivery to take place at that date.
    If the prerequisites have not been met at that date the contractor will delay the delivery, but report the readiness for delivery (01/12/2018).

    Ideally the prerequisites will have been met by the time the contractor finishes the production of the machine. He will then deliver the machine immediately and will bill 40% of the machine price to the recipient (on the 01/12/2018).

    If however the delivery of the machine is delayed because the prerequisites have not been fulfilled, they hold on to the machine (no delivery). If the prerequisites for the delivery onto the site are not met within 4 weeks, the contractor will still bill the 40% even though the machine has not been delivered. They will do so after 4 weeks, so on the 01/01/2019.

    My problem is now, that the date of the readiness for delivery is not a set date yet, because it needs to come from the contractor. On top of that the date the prerequisites finish is not a set date neither.
    However, recipients controlling needs to know when the 40% bill will arrive.

    So I'd like to have the date of the billing depend on the following:

    Set billing date immediately after delivery iff delivery is within 4 weeks of reported readiness for delivery.

    I haven't figured out how to do that though, because it requires a constraint that does not depend on a set date, but on another task!

    Hope this clarifies some...

    Wednesday, September 5, 2018 3:48 PM
  • Avoid typing in any date constraints. Instead, use predecessors, possibly with lag. See task information, predecessors tab. Schedule everything asap.Any help?

    Wednesday, September 5, 2018 10:37 PM
  • I have tried doing that...

    But what does project do if the connection to the two predecessors clash?

    I have connected the billing date to the delivery with 0 lag and to the readiness for delivery with a lag of 4 weeks.
    If these two dates aren't 4 weeks apart the connections clash, obviously.

    Even though I have set the constraint of the billing date to earliest possible, it will always move the task to the latest date of the two (i.e. if the date of delivery is past the lag of 4 weeks, that's the date it chooses; if the delivery is within the 4 week's lag it chooses the end of the 4 week period).

    How can I change the behaviour so that it chooses the first lag time that is reached and not the last?

    • Edited by budekatude Thursday, September 6, 2018 9:02 AM Clarification
    Thursday, September 6, 2018 9:01 AM
  • budekatude,

    You are asking Project to do something (i.e. use a “maximal lag” relationship) that it was not designed for.  Your simplest approach is to assume which of the two restraints (either “Actual Delivery” +0 or “Ready for Delivery” +4w) will control the payment and impose the corresponding logic.  Then you may amend this assumption and change the schedule logic if it becomes clear that your original assumption was incorrect.

    Two other alternatives are not so simple:

    1. Develop a macro to evaluate the dates and change the relationships accordingly – i.e. automating your decision making above.
    2. Use a dummy summary task containing dummy milestones to capture the range of possible payment dates, then make this an SS predecessor to the actual payment milestone.  Since this trick involves a logic tie to a summary task, it… a) can cause a bunch of complications and unintended consequences for all but the most advanced users; b) is therefore generally considered bad practice; and c) is explicitly prohibited by many specifications and scheduling “standards.”  While I mention it as a possibility, I don’t recommend it to you.

    Good luck, tom

    • Edited by Tom BoyleBPC Thursday, September 6, 2018 3:39 PM
    Thursday, September 6, 2018 2:43 PM
  • budekatude,

    The simple answer is "you can't". There is no way to set a conditional of "first complete". In Project a predecessor means that all predecessor tasks must be complete before the new task can start, unless there is a lead or lag associated with the dependency.

    Here is what you can do. The main task in the example is the supplier's readiness to ship. As a placeholder, there is a separate line for the actual delivery which is normally related to the "ready to ship" date by the shipping transit time. The first payment due is determined by either an actual delivery or a period of 4 weeks after readiness to deliver. The screen shot shows these relationships. In auto-schedule mode the Start and Finish fields will have a date even though the dates are as yet undetermined. When the actual ready to ship date is known, that date can be revised either manually or by using the Move Project function found under Project > Schedule group > Move Project.

    If the prerequisites for delivery are met prior to the 4 week delay period, enter the actual date of the delivery into the Actual Start field for that item AND remove the dependency of the 4 week lag. That will then make the 1st payment due immediately upon delivery.

    This may seem "heavy" on the manual entry side but understand that Project has zero intelligence, it cannot make decisions, it can only respond to inputs.

    I'm sure this isn't what you were hoping for but it is the way the application works.

    Hope this helps.


    Thursday, September 6, 2018 2:56 PM
  • Thanks very much for your insights John and Tom!

    I was under the general impression that Project was made exactly for these kinds of things... dynamically modelling a project! Apparently I was expecting a little too much from a 600$ software... ;)

    Nevertheless I really appreciate your expertise, John and Tom, and thanks very much for taking the time to bear with me and give in detail answers!

    Friday, September 7, 2018 10:54 AM
  • budekatude,

    You're welcome and thanks for the feedback.


    Friday, September 7, 2018 1:13 PM