Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

1. The Problem

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.

2. The Solution:

HTML
<div>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 520" width="100%" height="520" style="font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace; font-size:14px; display:block; margin:0 auto;">
  <defs>
    <marker id="arrow" viewBox="0 0 10 10" refX="10" refY="5" markerWidth="10" markerHeight="10" orient="auto-start-reverse">
      <path d="M 0 0 L 10 5 L 0 10 z" fill="#333"/>
    </marker>
  </defs>

  <!-- Title -->
  <text x="350" y="30">[ DataHub (TapProvider) / UI ]</text>

  <!-- Vertical line -->
  <line x1="500" y1="40" x2="500" y2="80" stroke="#333"/>

  <!-- Horizontal split -->
  <line x1="100" y1="80" x2="900" y2="80" stroke="#333"/>

  <!-- Left branch -->
  <line x1="220" y1="80" x2="220" y2="130" stroke="#333"/>
  <text x="240" y="110">reads historical + alarms</text>

  <!-- Right branch -->
  <line x1="780" y1="80" x2="780" y2="130" stroke="#333"/>
  <text x="600" y="110">reads live device values</text>

  <!-- Left box -->
  <rect x="60" y="130" width="320" height="110" rx="10" ry="10" fill="#f9f9f9" stroke="#333"/>
  <text x="80" y="155">[ Postgres + TimescaleDB ]</text>
  <text x="80" y="180">Historian + Alarms</text>

  <!-- Right box -->
  <rect x="520" y="130" width="400" height="180" rx="10" ry="10" fill="#f9f9f9" stroke="#333"/>
  <text x="540" y="155">[ Edge Sites ×5 ]</text>
  <text x="540" y="180">FrameworX EdgeConnect</text>
  <text x="560" y="205">• Collects Modbus (read)</text>
  <text x="560" y="230">• Publishes to DNP3 (write)</text>
  <text x="560" y="255">• Exposes device values (read)</text>
  <text x="560" y="280">• Sends timeseries/alarms ? Historian</text>

  <!-- Arrow -->
  <line x1="520" y1="220" x2="380" y2="220" 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

3. Key Enablers:

  • 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

4. The Results:

  • 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