ml-connector
Sage 300Anaplan

Sage 300 and Anaplan integration

Sage 300 runs accounts payable, accounts receivable, and general ledger for mid-market businesses on premise. Anaplan runs financial planning and budgeting in the cloud. Connecting the two brings live purchase order and invoice data into your planning models so forecasts and budgets reflect actual commitments. Anaplan models can then export back into Sage 300 as adjustment transactions, closing the feedback loop between operational ledger and strategic plan.

How Sage 300 works

Sage 300 is self-hosted on Windows IIS with a SQL Server backend and exposes Purchase Orders, Invoices, Vendors, GL Accounts, and Inventory through REST and OData APIs. Every request requires HTTP Basic Authentication with an uppercase username and password sent in the Authorization header. The base URL is customer-specific and includes the company and module name. Sage 300 supports OData filtering and pagination for polling on a schedule, but has no webhooks or change-data-capture; all synchronization is pull-based. API users must be created in Sage 300 Administrative Services with Web API security group privileges assigned. The IIS server must be exposed over HTTPS and configured with Anonymous Authentication enabled.

How Anaplan works

Anaplan is a cloud planning platform accessible via REST with both Basic Authentication and OAuth2 options. Planning models are structured as workspaces, modules, lists, and line items rather than traditional GL accounts or vendors. Anaplan synchronization uses a pull model: ml-connector starts an Import or Export action task by POSTing to the Integration API, then polls the task status until it completes, and downloads the result file for exports. The platform enforces a 600-request-per-minute rate limit tenant-wide, and bulk import/export requires a pre-created named Action in the model. All uploads are limited to approximately 50MB per file. Workspace Admin role is required for API transactional operations.

What moves between them

Purchase orders, invoices, and GL account master data flow from Sage 300 into Anaplan on a scheduled poll cadence. ml-connector reads Sage 300 via OData filters on document date, maps purchase orders and invoice amounts to Anaplan line items in pre-created budget modules, and posts the data through Anaplan Import actions. Adjustment transactions and forecast data can also flow from Anaplan back into Sage 300 as GL journal batches or AP adjustment batches, completing a two-way planning cycle. All transfers use Anaplan's task-based asynchronous model to respect rate limits.

How ml-connector handles it

ml-connector encrypts both the Sage 300 Basic Auth credentials and the Anaplan API token and stores them in the cell. On the Sage 300 side, it constructs the customer-specific base URL and includes the Basic Auth header on every REST request. It polls Sage 300 using OData filters and pagination to retrieve new or changed purchase orders and invoices since the last sync, mapping vendor groups to Anaplan list hierarchies and line amounts to module line items. For Anaplan, ml-connector POSTs to start an Import action with the prepared data file, then polls the Integration API for task status in a loop until the task completes or fails. If the 600-request-per-minute limit is hit, ml-connector backs off and retries. Exports from Anaplan follow the same pattern: POST to start an Export action, poll for completion, and download the result CSV. Both directions include transaction IDs for deduplication and a full audit trail of every record posted and every API call made.

A real-world example

A mid-market manufacturer runs Sage 300 for procurement and finance, and uses Anaplan for quarterly budget review and rolling forecast. Each quarter, finance extracts purchase order totals from Sage 300, manually maps them by vendor group and cost center, re-enters them into Anaplan forecast models, and then manually posts variance adjustments back into Sage 300 GL. With Sage 300 and Anaplan connected, purchase orders flow into Anaplan automatically each week, keeping the forecast current with actual commitments. When Anaplan models generate adjustment transactions for accrual entries or re-allocations, those post back into Sage 300's GL without manual re-keying. Budget vs. actual closes in days instead of weeks, and the two systems stay in agreement.

What you can do

  • Read purchase orders, invoices, and vendor master data from Sage 300 and map them into Anaplan planning models on a scheduled poll.
  • Post Anaplan forecast adjustments and accruals back into Sage 300 as GL journal batches or AP adjustment batches.
  • Encrypt Sage 300 Basic Auth credentials and Anaplan API tokens, and handle both authentication schemes without exposing secrets.
  • Poll Anaplan task status until Import and Export actions complete, backing off when the 600-request-per-minute rate limit is hit.
  • Maintain a full audit trail of every purchase order, invoice, and adjustment posted between the two systems, with deduplication by transaction ID.

Questions

Which direction does data move between Sage 300 and Anaplan?
Purchase orders, invoices, and GL accounts flow from Sage 300 into Anaplan planning models on a scheduled basis. Forecast adjustments, accruals, and re-allocations can also flow from Anaplan back into Sage 300 as GL journal batches or AP adjustment batches. Both directions are supported, allowing a two-way planning cycle between operational ledger and strategic forecast.
How does ml-connector handle Anaplan's 600-request-per-minute rate limit?
ml-connector tracks the rate limit and backs off with exponential retry when it receives HTTP 429 Too Many Requests from Anaplan. It also uses Anaplan's asynchronous Import and Export task model, which processes bulk data in a single task rather than many individual API calls, reducing the request count.
Does ml-connector work with Sage 300 on premise?
Yes. Sage 300 is self-hosted on Windows IIS, and ml-connector requires the customer to expose their IIS server over HTTPS with Anonymous Authentication enabled. ml-connector includes the customer-specific base URL and Basic Auth credentials with every request, so it works with any properly configured Sage 300 instance.

Related integrations

Connect Sage 300 and Anaplan

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

Get started