Oracle Retail Xstore POS Integration

Type: ERP Integration System: Oracle Retail Xstore POS (v24.0/v23.0/v22.0) Confidence: 0.85 Sources: 7 Verified: 2026-03-09 Freshness: 2026-03-09

TL;DR

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]

SystemRoleAPI SurfaceDirection
Xstore POSPoint of sale -- captures transactions, customer data, tenderPOSLog XML (internal)Outbound (transactions)
Xcenter / XOCSCentral store server -- aggregation, broadcasting, adminREST API, SOAP, DTXQLOrchestrator (bidirectional)
Oracle Retail Sales Audit (ReSA)Transaction validation and auditREST (v21+), RTLog file importInbound (receives transactions)
Oracle RMS / ORMCSMerchandise master -- items, pricing, inventoryBatch file export, RESTOutbound (foundation data to Xstore)
Oracle Retail SIM / SIOCSStore inventory managementREST, file-basedBidirectional (inventory operations)

API Surfaces & Capabilities

API SurfaceProtocolBest ForDirectionReal-time?Bulk?
REST Broadcaster (ReSA)HTTPS/JSONTransaction posting from Xstore to Sales AuditOutboundNear-real-timeNo
RTLog File ExportFile-based (pipe-delimited)Legacy transaction posting to ReSAOutboundNo (batch)Yes
XOCS REST APIHTTPS/JSONCustomer lookup, store data queries, admin operationsBidirectionalYesNo
DTXQL QueriesREST/HTTPSAd-hoc data queries against Xstore Office tablesOutboundYesNo
RMS Foundation ExportFile-based (pipe-delimited)Item master, pricing, hierarchy sync to XstoreInboundNo (daily batch)Yes
Xcenter SOAP ServicesSOAP/XMLLegacy integrations, inventory/tax engine callsBidirectionalYesNo
Xcenter REST ServicesHTTPS/JSONInventory (SIOCS), tax engine integrationBidirectionalYesNo

Rate Limits & Quotas

Per-Request Limits

Limit TypeValueApplies ToNotes
RTLog file sizeSystem-dependentRTLog generatorFiles generated multiple times per day; size depends on transaction volume
REST broadcaster payloadPer-transaction JSONReSA REST endpointEach transaction posted individually in temporal order
DTXQL query resultsConfigurable page sizeXOCS REST APIPagination via GetByQueryResource
Foundation export file sizeUnlimited (pipe-delimited)RMS batch exportsOne file per entity type per run; store-specific files for items
Bulk export threads1-20 threadsItem/location/VAT exportsThreading parameter Y/N with configurable thread count

Rolling / Daily Limits

Limit TypeValueWindowNotes
Foundation data exportsMust run daily24hDelta records purged after 7 days -- daily runs mandatory
RTLog generationMultiple per dayConfigurableGenerated by Xcenter RTLog generator component
REST transaction postingNear-real-time continuousOngoingTemporal ordering preserved; no explicit rate cap documented
Rejected transaction queryHourlyScheduledXOCS queries ReSA for rejected transactions hourly
Staging table purgeWeekly7-day retentionexport_stg_purge.ksh removes all records older than 7 days

Authentication

FlowUse WhenToken LifetimeRefresh?Notes
OAuth 2.0 (XOCS Cloud)Accessing Xstore Office Cloud Service REST APIsSession-basedYesSet up OAuth Client per XOCS Security Guide
Basic AuthenticationOn-premise Xcenter web servicesSession-basedN/ALegacy; used for SOAP and some REST endpoints
Certificate-basedServer-to-server integration (on-premise)Certificate validityN/AUsed for secure Xcenter-to-ReSA communication
IDCS/OCI IAMCloud-native deployments on OCIToken-basedYesRequired for OCI Container Instances deployment

Authentication Gotchas

Constraints

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

StepSourceActionTargetData FormatFailure Handling
1Xstore POS RegisterCaptures sale/return/voidLocal POSLogPOSLog XMLStored locally until broadcast
2Xcenter BroadcasterTranslates POSLog to JSON or RTLogReSAJSON (REST) or RTLog (file)Retry; rejected queue
3ReSA REST EndpointValidates and accepts transactionStaging tablesJSONReturns success/reject; hourly reject query
4ReSA Batch ProcessImports into ReSA tablesReSA tablesRTLogsaimptlog/saimptlogi validation + auditor errors
5ReSA ExportExports to MerchandisingRMS/ORMCSBatch exportImpacts perpetual inventory via uploadsales_all.ksh

Foundation Data Export Jobs

Job ScriptEntityOutput File PatternModeContract
export_itemmaster.kshItem master dataitemhdr_{date}_{scope}_{mode}_{lines}.datFull/DeltaIntCon000208
export_itemloc.kshItem-location dataitemloc_{date}_{loc}_{mode}_{lines}.datFull/DeltaIntCon000209
export_merchhier.kshMerchandise hierarchymerchhierarchy_{date}_{mode}_{lines}.datFull/DeltaIntCon000207
export_orghier.kshOrg hierarchyorghierarchy_{date}_{mode}_{lines}.datFull/DeltaIntCon000203
export_stores.kshStore master + addressesstore_{date}_{mode}_{lines}.datFull/DeltaIntCon000204
export_itemvat.kshItem VAT by regionvatitem_{date}_{scope}_{mode}_{lines}.datFull/DeltaIntCon000214
export_vat.kshVAT regions/codes/ratesvat_{date}_{mode}_{lines}.datFull/DeltaIntCon000215
export_diffs.kshDifferentiatorsdiffs_{date}_{mode}_{lines}.datFull/DeltaIntCon000206
export_relitem.kshRelated itemsrelitemhead_{date}_{scope}_{mode}_{lines}.datFull/DeltaIntCon000210
export_stg_purge.kshStaging cleanupN/APurge (weekly)RMS265

Step-by-Step Integration Guide

1. Configure Xstore-to-ReSA REST Broadcasting (v21+)

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>

Verify: Check output files. Pattern: itemhdr_{date}_corp_{mode}_{linecount}.dat

3. Configure Customer Lookup via XOCS REST API

Set up OAuth 2.0 client and use DTXQL queries for customer lookup operations. [src7]

# Obtain access token
curl -X POST "https://<idcs-host>/oauth2/v1/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=client_credentials&scope=<xocs-scope>" \
  -u "<client_id>:<client_secret>"

# Query customer data using DTXQL
curl -X GET "https://<xocs-host>/xocs/rest/v1/query" \
  -H "Authorization: Bearer <access_token>"

Verify: HTTP 200 response with valid JSON customer records.

4. Monitor Rejected Transactions

Configure the hourly rejected transaction query and enable republishing from Xadmin UI. [src2]

Endpoint: GET https://<resa-host>/<tenancyId>/ResaReSTServices/services/private/Resa/getRejectedTransactions

Rejected transactions marked in TRN_POSLOG_WORK_ITEM table:
WORK_STATUS = "REJECTED"

Republish via: Xadmin > SystemTools > Publish PosLog Data > Republish

Verify: Count of WORK_STATUS = 'REJECTED' records should decrease after republishing.

Code Examples

Python: Query Customer Data via XOCS REST API

# Input:  XOCS host, OAuth credentials, customer search criteria
# Output: Customer records matching the query

import requests

def get_xocs_token(idcs_host, client_id, client_secret, scope):
    """Obtain OAuth 2.0 access token from IDCS."""
    resp = requests.post(
        f"https://{idcs_host}/oauth2/v1/token",
        data={"grant_type": "client_credentials", "scope": scope},
        auth=(client_id, client_secret),
        timeout=30
    )
    resp.raise_for_status()
    return resp.json()["access_token"]

def lookup_customer(xocs_host, token, last_name):
    """Query customer by last name via DTXQL."""
    resp = requests.get(
        f"https://{xocs_host}/xocs/rest/v1/query",
        headers={"Authorization": f"Bearer {token}"},
        params={"q": f"last_name = '{last_name}'", "table": "crm_customer"},
        timeout=30
    )
    resp.raise_for_status()
    return resp.json()

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 TypeCodeDescriptionFrequency
File HeaderFHEADFile-level metadata1 per file (required)
Transaction HeaderTHEADTransaction-level header1 per transaction
Customer RecordTCUSTCustomer associated with transaction0-1 per transaction
Item RecordTITEMLine item detail1+ per transaction
Discount RecordIDISCDiscount applied to item0+ per item
Tax RecordIGTAXTax applied to item0+ per item

Foundation Data Field Mapping (RMS to Xstore)

RMS SourceXstore TargetTypeTransformGotcha
ITEM_MASTER.ITEMXstore item IDStringDirect mappingParent items exported as separate records
ITEM_MASTER.ITEM_DESCXstore item descriptionStringDirectTruncation may occur on handheld displays
ITEM_LOC.UNIT_RETAILXstore selling priceCurrencyDirectMulti-currency requires separate VAT export
SUBCLASS.SUBXstore subclassStringVia hierarchy exportMust match merchandise hierarchy export
STORE.STOREXstore location IDIntegerDirectStore-specific item files filter by ITEM_LOC
VAT_CODE_RATES.VAT_RATEXstore tax rateDecimalPercentage to decimalExempt VAT regions (SVAT type) excluded

Data Type Gotchas

Error Handling & Failure Points

Common Error Scenarios

ScenarioSymptomCauseResolution
REST broadcast rejectionTransaction in REJECTED statusReSA validation failureReview in Xadmin; fix data and republish
RTLog import failuresaimptlog error log entriesMalformed RTLog file or corrupt dataCheck RTLogMappingConfig.xml; verify mapping
Foundation export emptyZero-line .dat filesNo delta changes or staging already purgedRun FULL mode export to resync
Lost delta recordsItems missing in XstoreExport jobs not run for >7 daysRun FULL mode export to resync all records
OAuth token expirationHTTP 401 on XOCS API callsToken expired or insufficient scopeRefresh token; verify OAuth client in IDCS
Mobile server disconnectionTablet/handheld cannot transactNetwork outage to mobile serverDesktop/thin client can go offline; mobile cannot

Failure Points in Production

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

Correct: Use SIM/SIOCS for Store Inventory

// GOOD -- Proper inventory architecture with RMS
Xstore (sales only) -> ReSA -> RMS (inventory impact)
SIM/SIOCS (inventory mgmt) <-> RMS (inventory master)
Xstore (inventory lookup) <-> SIM/SIOCS (real-time stock)

Wrong: Skipping Daily Exports

# 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

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

VersionRelease DateStatusKey ChangesMigration Notes
v24.02024-10CurrentContainerized architecture on OCI; OCI Roving EdgeMajor architecture change; requires OCI for new model
v23.02023-10SupportedPay By Link tenders; enhanced mobileIncremental upgrade; REST APIs backward-compatible
v22.02023-01SupportedDark mode; enhanced accessibilityStandard upgrade path
v21.02022-01Supported (EOL approaching)REST broadcaster for ReSA introducedFirst REST-based posting; upgrade recommended
v20.02021-01EOLLast version before REST broadcasterRTLog file-based only; upgrade to v21+

When to Use / When Not to Use

Use WhenDon't Use WhenUse Instead
Integrating Oracle Retail POS with RMS/ORMCS for merchandise and transaction managementYou need financial ERP integration (AP, AR, GL)Oracle ERP Cloud REST API or Financials integration
Deploying multi-format retail POS (desktop + tablet + handheld)You need e-commerce / digital commerce integrationOracle Commerce Cloud / ATG integration
Posting POS transactions through Sales Audit (ReSA) for validationYou need warehouse management integrationOracle WMS or SIM/SIOCS integration
Syncing foundation data (items, pricing, hierarchy) from RMS to POSYou need real-time inventory availability across channelsOracle Retail SIOCS or OMS integration
You are an Oracle Retail ecosystem customer (RMS, RPM, SIM, ReSA)You use a non-Oracle merchandising systemCustom POS integration or alternative POS platform

Important Caveats

Related Units