SimpleMES is THE open source Manufacturing Execution System (MES). The purpose of an MES is to control and track what happens on your shop floor. SimpleMES is designed to simplify the complex and time-consuming task of implementing a traditional MES. The main features are:

  • Minimal setup.

  • Easy configuration.

  • Easy customization.

  • Cloud-ready.

dashboard
Figure 1. Dashboard

See Demo Server for a live MES server available.

Introduction

What is an MES?

A Manufacturing Execution System (MES) helps manufacturers track and control how they build their products. An MES is designed to be used by shop floor personnel such as operators, supervisors and managers. These people will use the system to record their actions while building your products. This recorded data is then later used to track down problems and help fix them. These problems can be a simple as a bad lot of components from a vendor to defects found in the inspection process.

The data collected can help you evaluate the performance of your shop. It can also help you locate specific orders/products and provide instance status updates for your customers. You can use the MES data to track historical costs and build times for your products. This can be very useful when planning new projects.

An MES is typically the primary interface between your shop floor personnel and your systems. This gives the operators a simple interface to the key actions they perform dozens of times a day. This also reduces the manual paperwork needed to track what took place on the floor.

Why Do You Need an MES?

The key benefits of using an MES include:

  • Reduced paperwork.

  • Better tracking of shop floor actions.

  • Better visibility to shop floor state.

  • Early problem identification.

  • Regulatory compliance.

Most of these benefits center on the data collected by an MES. SimpleMES can collect a lot of data. However, these benefits are not automatic with zero cost to you. This cost is mainly due to operating the MES system and the user time spent interacting with the MES. SimpleMES tries to minimize the costs while letting you have the benefits.

By letting you choose how much data collection is needed during production, you can choose how much using the MES will cost you. It is very important to only collect the data you need. Later, you can expand your use of the MES for other benefits.

What Data can an MES Collect?

SimpleMES can collect a lot of data. This includes:

  • What was built.

  • Who built it.

  • When it was built and how long it took to build.

  • The work center where it was built.

  • The components used to built it.

  • The defects found and repaired for the product.

  • Configurable data collected at key points (e.g. assembly or defect processing).

This data is stored in the database and can be used in many ways to help you work with your shop floor.

Reduced Paperwork

Like most aspects of life, manufacturing requires a lot of paperwork to track what you build and how you build it. Most of your customers require inspection data, component usage and other production data. The traditional way to supply this was via paperwork shipped with the product.

Today, most customers require digital data delivered with the product. An MES will allow easier creation of much of this data for your customers.

Traceability

Traceability is an important part of manufacturing. When a defective component lot from a supplier is used in a product, you need to know which orders or serial numbers used these components. This is critical for product recall scenarios.

By using the Assembly module features, you can decide what to collect when a component is assembled by an operator. This data can be quickly searched using the Component Report to find where a specific component lot was used. You can also review the components used on a specific order/LSN to help diagnose the source of component-related problems.

Control

Beyond tracking what happens on the shop floor, you can also control the actions that are performed on your products. This is done by defining routings and bills of materials (BOMs) for your products. SimpleMES will help guide your operators to perform the steps in the right order and to assemble the components needed.

You can also control what actions a given user can perform. This is controlled by the security roles you can assign to you users.

Performance

The performance of your shop floor is critical to your success. It is important to find problems with the performance before it reduces you efficiency. The production log records the actual production time/results for the shop floor. This forms the basis for most reports that let you determine how well your shop floor is operating.

Regulation Compliance

Many industries are regulated by the government. These regulations frequently control how you build, inspect and repair products. An MES can help you document how you comply with these regulations. In particular, the MES can track who and how the product is built. This is cornerstone of most regulations about manufactured products.

An MES can also help control how you build the products. Many regulations require you to have a documented production process. The MES product definitions such as routings and BOMs can form the core of this process documentation.

Real-time Status

In almost all shop floors, you need to know exactly what is happening on the floor in real time. When using an MES, you can quickly find specific orders and determine their status. You can also monitor real-time performance and help identify performance issues early.

The data in SimpleMES forms the basis for a real-time status reporting. These are reports that give you the current status.

Track Costs

Tracking production costs is a key part of knowing if you are profitable or not. It is also needed to help you determine the price you charge your customers. Without knowing your costs, it is difficult to set an accurate price for your products.

SimpleMES does not support a costing module at this time. Instead, you can use the production log history to determine your costs. These costs come from these key areas:

  • Labor time.

  • Component Costs.

  • Losses (time and material).

  • Machine usage.

  • Defect handling.

SimpleMES gives you the data you can use to determine your costs in these areas. The key data source is the production log. You also can use the component history to determine the component usages for your shipped products.

MES and Other Systems

An MES usually operates between an Enterprise Resource Planning (ERP) system and the shop floor. Most ERP systems are not designed to be used on the shop floor. An MES is generally more flexible to handle the unique procedures needed on your shop floor.

An MES is not a shop floor automation controller. Running automated/CNC devices is usually handled by specially designed software that knows how to control physical machines such as robots and conveyors. An MES will usually interface to those systems, if needed in your shop.

An ERP system or shop floor automation system is not required for SimpleMES. SimpleMES is very useful by itself in most small to medium shops.

Some typical system setups include:

otherSystems
Figure 2. Other Systems

Modules

This application is made up of a number of modules (plugins). Each module is documented separately with user guides, reference docs and the Groovy API documents:

Table 1. Documentation
Module Guide Otherse GroovyDoc

MES Application

(This Guide)

Tutorials

MES Core

Guide

Reference

API

MES Assembly

Guide

Reference

API

Framework

Guide

Reference

API

Planned Modules

An MES is a complex application. It has many features that may not be needed by all users. For example, defect tracking may not be needed for a high-volume manufacturer, but is indispensable for customers who do complex assembly (e.g. aerospace). To keep things simple for basic users, SimpleMES can be re-configured with optional modules to provide less-used features.

The Enterprise Framework provides a way to break a complex application into multiple modules. This allows you to modularize your application into one or more plugins. These plugins can work with each other and provide new features to core module (plugin). This provides the ability to add fields to core domain objects, extend the functionality of service methods, ask questions in core GUIs and to participate in database transactions with core objects.

Why hide features in MES? Because many features are complex and require extra setup to work properly. A simpler user interface is always preferable to a complex interface with many options. If the user does not need a feature, then it is best not to overload the displays with unused options.

One common configuration for SimpleMES is shown below:

architectureLayers

This configures the deployed MES with the two most common modules: Assembly and Defect Tracking. It is also possible to use industry-specific modules such as the Complex Assembly module when those features are needed.

The specific features of each module are covered in the documentation of the module, but a quick overview is useful.

Core

This module (core) is documented here, but the key features include:

  • Product - The product to be manufactured.

  • Routing - The detailed steps needed to produce the product.

  • Work Center - The machine, area or people needed to produce a product. Includes basic setup.

  • Order - The order from your customer (e.g. a shop order).

  • LSN - The Lot/Serial Number for specific pieces or lots produced.

orders
Figure 3. Orders

Assembly

See Assembly for details. The key features include:

  • Ability to scan to assemble components.

  • BOM - The Bill of Materials (product components) needed to build the product.

dashboardAssy
Figure 4. Assembly Dashboard

Defect Tracking

See Defect Tracking for details. The key features include:

  • Defect - A basic defect found on product.

  • Defect Log - The defects found on orders/LSNs.

Complex Assembly

See Complex Assembly for details. The key features include:

Document Conventions

This document follows certain conventions as shown below:

  • Literal values

  • File/path names

  • Class names

  • Variables, fields or parameters

  • Method names

  • Groovy or java code

Terminology

Some common terms and fields are used throughout SimpleMES:

Term Description

POGO

Plain Old Groovy Object - A simple Groovy object with limit methods beyond getters and setters. Similar to a Plain Old Java Object (POJO) or a Javabean.

Domain Object

A data object that is usually saved to the database. Objects such as Orders and products are implemented as domain objects. These usually have limited business logic in them.

Controller

Provides access to the business logic in the services. This the level that enforces security and allows clients to connect to the server using a URL.

Service

These services are where the bulk of the MES business logic is implemented. Most of these services are exposed to the external clients via a controller.

Module

These are packages (Grails plugins) where a group of related MES functions are implemented. These modules are combined into an application that provides the specific functions you need in your MES.

Most standard objects will have these typical fields:

Field Description

id

The internal database record ID (a long integer). Usually not visible to the user.

key(s)/name

One or more primary key fields for the object. These are usually unique and provided by the user. The user will typically retrieve the records by these key fields. The first key field is usually named the same as the object (e.g. Order has a key field of order). Sometimes, the word 'name' is used in place of key field.

title

The single line title. This is usually a short description displayed in lists.

description

A multi-line description. Typically limited to 255 characters to reduce database size.

status

Typically used as the status of a top-level domain object (e.g. Product). Always references a Status domain object. This is used when it is likely that a module or customer may need to add new status entries without code changes.

state

Typically an enumeration that indicates the state of a given object (may be a POGO or domain object). This is used when is no need need for custom state codes. The core Enum must be changed to support new states.

dateCreated

The date/time this record was created.

lastUpdated

The date/time this record was last updated.

Diagrams

There are a number of diagrams in these documents. We follow the given conventions for these diagrams. Some colors and shapes are used to flag specific types of elements:

colorShapeConventions
Figure 5. Color and Shape Conventions

Document Layout

Most modules have 3 main sets of documents:

  • Guide - General overview and key concepts document.

  • Reference - In depth reference for APIs, Domains, etc.

  • Groovydoc - The generated Groovydoc (Javadoc) from the source code.

The intent of the guide is to give you a general overview of feature, but not overwhelm you with details of the implementation. The reference documentation will explan most key fields, API calls and options. The guide generally has many links into the reference documentation.

The relationship between the guide and reference is shown below for the GUI Tags such as <ef:show> :

guideAndReferenceRelation
Figure 6. Guide And Reference Relationship

Dashboards are fairly complex. To manage this in the documents, we use the guide for concept introduction and sometime simple examples. The reference document will explain all of the activities, events and scan actions for the dashboard. Each module will have additional activities, events and scan actions. These will be documented in a similar way:

dashboardDocuments
Figure 7. Dashboard Documents - MES Core Example

Philosophy

Why build an open-source MES? What is the driving philosophy behind this project?

We want to build a commercial-grade MES with 'ease of use' as the prime directive. Traditional MES systems require long implementation phases at each manufacturing site. This means the users will not update the MES frequently. This in turn forces long development cycles and slower improvements in the MES.

For SimpleMES, we want to break those cycles and bring the MES application into the modern software era. This includes supporting the hosted application model and supporting frequent updates.

The details of how we follow this philosophy in the development of SimpleMES include these key points:

  • Clarity and Simplicity

  • Everything is Optional

  • Minimal Setup

  • Customization

  • Grow into more complex features

  • Open hosting options

    • Cloud

    • Self-hosted on Cloud

    • Deployed internally

  • Development Process

    • Document, Write Test, then Code

    • Fully tested via Automation

Traditional MES Pain Points

Traditional MES systems are complex and require a lot of setup and configuration. This frequently includes complex integrations with shop floor systems and the corporate ERP systems. This complexity means there is a lot of extensive manual testing of the system before it is rolled out to the shop floor. This adds to the cost of MES upgrades and makes the manufacturer reluctant to upgrade. This means the MES system rapidly gets out of date.

In this era of computer security threats, being out of date means being at risk.

The traditional MES pain points include:

  • Extensive manual testing.

  • Complex integrations.

  • Reluctance to update the software.

  • Extensive customization.

SimpleMES tries to reduce this by documenting the expected behavior of the MES and using automated tests to ensure the correct behavior on each new release. This allows more frequent upgrades and releases.

Simplicity and Clarity

Traditional MES systems have many options and configuration settings. This means there are many different ways the MES can operate based on a large number of combinations of these settings. The developers and customers have to test each of those combinations. These settings also force you to understand many of these options and decide which setting to use.

This can overwhelm engineers and managers in complex systems.

Everything is Optional

To avoid this, SimpleMES tries to reduce these up-front decisions to the minimum. We try to make everything optional, where possible. For example, in a traditional MES, each order would require a Product (Part Number) for the product to be built. SimpleMES makes this product optional.

This helps in a number of ways:

  • You do not need to define the product to begin tracking orders.

  • Less data is accumulated in the database.

  • Customer acceptance testing can be minimized.

  • You can use features as needed.

Of course, this means SimpleMES must be tested by our developers for both scenarios. This adds to the development tasks, but ultimately helps you. It also provide documented scenarios in which the order can be processed without a product.

This philosophy of 'Everything is Optional' is applied throughout SimpleMES, whenever possible. The automated tests cover the scenarios where the setting is empty and when a value is provided. You can use the more complex features as they are needed. An example of how a customer might start simple and expand is:

  • Order without Product (simple start/complete of order).

  • Order with Product.

  • Order with Product and BOM.

  • Order with Product and Routing.

Each progressive level adds complexity, but also allows more control and tracking options. The customer chooses when to take on this complexity as they need it.

Some things are actually required, but we try to minimize these cases.

Minimal Setup

Along with the 'Everything is Optional' approach, SimpleMES tries to require very little setup to run. This means there are a number of default settings that make sense and can work in a wide range of scenarios.

For example, you can customize the dashboards to suite your shop floor needs. But you don’t have to understand this when you start working with SimpleMES. SimpleMES provides a few default dashboards that work with simple configurations. You can customize these as needed to provide the features important to you.

Another big simplification is to avoid pre-setup of GUI settings and such. In the case of lists, you don’t need to configure the order and size of the columns. You can directly modify those in the GUI. Those settings are saved by user and used the next time the list is displayed. This means less setup before you use the MES.

Customization

Customization of an MES is critical. Most shop floors operate differently. There is no one right way to build all products. This means you will need to customize the GUI and business logic of the MES to suit your needs.

SimpleMES provides a number of ways to customize the MES, using the Enterprise Framework customization features.

The key areas of customization are:

  • Custom Fields

  • Flexible Fields for Data Collection

  • Custom Logic added to Core Methods

  • Modules

The custom fields allow you to add custom fields to existing core object (e.g. Order). This lets you use custom logic with these fields as needed.

The Flexible Fields support is similar, but targeted at specific data collection points such as Assembly and Defect Tracking. This allows you to define what the operator collects when assembling components or handling defects.

It is also possible to add logic to most core methods using scripting. This allows you to handling your custom needs without altering the core code.

Finally, the module structure allows you or a system integrator to combine core and custom business logic modules together as needed. This is how the Assembly and Defect Tracking modules add features to the main MES module.

Open hosting options

Modern web-based applications are generally hosted by cloud service providers. SimpleMES is designed to be deployed in a number of ways:

  • Cloud

  • Self-hosted on Cloud

  • Deployed internally

The goal is to allow simple cloud hosting for smaller customers. Then allow more complex systems to be hosted by you on your chosen cloud system. Finally, large customers may prefer to deploy SimpleMES on an internal cloud server.

To make this possible, SimpleMES is built as a deployable WAR file or as a Docker image. These images are updated frequently, so you can receive updates as soon as you want them.

Development Process

The development processes of SimpleMES follow a normal, modern development practice:

  1. Document the Feature

  2. Write the Test for the Feature

  3. Code the Feature

  4. Repeat

This means each feature is thought out and designed as end-user documentation before coding begins. Then automated tests are created before coding begins. Finally, the code is written until the automated tests pass.

This ensures that a feature is designed at a high level before coding. It also means that all supported scenarios have automated tests. This helps smooth updates to the application in the real world.

When issues (bugs) are found, then an automated test is created to reproduce the issue. Then the issue is fixed. This automated test is now part of the permanent tests used to verify the application. This means a given bug will never be re-introduced into application.

Roadmap

What are the medium-term plans for SimpleMES development? The high-level roadmap is shown below.

This is subject to change and just a general guide. We (the development team) welcome suggestions on priorities and directions.

Alpha (0.8 - 2021)

The main goals for the alpha release is to demonstrate the technology and key approaches. The main deliverable is a public Demo Server that allows potential users to work with the system.

The planned features include:

  • Order processing (no routing)

  • Simple Assembly

  • Barcode Dashboard

  • Framework

    • Modular structure

  • Deployment

    • Manual Docker/WAR deployment

  • Reports

    • Assembly

    • Production

Beta (0.9 - 2022)

The main goals of the beta release is a feature complete implementation of the high-level features. This is mainly a functional implementation.

The planned features include:

  • Full LSN (lot/Serial Number) Support

  • Defect Tracking

  • Order Archiving (manual and automatic)

  • Full Routing Support in GUIs

Release 1.0 (?)

This the ready for production release. From this point, new features and issues fixes will be pushed to the images and live servers frequently.

The planned features include:

  • Open Customizations

  • Deployment

    • Simple Deployment/Update to a Cloud Service (via Docker, etc).

  • Hosted solution ($)

    • Multi-tenant (via separate DB) support.

Demo Server

A demo server is hosted on a cloud server (Heroku) for demo purposes. The database is periodically purged.

The server is https://simplemes-demo.herokuapp.com/. You can log in with the 'admin' user with a password of 'admin'.

Table 2. ASCIIDOCTOR Attributes

asciidoctor-version

2.0.10

docdir

/home/runner/work/simplemes-core/simplemes-core/mes/src/main/docs/asciidoc

docfile

/home/runner/work/simplemes-core/simplemes-core/mes/src/main/docs/asciidoc/guide.adoc

doctype

book

imagesdir-build

images

imagesdir-src

images

imagesdir

images