> 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/yogurt-and-ice-cream-factory.md).

# Yogurt & Ice Cream Factory

This cookbook walks you through setting up TilliT for a **yogurt and ice cream manufacturing facility**. By the end, you will have a fully configured multi-site operation with mix rooms, ageing tanks, filling lines, packing rooms, and a scheduler that can plan and optimise production runs.

The setup is based on a real-world ice cream and frozen yogurt factory that receives bulk milk and cream, blends ice cream mixes, ages them in tanks, fills into tubs (from 125 mL to 16 L), and packs finished goods for distribution. The plant operates across two sites with day and night shifts and uses TilliT for quality checks, CIP cleaning logs, 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 Sites

An ice cream factory may operate across more than one physical location. Each location becomes a site in TilliT.

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

| Field         | Example Value    |
| ------------- | ---------------- |
| Name          | Main Plant       |
| Timezone      | Pacific/Auckland |
| Location Code | MP               |

| Field         | Example Value    |
| ------------- | ---------------- |
| Name          | Secondary Plant  |
| Timezone      | Pacific/Auckland |
| Location Code | SP               |

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 yogurt and ice cream factory typically has the following asset classes:

| Asset Class    | Description                                                              |
| -------------- | ------------------------------------------------------------------------ |
| Room           | Logical groupings of equipment (mix room, production room, packing room) |
| Receiving Tank | Tanks for incoming bulk milk, cream, and liquid sugar                    |
| Mix Plant      | Mixing and pasteurising equipment                                        |
| Ageing Tank    | Tanks where ice cream mix ages before filling                            |
| Filling Line   | Tub filling and extrusion lines                                          |
| Freezer        | Spiral freezers and blast freezers                                       |
| Packing Room   | Packing areas including cartoning and palletising                        |
| Packing Line   | Robotic packing lines                                                    |
| Lab            | Laboratory for quality and micro testing                                 |
| CIP            | Clean-in-place systems                                                   |
| Tanker Arrival | Tanker receiving bays for bulk liquid                                    |

**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 equipment and areas at each site. In an ice cream factory the hierarchy follows the production flow: receiving -> mixing -> ageing -> filling -> freezing -> packing.

### Main Plant Site

```
Main Plant
├── MP Mix Room (class: Room)
│   ├── MP Receiving Tanks (class: Room)
│   │   ├── W3 (class: Receiving Tank)     ← milk
│   │   ├── W2 (class: Receiving Tank)     ← milk
│   │   ├── C1 (class: Receiving Tank)     ← cream
│   │   ├── C2 (class: Receiving Tank)     ← cream
│   │   └── Liquid Sugar (class: Receiving Tank)
│   ├── MP Tanker Arrival (class: Tanker Arrival)
│   └── MP Mix Plant (class: Mix Plant)
├── MP Ageing Tanks (class: Room)
│   ├── A1 through A10 (class: Ageing Tank)   ← 10 tanks
├── MP Production Room (class: Room)
│   ├── MP Spiral Line (class: Filling Line)    ← small tub line
│   ├── MP 2L Line (class: Filling Line)        ← 2-litre tub line
│   ├── MP 5L Line (class: Filling Line)        ← 5-litre tub line
│   ├── MP Bulk Line (class: Filling Line)      ← bulk (16L, 5L)
│   ├── MP Bulk Blast Line (class: Filling Line) ← blast-frozen bulk
│   └── MP Specialty Filler (class: Filling Line)       ← specialty filler
├── MP Packing Area (class: Packing Room)
│   ├── MP Packing Room (class: Packing Room)
│   └── MP Pack Unload (class: Packing Room)
├── MP Freezer (class: Freezer)
├── MP Laboratory (class: Lab)
└── MP CIP (class: CIP)
```

### Secondary Plant Site

```
Secondary Plant
├── SP Mix Room (class: Room)
│   ├── SP Receiving Tanks (class: Room)
│   │   ├── SP Silo 4 through Silo 7 (class: Receiving Tank)
│   │   └── SP Tanker Arrival (class: Tanker Arrival)
│   ├── SP Mix Plant (class: Mix Plant)
│   └── SP Ageing Tanks (class: Room)
│       └── SP A1 through A6 (class: Ageing Tank)   ← 6 tanks
├── SP Production Room (class: Room)
│   ├── SP Line One (class: Filling Line)
│   ├── SP Line Two (class: Filling Line)
│   ├── SP Line Three (class: Filling Line)
│   └── SP Bulk Line (class: Filling Line)
├── SP Packing Room (class: Room)
│   ├── SP Spiral Lane One (class: Freezer)
│   ├── SP Spiral Lane Two (class: Freezer)
│   ├── SP Robot 1 (class: Packing Line)
│   └── SP Robot 2 (class: Packing Line)
└── SP Laboratory (class: Lab)
```

### Key points

* **Receiving tanks** hold incoming bulk milk, cream, and liquid sugar from tankers.
* **Mix plant** blends and pasteurises the ice cream base mix.
* **Ageing tanks** store the blended mix for 4-24 hours at controlled temperature before filling.
* **Filling lines** vary by tub size - spiral lines handle small tubs (125 mL - 1 L), dedicated lines handle 2 L, 5 L, and bulk (16 L) formats.
* **Freezers** (spiral and blast) harden the product after filling.
* **Packing lines** include robotic cartoning, labelling, and palletising.
* **Shared assets** like the Laboratory and CIP systems sit at the top level.
* Use **Display Order** to control the sequence assets appear in the UI (e.g. 1000, 2000, 3000).

**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 site. An ice cream factory typically uses day and night shifts:

| Shift Template | Site            | Description                             |
| -------------- | --------------- | --------------------------------------- |
| Day Shift      | Main Plant      | Standard day shift (e.g. 06:00 - 18:00) |
| Night Shift    | Main Plant      | Night shift (e.g. 18:00 - 06:00)        |
| Day Shift      | Secondary Plant | Standard day shift (e.g. 06:00 - 18:00) |

The Main Plant site runs two shifts to cover 24-hour production during busy periods, while the Secondary Plant site may operate day shift only.

### 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., high-volume lines may run 24 hours while specialty lines run day shift only), 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                                           |
| -------------- | ----------------------------------------------------- |
| Kilogram       | Primary weight unit for ingredients and mixes         |
| Gram           | Smaller weight measurements (inclusions, flavourings) |
| Litre          | Volume for liquid ingredients and tank levels         |
| Tub            | Individual tub count                                  |
| Carton         | Cartons of finished goods                             |
| Each           | Individual items                                      |
| Degree Celsius | Temperature measurements                              |
| %              | Percentage (fat content, overrun, giveaway)           |
| Bar / Pa / kPa | Pressure measurements (homogeniser, pasteuriser)      |
| Kg/hr          | Flow rates (churn speed)                              |
| L/hr           | Liquid flow rates                                     |
| g/L            | Concentration measurements                            |

**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, semi-finished goods, and finished products. For an ice cream factory:

| Group               | Description                                                                                   |
| ------------------- | --------------------------------------------------------------------------------------------- |
| Raw Materials       | Bulk milk, cream, liquid sugar, water                                                         |
| Ingredients         | Flavourings, colours, stabilisers, emulsifiers, cultures, inclusions (cookies, nuts, ripples) |
| Ingredients-PRE     | Pre-aeration stage ingredients (added before freezing)                                        |
| Ingredients-POST    | Post-aeration stage ingredients (added after freezing - ripples, inclusions)                  |
| Semi-Finished Goods | Ice cream base mixes (plain, chocolate, premium, etc.)                                        |
| Packaging           | Tubs, lids, labels, cartons, pallets, shrink wrap                                             |
| Finished Goods      | Packaged ice cream, frozen yogurt, and sorbet products                                        |

**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" %}
Splitting ingredients into PRE and POST groups helps track consumption at the correct stage of the filling process - pre-aeration (into the mix) vs post-aeration (injected after the freezer barrel).
{% endhint %}
{% endstep %}

{% step %}

## Add Materials

Materials represent the specific items consumed or produced during ice cream manufacturing. An ice cream factory typically has hundreds of materials across groups.

#### Raw Materials

* **Fresh Bulk Milk** - incoming tanker milk
* **Fresh Bulk Cream** - incoming tanker cream
* **Liquid Sugar** - bulk liquid sugar
* **Water** - process water
* **Frozen Milk Concentrate** - concentrated milk solids
* **Whole Milk Powder** - dry milk powder

#### Ingredients (sample)

* **Stabilisers and emulsifiers** - xanthan gum, guar gum, emulsifier blends
* **Colours** - Beta-Carotene, Red Beet, Tartrazine
* **Flavourings** - Vanilla, Strawberry, Coffee, Banana, Toffee, Maple
* **Inclusions** - Cookie crumbs, chocolate chips, brownie pieces, nuts, marshmallows
* **Ripples** - Strawberry ripple, Chocolate ripple, Caramel ripple, Toffee ripple
* **Cultures** - yogurt starter culture (for frozen yogurt products)
* **Cocoa and chocolate** - Cocoa powder, chocolate flakes
* **Dry goods** - Sugar, Salt, Skim Milk Powder, Maltodextrin

#### Semi-Finished Goods (ice cream base mixes)

These are the pasteurised and aged mixes, typically categorised by brand and fat content:

* **Plain mix** - e.g. "Brand IC Mix Plain 10%", "Brand IC Mix Plain 14%"
* **Chocolate mix** - e.g. "Brand IC Mix Chocolate"
* **Specialty mixes** - e.g. "Green Tea 14%", "Burnt Butter 10%"
* **Shake/Soft serve mixes** - lower overrun mixes for milkshake and soft-serve products

### Finished Goods

Packaged products by brand, flavour, and pack size:

* **Ice cream tubs** - e.g. "Vanilla 6x2L", "Chocolate 2x5L", "Cookies & Cream 1x16L"
* **Frozen yogurt** - e.g. "Frozen Yoghurt Plain 2x5L", "Frozen Yoghurt Forestberry 2x5L"
* **Sorbet** - e.g. "Sorbet Berry Burst 2x5L", "Sorbet Mango 2x5L"
* **Specialty/Export** - e.g. export markets, premium ranges

**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 an ice cream plant, think of them as the product's digital "Product Specification Sheet" or identity card. They hold specific details about a work order (such as flavour, allergen status, recipe type, packaging format, etc), 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:

#### Product & Recipe

| Attribute        | Data Type | Purpose                                                   |
| ---------------- | --------- | --------------------------------------------------------- |
| Base Flavour     | STRING    | Base flavour of the mix (Vanilla, Chocolate, Plain, etc.) |
| Mix Code         | STRING    | Recipe/mix code identifier                                |
| Mix Flavour      | STRING    | Flavour name for the mix                                  |
| Mix Type         | STRING    | Mix classification (e.g. plain, chocolate, premium)       |
| Yoghurt Mix Type | STRING    | Yoghurt-specific mix classification                       |
| Species          | STRING    | Milk source species (cow, goat, etc.)                     |
| Brand            | STRING    | Product brand name                                        |
| Product Format   | STRING    | Format description (tub, bulk, soft-serve)                |
| Pack Size        | STRING    | Pack size configuration                                   |
| Shelf Life       | NUMBER    | Shelf life in days                                        |

#### Production Parameters

| Attribute             | Data Type | Purpose                               |
| --------------------- | --------- | ------------------------------------- |
| Tub Per Minute Target | NUMBER    | Line speed target                     |
| Cartons On Pallet     | NUMBER    | Cartons per pallet configuration      |
| TubsPerCarton         | NUMBER    | Tubs per carton count                 |
| Ageing Tank Count     | NUMBER    | Number of ageing tanks allocated      |
| Current Ageing Tank   | STRING    | Currently active ageing tank          |
| First Ageing Tank     | STRING    | First tank in the sequence            |
| Ageing Tanks Used     | STRING    | List of all tanks used for this order |
| Receiving Tank        | STRING    | Assigned receiving tank               |
| Churn Volume          | NUMBER    | Churn/freezer barrel volume           |

#### Temperature & Processing

| Attribute                            | Data Type | Purpose                             |
| ------------------------------------ | --------- | ----------------------------------- |
| First Divert Temp                    | NUMBER    | First divert temperature threshold  |
| Second Divert Temp                   | NUMBER    | Second divert temperature threshold |
| Homogenisation First Stage Pressure  | NUMBER    | Homogeniser first-stage pressure    |
| Homogenisation Second Stage Pressure | NUMBER    | Homogeniser second-stage pressure   |

#### Quality & Testing

| Attribute                 | Data Type | Purpose                               |
| ------------------------- | --------- | ------------------------------------- |
| Fat Results               | NUMBER    | Fat content test result               |
| Protein Results           | NUMBER    | Protein content test result           |
| Total Solids result       | NUMBER    | Total solids test result              |
| pH results                | NUMBER    | pH measurement                        |
| Overrun Result            | NUMBER    | Overrun percentage result             |
| Number of Sensory Testers | STRING    | How many sensory testers are required |
| Sample Collection Count   | NUMBER    | Number of samples to collect          |
| Pathogen Collection Count | NUMBER    | Number of pathogen samples required   |

#### Allergen Flags

| Attribute            | Data Type | Purpose                                 |
| -------------------- | --------- | --------------------------------------- |
| ContainsMilk         | BOOLEAN   | Product contains milk                   |
| ContainsEgg          | BOOLEAN   | Product contains egg                    |
| ContainsSoy          | BOOLEAN   | Product contains soy                    |
| ContainsGluten       | BOOLEAN   | Product contains gluten                 |
| ContainsTreeNuts     | BOOLEAN   | Product contains tree nuts              |
| ContainsInclusion    | BOOLEAN   | Product has solid inclusions            |
| ContainsRipple       | BOOLEAN   | Product has a ripple/swirl              |
| AllergenicIngredient | STRING    | Description of allergens present        |
| FormofAllergen       | STRING    | Form of allergen (powder, liquid, etc.) |
| AllergenTest         | BOOLEAN   | Allergen testing required               |

#### Market & Compliance

| Attribute         | Data Type | Purpose                      |
| ----------------- | --------- | ---------------------------- |
| isHalal           | BOOLEAN   | Halal-certified product      |
| IsChinaMarket     | BOOLEAN   | Destined for China market    |
| IsExportCustomerA | BOOLEAN   | Export customer A flag       |
| IsExportCustomerB | BOOLEAN   | Export customer B flag       |
| isYoghurt         | BOOLEAN   | Product is a yoghurt         |
| Batch             | STRING    | Batch number                 |
| Best Before Date  | STRING    | Best-before date             |
| Purchase Order    | STRING    | ERP purchase order reference |

#### Mix & Ingredient Control

| Attribute          | Data Type | Purpose                                 |
| ------------------ | --------- | --------------------------------------- |
| FlavouringRequired | BOOLEAN   | Whether flavouring is needed            |
| HasMembrane        | BOOLEAN   | Membrane filtration used                |
| Carbonator         | BOOLEAN   | Carbonation used                        |
| WaterAddition      | NUMBER    | Amount of water to add                  |
| Ingredient Feeder  | STRING    | Which ingredient feeder to use          |
| Aeration Stage     | STRING    | Aeration stage configuration            |
| Fermentation       | STRING    | Fermentation instructions (for yoghurt) |

**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.

#### Tank Monitoring

| Process Variable                       | UoM                    | Purpose                         |
| -------------------------------------- | ---------------------- | ------------------------------- |
| MP Ageing Tank 1-10 Level              | Litre                  | Tank fill level                 |
| MP Ageing Tank 1-10 Temperature        | Degree Celsius         | Tank temperature                |
| SP Ageing Tank 1-6 Level               | Litre                  | Tank fill level                 |
| SP Ageing Tank 1-6 Temperature         | Degree Celsius         | Tank temperature                |
| Receiving Tank Levels (W2, W3, C1, C2) | Litre                  | Milk and cream tank levels      |
| Receiving Tank Temperatures            | Degree Celsius         | Incoming liquid temperatures    |
| Liquid Sugar Tank Level                | Litre                  | Sugar tank level                |
| SP Silo 4-7 Level / Temperature        | Litre / Degree Celsius | Secondary Plant silo monitoring |
| Mix Tank 1 & 2 Level                   | Litre                  | Mix room tank levels            |

#### Quality Measurements

| Process Variable     | UoM  | Purpose                                |
| -------------------- | ---- | -------------------------------------- |
| Fat                  | %    | Fat content of mix or finished product |
| Protein              | %    | Protein content                        |
| Total Solids         | %    | Total solids content                   |
| pH                   | --   | Acidity measurement                    |
| Overrun              | %    | Air incorporation percentage           |
| Tub Weight           | Gram | Individual tub weight                  |
| Tub Inclusion Weight | Gram | Weight of inclusions per tub           |

#### Production Metrics

| Process Variable                | UoM  | Purpose                        |
| ------------------------------- | ---- | ------------------------------ |
| Giveaway %                      | %    | Product giveaway percentage    |
| 2L Giveaway                     | %    | Giveaway specific to 2L line   |
| Bulk Giveaway                   | %    | Giveaway specific to bulk line |
| Checkweigher results (per line) | Gram | Inline weight check data       |

#### Pasteuriser / Processing (Secondary Plant)

| Process Variable                 | UoM            | Purpose                              |
| -------------------------------- | -------------- | ------------------------------------ |
| SP Holding Tube Temperature      | Degree Celsius | CCP pasteurisation temperature       |
| SP Final Product Temperature     | Degree Celsius | Product temperature post-pasteuriser |
| SP Raw Product Pressure          | kPa            | Raw product pressure                 |
| SP Regeneration Section Pressure | kPa            | Regen section pressure               |
| SP Chilled Mix Pressure          | kPa            | Chilled mix pressure                 |
| SP Chilled Water Pressure        | kPa            | Chilled water pressure               |
| SP Spiral Freezer Temperature    | Degree Celsius | Spiral freezer temperature           |

**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 ageing tank assignments) will automatically pull the correct spec from the current work order.
{% endhint %}
{% endstep %}

{% step %}

## Create Activity Classes

Activity classes group related activity templates in the UI. For an ice cream factory:

| Activity Class                | Purpose                                                                             |
| ----------------------------- | ----------------------------------------------------------------------------------- |
| Tanker Checks                 | Incoming bulk liquid inspection, milkoscan, unloading                               |
| Mix Checks                    | Mixing room startup, ingredient issuance, transfers, CCP pasteuriser checks         |
| Flavour Team Checks           | Ageing tank startup, sample collection, flavouring, water specification             |
| Production Checks             | Filling line startup, weight checks, overrun, packaging checks, downtime            |
| Production Sample Collections | Micro samples, pathogen samples, retention samples, per-tank samples                |
| Quality Checks                | Sensory testing, metal detector tests, QC sign-offs                                 |
| Packing Room Checks           | Pack room startup, packaging quality, robotic packer checks, metal detection        |
| Lab Checks                    | pH calibration, fridge temperature, allergen tests, hygiene swabs, pathogen checks  |
| CIP                           | Cleaning logs, pre-clean checklists, weekly cleaning, machinery inspection          |
| Consumption                   | Ingredient consumption tracking (flavouring, packaging, returns)                    |
| General Checks                | Safety equipment, fridge temperature, daily tools check                             |
| Order Management              | Cancel order, changeover reason, suspended order reason                             |
| Supervisors                   | Staff rostering, head counts, order quantity updates                                |
| Yoghurt Checks                | Yoghurt-specific activities (culture addition, pH testing, fermentation monitoring) |

**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. An ice cream factory has a large number of templates covering every stage from tanker arrival through to packed goods.

### Core Activity Categories

#### Tanker & Receiving

| Activity                                | Triggered by         | Purpose                                                     |
| --------------------------------------- | -------------------- | ----------------------------------------------------------- |
| Incoming Bulk Liquid Inspection         | Tanker order start   | Visual and documentation checks on incoming tanker          |
| Incoming Bulk Liquid Milkoscan          | Tanker order running | Lab analysis of incoming milk/cream                         |
| Incoming Bulk Liquid Unloaded           | Tanker order end     | Confirm tanker unloaded, record volumes                     |
| Incoming Bulk Liquid Variance           | Tanker order end     | Record variance between delivery docket and received volume |
| Incoming Bulk Liquid Corrective Actions | Event-based          | Handle out-of-spec incoming liquid                          |
| Receiving Tank Record                   | Manual               | Log receiving tank levels and temperatures                  |
| Receiving Tank Reconciliation Record    | Manual               | Reconcile tank volumes against deliveries                   |

#### Mix Room

| Activity                         | Triggered by    | Purpose                                              |
| -------------------------------- | --------------- | ---------------------------------------------------- |
| Mix Start-up CCP Checks          | Mix order start | Critical control point checks for pasteuriser        |
| Mix Started                      | Mix order start | Confirm mix has started, record parameters           |
| Mix Temperature Checks           | Interval        | Monitor pasteurisation temperatures                  |
| Mix Homogeniser Pressure Check   | Interval        | Check homogeniser pressures                          |
| Mix Ingredient Issuance          | Mix order start | Issue ingredients from store to mix room             |
| Mix Ingredient Consumption       | Mix order end   | Record actual ingredient quantities consumed         |
| Mix Ingredient Dump Confirmation | Event-based     | Confirm ingredient additions                         |
| Ingredient Consumption Raw       | Mix order end   | Record raw material consumption (milk, cream, sugar) |
| Mix Transfer                     | Mix order end   | Transfer completed mix to ageing tank                |
| Halal Mix Pre-Start Checks       | Mix order start | Additional checks for Halal-certified products       |
| Mixing Room Daily Checks Sheet   | Shift start     | Daily housekeeping and readiness checks              |
| Mix Room Temperature Checks      | Interval        | Ambient temperature monitoring                       |
| Milk And Cream EOS Calculation   | End of shift    | End-of-shift milk and cream reconciliation           |

#### Ageing Tanks & Flavouring

| Activity                           | Triggered by       | Purpose                                           |
| ---------------------------------- | ------------------ | ------------------------------------------------- |
| Ageing Tank Start-up Checks        | Ageing order start | Confirm tank readiness, record initial conditions |
| Ageing Tank Process Checks         | Interval           | Monitor temperature and level during ageing       |
| Ageing Tank Level Record           | Interval           | Record tank level at regular intervals            |
| Ageing Tank Sample Collection      | Event-based        | Collect samples for lab testing                   |
| Ageing Tank Sample Quality Signoff | Event-based        | QC sign-off on ageing tank sample results         |
| Tank Flavour Sheet                 | Order start        | Record flavouring additions to aged mix           |
| Multistream Tank Flavour Sheet     | Order start        | Flavouring for multi-stream (blended) products    |
| Flavour Ingredient Issuance        | Order start        | Issue flavouring ingredients                      |
| Ageing Tank Water Addition         | Event-based        | Record water addition adjustments                 |
| Ageing Tank Order Complete         | Ageing order end   | Close out ageing tank order                       |
| Water Specification Sheet          | Order start        | Record water quality specs for the mix            |

#### Production / Filling

| Activity                           | Triggered by          | Purpose                                    |
| ---------------------------------- | --------------------- | ------------------------------------------ |
| Production Start-up Checks         | Filling order start   | Line readiness, equipment checks           |
| Production Line Setup              | Filling order start   | Record line configuration and settings     |
| Label and Inkjet Information Check | Filling order start   | Verify correct labels and inkjet codes     |
| Lid & Tub Information Record       | Filling order start   | Verify correct tub and lid for the product |
| Weight Check                       | Interval              | Tub weight checks against target           |
| Check Weigher Result               | Interval              | Inline checkweigher data capture           |
| Overrun                            | Interval              | Overrun (air incorporation) measurement    |
| Overrun Cup Test Start of Run      | Filling order start   | Initial overrun verification               |
| Product Taste and Appearance       | Interval              | Sensory check during production            |
| Inclusion Dosing                   | Filling order running | Record inclusion dosing rates              |
| Inclusion Monitoring               | Interval              | Monitor inclusion distribution             |
| Churn and Filler Information       | Filling order start   | Record churn/filler setup parameters       |
| Churn Breakdown                    | Event-based           | Record and log churn equipment failures    |
| Production Downtime                | Event-based           | Capture and categorise downtime events     |
| Post Production Check              | Filling order end     | End-of-run line checks and reconciliation  |
| Retention Sample                   | Filling order start   | Collect and log retention samples          |
| Barcode Label Scanner Check        | Filling order start   | Verify barcode scannability                |

#### Yoghurt-Specific

| Activity                          | Triggered by | Purpose                                    |
| --------------------------------- | ------------ | ------------------------------------------ |
| Yoghurt Culture Addition          | Order start  | Record culture addition to yoghurt mix     |
| Yoghurt Mix pH Testing            | Interval     | Monitor pH during fermentation             |
| Yoghurt Temperature Monitoring    | Interval     | Monitor fermentation temperature           |
| Yoghurt Mix Lactic Acid Addition  | Event-based  | Record lactic acid additions               |
| Yoghurt Sample Collection         | Event-based  | Collect samples for lab testing            |
| Yoghurt Sample Corrective Actions | Event-based  | Handle out-of-spec yoghurt samples         |
| Cultured Yoghurt Sampling         | Event-based  | Specific sampling for cultured products    |
| Yoghurt Blended Mix Transfer      | Order end    | Transfer blended yoghurt to ageing/filling |

#### Packing Room

| Activity                               | Triggered by | Purpose                                           |
| -------------------------------------- | ------------ | ------------------------------------------------- |
| Pack Room Order Received               | Order start  | Confirm packing room ready for incoming product   |
| Pack Room Packaging and Quality Checks | Interval     | Ongoing quality checks during packing             |
| Metal Detection Activated              | Event-based  | Record and investigate metal detector activations |
| Pack Room Daily Cleaning Checks        | Shift start  | Daily cleaning verification                       |
| Pack Room Chiller Inspection           | Shift start  | Check chiller temperatures                        |
| Pack Room Drain Inspection             | Shift start  | Check floor drains                                |
| Pack Room Post Production              | Order end    | End-of-order packing room checks                  |
| Pack Room Unload Confirmation          | Order end    | Confirm product unloaded from freezer             |

#### Quality & Lab

| Activity                                  | Triggered by  | Purpose                           |
| ----------------------------------------- | ------------- | --------------------------------- |
| Finished Product Sensory Check            | Order running | Formal sensory panel testing      |
| Sensory Tub Check (Testers 1-5)           | Order running | Individual tester scorecards      |
| Upper/Lower Belt CCP2 Metal Detector Test | Shift start   | Metal detector verification       |
| Lab Allergen Test Record                  | Event-based   | Record allergen testing results   |
| Lab Hygiene Swab Results                  | Scheduled     | Environmental monitoring results  |
| Lab pH Calibration                        | Shift start   | Calibrate pH meters               |
| Lab Fridge Temperature Check              | Shift start   | Lab fridge temperature logs       |
| Pathogen Swabbing Check                   | Scheduled     | Pathogen environmental monitoring |
| Lab Retention Sample Checks               | Scheduled     | Inspect stored retention samples  |

#### CIP & Cleaning

| Activity                               | Triggered by | Purpose                                         |
| -------------------------------------- | ------------ | ----------------------------------------------- |
| Pre-Clean Checklist (Daily)            | Shift start  | Pre-production cleaning checks                  |
| Production Cleaning Area (Daily)       | Shift end    | End-of-day production area cleaning             |
| Mix Room Cleaning Log                  | Event-based  | Record mix room CIP cycles                      |
| Weekly Cleaning                        | Scheduled    | Thorough weekly deep clean                      |
| Machinery Parts And O-Rings Inspection | Scheduled    | Inspect and record condition of seals and parts |
| Ageing Tank Acid Wash                  | Scheduled    | Periodic acid wash of ageing tanks              |
| Chemicals Check                        | Shift start  | Verify CIP chemical concentrations              |

#### Consumption Tracking

| Activity                             | Triggered by | Purpose                                |
| ------------------------------------ | ------------ | -------------------------------------- |
| Flavour Ingredient Consumption       | Order end    | Record flavouring ingredients consumed |
| Pack Room Goods Consumption          | Order end    | Record packaging materials consumed    |
| Ingredient Consumption Semi-Finished | Order end    | Record semi-finished goods consumed    |
| Mix Dry Goods Consumption            | Order end    | Record dry goods consumed in mix room  |
| Pack Room Return Consumption         | Order end    | Record packaging returns/waste         |
| Final Pack Room Carton Count         | Order end    | Final carton count reconciliation      |

### 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. mix startup CCP checks, weight checks, metal detector tests, production startup) and expand once the team is comfortable.
{% endhint %}
{% endstep %}

{% step %}

## Configure Order Templates

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

#### Main Plant - Spiral Line (small tub line)

| Order Template | Operation | From Asset     | To Asset        |
| -------------- | --------- | -------------- | --------------- |
| Spiral Line    | Filling   | MP Spiral Line | MP Spiral Line  |
| SpiralLAB      | Lab       | MP Spiral Line | MP Laboratory   |
| SpiralPack     | Pack      | MP Spiral Line | MP Packing Room |
| SpiralUnpack   | Unpack    | MP Spiral Line | MP Pack Unload  |

#### Main Plant - 2L Line

| Order Template | Operation | From Asset | To Asset        |
| -------------- | --------- | ---------- | --------------- |
| 2L Line        | Filling   | MP 2L Line | MP 2L Line      |
| 2LPack         | Pack      | MP 2L Line | MP Packing Room |
| 2LUnpack       | Unpack    | MP 2L Line | MP Pack Unload  |
| 2L Lab         | Lab       | MP 2L Line | MP Laboratory   |

#### Main Plant - 5L Line

| Order Template | Operation | From Asset | To Asset        |
| -------------- | --------- | ---------- | --------------- |
| 5L Line        | Filling   | MP 5L Line | MP 5L Line      |
| 5LPack         | Pack      | MP 5L Line | MP Packing Room |
| 5LUnpack       | Unpack    | MP 5L Line | MP Pack Unload  |
| 5L Lab         | Lab       | MP 5L Line | MP Laboratory   |

#### Main Plant - Bulk Line

| Order Template | Operation | From Asset   | To Asset        |
| -------------- | --------- | ------------ | --------------- |
| Bulk Line      | Filling   | MP Bulk Line | MP Bulk Line    |
| BulkPack       | Pack      | MP Bulk Line | MP Packing Room |
| BulkUnload     | Unpack    | MP Bulk Line | MP Pack Unload  |
| Bulk Lab       | Lab       | MP Bulk Line | MP Laboratory   |

#### Main Plant - Supporting Operations

| Order Template    | Operation | From Asset        | To Asset          |
| ----------------- | --------- | ----------------- | ----------------- |
| MP Mix Room       | Mix Room  | MP Mix Room       | MP Mix Plant      |
| MP Tanker Arrival | Tanker    | MP Tanker Arrival | MP Tanker Arrival |
| Yoghurt Blend     | Ageing    | MP Ageing Tanks   | MP Ageing Tanks   |

#### Secondary Plant - Filling Lines

| Order Template | Operation | From Asset    | To Asset      |
| -------------- | --------- | ------------- | ------------- |
| SP Line One    | Filling   | SP Line One   | SP Line One   |
| SP Line Two    | Filling   | SP Line Two   | SP Line Two   |
| SP Line Three  | Filling   | SP Line Three | SP Line Three |
| SP Bulk Line   | Filling   | SP Bulk Line  | SP Bulk Line  |

#### Secondary Plant - Supporting Operations

| Order Template        | Operation | From Asset        | To Asset          |
| --------------------- | --------- | ----------------- | ----------------- |
| SP Mix Room           | Mix       | SP Mix Room       | SP Mix Plant      |
| SP Tanker Arrival     | Tanker    | SP Tanker Arrival | SP Tanker Arrival |
| SP Tanker Arrival Lab | Lab       | SP Tanker Arrival | SP Laboratory     |

### Key points

* **Filling lines** are the primary work order assets - the order is created against the line and cascades to child operations (Lab, Pack, Unpack).
* **Mix Room** orders track the mixing and pasteurising process separately from filling.
* **Tanker Arrival** orders track incoming raw material deliveries.
* **Yoghurt Blend** uses the ageing operation type for yoghurt-specific fermentation and blending.
* **Unpack** operations track product leaving the freezer and entering the packing area.

**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 key asset becomes a piece of equipment in the Scheduler. The full list for a two-site ice cream operation:

| Equipment (Name)    | External ID (Code)  | Display Order |
| ------------------- | ------------------- | ------------- |
| SP Tanker Arrival   | SP Tanker Arrival   | 1             |
| SP Mix Room         | SP Mix Room         | 5             |
| MP Tanker Arrival   | MP Tanker Arrival   | 5             |
| SP Line One         | SP Line One         | 10            |
| MP Mix Room         | MP Mix Room         | 11            |
| MP Ageing Tanks     | MP Ageing Tanks     | 12            |
| MP Spiral Line      | MP Spiral Line      | 13            |
| MP Specialty Filler | MP Specialty Filler | 14            |
| MP 2L Line          | MP 2L Line          | 15            |
| MP 5L Line          | MP 5L Line          | 17            |
| MP Bulk Line        | MP Bulk Line        | 18            |
| SP Line Two         | SP Line Two         | 20            |
| MP Bulk Blast Line  | MP Bulk Blast Line  | 20            |
| SP Line Three       | SP Line Three       | 30            |
| SP Bulk Line        | SP Bulk Line        | 40            |

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 an ice cream factory:

| Template (Code)            | Description                         | Hours         |
| -------------------------- | ----------------------------------- | ------------- |
| Day Shift                  | Standard day shift, Mon-Fri         | 06:00 - 18:00 |
| Day & Night (24hr)         | Two-shift 24-hour coverage, Mon-Fri | 06:00 - 06:00 |
| Day Only (Secondary Plant) | Single day shift for smaller site   | 06:00 - 18:00 |

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 ice cream manufacturing:

| Property (Name)  | Example Values                                   | Purpose                                           |
| ---------------- | ------------------------------------------------ | ------------------------------------------------- |
| Base Flavour     | Plain, Chocolate, Strawberry, Coffee, Yoghurt... | Flavour drives cleaning requirements between runs |
| Mix Type         | Standard, Premium, Organic, Halal, Sorbet        | Mix type affects tank and line compatibility      |
| Allergen Profile | Contains Egg, Contains Nuts, Contains Gluten     | Allergen changes require thorough cleaning        |
| Pack Size        | 125mL, 470mL, 1L, 2L, 5L, 16L                    | Pack size determines which line the order runs on |
| Brand            | Brand A, Brand B, Brand C, Brand D               | Brand-specific packaging and settings             |

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 ice cream:**

* **Same flavour to same flavour** - 0 minutes (no changeover needed)
* **Light to dark colour** - shorter changeover (e.g. vanilla to chocolate: 30 minutes)
* **Dark to light colour** - longer changeover requiring rinse (e.g. chocolate to vanilla: 60 minutes)
* **Non-allergen to allergen** - standard changeover
* **Allergen to non-allergen** - full CIP required (e.g. 90-120 minutes)
* **Halal to non-Halal or vice versa** - full CIP required
* **Inclusion change** - moderate changeover for hopper cleanout (e.g. 30-45 minutes)
* **Pack size change** - line adjustment time varies by format

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 (milk, cream, sugar, cultures)
              ├── Produced material   -- the one finished good this operation makes
              └── Run rate            -- throughput in units per second
```

For each finished good, create an operation with a single **Fill and Pack** segment that:

* **consumes** its components - e.g., *Vanilla 6x2L* consumes the aged plain ice cream mix, vanilla flavouring, 2L tubs, lids, and outer cartons;
* **produces** the one finished good (the SKU);
* declares a **run rate** in units (tubs) per second. The scheduler derives an order's duration from `quantity ÷ run rate` (e.g., 5,000 tubs at 1.4 tubs/s ≈ 1 hour of run time, before changeovers). Smaller retail formats (e.g., 125mL) typically run at a faster rate than larger bulk formats (e.g., 2L or 5L); and
* declares an **equipment requirement**. Match the segment to an **equipment class** (e.g., *Filling Lines*) rather than a single line, so the scheduler can place the order on **any** compatible 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 ice cream factories, work orders originate in an ERP system (SAP, Microsoft NAV/BC, 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": 5000,
    "defaultRunRate": 80,
    "status": "NEW",
    "name": "Vanilla 6x2L",
    "asset": "MP 2L Line",
    "material": {
      "externalId": "FG-VAN-2L-6PK",
      "name": "Vanilla Ice Cream 6x2L"
    },
    "attributes": [
      { "attributeName": "Base Flavour", "value": "Vanilla" },
      { "attributeName": "Brand", "value": "Brand A" },
      { "attributeName": "Mix Code", "value": "MIX-PLAIN-10" },
      { "attributeName": "Mix Type", "value": "Plain" },
      { "attributeName": "Pack Size", "value": "6x2L" },
      { "attributeName": "TubsPerCarton", "value": "6" },
      { "attributeName": "Cartons On Pallet", "value": "60" },
      { "attributeName": "Tub Per Minute Target", "value": "40" },
      { "attributeName": "Shelf Life", "value": "365" },
      { "attributeName": "ContainsMilk", "value": "true" },
      { "attributeName": "ContainsEgg", "value": "true" },
      { "attributeName": "ContainsSoy", "value": "false" },
      { "attributeName": "ContainsGluten", "value": "false" },
      { "attributeName": "ContainsTreeNuts", "value": "false" },
      { "attributeName": "ContainsInclusion", "value": "false" },
      { "attributeName": "ContainsRipple", "value": "false" },
      { "attributeName": "isHalal", "value": "false" },
      { "attributeName": "isYoghurt", "value": "false" },
      { "attributeName": "FlavouringRequired", "value": "true" },
      { "attributeName": "Ageing Tank Count", "value": "2" },
      { "attributeName": "First Ageing Tank", "value": "A1" },
      { "attributeName": "Current Ageing Tank", "value": "A1" },
      { "attributeName": "Species", "value": "Cow" }
    ],
    "tolerances": [
      { "processVariableName": "Tub Weight", "target": 2050, "lowerLimit": 2030, "upperLimit": 2070 },
      { "processVariableName": "Fat", "target": 10.0, "lowerLimit": 9.5, "upperLimit": 10.5 },
      { "processVariableName": "Overrun", "target": 90, "lowerLimit": 80, "upperLimit": 100 }
    ],
    "orderComponents": [
      { "componentExternalId": "MIX-PLAIN-10", "componentGroup": "Semi-Finished Goods", "componentName": "IC Mix Plain 10%", "target": 3000 },
      { "componentExternalId": "FLV-VANILLA", "componentGroup": "Ingredients", "componentName": "Vanilla Flavour", "target": 15 },
      { "componentExternalId": "PKG-TUB-2L-VAN", "componentGroup": "Packaging", "componentName": "Vanilla 2L Tub", "target": 5100 },
      { "componentExternalId": "PKG-LID-2L-VAN", "componentGroup": "Packaging", "componentName": "Vanilla 2L Lid", "target": 5100 },
      { "componentExternalId": "PKG-CTN-6x2L", "componentGroup": "Packaging", "componentName": "Outer Carton 6x2L", "target": 850 }
    ]
  }
]
```

### Key points

* **`asset`** - set to the filling line name. If order templates are configured ([Step 12](#configure-order-templates)), the order will automatically cascade to child operations (Lab, Pack, Unpack).
* **`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. Components include the semi-finished mix, flavourings, inclusions, and packaging.
* **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                                   |
| ----------------- | ------------------------------------------------------------------------------------------- | ----------------------------------------- |
| Product identity  | Base Flavour, Brand, Mix Code, Mix Type, Species, Pack Size                                 | Identify the product and its recipe       |
| Production params | Tub Per Minute Target, Cartons On Pallet, TubsPerCarton, Shelf Life                         | Line configuration                        |
| Tank management   | Ageing Tank Count, First Ageing Tank, Current Ageing Tank, Receiving Tank                   | Track which tanks are allocated           |
| Temperature       | First Divert Temp, Second Divert Temp                                                       | Pasteuriser divert settings               |
| Allergens         | ContainsMilk, ContainsEgg, ContainsSoy, ContainsGluten, ContainsTreeNuts, ContainsInclusion | Allergen management and cleaning triggers |
| Market/Compliance | isHalal, IsChinaMarket, IsExportCustomerA, isYoghurt                                        | Regulatory and customer requirements      |
| Mix control       | FlavouringRequired, HasMembrane, WaterAddition, Ingredient Feeder                           | Mix room configuration                    |
| Quality           | Sample Collection Count, Pathogen Collection Count, Number of Sensory Testers               | Testing requirements                      |

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).
{% 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 filling line where you want to run the order (e.g. MP Spiral Line)
2. Click **Create Order**
3. Select the material (finished good) to produce (e.g. Vanilla Ice Cream 6x2L)
4. Enter the quantity (e.g. 5000 tubs)
5. Fill in the order number attributes (ageing tank, allergens, Halal status, flavouring)
6. Start the order

When the order starts, TilliT will automatically trigger the configured activities (production startup checks, weight checks, sensory samples, etc.) and the order will flow through each operation 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.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 (flavour, allergen, pack size)
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:

* [ ] Sites created (Main Plant, Secondary Plant) with correct timezone
* [ ] Asset classes defined (Room, Receiving Tank, Mix Plant, Ageing Tank, Filling Line, Freezer, Packing Room, Packing Line, Lab, CIP, Tanker Arrival)
* [ ] Assets created with correct parent-child hierarchy across both sites
* [ ] Shift templates configured (Day Shift, Night Shift per site)
* [ ] Units of measure defined (Kilogram, Litre, Tub, Carton, Degree Celsius, %, etc.)
* [ ] Material groups created (Raw Materials, Ingredients, Ingredients-PRE, Ingredients-POST, Semi-Finished Goods, Packaging, Finished Goods)
* [ ] Materials loaded (milk, cream, flavourings, inclusions, mixes, packaging, finished goods)
* [ ] Attributes defined (product, allergen, production, temperature, market/compliance)
* [ ] Process variables configured (tank levels, temperatures, fat, protein, pH, overrun, weight)
* [ ] Activity classes created
* [ ] Activity templates built and triggers configured (tanker, mix, ageing, production, packing, quality, CIP, yoghurt)
* [ ] Order templates mapped for each line (Filling, Lab, Pack, Unpack operations)
* [ ] Scheduler equipment created for both sites
* [ ] Availability templates configured and assigned
* [ ] Optimisation properties defined (Base Flavour, Mix Type, Allergen, Pack Size, Brand)
* [ ] Changeover rules entered (flavour, allergen, inclusion, pack size)
* [ ] 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)
