Add or update machines and tags in bulk by uploading a CSV file.
How Upload Works
CSV uploads use an intelligent merge strategy:
New entries are created (e.g., a machine in the CSV that does not yet exist in the workspace)
Existing entries are updated if any values differ from the current state
Entries not in the CSV are left untouched — uploading a CSV with 10 machines does not delete the other 50 machines already in your workspace
This behavior is different from standard data dictionary uploads, which replace the entire table. Control Plane uploads are additive and non-destructive — they will never remove content that is not included in the uploaded file.
After processing, the upload reports how many entries were created, updated, or skipped (unchanged).
Upload Files
Select the Upload CSV icon in the Control Plane toolbar.
.png)
Drag and drop one or more CSV files onto the upload area, or select Browse to choose files from your computer.
.gif)
Control Plane automatically detects what each file contains — machines, tags, or a combination of both — and processes them accordingly.
The upload processes and reports how many entries were created, updated, or skipped for each file.
If there are validation errors, review the error messages. Each error identifies the specific file, row, and column that needs correction.
.png)
📝 Note: You can upload multiple files at once. For example, upload a machines file and a tags file together — Control Plane processes them in the correct order automatically.
💡 Tip: Downloadable CSV templates are available from the upload modal and from the first-time setup screen: Machine CSV Template, Tags CSV Template, and Combined CSV Template.
Machine CSV Format
Column | Required | Description | Example |
|---|---|---|---|
machine | Yes | Unique machine identifier | washer_01 |
machine_display_name | Yes | Human-readable machine name | Washer 01 |
machine_type | Yes | Machine type identifier | washer |
machine_type_display_name | Yes | Machine type display name | Washer |
line | No | Line identifier (leave empty if machine is not on a line) | assembly_1 |
factory_location | Yes | Facility identifier | detroit |
factory_display_name | Yes | Facility display name | Detroit Plant |
latitude | Yes | Facility latitude | 42.3314 |
longitude | Yes | Facility longitude | -83.0458 |
attr_* | No | Custom attributes (see below) | attr_cost_center |
Additional optional columns: machine_description, machine_image_url, line_display_name, line_description, factory_timezone, factory_description, factory_place_name,
💡 Tip: Columns prefixed with attr_ automatically create machine attributes. For example, a column named attr_cost_center creates an attribute with the name cost_center and display name Cost Center. Empty attribute values are ignored.
📝 Note: The upload also creates any new facilities, lines, and machine types referenced in the CSV. You do not need to create them separately first.
Tag CSV Format
Column | Required | Description | Example |
|---|---|---|---|
machine | Yes | Machine this tag belongs to (leave empty for machine-type-level tags) | washer_01 |
machine_type | No | Machine type for the tag (used for machine-type-level tags) | washer |
source | Yes | Data source identifier (topic) | plc_assembly |
name | Yes | Internal tag name | temperature |
raw_tag_name | Yes | Original tag name from the data source | TEMP_01 |
display_name | Yes | Human-readable tag name | Temperature |
data_type | Yes | Data type of the tag value | double |
aggregate | Yes | Aggregation method for the tag | mean |
forward_fill | Yes | Whether to forward-fill missing values | true |
Additional optional columns (semantic fields): stat_type, default_aggregation, unit_of_measure, scale_of_measure. Any unrecognized columns are treated as custom columns.
📝 Note: The tag CSV may include an optional type row (second row) specifying the data type for each column (e.g., Text, boolean, double). This row is detected and used for column type inference.
📝 Note: Each tag's machine value must match an existing machine in the workspace. If a machine does not exist, the upload flags a validation error for that row. When uploading machines and tags separately, upload machines first.
Combined CSV Format
A combined CSV includes both machine and tag data in a single denormalized file — each row represents a tag with its associated machine metadata. This is useful when your source data has machines and tags together (e.g., an export from another system).
Control Plane detects a file as combined when it contains both machine columns (like machine_display_name, factory_location) and tag columns (like source, name, raw_tag_name).
Column Type | Examples | Destination |
|---|---|---|
Machine columns | machine_display_name, machine_type, line, factory_location, etc. | Machine, machine type, line, and facility assets |
Tag columns | source, name, raw_tag_name, display_name, etc. | Tag list rows |
Attribute columns | attr_cost_center, attr_shift, etc. | Machine attributes |
Other columns | Any unrecognized column | Extra tag list columns |
The upload automatically deduplicates machines, machine types, facilities, and lines from the denormalized rows. If the same machine appears in multiple rows (once per tag), it is created only once — discrepancies between rows for the same machine are flagged.
💡 Tip: Download the Combined CSV Template from the upload modal to see the full column layout with example data.
Common Upload Errors
Error | Cause | Fix |
|---|---|---|
Missing required column | A required column is absent from the CSV header | Add the missing column to your CSV |
Invalid machine reference | A tag row references a machine that does not exist | Upload machines first, or correct the machine name |
Duplicate entries | Multiple rows define the same machine or tag | Remove duplicate rows from your CSV |