Real-time inventory visibility dashboard built in Tableau using Oracle ERP with 15-minute ETL refresh

Wanted to share our real-time inventory visibility solution built with Tableau Server 2023.3 and Oracle ERP. Our distribution centers needed accurate, near-real-time inventory levels to prevent stockouts and optimize warehouse operations.

Previously, inventory reports were generated daily from overnight batch extracts, meaning warehouse managers worked with data up to 36 hours old. This led to stockouts, over-ordering, and poor space utilization across 12 distribution centers.

We implemented an automated ETL pipeline that extracts inventory transactions from Oracle ERP every 15 minutes, validates quantities against physical locations, and refreshes Tableau dashboards. The solution provides real-time visibility into inventory levels, pending receipts, and allocated quantities. Since implementation, stockouts decreased 35%, excess inventory reduced 22%, and warehouse managers report much better operational control. Dashboard accuracy improved dramatically with the frequent refresh cycle.

What ETL tool are you using for the 15-minute refresh cycle? Also, how large is your inventory dataset? We’re evaluating similar requirements but concerned about Tableau extract refresh performance if we’re updating every 15 minutes. Our inventory data is about 2 million SKU-location combinations across our network. Did you use incremental extracts or full refresh each cycle?

How do you validate inventory quantities against physical locations? That sounds like a complex data quality check. Are you integrating with warehouse management system (WMS) data, or is this validation purely within Oracle ERP? Also interested in how you handle inventory adjustments and cycle count corrections that might create data discrepancies between systems.

We use Informatica PowerCenter for ETL orchestration, but the architecture could work with other tools. Our dataset is similar size - 1.8 million SKU-location combinations. We absolutely use incremental extracts, not full refresh. The ETL job only pulls inventory records modified in the last 30 minutes (with 15-minute overlap for safety). This reduces extract volume from 1.8M rows to typically 5K-15K rows per cycle. Tableau incremental extract refresh completes in 45-90 seconds, well within our 15-minute window.

Good question on ERP performance impact. We created read-only materialized views in Oracle specifically for the ETL process. The views pre-join inventory tables (MTL_ONHAND_QUANTITIES, MTL_MATERIAL_TRANSACTIONS) and are refreshed every 10 minutes via Oracle scheduled job. Our ETL extracts from these materialized views, not base tables, which minimizes impact on transactional systems. We also run the ETL during off-peak windows when possible (early morning, late evening), though business needs require 15-minute updates during core hours 8 AM - 6 PM.

Let me provide comprehensive details on our implementation architecture and operational results:

System Architecture Overview:

Our solution integrates Oracle ERP (E-Business Suite 12.2) with Tableau Server 2023.3 through an automated ETL pipeline that delivers 15-minute refresh intervals for real-time inventory visibility across 12 distribution centers.

1. Automated ETL for Inventory (15-Minute Refresh Cycle):

Oracle Materialized View Foundation: We created optimized materialized views in Oracle to pre-aggregate inventory data and minimize ERP performance impact:

CREATE MATERIALIZED VIEW mv_inventory_snapshot
BUILD IMMEDIATE
REFRESH FAST ON DEMAND
AS SELECT
  moq.inventory_item_id,
  moq.organization_id,
  moq.subinventory_code,
  moq.locator_id,
  SUM(moq.transaction_quantity) as on_hand_qty,
  moq.last_update_date
FROM mtl_onhand_quantities moq
GROUP BY moq.inventory_item_id, moq.organization_id,
         moq.subinventory_code, moq.locator_id, moq.last_update_date;

This materialized view refreshes every 10 minutes via Oracle DBMS_SCHEDULER job, providing a stable query target for ETL that doesn’t hit live transactional tables.

Informatica PowerCenter ETL Workflow:

Job Schedule: Runs every 15 minutes, 24/7 (96 executions per day)

Workflow Steps:

  1. Incremental Extract: Query mv_inventory_snapshot for records modified since (current_time - 30 minutes)

    • 30-minute lookback window provides safety buffer for late-arriving transactions
    • Typical extract volume: 5K-15K rows per cycle (vs 1.8M full dataset)
  2. Data Validation Layer: Three validation checks before loading to Tableau: a) Quantity Validation: on_hand_qty must be >= 0 (negative inventory flags exception)

    b) Location Validation: subinventory_code and locator_id must exist in master location table

    c) SKU Validation: inventory_item_id must be active item in item master

  3. Physical Location Cross-Check: We integrate with warehouse management system (WMS - Manhattan Associates) to validate Oracle ERP inventory against WMS physical locations:

    • ETL joins Oracle inventory data with WMS location master
    • Flags discrepancies where Oracle shows inventory but WMS location doesn’t exist
    • Discrepancy records route to exception queue for warehouse team investigation
    • This catches data entry errors where inventory is assigned to wrong location codes
  4. Staging Database Load: Validated records load to SQL Server staging table with timestamp

  5. Tableau Extract Refresh Trigger: Final workflow step calls Python script to trigger Tableau incremental extract refresh via REST API

    # Pseudocode - Key implementation steps:
    1. Authenticate to Tableau Server using service account token
    2. Retrieve datasource ID for 'Real-Time Inventory Dashboard'
    3. POST to /api/3.x/sites/{site-id}/datasources/{ds-id}/refresh
    4. Monitor refresh job status with 10-second polling
    5. Log completion metrics (rows updated, duration) to monitoring database
    6. Send alert email if refresh fails or exceeds 120-second threshold
    # See documentation: Tableau REST API - Datasource Refresh Methods
    
    

**2. 15-Minute Refresh Interval Implementation:**

**Performance Optimization:**
- Incremental extract strategy reduces data volume by 99.3% (15K rows vs 1.8M full dataset)
- Tableau incremental refresh completes in 45-90 seconds (well within 15-minute window)
- Oracle materialized view refresh runs in parallel (every 10 minutes), stays ahead of ETL extraction
- Peak hour performance: ETL completes in 105 seconds during high-transaction periods (9-11 AM)

**Scheduling Logic:**
- ETL executes at :00, :15, :30, :45 minutes past each hour
- Informatica scheduler manages dependencies: ETL waits if previous cycle still running
- Tableau refresh triggered only after successful ETL validation (prevents corrupt data)
- Off-peak hours (11 PM - 5 AM): Reduced to 30-minute intervals to minimize overnight processing load

**3. Improved Dashboard Accuracy:**

**Before Implementation (Daily Batch Extracts):**
- Inventory data latency: 12-36 hours old
- Dashboard accuracy: 78% (measured by comparison to physical cycle counts)
- Stockout incidents: 145 per month across 12 DCs
- Excess inventory carrying cost: $2.8M

**After Implementation (15-Minute Refresh):**
- Inventory data latency: 15-30 minutes (real-time for business purposes)
- Dashboard accuracy: 96.5% (validated against cycle counts)
- Stockout incidents: 94 per month (35% reduction)
- Excess inventory carrying cost: $2.2M (22% reduction)
- Warehouse manager satisfaction score: increased from 6.2 to 8.7 out of 10

**Dashboard Features Enabled by Real-Time Data:**
- Live inventory heat map showing stock levels by location (red/yellow/green thresholds)
- Pending receipts vs allocated quantities (prevents over-promising to customers)
- Intraday inventory velocity tracking (identifies fast-moving SKUs requiring replenishment)
- Stock transfer recommendations between DCs based on current levels
- Automated alerts when inventory drops below reorder point

**4. Error Handling & Disaster Recovery:**

**Automated Monitoring:**
- Informatica workflow sends email alerts on ETL failure within 2 minutes
- Tableau Server admin views monitored for extract refresh failures
- Custom monitoring dashboard shows ETL execution history, duration trends, failure patterns
- PagerDuty integration for critical failures during business hours

**Recovery Procedures:**
- If single ETL cycle fails: Next cycle (15 minutes later) includes failed cycle's data via 30-minute lookback window
- If multiple consecutive failures: Automated failover to 1-hour batch extract as backup
- If Tableau extract corrupted: Restore from previous successful extract (stored with 24-hour retention)
- Average recovery time: 22 minutes from failure detection to dashboard restoration

**Disaster Recovery Testing:**
- Monthly DR drills simulate ETL failure, network outage, Oracle database unavailability
- Documented runbooks for 8 failure scenarios
- Backup Tableau Server in secondary datacenter with 30-minute replication lag

**5. Handling Inventory Adjustments & Cycle Counts:**

**Cycle Count Integration:**
When physical cycle counts are performed:
- Oracle ERP records adjustment transaction (transaction_type = 'Cycle Count Adjustment')
- ETL captures adjustment in next 15-minute cycle
- Dashboard shows 'Recently Adjusted' indicator for 24 hours after cycle count
- Adjustment transactions route to validation queue - large variances (>10%) flagged for investigation

**Inventory Adjustment Workflow:**
- Warehouse managers can submit inventory adjustments through Oracle ERP mobile interface
- Adjustments appear in Tableau dashboard within 15-30 minutes
- Audit trail maintained: dashboard shows adjustment history by user, timestamp, reason code
- Monthly reconciliation report compares Oracle ERP inventory to WMS physical locations

**6. Operational Results & Business Impact:**

**Quantified Benefits:**
- Stockout reduction: 35% (145 → 94 incidents/month)
- Excess inventory reduction: 22% ($2.8M → $2.2M carrying cost)
- Order fulfillment accuracy: improved from 91% to 97%
- Warehouse space utilization: increased from 78% to 86%
- Inventory turns: increased from 8.2 to 9.7 annually

**Operational Improvements:**
- Warehouse managers make intraday replenishment decisions based on current data
- Customer service team has real-time inventory visibility for order promising
- Reduced emergency stock transfers between DCs (cost savings on expedited freight)
- Better coordination between receiving, putaway, and picking operations
- Improved accuracy enables higher inventory service levels with lower stock holdings

**User Adoption:**
- 98% of warehouse managers access dashboard daily (vs 45% with old daily reports)
- Average 12 dashboard views per user per day (high engagement)
- Mobile access via Tableau Mobile enables floor-level decision making

**Lessons Learned:**
1. Materialized views in Oracle are essential for minimizing ERP performance impact
2. Incremental extracts are mandatory for 15-minute refresh intervals at scale
3. Data validation layer prevents corrupt data from reaching dashboards
4. Integration with WMS provides critical physical location validation
5. Automated monitoring and alerting are non-negotiable for real-time pipelines
6. User training on data latency (15-30 minutes) manages expectations appropriately
7. The business value of real-time visibility far exceeds implementation complexity

This architecture can be adapted for other real-time operational dashboards requiring frequent refresh intervals. The key success factors are incremental data extraction, robust validation, and automated error handling to maintain dashboard reliability.