Advanced predecessors
PREREQUISITES
- Learn to sequence tasks
- Or you’re already comfortable using predecessors in your projects
In this video, you will learn about:
- Task dependencies
- Lag types
- Enforced predecessors
- Dependency loop errors
- Short cuts and best practices
Transcript
You should already know the basics of using predecessors. If not, please watch the Learn to Sequence Tasks video first. There is a link in the prerequisites section of this tutorial. In this video we’re going to talk about predecessor dependency types, lag types, and enforcing predecessors. These are not mentioned in the Learn to Sequence Tasks video, because they each have defaults which are sufficient most of the time. But we’re going to look at all of the options so you’ll know how to use them if you want to. And then we’ll look at some shortcuts and best practices. Your project timeline will be calculated for you when you use predecessors and have a task constraint that pays attention to predecessors. Like as soon as possible, as late as possible, earliest available time, latest available time, start no later than, start no earlier than, finish no later than, or finish no earlier than. Task constraints of fixed dates, must start on, or must finish on, override any predecessors of the task and plant the date that the other predecessors and successors will work around. By the way, a predecessor task is a task that must do something, like start or finish, before a successor task, also known as a dependent task, can start or finish. Administrators are based on the planned start dates and the planned completion dates and take into account the project schedule. By project schedule, we’re talking about the schedule assigned to the project. In our examples, we’re using this schedule. It stands for Monday through Friday, 9 to 5, with no holidays. It was set up by the system administrator and looks like this in setup. This shows when tasks can be scheduled for work. The next minute after Tuesday at 5 p.m. is Wednesday at 9 a.m. And the next minute after Friday at 5 p.m. is Monday at 9 a.m. In most schedules, holidays are blocked out, so no project work will be scheduled during those. But we left holidays out of this schedule to keep it simple. We’ll start with task dependencies. Using a predecessor means there is some dependency between your task and another task. The type of dependency is shown as a two-letter code in the Predecessor column along with the task number of the predecessor task. Finish start, or FS, is the most common dependency, and it’s the default. The code FS is often not shown, since it is the default. If you create a predecessor without specifying a dependency, you get Finish start. It means the predecessor task must finish before the dependent task can start. Notice the dates. Task 1 is planned to complete on Wednesday at 5 o’clock, so task 2 is planned to start on Thursday at 9 o’clock. Finish Finish, or FF, means the predecessor task must finish before the dependent task can finish, no matter when it starts. Notice that the task 3 planned completion date is the same as the task 2 planned completion date. Also notice the two-letter code of FF that I put in here. If you know the code, you can just type it in. But you can also add a predecessor by editing the task, which is easier to start with. We’ll edit task 4 to show the start start example. So we’ll edit task 4, click on Predecessors, and click on Add Predecessor. The parent project is the project we’re in by default. But if you wanted to create a cross-project predecessor, you would choose the other project here. The predecessor task in this case is task 3. The dependency is start start. The default is no lag time and no enforcement. We’ll take those defaults for now, and we’ll talk about these a little later. You can see the details about the predecessor here. Start start, zero days lag, not enforced. Start start means the predecessor task must start before the dependent task can start. But it can finish either before or after the dependent task. Notice that the planned start dates are the same, even though we want the predecessor to start first. How do we make sure that happens? We’ll discuss that question when we get to enforcement. Next we have start finish. We’ll type in 1SF. The predecessor task must start before the dependent task can finish. Notice that the finish date of task 5 is after the start date of task 1. You can start the dependent task before the predecessor starts, but you cannot finish it unless the predecessor has started. You might have noticed schedule start as another dependent type. This involves enforcement, so we’ll cover it a little later in the video. Now we’ll get into lag types. A lag is the amount of time that must pass after the planned completion date of the predecessor until the dependent task can start. So maybe your project is to build a house. You might want framing to start after the slab is poured, but you include a lag of a few days for the cement to dry first. When you add a lag, you need to specify the lag type and the number of days for the lag. Let’s make task 6 have a predecessor of 1 with a 5.5 day lag. We’ll enter it as 1 plus 5.5D for a day lag. The dependent task can start 5.5 days after the predecessor’s planned completion date, according to the schedule. This is workdays only. Weekends and holidays on the schedule are skipped. You can put in fractions of a day if you want. We can also do a negative lag. 1 minus 2 days. Notice the dates here as well. Now I’ll use C. C stands for calendar days. This includes weekends and holidays. P stands for percentage. This is the percent of the duration of the predecessor task in workdays. Task 1’s duration is 9 days or 72 hours, which means this lag will be 25% of that, or 18 hours. That’s why it’s planned to start at 11 o’clock on Monday morning. W is the day of week lag type. With it, you can state that you want a task to begin on a certain day of the week. Sunday is day 1, so our example here says we want this task to start on the Tuesday in the week task 1 is planned to finish. So what if task 1 was planned to finish on a Wednesday? Then the dependent task is planned to start on Tuesday the following week. In task 11, we’re saying we want it to start on a Tuesday in the week 3 days before the planned completion date of task 1. That would put the starting date one day before task 1 finishes. K is the lag type for day of week non-zero. This is the same as day of week, except in situations where the predecessor’s finish day is the same day of the week that you want the dependent task to start. Let’s go back to task 10 and change the day of the week to Wednesday, the same day as the finish day of task 1. Four for Wednesday. See how it still lets task 10 start in the same week, even though task 1 isn’t planned to finish until the end of the day. Now let’s do the same thing using day of week non-zero. When this lag type encounters a start date on the same day of the week as the predecessor’s finish day, it will offset to the next week when the plus sign is used, or the previous week when a minus sign is used. Now we’ll talk about enforcing predecessors. We’re going to delete this predecessor here, and then go back and add it manually. Mark it enforced. And you can see it’s showing enforced here. And you see this little E here. So now, if we tried to complete task 2 without having completed task 1 first, you’ll get this error message preventing you from changing the status before task 1 is completed. Of course, predecessors can’t literally be enforced, since workers can ignore them and do tasks out of order if they want to. But predecessors represent the desire of the project manager. Sometimes the predecessor sequence may not be critical, but in other cases it might be very important. Like if task 1 was to pour a slab for a house you were building, and task 2 was to begin framing. You’d probably have a lag between the completion date of task 1 and the start date of task 2, and it certainly would be important to honor that lag. In cases like this, the project manager may choose to enforce a predecessor as a means of reminding the worker that the predecessor relationship is really important this time. If workers are following the good practice of changing the status of a task from new to in progress when they start it, the system will give them a warning if they are about to start a task that has an enforced predecessor that has not yet been met. Now that you understand how enforcement works, we can start to talk about the scheduled start or SD dependency. This schedules a task as a finished start, but the actual enforcement type is a finished finish. To illustrate this, let’s see what happens with an enforced finished start. If I try to mark task 14 as started, or in progress, I get an error, because task 1 hasn’t been completed yet. Now if I change this to scheduled start, it still set the date as though it was a finished start. But when I go to say it’s in progress, it does allow me to do it. But just like a finished finish, it can’t finish before task 1 finishes. So if I try to complete it, I’ll get the error. Now let’s talk about dependency loop errors. A dependency loop is when you have two or more tasks that depend on each other to be completed. One common way to run into this is when you’re creating a subtask after you have your predecessors all set up. Like here, task 2 is a predecessor to task 3. If I try to make task 3 a subtask, I’ll get this error message. A parent task is automatically completed when all the subtasks are completed. So a subtask with a dependency on the parent task would create a dependency loop error. Now for some shortcuts and best practices. What if you want to delete a predecessor? It’s easy enough to do. Click on the little X and it deletes. What if you want to delete all your predecessors at once? You can’t do this with a bulk edit. But you do have an option to remove predecessors when you copy a project. So we’ll make a copy here of this project. And when we make a copy, we can uncheck predecessors. So we want everything to come over except the predecessors. And there you go. Here’s a handy way to chain tasks. Select multiple tasks and add the same predecessor type to all of them at once. Right click. Notice that scheduled start and enforcements are not available here. You can even chain tasks out of sequence. Do a shift click to select several tasks. Now we’ll chain them all and finish start. There is also an unchained option. This will work on any adjacent tasks that are chained. Whether they were chained manually or using this shortcut. Unchain. Notice that task 10 was not adjacent to its chain. Setting up a project with predecessors just the way you want them is a bit of work. It’s a good idea to create a template from your project in case you want to use it again. Or if you want to go back later on and see what they were originally. You can do this by selecting save as template. As another best practice, ask your system administrator to turn on email notifications for task completion to task dependence. So you’ll get notified when a predecessor of a task you’re assigned to is marked complete. You may not be able to start your task any earlier than originally planned, but at least you’ll be aware in case starting it earlier makes sense.
For more information about using predecessors see Use task predecessors.
For more information about task constraints see Understand and manage duration types and task constraints.
For more information about cross-project predecessors see Understand cross-project predecessors.
recommendation-more-help
c9fbcf61-6d19-481e-a9ab-f54a0ae0ee8a