Anaplan
Sync data to Anaplan models via the Integration API v2. Use Zeotap to push planning data, dimension members, and transactional records into Anaplan modules and lists for enterprise planning, budgeting, and forecasting workflows.
Prerequisites
- An Anaplan account with API access enabled (Standard, Professional, or Enterprise plan)
- A workspace and model configured in Anaplan
- An import action defined in the Anaplan model that maps a data source file to the target module or list
- The workspace ID, model ID, file ID, and import action ID for the target import
Permissions
Your Anaplan user account must have:
- Workspace Administrator or Model Builder role for the target workspace and model
- Permission to run import actions on the target model
- API access enabled for the account (contact your Anaplan administrator if API access is not available)
Authentication
Anaplan uses Basic Authentication with your Anaplan email and password. Zeotap automatically obtains and refreshes authentication tokens.
- In Zeotap, enter your Anaplan email address in the Email field
- Enter your Anaplan password in the Password field
- Zeotap will authenticate against the Anaplan Authentication Service and obtain a session token
- Tokens are automatically refreshed every 30 minutes (Anaplan tokens expire after 35 minutes)
Note: If your organization uses SSO for Anaplan, you may need a dedicated service account with direct authentication enabled. Contact your Anaplan administrator for details.
Configuration
Anaplan does not require additional configuration fields beyond authentication and target settings.
Target Settings
| Field | Type | Required | Description |
|---|---|---|---|
| Workspace ID | Text | Yes | The Anaplan workspace ID. Found in the Anaplan URL when viewing a workspace, or retrieve it via the Anaplan API (GET /workspaces). |
| Model ID | Text | Yes | The Anaplan model ID. Found in the Anaplan URL when viewing a model, or retrieve it via the Anaplan API (GET /workspaces/{workspaceId}/models). |
| File ID | Text | Yes | The ID of the import data source file in the Anaplan model. This file receives the uploaded CSV data. Retrieve it via GET /workspaces/{workspaceId}/models/{modelId}/files. |
| Import Action ID | Text | Yes | The ID of the import action to trigger after uploading data. The import action defines how file data maps into the model. Retrieve it via GET /workspaces/{workspaceId}/models/{modelId}/imports. |
Finding Your IDs
To find the workspace ID, model ID, file ID, and import action ID:
- Via the Anaplan URL: When viewing a model in Anaplan, the URL contains the workspace and model IDs
- Via the API: Use the Integration API v2 to list workspaces, models, files, and imports:
GET https://api.anaplan.com/2/0/workspaces— lists all workspacesGET https://api.anaplan.com/2/0/workspaces/{workspaceId}/models— lists models in a workspaceGET https://api.anaplan.com/2/0/workspaces/{workspaceId}/models/{modelId}/files— lists filesGET https://api.anaplan.com/2/0/workspaces/{workspaceId}/models/{modelId}/imports— lists import actions
Supported Operations
Sync Modes
| Mode | Supported | Description |
|---|---|---|
| Insert | Yes | Uploads data and triggers the import action. Anaplan adds new items based on the import definition. |
| Upsert | Yes | Uploads data and triggers the import action. Anaplan updates existing items and adds new ones based on the import definition’s merge settings. |
| Update | — | Not supported as a separate mode. Use upsert with an import action configured for update behavior. |
| Mirror | — | Not supported. Anaplan import actions do not provide full-table replacement semantics. |
Audience Sync Modes
Anaplan does not have a native list membership or audience concept accessible via the API. Audience sync modes are not supported.
Features
- Field Mapping: Yes — map source columns to Anaplan import file column names
- Schema Introspection: No — Anaplan model schemas are defined within the Anaplan platform. Configure field mappings manually to match your import definition.
Required Mapping Fields
There are no universally required mapping fields. The required fields depend on your specific Anaplan import action definition. Typically, you need to map at least one identifier column (such as a code or name) that matches the import source file’s expected columns.
Default Destination Fields
| Field | Type | Description |
|---|---|---|
| Code | string | Unique identifier code for the list item or dimension member |
| Name | string | Display name of the list item or dimension member |
| Parent | string | Parent item code for hierarchical lists |
These are common fields for Anaplan list imports. Your actual import file may require different fields depending on the target module or list structure.
How It Works
Zeotap writes data to Anaplan using the Integration API v2 bulk import workflow:
-
Authentication: Zeotap authenticates against
https://auth.anaplan.com/token/authenticateusing your email and password to obtain anAnaplanAuthToken. Tokens are cached and refreshed automatically. -
CSV Generation: The batch rows are converted to CSV format with a header row matching the destination field names.
-
File Upload: The CSV data is uploaded to the specified Anaplan file using the chunked file upload API:
- Set the chunk count to -1 (single-chunk mode) via
POST /files/{fileId} - Upload the CSV data as chunk 0 via
PUT /files/{fileId}/chunks/0 - Mark the upload as complete via
POST /files/{fileId}/complete
- Set the chunk count to -1 (single-chunk mode) via
-
Import Trigger: The specified import action is triggered via
POST /imports/{importId}/tasks, which returns a task ID. -
Status Polling: Zeotap polls the import task status via
GET /imports/{importId}/tasks/{taskId}every 2 seconds until the task reaches a terminal state (COMPLETE or CANCELLED), with a maximum wait of 5 minutes.
Batching
Each Zeotap batch is uploaded as a single file to Anaplan. The entire batch is converted to CSV and uploaded in one chunk. Anaplan supports file chunks up to 50 MB each. For very large datasets, Zeotap handles the data in multiple sync batches.
Error Handling
- If the file upload or import trigger fails, the entire batch is marked as failed with a descriptive error.
- If the import task completes but reports failures, Zeotap marks the batch as failed and notes that a failure dump is available in Anaplan for inspection.
- Transient errors (HTTP 429 and 5xx) are retried automatically with exponential backoff.
- Authentication failures trigger a token refresh and retry.
Rate Limits
Anaplan does not publish explicit API rate limits, but the platform may throttle requests during high-load periods. Zeotap handles throttling automatically with retry logic and exponential backoff.
General guidance:
- Avoid running multiple concurrent imports against the same model
- Large imports (millions of rows) may take several minutes to process within Anaplan
- The import task status is polled at 2-second intervals with a 5-minute timeout
Best Practices
-
Define import actions in Anaplan first: Before configuring the Zeotap destination, create the import action in Anaplan that maps the source file columns to the target module or list. This defines how data is interpreted during import.
-
Use consistent column names: Ensure your Zeotap field mapping produces column names that exactly match what the Anaplan import action expects. Column name mismatches will cause import failures.
-
Test with small datasets: Start with a small batch to verify the import action works correctly before syncing large datasets.
-
Use a dedicated service account: For production integrations, create a dedicated Anaplan user account with API access rather than using a personal account. This ensures syncs continue working even if individual user passwords change.
-
Monitor import results in Anaplan: After each sync, check the import action’s history in Anaplan for detailed success/failure information, especially if the sync reports partial failures.
-
Keep import definitions up to date: If you change the target module or list structure in Anaplan, update the import action definition accordingly. Stale import definitions can cause silent data mapping errors.
Troubleshooting
Authentication failed
Verify that your email and password are correct. If your organization uses SSO, you may need a service account with direct authentication enabled. Contact your Anaplan administrator to verify API access is enabled for your account.
Workspace or model not found (HTTP 404)
Double-check the workspace ID and model ID. These are long alphanumeric strings that can be found in the Anaplan URL or via the API. Ensure you have access to the specified workspace and model.
Access denied (HTTP 403)
Your account may not have sufficient permissions on the workspace or model. Verify that your account has at least Model Builder or Workspace Administrator role for the target workspace and model.
Import task completed with failures
The import ran but some or all records were rejected. Check the import action’s history in Anaplan for the failure dump, which provides details on which rows failed and why. Common causes include:
- Column names in the CSV not matching the import definition
- Invalid data values (e.g., text in a numeric column)
- Missing required columns
- Duplicate items in a list that does not allow duplicates
Import task timed out
The import did not complete within 5 minutes. This may occur for very large datasets. Check the import task status in Anaplan — it may still be running. If imports consistently time out, consider reducing the batch size in your Zeotap sync configuration.
File upload failed
The CSV data could not be uploaded to the Anaplan file. Verify that the file ID is correct and that the file exists in the model. The file must be an import data source file, not an export file. You can list available files via GET /workspaces/{workspaceId}/models/{modelId}/files.
Empty data reaching Anaplan
If the import succeeds but no data appears in the model, check that your field mapping is correctly configured. The CSV column names must match what the Anaplan import action expects. Also verify that the import action is linked to the correct target module or list.