Skip to main content

Importing components from a CSV file

File format

One row is one operation. Rows are grouped by component into the component's route, in operation-number order.

Your CSV should have the following columns:

  • component: component unique identifier
  • machine_group: the machine group that runs the operation (must already exist)
  • op_number: operation sequence number

To add extra information, you can include these columns:

  • description: component description
  • op_description: operation description
  • cycle_time: cycle time (in seconds)
  • setup_time: setup time (in seconds)
  • route_version: route version number (defaults to 1)
  • issue: component issue / revision
  • master_op (alias aggregation_level): roll several sub-operation rows up into one operation (see Master-op roll-up)
  • output_parts: finished parts produced per sequence (positive integer, defaults to 1)
info

Operations target a machine group, not a single machine. The group is matched by name (case-insensitive) and must already exist — create it first under Manage → Machine Groups. Any machine in the group can run the operation; the operator picks the actual machine at run time.

How to import

  1. Go to Manage → Components, click the in the top right, then Start CSV Import
  2. Choose options:
    • Split duplicates: creates a new route version when an imported operation clashes with one already on the component (instead of updating it in place)
  3. Select your CSV file
  4. Click Start Review to validate the data
  5. Confirm the import if the preview looks correct

Routes

Operations are grouped into routes by route_version (defaulting to 1). How the importer handles an operation that already exists on the component depends on the Split duplicates option:

  • Split duplicates on — if an incoming operation number clashes with one already in the matching route, the route is copied to a new version and the operation is added there. This preserves the existing route for genuine alternate manufacturing paths.
  • Split duplicates off — the existing operation is updated in place (machine group, times and description are overwritten) and no new version is created.

Operation numbers are compared as integers, so 0010 and 10 are treated as the same operation.

Master-op roll-up

Some operations are made up of several sub-operations that run on the machine as one continuous job. Add a master_op column (alias aggregation_level) to roll these rows up into a single operation: rows that share the same master_op value are combined, and the resulting operation takes

  • that master_op value as its operation number,
  • a combined description of the form Op 10: … / Op 20: …, in operation-number order, and
  • the summed cycle_time and setup_time of the rolled-up rows.

All sub-operations in a roll-up group must name the same machine group — a combined job runs in one machine group, so a group with differing machine groups is reported as an error. Leave master_op blank (or omit the column) on rows that should stay as standalone operations.

The output_parts column sets the finished parts produced per sequence (a positive integer, defaulting to 1); for a rolled-up master op the largest output_parts among its sub-operations is used.

Validation

Every row must have a value for the required columns — component, machine_group and op_number. A row missing any of these is rejected with its line number, so an appended totals or summary footer row is caught instead of producing a confusing error further down. Duplicated header names are also rejected — give each column a distinct name.

Issues

Add an issue column to set the component issue (revision) on import. If a component appears across several rows with different issue values, each distinct issue is created for that component; issues that already exist on the component are matched case-insensitively and are not duplicated.

If you omit the issue column, components are imported with your organisation's default issue.

Example

Download example CSV

component,description,op_number,op_description,cycle_time,setup_time,machine_group,issue,route_version
155332,Engine block housing,10,Face Off Block,145,399,VMC Cell,A,1
155332,Engine block housing,20,Semi-Finish Block,145,399,VMC Cell,A,1
155333,Block head,10,Rough,120,600,VMC Cell,B,1
155333,Block head,20,Drill and tap,120,600,Deburr,B,1

Rolling sub-operations up into a master op with output_parts. Here ops 10 and 20 share master_op 10, so they collapse into one operation with the summed times; op 30 stays standalone:

component,op_number,op_description,cycle_time,setup_time,machine_group,master_op,output_parts
155334,10,Rough bore,90,300,VMC Cell,10,2
155334,20,Finish bore,60,0,VMC Cell,10,2
155334,30,Deburr,30,120,Deburr,,1