SAP Business One and Fishbowl integration
SAP Business One runs accounting, purchasing, and inventory for mid-market companies. Fishbowl Advanced manages on-premise inventory, purchase orders, and manufacturing on the warehouse floor. Connecting the two keeps purchasing records and stock levels synchronized without manual re-entry. Purchase orders created in SAP Business One flow into Fishbowl, goods receipts recorded in Fishbowl post back to SAP Business One, and inventory quantity changes stay aligned so warehouse and accounting agree on hand counts.
What moves between them
Purchase orders and purchase order line items flow from SAP Business One into Fishbowl whenever SAP Business One purchase orders are created or updated. Goods received transactions and quality inspections recorded in Fishbowl flow back into SAP Business One as incoming payment or inventory adjustment postings. Vendor and part master records are synchronized in both directions so Fishbowl can validate vendors and parts against SAP Business One without orphaning references. Inventory quantity on hand is polled from both systems daily and reconciled; if a manual count or adjustment exists in one system but not the other, ml-connector flags the discrepancy in the audit log for manual review.
How ml-connector handles it
Since both systems are on-premise with customer-supplied URLs, ml-connector stores each URL and accepts them as configuration per cell. On session startup, ml-connector logs into SAP Business One via POST /Login and keeps the B1SESSION cookie, re-authenticating if the 30-minute inactivity timeout fires (detected by a -5002 error code on the next OData call). Fishbowl login follows the same pattern: store the bearer token and refresh it when needed. Purchase orders are matched between systems by external document reference (a field ml-connector writes to SAP Business One and reads from Fishbowl) so updates in one system can be correlated to the other without rekeying. Line items map via part number: ml-connector reads SAP Business One item codes and cross-references them against Fishbowl parts, creating a new Fishbowl part if an item has no match and flagging it for manual review. Fishbowl has no published rate limit but polling every 5 to 15 minutes is recommended; ml-connector uses a configurable interval with exponential backoff if network timeouts occur. Neither system exposes idempotency keys in their APIs, so ml-connector deduplicates by checking DocNum in SAP Business One and PO number in Fishbowl before re-enqueuing after a network error. Both systems are reachable only over internal network; if either becomes unreachable, ml-connector retries with exponential backoff for up to 24 hours, then surfaces an alert to ops.
A real-world example
A mid-sized beverage and food distributor runs SAP Business One at headquarters for accounting and order-to-cash, and Fishbowl Advanced at the regional warehouse for inventory, picking, packing, and returns. Before the integration, the warehouse team received purchase orders by email or phone, manually entered them into Fishbowl, then waited days for the accounting team to reconcile physical received goods against the supplier invoices posted in SAP Business One. Discrepancies between Fishbowl inventory counts and SAP Business One ledger accounts were common and required a full physical count to resolve. With SAP Business One and Fishbowl connected, each new purchase order in SAP Business One appears in Fishbowl within minutes, warehouse staff scan and receive goods in Fishbowl, and the receipt automatically posts back into SAP Business One as an accrual. Inventory counts stay aligned daily. Month-end close no longer requires a separate reconciliation step between the two systems.
What you can do
- Sync purchase orders from SAP Business One into Fishbowl, mapped by external document reference and line item by part number.
- Post goods receipts from Fishbowl back into SAP Business One as inventory receipts, matched to the original purchase order.
- Align vendor master records between SAP Business One and Fishbowl so Fishbowl purchase order lines reference valid vendors.
- Handle SAP Business One session token refresh on 30-minute inactivity timeout and Fishbowl bearer token re-issue, with full audit logging on both sides.
- Detect and reconcile inventory count discrepancies between the two systems daily, flagging manual adjustments for review.
Questions
- How does ml-connector handle the customer-supplied URLs on both SAP Business One and Fishbowl?
- Both systems are on-premise and reachable only at customer-specified URLs and ports. ml-connector accepts the full OData base URL for SAP Business One (e.g. https://customer-server:50001/b1s/v2) and the Fishbowl API base URL (e.g. http://warehouse-server:2456/api) as configuration stored per cell. Each cell's URLs are isolated, so multi-customer setups require no cross-customer exposure.
- What happens when SAP Business One's 30-minute session timeout fires?
- SAP Business One returns error code -5002 on the next OData call after inactivity. ml-connector detects this error, immediately re-authenticates with POST /Login, and retries the failed call. The B1SESSION cookie is refreshed and reused for subsequent calls, so users see no delay on the Fishbowl side.
- How are purchase order line items matched between SAP Business One and Fishbowl if part numbers differ?
- ml-connector reads the SAP Business One item code and cross-references it against Fishbowl parts by part number. If a match is found, the line item is created with the Fishbowl part reference. If no match exists, ml-connector creates a new part in Fishbowl with a name derived from the SAP Business One item and flags it for manual review so the warehouse team can confirm the mapping is correct.
Related integrations
More SAP Business One integrations
Other systems that connect to Fishbowl
Connect SAP Business One and Fishbowl
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started