Upload Machines and Tags via CSV

Prev Next

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

  1. Select the Upload CSV icon in the Control Plane toolbar.

  1. Drag and drop one or more CSV files onto the upload area, or select Browse to choose files from your computer.

  1. Control Plane automatically detects what each file contains — machines, tags, or a combination of both — and processes them accordingly.

  2. The upload processes and reports how many entries were created, updated, or skipped for each file.

  3. If there are validation errors, review the error messages. Each error identifies the specific file, row, and column that needs correction.

📝 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