> For the complete documentation index, see [llms.txt](https://help.tillit.cloud/tillit/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.tillit.cloud/tillit/knowledge-base/scheduler/planned-orders/order-dependency.md).

# Order Dependency

You can now **link orders together** so the scheduler enforces a timing relationship between them. A "child" order won't be allowed to start until its "parent" order meets a timing rule you choose. Dependencies are visible on the Gantt timeline as arrows, and the system automatically validates them whenever you allocate, move, resize, or unallocate orders.

## What Is an Order Dependency? <a href="#what-is-an-order-dependency" id="what-is-an-order-dependency"></a>

An **order dependency** is a link between two orders that controls scheduling order. For example:

* An assembly order must finish before its delivery order can start.
* A secondary process must start at the same time as the primary one.
* A quality check must start exactly when packaging starts.

Each link has two sides:

* **Dependency** — the order that must run first (the parent).
* **Dependant** — the order that depends on it (the child).

<figure><img src="https://352909507-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrNT40XJFAFlAhUX8CcQS%2Fuploads%2Fgit-blob-f8fd48320469338f2965b036ab0e5c6ba70ccb62%2FPasted%20image%2020260618123051.png?alt=media" alt=""><figcaption></figcaption></figure>

<figure><img src="https://352909507-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrNT40XJFAFlAhUX8CcQS%2Fuploads%2Fgit-blob-3abdaa2690ab9f17755aa5cbb57207c8e9e0639a%2FPasted%20image%2020260618123101.png?alt=media" alt=""><figcaption></figcaption></figure>

***

### Key Concepts <a href="#key-concepts" id="key-concepts"></a>

#### Dependency Types <a href="#dependency-types" id="dependency-types"></a>

There are **two base types**:

| Type             | What It Means                                                    |
| ---------------- | ---------------------------------------------------------------- |
| **Finish‑Start** | The dependant can start **at or after** the dependency finishes. |
| **Start‑Start**  | The dependant can start **at or after** the dependency starts.   |

Each type can also be set as **Locked**:

* **Not locked** → the dependant can start at the constraint time **or any time later**.
* **Locked** → the dependant's start is **snapped exactly** to the constraint time.

#### Delay <a href="#delay" id="delay"></a>

You can add a **delay (in seconds)** to offset the constraint time:

* **Positive delay** — adds a gap (e.g. `+300` = 5 minutes after).
* **Negative delay** — allows overlap (e.g. `-120` = up to 2 minutes before).
* **Zero** — no offset.

#### One Locked per Order <a href="#one-locked-per-order" id="one-locked-per-order"></a>

An order can have **only one Locked dependency**. Non‑locked dependencies are unlimited.

***

### Adding a Dependency <a href="#adding-a-dependency" id="adding-a-dependency"></a>

1. Open the order from the **Orders** list.
2. In the order detail panel, scroll to the **Dependencies** section.
3. Click the plus icon in the Dependencies section to add a dependency.
4. In the dialog, search for the order this one should depend on. The dropdown shows external ID, earliest start date, and due date.

<figure><img src="https://352909507-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrNT40XJFAFlAhUX8CcQS%2Fuploads%2Fgit-blob-8bfe68712d93eddac3a62697a24bc7cd3ed257f1%2FPasted%20image%2020260618123116.png?alt=media" alt=""><figcaption></figcaption></figure>

5. Choose a base type — **Finish‑Start** or **Start‑Start** — by clicking its chip. Hover the chip to read what it does.
6. Toggle **Locked** on or off.
7. Enter a **Delay** in seconds (optional).
8. Click **Add Dependency**.

> ℹ️ If the selected order already has dependants of its own, you'll see a warning reminding you to ensure it produces enough output for the additional dependant.

<figure><img src="https://352909507-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrNT40XJFAFlAhUX8CcQS%2Fuploads%2Fgit-blob-a8c6281e5c687bbef3b9b3b59072493623311262%2FPasted%20image%2020260618123124.png?alt=media" alt=""><figcaption></figcaption></figure>

### Viewing, Editing & Deleting <a href="#viewing-editing-and-deleting" id="viewing-editing-and-deleting"></a>

In the **Dependencies** section you'll see:

* **Dependencies** list — orders this one depends on. Each entry shows the dependency's external ID (clickable, navigates to that order), the type label, the delay, a **padlock icon** if it's locked, and **Edit** / **Delete** buttons.
* **Dependants** chips — read‑only chips listing orders that depend on this one.

<figure><img src="https://352909507-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrNT40XJFAFlAhUX8CcQS%2Fuploads%2Fgit-blob-8e3683855b12056992174899aa1edbba1a5d2dd7%2FPasted%20image%2020260618123136.png?alt=media" alt=""><figcaption></figcaption></figure>

<figure><img src="https://352909507-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrNT40XJFAFlAhUX8CcQS%2Fuploads%2Fgit-blob-787fc55ad59a82d010e3f11aec1bdc5b7786d824%2FPasted%20image%2020260618123149.png?alt=media" alt=""><figcaption></figcaption></figure>

To **edit**, click the edit button. The dialog opens with the dependency order shown as static text and the type/delay pre‑filled.

<figure><img src="https://352909507-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrNT40XJFAFlAhUX8CcQS%2Fuploads%2Fgit-blob-7dc459fdefca424fc00c927ab3749027e6934a43%2FPasted%20image%2020260618123214.png?alt=media" alt=""><figcaption></figcaption></figure>

To **delete**, click the delete button. The link is removed from both orders.

> ⚠️ **The order must not be allocated** to add, edit, or delete dependencies. If it is, you'll be prompted to unallocate it first.

***

### Seeing Dependencies on the Gantt <a href="#seeing-dependencies-on-the-gantt" id="seeing-dependencies-on-the-gantt"></a>

Order dependencies appear as **arrows** between orders on the Gantt timeline.

To turn them on:

1. Open the **Scheduler Settings** drawer.
2. Toggle **Order Dependency** on.

<figure><img src="https://352909507-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrNT40XJFAFlAhUX8CcQS%2Fuploads%2Fgit-blob-ea25df648180f2584ad3ee3ee4f1cd9b0afcbb1d%2FPasted%20image%2020260618123231.png?alt=media" alt=""><figcaption></figcaption></figure>

<figure><img src="https://352909507-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrNT40XJFAFlAhUX8CcQS%2Fuploads%2Fgit-blob-edf3e069fbf92f26a5e73ee6d4ab5091c2b2f1fc%2FPasted%20image%2020260618122453.png?alt=media" alt=""><figcaption></figcaption></figure>

The toggle is remembered between sessions. Segment and material dependency arrows are shown alongside; each uses a different line style so you can tell them apart.

***

### What Happens During Allocation <a href="#what-happens-during-allocation" id="what-happens-during-allocation"></a>

When you allocate an order that has dependencies, the system **automatically validates** that:

* All its dependency orders are already allocated, **and**
* The dependant's start time satisfies every constraint.

For **Locked** dependencies, you don't need to pick a start time — the system **snaps the dependant's start exactly** to the constraint time (dependency's start or end, plus any delay).

***

### Cascade on Move & Resize <a href="#cascade-on-move-and-resize" id="cascade-on-move-and-resize"></a>

When you **move or resize a dependency order**, the system checks every dependant:

* **Non‑Locked** — if the dependant still satisfies the constraint, only the dependency moves. If it would no longer satisfy, the dependant's first segment **automatically shifts** to keep the constraint valid.
* **Locked** — the dependant **always** shifts (forward or backward) to stay snapped exactly to the constraint time.

If the cascade can't be completed (for example, no resources are available at the new time), **the entire operation rolls back** — nothing moves. This keeps the schedule consistent.

***

### Errors & Recovery Flows <a href="#errors-and-recovery-flows" id="errors-and-recovery-flows"></a>

The system surfaces every dependency issue as a clear message. Here's what to do for each:

#### Constraint Violated <a href="#constraint-violated" id="constraint-violated"></a>

> "Dependency constraint violated with: ORDER-A"

You tried to allocate, move, or resize a dependant to a time that breaks its rule. **Fix:** pick a later time that satisfies the dependency, or adjust the delay on the link.

#### Dependencies Not Allocated Yet <a href="#dependencies-not-allocated-yet" id="dependencies-not-allocated-yet"></a>

> "Allocate dependency orders first: ORDER-A"

The dependant can't be placed because at least one of its dependencies hasn't been allocated yet. **Fix:** allocate the dependency orders first, then try again.

#### Locked Conflict — No Slot Available <a href="#locked-conflict-no-slot-available" id="locked-conflict-no-slot-available"></a>

The constraint time is correct, but no resource is free at that exact moment. **Fix:** move or unallocate other orders to free up the slot, or revisit the dependency setup.

#### Cross‑Scenario Dependency <a href="#cross-scenario-dependency" id="cross-scenario-dependency"></a>

> "Dependency orders are not in the same scenario: ORDER-A"

A dependency exists between orders living in different scenarios. **Fix:** dependencies must be between orders in the same scenario.

#### Allocated Dependants — Cascade Unallocate <a href="#allocated-dependants-cascade-unallocate" id="allocated-dependants-cascade-unallocate"></a>

If you try to **unallocate an order that has allocated dependants**, the system stops you and offers to unallocate them all together.

1. The error snackbar appears with an **Unallocate Dependants** button.
2. Click **Unallocate Dependants**. A confirmation dialog opens listing the order plus every dependant that will be unallocated.

<figure><img src="https://352909507-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrNT40XJFAFlAhUX8CcQS%2Fuploads%2Fgit-blob-bde10efeb7019e60662a7ebca501c97c35d0ff30%2FPasted%20image%2020260618123409.png?alt=media" alt=""><figcaption></figcaption></figure>

3. Click **Unallocate** to confirm, or **Cancel** to back out.
4. All listed orders unallocate together in a single transaction (deepest dependants first). If any one of them can't be unallocated, **nothing changes**.

#### Modifying Dependencies on an Allocated Order <a href="#modifying-dependencies-on-an-allocated-order" id="modifying-dependencies-on-an-allocated-order"></a>

If you try to add, edit, or delete a dependency on an order that's currently allocated, the system blocks the change and gives you a one‑click way to fix it.

1. The error snackbar appears with an **Unallocate** button.
2. Click **Unallocate**. A confirmation dialog appears.

<figure><img src="https://352909507-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrNT40XJFAFlAhUX8CcQS%2Fuploads%2Fgit-blob-a97ef9d44b3e6d9177f5cd7f76d37dddab3f973e%2FPasted%20image%2020260618123419.png?alt=media" alt=""><figcaption></figcaption></figure>

3. Confirm to unallocate the order. The dependency dialog refreshes with the latest data — you can now make your change.

***

### Tips & Limits <a href="#tips-and-limits" id="tips-and-limits"></a>

* **Max one Locked dependency per order.** Add as many non‑locked as you need.
* **Circular dependencies are blocked.** If A depends on B, B (or anything depending on B) can't be made to depend on A — those orders simply won't appear in the eligible orders dropdown.
* **All cascades are atomic.** Either the whole operation succeeds or nothing changes — the schedule stays consistent.
* **Unallocated dependants don't block the dependency.** You can freely move, resize, or unallocate a dependency order as long as none of its dependants are allocated.
