Bitta Retail POS guide
Telemetry and diagnostics
The privacy-safe BAAPOS telemetry event series, wiring Application Insights at the environment level, the in-product diagnostic surfaces, and exactly what to capture before contacting support.
status: verified applies-to: 1.0.0.121rev: 1
Bitta Retail POS emits structured, privacy-safe telemetry for its operational events and ships several in-product diagnostic surfaces. This page covers what the app records, how Application Insights fits in, and exactly what to capture before contacting support.
Built-in telemetry: the BAAPOS event series
Every telemetry event the app raises goes through a single emission point and carries an event id in the BAAPOS-#### range plus an AppVersion dimension. Custom dimensions are limited to counts, category codes, and configuration identifiers such as store code, terminal id, and setup codes.
NOTE
Telemetry never contains card data, PINs, API keys, customer or item names, or monetary amounts. Failure events carry short category codes (for example a processor's decline category), never free-form error text or payloads.
The event families:
| Event ids | Area | Signals |
|---|---|---|
| BAAPOS-0001 | Lifecycle | Install completed |
| BAAPOS-0010 - 0011 | Selling | Sale posted; sale tendered and completed (with a locale-invariant tender-type mix) |
| BAAPOS-0020 | End of day | Consolidation run finished (group, failed, and skipped counts) |
| BAAPOS-0021, 0022, 0025 | Register controls | Price override, on-account sale, line/invoice discount (reason codes only, never prices) |
| BAAPOS-0030 | Scanning | Barcode parse failure that fell back to raw item lookup |
| BAAPOS-0040 - 0041 | Shifts | Shift closed (over/short count, never an amount); X/Z report printed |
| BAAPOS-0050 - 0051 | Printing | Receipt print sent / failed, with the transport and a short failure category |
| BAAPOS-0060 - 0067 | Card payments | Payment lifecycle: started, captured, failed, refunded, crash-restart reconciliation, and abandoned-authorization release |
| BAAPOS-0070 | Returns | Return document created (line count only) |
| BAAPOS-0075 | Dual pricing | Price-mode adjustment applied at tender (mode name only) |
| BAAPOS-0080 - 0084 | Licensing | Entitlement stored through enforcement blocked, with short reason categories such as TrialEnded or TerminalCountExceeded |
| BAAPOS-0090 - 0092 | Security | Register locked/unlocked and cashier switched (never a PIN) |
| BAAPOS-0093 - 0095 | Scale | Scale paired, stable reading accepted, read failed (protocol only, never a weight) |
| BAAPOS-0104 - 0106 | Kitchen output | Kitchen label queued, failed, reprint requested |
| BAAPOS-0118 | Dashboards | Warning raised when role-center dashboard data is momentarily unavailable |
These events are emitted at extension-publisher scope, which means they land in Bitta Apps' own Application Insights resource. In practice: Bitta Apps support can already see your environment's operational signals (correlated by app version, store, and terminal) without any setup on your side, and the data they see is limited to the safe dimensions above.
Wiring Application Insights at the environment level
You can additionally connect your own Application Insights resource to the Business Central environment itself. This gives your team environment telemetry that you own - errors, performance signals, and extension lifecycle events for everything running in the environment - and it is the standard way to self-diagnose platform-level issues.
- Create (or reuse) an Application Insights resource in your Azure subscription and copy its connection string.
- Open the Business Central admin center, select the environment, and paste the connection string into the environment's Application Insights setting.
- Restart the environment when prompted; telemetry begins flowing after the restart.
TIP
Wire Application Insights before go-live, not after the first incident. Historical telemetry cannot be collected retroactively, and having even a few days of baseline makes support conversations much faster.
In-product diagnostic surfaces
Before reaching for telemetry, the app itself usually tells you where the problem is:
- Role-center attention cues - EFT Needs Attention, Failed Print Jobs, Settlement Attention, EOD Backlog, and unmapped-record counts, each drilling to the affected records. See Analytics and reporting.
- POS Print Jobs - every durable print job with Status, Attempt Count, Last Failure Category, and Error Detail, plus Retry and Cancel. See Printers and hardware setup.
- EFT transactions and attention - the durable record of every card payment, used to reconcile interrupted transactions. See Payment acceptance labs.
- POS Settlement Entries - per-tender settlement outcomes with an error message and a retry action. See Per-tender settlement.
- POS License page - license state, days left, and terminal counts. See Licensing and trials.
What to capture before contacting support
Collect these before you write in - they let support identify the exact code path on the first pass:
- App version - from Extension Management in Business Central (the current release is 1.0.0.121).
- Business Central version and environment - the BC version, the environment name, and whether it is production or sandbox.
- Where it happened - store code, terminal id, and the POS user number involved.
- The exact error text - copy it verbatim. For a "record was modified" or "not up-to-date" error, also capture the top line of the AL call stack from the error details before refreshing the page; it names the exact write path.
- When it happened - date and time with your time zone, so it can be matched to telemetry.
- What the operator was doing - the two or three steps immediately before the failure, and whether it reproduces.
- Relevant record ids - the POS sale number, print job entry number, settlement entry, or the masked card-payment reference shown in the UI.
- A screenshot - of the error and the relevant page state.
WARNING
Never include card numbers, PINs, API keys, activation codes, or raw processor payloads in screenshots or support messages. The masked references and safe status texts shown in the UI are sufficient - support never needs the raw values.
For symptom-by-symptom self-service fixes, start with Troubleshooting.