<aside>
💡
In this section, you will learn what are the constrain types and planning rules and what effect they make when edited and viewed in Gantt chart.
</aside>
List of content
The Basics
Constraint Types
For each activity you can define a constrain type when creating a planning for a project or a component.
In Floor2plan it is possible to define the Constrain Type for the entire project and for each activity, when creating or editing an activity, in the advanced section.
Project Constraint Types
[1] On the project level there are 3 types available:
- As soon as possible [ASAP] - a constraint type that schedules activities to begin at the earliest possible date, taking into account all dependencies and constraints.
- As late as possible [ALAP] - constraint type that schedules activities to start at the latest possible date without delaying the project end date.
- Scheduled Manually - activities are scheduled manually in the sense that we only take as reference their start date and end date. When re-scheduling the project, the relationship between the activities is only defined by the dates. This type of project create activities with default constraint type as MSO.
The project constraint type determines the dominance between ASAP & ALAP.
[2] The project Constraint Date provides the start date (ASAP) or finish date (ALAP) of the project. Without this Floor2plan can't calculate the planning.

[3] Activity Constraint Types without Constraint Date
When selecting one of the following constrain types, there is no need to define the constrain date. The activity follows the planned dates.
- ASAP - The activity will start as early as allowed by its predecessors and other project constraints. If an activity with an ASAP constraint has no predecessors, it will be scheduled to start on the project start date.
- ALAP - The activity will be scheduled to start as late as possible while still meeting its successor requirements. If an activity with an ALAP constraint has no successors, it will be scheduled to finish on the project end date.

Activity Constraint Types with Constrain Date [4]
When selecting one of the following constrain types, user has to also define the constrain date. The activity then must respect that date in the planning.
Finish No Earlier Than (FNET)
Finish No Later Than (FNLT)
Must Finish On (MFO)
Must Start On (MSO)
Start No Earlier Than (SNET)
Start No Later Than (SNLT)

Planning Relations
There are 4 planning Relation Types which define constraints on how activities can be scheduled relative to one another.
- Finish to Start (FS)
This means an activity cannot start unless his predecessor is finished. This is the most common relation type.
- Start to Start (SS)
This means an activity cannot start unless his predecessor is started.
- Start to Finish (SF)
This means an activity cannot finish unless his predecessor is started.
- Finish to Finish (FF)
This means an activity cannot finish unless his predecessor is finished.

[5] You can define the planning Relation Types when you add the Predecessors or a Successor to the activity.
🎯 When adding a Predecessor or Successor, by default Finish to start is selected.
You can learn more about Predecessors and Successors in ‣

Planning modes
There are 3 planning modes. These determine how child items are scheduled in relation to their parents.
- Loose
This let's you schedule child items as they are, without taking the parent into consideration (other than the relations you’ve added yourself).
- Normal
This ensures children cannot start before their parent starts. It also tries to limit the children so they don’t exceed their parent.
If this is not possible, for example because the total duration of the children exceeds the duration of the parent, it allows a child to exceed its parent.
If a child item has a successor to another item it won’t be limited either and is allowed to exceed its parent.
- Strict
This ensures a child cannot start before their parent starts, and cannot finish after its parent finishes.
Unlike the Normal mode this does not allow a child activity to exceed its parent and will show an error message if that is not possible.

User requirements
Related functions