> For the complete documentation index, see [llms.txt](https://docs.violetlabs.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.violetlabs.com/features/inventory-engine.md).

# Inventory Engine

Violet's <mark style="color:purple;">**Inventory Engine**</mark> fuses data between your MES and ERP, connecting high-level business planning with real-time factory execution. This seamless data flow eliminates manual errors, bridges department silos, and enables efficiency across the hardware production lifecycle.

With Violet's Inventory Engine, your organization can ensure supply chain has an accurate view of demand and inventory consumption, finance can account for actual production costs and the value of available inventory assets, and manufacturing understands what components and subassemblies are available to respond to work orders. &#x20;

The configurable and flexible engine provides synchronization of any or all of the following data:

* Purchase Orders, Vendor Bills and Item Receipts
* Vendors
* Parts
* Work Orders
* Inventory Movements
* True Costs (calculated to include freight, taxes, tariffs, etc., on a unit price basis)

## Why integrate ERP and MES?

<details>

<summary><strong>Finance and Accounting: Precise Costing</strong></summary>

* Understand precise costs to deliver products: incorporate component and material consumption from the MES to understand actual production costs, protecting your margins
* Track real-time material consumption, minimizing excess inventory and improving cash flow
* Eliminate the administrative burden of data exchange from the manufacturing floor, avoiding human error and accelerating the invoicing and financial reporting processes

</details>

<details>

<summary><strong>Supply Chain: Accurate Inventory</strong></summary>

* Real-time inventory synchronization facilitates procurement based on actual consumption data, avoiding excess inventory (or worse, insufficient inventory)
* Improved accuracy of demand forecasting with enhanced consumption data

</details>

<details>

<summary><strong>Manufacturing: Build Status and Traceability</strong></summary>

* Live production data is available in the ERP system, enabling planners to adapt schedules based on current factory conditions, rather than outdated assumptions
* Traceability of lot and serialized inventory throughout the entire build process accelerates compliance processes and anomoly investigations
* Synchronization of approved parts and substitutions on the manufacturing Bill of Materials ensures the appropriate parts are ordered by the procurement team

</details>

<details>

<summary><strong>IT and System Administrators: Data Consistency</strong></summary>

* Unify and align disparate systems of records, eliminating data duplication and inconsistencies
* Enhanced scalability and flexibility of the enterprise architecture as legacy systems are upgraded, or new tools are introduced as the business matures
* Hub-and-spoke architecture avoids costly and brittle point-to-point integrations
* Visibility into each data synchronization event ensure data mismatches and errors are caught before polluting the other system

</details>

## Overview

This feature syncs data between your MES and your ERP, ensuring accurate, real-time information across your enterprise - from your supply chain team to the manufacturing floor.

{% columns %}
{% column %}
Violet orchestrates data synchronization to enable:

* Procurement of Manufacturing-approved parts per the mBOM
* Tracking of received inventory and its status (regardless of which system you use for receiving) throughout build locations
* Alignment of planned vs. issued work orders and corresponding inventory reservation
* Closed-loop inventory consumption and accounting once finished goods are completed
  {% endcolumn %}

{% column %}

<figure><img src="/files/P4SFqj0aRv9p4XEEjt8n" alt=""><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

### How it works

*Your teams continue to work in their preferred systems of record. Violet identifies changes your team made each time data is fetched.*

According to the workflow rules you've established, Violet will identify the new, modified, or removed data to synchronize with downstream tool(s). Data syncs can be configured to run automatically each time changes are identified, or set to require your approval before executing. You control how often syncs run, which entities are allowed to sync, and how attributes will map across systems. Violet maintains detailed entity and attribute-level records of each data sync run, enabling you to resolve process issues before they grow.

Need to update your data synchronization approach as your processes evolve or mature? No problem - just edit the workflow's filters and/or property mappings, or create a new workflow.

Need to send the same data to multiple systems? No problem - just create another workflow with a different downstream tool.

### Getting started

{% stepper %}
{% step %}

### Connect your ERP and MES systems in Violet

* Follow the instructions below to securely connect Violet to your tools via a no-code process.
  * ERP: [NetSuite](/apps/n/netsuite.md), [QuickBooks](/apps/q/quickbooks.md)
  * MES: [Boltline](/apps/b/boltline.md), [ION](/apps/i/ion.md), [Manufacturo](/apps/m/manufacturo.md)
* Use a tool not on the list? Contact us!
  {% endstep %}

{% step %}

### Create a Violet Workflow for each process

For each leg of your build process you'd like Violet to orchestrate, [create a workflow](https://docs.violetlabs.com/features/workflows/data-sync-workflows/getting-started#creating-a-workflow) with our no-code workflow builder

* Select your source and target tools, and the data item to sync
* Establish filters to control which items are permitted to flow across systems
* Map attributes between the tools to accurately transmit information

Commonly, the following workflows are part of the Inventory Engine capability:

1. Purchase Orders and pending, on-order inventory
2. Item receipts and on-hand inventory
3. Work Orders and reserved inventory
4. As-built assemblies and consumed inventory, including scrap
5. Inventory movements to/from the warehouse and production floor
   {% endstep %}

{% step %}

### Configure and initialize each workflow

* [Configure each workflow to run](https://docs.violetlabs.com/features/workflows/data-sync-workflows/getting-started#step-9-choose-execution-method) on a scheduled interval or automatically each time Violet identifies changes according to your workflow rules.
* As helpful, use Test Mode to inspect changes Violet identified between the two systems and confirm data appears as expected prior to enabling the live workflow.
  {% endstep %}

{% step %}

### Monitor workflows

* Subscribe to workflows to receive [notifications](https://docs.violetlabs.com/features/workflows/data-sync-workflows/getting-started#notifications) about successes and/or failures
* Review run [history](https://docs.violetlabs.com/features/workflows/data-sync-workflows/getting-started#notifications), including skipped syncs (ie. ones that didn't meet your workflow rules) and failed syncs
  {% endstep %}
  {% endstepper %}

## Supported tools and data types

### Tools

The following tools are available today. Contact us if you'd like an alternative application.

* ERP: [NetSuite](/apps/n/netsuite.md), [QuickBooks](/apps/q/quickbooks.md)
* MES: [Boltline](/apps/b/boltline.md), [ION](/apps/i/ion.md), [Manufacturo](/apps/m/manufacturo.md)

Other purchasing applications can be included as well: [Ramp](/apps/r/ramp.md), [Silkline](/apps/s/silkline.md), [BILL](/apps/b/bill.md), [Xero](/apps/x/xero.md)

Violet also supports integration of PLM data, for example from [Teamcenter](/integrations/s-z/teamcenter.md), [Arena](/apps/a/arena.md), [Solidworks PDM](/apps/s/solidworks-pdm.md), [Duro](/apps/d/duro.md), [Aras](/apps/a/aras.md) or [Windchill](/apps/w/windchill.md).

### Data types

The Inventory Engine is configurable to support your specific business processes, whether you use your ERP for purchasing or have a separate procurement platform; whether you receive orders in your ERP or MES; etc.

The below data types and corresponding properties are typically synchronized by Violet. Any additional properties, including custom attributes, can be synced as well upon request.

<details>

<summary>Purchase Orders</summary>

* PO Number
* Amount
* Promise Date
* Status
* Vendor
* Shipping Address
* Creator
* Created Date
* Last Modified

**PO Line Items**

* Quantity
* Amount
* Status
* Exp. Receipt Date
* Part Name
* Part Number and Revision
* Created Date
* Last Modified

</details>

<details>

<summary>Vendors</summary>

* Company Name
* Email
* Billing Address
* Shipping Address
* Phone Number
* Contact Names
* Description
* Created Date
* Last Modified

</details>

<details>

<summary>Parts / Items</summary>

* Part Number and Revision
* Part Name
* Quantity Available
* Quantity On Hand
* Tax Schedule
* COGS Account
* Asset Account
* Created Date
* Last Modified

</details>

<details>

<summary>Item Receipts</summary>

* Date Received
* Corresponding Purchase Order ("Created From")
* Vendor
* Quantity
* Location
* Item
* Memo
* Currency
* Exchange Rate
* Posting Period
* Subsidiary
* Created Date
* Last Modified

</details>

<details>

<summary>Inventory Items</summary>

* Part Number, Revision
* Lot/Serial Number
* Warehouse and/or Bin Location
* Quantity on Hand
* Inventory Status (available, on hold)
* Pedigree (R\&D vs. Production)
* Production Date
* Expiration Date
* Unit Cost

</details>

<details>

<summary>Inventory Transactions</summary>

* Creation of inventory upon receipt or assembly build
* Decrement of inventory upon consumption (in as-built or scrap)
* Transfer of inventory to/from location
* Split inventory

</details>

<details>

<summary>As-Built Assemblies and Finished Goods</summary>

* Part Number, Revision
* As-Built Bill of Materials (aBOM)
* Lot/Serial Number of finished good and consumed components
* Warehouse and/or Bin Location
* Quantity Consumed
* Inventory Status (available, on hold)
* Production Date

</details>

## FAQ

<details>

<summary>How frequently is data synced?</summary>

Data can be synced on a scheduled basis or on an event-driven basis, as long as webhooks are provided by your systems.

</details>

<details>

<summary>What direction does data flow?</summary>

You can control the source of truth and direction of data flow for every data type. For example, you may want to sync NetSuite Vendors to ION Suppliers, and you may want to enable bi-directional data sync between NetSuite and ION Purchase Orders.

Some customers wish to receive parts in their ERP, while others prefer to receive in their MES. Violet supports either configuration.

</details>

<details>

<summary>Do you require any Netsuite modules?</summary>

It depends on your desired workflow scope. Most of our customers typically have NetSuite's **Advanced Inventory** module enabled.

</details>

<details>

<summary>How long does it take for completed assemblies to appear in my ERP?</summary>

Less than 10 minutes if you configure Violet to fetch updates that frequently. If you're using webhook-based integrations, usually less than 5 minutes.

</details>

<details>

<summary>How many line items in an assembly can Violet handle?</summary>

We've load tested assemblies with more than 200 lines and see response times of a few minutes. Above 200 lines, sync durations will grow, and this is typically a limitation of your connected application. Some adjustments may be possible, including permitting additional concurrent processes.&#x20;

Violet builds assemblies incrementally up the BOM, not all at once, which expedites data syncronization.

</details>

&#x20;


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.violetlabs.com/features/inventory-engine.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
