Salad Dressing Factory
Prerequisites
3
Build the Asset Hierarchy
Sauce & Dressing Plant
├── Prepping & Cooking (class: Area)
│ ├── Prep Area (class: Preppers)
│ ├── Kettle 1 (class: Kettles)
│ ├── Kettle 2 (class: Kettles)
│ ├── Kettle 3 (class: Kettles)
│ ├── Kettle 4 (class: Kettles)
│ ├── Holding Tank 1 (class: Tanks)
│ ├── Holding Tank 2 (class: Tanks)
│ ├── Holding Tank 3 (class: Tanks)
│ └── Holding Tank 4 (class: Tanks)
├── Production (class: Area)
│ ├── Glass Line (class: Area)
│ │ ├── Depalletiser (class: Depalletisers)
│ │ ├── Filler (class: Fillers)
│ │ ├── Capper (class: Cappers)
│ │ ├── Labeller (class: Labellers)
│ │ ├── Carton Overpacker (class: Packers)
│ │ └── Palletiser (class: Palletisers)
│ ├── Bulk Line (class: Fillers) ← fills 2 kg – 10 kg containers
│ ├── Portion Control Line 1 (class: Fillers) ← fills cups 13 mL – 45 mL
│ └── Portion Control Line 2 (class: Fillers) ← fills cups 13 mL – 45 mL
└── QA (class: Area) ← shared quality assuranceKey points
4
8
Define Attributes
Order Number Attributes
Product & Batch
Attribute
Data Type
Purpose
Label & Coding
Attribute
Data Type
Purpose
Holding Tank Settings
Attribute
Data Type
Purpose
Filler Settings
Attribute
Data Type
Purpose
Capping & Sealing
Attribute
Data Type
Purpose
Washing & Sterilisation
Attribute
Data Type
Purpose
Pallet Configuration
Attribute
Data Type
Purpose
Bin Tracking (portion control lines)
Attribute
Data Type
Purpose
Quality & Compliance
Attribute
Data Type
Purpose
9
11
Build Activity Templates
Core Activity Categories
Preparation & Cooking
Activity
Triggered by
Purpose
Holding Tank Monitoring
Activity
Triggered by
Purpose
Glass Line
Activity
Triggered by
Purpose
Bulk Line
Activity
Triggered by
Purpose
Portion Control Lines
Activity
Triggered by
Purpose
Quality & Safety
Activity
Triggered by
Purpose
Cleaning
Activity
Triggered by
Purpose
Building an activity template
12
13
Configure Edge Integration (Kepware OPC-UA)
3
4
7
Create Data Tags
Kettle temperatures
Name
Asset
Source Address
Data Type
Process Variable
Options
Kettle status
Name
Asset
Source Address
Data Type
Template
Holding tank monitoring
Name
Asset
Source Address
Data Type
Process Variable
Options
Glass Line
Name
Asset
Source Address
Data Type
Template / PV
Options
Bulk Line and Portion Control Lines
Name
Asset
Source Address
Data Type
Template / PV
14
Integrate Order Loading from ERP
Order Payload Structure
[
{
"orderNumber": "WO-20260101-001",
"orderDate": "2026-01-01",
"dueDate": "2026-01-02",
"scheduledStart": "2026-01-02T06:00:00",
"scheduledEnd": "2026-01-02T14:00:00",
"quantityTarget": 3600,
"defaultRunRate": 60,
"status": "NEW",
"name": "French Dressing 300mL",
"asset": "Glass Line",
"material": {
"externalId": "FG-FRENCH-300",
"name": "French Dressing 300mL"
},
"attributes": [
{ "attributeName": "Batch", "value": "BT-20260102-001" },
{ "attributeName": "Shelf Life", "value": "365" },
{ "attributeName": "Label Date Coding - Format", "value": "DDMMYYYY" },
{ "attributeName": "Label Date Coding - Location", "value": "Cap" },
{ "attributeName": "Print Message Primary Label", "value": "Best Before: " },
{ "attributeName": "Print Message Outer Carton", "value": "French Dressing 12x300mL" },
{ "attributeName": "Product EAN Barcode", "value": "9300001000001" },
{ "attributeName": "Carton TUN Barcode", "value": "09300001000001" },
{ "attributeName": "Carton Format", "value": "12pk" },
{ "attributeName": "Carton Dividers", "value": "No" },
{ "attributeName": "Holding Tank Temperature - Target", "value": "75" },
{ "attributeName": "Holding Tank Temperature - Min", "value": "70" },
{ "attributeName": "Holding Tank Temperature - Max", "value": "80" },
{ "attributeName": "Holding Tank Stirrer Function", "value": "Low" },
{ "attributeName": "Fill Weight (g)", "value": "310" },
{ "attributeName": "Fill Temperature Min", "value": "70" },
{ "attributeName": "Fill Temperature Max", "value": "80" },
{ "attributeName": "Filler Speed", "value": "60" },
{ "attributeName": "Filling Program", "value": "P12" },
{ "attributeName": "Sealing/Capping - Description", "value": "Twist Cap 63mm" },
{ "attributeName": "Sealing/Capping - Integrity Test", "value": "Pop Test" },
{ "attributeName": "Sealing/Capping - Limits (bar/kPa) Min", "value": "0.2" },
{ "attributeName": "Sealing/Capping - Limits (bar/kPa) Max", "value": "0.5" },
{ "attributeName": "Wash Tunnel Settings - Temperature", "value": "85" },
{ "attributeName": "Jar Prewarmer", "value": "On" },
{ "attributeName": "UV Steriliser", "value": "On" },
{ "attributeName": "Crack Detection Unit", "value": "Active" },
{ "attributeName": "Pallet Brand to Use", "value": "Standard CHEP" },
{ "attributeName": "Pallet Wrap", "value": "Yes" },
{ "attributeName": "Cleaning / Allergen Instructions", "value": "Allergen free - standard rinse" }
],
"tolerances": [
{ "processVariableName": "Fill Weight", "target": 310, "lowerLimit": 305, "upperLimit": 315 },
{ "processVariableName": "Fill Temperature", "target": 75, "lowerLimit": 70, "upperLimit": 80 },
{ "processVariableName": "Brix", "target": 18.0, "lowerLimit": 17.0, "upperLimit": 19.0 },
{ "processVariableName": "pH", "target": 3.8, "lowerLimit": 3.5, "upperLimit": 4.1 }
],
"orderComponents": [
{ "componentExternalId": "SFG-FRENCH-BASE", "componentGroup": "Semi-Finished Goods", "componentName": "French Dressing Base", "target": 1100 },
{ "componentExternalId": "PKG-GLS-300-FRENCH", "componentGroup": "Glass", "componentName": "300mL Jar", "target": 3700 },
{ "componentExternalId": "PKG-CAP-63-TWIST", "componentGroup": "Caps", "componentName": "63mm Twist Cap", "target": 3700 },
{ "componentExternalId": "PKG-LAB-FRENCH-300", "componentGroup": "Labels", "componentName": "French Dressing 300mL Label", "target": 3700 },
{ "componentExternalId": "PKG-CTN-12PK-300", "componentGroup": "Cartons", "componentName": "12pk Outer Carton", "target": 310 }
]
}
]Key points
Typical attribute categories in the payload
Category
Attributes
Purpose
Summary Checklist
Related Articles
Last updated