SAP Business One and Asana integration
SAP Business One runs finance, purchasing, and inventory. Asana runs the work that surrounds those documents: reviews, approvals, and project tracking. Connecting the two means an A/P purchase invoice or purchase order raised in SAP Business One becomes an Asana task with its key figures attached, and the approval that happens in Asana flows back to act on the document in SAP Business One. ml-connector handles the very different APIs on each side and moves records on a schedule or by webhook, with the financial values carried in Asana custom fields you map once.
What moves between them
The main flow runs from SAP Business One into Asana. ml-connector reads new and changed purchase invoices and purchase orders and creates or updates an Asana task for each one, writing the vendor, amount, due date, and document number into mapped Asana custom fields. Business partner contacts move the same direction so the Asana user roster reflects active vendors and customers. Task completion and custom field changes flow back from Asana into SAP Business One, where a completed approval task can close the matching purchase order or release a held purchase invoice. The chart of accounts and journal entries stay in SAP Business One and are not written from Asana, which holds no financial records of record.
How ml-connector handles it
ml-connector stores both credential sets encrypted, accepts the full Service Layer base URL per customer since SAP B1 publishes no shared address, and reuses the B1SESSION cookie rather than logging in per request because the first login costs about five seconds. When a call returns error code -5002 the session has expired, so it re-authenticates and replays the request. Because Asana has no finance objects, each purchase invoice or purchase order is represented as a task and its figures land in custom fields that you map once; custom fields are resolved by GID, not name, because names can be renamed, and opt_fields is always passed so values are not returned empty. On the Asana side it registers a webhook, completes the X-Hook-Secret handshake, verifies the HMAC-SHA256 signature on every event, and re-registers automatically because Asana deletes webhooks after 24 hours of failures. On the SAP side it polls the Service Layer with an UpdateDate filter and odata.maxpagesize paging unless the customer has the Webhook Messenger Service, since that requires SAP admin setup. Neither API offers an idempotency key, so the connector checks for an existing record by DocNum before re-creating in SAP and stores the Asana GID before re-creating a task, and both 429 and retryable errors back off and replay.
A real-world example
A mid-sized industrial distributor with about 150 staff runs SAP Business One for purchasing, inventory, and finance and runs Asana for day-to-day coordination across the warehouse and the office. Before the integration, every supplier purchase invoice entered in SAP Business One was copied by hand into an Asana task so a manager could approve it, and the approval then had to be re-keyed back into SAP Business One to release the invoice for payment. With SAP Business One and Asana connected, each new purchase invoice becomes an Asana approval task automatically with its vendor, amount, and due date in custom fields, and marking the task complete releases the document on the SAP side. The duplicate entry on both ends is gone, and approvals stop stalling in email.
What you can do
- Create or update an Asana task for each new or changed SAP Business One purchase invoice and purchase order.
- Write SAP Business One vendor, amount, due date, and document number into mapped Asana custom fields by GID.
- Close a purchase order or release a held purchase invoice in SAP Business One when its Asana approval task completes.
- Keep the Asana user roster aligned with active SAP Business One business partner contacts.
- Bridge the SAP B1 session cookie with an Asana token, polling or receiving webhooks, with retries and a full audit trail.
Questions
- How does the integration handle the fact that Asana has no invoice or purchase order objects?
- Asana has no native finance objects, so ml-connector represents each SAP Business One purchase invoice or purchase order as an Asana task. The values such as vendor, amount, due date, and document number are written into Asana custom fields that you map once during setup. Those custom fields are matched by GID rather than name, because Asana lets field names be renamed.
- Does it use webhooks or polling to detect changes?
- It depends on the system. Asana sends signed push webhooks, so ml-connector completes the X-Hook-Secret handshake, verifies the HMAC-SHA256 signature, and re-registers when Asana auto-deletes a webhook after repeated failures. SAP Business One only supports webhooks on version 10.0 FP 2602 with the Webhook Messenger Service installed, so by default the connector polls the Service Layer with an UpdateDate filter on a schedule.
- Which direction does data move between SAP Business One and Asana?
- The main flow is SAP Business One into Asana, where purchase invoices, purchase orders, and business partner contacts create or update Asana tasks and users. Task completion and custom field changes flow back from Asana so a finished approval can close a purchase order or release a held invoice in SAP Business One. The chart of accounts and journal entries stay in SAP Business One and are not written from Asana.
Related integrations
More SAP Business One integrations
Other systems that connect to Asana
Connect SAP Business One and Asana
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started