CSV Order Import
This guide describes the default CSV order import. It watches a configured folder for .csv files, imports all CSV files in sorted filename order, and then moves successful files to the archive folder. Failed files are moved to an error folder together with an .error.txt file.
System Settings
The settings are in the Integration system settings group.
| Setting | Default | Description |
|---|---|---|
| Order Import Path | empty | Folder watched for CSV files. When empty, the watcher is stopped. When set, the watcher starts automatically. |
| Order Import Archive Path | c:/eton/import/archive |
Folder where successfully imported CSV files are moved. If empty, successfully imported files are deleted. |
| Order Import Date Formats | yyyy-MM-dd HH:mm, yyyy-MM-dd |
List of date formats tried in order when parsing date columns. |
| Order Import Delimiter | ; |
Field delimiter used by the default CSV order import. |
The import path setting controls the watcher:
| Import path value | Watcher behavior |
|---|---|
| Empty or whitespace | Watcher is disabled/stopped. |
| Non-empty folder path | Watcher is enabled and attempts to import .csv files from the folder. |
File Format
The default delimiter is semicolon (;). The first row must contain column names. Column names are case-insensitive.
The examples below are shown as tables for readability. Each table represents one CSV file: the table headers are the CSV header row, and each table row is one CSV data row.
| OrderNumber | OrderLineNumber | Quantity | ArticleNumber |
|---|---|---|---|
| 10001 | 1 | 25 | 500101 |
Empty rows are ignored. Rows that contain order data but no orderline data are kept only as the current order header/context. They are not imported as standalone orders. Every imported order must have at least one orderline by the end of the file.
Escaping Values
If a value contains the field delimiter, a line break, or a double quote ("), wrap the whole value in double quotes.
Inside a quoted value, write a double quote as two double quotes ("").
| Intended value | CSV value |
|---|---|
ABC;123 |
"ABC;123" |
ABC"123 |
"ABC""123" |
ABC;"123" |
"ABC;""123""" |
Example with article numbers that contain the delimiter and quote characters:
OrderNumber;OrderLineNumber;Quantity;ArticleNumber
10001;1;25;"ART;500101"
10001;2;10;"ART""500102"
Minimal Import
This is the smallest useful file: one order, one orderline, one article.
| OrderNumber | OrderLineNumber | Quantity | ArticleNumber |
|---|---|---|---|
| 10001 | 1 | 25 | 500101 |
Actual CSV file content:
OrderNumber;OrderLineNumber;Quantity;ArticleNumber
10001;1;25;500101
Result:
| Entity | Value |
|---|---|
| Order | 10001 |
| Orderline | 1 |
| Quantity | 25 |
| Article | 500101 |
Multiple Orderlines On One Order
Repeat the order number for each orderline.
| OrderNumber | OrderLineNumber | Quantity | ArticleNumber |
|---|---|---|---|
| 10001 | 1 | 25 | 500101 |
| 10001 | 2 | 10 | 500102 |
The import creates one order with two orderlines.
Header Row With Continued Orderlines
You can put order data on a header row and then list orderlines below it. The header row only provides context; it does not create an order by itself. Rows without order data are attached to the last order row.
| OrderNumber | OrderDate | DeliveryDate | OrderLineNumber | Quantity | ArticleNumber |
|---|---|---|---|---|---|
| 20001 | 2026-07-08 10:00 | 2026-07-20 | |||
| 1 | 15 | 600101 | |||
| 2 | 20 | 600102 |
Because row 2 and row 3 omit OrderNumber, they continue using order 20001.
If an order header is never followed by an orderline row, that order is not imported.
Multiple Orders In One File
Start a new order by specifying a new order number.
| OrderNumber | OrderDate | OrderLineNumber | Quantity | ArticleNumber |
|---|---|---|---|---|
| 30001 | 2026-07-08 | 1 | 5 | 700101 |
| 30001 | 2026-07-08 | 2 | 8 | 700102 |
| 30002 | 2026-07-09 | 1 | 6 | 700201 |
Dates
Date columns are parsed using the Order Import Date Formats setting. The default accepts:
| Example | Format |
|---|---|
2026-07-08 10:00 |
yyyy-MM-dd HH:mm |
2026-07-08 |
yyyy-MM-dd |
Example:
| OrderNumber | OrderDate | DeliveryDate | FirstManufacturingDate | OrderLineNumber | Quantity | ArticleNumber |
|---|---|---|---|---|---|---|
| 40001 | 2026-07-08 08:00 | 2026-07-15 | 2026-07-09 | 1 | 25 | 800101 |
Aliases
The preferred column names avoid dots and use the entity/property name where that is unambiguous. Older dotted names and a few short names are still accepted as aliases.
| Order | Orderline | Quantity | Article | Bulk factor |
|---|---|---|---|---|
| 50001 | 1 | 12 | 900101 | 1.5 |
This is equivalent to:
| OrderNumber | OrderLineNumber | Quantity | ArticleNumber | BulkFactor |
|---|---|---|---|---|
| 50001 | 1 | 12 | 900101 | 1.5 |
Custom Fields
Custom fields can be imported for orders, orderlines, articles, and article groups.
Use scoped prefixes when a row contains both order and orderline data:
| OrderNumber | OrderLineNumber | Quantity | ArticleNumber | Order.Custom:Customer | Orderline.Custom:Batch |
|---|---|---|---|---|---|
| 60001 | 1 | 25 | 910101 | Acme | B-100 |
This creates:
| Scope | Custom field | Value |
|---|---|---|
| Order | Customer |
Acme |
| Orderline | Batch |
B-100 |
Bare Custom: is allowed only when the row is unambiguous:
| OrderNumber | OrderDate | Custom:Customer |
|---|---|---|
| 60002 | 2026-07-08 | Acme |
Do not use bare Custom: on a row that contains both order and orderline data. The import rejects that because it cannot know whether the value belongs to the order or the orderline.
Criteria
Use Criteria:{type} or Orderline.Criteria:{type} to add criteria to an orderline.
| OrderNumber | OrderLineNumber | Quantity | ArticleNumber | Criteria:SIZE | Criteria:COLOR |
|---|---|---|---|---|---|
| 70001 | 1 | 10 | 920101 | M | NAVY |
This adds orderline criteria:
| Criteria type | Value |
|---|---|
SIZE |
M |
COLOR |
NAVY |
For Criteria:{type}, colons inside the type name are converted to spaces. For Orderline.Criteria:{type}, colons inside the type name are converted to hyphens.
Routes
Routes must already exist in the system. If a referenced route is missing, the import fails.
| OrderNumber | OrderLineNumber | Quantity | ArticleNumber | Route |
|---|---|---|---|---|
| 80001 | 1 | 10 | 930101 | Main Route |
Route sets the route on the orderline. Article.Route sets the default route on the imported article.
Article Groups
Use ArticleGroup to assign an article group by name.
| OrderNumber | OrderLineNumber | Quantity | ArticleNumber | ArticleGroup |
|---|---|---|---|---|
| 90001 | 1 | 10 | 940101 | Jackets |
Article group custom fields can be provided with ArticleGroup.Custom:{field}.
| OrderNumber | OrderLineNumber | Quantity | ArticleNumber | ArticleGroup | ArticleGroup.Custom:Season |
|---|---|---|---|---|---|
| 90002 | 1 | 10 | 940102 | Jackets | AW26 |
Advanced Example
This example combines order header rows, continued orderline rows, dates, criteria, custom fields, article groups, and routes.
| OrderNumber | OrderDate | DeliveryDate | Order.Custom:Customer | OrderLineNumber | Quantity | Express | ArticleNumber | ArticleDescription | BulkFactor | ArticleGroup | Route | Criteria:SIZE | Criteria:COLOR | Orderline.Custom:Batch |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 91001 | 2026-07-08 10:00 | 2026-07-20 | Acme | |||||||||||
| 1 | 15 | false | 950101 | Blue jacket | 1.0 | Jackets | Main Route | M | NAVY | B-91001-1 | ||||
| 2 | 20 | true | 950102 | Black jacket | 1.5 | Jackets | Main Route | L | BLACK | B-91001-2 | ||||
| 91002 | 2026-07-09 | 2026-07-21 | Northwind | |||||||||||
| 1 | 12 | false | 950201 | White shirt | 1.0 | Shirts | Main Route | S | WHITE | B-91002-1 |
Column Reference
Order Columns
| Column | Alias | Type | Description |
|---|---|---|---|
OrderNumber |
Order.Number, Order |
Text/number | Required to start a new order. |
Customer |
Order.Customer |
Text | Customer value on the order. |
OriginalOrderNumber |
Order.OriginalNumber, Original order number |
Text | Original order number. |
OrderDate |
Order.OrderDate, Order.Date, Order date |
Date | Order date. |
DeliveryDate |
Order.DeliveryDate, Delivery date |
Date | Delivery date. |
FirstManufacturingDate |
Order.FirstManufacturingDate, First manufacturing date |
Date | First manufacturing date. |
Order.Custom:{field} |
Custom:{field} on order-only rows |
Text | Order custom field. |
Orderline Columns
| Column | Alias | Type | Description |
|---|---|---|---|
OrderLineNumber |
Orderline.Number, Orderline |
Text/number | Orderline number. If omitted on an orderline row, a sequence number is assigned. |
OriginalOrderLineNumber |
Orderline.OriginalNumber, Original order line number |
Text | Original orderline number. |
Quantity |
Orderline.Quantity |
Integer | Required for orderline rows. |
Express |
Orderline.Express |
Boolean | true or false. Defaults to false when omitted. |
OrderLineRoute |
Orderline.Route, Route |
Text | Existing route name to use for this orderline. |
Orderline.Custom:{field} |
Custom:{field} on orderline-only rows |
Text | Orderline custom field. |
Orderline.Criteria:{type} |
Criteria:{type} |
Text/number | Orderline criteria. Numeric values also become criteria codes. |
Article Columns
| Column | Alias | Type | Description |
|---|---|---|---|
ArticleNumber |
Article.Number, Article |
Text/number | Article number for the orderline. |
ArticleDescription |
Article.Description |
Text | Article description. |
BulkFactor |
Article.BulkFactor, Bulk factor |
Decimal | Article bulk factor. Defaults to 1. |
ArticleRoute |
Article.Route |
Text | Existing route name to assign as the article route. |
Article.Custom:{field} |
Text | Article custom field. |
Article Group Columns
| Column | Alias | Type | Description |
|---|---|---|---|
ArticleGroup |
Text | Article group name. | |
ArticleGroup.Custom:{field} |
Text | Article group custom field. |
Validation Rules
| Rule | Result |
|---|---|
| Empty rows | Ignored. |
| Rows without order data and without orderline data | Ignored. |
| Order-only rows | Used as headers/context for following orderline rows. They are not imported as standalone orders. |
| Order with no imported orderlines | Not imported. If the file contains no new orderlines at all, import fails. |
| Orderline row before any order row | Import error. |
Bare Custom: on a row with both order and orderline data |
Import error. |
| Duplicate orderline numbers within the same imported order | Import error. |
| Imported orderline already exists in the system | Import error. |
| Referenced route does not exist | Import error. |
| No new orderlines found | Import error. |
File Processing
- Put one or more
.csvfiles in the configured import path. - The watcher waits briefly so files can finish copying.
- Files are imported in sorted filename order.
- Successful files are moved to the archive folder.
- Failed files are moved to
{ImportPath}/error/{timestamp}with an.error.txtfile.
Troubleshooting
| Symptom | Likely cause |
|---|---|
| Nothing imports and watcher does not run | Order Import Path is empty. |
| File goes to error with "No new order lines found" | The file has no recognized orderline rows, or all orderlines already exist. Check delimiter and column names. |
| File goes to error with route message | The route name in Route, OrderLineRoute, Orderline.Route, ArticleRoute, or Article.Route does not exist. |
| Date parse error | Add the date format to Order Import Date Formats or change the CSV date value. |
| Columns are ignored | Column name does not match the supported names or aliases. |