> 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/industry-configuration-guides/wine-bottling-plant.md).

# Wine Bottling Plant

This cookbook walks you through setting up TilliT for a **wine bottling and packaging plant**. By the end, you will have a fully configured site with multiple bottling lines, shift patterns, quality activities, material tracking, and a scheduler that can plan and optimise production runs.

The setup is based on a real-world wine bottling facility that packages wine into bottles across several filling and packing lines. The plant operates with a mix of 8-hour and 10-hour shift patterns and uses TilliT for quality checks, consumption tracking, and production scheduling.

{% hint style="info" %}
All names used in this guide are generic examples. Replace them with your own site, line, and product names.
{% endhint %}

## Prerequisites

Before you begin, ensure you have:

* A TilliT tenant provisioned for your organisation
* An administrator account with access to **Settings**
* The [Excel Add-in](/tillit/tools/excel-addin-v2.md) installed (recommended for bulk data loading)

For a general introduction to TilliT setup concepts, see [Introduction for New TilliT Customers](/tillit/readme-1/introduction-for-new-tillit-customers.md).

{% stepper %}
{% step %}

## Create the Site

A site represents the physical location of your bottling plant.

**Go to Settings -> Asset Hierarchy -> Sites -> Create**

| Field         | Example Value      |
| ------------- | ------------------ |
| Name          | Bottling Hall      |
| Timezone      | Australia/Adelaide |
| Location Code | BH                 |

For more detail, see [Site](/tillit/knowledge-base/setting-up-tillit/asset-hierarchy/site.md).
{% endstep %}

{% step %}

## Define Asset Classes

Asset classes group similar types of equipment. A wine bottling plant typically has the following asset classes:

| Asset Class | Description                             |
| ----------- | --------------------------------------- |
| Lines       | The parent bottling/packaging lines     |
| Filtration  | Filtration units at the start of a line |
| Depals      | Depalletisers that unload empty bottles |
| Fillers     | Bottle fillers                          |
| Labellers   | Labelling machines                      |
| Packers     | Carton packing machines                 |
| Palletisers | Palletising machines                    |
| QA          | Quality assurance station (shared)      |
| Kitter      | Warehouse kitting area                  |

Some lines may have specialised variants. For example, a packing-only line might use classes like **Pack Depal**, **Pack Labeller**, and **Pack Palletiser** to distinguish them from standard fill-line equipment.

**Go to Settings -> Asset Hierarchy -> Asset Class -> Create**

Create one asset class for each type listed above. See [Asset Class](/tillit/knowledge-base/setting-up-tillit/asset-hierarchy/asset-class.md) for details.
{% endstep %}

{% step %}

## Build the Asset Hierarchy

Assets represent the individual machines on each line. In a wine bottling plant the hierarchy follows this pattern:

```
Site
├── Line 1 (class: Lines)
│   ├── Line 1 Filtration (class: Filtration)
│   ├── Line 1 Depal (class: Depals)
│   ├── Line 1 Filler (class: Fillers)
│   ├── Line 1 Labeller (class: Labellers)
│   ├── Line 1 Packing (class: Packers)
│   └── Line 1 Palletiser (class: Palletisers)
├── Line 2 (class: Lines)
│   ├── Line 2 Filtration (class: Filtration)
│   ├── Line 2 Depal (class: Depals)
│   ├── Line 2 Filler (class: Fillers)
│   ├── Line 2 Labeller (class: Labellers)
│   ├── Line 2 Packing (class: Packers)
│   └── Line 2 Palletiser (class: Palletisers)
├── ...additional fill lines...
├── Line 5 (class: Lines)  ← packing-only line
│   ├── Line 5 Depal (class: Pack Depal)
│   ├── Line 5 Labeller (class: Pack Labeller)
│   └── Line 5 Palletiser (class: Pack Palletiser)
├── Line 6 (class: Lines)
│   └── ...
├── Line 7 (class: Lines)  ← fill-only line
│   └── Line 7 Filler (class: Fillers)
├── Warehouse (class: Lines)
│   └── Kitter (class: Kitter)
└── QA (class: QA)  ← shared across all lines
```

### Key points

* **Full bottling lines** (Lines 1-4) have the complete chain: Filtration -> Depal -> Filler -> Labeller -> Packing -> Palletiser.
* **Packing-only lines** (Line 5) bypass the filler and filtration stages, meaning they only track packaging materials and final box output.
* **Fill-only lines** (Line 7) consist only of a filler - they send wine to other lines for packaging.
* **Shared assets** like QA and Warehouse sit at the top level, not under a specific line.
* Use **Display Order** to control the sequence assets appear in the UI (e.g. 100, 200, 300).

**Go to Settings -> Asset Hierarchy -> Assets -> Create**

Create each asset, assign it to the correct asset class, and set the parent asset for child equipment. See [Asset](/tillit/knowledge-base/setting-up-tillit/asset-hierarchy/assets.md) for details.

{% hint style="info" %}
For sites with many assets, use the [Excel Add-in](/tillit/tools/excel-addin-v2/entity-data-source.md) to create assets in bulk.
{% endhint %}
{% endstep %}

{% step %}

## Configure Shifts

Shift templates define the working hours for each line. A wine bottling plant typically uses a mix of shift lengths:

| Shift Template | Start Time | Duration | Description            |
| -------------- | ---------- | -------- | ---------------------- |
| Morning 8hr    | 06:00      | 8 hours  | Standard morning shift |
| Afternoon 8hr  | 14:00      | 8 hours  | Afternoon shift        |
| Evening 8hr    | 22:00      | 8 hours  | Evening/night shift    |

The **24x5** templates act as master calendars. They group individual shifts together so the system knows the line is running continuously from Monday morning to Friday night without stopping between shifts.

### Creating shift schedules

Setting up shifts is a two-step process: first, you define the overall shift pattern (**Shift Template** and its **Items**); then, you link that pattern to your equipment using a **Shift Calendar**.

{% stepper %}
{% step %}

#### Create and Configure the Shift Template

1. Go to: **Settings -> Asset Hierarchy -> Shift Templates -> Create**.
2. Create the required shift templates.
3. Within each created template, go to: **Items**
4. Define the specific shift periods, including their start times and durations.

See [Creating a Shift Template](/tillit/knowledge-base/setting-up-tillit/asset-hierarchy/shifts/shift-patterns.md) for details.
{% endstep %}

{% step %}

#### Assign Shifts to Assets

Once your templates and items are ready, create calendars to map these schedules to the correct assets.

Since not every line runs the same schedule (e.g., fill lines might operate on a *24x5* pattern while packing lines run *two 8-hour shifts*), calendars ensure each asset accurately reflects its real-world operating schedule.

1. Go to: **Settings -> Asset Hierarchy -> Calendars -> Create**.
2. Add your **Shift Template** as a calendar Item.
3. Select the relevant asset and apply the template.
   {% endstep %}
   {% endstepper %}
   {% endstep %}

{% step %}

## Set Up Units of Measure

Before creating materials and process variables, define the units of measure your site will use.

| Unit    | Description                               |
| ------- | ----------------------------------------- |
| mm      | Millimetres (glue specs, label placement) |
| mL      | Millilitres (fill volumes)                |
| L       | Litres (wine volumes, buffer tanks)       |
| %       | Percentage (variance, alcohol)            |
| BOT     | Bottles                                   |
| Cartons | Cartons                                   |
| EA      | Each (individual items)                   |

**Go to Settings -> Configuration -> Unit of Measure -> Create**

See [Unit of Measure](/tillit/knowledge-base/setting-up-tillit/configuration/unit-of-measure-uom.md) for details.
{% endstep %}

{% step %}

## Create Material Groups

Material groups categorise your raw materials and finished goods. For a wine bottling plant:

| Group          | Description                      |
| -------------- | -------------------------------- |
| Finished Goods | Finished packaged wine products  |
| Raw Material   | Bulk wine, additives             |
| BOT            | Bottles                          |
| LAB            | Labels (front, back, neck)       |
| CLO            | Closures (screwcaps, corks)      |
| CAR            | Cartons                          |
| DIV            | Dividers/inserts                 |
| CAP            | Capsules                         |
| PAL            | Pallets and pallet wraps         |
| DRY            | Dry goods (miscellaneous)        |
| GFT            | Gift boxes and special packaging |

**Go to Settings -> Material Definition -> Material Groups -> Create**

See [Material Group](/tillit/knowledge-base/setting-up-tillit/material-definition/material-group.md) for details.

{% hint style="info" %}
The exact groups depend on how your ERP categorises materials. These are typical categories for a wine bottling operation.
{% endhint %}
{% endstep %}

{% step %}

## Add Materials

Materials represent the specific items consumed or produced during bottling. A wine bottling plant can have thousands of materials across groups.

**Typical material types:**

* **Raw materials** - bulk wine by variety and vintage
* **Dry goods** - bottles, labels, closures, cartons, capsules, dividers, pallet wrap
* **Finished goods** - the packaged wine product (SKU)

**Go to Settings -> Material Definition -> Materials -> Create**

For bulk loading, use the [Excel Add-in](/tillit/tools/excel-addin-v2/entity-data-source.md) to import materials from a spreadsheet.

See [Material](/tillit/knowledge-base/setting-up-tillit/material-definition/material.md) for details.
{% endstep %}

{% step %}

## Define Attributes

Attributes store metadata against orders, materials, and assets. In wine bottling, think of them as the digital "Product Specification Sheet" or the product's identity card. They hold specific details about a work order (such as alcohol percentage or bottle type), which TilliT uses to automatically show or hide relevant fields based on that specific product type, as well as to help the Scheduler calculate changeover times.

### Order Number Attributes

These attach to all work orders that share the same Order Number. They are particularly useful when production orders are split into multiple operations but still need to share common information. When orders are loaded via the API, these attribute values can be provided in the payload (see [Step 14](#integrate-order-loading-from-erp)). Group them by purpose:

**Wine & Fill Specs**

| Attribute       | Data Type | Purpose                                            |
| --------------- | --------- | -------------------------------------------------- |
| WineType        | STRING    | Wine type (e.g. White Still, Red Still, Sparkling) |
| Alcohol         | NUMBER    | Wine alcohol value                                 |
| AlcLower        | NUMBER    | Alcohol spec lower limit                           |
| AlcHigher       | NUMBER    | Alcohol spec upper limit                           |
| CO2Lower        | NUMBER    | CO2 spec lower limit                               |
| CO2Higher       | NUMBER    | CO2 spec upper limit                               |
| FillVolume      | NUMBER    | Running fill volume tolerance                      |
| FillVolumeStart | NUMBER    | Fill volume tolerance at start of order            |
| SpecificGravity | NUMBER    | Specific gravity value                             |
| Density         | NUMBER    | Density value                                      |
| Carbonator      | BOOLEAN   | Whether the order uses a carbonator                |
| HighSugar       | BOOLEAN   | High-sugar product flag                            |
| Velcorin        | BOOLEAN   | Velcorin used in product                           |

**Temperature Specs**

| Attribute            | Data Type | Purpose                            |
| -------------------- | --------- | ---------------------------------- |
| WineTemperature      | NUMBER    | Running wine temperature           |
| WineTemperatureStart | NUMBER    | Wine temperature at start of order |
| LowerTemp            | NUMBER    | Lower temperature spec             |
| UpperTemp            | NUMBER    | Upper temperature spec             |

**Bottle & Closure**

| Attribute          | Data Type | Purpose                             |
| ------------------ | --------- | ----------------------------------- |
| ClosureType        | STRING    | Closure type (screwcap, cork, etc.) |
| BottleMould        | STRING    | Bottle mould code                   |
| GlassSupplier      | STRING    | Glass supplier name                 |
| CorkInsertionDepth | NUMBER    | Cork insertion depth tolerance      |
| CorkInsertHigh     | NUMBER    | Cork insertion upper spec           |
| CorkInsertLow      | NUMBER    | Cork insertion lower spec           |

**Label Configuration**

| Attribute        | Data Type | Purpose                 |
| ---------------- | --------- | ----------------------- |
| FrontLabel       | BOOLEAN   | Order has a front label |
| BackLabel        | BOOLEAN   | Order has a back label  |
| NeckLabel        | BOOLEAN   | Order has a neck label  |
| WrapLabel        | BOOLEAN   | Order has a wrap label  |
| FrontLabelHeight | NUMBER    | Front label height      |
| BackLabelHeight  | NUMBER    | Back label height       |
| NeckHeight       | NUMBER    | Neck label height       |
| WrapHeight       | NUMBER    | Wrap label height       |

**Packing & Palletising**

| Attribute       | Data Type | Purpose                       |
| --------------- | --------- | ----------------------------- |
| PackSize        | STRING    | Pack size description         |
| Dividers        | BOOLEAN   | Order has dividers            |
| TrayPack        | BOOLEAN   | Order is tray pack            |
| Laydown         | BOOLEAN   | Order is laydown              |
| Slipsheet       | BOOLEAN   | Order uses slipsheets         |
| PalletTack      | BOOLEAN   | Order uses pallet tack        |
| PalletType      | STRING    | Pallet type                   |
| PalletConfig    | STRING    | Pallet configuration code     |
| TopCap          | BOOLEAN   | Order has a top cap           |
| TopLengthCarton | NUMBER    | Carton glue spec - top length |
| TopWidthCarton  | NUMBER    | Carton glue spec - top width  |

**Cleaning & Sanitation**

| Attribute              | Data Type | Purpose                            |
| ---------------------- | --------- | ---------------------------------- |
| CIP                    | BOOLEAN   | CIP required after this order      |
| RinseAndAutoSanitation | BOOLEAN   | Rinse and auto sanitation required |
| FiltrationRequired     | STRING    | Filtration requirement             |

**General**

| Attribute             | Data Type | Purpose                       |
| --------------------- | --------- | ----------------------------- |
| AdditionalInformation | STRING    | Free-text notes for operators |
| SpecialInstructions   | STRING    | Special handling instructions |
| Line                  | STRING    | Intended line (from ERP)      |

### Material Attributes

| Attribute | Data Type | Purpose                                                                      |
| --------- | --------- | ---------------------------------------------------------------------------- |
| Wine Type | STRING    | Wine type classification (e.g. White Still, Red Still, Fortified, Sparkling) |

**Go to Settings -> Configuration -> Attributes -> Create**

See [Attribute](/tillit/knowledge-base/setting-up-tillit/configuration/copy-of-attribute.md) for details.

{% hint style="info" %}
You do not need to create all attributes manually before loading orders. When you use the order upsert API (see [Step 14](#integrate-order-loading-from-erp)), any attribute that does not already exist will be created automatically.
{% endhint %}
{% endstep %}

{% step %}

## Set Up Process Variables

Process variables define the measurements and checks that operators capture. They can reference attributes to pull specs from the work order.

#### Carton Glue Specs

These process variables reference order attributes so the spec changes per work order:

| Process Variable   | UoM | Upper Limit                   | Lower Limit                  |
| ------------------ | --- | ----------------------------- | ---------------------------- |
| Top Length Carton  | mm  | `TopLengthCarton` (attribute) | `TopLengthCarton-40`         |
| Top Width Carton   | mm  | 9                             | `TopWidthCarton` (attribute) |
| Side Length Carton | mm  | 270                           | 230                          |
| Side Width Carton  | mm  | 8                             | 4                            |

#### Wine Quality Specs

| Process Variable       | UoM | Upper Limit                  | Lower Limit                 |
| ---------------------- | --- | ---------------------------- | --------------------------- |
| Alcohol                | --  | `AlcHigher` (attribute)      | `AlcLower` (attribute)      |
| Back of Filler Alcohol | --  | `Alcohol+0.2`                | `Alcohol-0.2`               |
| Cork Insertion Depth   | mm  | `CorkInsertHigh` (attribute) | `CorkInsertLow` (attribute) |
| Fill Volume            | mL  | `FillVolume+2`               | `FillVolume-2`              |

#### Buffer Tank Monitoring

For plants with buffer tanks between filtration and filling, create process variables for each tank level (e.g. BufferTank1Level through BufferTank11Level) with a UoM of **L** (litres).

**Go to Settings -> Configuration -> Process Variable -> Create**

See [Process Variable](/tillit/knowledge-base/setting-up-tillit/configuration/process-variable.md) for details.

{% hint style="info" %}
Process variables that reference attributes (like `AlcHigher`) will automatically pull the correct spec from the current work order. This means one activity template works for all products.
{% endhint %}
{% endstep %}

{% step %}

## Create Activity Classes

Activity classes group related activity templates in the UI. For a wine bottling plant:

| Activity Class       | Purpose                                                    |
| -------------------- | ---------------------------------------------------------- |
| QA Checks            | Quality assurance checks                                   |
| Quality              | Product quality inspections                                |
| Fillers              | Filler-specific activities                                 |
| Machine Checks       | Mechanical and operational checks                          |
| Raw Material Loading | Dry goods loading confirmations                            |
| Safety               | Safety guard checks and audits                             |
| Data                 | Data capture activities (consumption logs, reconciliation) |
| Sampling             | Micro and lab sample activities                            |
| Task                 | General operator tasks                                     |
| Team Leaders         | Supervisor-only activities                                 |
| Cleaning             | CIP and sanitation activities                              |
| Post Bottling        | Post-bottling lab checks                                   |
| Filtration           | Filtration-specific activities                             |

**Go to Settings -> Activity Template -> Activity Classes -> Create**

See [Activity Class](/tillit/knowledge-base/setting-up-tillit/activity-templates/activity-class.md) for details.
{% endstep %}

{% step %}

## Build Activity Templates

Activity templates are the digital forms that operators interact with. A wine bottling plant typically has a large number of templates covering quality, safety, data capture, and machine checks.

### Core Activity Categories

**QA & Quality Checks**

| Activity                    | Triggered by | Assigned to            |
| --------------------------- | ------------ | ---------------------- |
| Filler Startup QA Check     | Order start  | operators, supervisors |
| Filler Closure QA Check     | Order start  | operators, supervisors |
| Carton Erector QA Check     | Interval     | operators              |
| Labeller QA Check           | Interval     | operators, supervisors |
| Wrapper Full QA Check       | Order start  | operators              |
| Palletiser Full QA Check    | Order start  | operators              |
| Post Bottling Micro Samples | Order start  | operators, supervisors |

**Machine Checks**

| Activity                     | Triggered by | Assigned to            |
| ---------------------------- | ------------ | ---------------------- |
| Depal Start up QA Check      | Order start  | operators, supervisors |
| Depal Load Check             | Interval     | operators, supervisors |
| Packing Start of Shift Check | Shift start  | operators, supervisors |
| Palletiser Start Of WO Check | Order start  | operators              |
| Palletiser Handover Check    | Shift start  | operators              |

**Safety Checks**

| Activity                          | Triggered by | Assigned to            |
| --------------------------------- | ------------ | ---------------------- |
| Carton Erector Safety Guard Check | Shift start  | operators, supervisors |
| Depalletiser Safety Guard Check   | Shift start  | operators, supervisors |
| Capsular Safety Guard Check       | Shift start  | operators, supervisors |
| Bottle Divider Safety Guard Check | Shift start  | operators, supervisors |

**Data Capture**

| Activity                         | Triggered by  | Assigned to            |
| -------------------------------- | ------------- | ---------------------- |
| Labeller Consumed Drygoods Log   | Order end     | operators, supervisors |
| Packer Consumed Drygoods Log     | Order end     | operators, supervisors |
| Palletiser Consumed Drygoods Log | Order end     | operators              |
| Filler Check Results             | Order running | operators, supervisors |
| Buffer Tanks                     | Manual        | operators, supervisors |
| First and Last Carton Times      | Order end     | supervisors            |
| Wine Reconciliation              | Order end     | operators, supervisors |

**Cleaning**

| Activity                   | Triggered by | Assigned to            |
| -------------------------- | ------------ | ---------------------- |
| CIP/Rinse                  | Event-based  | operators, supervisors |
| End of Week CIP/Rinse      | Scheduled    | operators, supervisors |
| 3 Monthly Mould Check      | Scheduled    | operators, supervisors |
| Half Yearly Internal Clean | Scheduled    | operators, supervisors |

**Downtime & Events**

| Activity              | Triggered by        | Assigned to |
| --------------------- | ------------------- | ----------- |
| Enter Stoppage Reason | Changeover detected | operators   |
| Downtime Reason       | Machine stop event  | operators   |
| Downtime Log          | Order running       | operators   |

### Building an activity template

For each activity, you need to:

1. **Create the template** with a name and activity key
2. **Assign it to an activity class**
3. **Set the "Claimable By" field** to define who can see and claim the activity
4. **Configure the trigger** (when it fires - see next section)
5. **Build the form items** (the fields operators fill in)

**Go to Settings -> Activity Template -> Activity Template -> Create**

See [Creating an Activity](/tillit/knowledge-base/setting-up-tillit/activity-templates/activity/creating-an-activity.md) for a complete walkthrough.

For understanding trigger types, see [When](/tillit/knowledge-base/setting-up-tillit/activity-templates/activity/when.md) and [Where](/tillit/knowledge-base/setting-up-tillit/activity-templates/activity/where.md).

{% hint style="info" %}
Start with a small set of critical activities (e.g. filler startup, QA checks, downtime reason) and expand once the team is comfortable.
{% endhint %}
{% endstep %}

{% step %}

## Configure Order Templates

Order templates define how a work order is executed across a bottling line. They specify which machines (child assets) within the bottling line (parent asset) participate in the order, as well as the operation type for each stage.

#### Full Bottling Line (Line 1 example)

| Order Template    | Operation    | From Asset | To Asset          |
| ----------------- | ------------ | ---------- | ----------------- |
| Line 1 Filtration | FILTRATION   | Line 1     | Line 1 Filtration |
| Line 1 Depal      | DEPALLETISER | Line 1     | Line 1 Depal      |
| Line 1 Filler     | FILLER       | Line 1     | Line 1 Filler     |
| Line 1 Labeller   | LABELLER     | Line 1     | Line 1 Labeller   |
| Line 1 Packing    | PACKER       | Line 1     | Line 1 Packing    |
| Line 1 Palletiser | PALLETISER   | Line 1     | Line 1 Palletiser |
| QA                | QA           | Line 1     | QA                |
| Kitter            | WAREHOUSE    | Line 1     | Kitter            |

Repeat this pattern for each line, adjusting the machine list based on the line's configuration.

#### Packing-Only Line (Line 5 example)

| Order Template    | Operation    | From Asset | To Asset          |
| ----------------- | ------------ | ---------- | ----------------- |
| Line 5 Depal      | DEPALLETISER | Line 5     | Line 5 Depal      |
| Line 5 Labeller   | LABELLER     | Line 5     | Line 5 Labeller   |
| Line 5 Palletiser | PALLETISER   | Line 5     | Line 5 Palletiser |
| QA                | QA           | Line 5     | QA                |

#### Fill-Only Line (Line 7 example)

| Order Template | Operation | From Asset | To Asset      |
| -------------- | --------- | ---------- | ------------- |
| Line 7 Filler  | FILLER    | Line 7     | Line 7 Filler |
| QA             | QA        | Line 7     | QA            |

**Go to Settings -> Asset Hierarchy -> Order Templates -> Create**

See [Order Template](/tillit/knowledge-base/setting-up-tillit/asset-hierarchy/order-template.md) for details.
{% endstep %}

{% step %}

## Set Up the Scheduler

Once Digital Operations is configured, you can set up the Scheduler to plan and optimise production runs.

{% stepper %}
{% step %}

### Create the Data Template

The **Default Data Template** links the Scheduler to the Digital Operations site and connects scheduler equipment to live production data.

In newly provisioned environments, sections such as Equipment, Availability, Optimisation, and Changeovers may not be available until a Data Template has been created.

**Go to Scheduler -> Data Templates -> Create**

Create the Default Data Template.

See [Data Templates](/tillit/knowledge-base/scheduler/data-templates.md) for details.
{% endstep %}

{% step %}

### Create Scheduler Equipment

Each bottling line becomes a piece of equipment in the Scheduler.

| Equipment (Name) | External ID (Code) | Display Order |
| ---------------- | ------------------ | ------------- |
| Line 1           | Line 1             | 1             |
| Line 2           | Line 2             | 2             |
| Line 3           | Line 3             | 3             |
| Line 4           | Line 4             | 4             |
| Line 7           | Line 7             | 5             |
| Line 9           | Line 9             | 6             |
| Line 10          | Line 10            | 7             |
| Line 5           | Line 5             | 8             |
| Line 6           | Line 6             | 9             |
| Line 6 Side      | Line 6 Side        | 10            |

See [Equipment](/tillit/knowledge-base/scheduler/data-templates/equipment.md) for details.
{% endstep %}

{% step %}

### Create Availability Templates

Availability templates define when each line is available for production.

Typical patterns for a wine bottling plant:

| Template (Code) | Name                    | Description                                    | Days                      |
| --------------- | ----------------------- | ---------------------------------------------- | ------------------------- |
| 8HS             | 8 Hours Standard        | Sun night through to Fri afternoon (3 shifts)  | Sun 22:00 - Fri 22:00     |
| 10HS            | 10 Hours Standard       | Mon-Fri, 06:00-02:00 next day (2x 10hr shifts) | Mon-Thu full, Fri partial |
| 8DS             | 8 Hours Day Shift       | Mon-Fri, 06:00-14:00 (day shift only)          | Mon-Fri                   |
| 8D\&AS          | 8 Hours Day & Afternoon | Mon-Fri, 06:00-22:00 (day + afternoon)         | Mon-Fri                   |

Assign each availability template to the appropriate equipment using the **Calendarised Availability Template Set**.

See [Availability](/tillit/knowledge-base/scheduler/data-templates/availability.md) for details.
{% endstep %}

{% step %}

### Define Optimisation Properties

Optimisation properties are the characteristics the Scheduler uses to sequence orders and calculate changeover times.

For wine bottling:

| Property (Name) | Example Values                                                      | Description                                    |
| --------------- | ------------------------------------------------------------------- | ---------------------------------------------- |
| Wine Type       | White Still, Red Still, Fortified, Rose, Sparkling, Zero Alcohol... | Wine type drives CIP requirements between runs |
| Bottle          | Various bottle codes by size and shape                              | Bottle changes require line adjustments        |
| Carton          | 6, 12, 6 Divider, 12 Divider, 3x750 Gift Box...                     | Carton format changes affect packing setup     |

See [Optimisation](/tillit/knowledge-base/scheduler/data-templates/optimisation.md) for details.
{% endstep %}

{% step %}

### Configure Changeover Rules

Changeovers define the downtime required to clean or mechanically reconfigure a line when switching between products. They are based on the optimisation properties above.

**Key changeover rules for wine bottling:**

* **Same wine type to same wine type** - 0 minutes (no changeover needed)
* **Different wine type** - typically 130 minutes (2 hours 10 min) for a full CIP
* **Bottle change** - varies by bottle type combination
* **Carton change** - shorter changeover, typically 15-30 minutes

Changeover times are entered as a matrix of from-value to to-value for each optimisation property.

See [Changeovers](/tillit/knowledge-base/scheduler/data-templates/changeovers.md) for details.
{% endstep %}

{% step %}

### Define Operations and Production Routes

Equipment, availability, and changeovers tell the scheduler *where* and *when* it can work. **Operations** tell it *what* the work is and *how long* it takes.

The model is a small hierarchy:

```
Operation (one per finished good -- code = the product's material code)
  └── Route
        └── Segment "Fill and Pack"
              ├── Consumed materials  -- the bill of materials (bulk wine, bottle, label, closure, carton, dividers, capsule)
              ├── Produced material   -- the one finished wine SKU this operation makes
              └── Run rate            -- throughput in units per second
```

For each finished wine product (SKU), create an operation with a single **Fill and Pack** segment that:

* **consumes** its components - e.g. *Shiraz 2024 750mL 12pk* consumes bulk wine, a 750mL bottle, a screwcap, front and back labels, a 12-pack carton, dividers, and any required capsule;
* **produces** the one finished good (the SKU); and
* declares a **run rate** in units per second. The scheduler derives an order's duration from `quantity ÷ run rate` (e.g. 12,000 units at 1.5 units/s ≈ 2.2 hours of run time, before changeovers). Standard 750mL lines typically run at a steady throughput (≈1.5--2.0 u/s), while specialized packaging or gift boxes (e.g., 3x750mL) will declare a significantly lower run rate; and
* declares an **equipment requirement**. Match the segment to an **equipment class** (e.g. *Lines*) rather than a single bottling line, so the scheduler can place the order on **any** available line in that class. Without an equipment requirement the scheduler has nowhere to run the order.

{% hint style="info" %}
The run rate replaces a fixed duration: a segment is timed *either* by a fixed duration *or* by a throughput rate. For filling lines, the per-product run rate is what you want, since duration then scales with order quantity.
{% endhint %}

See [Operations](/tillit/knowledge-base/scheduler/data-templates/operations.md) for details.
{% endstep %}

{% step %}

### Load Scheduler Data

For bulk loading of scheduler master data (equipment properties, availability calendars, changeover matrices), use the Excel Add-in:

See [Loading data with Excel Add-in](/tillit/tools/excel-addin-v2/entity-data-source.md) for details.
{% endstep %}
{% endstepper %}
{% endstep %}

{% step %}

## Integrate Order Loading from ERP

In most wine bottling plants, work orders originate in an ERP system (SAP, JDE, etc.) and need to flow into TilliT automatically. Use the `POST:/core/order-instances/upsert` endpoint to load orders with all their attributes, tolerances, and components.

### Order Payload Structure

The upsert endpoint accepts an array of orders. Each order carries the core fields plus arrays for attributes, tolerances, and components:

```json
[
  {
    "orderNumber": "WO-20260101-001",
    "orderDate": "2026-01-01",
    "dueDate": "2026-01-03",
    "scheduledStart": "2026-01-02T06:00:00",
    "scheduledEnd": "2026-01-02T14:00:00",
    "quantityTarget": 12000,
    "defaultRunRate": 150,
    "status": "NEW",
    "name": "Shiraz 2024 750mL 12pk",
    "asset": "Line 1",
    "material": {
      "externalId": "FG-SHZ-2024-750",
      "name": "Shiraz 2024 750mL"
    },
    "attributes": [
      { "attributeName": "WineType", "value": "Red Still" },
      { "attributeName": "ClosureType", "value": "Screwcap" },
      { "attributeName": "Alcohol", "value": "14.5" },
      { "attributeName": "AlcLower", "value": "14.3" },
      { "attributeName": "AlcHigher", "value": "14.7" },
      { "attributeName": "CO2Lower", "value": "0.4" },
      { "attributeName": "CO2Higher", "value": "0.8" },
      { "attributeName": "FillVolume", "value": "750" },
      { "attributeName": "WineTemperature", "value": "16" },
      { "attributeName": "LowerTemp", "value": "14" },
      { "attributeName": "UpperTemp", "value": "18" },
      { "attributeName": "Carbonator", "value": "false" },
      { "attributeName": "HighSugar", "value": "false" },
      { "attributeName": "CIP", "value": "false" },
      { "attributeName": "FrontLabel", "value": "true" },
      { "attributeName": "BackLabel", "value": "true" },
      { "attributeName": "NeckLabel", "value": "false" },
      { "attributeName": "FrontLabelHeight", "value": "85" },
      { "attributeName": "BackLabelHeight", "value": "75" },
      { "attributeName": "PackSize", "value": "12" },
      { "attributeName": "Dividers", "value": "true" },
      { "attributeName": "TopLengthCarton", "value": "280" },
      { "attributeName": "TopWidthCarton", "value": "6" },
      { "attributeName": "PalletType", "value": "Standard" },
      { "attributeName": "Slipsheet", "value": "false" },
      { "attributeName": "GlassSupplier", "value": "GlassCo" },
      { "attributeName": "SpecialInstructions", "value": "" },
      { "attributeName": "AdditionalInformation", "value": "" }
    ],
    "tolerances": [
      { "processVariableName": "Alcohol", "target": 14.5, "lowerLimit": 14.3, "upperLimit": 14.7 },
      { "processVariableName": "Fill Volume", "target": 750, "lowerLimit": 748, "upperLimit": 752 },
      { "processVariableName": "Cork Insertion Depth", "target": 18, "lowerLimit": 16, "upperLimit": 20 }
    ],
    "orderComponents": [
      { "componentExternalId": "BOT-750-BVS", "componentGroup": "BOT", "componentName": "750mL BVS Bottle", "target": 12000 },
      { "componentExternalId": "LAB-SHZ-FRONT", "componentGroup": "LAB", "componentName": "Shiraz Front Label", "target": 12200 },
      { "componentExternalId": "LAB-SHZ-BACK", "componentGroup": "LAB", "componentName": "Shiraz Back Label", "target": 12200 },
      { "componentExternalId": "CLO-SCREWCAP-BLK", "componentGroup": "CLO", "componentName": "Black Screwcap", "target": 12100 },
      { "componentExternalId": "CAR-12PK-DIV", "componentGroup": "CAR", "componentName": "12pk Carton with Divider", "target": 1000 }
    ]
  }
]
```

### Key points

* **`asset`** - set to the parent line name. If order templates are configured ([Step 12](#configure-order-templates)), the order will automatically cascade to child assets (Depal, Filler, Labeller, etc.).
* **`attributes`** - all values are strings, even for BOOLEAN and NUMBER types. TilliT converts them based on the attribute definition.
* **`tolerances`** - override the default process variable limits for this specific order. Only include tolerances that differ from the defaults.
* **`orderComponents`** - the bill of materials for the order. Component groups should match your material groups (BOT, LAB, CLO, CAR, etc.).
* **Upsert behaviour** - If you send a work order that matches an existing combination of `orderNumber`, `operation`, and `asset`, TilliT will simply update the details instead of creating a duplicate. This allows you to safely re-send or refresh the full schedule whenever it changes.
* **Auto-creation** - materials, attributes, UoMs, and tolerances that do not already exist will be created automatically.

### Typical attribute categories in the payload

| Category         | Attributes                                                                            | Purpose                          |
| ---------------- | ------------------------------------------------------------------------------------- | -------------------------------- |
| Wine specs       | WineType, Alcohol, AlcLower, AlcHigher, CO2Lower, CO2Higher, SpecificGravity, Density | Drive quality check tolerances   |
| Temperature      | WineTemperature, WineTemperatureStart, LowerTemp, UpperTemp                           | Filler temperature monitoring    |
| Fill specs       | FillVolume, FillVolumeStart, Carbonator, HighSugar, Velcorin                          | Filler configuration             |
| Bottle & closure | ClosureType, BottleMould, GlassSupplier, CorkInsertionDepth                           | Machine setup and QA checks      |
| Labels           | FrontLabel, BackLabel, NeckLabel, WrapLabel, + Heights                                | Labeller configuration           |
| Packing          | PackSize, Dividers, TrayPack, Laydown, TopLengthCarton, TopWidthCarton                | Packer and carton glue setup     |
| Palletising      | PalletType, PalletConfig, Slipsheet, PalletTack, TopCap                               | Palletiser configuration         |
| Cleaning         | CIP, RinseAndAutoSanitation, FiltrationRequired                                       | End-of-order cleaning triggers   |
| General          | SpecialInstructions, AdditionalInformation, Line                                      | Operator notes and routing hints |

For the full API reference, see [Upload Production Schedule](https://help.tillit.cloud/api/developer-guides/guide-to-using-rest-api/examples/upload-production-schedule#using-the-order-instance-upsert-endpoint).
{% endstep %}

{% step %}

## Create Your First Work Order

With all master data in place, you can test by creating a work order manually:

1. Navigate to the line where you want to run the order
2. Click **Create Order**
3. Select the material (finished good) to produce
4. Enter the quantity
5. Fill in the order number attributes (temperature, CIP, special instructions)
6. Start the order

When the order starts, TilliT will automatically trigger the configured activities (QA checks, startup checks, etc.) and the order will flow through each machine according to the order template.

See [Create adhoc Order](/tillit/knowledge-base/everyday-usage/orders/create-adhoc-order.md) and [Start an Order](/tillit/getting-started/start-the-order-1.md) for details.
{% endstep %}

{% step %}

## Schedule Production (Scheduler)

With the scheduler configured, you can now plan production:

1. Open the **Scheduler**
2. Import orders from your ERP or create them manually
3. Assign orders to lines
4. Let the scheduler optimise the sequence based on changeover rules
5. Publish the schedule to Digital Operations

See [How to Schedule](/tillit/knowledge-base/scheduler/getting-started.md) and [Scheduler to Digital Operations integration](/tillit/knowledge-base/scheduler/execution.md) for details.
{% endstep %}
{% endstepper %}

## Summary Checklist

Use this checklist to track your progress:

* [ ] Site created with correct timezone
* [ ] Asset classes defined (Lines, Fillers, Labellers, Packers, Palletisers, etc.)
* [ ] Assets created with correct parent-child hierarchy
* [ ] Shift templates configured (8hr, 10hr, 24x5 patterns)
* [ ] Units of measure defined (mm, mL, L, %, BOT, Cartons, EA)
* [ ] Material groups created (Finished Goods, Raw Material, BOT, LAB, CLO, CAR, etc.)
* [ ] Materials loaded (bottles, labels, closures, cartons, finished goods)
* [ ] Attributes defined (order number attributes for specs and flags)
* [ ] Process variables configured (glue specs, alcohol, temperature)
* [ ] Activity classes created
* [ ] Activity templates built and triggers configured
* [ ] Order templates mapped for each line
* [ ] Scheduler equipment created
* [ ] Availability templates configured and assigned
* [ ] Optimisation properties defined (Wine Type, Bottle, Carton)
* [ ] Changeover rules entered
* [ ] Order integration configured and payload tested
* [ ] First work order tested end-to-end

## Related Articles

* [Planning Overview](/tillit/planning/overview.md)
* [Data Gathering Checklist](/tillit/planning/data-gathering/checklist.md)
* [Upload Production Schedule (API)](https://help.tillit.cloud/api/developer-guides/guide-to-using-rest-api/examples/upload-production-schedule)
* [Entity Data Source](/tillit/tools/excel-addin-v2/entity-data-source.md)
