Food Manufacturer’s ERP system used standard costing models with assumptions that often varied up to 50% from reality. With sales demand exceeding capacity, management needed to decide which orders to accept or decline, but ERP data couldn’t reliably show true profitability by SKU.
<div style="margin:0;padding:0;line-height:0;"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 220" width="100%" style="display:block;margin:0;padding:0;vertical-align:top;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:13px;"> <defs> <marker id="arrow" viewBox="0 0 10 10" refX="10" refY="5" markerWidth="10" markerHeight="10" orient="auto"> <path d="M0 0 L10 5 L0 10 Z" fill="#333"/> </marker> </defs> <!-- Header --> <text x="335" y="16">[ DataHub (TapProvider) / UI ]</text> <!-- Vertical to split --> <line x1="450" y1="22" x2="450" y2="40" stroke="#333"/> <!-- Split bar --> <line x1="40" y1="40" x2="860" y2="40" stroke="#333"/> <!-- Left branch (label sits above path to save vertical space) --> <text x="160" y="32">reads historical + alarms</text> <line x1="160" y1="40" x2="160" y2="70" stroke="#333"/> <!-- Right branch --> <text x="640" y="32">reads live device values</text> <line x1="740" y1="40" x2="740" y2="70" stroke="#333"/> <!-- Left box: Historian --> <rect x="40" y="70" width="330" height="90" rx="8" ry="8" fill="#f9f9f9" stroke="#333"/> <text x="58" y="90">[ Postgres + TimescaleDB ]</text> <text x="58" y="112">Historian + Alarms</text> <!-- Right box: Edge Sites --> <rect x="470" y="70" width="390" height="120" rx="8" ry="8" fill="#f9f9f9" stroke="#333"/> <text x="488" y="90">[ Edge Sites ×5 ]</text> <text x="488" y="110">FrameworX EdgeConnect</text> <text x="506" y="128">• Collects Modbus (read)</text> <text x="506" y="144">• Publishes to DNP3 (write)</text> <text x="506" y="160">• Exposes device values (read)</text> <text x="506" y="176">• Sends timeseries/alarms ? Historian</text> <!-- Arrow from Edge Sites to Historian --> <line x1="470" y1="130" x2="370" y2="130" stroke="#333" marker-end="url(#arrow)"/> </svg> </div> |
Integrated real production data from MES, historian, and ERP with costing models to determine actual cost per SKU. Data included:
Raw material consumption
Packaging usage
Changeover times
Waste and rework
OEE and production states
FrameworX dashboards visualized this costing intelligence, enabling sales and operations to base decisions on actual margins rather than ERP standards.
Technical Specifications:
ERP: Microsoft D365 (Cloud)
MES: GE Plant Applications
Historian: GE Proficy Historian
Front End: Tatsoft FrameworX (dashboards for costing analysis)
PLCs: Rockwell Automation
Scope: Cost modeling based on years of historical production data
Real-time integration of production metrics with ERP costing
FrameworX dashboards to visualize true SKU profitability
Flexible data model that grows as more production metrics are tracked
Identified SKUs and customers that appeared profitable but actually lost money
Allowed sales to prioritize high-margin orders during capacity constraints
Improved bottom line by 10–12% simply by shedding low-margin products
Provided sales and marketing tools for negotiating based on real costs