Guide Summary
| Audience | Support staff, implementation team, AI agents, and developers. |
| Applies To | QBMWServices Windows service, QSalesView, QClock, QBM Server, SQL Server, Cloudflare Tunnel. |
| Purpose | Provide repeatable service checks and repair steps for QBMWServices support cases. |
| Last Updated | 2026-05-18 |
Baseline Details
| Item | Common Value | Expected Result |
| Installation folder | C:\QBMWServices\x64 | Contains QBMWServices.exe, DLLs, configuration, and logs. |
| Service name | QBMWServices | Windows service exists and can start automatically. |
| Startup file | QBMWServices.exe | Service runs the published executable. |
| Configuration | appsettings.json | Contains Kestrel and ProductKey settings. Secrets must be protected. |
| API port | 8053 | Local API listens for browser app requests. |
| Log folder | C:\QBMWServices\x64\Logs | Contains service logs when logging is enabled. |
Support Commands
# Shows whether the Windows service exists and whether it is running.
Get-Service -Name 'QBMWServices'
# Shows whether the local API port is listening.
Get-NetTCPConnection -LocalPort 8053
# Confirms the local TCP connection can open.
Test-NetConnection -ComputerName localhost -Port 8053
# Checks the HTTP endpoint. A 404 at the root can be normal; connection refused is not normal.
curl.exe -I http://localhost:8053
Expected result: Service status is Running, port 8053 is listening, TCP test succeeds, and HTTP reaches the service even if the root route is not a functional page.
Configuration
- Keep
appsettings.json beside the published executable.
- Confirm
ProductKey exists, but do not copy the full key into tickets or chat.
- Confirm Kestrel binding includes the expected URL, commonly
http://0.0.0.0:8053 or http://localhost:8053.
- Confirm the service account can read application files and write logs.
- If Windows blocks binding, review URL reservations and administrator permissions.
# This is a support example; change the account according to customer policy.
netsh http add urlacl url=http://+:8053/ user=Everyone
Startup Failures
| Symptom | Likely Cause | Support Check |
| Service starts then stops | Configuration error, missing dependency, port conflict, permission issue. | Review Logs folder and Windows Event Viewer. |
| Port not listening | Service not running, Kestrel binding issue, blocked URL reservation. | Check service status, appsettings.json, and URL ACL. |
| Access denied at startup | Service account cannot read files or bind to URL. | Check folder permissions and URL reservation. |
| Product key error | Missing or invalid ProductKey. | Confirm key is present without exposing it. |
Login And Timeout Failures
- If login does not reach QBMWServices, check the Service Address, Cloudflare Tunnel, and port
8053.
- If QBMWServices is reached but login fails, check QBM Server status, SQL Server status, and database name.
- If permission checks time out, check QBM Server responsiveness and security group access.
- If manager reports are blocked, check QSalesView manager report permission and cost/profit permissions when those reports are requested.
Update And Reinstall
- Back up the current
appsettings.json and note the current service status.
- Stop QBMWServices before replacing published files.
- Replace application files without deleting the working production configuration unless the new file is already correct.
- Start QBMWServices and verify port
8053.
- Test local API, Cloudflare public URL if used, and a QSalesView login.
# Stop before replacing files.
Stop-Service -Name 'QBMWServices'
# Start after files and configuration are ready.
Start-Service -Name 'QBMWServices'
Troubleshooting Decision Tree
- Does the service exist? If no, install or register it.
- Is the service running? If no, start it and check logs if it stops.
- Is
8053 listening? If no, check binding, URL ACL, firewall, and port conflict.
- Does local HTTP reach the service? If no, review logs and Kestrel settings.
- Can QBMWServices reach QBM Server? If no, fix QBM Server, private port, firewall, or server name.
- Can QBM Server reach SQL Server and the database? If no, repair SQL Server or database access.
- If infrastructure is healthy, check ProductKey, token, application permission, and report permission.
What To Send To Support
- Service status screenshot or command output.
- Port
8053 listener result.
- Relevant log files from the issue time.
appsettings.json with ProductKey and secrets masked.
- QSalesView or QClock exact error and timestamp.
- Cloudflare tunnel target if public access is involved.
Security Notes
- Do not expose product keys, passwords, tunnel tokens, or raw customer database backups.
- Do not expose QBM Server or SQL Server directly to the internet.
- Use the least service account permissions that still allow the service to read files, bind the URL, and write logs.