The nervous system of Oracle Retail — every time an item is created, a PO is approved, or a price changes, a RIB message carries that event to every system that needs to know.
What is the RIB?
The Retail Integration Bus (RIB) is Oracle's real-time messaging infrastructure that connects all Oracle Retail applications. When something changes in one system, the RIB ensures every other system that cares about that change receives a notification.
Without the RIB, each Oracle Retail module (RMS, Xstore, RPCS, ReIM, SIOCS) would need point-to-point integrations with every other module — an N×N integration nightmare. The RIB provides a centralized hub:
RIB Architecture & Components
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ RMS │ │ RPCS │ │ Xstore │ │ SIOCS │ │ ReIM │
│ │ │ │ │ │ │ │ │ │
│ Publisher│ │ Publisher │ │ Publisher│ │ Publisher│ │ Publisher│
│ + │ │ + │ │ + │ │ + │ │ + │
│ Subscriber│ │ Subscriber│ │ Subscriber│ │ Subscriber│ │ Subscriber│
└────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘
│ │ │ │ │
└──────────────┼──────────────┼──────────────┼──────────────┘
│ │ │
┌─────▼──────────────▼──────────────▼─────┐
│ │
│ WEBLOGIC JMS SERVER │
│ │
│ ┌────────────┐ ┌────────────┐ │
│ │ Topic: │ │ Topic: │ ... │
│ │ ItemDesc │ │ PrcChgDesc │ │
│ └────────────┘ └────────────┘ │
│ │
│ ┌────────────┐ ┌────────────┐ │
│ │ Topic: │ │ Topic: │ │
│ │ ASNDesc │ │ InvAdjDesc │ │
│ └────────────┘ └────────────┘ │
│ │
└──────────────────────────────────────────┘
Key Components
- WebLogic JMS Server: The message broker that hosts JMS topics and manages message delivery
- JMS Topics: Named message channels. Each topic carries a specific type of business event (ItemDesc, PrcChgDesc, etc.)
- RIB Adapters: Application-specific connectors that publish messages to and subscribe to messages from JMS topics
- Message Payloads: XML documents conforming to the Oracle Retail Integration XML schema (RIB XML)
The Pub/Sub Messaging Model
RIB uses the Publish/Subscribe (Pub/Sub) pattern:
- Publisher: The system that generates the event. When RMS creates an item, the RMS RIB adapter publishes an
ItemDescmessage. - Topic: The logical channel. The
ItemDesctopic carries all item-related events. - Subscriber: Systems that need the event. Xstore subscribes to
ItemDescto update its local item database. RPCS subscribes toItemDescto set up pricing for new items.
Key Advantages
- Loose Coupling: RMS doesn't know (or care) how many systems subscribe to its messages. It just publishes to the topic.
- Guaranteed Delivery: JMS persists messages to disk. If Xstore is temporarily offline, messages queue up and are delivered when it reconnects.
- Independent Processing: Each subscriber processes messages at its own pace. A slow subscriber doesn't block other subscribers.
- Event Replay: Messages can be replayed from the JMS store if a subscriber needs to reprocess historical events.
Message Families & Types
RIB organizes messages into families based on business domain:
| Family | Topic Name | Publisher | Subscribers | Event |
|---|---|---|---|---|
| Item | ItemDesc | RMS | RPCS, Xstore, SIOCS, RI | Item created/modified |
| Item-Location | ItemLocDesc | RMS | Xstore, SIOCS | Item ranged/de-ranged |
| Price Change | PrcChgDesc | RPCS | Xstore | Price change executed |
| Promotion | PrcChgDesc | RPCS | Xstore | Promotion activated |
| PO | PODesc | RMS | ReIM, RTM | PO created/modified |
| ASN | ASNDesc | RMS, WMS | SIOCS, RMS | Shipment dispatched/received |
| Inventory Adjust | InvAdjDesc | SIOCS | RMS | Stock count adjustment |
| Supplier | SupDesc | RMS | RPCS, ReIM | Supplier created/modified |
| Location | OrgHierDesc | RMS | All | Store/warehouse created |
Message Types Within a Family
Each message family supports multiple operation types:
- Create: A new entity was created (new item, new PO)
- Modify: An existing entity was changed (item description updated, PO quantity changed)
- Delete: An entity was removed or inactivated
- Detail Create/Modify: Child records were added (PO line items, item-location records)
RIB Adapters
Each Oracle Retail application has a dedicated RIB adapter — a Java application deployed on WebLogic that handles message publishing and subscribing:
| Adapter | Application | Direction |
|---|---|---|
| rib-rms | RMS | Publishes item, PO, supplier, location events; subscribes to sales, receipts |
| rib-rpcs | RPCS | Subscribes to items; publishes price changes |
| rib-sim | SIOCS | Subscribes to items, ASNs; publishes adjustments, receipts |
| rib-rxm | Xstore/Xcenter | Subscribes to items, prices, promotions |
| rib-reim | ReIM | Subscribes to POs, receipts; publishes invoice matches |
| rib-tafr | Third-party adapters | Custom adapter for non-Oracle systems |
Message Flow: Item Creation Example
When a buyer creates a new item in RMS, here's the complete RIB message flow:
1. Buyer creates item 100400012345 in RMS
└── RMS commits to ITEM_MASTER
2. RMS triggers publish to RIB
└── rib-rms publishes ItemDesc(CREATE) to ItemDesc topic
3. JMS persists the message and delivers to all subscribers:
├── rib-rpcs receives ItemDesc(CREATE)
│ └── RPCS creates pricing placeholder for new item
│
├── rib-rxm receives ItemDesc(CREATE)
│ └── Xcenter routes to relevant stores
│ └── Xstore updates local Derby DB with new item
│
├── rib-sim receives ItemDesc(CREATE)
│ └── SIOCS updates local item master for inventory ops
│
└── rib-reim receives ItemDesc(CREATE)
└── ReIM creates item reference for invoice matching
All of this happens within seconds of the buyer clicking "Save" in RMS.
The Error Hospital
When a subscriber cannot process a message (e.g., RPCS can't create pricing because the item's department doesn't exist in RPCS), the message enters the Error Hospital — a holding area for failed messages.
Error Hospital Workflow
- Message fails processing — the subscriber's adapter logs the error
- Message moves to error queue — it's removed from the main processing queue to prevent blocking subsequent messages
- Operations investigates — reviews the error message and root cause
- Fix the data issue — correct the underlying data problem (e.g., create the missing department in RPCS)
- Retry the message — the operator marks the errored message for reprocessing
- Message processes successfully — removed from the error hospital
Common Error Hospital Scenarios
| Error | Cause | Fix |
|---|---|---|
| Item department not found | Department hierarchy not synced to subscriber | Create the department in the subscriber system, retry |
| Supplier not found | Supplier message processed out of order | Wait for supplier message, then retry item message |
| Duplicate key | Message replayed after successful processing | Purge the duplicate from error hospital |
| Schema validation failure | Message format doesn't match expected XML schema | Fix the publisher's message generation logic |
RIHA Monitoring Console
RIHA (Retail Integration Hub Application) is the web-based monitoring console for the RIB:
- Dashboard: Real-time view of message throughput, error counts, and adapter status across all topics
- Error Hospital Manager: Browse, search, and retry errored messages
- Adapter Control: Start, stop, and restart individual RIB adapters
- Message Tracking: Trace a specific message's journey from publisher through topic to all subscribers
- Performance Metrics: Message processing rates, queue depths, and latency measurements
Integration Best Practices
Important Gotchas
- !Monitor error hospital queue depth daily. A growing error hospital means messages are piling up unprocessed — downstream systems are increasingly out of sync with RMS.
- !RIB messages have implicit ordering dependencies. An ItemLocDesc message for item X at store 100 requires that the ItemDesc message for item X was already processed. Out-of-order processing causes "entity not found" errors in the subscriber.
- !Never restart a RIB adapter without first checking the error hospital. Restarting an adapter that has a schema mismatch will cause the same error for every subsequent message, flooding the error hospital.
- !Size JMS storage appropriately. If a subscriber goes offline for 24 hours, the JMS store must hold all messages published during that period. For high-volume topics (ItemDesc, PrcChgDesc), this can be gigabytes of data.
- !In cloud deployments, Oracle manages the RIB infrastructure. You interact with RIB through RIHA monitoring only — you cannot restart adapters or modify JMS configurations directly.
Key Takeaways
- The RIB is a JMS-based pub/sub messaging system that connects all Oracle Retail applications in near real-time.
- Messages are organized into families (ItemDesc, PrcChgDesc, ASNDesc) and published to JMS topics hosted on WebLogic.
- Each application has a dedicated RIB adapter (rib-rms, rib-rpcs, rib-rxm) that publishes and subscribes to relevant topics.
- The Error Hospital holds failed messages for investigation and retry — preventing bad messages from blocking the entire queue.
- RIHA provides web-based monitoring of message throughput, error hospital status, and adapter health.
- Message ordering is critical — item messages must be processed before item-location messages to avoid "entity not found" errors.


