Multi-site restaurant operator · Integration

When the POS moved to the cloud and the old sales feed broke, we rebuilt the nightly export into the ERP in two days.

  • Oracle Simphony Cloud
  • SAP
  • SFTP
  • Scheduled integration
  • 2 daysto rebuild the feed on the cloud API
  • 2reconciliation checks on every revenue-centre row
  • Nightlyexport, upload and reconciliation email
Before

The operator's daily sales feed into SAP came from separate on-premise exporters, one for each country. Each read the POS database directly and hard-coded payment types into SQL, so adding a payment method meant editing a config file.

Moving to Oracle Simphony Cloud removed direct database access and broke the feed. It had to be rebuilt on the cloud API without changing the file layout SAP imports.

What we built
A secure API client
Signs in to the Simphony Cloud BI API, keeps its tokens fresh, and fetches restaurants in parallel within a set limit.
Reconciliation checks
Net sales plus tax, and the tendered total, must each match the closed-check total within 0.05. Each country can stop the export on a failure or just warn.
Payment types mapped as data
A mapping table replaces the hard-coded SQL, seeded once from the old exporters' settings, so a new payment method no longer needs a code change.
The file SAP already expects
Pipe-delimited files with each country's date format and prefix, uploaded over SFTP with retries.
Run history and re-runs
A reconciliation email after every run, an audit record with totals, and an admin page to re-run a country, date or set of restaurants.
Integration

The same file for SAP, with a new source underneath

  1. existing systemOracle Simphony Clouddaily sales and tender totals
  2. we builtExport servicevalidate, map, write the file
  3. existing systemSAPinbound folder
SystemDirectionMethodWhat flows
Oracle Simphony Cloud BI APIinREST · OpenID Connect with PKCEDaily operations, tender and menu-item totals per location
SAPoutSFTPPipe-delimited daily sales and tender file per country
EmailoutSMTP over TLSRun status and reconciliation totals
Legacy exportersin (once)Settings read at first startPayment-type-to-column mappings from the old SQL
next case studyAn AI analyst over live point-of-sale data
Read it →