The systematic pipeline that extracts RMS master data and makes it available to every downstream system in the retail ecosystem.
What is the Foundation Data Layer?
The Foundation Data Layer (FDL) is RMS's systematic mechanism for extracting master data and making it available to downstream systems. While the RIB handles real-time message-based integration, the FDL handles bulk batch-based data feeds.
Think of the FDL as the "data export engine" of RMS. Every night, FDL programs extract items, locations, suppliers, hierarchies, and inventory data from RMS tables, flatten them into standardized formats, and deposit them for downstream consumption.
Extract Types: Full vs. Delta
FDL supports two extraction strategies:
Full Extract
A full extract dumps the complete contents of the source entity. Every row in the source table is included regardless of when it was last modified.
When to use:
- Initial data load for a new downstream system
- Data warehouse rebuild after a failed ETL
- Periodic data reconciliation (monthly full refresh)
Trade-off: Full extracts on large tables (ITEM_MASTER: 5M rows, ITEM_LOC_SOH: 500M rows) are extremely resource-intensive and time-consuming.
Delta Extract
A delta extract includes only rows that have been created, modified, or deleted since the last extraction run. RMS tracks changes using LAST_UPDATE_DATETIME columns on most tables.
When to use:
- Nightly incremental feeds to the data warehouse
- Daily updates to planning systems (RPAS)
- Regular synchronization with third-party systems
Trade-off: Delta extracts are fast (typically 1-5% of full volume) but require accurate LAST_UPDATE_DATETIME values. If a batch job updates rows without setting this column, those changes are invisible to delta extracts.
Extraction Logic
FDL Entity Catalog
FDL extracts cover the major RMS data entities:
| Entity | Source Tables | Typical Volume | Frequency |
|---|---|---|---|
| Item | ITEM_MASTER, ITEM_SUPP_COUNTRY | 5M rows (full) / 10K (delta) | Nightly delta |
| Item-Location | ITEM_LOC, ITEM_LOC_SOH | 500M rows (full) / 500K (delta) | Nightly delta |
| Location | STORE, WH, COMPHEAD | 10K rows | Weekly full |
| Supplier | SUPS, ADDR | 50K rows | Weekly full |
| Merchandise Hierarchy | DEPS, CLASS, SUBCLASS | 5K rows | Weekly full |
| Organizational Hierarchy | COMPHEAD, CHAIN, AREA, REGION, DISTRICT | 500 rows | Monthly full |
| Price | ITEM_LOC (unit_retail) | 500M rows (full) / 100K (delta) | Nightly delta |
| Inventory Position | ITEM_LOC_SOH | 500M rows (full) / 1M (delta) | Nightly delta |
| Purchase Orders | ORDHEAD, ORDSKU | 200K (open POs) | Nightly delta |
FDL Staging Tables
Extracted data is loaded into dedicated FDL staging tables that flatten the normalized RMS structure:
| Column | Type | Description |
|---|---|---|
FDL_ITEMPK | Flattened Item Data | A denormalized view of item data combining ITEM_MASTER, ITEM_SUPP_COUNTRY, and UDA attributes into a single wide row. Contains item, description, hierarchy (dept/class/subclass), status, diff values, primary supplier, primary country, and UDA values. |
FDL_ITEM_LOCPK | Item-Location Data | Combines ITEM_LOC and ITEM_LOC_SOH into a single row per item/location. Contains ranging status, current retail, SOH, on-order, in-transit, replenishment parameters, and source warehouse. |
FDL_SUPPLIER | Supplier Data | Flattened supplier data including name, addresses, contacts, terms, and EDI capabilities. |
FDL_CONTROL | Extract Control | Control table tracking last extraction datetime, row counts, and status for each FDL entity. Used by delta extracts to determine the extraction window. |
Downstream Consumer Mapping
| Consumer System | FDL Entities Used | Purpose |
|---|---|---|
| Retail Insights (RI) | Items, Item-Loc, Prices, Inventory, POs | Populates the RI data warehouse for analytics |
| RPAS (Planning) | Items, Item-Loc, Inventory, Sales History | Feeds demand forecasting and MFP |
| Allocation | Items, Item-Loc, Inventory, Store Grades | Drives allocation quantity calculations |
| Xstore/Xcenter | Items, Prices, Promotions | Distributes product data to POS registers |
| Third-Party WMS | Items, POs, Inventory | Enables warehouse management integration |
| E-Commerce Platform | Items, Prices, Inventory | Product catalog and availability for web stores |
| Data Lake / Analytics | All entities | Enterprise-wide analytics and reporting |
ODI Integration Patterns
In on-premise deployments, Oracle Data Integrator (ODI) is the primary tool for orchestrating FDL data flows:
- ODI Interface: Defines the source (FDL staging tables), transformation logic, and target (data warehouse tables)
- Knowledge Modules: ODI's pluggable components that generate optimized SQL for extract, load, and transformation
- Load Plans: Orchestrate the execution sequence (extract items before item-locations, because of dependencies)
- Error Handling: ODI captures rejected rows in error tables for review and reprocessing
ODI Integration Pattern
RMS Database ODI Server Target System
┌──────────────┐ ┌──────────────────────┐ ┌──────────────┐
│ FDL Staging │────▶│ ODI Interface: │───▶│ RI Data │
│ Tables │ │ │ │ Warehouse │
│ │ │ 1. Extract from FDL │ │ │
│ FDL_ITEM │ │ 2. Transform │ │ W_PRODUCT_D │
│ FDL_ITEM_LOC │ │ (cleanse, conform)│ │ W_RTL_INV_F │
│ FDL_SUPPLIER │ │ 3. Load to target │ │ │
└──────────────┘ └──────────────────────┘ └──────────────┘
BDI in Cloud Deployments
In Oracle Retail Cloud (v19+), the FDL concept evolves into BDI (Bulk Data Integration):
- REST-Based Extraction: Instead of direct database queries against FDL tables, BDI exposes REST API endpoints for data extraction
- Cloud Object Storage: Extracted data is deposited in Oracle Cloud Object Storage buckets rather than on-premise file systems
- Managed Scheduling: BDI extraction schedules are managed through POM, not external schedulers
- Pre-Built Connectors: BDI ships with pre-built connectors for all major downstream systems
Best Practices
Important Gotchas
- !Always validate delta extracts against periodic full extracts. If the delta is consistently missing changes (because LAST_UPDATE_DATETIME is not being set by a custom batch), the downstream system's data will drift from RMS truth.
- !Schedule FDL extracts AFTER the nightly RMS batch completes. If you extract during the batch window, you may capture partial data (some items updated, others not yet processed).
- !Monitor FDL_CONTROL for anomalies. If a delta extract returns 0 rows for ITEM on a night when 500 items were modified, the extraction logic has a bug.
- !FDL staging tables should be truncated after successful downstream consumption. Allowing them to grow indefinitely wastes database space and slows extraction queries.
Key Takeaways
- The FDL is RMS's bulk data extraction pipeline, providing master data to downstream systems like RI, RPAS, Allocation, and Xstore.
- Full extracts dump complete datasets (resource-intensive); delta extracts capture only changes since the last run (efficient but depends on accurate timestamps).
- FDL staging tables (FDL_ITEM, FDL_ITEM_LOC) denormalize RMS's normalized schema into consumer-friendly flat structures.
- ODI orchestrates FDL data flows in on-premise deployments; BDI replaces ODI in cloud (v19+) deployments with REST-based extraction.
- Always schedule FDL extractions after the nightly batch window and validate delta extract completeness against periodic full refreshes.


