Workday Adaptive Planning
Sync data from your warehouse to Workday Adaptive Planning for financial planning, budgeting, and forecasting. Import actuals, headcount data, custom metrics, and operational data into Adaptive Planning sheets and accounts via the REST API.
Prerequisites
- A Workday Adaptive Planning account with an active subscription
- A dedicated integration user with API access and import permissions
- Your Adaptive Planning API base URL (typically
https://api.adaptiveplanning.com/api/v40) - The version name you want to import data into (e.g., “Working Budget”, “Actuals”)
Permissions
The authenticated user must have:
- Import permission on the target version to use any import method
- Modeled sheet access if importing configurable model data
- Level access for the organizational levels being imported
- Account access for the accounts being imported
Create a dedicated integration user in Adaptive Planning with only the permissions needed for your sync. Avoid using personal admin accounts.
Authentication
Workday Adaptive Planning supports two authentication methods.
Basic Authentication
- Navigate to Destinations in the Zeotap sidebar
- Click Add Destination and select Workday Adaptive Planning
- Select Basic Authentication
- Enter the Username and Password for your Adaptive Planning integration user
- Click Save
Bearer Token (Workday Credentials)
For Workday platform customers with user synchronization enabled, use a Workday-issued API access token instead of username/password.
- In Workday, register a new API client with Grant Type: JWT Bearer Grant and Scope: Adaptive Planning
- Generate an API access token using your Workday credentials
- In Zeotap, navigate to Destinations and click Add Destination
- Select Workday Adaptive Planning and choose Bearer Token (Workday Credentials)
- Paste the Access Token (AdaptiveAPIAccessToken) into the field
- Click Save
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
| API Base URL | Text | Yes | The Adaptive Planning API base URL. Default: https://api.adaptiveplanning.com/api/v40. |
| Instance ID | Text | No | Your Adaptive Planning instance identifier, found in your instance settings. |
Target Settings
| Field | Type | Required | Description |
|---|---|---|---|
| Import Method | Select | Yes | The API method to use for data import. See options below. |
| Version Name | Text | Yes | The Adaptive Planning version to import data into (e.g., Working Budget, Actuals). |
| Sheet Name | Text | Conditional | The modeled sheet name. Required when import method is Import Configurable Model Data. |
Import Methods
| Method | Value | Description |
|---|---|---|
| Import Standard Data | importStandardData | Import values into GL accounts, assumptions, or custom accounts. |
| Import Configurable Model Data | importConfigurableModelData | Import row-based data into modeled sheets (e.g., headcount, asset schedules). |
| Import Cube Data | importCubeData | Import multidimensional data into cube sheets. |
| Import Transactions | importTransactions | Import transaction-level detail data. |
Supported Operations
Sync Modes
| Mode | Supported |
|---|---|
| Upsert | Yes |
| Insert | Yes |
| Update | — |
| Mirror | — |
The Adaptive Planning import API naturally overwrites existing data for matching account, level, and period combinations when using Upsert mode. Insert mode appends data, which may overwrite or duplicate depending on your instance configuration. Update and Mirror are not supported because the API does not provide record-level update or delete operations.
Audience Sync Modes
| Mode | Supported |
|---|---|
| Add | — |
| Remove | — |
| Mirror | — |
| Upsert | — |
Workday Adaptive Planning does not have a list, audience, or membership concept, so audience sync modes are not supported.
Features
- Field Mapping: Yes — map your warehouse columns to Adaptive Planning accounts, levels, periods, dimensions, and values
- Schema Introspection: No — configure field mappings manually based on your Adaptive Planning instance schema
Required Mapping Fields
| Field | Description |
|---|---|
account_code | The Adaptive Planning account code identifying which account to import data into. Required for standard data imports. |
level_name | The organizational level name in Adaptive Planning. Identifies which organizational unit the data belongs to. |
Default Destination Fields
These common Adaptive Planning fields appear as suggestions in the field mapping editor:
| Field | Type | Description |
|---|---|---|
account_code | String | The account code in Adaptive Planning (e.g., GL account code) |
level_name | String | The organizational level (e.g., department, cost center) |
period | String | The time period for the data (e.g., Jan-2025, 01/2025) |
value | Number | The numeric data value to import |
dimension_1 | String | Custom dimension value for segmentation |
dimension_2 | String | Second custom dimension value |
split_name | String | Sub-account split label for detailed allocations |
notes | String | Cell-level notes or comments |
currency_code | String | ISO 4217 currency code (e.g., USD, EUR) |
row_key | String | Unique row identifier for configurable model data updates |
How It Works
- Field mapping: Zeotap maps each warehouse row to an Adaptive Planning data record using your configured field mappings. Key fields include account code, level name, period, and value.
- Batch assembly: Rows are grouped into chunks of up to 500 and assembled into an XML payload following the Adaptive Planning API format.
- API call: Each chunk is sent as an HTTP POST request to the configured import method endpoint (e.g.,
importStandardData,importConfigurableModelData). - Response validation: The API response is checked for error elements. If errors are detected, all rows in the chunk are marked as failed.
- Retry logic: Transient failures (HTTP 429 rate limits, 5xx server errors) are retried with exponential backoff (up to 3 retries per request).
Batch Size
Rows are grouped into chunks of 500 per API request. Each chunk is sent as a single XML POST body containing multiple <row> elements. This reduces round trips while staying within API payload limits.
Rate Limits
Workday Adaptive Planning does not publish fixed rate limits. Limits vary by instance and subscription tier. If you experience throttling:
- Reduce sync frequency to avoid overlapping imports
- Schedule syncs during off-peak hours for your Adaptive Planning instance
- Contact your Workday account team to understand your instance’s API limits
Zeotap automatically retries requests that receive HTTP 429 (Too Many Requests) responses with exponential backoff.
Best Practices
- Use a dedicated integration user with only import permissions rather than a personal admin account
- Test with a small batch before running a full sync to verify field mappings and version settings
- Map account codes and level names carefully — incorrect values will cause import errors
- Use the correct import method for your target data: standard data for GL accounts, configurable model data for modeled sheets
- Include period information in every row to ensure data lands in the correct time period
- Set the correct version — importing into the wrong version can overwrite planned data
Troubleshooting
Authentication failed (HTTP 401)
Verify that the username and password are correct for Basic auth, or that the access token is valid and not expired for Bearer token auth. Ensure the integration user account is active in Adaptive Planning.
Import permission denied
The authenticated user does not have import permission on the target version. In Adaptive Planning, navigate to Administration > Users and verify the integration user’s role includes import permissions for the target version.
Sheet name not found
When using Import Configurable Model Data, the sheet name must exactly match a modeled sheet in your Adaptive Planning instance. Check the sheet name spelling and capitalization in Administration > Modeled Sheets.
Account code not recognized
The account_code value in your data does not match any account in Adaptive Planning. Verify account codes in Administration > Accounts and ensure you are using the code (not the display name).
Level name not found
The level_name value does not match any organizational level. Check level names in Administration > Levels and ensure exact spelling and capitalization.
Version name not found
The version name specified in target settings does not match any version in your Adaptive Planning instance. Navigate to Versions in Adaptive Planning to verify the exact version name.
Data not appearing in expected period
Verify that the period field format matches your Adaptive Planning instance’s time period format. Common formats include Jan-2025, 01/2025, and 2025-01. The expected format depends on your instance configuration.
Rate limited (HTTP 429)
Your sync is exceeding the instance’s API rate limit. Zeotap automatically retries with backoff, but persistent rate limiting may require reducing sync frequency or scheduling during off-peak hours.
Connection timeout
Large syncs may experience timeouts if the Adaptive Planning API is under heavy load. Zeotap uses a 120-second timeout per request. If timeouts persist, try reducing chunk sizes by syncing smaller datasets.