Bottom line: Xstore POS transactions flow to Oracle Retail Merchandising via Sales Audit (ReSA) using either REST broadcasting (near-real-time) or RTLog file-based export (batch); foundation data (items, pricing, hierarchy) flows from RMS to Xstore via daily pipe-delimited flat file exports.
Key limit: Direct transaction posting to RMS bypassing ReSA is not supported -- all POS transactions must route through Sales Audit for validation before impacting inventory in Merchandising.
Watch out for: Xstore does not manage store inventory when integrated with RMS -- inventory is handled by SIM/SIOCS. Many integrators mistakenly try to configure Xstore inventory features alongside RMS.
Best for: Multi-format retailers needing unified POS across desktop, thin client, tablet, and handheld devices with transaction posting to Oracle Retail Merchandising and Sales Audit.
Authentication: OAuth 2.0 for Xstore Office Cloud Service REST APIs; basic auth or certificate-based for on-premise Xcenter web services.
System Profile
Oracle Retail Xstore Point of Service is Oracle's enterprise POS platform for specialty, department, and grocery retailers. The 2025 release introduced a containerized architecture on Oracle Cloud Infrastructure (OCI) and Oracle Autonomous Database. Xstore supports multiple form factors: Classic, Desktop, Thin Client, Tablet (iOS/Android), and Handheld. The integration ecosystem centers on Xstore POS, Xcenter/XOCS as the central data hub, and RMS/ORMCS as the merchandise and inventory master. Sales Audit (ReSA) serves as the mandatory intermediary for transaction validation. [src1, src2]
System
Role
API Surface
Direction
Xstore POS
Point of sale -- captures transactions, customer data, tender
POSLog XML (internal)
Outbound (transactions)
Xcenter / XOCS
Central store server -- aggregation, broadcasting, admin
REST API, SOAP, DTXQL
Orchestrator (bidirectional)
Oracle Retail Sales Audit (ReSA)
Transaction validation and audit
REST (v21+), RTLog file import
Inbound (receives transactions)
Oracle RMS / ORMCS
Merchandise master -- items, pricing, inventory
Batch file export, REST
Outbound (foundation data to Xstore)
Oracle Retail SIM / SIOCS
Store inventory management
REST, file-based
Bidirectional (inventory operations)
API Surfaces & Capabilities
API Surface
Protocol
Best For
Direction
Real-time?
Bulk?
REST Broadcaster (ReSA)
HTTPS/JSON
Transaction posting from Xstore to Sales Audit
Outbound
Near-real-time
No
RTLog File Export
File-based (pipe-delimited)
Legacy transaction posting to ReSA
Outbound
No (batch)
Yes
XOCS REST API
HTTPS/JSON
Customer lookup, store data queries, admin operations
Bidirectional
Yes
No
DTXQL Queries
REST/HTTPS
Ad-hoc data queries against Xstore Office tables
Outbound
Yes
No
RMS Foundation Export
File-based (pipe-delimited)
Item master, pricing, hierarchy sync to Xstore
Inbound
No (daily batch)
Yes
Xcenter SOAP Services
SOAP/XML
Legacy integrations, inventory/tax engine calls
Bidirectional
Yes
No
Xcenter REST Services
HTTPS/JSON
Inventory (SIOCS), tax engine integration
Bidirectional
Yes
No
Rate Limits & Quotas
Per-Request Limits
Limit Type
Value
Applies To
Notes
RTLog file size
System-dependent
RTLog generator
Files generated multiple times per day; size depends on transaction volume
REST broadcaster payload
Per-transaction JSON
ReSA REST endpoint
Each transaction posted individually in temporal order
DTXQL query results
Configurable page size
XOCS REST API
Pagination via GetByQueryResource
Foundation export file size
Unlimited (pipe-delimited)
RMS batch exports
One file per entity type per run; store-specific files for items
Bulk export threads
1-20 threads
Item/location/VAT exports
Threading parameter Y/N with configurable thread count
Rolling / Daily Limits
Limit Type
Value
Window
Notes
Foundation data exports
Must run daily
24h
Delta records purged after 7 days -- daily runs mandatory
RTLog generation
Multiple per day
Configurable
Generated by Xcenter RTLog generator component
REST transaction posting
Near-real-time continuous
Ongoing
Temporal ordering preserved; no explicit rate cap documented
Rejected transaction query
Hourly
Scheduled
XOCS queries ReSA for rejected transactions hourly
Staging table purge
Weekly
7-day retention
export_stg_purge.ksh removes all records older than 7 days
Authentication
Flow
Use When
Token Lifetime
Refresh?
Notes
OAuth 2.0 (XOCS Cloud)
Accessing Xstore Office Cloud Service REST APIs
Session-based
Yes
Set up OAuth Client per XOCS Security Guide
Basic Authentication
On-premise Xcenter web services
Session-based
N/A
Legacy; used for SOAP and some REST endpoints
Certificate-based
Server-to-server integration (on-premise)
Certificate validity
N/A
Used for secure Xcenter-to-ReSA communication
IDCS/OCI IAM
Cloud-native deployments on OCI
Token-based
Yes
Required for OCI Container Instances deployment
Authentication Gotchas
OAuth Client setup for XOCS requires following the Oracle Retail Xstore Office Cloud Service Security Guide exactly -- missing scopes cause silent permission failures [src7]
On-premise to cloud migration requires switching from basic auth / certificates to OAuth 2.0 -- this is not backward-compatible [src5]
REST broadcaster authentication to ReSA Cloud Service uses a separate credential set from the XOCS admin credentials [src2]
Constraints
Xstore inventory functionality must be disabled when integrated with RMS -- no inventory data is exchanged between Xstore and RMS other than sales-related data. Store inventory must be managed by SIM or SIOCS.
All POS transaction data must flow through Sales Audit (ReSA) before reaching Merchandising. Direct Xstore-to-RMS transaction posting is not supported.
Foundation data (items, pricing, hierarchy) flows only from RMS to Xstore -- Xstore cannot write back master data changes to RMS.
RTLog/foundation export delta mode relies on staging tables that are purged weekly. If export jobs do not run daily, delta records are permanently lost.
Handheld devices (2x4 form factor) do not support offline transactions, reporting, employee maintenance, or training mode.
Mobile devices (tablet, handheld, thin client) have no local database and require persistent mobile server connectivity for all operations.
REST broadcaster mapping changes take approximately 30 minutes to propagate through the system.
Integration Pattern Decision Tree
START -- Integrating Oracle Retail Xstore POS
|-- What data are you integrating?
| |-- POS Transactions (sales, returns, voids)
| | |-- Xstore version >= 21.0?
| | | |-- YES -> REST Broadcaster to ReSA (near-real-time, recommended)
| | | |-- NO -> RTLog file-based export to ReSA (batch)
| | |-- Need real-time transaction visibility?
| | | |-- YES -> REST Broadcaster (temporal ordering preserved)
| | | |-- NO -> RTLog files (multiple times/day or once daily)
| |
| |-- Foundation Data (items, pricing, hierarchy, stores)
| | |-- Initial load? -> RMS FULL mode export
| | |-- Ongoing sync? -> RMS DELTA mode export (daily)
| |
| |-- Customer Data (lookup, enrollment)
| | |-- Cloud (XOCS)? -> XOCS REST API with OAuth 2.0 + DTXQL queries
| | |-- On-premise? -> Xcenter SOAP/REST web services
| |
| |-- Inventory Data
| |-- DO NOT use Xstore inventory features when integrated with RMS
| |-- Use Oracle Retail SIM/SIOCS for store inventory management
|
|-- Deployment model?
| |-- Cloud-native (OCI) -> Containerized Xstore on OCI
| |-- On-premise -> Traditional Xcenter server deployment
| |-- Hybrid -> Cloud XOCS with on-premise POS terminals
|
|-- Error handling?
|-- REST Broadcaster -> Rejected transactions queried hourly via Xadmin
|-- RTLog files -> saimptlog/saimptlogi validates and creates auditor errors
|-- Foundation exports -> Monitor staging table purge schedule (weekly)
Quick Reference
Transaction Posting Flow
Step
Source
Action
Target
Data Format
Failure Handling
1
Xstore POS Register
Captures sale/return/void
Local POSLog
POSLog XML
Stored locally until broadcast
2
Xcenter Broadcaster
Translates POSLog to JSON or RTLog
ReSA
JSON (REST) or RTLog (file)
Retry; rejected queue
3
ReSA REST Endpoint
Validates and accepts transaction
Staging tables
JSON
Returns success/reject; hourly reject query
4
ReSA Batch Process
Imports into ReSA tables
ReSA tables
RTLog
saimptlog/saimptlogi validation + auditor errors
5
ReSA Export
Exports to Merchandising
RMS/ORMCS
Batch export
Impacts perpetual inventory via uploadsales_all.ksh
Set up the REST broadcaster in Xcenter to post transactions to Sales Audit in near-real-time. The broadcaster translates POSLog XML into JSON payloads. [src2]
Endpoint: POST https://<resa-host>:<port>/<tenancyId>/ResaReSTServices/services/private/Resa/salesService
Configuration steps:
1. Configure ReSA REST endpoint URL in Xcenter broadcaster settings
2. Set authentication credentials (OAuth 2.0 for cloud, basic auth for on-premise)
3. Enable temporal ordering to preserve transaction sequence
4. Configure Broadcaster Customize tab for any custom YAML mapping
Verify: Check Xadmin SystemTools > Publish PosLog Data for transaction status.
2. Set Up Foundation Data Exports from RMS
Configure daily batch exports to push item master, pricing, and hierarchy data from RMS to Xcenter/Xstore. [src3]
# Run full export for initial load
./export_itemmaster.ksh <db_connection> full N
# Run delta export for daily sync
./export_itemmaster.ksh <db_connection> delta Y
# Run item location export (store-specific)
./export_itemloc.ksh <db_connection> delta Y <store_number>
Bash: Monitor RTLog Export and Staging Table Health
# Input: Export directory path, database connection
# Output: Export status and staging table record counts
EXPORT_DIR="/path/to/exports"
TODAY=$(date +%Y%m%d)
echo "=== Foundation Data Export Status ==="
for entity in itemhdr itemloc merchhierarchy orghierarchy store; do
FILE=$(ls ${EXPORT_DIR}/${entity}_${TODAY}_* 2>/dev/null | head -1)
if [ -n "$FILE" ]; then
LINES=$(wc -l < "$FILE")
echo "OK: ${entity} exported (${LINES} records)"
else
echo "MISSING: ${entity} -- no export file for today"
fi
done
cURL: Test ReSA REST Endpoint Connectivity
# Input: ReSA host, tenancy ID, auth token
# Output: HTTP status code confirming endpoint is reachable
curl -s -o /dev/null -w "%{http_code}" \
"https://<resa-host>:<port>/<tenancyId>/ResaReSTServices/services/private/Resa/salesService" \
-H "Authorization: Bearer <token>"
# Expected: 200 or 405 (Method Not Allowed for GET on POST-only endpoint)
Data Mapping
RTLog Record Types
Record Type
Code
Description
Frequency
File Header
FHEAD
File-level metadata
1 per file (required)
Transaction Header
THEAD
Transaction-level header
1 per transaction
Customer Record
TCUST
Customer associated with transaction
0-1 per transaction
Item Record
TITEM
Line item detail
1+ per transaction
Discount Record
IDISC
Discount applied to item
0+ per item
Tax Record
IGTAX
Tax applied to item
0+ per item
Foundation Data Field Mapping (RMS to Xstore)
RMS Source
Xstore Target
Type
Transform
Gotcha
ITEM_MASTER.ITEM
Xstore item ID
String
Direct mapping
Parent items exported as separate records
ITEM_MASTER.ITEM_DESC
Xstore item description
String
Direct
Truncation may occur on handheld displays
ITEM_LOC.UNIT_RETAIL
Xstore selling price
Currency
Direct
Multi-currency requires separate VAT export
SUBCLASS.SUB
Xstore subclass
String
Via hierarchy export
Must match merchandise hierarchy export
STORE.STORE
Xstore location ID
Integer
Direct
Store-specific item files filter by ITEM_LOC
VAT_CODE_RATES.VAT_RATE
Xstore tax rate
Decimal
Percentage to decimal
Exempt VAT regions (SVAT type) excluded
Data Type Gotchas
POSLog XML uses UTC timestamps internally, but Xstore displays in store-local timezone. RTLog exports use the store timezone, causing potential mismatches in cross-timezone reporting. [src2]
RMS foundation exports use pipe-delimited flat files. Any pipe characters in source data will corrupt file parsing. [src3]
FULL mode exports exclude deleted records entirely, while DELTA mode includes deletion markers. Downstream systems must handle both patterns. [src3]
Error Handling & Failure Points
Common Error Scenarios
Scenario
Symptom
Cause
Resolution
REST broadcast rejection
Transaction in REJECTED status
ReSA validation failure
Review in Xadmin; fix data and republish
RTLog import failure
saimptlog error log entries
Malformed RTLog file or corrupt data
Check RTLogMappingConfig.xml; verify mapping
Foundation export empty
Zero-line .dat files
No delta changes or staging already purged
Run FULL mode export to resync
Lost delta records
Items missing in Xstore
Export jobs not run for >7 days
Run FULL mode export to resync all records
OAuth token expiration
HTTP 401 on XOCS API calls
Token expired or insufficient scope
Refresh token; verify OAuth client in IDCS
Mobile server disconnection
Tablet/handheld cannot transact
Network outage to mobile server
Desktop/thin client can go offline; mobile cannot
Failure Points in Production
Staging table purge destroys unextracted deltas: If export_stg_purge.ksh runs before delta exports, changed records are permanently lost. Fix: Schedule export jobs daily BEFORE the weekly purge job. [src3]
REST broadcaster mapping propagation delay: Custom YAML mapping changes take ~30 minutes to propagate. Fix: Schedule mapping changes during low-transaction periods. [src2]
Offline transactions not syncing: Desktop/thin client offline transactions may not auto-broadcast on reconnection. Fix: Monitor offline queue; force manual broadcast via Xadmin if needed. [src1]
saimptlogi vs saimptlog confusion: Using the wrong import process causes incomplete loading or duplicates. Fix: saimptlogi for continuous intraday; saimptlog for once-daily batch. Never mix both. [src2]
Store-specific vs corporate item files: Corporate files include items not ranged to the store, causing phantom inventory. Fix: Always use store-specific files for individual store loads. [src3]
Anti-Patterns
Wrong: Bypassing ReSA for Direct RMS Transaction Posting
// BAD -- Attempting to post Xstore transactions directly to RMS
// This is not supported and will cause inventory discrepancies
Xstore -> Custom middleware -> RMS (direct insert to inventory tables)
Correct: Route All Transactions Through Sales Audit
// GOOD -- Mandatory transaction flow through ReSA
Xstore -> Xcenter Broadcaster -> ReSA (validation) -> RMS (inventory impact)
Wrong: Enabling Xstore Inventory Features with RMS
// BAD -- Configuring Xstore inventory management when RMS is active
// Xstore inventory must be DISABLED when integrated with RMS
# BAD -- Skipping exports because "nothing changed"
# Delta records in staging tables are purged after 7 days
if [ "$CHANGES_EXPECTED" = "true" ]; then
./export_itemmaster.ksh $DB delta Y
fi
Correct: Run Exports on a Fixed Daily Schedule
# GOOD -- Always run exports daily regardless of expected changes
./export_itemmaster.ksh $DB delta Y
./export_itemloc.ksh $DB delta Y
./export_merchhier.ksh $DB delta
./export_orghier.ksh $DB delta
./export_stores.ksh $DB delta
Common Pitfalls
Confusing Oracle Retail with Oracle ERP Cloud: Oracle Retail Xstore is part of the Oracle Retail suite (RMS, ReSA, SIM), NOT Oracle ERP Cloud (Financials, SCM, HCM). Integration patterns and APIs are completely different. Fix: Verify you are referencing Oracle Retail documentation, not Oracle ERP Cloud. [src1]
Not pinning the export mode (FULL vs DELTA): Running FULL mode daily wastes processing time. Running DELTA mode for initial loads misses pre-existing records. Fix: Use FULL for initial load and periodic resync. Use DELTA for daily incremental updates. [src3]
Ignoring the threading parameter on large exports: Single-threaded item exports on retailers with 500K+ items can take hours. Fix: Enable threading (Y) with 5-10 threads for item, location, and VAT exports. [src3]
Deploying tablet/handheld without offline fallback: Tablet and handheld devices have no local database and cannot transact when the mobile server is unreachable. Fix: Ensure at least one Desktop or Thin Client register per store for offline capability. [src1]
Assuming REST broadcaster is instantaneous: While near-real-time, temporal ordering means high-volume stores may experience posting delays during peak hours. Fix: Monitor broadcaster queue depth. Scale Xcenter broadcaster instances for high-volume stores. [src2]
Not monitoring rejected transactions queue: Rejected transactions silently fail to reach Merchandising, causing inventory discrepancies. Fix: Configure alerting on TRN_POSLOG_WORK_ITEM for WORK_STATUS = 'REJECTED'. Review daily. [src2]
Diagnostic Commands
# Check RTLog export file generation (today's files)
ls -la /path/to/exports/*_$(date +%Y%m%d)_*.dat
# Verify staging table record counts
sqlplus -S $DB_CONN <<EOF
SELECT 'ITEM_EXPORT_STG' AS tbl, COUNT(*) AS cnt FROM ITEM_EXPORT_STG
UNION ALL SELECT 'STORE_EXPORT_STG', COUNT(*) FROM STORE_EXPORT_STG
UNION ALL SELECT 'MERCHHIER_EXPORT_STG', COUNT(*) FROM MERCHHIER_EXPORT_STG;
EOF
# Check rejected transaction count
curl -X GET "https://<xocs-host>/ResaReSTServices/services/private/Resa/getRejectedTransactions" \
-H "Authorization: Bearer <token>" | python -c "import sys,json; print(len(json.load(sys.stdin)))"
# Test XOCS REST API authentication
curl -s -o /dev/null -w "%{http_code}" \
"https://<xocs-host>/xocs/rest/v1/health" \
-H "Authorization: Bearer <token>"
# Verify foundation data export schedule compliance
find /path/to/exports -name "*.dat" -mtime +1 -printf "%f -- STALE (>1 day old)\n"
Version History & Compatibility
Version
Release Date
Status
Key Changes
Migration Notes
v24.0
2024-10
Current
Containerized architecture on OCI; OCI Roving Edge
Major architecture change; requires OCI for new model
You need e-commerce / digital commerce integration
Oracle Commerce Cloud / ATG integration
Posting POS transactions through Sales Audit (ReSA) for validation
You need warehouse management integration
Oracle WMS or SIM/SIOCS integration
Syncing foundation data (items, pricing, hierarchy) from RMS to POS
You need real-time inventory availability across channels
Oracle Retail SIOCS or OMS integration
You are an Oracle Retail ecosystem customer (RMS, RPM, SIM, ReSA)
You use a non-Oracle merchandising system
Custom POS integration or alternative POS platform
Important Caveats
Xstore integration architecture varies significantly between on-premise (Xcenter server) and cloud (XOCS) deployments. API authentication, endpoint URLs, and configuration methods differ.
The 2025 containerized architecture (v24+) is a major shift that may affect existing custom integrations. Custom Xcenter extensions may need to be re-containerized.
Foundation data exports are file-based and batch-oriented. There is no real-time API for pushing item/pricing changes from RMS to Xstore. Expect a minimum 24-hour delay.
Offline transaction capability is only available on Desktop and Thin Client form factors. Retailers relying heavily on mobile POS must ensure robust network infrastructure.
Rate limits and throughput for REST broadcaster transaction posting are not explicitly documented by Oracle. Performance depends on server capacity and network bandwidth.
This card covers the Oracle Retail-specific integration. Oracle ERP Cloud (Fusion) uses completely different APIs and is a separate product line.