ml-connector
VismaAnaplan

Visma and Anaplan integration

Visma.net ERP manages purchasing and accounts payable; Anaplan models budgets and spend forecasts. Connecting the two keeps your financial plans grounded in live ERP data. Supplier invoices and purchase orders from Visma flow into Anaplan modules on a schedule you control, so forecasts reflect actual commitments and spend. Budget vs actual comparisons stay current without manual data entry or export cycles.

How Visma works

Visma.net ERP exposes suppliers, supplier invoices, purchase orders, purchase receipts, GL accounts, dimensions, and journal transactions through REST APIs secured with OAuth 2.0 client credentials via Visma Connect. Each call requires the ipp-company-id header to route to the correct tenant company. Visma offers webhooks with one-time delivery and optional polling via the lastModifiedDateTime query parameter on list endpoints. Test clients are rate-limited to 500 calls per hour; refresh tokens are not issued to service applications, so a new token is obtained each time the prior one expires. Optimistic locking via ETag and If-Match headers is required on update operations.

How Anaplan works

Anaplan is a connected planning platform that holds workspaces, models, and modules for budgeting and forecasting. It exposes these entities through a REST Integration API that supports only polling: calls to start a named Import or Export Action return a task ID, which ml-connector then polls until the action reaches COMPLETE or CANCELLED status. All calls require Basic Auth, certificate-based auth, or OAuth2. The entire tenant shares a single 600-requests-per-minute rate limit, so concurrent integrations compete for bandwidth. Model locking during bulk operations can prevent simultaneous reads. Anaplan has no native invoice or GL account resource; all business data maps into workspace modules and lists.

What moves between them

Visma supplier invoices and purchase orders are exported as JSON on a schedule and imported into pre-created Anaplan modules via the Import Action, mapped to list items and line items in the Anaplan model. GL accounts and dimensions from Visma are synced separately to drive dimension lists in the Anaplan budget model. The sync is one-way: Anaplan planning models and forecasts do not write back to Visma, so Anaplan serves as a planning and reporting layer on top of ERP truth.

How ml-connector handles it

ml-connector stores Visma client credentials and uses the OAuth 2.0 client_credentials grant to obtain a bearer token, refreshing it before expiry since Visma does not issue refresh tokens. On each sync, it queries Visma for supplier invoices and purchase orders modified since the last run, formats them as JSON, and POSTs to the pre-named Anaplan Import Action, which returns a task ID. ml-connector then polls Anaplan's task endpoint until the Import reaches COMPLETE status, with exponential backoff respecting Anaplan's 600-request-per-minute tenant-wide limit. If an import fails, the full record set can be replayed on the next cycle. Dimension and GL account syncs follow the same pattern. Anaplan model locking during bulk operations may temporarily block reads, so ml-connector retries with jitter. Every record carries a full audit trail and timestamps so a downstream Anaplan action failure can be diagnosed and replayed.

A real-world example

A mid-sized manufacturing company runs Visma.net ERP for AP and purchasing across three plants. The finance team builds rolling 24-month cash flow and spend forecasts in Anaplan, but updates them monthly by exporting supplier and purchase data from Visma by hand and copy-pasting into Anaplan modules, a two-day manual process that often introduces data mismatches between the systems. After the integration, supplier invoices and open purchase orders from Visma sync automatically into Anaplan each week, so the forecast model refreshes with current commitments and actual spend, eliminating the manual export-and-paste cycle and keeping forecasts aligned with ERP reality.

What you can do

  • Sync supplier invoices and purchase orders from Visma into Anaplan budget and forecast modules on a schedule you control.
  • Map Visma GL accounts and dimensions into Anaplan list items so budget structures align with your chart of accounts.
  • Handle Visma OAuth 2.0 token refresh and Anaplan rate limiting across concurrent integrations.
  • Poll Anaplan Import and Export task status until completion with exponential backoff and full audit trails.
  • Replay failed syncs on the next cycle so data mismatches can be corrected without manual intervention.

Questions

Does data flow in both directions between Visma and Anaplan?
No. Supplier invoices, purchase orders, and GL accounts flow from Visma into Anaplan modules for planning and forecasting. Anaplan is a planning layer, not a source of truth for ERP data, so forecasts and budgets in Anaplan do not write back to Visma.
How does ml-connector handle Visma's lack of automatic webhook retries and Anaplan's shared rate limit?
ml-connector polls Visma on a schedule instead of relying on webhooks, using the lastModifiedDateTime parameter to fetch only records that have changed since the last run. For Anaplan, it respects the 600-request-per-minute tenant-wide limit by chunking imports and using exponential backoff when approaching the threshold, so other integrations in the same Anaplan workspace do not starve.
What happens if an Anaplan import action fails or is slow to complete?
ml-connector stores the full record set and audit trail for every sync. If an import fails or stalls, the task ID is logged, the failure is surfaced in the audit, and the entire record set is replayed on the next scheduled sync, so data can be corrected without manual re-entry.

Related integrations

Connect Visma and Anaplan

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started