The Most Dangerous Constraint Type

As a follow-on to my Previous Constraint Entry, I’ve “mapped” out the Project Pro Constraints so you can see where do they come from and where do they go (cotton eyed joe!?).

I’ve created two matrices with different levels of detail, but I’ll explain each one first, then post the matrices at the end of the post. I could have posted these in many different orders – from most common to least common, grouped by “start” or “finish” type etc., but I’ve decided that I’m going to arrange the by their danger level. I’m just feeling dangerous today.

There are 8 types, with a threat level from 0-7. For each type, I have determined the following:

How it happens: This is what you need to do in the schedule to create this type of constraints. All constraints can be set manually.
Behavior with no Predecessor/Successor: What it does without being tied to anything else
Behavior with “Early” Predecessor: What the task does if this constraint is set and the predecessor dictates a date before the constraint date
Behavior with “Late” Predecessor: What the task does if this constraint is set and the predecessor dictates a date after the constraint date
Behavior with “Early” Successor: What the task does if this constraint is set and the successor dictates a date before the constraint date. This one is only applicable to “As Late as Possible” tasks.
Behavior with “Late” Successor: What the task does if this constraint is set and the successor dictates a date after the constraint date. This one is only applicable to “As Late as Possible” tasks.
Schedule Conflict Created by: What actions will cause a Schedule Conflict on a task with this constraint type.

0: As Soon as Possible

This is the tamest and least threatening Constraint Type. Think of it like a bunny rabbit. It IS MS Project though, so I guess it’s a rabbit with teeth. Its only “gotcha” is that the start can be based on either the Project Start or Status date, depending on your project settings.

Constraint Type As Soon As Possible
How it happens… Default
Behavior with no Predecessor/Successor Begins on Project Start Date or Project Status Date (depending on Project Pro Settings)
Behavior with Early Predecessor Begins as defined by Predecessor
Behavior with Late Predecessor Begins as defined by Predecessor
Behavior with Early Successor N/A
Behavior with Late Successor N/A
Schedule Conflict Created by…. N/A

1: As Late as Possible

This guy is pretty benevolent as well, but also something you really don’t want to use too much. I mean, why would you want to wait to do something unless it had something specifically driving its start date?

Constraint Type As Late As Possible
How it happens…
Behavior with no Predecessor/Successor Ends on Project Finish Date
Behavior with Early Predecessor Ignores Processor
Behavior with Late Predecessor Begins as defined by Predecessor
Behavior with Early Successor Ends in time for Successor to end as scheduled
Behavior with Late Successor Ends in time for Successor to end as scheduled
Schedule Conflict Created by….  N/A

2: Finish No Earlier Than

This one gets a bit higher in the threat level because it might be somewhat difficult to figure out when it will start when it has a predecessor set, and because it can be set by manually updating the Finish Date of the task. Notice that we’re still not seeing any schedule conflicts.

Constraint Type Finish No Earlier Than
How it happens… -Manually set Finish Date
Behavior with no Predecessor/Successor Ends on Constraint Date
Behavior with Early Predecessor Uses Predecessor  if predecessor defined start + duration >= Constraint Date
Behavior with Late Predecessor Ends on the Scheduled Finish (determined by task duration)
Behavior with Early Successor N/A
Behavior with Late Successor N/A
Schedule Conflict Created by…. N/A

3: Start No Earlier Than

The threat level on this puppy is actually a lot more than the previous one, because there are more ways to create it, including contouring of work. (though technically it’s not “contouring” if it’s outside of the dates of the task, don’t get me started on THAT rant)

Constraint Type Start No Earlier Than
How it happens…
  • Manually set Start Date
  • Contour work before Start Date
  • Use “move task” function
Behavior with no Predecessor/Successor Begins on Constraint Date
Behavior with Early Predecessor Ignores Processor
Behavior with Late Predecessor Begins as defined by Predecessor
Behavior with Early Successor N/A
Behavior with Late Successor N/A
Schedule Conflict Created by…. N/A

4: Must Start On

For this one, you can’t set it by accident, but we have now introduced schedule conflicts. Use sparingly!

Constraint Type Must Start On
How it happens…  N/A
Behavior with no Predecessor/Successor Begins on Constraint Date
Behavior with Early Predecessor Ignores Processor
Behavior with Late Predecessor Begins as defined by Constraint Date
Behavior with Early Successor  N/A
Behavior with Late Successor  N/A
Schedule Conflict Created by…. Predecessor conflicts with Start Date

5: Must Finish On

This one is more dangerous than the previous one because the behavior with an early predecessor is conditional and difficult to determine. I don’t like this one, no, not at all.

Constraint Type Must Finish On
How it happens…  N/A
Behavior with no Predecessor/Successor Ends on Constraint Date
Behavior with Early Predecessor Uses Predecessor  if predecessor defined start + duration = Constraint Date
Behavior with Late Predecessor Ends as defined by Constraint Date
Behavior with Early Successor  N/A
Behavior with Late Successor  N/A
Schedule Conflict Created by…. Predecessor + duration conflicts with Finish Date

6: Finish No Later Than

This one is super weird. I’d say it’s a sort of enigmatic villain, and it might even mean well, like Doc Oc.  In our environment using Project Pro 2013, this will only be set by contouring after the task dates if a resource is assigned to the task with 0 hours. Why? I don’t know! I would think it would do this for any task you contoured, but that’s not the case. If you see something different, please let me know. The conditions for figuring out how this will be scheduled or how a scheduling conflict is created give me a headache. Avoid.

Constraint Type Finish No Later Than
How it happens… -Contour work after the finish of a task with a predecessor and one or more assignments with 0h work
Behavior with no Predecessor/Successor Ends on the Scheduled Finish (determined by task duration)
Behavior with Early Predecessor Uses Predecessor  if predecessor defined start + duration <= Constraint Date
Behavior with Late Predecessor Ends as defined by Constraint Date
Behavior with Early Successor N/A
Behavior with Late Successor N/A
Schedule Conflict Created by…. Predecessor + duration conflicts with Finish Date

7: Start No Later Than

And here’s our number 1 villain. This is the Joker.  This guy is prevalent because it’s easy to create, and easy to trigger schedule conflicts. Eradicate these whenever you find them!

Constraint Type Start No Later Than
How it happens… -Contour Work before the start date of a task with a predecessor
Behavior with no Predecessor/Successor Begins on Project Start Date or Project Status Date (depending on Project Pro Settings)
Behavior with Early Predecessor Begins as defined by Predecessor
Behavior with Late Predecessor Begins as defined by Constraint Date
Behavior with Early Successor
Behavior with Late Successor
Schedule Conflict Created by…. Predecessor conflicts with Start Date

Here are a couple of matrices to accompany this guide, for quick and even quicker reference.  They are not in order of threat level, so if you want to use them outside of my villain references, you’re good to go.

mat_simp

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s