none
How to have the best start date and not the worth one when you put 2 dependencies (1 FInish-to-start and 1 Finish-to-Finish) RRS feed

  • Question

  • Microsoft schedule task to late in case of 2 dependencies on a start and end date of an intervention window :

    Let's imagine the below case : I have an intervention window of 10 hours starting at 08:00 and finishing at 18:00

    I create 2 milestones : BEGIN_WINDOWat 08:00 and END_WINDOWat 18:00

    Let's imagine 3 tasks each of 2 hours on which I will put the dependencies in different manners

    Task 1 :

       Dependency Finish-to-Start on BEGIN_WINDOW.

       Here it is perfect, Task 1 will start at 08:00 and finish at 10:00

    Task 2 :

       Dependency Finish-to-Finish on END_WINDOW.

       Here it is normal, Task 2 will start at 16:00 (= 18:00 - 2 hours) and finish at 18:00

    Task 3 :

       Dependency Finish-to-Start on BEGIN_WINDOW as well as Finish-to-Finish on END_WINDOW

       Here I'M NOT IN AGREEMENT WITH MICROSOFT SCHEDULE

       The start date is of 16:00 which is the worth one... which for me is incorrect as it means ... you have potentially 10  hours to intervene, you wait 8 hours and then you start ... which means ... you have in fact ZERO buffer in case for any reason there is some slippage which indeed could have been absorbed if in reverse the start date was kept at 8:00

    I counterchecked on the task and it is with a constraint type = as soon as possible with no date in the ADVANCE tab but this has not force this task to start as really as earlier as possible.

    If you put in place this example, look to the GANTT chart it is immediately visible on task 3

    Friday, November 16, 2018 10:20 AM

All replies

  • Just one more point :

    You will tell me what is the interrrest to put in the same time the dependency on the BEGIN and on the END of the intervention window.

    My reason is this one : putting these 2 dependencies will allow me later (with some code I can share with you) to detect very easily the tasks which should stay completely INTO the intervention window and in fact are going outside of it.

    As the 2 dependies are set here, I can run a macro which will allow me to detect very easily the potential cases where the task is not respecting due to its own duration or other dependencies the intervention window constraints.

    Here the Marco which will have provide me this (upon the condition that task 3 was starting earlier)

    Sub PYC_Look_To_All_Task_And_Detect_Those_Going_Out_Of_Intervention_Windows()
     '
     Dim AllTasks As Tasks
     Dim OneTask As Task
     '
     Debug.Print "------------------------------------"
     Debug.Print "First pass to reset the date of end intervention window (Finish 1) to NULL, also the explanation comment to NULL"
     '
     Set AllTasks = ActiveProject.Tasks
     For Each OneTask In AllTasks
      '
      OneTask.Finish1 = ""
      OneTask.Text10 = ""
      '
     Next OneTask
     '
     Debug.Print "------------------------------------"
     Debug.Print "Second pass to Compute Finish 1 = Limit for the intervention window and check if the tasks stay indide of it"
     '
     Dim i As Integer
     i = 0
     Set AllTasks = ActiveProject.Tasks
     For Each OneTask In AllTasks
      i = i + 1
      Debug.Print "TASK[" & i & "] = " & OneTask.ID & " -> " & OneTask.Name
      ' 
      If Not OneTask Is Nothing Then
       '
       Debug.Print " Predecessor : " & OneTask.Predecessors
       '
       'Intervention_Window_Ending_DateTime = "1/1/1990"
       '
       ' List of the other tasks which are in dependency with this one
       '
       For Each OneTaskInDependency In OneTask.TaskDependencies
        '
        Debug.Print "  Name : " & OneTaskInDependency.From.ID & " - " & OneTaskInDependency.From.Name & " | " & OneTaskInDependency.To.ID & " - " & OneTaskInDependency.To.Name
        Debug.Print "  Lagtype : " & OneTaskInDependency.Type
        Debug.Print "  Lagtype : " & OneTaskInDependency.From.Finish
        '
        If OneTaskInDependency.Type = 0 Then
         ' Looking only on the dependencies of type "Finish-To-Finish"
         If (OneTaskInDependency.To.Finish1 = "") Or (OneTaskInDependency.To.Finish1 > OneTask.Finish) Then
          OneTaskInDependency.To.Finish1 = OneTask.Finish
         End If
        End If
        '
       Next OneTaskInDependency
       If OneTask.Finish > OneTask.Finish1 Then
        OneTask.Text10 = OneTask.Text10 & " /!\ out of exec window"
        Else
        If OneTask.Finish1 <> "NA" Then
         Dim Margin As Date
         Debug.Print "t.Finish1 = " & OneTask.Finish1
         Debug.Print "t.Finish  = " & OneTask.Finish
         Margin = DateDiff("h", OneTask.Finish1, OneTask.Finish)
         't.Text10 = Margin & " hours"
         OneTask.Text10 = ""
        End If
       End If
       '
      End If
      Debug.Print ""
     Next OneTask
     Debug.Print "That's all falks"
     '
    End Sub

    Friday, November 16, 2018 10:52 AM
  • Hello ALL

    My mistake here ...

    After having discussed with a colleague here (Haijing) in fact the Constraint Finish-to-Finish is not indicating a potentiality but a fact to respect. Hence when I set as constraint a Finish-to-Finish on a milestone representing the ending of an intervention Period It is totally normal that Microsoft Project respect it and hence push my task of 2 hours at the end of the intervention window.

    By the way I found a solution to represent the constraint of an intervention window and to compute the ending time then verify if a sequence of tasks are still respecting it. I will details this in a further article soon

    Friday, November 16, 2018 1:56 PM