For an overview of bookings, what they are, and how they are used, see the whitepaper on orders and ERP integration.
A booking is an order that concerns itself only with the demand for the cell, therefore limits itself only to the input boundary between the cell and the rest of the factory. A booking consists of:
- Unique Identifier
- Part Name(s) and Demand Quantity
- Due Date
- A flag if the booking has been scheduled or not
The daily schedule calculated by OrderLink will include enough parts to ensure the machines stay busy, and this might mean only a portion of a booking fits into the schedule. Rather than track partially completed bookings, OrderLink instead allows the ERP to track a list of parts and quantities that have been scheduled without a booking. The next day's schedule will see these part quantities and realize that to complete the booking only the remaining parts must be scheduled. See the whitepaper for some specific examples.
Load from CSV The bookings can be loaded from CSV files located on disk or a network share. When selected, the directory containing the CSV files can be entered and some sample CSV files can be created. See below for more details on the CSV format.
Load from custom plugin The bookings can be loaded via a small .NET Framework plugin. This is intended to allow OrderLink to load directly from the ERP. When selected, the path to the plugin DLL can be entered into the settings. See below for more details on custom plugins.
Lookahead in days When loading bookings, any bookings with a due date further out that this number of days will be skipped. If the lookahead is blank, all bookings are loaded.
This setting allows a simple way of dealing with the fact that future orders might be fluid and not fixed. Care should be taken to not have the lookahead too short, since a short lookahead might cause not enough bookings which starves the cell for work. There are two alternatives:
In the ERP order process, add a flag to release orders for machining. Only orders which have been released appear in the CSV files or in the custom plugin. This allows a human to pick and choose the orders which are firm or wait on the orders which are still in flux.
The split into bookings and workorders does provide a nice way of responding to changing orders even after they are scheduled. When an order change occurs, a booking for the difference in parts can be added. The whitepaper has the details and some examples.
Bookings can be loaded from CSV files. We have designed this feature with two use-cases in mind. First, you can manually edit the CSV bookings file. This is useful at the very beginning of a project or when you are first testing out OrderLink. Second, the unscheduled orders can be exported from your ERP into a CSV file. This is useful as a long-term solution for transferring orders, and is an alternative to developing a custom .NET plugin. Sample files can be generated by OrderLink via a button in the settings card.
bookings.csv CSV file contains all the bookings. OrderLink treats this file as read-only and never
edit or update this file. It can either be edited manually or generated as an export from the ERP.
Id,DueDate,Priority,Part,Quantity 12345,2017-10-29,100,part1,50 98765,2017-10-31,100,part2,77
Id column is the booking identifier and should be unique and never reused. The due date and priority are used by OrderLink
to help sort the orders, and the part name and quantity determine what to produce. A single order can have more than one part in it, in which
case two parts should be on separate lines with the same booking identifier. (We suggest for ease of tracking that each booking
is only a single part type, but we do support multiple part types per order.)
scheduled-parts.csv file is created by OrderLink and stores the parts which were scheduled without a booking (typically because
only part of a booking could fit into the daily schedule so the booking is left unscheduled). OrderLink will overwrite this file each
time a schedule is generated, since OrderLink recalculates the scheduled parts without bookings after the new schedule has been generated.
Typically, during normal operations you should not edit the
scheduled-parts.csv file at all. New bookings come into the
and OrderLink uses
scheduled-parts.csv to track scheduled parts between days. Having said that, you can edit the
to adjust the part counts; see the whitepaper for details.
Since OrderLink treats the
bookings.csv file as read-only, when a booking is scheduled OrderLink instead creates a file named
after the booking ID into the
scheduled-bookings folder. For example, if OrderLink decided to schedule the
it would create a file
scheduled-bookings\12345.csv with the following contents:
This shows the time the booking was scheduled in Coordinated Universal Time (formatted according to ISO 8601), the part type, the quantity, and a unique schedule identifier. If needed, the schedule identifier can be matched with log entries in FMS Insight and the cell controller itself to find the schedule that consumed this booking.
The bookings loaded by OrderLink are everything in
bookings.csv except the bookings in the
If you are manually editing
bookings.csv, typically the best method is to just delete entirely the
scheduled-bookings folder and then manually edit the
bookings.csv to be exactly the unscheduled
bookings that you want to transmit to the cell controller. If instead the
bookings.csv file is
being exported from the ERP, you should also create an ERP task which imports the
scheduled-bookings CSVs. Indeed, once OrderLink creates a file in the
folder, this file can be imported into the ERP to mark the booking as scheduled inside the ERP. Then, the next time
the unscheduled bookings are exported into the
bookings.csv file, the scheduled booking should be
missing because the ERP marked it that way. The CSV in the
scheduled-booking folder should then be deleted so that
the size of the folder does not grow over time (OrderLink never edits or deletes any
The custom plugin must be a .NET Framework DLL which implements the
the BlackMaple.SeedOrders project. For more details on the
exact API and an example C# implementation, see the BitBucket SeedOrders project.