Using Tryton for Product Lifecycle Management and Prototype Manufacturing

Two characteristics of high-tech product development are:

  • The road to large scale production is iterative, typically starting with a feasibility or proof-of-concept prototype, then one to three development prototypes, one or more pilot manufacturing builds, and finally production. 
  • Many of the parts incorporated in a product are Commercial-off-the-Shelf (COTS) items, manufactured by an Original Equipment Manufacturer (OEM) and sold through distributors and other re-sellers.

The process of design is itself iterative, working from the known, such as it needs to do this, it should be about X big, it must be able to provide X much output power, it must last X long between charges, the display must be X inches in size, it must be waterproof, it must be loud (or quiet), etc.

During development what is unknown will become known, and a design will emerge that meets requirements. At some point, it may become necessary to build a prototype to understand some aspect of the design in more detail, and design decisions made based on the prototype (generally either “that actually works great, don’t change a thing” or “that’s not good enough, find another solution”).  Building low volume prototypes efficiently is a detailed persnickedly job, missing only one is all that is needed to bring a finely tuned development or new product introduction (NPI) process to a grinding halt. 

A product is typically made from a mix of COTS parts and custom parts. Custom parts are used when no suitable COTS part exists or is unsuitable for one reason or another. Often custom parts are used to create a product identity, such as the enclosure, labelling, and user accessories, but they may also may be hidden, such as an internal mounting bracket or an integrated circuit that implements new technology. COTS items are typically general purpose electronics parts (e.g. resistors, capacitors, transistors, switches, display panels, many integrated circuits,  etc.) as well as general purpose hardware (e.g. screws and washers). The same OEM product is often available from several vendors, and often severa; OEM manufactures will produce a product similar enough be used interchangeably.  Custom parts will be sourced from the vendor selected to manufacture the custom part, while for COTS parts the designer must specify a source. Providing more sources will provide greater purchasing flexibility, which can be critical to staying on schedule when parts are in short supply or time is of the essence (or both).

A spreadsheet is often the first tool reached for to manage New Product Introduction (NPI) and new product bill of materials (BOMs).  If the product and part supply chain are simple, a spreadsheet approach will be manageable. However, a complex product structure, with separate sub-assemblies re-using common parts each with potentially multiple alternates and vendors, quickly eclipses a spreadsheet solution and a domain-specific Product Lifecycle Management (PLM) tool becomes necessary to prevent bottlenecks.


Tryton ( is a mature well-respected open source business software project, the type of software generally called ERP (Enterprise Resource Planning). Tryton is composed of a set of core modules with additional modules included as needed for less common functionality not all situations will require (in the world of software, generally less is better).

The figure below shows the Tryton standard modules. The modules needed for basic PLM and prototype manufacturing have been circled, and will support basic PLM and manufacturing. PLM support includes defining and managing parts and hierarchical BOMs, specifying approved sources for purchase, providing common access to part documentation such as OEM datasheets, engineering drawings and work instructions, and include a controlled change management  process when a design change is needed. Manufacturing support includes Material Requirements Planning (MRP), managing vendor Request-for-Quotations (RFQs), purchasing raw material, manufacturing and QA testing, product serialization if needed, and sales. The project management module has been included to report on product development, release and maintenance project costs, for control and business decision making.

Standard Tryton Modules Required for PLM and Prototyping Manufacturing


Swift Construction Company

The fictional Swift Construction Company (SCC) manufactures a radio receiver product called the Aircraft Wireless. The SCC designed the Aircraft Wireless, does the final product assembly and ships finished product to customers. The Aircraft Wireless contains a printed circuit assembly (PCA) with the radio electronics, which is assembled by an electronic contract manufacturer (ECM). The ECM is provided with a BOM for the electronics PCA,  and depending on the situation the ECM may be provided with a kit of parts, or the ECM may have to purchase the parts themselves (turn-key production).

The Aircraft Wireless product as sold to customers is SCC part number 100-0003 . This is the top-level part number and includes not only the Aircraft Wireless itself, but also the shipping box, user manual and included accessories.

The SCC has historically used a software PLM application called Parts&Vendors[1] (P&V) to document engineering designs. P&V was the eminant engineering PLM database of the 90’s for startups and small-to-medium (SME) businesses, but unfortunately Trilogy Design no longer exists and the SCC knows it is running on borrowed time and is looking for a suitable replacement. The SCC has selected Tryton as a potential replacement for P&V, and is starting a detailed evaluation process using their historical P&V workflows for reference.

Top-Level PN 100-0003 Assembly Tree


Workflows and User Stories

A variety of common worflows and user stories have been identified to explore using Tryton to understand Tryton’s basic behavior and identify any constraints.  A general description is provided here, each workflow will be described in detail in a separate post and linked from the heading once it is avaiable.

Please post a comment at the bottom giving any specific behaviors you would like to see explored.

Building a Tryton Server

Tryton will be installed on a basic server using the Ubuntu Linux operating system and installing Tryton using a Docker container provided by the Tryton project.

Create a Part with Alternates and Sources

Identify one or more Mfr/MfrPN with a part, as well as one or more vendors that the Mfr/MfrPN can be purchased from and for what price.

PN 900-0006 is an axial diode, with three alternates specified, and a different vendor for each Mfr/MfrPN. The concept and basic requirements can be understood from how sources are managed in Parts&Vendors[2] (P&V).

P&V provides for a Vendor to be marked as the Primary vendor, and the cost of the item is driven by the entered vendor cost. This is effective during the engineering stage of a project when sources are first being identified, long before actual purchase, but having cost forecasts of known accuracy is vital to validate development. When the product transitions from design to production, costing will transition to standard model driven by purchase orders and receipt of product into inventory.

Sources for PN-900-0006 Diode
Sources for PN 900-0006 Diode


Parts generally need multiple units of measure (UOM) to be defined, and the relationship between them, for example the “use unit of measure” on a BOM for a particular epoxy catalyst might be in milli-litre, the “stock unit of measure” is 100ml bottles, and the “purchase unit of measure” is a case of 12 bottles. The units and their relationships must be defined corrrectly, and it may be necessary to consider round-off and calculation errors when chosing units, such as when wire purchased in a 19,300 foot spool and used in centimeters. 

New Units of Measure (UOM)

Capture Supporting Part Documents

It is convenient to capture documents associated with a part (such as manufacturer’s datasheets and engineering drawings) with the part for convenient access. As well, keeping ad hoc notes on a part can often provide crucial information to unravelling a future issue. 

Files associated with PN 900-0006 DIODE

Create a Bill of Materials BOM

PN 200-0001 (IND,830UH,AIRCRAFT WIRELESS) is the lowest-level sub-assembly in the  hierarchical Aircraft Wireless BOM.

PN 200-0001 Parts List

Make a Major Release (Revision)

Update a part or bill of materials using a controlled atomic workflow. Generate a report showing which parts not yet “released” (approved for use) within a product structure.  

Support an Alternate Assembly

If there are no true second sources for a Part, it may be possible to design the product such that the same function is maintained by use of some other non-interchangeable part. Using alternates in a controlled process will maintain traceability, which various regulated industries may require. 

As an example, assume a product with an internal power supply printed circuit board (PCB), which uses a particular monolithic AC/DC power supply module. The module is an “old” design, and has no direct alternates (mechanical and electrical) available, and the best electrical  alternate would require a new incompatible PCB. It also seems the module is getting harder to purchase, and because supply risk is increasing, which affects the abiliity of the enterprise to product product, it is desired to have an alternate process in place should the current module be unavailable, which is also a growth strategy until then.

A simple solution chosen is often to simply design a new PCB for the the best electrical alternate, up-rev the BOM to use the new PCB and module and don’t look back.  A better solution would be to create a new part number for a new PCB assembly, using the new AC/DC power supply brick and its own BOM and fab file set for the PCB, and recognise the new part number as an alternate for the original part number. This will allows running out of  raw and WIP materials as efficiently as possible, and provides traceability should the old PCB assembly be buld again (don’t say it will wouldn’t happen, I won’t believe you anyway).

Perform Simple Purchasing

A lot of PN 200-0001 (IND, 830UH, AIRCRAFT WIRELESS) must be manufactured to have in stock before the Aircraft Wireless PCA can be manufactured. Tryton production planning can be used to issue purchase orders for the raw material, but as there are only three parts it will be faster to purchase them manually.  

Manufacture an Edge Assembly

An edge assembly is one that does not contain sub-assemblies. The lowest level manufactured sub-assembly in the Aircraft Wireless is PN 200-0001, a custom 830uH inductor manufactured in-house by the SCC. 

Determine BOM Shortages for Manufacturing

Capture stock on hand by importing a stock count, and enter part purchase orders with expected delivery date. For a given date of manufacturing, generate a report showing required material taking into account stock-on-hand and parts on order.. 

Purchase an Assembled Printed Circuit Assembly

The assembled printed circuit assembly, or PCA (part number 200-0003) in the Aircraft Wireless is purchased in lots of 5 from an ECM. The SCC kits the necessary raw material for the build and consigns it to the ECM. When the finished PCAs are returned by the ECM, tey are received by the SCC, inspected, serialized and stocked in inventory.

Purchase Using a BOM

Generate a report of material required to manufacture a multi-level hierarchial BOM, taking into account stock on hand. Optionally generate purchase orders for required material taking into account minimimum stocking levels, minimum order quantities, price-quantity breaks, and order in multiples requirements. 

Sell a Serialized Product

This workflow explores serialized stock in the context of a customer purchase. B&E Submarines desires to purchase a spare parts kit for the Aircraft Wireless unit they previously purchased. A serialized circuit board is used in the assembly of the spare parts kit (preferably a phantom-type BoM to make the parts in it visible), which is then sold and delivered to B&E.

Sometime later, Ed Bentley calls from B&E. He says he found a circuit board, but he doesn’t know if it is the circuit board from the spares kit. Ed is not sure, but he thinks the original board might have failed and he swapped it with the one from the spare parts kit. Ed wants to know if the serial number on the board is the same as the board shipped in the spare parts kit he bought.

Report Use of Serialized Stock

Explore serial numbers in the context of a project. B&E Submarines plans to upgrade 5 of their submarines with Aircraft Wireless systems. A contract is negotiated between the SCC and B&E, and the SCC initiates a Project to capture all related activity (of which the physical receiver units are only one portion). Complete radio receivers PN 10000003 are manufactured, each with its own serial number, traceable to the serialized electronics circuit board within. The completed radio receivers are sold and delivered to B&E as part of the overall project.

Sometime later, Ed Bentley calls from B&E. He has a circuit board in his hand again, and wants to know where the serial number came from. Ed asks if the circuit board was from one of the 5 receivers delivered as part of the upgrade project.

Rent, Return, Inspect and Re-Stock a Field Support Kit

  • Create manufacturing order
  • Issue material to order (serialized PCA)
  • Deliver order to customer
  • Return order from customer
  • Inspect items, replace or repair as needed
  • Return material to stock (serialized PCA)

Act on Data from an IIoT Device

It is possible for an Industrial Internet of Things (IIoT) type device to interact directly with Tryton for a variety of tasks:

  • Create a service order when a device reports service is required in the case of non-optimal machinery operation.
  • Recognise asset transfer according to usage data a device  repots, such as sale of commodity such as electricity or oil, and automatically perform monthly customer billing.


[1] (active as of 2021-08-12)



Building a Tryton Server

I will be creating a new Ubuntu 20.04 LTS virtual machine using VirtualBox on FreeBSD, and install Tryton using the Docker container provided by the Tryton project. Of course there are other options.

Create Virtual Machine

Install Ubuntu 20.04 using the Ubuntu distribution DVD ISO and using the startup wizard configure appropriately.

Copy your user ssh key to the new server and disable password login.

Configure vm port forwarding.  Port forwarding with VirtualBox must be done with the vm powered off.

Name: ssh
Protocol: TCP
Host Port: 8000
Guest Port: 8000

Update Server OS

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade

Install Docker

$ sudo apt install

Install Tryton

$ sudo docker pull tryton/tryton

Start a PostgreSQL instance

The Tryton image will be pulled from library/postgres

$ sudo docker run --name tryton-postgres -e POSTGRES_PASSWORD=mysecretpassword -e POSTGRES_DB=tryton -d postgres

Setup the database

$ sudo docker run --link tryton-postgres:postgres -e DB_PASSWORD=mysecretpassword -it tryton/tryton trytond-admin -d tryton --all

The script will prompt for:

  • “admin” email for “tryton”
  • “admin” password for “tryton”

Store the password in a key vault for safe future reference.

Start Tryton Instance

$ sudo docker run --name tryton -p 8000:8000 --link tryton-postgres:postgres -e DB_PASSWORD=mysecretpassword -d tryton/tryton

Start Tryton cron Instance

$ sudo docker run --name tryton-cron --link tryton-postgres:postgres -e DB_PASSWORD=mysecretpassword -d tryton/tryton trytond-cron -d tryton

Create bash Startup Script

Without further configuration the Docker container will not start automatically when the server starts. While it is possible to configure Tryton to automatically start, I have created a simple bash script for convenience to start Tryton manually.

dale@starlord:~$ cat
# run using sudo
docker start tryton-postgres tryton tryton-cron

Install Tryton Modules

Modules are installed using the Tryton client, either the native client or the web client.

Login into Tryton as the admin user and access the menu: Administration > Modules > Modules. Mark the following modules for install (double-click in the Mark for Install column):

  • account
  • product
  • production
  • project
  • purchase
  • sale
  • stock

(other modules will be included automatically if they are dependencies)

To install the marked modules, either:

  • Select Launch Action icon in the Modules menu bar and then Perform Pending Installation/Upgrade, or
  • Execute the Perform Pending Installation/Upgrade Wizard from the main Tryton menu.

After the install/upgrade completes, the Module Configuration wizard runs and will query you to configure the installed modules.

Create a Company

A company is a type of ‘party’. To identify a party as a company in a new database you must first create a new party, then select it as the new company.

  • Name
    • Swift Construction Company
  • Addresses
    • Name: Default
    • Street: 1 Swift Way
    • Zip: 13054
    • City: Shopton
    • Country: United States
    • Subdivision: New York
  • Language
    • English

Configure the Company

  • Enter Company > Currency
    • US Dollar
  • On the Company > Employees > Party view
    • select the new company (e.g. Swift Construction Company)
    • select Add

Create a Chart of Accounts

  • Company: Swift Construction Company
  • Account Template: Minimal Account Chart
  • Create Default Properties
    • Default Receivable Account: Main Receivable
    • Default Payable Account: Main Payable

You will need to reload the menu in the Tryton client if it isn’t now displaying menu choices for the new modules (i.e. access menu: User > Menu Reload (Ctrl-T).

The Tryton server has been installed and you can connect to it from a Tryton client. You have also created a new Tryton database with the modules necessary to implement Maestro workflows.

Other Stuff

Command arguments

if COMMAND starts with a -, it is appended as argument to the default COMMAND. To see all arguments available run:

$ sudo docker run --rm -ti tryton/tryton --help



Performance Monitoring using htop

htop is a great tool for viewing the basics of what a server is doing, in particular the real-time CPU and memory graphics. However, the colors in the bar graphs can make it difficult to distinguish between CPU tasks being executed (low-priority, normal, kernel and virtualiz), and the type of memory in use (used, buffers and cache). 

In this case, the “no-color” option can be used which causes the bar graphs to use characters instead of colors for sub-categories.

% htop -C