Where the customer, the product, and the money finally meet. A deep dive into the architecture that keeps stores selling even when the internet goes dark.
What is Xstore?
Oracle Retail Xstore Point-of-Service is the software that runs on the actual cash registers (POS terminals) in the store. It is the final endpoint of the entire retail supply chain — the moment where merchandise that was planned, sourced, ordered, shipped, received, and priced finally meets the customer and generates revenue.
Xstore handles an enormous range of operations at the register:
Unlike web-based retail applications, Xstore is a thick-client Java application — it runs directly on the hardware in the store, not in a browser. This fundamental architectural decision drives everything else about the system: its offline capabilities, its performance characteristics, and its deployment complexity.
The Thick-Client Architecture
To understand Xstore, you must understand why Oracle chose a thick-client architecture instead of a thin-client (browser-based) approach.
A web-based POS would require a constant, reliable internet connection to a central server. In the real world, retail stores face:
- Network outages from ISP failures, construction accidents cutting fiber lines, or severe weather
- Latency spikes during peak hours (Black Friday, holiday seasons)
- Bandwidth constraints in rural or international store locations
If a web-based POS loses its connection, the store cannot sell. For a retailer with 3,000 stores doing $50,000/day per store, even one hour of downtime across the chain costs $6.25 million in lost revenue.
Xstore solves this by running the entire application locally on the register hardware. The architecture follows a three-tier model:
Xstore Three-Tier Architecture
Tier 1 — Register (Xstore POS): The Java thick client running on each register with its own local Apache Derby database. Handles all transaction processing independently.
Tier 2 — Store Server (Xstore Office / Lead Register): A designated machine in the store that aggregates data from all registers, manages store-level operations, and acts as the store's gateway to headquarters.
Tier 3 — Corporate Server (Xcenter): The central server at headquarters that collects data from all stores and distributes updates (items, prices, promotions) back down to every store.
Offline Resilience
The most critical architectural requirement of a POS system is Offline Resilience. If a store's internet connection goes down, the store must still be able to sell products.
Xstore is designed with a complete data autonomy model. Each register has a local database containing everything it needs to operate independently:
- Item Master — A complete copy of every item that this store is authorized to sell, including UPC barcodes, descriptions, and item hierarchy information
- Pricing Rules — All active price changes, promotions, and markdown rules applicable to this store's zone
- Tax Rules — Tax rates for the store's jurisdiction, including complex scenarios like tax holidays and exempt categories
- Customer Data — Loyalty account information for customers who shop at this store
- Employee Data — Cashier credentials, security roles, and manager override permissions
When the network drops, Xstore continues to:
- Ring transactions against its local database
- Calculate taxes using locally cached rules
- Apply promotions using locally cached promotion definitions
- Cache Transaction Logs (TLOGs) locally until the network is restored
- Queue customer loyalty point accruals for later synchronization
Offline Limitations
While Xstore is designed for offline operation, some features require connectivity: real-time credit card authorization (unless the retailer has configured floor limits for offline authorization), cross-store inventory lookups, and real-time loyalty point balance checks. Retailers must configure offline policies to handle these edge cases.
The Local Database (Apache Derby)
Each Xstore register runs an embedded Apache Derby database (previously JavaDB). Derby is a lightweight, zero-administration, Java-based relational database that runs in the same JVM process as Xstore itself.
The local database contains a subset of the enterprise data, tailored for this specific store. Key tables include:
| Column | Type | Description |
|---|---|---|
TRN_TRANSPK | Transactions | The master transaction header table. Every sale, return, void, and no-sale creates a row here. Contains trans_seq (sequence number), begin_datetime, end_datetime, total, and trans_typcode. |
TRN_LINEITMPK | Line Items | Individual items within a transaction. Links to TRN_TRANS via trans_seq. Contains item_id, quantity, unit_price, extended_amt, and discount information. |
TRN_TNDR | Tenders | Payment details for each transaction. Records tender type (cash, credit, debit, gift card), amount tendered, and authorization codes. |
ITM_ITEM | Items | The local item master. Contains item descriptions, departments, classes, UPCs, and status flags. Synchronized from Xcenter. |
ITM_ITEM_PRICE | Prices | Current retail prices for each item at this store. Updated when price changes are pushed from RPM via Xcenter. |
PRC_DEAL | Promotions | Active promotion definitions. Defines buy-one-get-one, percentage off, threshold discounts, and coupon rules. |
TAX_RATE_RULE | Tax Rules | Tax calculation rules for the store's jurisdiction. Handles multi-level taxation (state + county + city). |
CRM_PARTY | Customers | Customer/loyalty records for lookup during transactions. |
Database Sizing
A typical Xstore local database is remarkably small — usually 200MB to 2GB — because it only contains data relevant to the single store. Compare this to the enterprise RMS database which can be 500GB+. This is why Derby works: the dataset fits comfortably in memory, enabling sub-millisecond query performance for item lookups during scanning.
TLOG Structure & Transaction Flow
When a cashier completes a transaction, Xstore generates a Transaction Log (TLOG). The TLOG is the canonical record of everything that happened at the register and is the primary data artifact that flows upstream to headquarters.
The TLOG Lifecycle
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Customer │────▶│ Register │────▶│ Store Server │────▶│ Xcenter │
│ Scans Items │ │ (Xstore) │ │ (Xstore │ │ (Corporate) │
│ │ │ Creates │ │ Office) │ │ │
│ │ │ TLOG │ │ Aggregates │ │ Routes to │
│ │ │ │ │ TLOGs │ │ ReSA / RMS │
└──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘
TLOG Data Elements
A single TLOG contains extraordinary detail about the transaction:
- Header: Transaction number, store number, register number, cashier ID, start time, end time, transaction type (sale, return, void, no-sale)
- Line Items: For each item scanned: item ID, UPC, quantity, unit price, extended price, discount amount, discount reason, tax amount, serial numbers (if applicable)
- Tenders: For each payment method: tender type, amount, change due, authorization code, card last-4 digits (masked), approval status
- Tax Details: Tax jurisdiction, taxable amount, exempt amount, tax rate applied, tax amount calculated
- Customer: Loyalty card number, customer name, points earned, points redeemed
- Discounts: Promotion ID, discount type (percentage, amount, BOGO), discount amount, coupon number
Trickle Polling vs End-of-Day
Modern Xstore implementations use trickle polling — TLOGs are uploaded to the store server and then to Xcenter throughout the day, typically every 5–15 minutes. This replaced the legacy end-of-day batch approach and provides near-real-time visibility to headquarters.
Payment Integration
Xstore integrates with payment terminals (also called Electronic Funds Transfer or EFT devices) through a configurable payment middleware layer. The architecture supports multiple payment processors and terminal hardware vendors.
Payment Flow
- Cashier presses Total — Xstore calculates the transaction total including taxes and discounts
- Customer presents payment — The cashier selects the tender type (credit, debit, cash, gift card)
- EFT Device activation — Xstore sends the amount to the PIN pad / card reader
- Card capture — Customer inserts chip, taps contactless, or swipes. The terminal encrypts the card data
- Authorization request — Xstore sends the encrypted payment data to the payment processor (via the store's internet connection)
- Authorization response — The processor approves or declines. Xstore records the auth code
- Receipt generation — Xstore prints the customer receipt and the merchant copy
PCI DSS Compliance
Xstore is designed for PCI DSS (Payment Card Industry Data Security Standard) compliance. Card data is encrypted at the terminal (point-to-point encryption / P2PE) and never stored in plaintext in the local database or TLOGs. Only masked card numbers (last 4 digits) and authorization codes are recorded.
Offline Payment Authorization
When the internet is down, credit card authorizations cannot reach the processor. Retailers configure floor limits — a maximum transaction amount that can be authorized offline. Transactions below the floor limit are approved locally and queued for batch authorization when connectivity is restored. Transactions above the floor limit can only be completed with cash or stored-value tenders.
Xcenter & Corporate Sync
While the registers operate independently, headquarters needs to manage them centrally. This is where Xcenter comes in. Xcenter is the corporate-level server for Xstore and serves as the bridge between the stores and the enterprise back-office systems.
Data Flowing Down (HQ → Stores)
RMS and RPCS push updates to Xcenter, which then broadcasts them to every store:
- New Items: When a buyer creates a new item in RMS, RIB publishes a message. Xcenter receives it and pushes the item data to the local Derby database of every store that is authorized to sell that item.
- Price Changes: When a price analyst creates a regular price change in RPM/RPCS, the new retail is published via RIB to Xcenter, which distributes it to affected stores for the effective date.
- Promotions: New BOGO deals, percentage-off offers, and coupon definitions are deployed from RPM to Xcenter to stores.
- Employee Updates: New hires, terminations, and role changes flow from the HR system to Xcenter to the local register databases.
Data Flowing Up (Stores → HQ)
As registers ring transactions, they send their TLOGs up through the chain:
- TLOGs → Xcenter → ReSA: Transaction logs are sent to Xcenter, which routes them to Oracle Retail Sales Audit (ReSA) for financial auditing, balancing, and fraud detection.
- TLOGs → Xcenter → RMS: After ReSA validates the transactions, the sales data flows to RMS, which uses it to reduce
ITEM_LOC_SOH.STOCK_ON_HANDand post financial entries to theSTOCK_LEDGER. - Inventory Updates: If a store performs a stock count or receives a shipment via SIOCS, that inventory data flows through Xcenter to update RMS.
Xstore Office & Back Office
Xstore Office is the store-level management application that runs on the store server (or lead register). It provides store managers with tools that go beyond basic register operations:
- End-of-Day Processing: Closing registers, balancing tills, generating daily sales reports
- Employee Management: Creating cashier accounts, assigning roles, managing schedules
- Reporting: Store-level sales reports, hourly transaction volumes, top-selling items
- Till Management: Opening/closing tills, performing till counts, managing safe drops and pickups
- Configuration: Store-specific settings like receipt headers, tax overrides, and floor limits
Xstore Office also serves as the data aggregation point — it collects TLOGs from all registers in the store and handles the upstream communication to Xcenter.
Deployment Topology
A typical Xstore deployment for a large retailer looks like this:
┌─────────────────────┐
│ XCENTER │
│ (Corporate HQ) │
│ - Central database │
│ - Data distribution │
│ - TLOG collection │
└──────────┬──────────┘
│
┌────────────────┼────────────────┐
│ │ │
┌────────▼──────┐ ┌──────▼────────┐ ┌─────▼───────┐
│ Store 1042 │ │ Store 2105 │ │ Store 3201 │
│ (Xstore │ │ (Xstore │ │ (Xstore │
│ Office) │ │ Office) │ │ Office) │
└───────┬──────┘ └──────┬───────┘ └─────┬──────┘
│ │ │
┌──────┼──────┐ ┌────┼────┐ ┌────┼────┐
│ │ │ │ │ │ │ │ │
REG1 REG2 REG3 REG1 REG2 REG3 REG1 REG2 REG3
Each register is a self-contained unit running:
- Java Runtime Environment (JRE)
- Xstore POS Application (Java)
- Apache Derby Database
- EFT/Payment Middleware
- Peripheral Drivers (receipt printer, barcode scanner, cash drawer, PIN pad)
Configuration & Customization
Xstore is highly configurable through its configuration framework. Rather than modifying source code, retailers customize behavior through configuration parameters stored in the local database.
Key Configuration Areas
- Receipt Templates: Customizable receipt layouts including headers, footers, promotional messages, and barcode formats
- Security Policies: Manager override thresholds, void limits, return policies, and cashier permissions
- Tax Configuration: Multi-jurisdictional tax rules, tax holidays, and exempt categories
- Promotion Engine: Rules for automatic discount application, coupon validation, and loyalty point calculations
- Peripheral Configuration: Printer models, scanner types, payment terminal protocols, and customer displays
Important Gotchas
- !Never test Xstore configuration changes on production registers during store operating hours. Use the training mode or a dedicated test register.
- !When deploying new item data, always verify that the UPC-to-item mapping is correct. A wrong UPC mapping means every customer scanning that item gets charged the wrong price.
- !Xstore's local Derby database has a maximum size limit. If TLOGs are not being uploaded (due to a prolonged network outage), the database can fill up and registers will stop functioning.
- !Time synchronization (NTP) across all registers is critical. If register clocks drift, TLOG sequencing breaks and ReSA audit balancing will fail.
Key Takeaways
- Xstore is a thick-client Java POS application that runs on each register with its own embedded Apache Derby database.
- The thick-client architecture enables full offline resilience — stores can continue selling even with no internet connectivity.
- TLOGs (Transaction Logs) capture every detail of every transaction and flow from registers → store server → Xcenter → ReSA → RMS.
- Xcenter is the corporate hub that distributes items, prices, and promotions down to stores and collects TLOGs upstream.
- Payment integration follows PCI DSS standards with point-to-point encryption and offline floor limits for network outages.
- Xstore Office provides store managers with end-of-day processing, employee management, and store-level reporting.


