100% found this document useful (1 vote)
3K views465 pages

Adaptive Planning Intergration

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
3K views465 pages

Adaptive Planning Intergration

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 465

11/5/21, 12:37 PM Workday® Workday Adaptive Planning

1 | Managing Data Integration

1.1 | Adaptive Planning Integration


1.1.1 | Integration Overview

1.1.1.1 | Integration Overview

Product documentation overview of Adaptive Planning Integration.

Adaptive Planning Integration is an application that acts as a secure bridge to import data from different data sources like spreadsheets, databases, on-premises
sources, and cloud sources into Adaptive Planning products. You can filter, clean, and map the information being imported so you can eliminate potential errors that
can happen during a manual data import. In addition, you can schedule tasks and operations so data can be imported at specific times automatically.

1.1.1.2 | Concept: Integration

The integration framework acts as a secure bridge for importing data and metadata from different data sources into Adaptive Planning. Data sources can include
spreadsheets, databases, and cloud-based or on-premises systems. You can filter, clean, map, and merge the information coming from these sources to eliminate
potential import errors. You can also schedule tasks and operations so that data automatically imports at specific times.

The architecture of the Adaptive Planning Integration framework supports this flow:

1. Connecting to sources, including Adaptive Planning, Workday, NetSuite, Salesforce, SAGE Intacct, MSDGP, and other cloud systems. Creating on-premise
Agents to load data directly from Oracle or other on-site systems. Importing spreadsheets to load directly from uploaded .XLSX files.
2. Adaptive Planning and Consolidation, or Dashboards taking the loaded data or metadata to update the model, accounts, sheets, transactions, or charts.
3. Loaders mapping the data or metadata from the source system to the corresponding destination in Adaptive Planning, and loading it. The staging area for
data preparation of extracts from source systems. Manual or scheduled tasks formatting and filtering the data from the staging area to hand it off to Loaders.
Data Sources and Adapters extracting data from source systems.

Business Users of Integration: Developers, Implementers, and Analysts


This architecture supports the workflows of these types of business users, with work shifting from one to the next in this order:

1. Developers (only required for Custom Cloud Data Sources)


2. Implementers
3. Analysts

Each group gets a permission set with permissions in Adaptive Planning. Each type of business user contributes to the overall Integration workflow. Most business
users function as Implementers and Analysts. Implementers configure data sources so that Analysts can run tasks. If you require a Custom Could Data Source
(CCDS) to pull data from a web-accessible system, a Developer user begins the workflow by writing JavaScript to import data. The workflow then shifts to an
Implementer, and finally an Analyst. See Concept: Permission Sets.

Developer Workflow
Integration Developer Permissions

The Developer user only becomes a requirement when you need a Custom Cloud Data Source (CCDS) to import data from a web-accessible system. Developers
receive the permissions of Integration Developer. The developer users must be experienced javaScript programmers to make use of the APIs that pull data into
Adaptive Planning.

1. Define parameters.
2. Create scripts and test them.
3. Release the CCDS to a data designer.

View the full CCDS workflow.

Implementer Workflow
Data Designer Permissions

The Implementer, with the Integration permissions of Data Designer, creates the data sources that Analysts use to run their tasks. Implementers:

Select data from columns in tables.


Filter that data.
Preview the data.
Merge that data with other data.
Prepare it for analyst users.

Analysts users can then run tasks on the data. Implementers can also grant permissions to users or groups to execute tasks. Granting permissions lets
implementers restrict lower-level data entry staff to executing specific tasks without letting them access anything else.

If you require a CCDS, the Data Designer relies on the Integration Developer to first write and test JavaScript.

1. Define data sources, including their transforms and mappings.


2. Create loaders.
3. Create tasks.

Analyst Workflow
Integration Operator Permissions

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 1/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Analyst users (often FP&A staff), with the permissions of Integration Operator, run manual or scheduled tasks to get data into Adaptive Planning. Analysts can only
see and execute tasks based on the launch permissions an Implementer user grants them.

1. Run manual or scheduled tasks.


2. Manage notifications.
3. View the results in Adaptive Planning.

1.1.1.3 | Concept: Integration Quick Tour

When you have Integration, the navigation menu shows three options under Integration Management:

Run Tasks
Design Integrations
Notification logs

You must have the Integration Tasks and Data Designer permissions to see these links.

Select Run Tasks to navigate to the Task Overview page for all integration tasks. See Tasks for more.

Select Design Integrations to view the Data Designer. Use the Data Designer to create, manage, and edit data sources, loaders, integration tasks, data agents,
external systems, and data source credentials. What you see in the Data Designer varies depending on what you select in the Component Library.

Option Description

1 Actions Pane: Save settings, import structure and data from sources or loaders, view logs, grant edit permissions, manage data source objects or
reports, and more.

2 Data Components Pane: View data source table columns and drag them into the staging area for importing or creating custom columns.

3 Settings: Select and edit settings for data sources, loaders, tasks, external systems, and credentials.

4 Tables to Import (Staging Tables): View a preview of the data coming from a data source, drag in columns from the Data Components pane. For
Loaders, manage how columns and tables map to Adaptive Planning levels, accounts, dimensions, attributes and more.

5 Staging Data: After importing from a data source, view and filter it before bringing it into a loader.

6 Component Library: Manage or create data sources, loaders, integration tasks, data agents, external systems, and data source credentials.

Read more about Data Sources, Loaders and Data Agents.

1.1.1.4 | View Integration Notification Logs

When Integration or dashboards generate notifications, those notifications get permanently recorded in the Integration Notification logs. This log works like an email
client, listing only the notifications sent to you. The newest notifications show up on top. The notifications you select open as additional tabs within the page to show
the notification details. Notifications in the log can't be edited or deleted by anyone.

Important: Download links in integration notifications expire after 7 days.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 2/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Notifications include:

Loader or task alerts


Loader log downloads
Staging table downloads
Dashboard snapshot downloads
Other Integration alerts or notifications

Prerequisites
Required Permissions: Integration
Requires Adaptive Integration
Notifications in these logs also show up as Workday Notifications for users synchronized from Workday.

Navigation

From the nav menu, go to Integration > Notification Logs

View Integration Notification Details


1. Select a notification in the list to open it in a separate tab in the page.

Each item you select opens in an additional tab.

2. Select a notification tab to view its details.


3. Select links in notifications to navigate into other areas of Adaptive Planning, or download content from loader runs.
4. Close the tab to return to the Notifications Overview.

1.1.1.5 | Reference: Best Practices for Data Privacy in Integration

This table provides recommendations for assigning permission based on user responsibilities. Assign permissions for Integration users in Administration >
Permission Sets. See Concept: Permission Sets.

Best practice: For data privacy, administrators should only assign users the minimum permissions required for their position.

Integration Operator Permission Data Designer Permission Integration Developer Permission

What you can do


Run manual or scheduled tasks Can perform all the tasks of an Can perform all the tasks of an Integration
Integration Operator Operator and the Data Designer
Manage notifications
Define data sources, including Create Scripts using Adaptive Planning APIs to
View the results in Adaptive
their transforms and mappings import data from a web-accessible system
Planning
Create loaders

Create tasks

Recommended
Import to all locations Admin access rights (Add and Admin access rights (Add and manage users,
Additional Permissions
manage users, groups) groups)
Erase Data
Access to Salary Details Access to Salary Details

Your Position Accountant, Finance Team Analyst System Admin, IT, or Developers
member

1.1.2 | Using Data Sources

1.1.2.1 | Using Data Sources

Describes how to set up data sources, provides best practices, presents tutorials for getting started and offers troubleshooting information for common situations.

The first thing you need to do is set up data sources. A data source specifies the location of the spreadsheet or database from which to extract information. It also
contains information such as the user ID and password, configuration information for which columns or tables to use, and other information needed to access and
extract the data you want.

Integration can import data from many places, including Excel spreadsheets, JDBC databases, on-premises sources, cloud sources, Workday, Salesforce, Intacct,
Microsoft Dynamics GP, and NetSuite. All the worksheets in a spreadsheet are imported every time. You can import a whole database or, if the database is large or
you only need specific information, you can select which columns or tables of information to use from a database by the database's schemas. One schema could
have sales data and another schema could have expense data. After you have imported the information, the data can be filtered using SQL expressions.

In addition, if you have data that requires you to combine or filter based on multiple spreadsheets or databases, you can set up specialized data sources called
table groups that can use SQL joins to combine and then filter information from different places.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 3/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

1.1.2.2 | Concept: Data Sources

Some links in this article go to the Workday Community. If you don't have a Community account, request one.

A data source specifies the location of a spreadsheet, database, or other source system Adaptive Planning uses to extract information.

Data sources include information about:

Credentials or logins
Configuration information on the tables or columns to extract
The level of detail in connection logs
Other settings Adaptive Planning needs to access data

You can set up multiple data sources to meet your needs. For example, you can use one data source to import sales orders, a second to import sales expenses,
and a third to import sales revenue. All three data sources could use the same source system, or each data source could use a different one.

Data sources also let you:

Create new columns derived from extracted data


Use SQL filters and table joins to select the data you want to import
Change the data type of extracted data

Note: The term adapter indicates a maintained data source that includes added intelligence. When a vendor upgrades to a new version, the adapter is tested and
verified against the upgrade to ensure compatibility.

Spreadsheet
Extracts information from a spreadsheet. Each worksheet in a spreadsheet gets treated as a separate table. See Steps: Set Up a Spreadsheet Data Sources.

Relational Databases (RDBMS)


Extracts information from any JDBC-compliant database, but requires the use of a Data Agent. A data agent is an application you set up behind your firewall with
the Data Agent Service Manager. The Data Agent Service Managers helps Adaptive Planning communicate with your database. You must install at least one data
agent on any computer that extracts information from a JDBC-compliant database. See Steps: Set Up JDBC Database Data Sources.

Planning
Extracts information from another Adaptive Planning instance. Requires creating a separate Adaptive Planning Credential. This data source is useful for
organizations that have multiple Adaptive Planning instances, or that want to export to some external system. See Set Up Adaptive Planning as a Data Source.

Workday
Extracts information from a Workday tenant's reports by using the Workday adapter. Requires creating a separate Workday Credential. If you also create a Workday
External system, you can publish plans, and drill into Workday from Adaptive Planning sheets and reports. See Steps: Set Up Workday Data Sources for Adaptive
Planning.

NetSuite
Extracts information from a NetSuite account by using the NetSuite adapter. Requires creating a separate NetSuite Credential. If you also create a NetSuite
External system, you can drill into NetSuite from Adaptive Planning sheets and reports. See Steps: Set Up NetSuite Data Sources.

SAGE Intacct
Extracts information from a SAGE Intacct account by using the SAGE Intact adapter. See Steps: Set Up SAGE Intacct Data Sources.

Microsoft Dynamics GP (MSDGP)


Extracts information from a Microsoft Dynamics GP account by using the Microsoft Dynamics GP adapter. See Steps: Set Up a Microsoft Dynamics GP Data
Sources.

Table Group
Extracts information from existing staging tables present in different data sources. The underlying data sources can themselves be based on different spreadsheets
and databases. This type of data source creates joins of tables across different data sources. See Steps: Set Up Table Groups.

Union Table
Extracts information from multiple staging tables to let you combine or stack table row data, even when the tables comes from different data sources. See Steps:
Set Up Union Tables.

Salesforce
Extracts information from a Salesforce account using the Salesforce adapter. See Set Up a Salesforce Data Source.

Scripted
Extracts information based on the Kettle ETL instructions you write. You apply customer-specific business rules to the extracted data to solve complex, custom data
extraction and transformation scenarios. Only advanced ETL implementers who have experience writing Pentaho Kettle scripts and using the Spoon UI should
create scripted data sources. For more information about Pentaho Kettle and Spoon, including extensive documentation and tutorials, please see the Pentaho wiki
at http://wiki.pentaho.com. See Steps: Set Up Scripted Data Sources.

Important: WARNING: There is no automatic upgrade or migration of the platform or the scripts used within Kettle. If you intend to use the legacy data agent (with
Kettle 4.4), you must use the link in the Download Legacy Agent section in the Agent UI of Integration. If you have an older Pentaho Kettle version (4.4) and would

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 4/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

like to change to Kettle 6, you will need to reinstall the new Data Agent and the new Kettle version on a system that has never had any version of Kettle installed
previously.

Custom Cloud Data Sources (CCDS)


Custom data sources authored in JavaScript to connect to internet addressable systems and supply data to Adaptive Planning. Custom Cloud Data Sources let you
access data from Yahoo Finance, Google Docs, Uber, Weather Underground, or any other site that allows pulling data via JavaScript. Only an Integration user with
the Integration Developer permission may enter the JavaScript required to build a CCDS. For more on creating a CCDS, see our CCDS Developer Guide.

1.1.2.3 | Steps: Set Up Spreadsheet Data Sources

You can use Adaptive Planning Integration to extract data from an Excel spreadsheet.

Important: Set your browser language to U.S. English before importing data using a spreadsheet data source. Data input for spreadsheet data sources is tested and
certified for the U.S. English format only.

Prerequisites
Verify every cell in a column contains the same data type in your spreadsheet. Adaptive Planning Integration bases its data type on the contents of the entire
column.
Permissions required: Integration > Data Designer and Integration Operator

Navigation

Go to nav menu > Integration > Design Integrations.

Create the Spreadsheet Data Source


1. Access the Data Designer by going to Integration > Data Designer.
2. In the Data Source folder in the Component Library on the right side of the screen, click Create New Data Source.
3. Select Spreadsheet as your data source type and enter the name for the data source.
4. Select Create. The center area of the screen displays your new data source settings.
5. Enter the data source information:
Skip failed uploads: Skip failed uploads from the spreadsheet. When you import from multiple tables, if one of the tables fails on upload, the
process continues to the next table instead of ending with an error.
Log level: Select a log level from the drop-down list to specify the detail for the logging for this data source.
Error: Only logs errors.
Info: Logs all basic information, such as when the data source was updated.
Verbose: Provides very detailed information about all phases and actions. (This level is used primarily for debugging or auditing, as it may
produce more log information than is practical for typical use.)

Important: There is an import limit of 100 columns for each sheet used as a data source. Any columns beyond the 100th will not be imported.

Import the Spreadsheet


When you select the spreadsheet, Adaptive Planning Integration opens the spreadsheet and imports the data. Adaptive Planning Integration also imports the
spreadsheet structure (field names, order of fields). The import action assigns a default data type to each column but does not interpret any formatting rules
associated with each spreadsheet column. The data structure appears in the Data Components menu on the left side of the screen. This menu populates with the
worksheets and contents of the imported spreadsheet.

1. Select Import Spreadsheet on the Actions menu.


2. Select Browse to search for a spreadsheet file.
3. Close the Import Spreadsheet dialog box.
4. Click Save on the Actions menu.

By default, import uses the import mode All records replaced each time a data import is run. This mode:

1. Clears all the rows in the staging area.


2. Imports the data.
3. Populates staging table.

You can use other import modes that append or merge data, described later in the Customize the Table section.

Reimporting and Changing Structure

When you load a spreadsheet, Adaptive Planning Integration determines the data type from the column contents. The structure of your spreadsheet can change if
you change your local file and reimport it after:

Renaming a sheet
Renaming a column
Removing a column
Changing the column order
Adding a different type of data to an existing column

If a single cell in a column of integers changed to a real number, the entire column changes data type on reimport. The loaders that depend on this data source may
not function correctly.

Add Tables to a Spreadsheet Data Source

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 5/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

After you have imported the spreadsheet's structure, you are ready to specify the information you want to import from the spreadsheet. The Tables to Import
section of the screen lets you configure the data imported from the spreadsheet.

1. Expand the entry for the data source in the Data Components menu. Each worksheet in the spreadsheet appears as a separate item. Data components
with a slash through their icon will not import.
2. Drag and drop the tables you want to import to the Tables to Import section (the staging area) in the center of the screen. A tab appears for the table and
information from the spreadsheet in the Tables to Import area, letting you see what added. Each table tab also contains a drop-down menu you can access
by clicking the triangle next to its name.

Manage Columns
If a table contains a large number of columns, you can use Manage Columns to do quick edits for which columns to import. The Manage Columns dialog box
displays the columns in a table so you can then check or uncheck columns for importing.

To manage columns for importing, follow these steps:

1. Click the arrow on the tab to the right of the table name. A floating menu with several options appears.
2. Click Manage Columns on the floating menu. The Manage Columns dialog box appears.
3. Check the box next to a column to import it. When you check a column, the column also appears within the preview window after the popup contents save.
Unchecking a column removes the column from the preview window. You cannot change the import status on system-generated fields such as isDeleted.
You can also change the import status on individual columns by selecting column properties and setting the property or by dragging and dropping the
columns onto the designer.

Customize the Tables


For each table, you can customize the way in which data is imported.

To customize the table settings, follow these steps:

1. Click the arrow on the tab to the right of the table name. A floating menu with several options appears.
2. Click Table Settings on the floating menu.

The Table Settings dialog box appears.

3. Enter the table settings:


Data Import Mode: Select one of the options from the drop-down list.
All records replaced each time a data import is run This is the default. The data in the new version of the spreadsheet replaces the previous
version in the staging area.
Merge (add, update) received rows using the key columns New data is merged with existing data by matching key columns. After selecting
this option, you can set the key columns in the Column Settings area.
All received rows are new and so should be added The data already imported is left as-is and all rows of the spreadsheet you are importing
are added to the table.
Sheet Has Header Row: Check this box if this sheet has a header row. If your spreadsheet has a header row and you leave this box unchecked, all
rows including the header rows are treated as data rows and the column letters (A, B, C, etc.) are used for headings.
First Header/Data Row: Enter the number of the first header row (if there is a header row) or the first data row.
Ignore Parsing Errors: Check this box to ignore any parsing errors when updating the table. If you select to ignore parsing errors, any cells with
errors, such as text appearing in a date column, are ignored and the cells with errors are imported as empty. If you do not select to ignore parsing
errors and there are errors, the spreadsheet will not import successfully. (You can use the error log to help you identify parsing problems.)
4. Click Apply to apply the settings.
5. Repeat steps 1-3 for each table.
6. Click Save to save the settings in the data source.

Set Column Options


While using the Tables to Import section, you can see a preview of the data as it exists in the data source or as it exists in the staging area after it imports. Select
Spreadsheet or Staging table from the drop-down to preview data.

You can change the options for each column by mouse hovering its heading and clicking the drop-down menu next to its name:

Sort Ascending: Sort the entire table based on this column in ascending order.
Sort Descending: Sort the entire table based on this column in descending order.
Column Settings: This dialog is used to change the properties of the column within the staging table.
Name: The name of the column, displayed in the header.
Column Type: The type of data used in the column.
Convert Column Type: Select the new type from this drop-down menu.
Exclude column from import: Select this to remove this column from the data being imported.
Delete custom column: Select this to delete the column. (Available for custom columns only.)

Download Data from a Staging Table

You can download data from a single staging table.

To download data from a single staging table, follow these steps:

1. Click the down arrow in a table heading in the Tables to Import section.
2. Select Download Data.
3. At the prompt This operation will send an email with a url to download the data, click Send. Adaptive Planning Integration sends an email containing a URL
to the email account associated with the data designer.
4. Open the email and click the URL. The data is downloaded in .csv format.

Use the Advanced Filter

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 6/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Below the Source drop-down menu, you can click Advanced Filter to reveal options for filtering the data in the Tables to Import preview area. The Advanced
Filter provides tools to view and browse a subset of the data within a staging table. By changing filter properties, you can change the view of the data shown within
the preview window without changing the data in the staging area.

The preview area is specifically for previewing a small portion of the data in the staging area. You can explore the data that is available from the spreadsheet and
verify that you are getting the data you expect by examining the staging area. (Filters set in the preview function do not affect the actual data in the staging area.)
The Advanced Filter lets you experiment with the data in the preview to set up a data import filter.

The options for the Advanced Filter are:

Distinct Rows: Check this box to hide duplicate rows.


Max Rows: Limit the number of rows displayed in the preview area by entering a number in the text box.
Columns: Check or uncheck columns in this drop-down menu to show or hide the columns displayed.

Note: Removing a column from this list does not remove the column from the import list.

SQL Filter: Click the large text box to display the Edit SQL Expression dialog box.

Enter a SQL expression in the field. This is a filter to restrict the rows being previewed. Click Apply to automatically check the SQL syntax of the filter. (If there are
any errors, the error is indicated in the expression.) For detailed SQL syntax help, you can click Online Help in the Notes section. The expression you entered
appears in the Advanced Filter section of the preview window.

Click Remove Filter (next to the Source drop-down menu) to clear all advanced filter settings.

Note: As part of the table customization process, you can also create join tables and custom columns using SQL expressions.

Clear the Staging Area


Information remains in the staging area until you clear it.

To clear data from the staging area, select Clear staging tables in the Actions pane. The staging area for all of the tables in the data source clear.

1.1.2.4 | Steps: Set Up JDBC Data Sources

1.1.2.4.1 | Steps: Set Up JDBC Database Data Sources

You can use Adaptive Planning Integration to extract information from JDBC-compliant databases. Most databases used for accounting and finance applications are
JDBC-compliant (Java database connectivity) databases. JDBC is a standard that uses the Java programming language for providing connectivity to a wide range
of databases.

A JDBC-compliant database data source requires a driver. The table below gives information on common JDBC drivers.

JCBC Source Overview Provider jar Driver Class JDBC/URL example JDBC URL info

Oracle Introduction ojdbc6-11.2.0.3.jar oracle.jdbc. jdbc:oracle: thin:@jyates-win-db: Class


to the OracleDriver 1521:ANACONDA OracleDriver
Oracle
Database

SQL Server Microsoft net.sourceforge jdbc:jtds:sqlserver://127.0.0.1:1433/AGENT_TEST; jTDS formats


jtds-1.3.1.jar
SQL Server .jtds.jdbc.Driver domain=ADAPTIVE; instance= SQLEXPRESS

see Integrated Security for


JDBC Data Sources for dll
location details

MySql MySQL mysql-connector-5.1.17.jar com.mysql.jdbc jdbc:mysql://localhost: 3306/AGENT_TEST URL Syntax


Reference .Driver
Manuals

h2 H2 Look for h2*.jar in the org.h2.Driver jdbc:h2:/data/test H2 Cheat Sheet


Database Workday Adaptive
Engine Planning Data Agent
Service Manager
distribution. For data agent
versions 7.1.44 and older,
look for h2.jar in the
Adaptive Data Agent
Service Manager
distribution.

The jar files go into the C:/Program Files/Workday Adaptive Planning Data Agent/Plugins. For data agent versions 7.1.44 and older, use C:/Program
Files/Adaptive Data Agent/Plugins directory on the machine hosting the Data Agent Service.

After you add a jar file, you need to go into the local services and restart the Data Agent Service.

Note: Before you can set up a data source from a local database, you need to have a Data Agent created that tells Adaptive Planning Integration how to
communicate with the database. For information on how to create data agents, see Using Data Agents.

To set up a JDBC database data source, follow these steps:

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 7/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

1. Access the Data Designer by going to Integration > Data Designer.


2. In the Data Source folder in the Component Library on the right side of the screen, click Create New Data Source. The Create New dialog box appears.
3. Select JDBC database as the data source type, enter the database's name, and select the agent you want to use for this data source.
4. Click Create. The center area of the screen displays your new data source's settings and other information.
5. Enter the data source's information:
Driver class: Enter the driver class for the database. (You can obtain this information from the database vendor.)
URL: Enter the URL of the database.
Username: Enter the username used for accessing the database.
Password: Enter the password associated with the username.
Schema Filter: Enter the name of the schema(s) from which you would like to import data. If you are entering the names of more than one schema,
enter the schema names separated by a semicolon. Use this field to restrict the number of tables that need to be refreshed in Adaptive Planning
Integration. This field is optional.
Log level: Select a log level from the drop-down list to specify the detail for the logging for this data source. Your options are:
Error: Only logs serious errors.
Info: Logs all basic information, such as when the data source was updated.
Verbose: Provides very detailed information about all phases and actions. (This level is used primarily for debugging or auditing, as it may
produce more log information than is practical for typical use.)
6. Click Save on the Actions menu.

You can test the connection information in the new data source by clicking Test connection in the Actions menu. The system tries to connect to the database
using the information in the data source fields. If the system can connect to the database, click OK. If there are connection problems, fix the errors and try again.

When you can connect to the database, you're ready to import the data structure. This shows you the tables and columns in the database.

Note: Only columns for supported types appear. Supported Column Types, lists the supported column types for the various types of databases.

To import the JDBC database's structure, do the following:

1. Click Import structure in the Actions menu. The tables and columns appear in the Data Components menu.

The data import modes affect the way in which the data is synchronized. The default import mode (all records replaced) for a JDBC data source is as
follows:

2. The JDBC data imports.


3. Data from JDBC source populates staging table.
4. If there is a custom SQL filter, it applies to the data to importing from the database server to determine the subset of data to import.

You can also choose to append imported information, in which case imported data is appended to the existing staging table, or merge imported information, in
which case existing rows in the JDBC data are merged with the rows in the staging area.

Adding Tables to a JDBC Data Source


After you have imported the database's structure, you are ready to specify the information you want to import from the database. The Tables to Import section lets
you configure the data imported from the database.

To specify the tables to import from the database, follow these steps:

1. Expand the entry for the data source in the Data Components menu.

Each table in the database appears as a separate item.

2. Drag and drop the tables you want to import to the Tables to Import section in the center of the screen.

As you drag each table to the Tables to Import section, a tab appears for the table and information from the database appears in the Tables to Import section
letting you see the type of information you've added. Each table's tab also has a drop-down menu, which you can access by clicking the arrow next to its
name.

Managing Columns
If a table you are working with has a large number of columns, you can use Manage Columns to do quick edits for which columns to import. The Manage
Columns dialog box displays the columns in a table so you can then check or uncheck columns for importing.

To manage columns for importing, follow these steps:

1. Click the arrow on the tab to the right of the table name.
2. Click Manage Columns on the floating menu.
3. Check the box next to a column to import it.

When you check a column, the column also appears within the preview window after the popup contents are saved. Unchecking a column removes the
column from the preview window.

You can also change the import status on individual columns by:

Selecting column properties and setting the property.


Dragging and dropping the columns onto the designer.

You can't change the import status on system-generated fields such as isDeleted.

Customizing the Tables


For each table, you can customize the way in which data is imported.

To customize the table settings, follow these steps:

1. Click the arrow on the tab to the right of the table name.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 8/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

2. Click Table Settings on the floating menu.


3. Enter the table settings:
Data Import Mode: Select one of the options from the drop-down list.
All records replaced each time a data import is run This the default. Replaces the data in the staging table with data imported from the
source.
Remote cache used to identify and send changed records on import Only database records that have changed or are new are imported.
Changed records overwrite existing records in the staging area. New records are added to the end of the information in the staging area.
All records that fall within a period range transmitted All of the records in the period range you specify are imported. Records in the staging
table that match the imported periods get deleted before importing the latest data from the source.
Data Import Filter: Use this to enter a SQL expression that filters or formats information being imported. The SQL filter is applied before data is
extracted from the database to reduce the amount of data that needs to be imported, giving you an additional level of control for which data is
brought into the staging area. Click the field to display the Edit SQL Filter dialog box (the filter you enter here is applied to the actual data in the
database rather than the preview data in the staging area). Not all data sources support the same level of SQL filtering capability.
4. Click Apply to apply the settings.
5. Repeat steps 1-3 for each table.
Note: If a database table has keys defined, this information is brought into the staging table as well. You can review this information and modify as needed.
6. Click Save to save the settings in the data source.

Setting Column Options


While using the Tables to Import section, you can see a preview of the data as it is in the data source or as it is in the staging area after it has been imported. You
can change the options for each column by mouse hovering its heading and then clicking the drop-down menu next to its name. These options are:

Sort Ascending: Sort the entire table based on this column in ascending order.
Sort Descending: Sort the entire table based on this column in descending order.
Column Settings: This dialog is used to change the properties of the column within the staging table.
Name: The name of the column, displayed in the header.
Column Type: The type of data used in the column.
Convert Column Type: Select the new type from this drop-down menu.
Exclude column from import: Select this to remove this column from the data being imported.
Delete custom column: Select this to delete the column. (Available for custom columns only.)

Downloading Data from a Staging Table


You can download data from a single staging table.

To download data from a single staging table, follow these steps:

1. Click the down arrow in a table heading in the Tables to Import section.
2. Select Download Data.
3. Click Send at the prompt This operation will send an email with a url to download the data.

Adaptive Planning Integration sends an email containing a URL to the email account associated with the data designer.

4. Open the email and click the URL.

The data downloads in .csv format.

Using the Advanced Filter


Below the Source drop-down menu, you can click Advanced Filter to reveal options for filtering the data in the Tables to Import preview area. The Advanced
Filter provides tools to view and browse a subset of the data within a staging table or directly from the remote source (if you select JDBC Database from the Source
drop-down menu). By changing filter properties, you can change the view of the data shown within the preview window without changing the data in the staging
area.

The preview area is specifically for previewing a small portion of the data in the staging area (or JDBC database). You can explore the data that is available from the
JDBC Data source and verify that you are getting the data you expect by examining the staging area. You can also use this to refine the data import filter you want
to use. (Filters set in the preview function do not affect the actual data in the staging area.)

Advanced Filter include:

Distinct Rows: Check this box to hide duplicate rows.


Max Rows: Limit the number of rows displayed in the preview area by entering a number in the text box.
Columns: Check or uncheck columns in this drop-down menu to show or hide the columns displayed.
Note: Removing a column from this list does not remove the column from the import list.
SQL Filter: Click the large text box to display the Edit SQL Filter dialog box, where you can enter a SQL filter to restrict the rows being previewed. Click
Apply to automatically check the SQL syntax of the filter. (If there are any errors, the error is indicated in the expression.) The expression you entered
appears in the Advanced Filter field. For detailed SQL syntax help, you can click online help in the Notes section.

Click Remove Filter (next to the Source drop-down menu) to clear all advanced filter settings.

Note: As part of the table customization process, you can also create join tables and custom columns using SQL expressions.

Importing Data from a JDBC Database


When you have set up and saved your JDBC data source, you can import data.

To import data from a JDBC database, do the following:

1. Click Import data in the Actions menu.

The selected data is filtered by any SQL expressions and loaded into the staging area. You can preview the data in the staging area.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 9/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Information remains in the staging area until you clear it manually, or until a subsequent data load clears it in accordance with the import mode.

To clear data from the staging area, do the following:

1. Click Clear staging tables in the Actions menu. The staging area for all the tables in the data source is cleared.

To remove specified characters from Input Text Streams in JDBC data sources:

Refer to Remove Specified Characters from Input Text Streams in JDBC and Microsoft Dynamics GP

JDBC Data Source Excluded Schemas


JDBC data sources that connect to Oracle or MS SQL Server explicitly exclude some schemas that do not relate to financial data.

Oracle JDBC Data Source Excluded Schemas


CTXSYS, MDSYS, SYSTEM, SYS, XDB

MS SQL Server JDBC Data Source Excluded Schemas


INFORMATION_SCHEMA, SYS

Troubleshooting Tips
There are a few data source problems you may run into that have solutions that are not immediately apparent.

When you import the structure for a database and the database has more than 1000 tables, you get an error advising you to filter the table list. You can get past this
error by doing either of the following:

Editing the JDBC data source and entering a schema filter.


Changing the permissions associated with the login you're using to access the server so fewer tables are accessible through that login.

When you import the structure of an Oracle database, the following schemas are not imported as part of the structure: CTXSYS, MDSYS, SYSTEM, SYS, and XDB.
These are Oracle systems schemas and are not necessary for data integration purposes.

When you import the structure of an MS SQL database, the following schemas are not imported as part of the structure: INFORMATION_SCHEMA and sys. These
are MS SQL systems schemas and are not necessary for data integration purposes.

1.1.2.4.2 | Enable Integrated Security for JDBC Data Sources

Two JDBC drivers (JTDS and MS SQL Driver) support Integrated Security with MS SQL Server.

To enable Integrated Security in a data source/agent, three tasks need to be performed in addition to the standard configuration steps.

For the on-premise agent:

1. Place the required driver dll in the agent system path before the agent starts.
2. Configure the Agent service Logon On property with the proper domain user/password.
3. For the data source:

The JDBC url entry needs the additional IntegratedSecurity=true property.

Set up the Data Agent Service with Integrated Security


1. Within Integration > Design Integrations, unprovision any agents from the host PC.
2. Stop the Data Agent service.
3. Reconfigure the windows service to run as the Windows account that has network/ db credentials.
Example Adaptive Data Agent Service 64 bit Properties (Local Computer)
Log On tab settings:
This account: yourcompanydomain\yourusername
4. Ensure the required DLLs (sqljdbc_auth.dll, ntlmauth.dll) are copied into the appropriate destination.
Note: For agents V5.1.17.8415 and newer, sqljdbc_auth.dll is automatically deployed by the Agent installer, users do NOT need to manually add this
DLL.

The required ntlmauth.dll for a JTDS jdbc driver (either x32 or x64 version depending on the JVM in use) should be placed in C:\Program
Files\Workday Adaptive Planning Data Agent\lib\mssqljdbc\x64\ (for 64 bit JVM).

For data agent versions 7.1.44 and older, C:\Program Files\Adaptive Data Agent\lib\mssqljdbc\x64\ (for 64 bit JVM)

or

C:\Program Files\Workday Adaptive Planning Data Agent\lib\mssqljdbc\x86\ (For 32 bit JVM).

For data agent versions 7.1.44 and older, C:\Program Files\Adaptive Data Agent\lib\mssqljdbc\x86\ (For 32 bit JVM).

The sqljdbc_auth.dll is available from Microsoft download https://www.microsoft.com/en-US/download/details.aspx?id=11774

The ntlmauth.dll is available from a JTDS download location

https://sourceforge.net/projects/jtds/files/jtds/1.2.5/ for jtds 1.2.5

https://sourceforge.net/projects/jtds/files/jtds/1.2.8/ for jtds 1.2.8

http://sourceforge.net/projects/jtds/files/ for jtds 1.3.1

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 10/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

5. Re-start the Data Agent service.


6. Re-provision the agent.

Select Provision a New Agent in the Data Agent Service Manager.

Creating a JDBC Data Source


When you create a JDBC data source using the Create New Data Source menu, make sure to include the integratedSecurity=true in the JDBC url.

For the MS SQL driver:

Driver class: com.microsoft.sqlserver.jdbc.SQLServerDriver

Jdbc url: jdbc:sqlserver://<server>:<port>;integratedSecurity=true

Example: jdbc:sqlserver://dev-gp2013-r2:1433;integratedSecurity=true

User name: keep it empty.

Password: keep it empty.

For the JTDS driver:

Driver class: net.sourceforge.jtds.jdbc.Driver

Jdbc url: jdbc:jtds:sqlserver://<server>:<port>;integratedSecurity=true;domain=<domain name>

Example: jdbc:jtds:sqlserver://DEV-GP2013-R2:1433;integratedSecurity=true;domain=ADAPTIVE

User name: keep it empty.

Password: keep it empty.

1.1.2.4.3 | Reference: Supported JDBC-compliant Data Types

Integration only supports a subset of the JDBC-compliant data types. Those data types not supported are not reported back to the server during the import structure
process.

The JDBC drivers map the underlying data types to a JDBC type, so to understand what DBMS types are supported, you need to consult documentation for the
specific DBMS. This section contains the supported data types for general JDBC-compliant databases, Oracle, SQL Server, and H2 databases.

Supported JDBC data types

JDBC TYPE DISCOVERY TYPE

CHAR STRING

VARCHAR STRING

LONGVARCHAR STRING

BIT BOOLEAN

BOOLEAN BOOLEAN

TINYINT LONG

SMALLINT LONG

INTEGER LONG

BIGINT LONG

REAL DOUBLE

DOUBLE DOUBLE

FLOAT DOUBLE

DATE DATE

TIME DATE

TIMESTAMP DATE

Important: The following JDBC types are not supported: BINARY, VARBINARY, LONGVARBINARY, DECIMAL, and NUMERIC.

Supported MS SQL Server data types

SQL Server JDBC Support

bigint BIGINT Y

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 11/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

SQL Server JDBC Support

bit BIT Y

decimal DECIMAL N

int INTEGER Y

money DECIMAL N

numeric NUMERIC N

smallint SMALLINT Y

smallmoney DECIMAL N

tinyint TINYINT Y

float DOUBLE Y

real REAL Y

date VARCHAR Y

datetime2 VARCHAR Y

datetime TIMESTAMP Y

datetimeoffset VARCHAR Y

smalldatetime TIMESTAMP Y

time VARCHAR Y

char CHAR Y

varchar VARCHAR Y

text CLOB N

nchar CHAR Y

nvarchar CLOB N

ntext CLOB N

binary BINARY N

image BLOB N

hierarchyid BLOB N

sql_variant VARCHAR Y

timestamp BINARY N

uniqueidentifier CHAR Y

xml CLOB N

Supported Oracle data types

SQL Server JDBC Support

CHAR CHAR Y

VARCHAR2 VARCHAR Y

NCHAR OTHER N

NVARCHAR2 OTHER N

NUMBER DECIMAL N

FLOAT FLOAT Y

BINARY_FLOW ?100 N

BINARY_DOUBLE ?101 N

RAW VARBINARY N

DATE TIMESTAMP Y

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 12/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

SQL Server JDBC Support

TIMESTAMP TIMESTAMP Y

INTERVAL_YEAR_TO_MONTH ?-103 N

INTERVAL_DAY_TO_SECOND ?-104 N

BLOB BLOB N

CLOB CLOB N

NCLOB OTHER N

BFILE ?-13 N

CHARACTER CHAR Y

VARCHAR VARCHAR Y

NATIONAL_CHARACTER OTHER N

NATIONAL_CHAR OTHER N

NUMERIC DECIMAL N

DECIMAL DECIMAL N

DEC DECIMAL N

INTEGER DECIMAL N

INT DECIMAL N

SMALLINT DECIMAL N

DOUBLE_PRECISION FLOAT Y

REAL FLOAT Y

Supported H2 data types

SQL Server JDBC Support

INT INTEGER Y

INTEGER INTEGER Y

MEDIUMINT INTEGER Y

INT4 INTEGER Y

SIGNED INTEGER Y

BOOLEAN BOOLEAN Y

BIT BOOLEAN Y

BOOL BOOLEAN Y

TINYINT TINYINT Y

SMALLINT SMALLINT Y

INT2 SMALLINT Y

YEAR SMALLINT Y

BIGINT BIGINT Y

IDENTITY BIGINT Y

DECIMAL DECIMAL N

NUMBER DECIMAL N

DEC DECIMAL N

NUMERIC DECIMAL N

DOUBLE DOUBLE Y

FLOAT DOUBLE Y

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 13/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

SQL Server JDBC Support

FLOAT4 REAL Y

FLOAT8 DOUBLE Y

REAL REAL Y

TIME TIME Y

DATE DATE Y

TIMESTAMP TIMESTAMP Y

DATETIME TIMESTAMP Y

SMALLDATETIME TIMESTAMP Y

BINARY VARBINARY N

VARBINARY VARBINARY N

LONGVARBINARY VARBINARY N

RAW VARBINARY N

BYTEA VARBINARY N

OTHER OTHER N

VARCHAR VARCHAR Y

LONGVARCHAR VARCHAR Y

VARCHAR2 VARCHAR Y

NVARCHAR VARCHAR Y

NVARCHAR2 VARCHAR Y

VARCHAR_CASESENSTIVE VARCHAR Y

VARCHAR_IGNORECASE VARCHAR Y

CHAR CHAR Y

CHARACTER CHAR Y

NCHAR CHAR Y

BLOB BLOB N

TINYBLOB BLOB N

MEDIUMBLOB BLOB N

LONGBLOB BLOB N

IMAGE BLOB N

OID BLOB N

CLOB CLOB N

1.1.2.5 | Steps: Set Up Salesforce Data Sources

You can use integration to import data from a Salesforce account. You can't import data from reports or data created through app integrations within the Salesforce
account.

To set up a Salesforce data source:

1. Access the Data Designer by going to Integration > Design Integrations.


2. Expand Data Sources on the right side of the page and click Create New Data Source.
3. Select Salesforce as your data source type and enter the name for the data source.
4. Click Create. The center area of the page displays your new data source settings.
5. Enter the data source information:

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 14/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

User name: Enter the user name for the Salesforce user account.
Password: Enter the password associated with the user name and with your Salesforce security token appended to the password. Example: if your
password is redrover1492 and your security token is lv4l$Qyfj54gdvzu$9rXLRqUu((G, you would enter
redrover1492lv4l$Qyfj54gdvu$9rXLRqUu((G in this field.
Use Sandbox?: Check this box to use the Salesforce sandbox. Check this box only if your implementation process requires you to test data in a
sandbox as part of the data import process. Be sure to uncheck this box when you have to bring data from your production Salesforce instance.
Time Zone: Select a time zone from the drop-down list.
Log level: Select a log level from the drop-down specifying the detail for logging:
Error: Only logs errors.
Info: Logs all basic information, such as when the data source was updated.
Verbose: Provides very detailed information about all phases and actions. (Use this primarily for debugging or auditing, as it can produce
more log information than is practical for typical use.)
6. Click Save on the Actions menu.

You can test the connection information in the new agent by clicking Test connection in the Actions menu. Adaptive Planning tries to connect to Salesforce using
the information in the data source fields. If the system can connect to your Salesforce account, click OK. If there are connection problems, contact us.

When you can connect to Salesforce, you're ready to import the data structure. This displays the tables and columns in the database.

To import the Salesforce structure, do the following:

1. Click Import structure in the Actions menu. The tables and columns display in the Data Components menu.
2. Click Close to close the Import Salesforce dialog box.
3. Click Save on the Actions menu.

Upgrade to the Salesforce Version 51 Endpoint


If you use the version 32 endpoint or older, you can upgrade to the version 51 endpoint.

1. Select Upgrade to v51 in the Actions menu.


2. Select Compare table structures.
3. Review the schema change summary for loaders dependent on staging tables impacted by the upgrade.
4. Select Upgrade.

Adding Tables to a Salesforce Data Source


After you import the Salesforce structure, specify the information you want to import. The Tables to Import section of the page lets you configure the data imported
from the Salesforce account.

To specify the tables to import from the Salesforce account, follow these steps:

1. Expand the entry for the data source in the Data Components menu. Data components with a slash through their icon won't import.
2. Drag and drop the tables you want to import to the Tables to Import section in the center of the page. As you drag each table to the Tables to Import
section, a tab displays for the table. Information from the Spreadsheet account displays in the Tables to Import section, letting you see the type of
information you added. Each table tab also contains a drop-down menu, which you can access by clicking the arrow next to its name.

Managing Columns
If a table you work with has a large number of columns, you can use the Manage Columns to do quick edits for which columns to import. The Manage Columns
dialog box displays the columns in a table so you can then check or uncheck columns for importing.

To manage columns for importing, follow these steps:

1. Click the arrow on the tab to the right of the table name. A floating menu with several options displays.
2. Click Manage Columns on the floating menu.
3. Check the box next to a column to import it. When you check a column, the column also displays within the preview window after you save the popup
contents. Unchecking a column removes the column from the preview window.
You can't change the import status on system-generated fields such as isDeleted. You can change the import status on individual columns by:
Selecting column properties and setting the property.
Dragging and dropping the columns onto the designer

Customizing the Tables


For each table, you can customize the way in which data is imported.

To customize the table settings, follow these steps:

1. Click the arrow on the tab to the right of the table name.
2. Click Table Settings on the floating menu.
3. Enter the table settings:
Data Import Filter: Use this area to enter a SQL expression that filters or formats information being imported. The SQL filter is applied before data is
extracted from the database. Use it to reduce the amount of data that imports for an additional level of staging data control. Click the field to display
the Edit SQL Expression dialog box, shown earlier. (The filter you enter applies to the actual data in the database rather than the preview data in the
staging area.) Not all data sources support the same level of SQL filtering capability.
4. Click Apply to apply the settings.
5. Repeat steps 1-3 for each table.
6. Click Save to save the settings in the data source.

Setting Column Options


The Tables to Import section offers a preview of the data as it exits in the data source or in the staging area after it importing. Select Salesforce or Staging table
from the drop-down to preview data.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 15/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

You can change the options for each column by mouse hovering each heading and clicking its drop-down menu:

Sort Ascending: Sort the entire table based on this column in ascending order.
Sort Descending: Sort the entire table based on this column in descending order.
Column Settings: This dialog changes the properties of the column within the staging table.
Name: The name of the column, displayed in the header.
Column Type: The type of data used in the column.
Convert Column Type: Select the new type from this drop-down menu.
Exclude column from import: Removes this column from the data being imported.
Delete custom column: Select this to delete the column. (Available for custom columns only.)

Downloading Data from a Staging Table


You can download data from a single staging table.

To download data from a single staging table, follow these steps:

1. Click the down arrow in a table heading in the Tables to Import section.
2. Select Download Data.
3. Click Send at the prompt This operation will send an email with a url to download the data.

Integration sends an email containing a URL to the email account associated with the data designer.

4. Open the email and click the URL. The data downloads in .csv format.

Using the Advanced Filter


Below the Source drop-down menu, you can click Advanced Filter to reveal options for filtering the data in the Tables to Import preview area. The Advanced Filter
provides tools to view and browse a subset of the data within a staging table. Changing filter properties changes the view of the data within the preview window
without changing the data in the staging area.

The preview area is specifically for previewing a small portion of the data in the staging area. You can explore data available from the Spreadsheet account and
verify the data you expect by examining the staging area. (Filters set in the preview function don't affect the actual data in the staging area.) The Advanced Filter
lets you experiment with the data in the preview to set up a data import filter.

Advanced Filter options:

Distinct Rows: Check this box to hide duplicate rows.


Max Rows: Limit the number of rows displayed in the preview area by entering a number.
Columns: Check or uncheck columns in this drop-down menu to display or hide columns.
Note: Removing a column from this list does not remove the column from the import list.
SQL Filter: Click the large text box to display the Edit SQL Filter dialog box.

Enter a SQL expression in the field. This filter restricts the rows in the preview. Click Apply to automatically check the SQL syntax of the filter. (If there are any
errors, the error is indicated in the expression.) For detailed SQL syntax help, you can click here in the Notes section. The expression you entered displays in the
Advanced Filter section of the preview window.

Click Remove Filter (next to the Source drop-down menu) to clear all advanced filter settings.

Note: As part of the table customization process, you can also create join tables and custom columns using SQL expressions.

Clearing the Staging Area


Information remains in the staging area until you clear it.

To clear data from the staging area:

1. Click Clear staging tables in the Actions menu.

The staging area for all of the tables in the data source clears.

Limitations
Note: Salesforce objects that require a subquery, such as ActivityHistory, aren’t supported during import. If you attempt to access objects that require subqueries,
you would likely see an error in the form Message: INVALID_TYPE_FOR_OPERATION: entity type ActivityHistory does not support query. Consider
exposing such data through custom objects.

1.1.2.6 | Steps: Set Up NetSuite Data Sources

1.1.2.6.1 | Steps: Set Up NetSuite Data Sources

You can use integration to extract information from your NetSuite instance. Adaptive Planning users can access data in a NetSuite instance through the NetSuite
adapter.

To set up a NetSuite data source, follow these steps:

1. Go to Integration > Design Integrations.

2. Expand the Data Sources folder in the Component Library.

The NetSuite data source is licensed separately. If you do not see this adapter within the list of data sources, contact support for information.

3. Click the NetSuite Data Source.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 16/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

The center area of the screen displays your new data source's settings and other information,.

4. Enter the data source's information:


Enable token-based authentication (TBA): Checked by default following upgrade to NetSuite 2020.1. Requires selecting a NetSuite Credential
that contains a Consumer Key, Consumer Secret, Token Id, and Token Secret generated by a NetSuite Admin in the NetSuite UI.
Credential: Select the NetSuite Credential that contains a Consumer Key, Consumer Secret, Token Id, and Token Secret generated by a
NetSuite Admin in the NetSuite UI. For how to set up a NetSuite Credential, go here.
Account Time Zone: Select the appropriate time zone for the account from the drop-down list. (The timezone you select here must be the same one
used within the NetSuite user interface for this user account. In NetSuite, go to Home > Set Preferences > Localization.)
Backfill Batch Duration: Select the duration for the backfill batch. The default is one week (168 hours). This value is the number of hours of data
extracted during a single update pass on a differentially-imported NetSuite table. This lets you set chunking for the scheduler to maintain a balance
between large and small batch jobs. Lower this if you have very large amounts of NetSuite data. The smaller the value, the more backfill loops are
required for a given calendar period.
Note: The specific value you enter is highly dependent on a number of site-specific variables, such as the size of jobs, ratio small vs. large jobs,
turnaround time, and system resources.
Log Level: Select a log level from the drop-down list to specify the detail for the logging for this data source. Your options are:
Error: Only logs serious errors.
Info: Logs all basic information, such as when the data source was updated.
Verbose: Provides very detailed information about all phases and actions. (This level is used primarily for debugging or auditing, as it may
produce more log information than is practical for typical use.)
5. Click Save on the Actions menu.

You can test the connection information in the new agent by clicking Test connection in the Actions menu. The system tries to connect to NetSuite using the
information in the data source fields. If the system can connect to NetSuite, click OK. If there are connection problems, contact support.

When you can connect to NetSuite, you're ready to import the data structure. This shows you the tables and columns in NetSuite.

Import Structure from NetSuite Data Sources


1. Click Import structure in the Actions menu. The tables and columns appear in the Data Components menu.

Data synchronizes for a NetSuite user account as follows:

Integration chooses the best synchronization method.

Integration initially tries to get data incrementally.

If the underlying data source doesn't support getting data incrementally, Integration does a full refresh on the data in the staging area.

Import Structure and Adaptive Posting Transaction Summary Table for NetSuite

Integration provides a getting started table for NetSuite called the AdaptivePostingTransactionSummary Table.

The AdaptivePostingTransactionSummary and its associated tables show up by default during Import Structure. This table surfaces the most frequently
requested data elements from a NetSuite source system. This table automatically creates joins between the PostingTransactionSummary table and its associated
tables. As a result, this exposes the business friendly names for the most frequently requested NetSuite categories:

Account
Classification
Items
Department
Location
Subsidiary
Customer

For each table, the Name column is included. The Account Type column is automatically enabled from the Accounts tab. The category tables automatically import
when Import Structure runs.

You might need to filter out the account types that are not needed using an SQL filter in the Planning Loader as described in Creating a SQL Filter.

You can also choose to remove one or more default dimensions available in the joined table. Only include the categories you need for your model. All other
categories should be removed from the join, and the underlying column should be excluded from import from the PostingTransactionsSummary.

Adding Tables to a NetSuite Data Source


After you have imported the data's structure, you are ready to specify the information you want to import. A standard set of NetSuite tables has already been
enabled. If you want additional tables brought over, use the Tables to Import section of the screen to configure the imported NetSuite data.

To specify the tables to import from the user account, follow these steps:

1. Expand the entry for the data source in the Data Components menu.

Each table appears as a separate item.

2. Drag and drop the tables you want to import to the Tables to Import section in the center of the screen.

As you drag each table to the Tables to Import section, a tab appears for the table and information appears in the Tables to Import section, letting you see
the type of information you added. Each table's tab also has a drop-down menu you can access by clicking the arrow next to its name.

Managing Columns
If a table you work with has a large number of columns, you can use the Manage Columns to do quick edits for which columns to import. The Manage Columns
dialog box displays the columns in a table so you can then check or uncheck columns for importing.

To manage columns for importing, follow these steps:

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 17/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

1. Click the arrow on the tab to the right of the table name.
2. Click Manage Columns on the floating menu.
3. Check the box next to a column to import it.

When you check a column, the column also appears within the preview window after the popup contents are saved. Unchecking a column removes the
column from the preview window.

You can't change the import status on system-generated fields such as isDeleted.

You can change the import status on individual columns by:


Selecting column properties and setting the property.
Dragging and dropping the columns onto the designer.

Customizing the Tables


For each table, you can customize the way in which data is imported.

To customize the table settings, follow these steps:

1. Click the arrow on the tab to the right of the table name.
2. Click Table Settings on the floating menu.
3. Enter the table settings:
Data Import Mode: There is only one option in the drop-down list:
Data source to automatically select the best synchronization approach: This is the default. The data source examines NetSuite and
automatically uses the best way to synchronize data in the staging area with the information in the NetSuite. (Some tables are read in their
entirety each time while others use differential updating.)
Data Import Filter: Use this to enter a SQL expression that filters or formats information being imported. The SQL filter is applied before data is
extracted from NetSuite to reduce the amount of data that needs to be imported, giving you an additional level of control for which data is brought
into the staging area. Click the field to display the Edit SQL Expression dialog box. (the filter you enter here is applied to the actual data in NetSuite
rather than the preview data in the staging area.) Not all data sources support the same level of SQL filtering capability.
Period Parameter: The NetSuite tables PostingTransactionBalance and PostingTransactionSummary import by default and require
configuring a period parameter before import. If you choose to import the ConsolidatedExchangeRate or BudgetExchangeRate tables, they also
require configuring a period parameter. If a period parameter is not configured for these tables, the import will fail with the message:

Required parameter is not configured

Note: NetSuite has a very limited, non-SQL filtering capability. Only very simple expressions are supported.
4. Click Apply to apply the settings.
5. Repeat steps 1-3 for each table.
6. Click Save to save the settings in the data source.

Setting Column Options


While using the tables to Import, you can see a preview of the data as it exists in the data source or as it exists in the Staging area after it importing. You can
change the options for each column by hovering its heading to click the drop-down menu next to its name:

Sort Ascending: Sort the entire table based on this column in ascending order.
Sort Descending: Sort the entire table based on this column in descending order.
Column Settings: This dialog is used to change the properties of the column within the staging table.
Name: The name of the column, displayed in the header.
Column Type: The type of data used in the column.
Convert Column Type: Select the new type from this drop-down menu.
Exclude column from import: Select this to remove this column from the data being imported.
Delete custom column: Select this to delete the column. (Available for custom columns only.)

Creating Subquery Columns


Subquery columns let you filter NetSuite rows based on conditions with another related table. For example, you can filter NetSuite Opportunity records based on the
existence of one or more Quote records.

You can use subquery columns to:

Pick the primary table/column and related table/column.


Check related tables for certain conditions.
Insert appropriate values in the driving table based on the results of those checks.

For each table, you can customize the way data imports.

To create a subquery column:

1. Expand the Custom Column folder in the data source in the Data Components menu.
2. Drag and drop the Subquery Column component to the Tables to Import section in the center of the screen.
3. Enter the column settings:
Name: Enter the name for the subquery column:
Column Type: This display-only field identifies this as a boolean column.
Related Table: Select a related table to use for comparison.
Join Expression: Click this field to enter a join condition. The Edit SQL Join Expression dialog box appears. (More information on creating SQL
joins appears in Steps: Add SQL Join Tables and Columns.)
Join Value Rule: Select one of the SQL join value options from the drop-down list: Exists, Does Not Exist, Sum, Count, Min, or Max.
4. Click Apply to apply the settings.
5. Click Save to save the settings in the data source.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 18/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Downloading Data from a Staging Table


You can download data from a single staging table.

To download data from a single staging table, follow these steps:

1. Click the down arrow in a table heading in the Tables to Import section.
2. Select Download Data.
3. Click Send at the prompt This operation will send an email with a url to download the data.

Integration sends an email containing a URL to the email account associated with the data designer.

4. Open the email and click the URL. The data downloads in .csv format.

Using the Advanced Filter


Below the Source drop-down menu, you can click Advanced Filter to reveal options for filtering the data in the Tables to Import preview area. The Advanced Filter
provides tools to view and browse a subset of the data within a staging table or directly from the remote source (if you select NetSuite from the Source drop-down
menu).

The preview area is specifically for previewing a small portion of the data in the staging area (or NetSuite). You can explore the data that is available from the
Spreadsheet account and verify that you are getting the data you expect by examining the staging area. You can also use this to refine the data import filter you
want to use. (Filters set in the preview function do not affect the actual data in the staging area.)

The options for the Advanced Filter are:

Distinct Rows: Check this box to hide duplicate rows.

Max Rows: Limit the number of rows displayed in the preview area by entering a number in the text box.

Columns: Check or uncheck columns in this drop-down menu to show or hide the columns displayed.

Note: Removing a column from this list does not remove the column from the import list.

SQL Filter: Click the large text box to display the Edit SQL Expression dialog box, where you can enter a SQL filter to restrict the rows being previewed.
Click Apply to automatically check the SQL syntax of the filter. (If there are any errors, the error is indicated in the expression.) The expression you entered
appears in the Data Import Filter field. For detailed SQL syntax help, you can click here in the Notes section. NetSuite has a very limited, non-SQL filtering
capability. Only very simple expressions are supported.

Click Remove Filter (next to the Source drop-down menu) to clear the settings in the preview window.

Note: NetSuite designates certain columns as key columns. This information is brought over into the staging tables. This information should not be modified.

Importing Data from NetSuite


When you have set up and saved your NetSuite data source, you can import data.

To import data from NetSuite, do the following:

1. Click Import data in the Actions menu. The selected data is filtered by any SQL expressions and loaded into the staging area. You can preview the data in
the staging area.

Information remains in the staging area until you clear it.

To clear data from the staging area, do the following:

1. Click Clear staging tables in the Actions menu. The staging area for all the tables in the data source is cleared.

Tip: Best Practice: When importing NetSuite Transaction Types, make sure you only use the supported NetSuite Transaction Types.

Importing NetSuite Saved Searches


Saved Searches can only be imported from NetSuite adapters. SSO Authentication for this Data Source must also be configured.

Importing saved searches requires configuring a NetSuite Saved Search in the Data Designer then importing its structure. Saved Searches within integration
support NetSuite Custom Records, Custom Fields, and Custom Segments.

Configure a Saved Search in the Data Designer

1. Click Manage Saved Searches in the Actions menu.


2. In the Managed Save Searches dialog, click the actions button below the navigation tree and select Add Saved Search, or right-click on the saved
searches folder and select Add Saved Search. Give the Saved Search a Name.
3. Select the NetSuite Record Type.
4. Select the NetSuite Saved Search.
5. Click Apply.

Import a Saved Search's Structure

1. In the Managed Saved Searches dialog, click a Saved Search you previously created to select it.
2. Click the actions button below the navigation tree and select Import structure in the Actions Menu, or right-click on the saved search and select Import
structure.
3. After the import Saved Search structure succeeds, close the Managed Saved Searches dialog.
4. The staging area will display a tab for each saved search structure you imported.

Be aware that all Saved Searches in the Data Components panel will import if you click Import structure in the Actions pane.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 19/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Tip: Best Practice: Make sure that the results of your Saved Search structure import does not contain columns with NetSuite Summary Results. This is a NetSuite
web services API restriction.
Note: The maximum number of NetSuite Saved Searches that can be imported is 1000.

Select a NetSuite Saved Search Data Import Mode

1. In the staging area, click the arrow icon in the tab for a table of your NetSuite Saved Search.
2. Select Table settings from the dropdown.

Two options are available:

All records replaced each time a data import is run: This is the default. This replaces all data when the import is run.
All records that fall within a period range transmitted: This allows you to select a period range using a parameter, then choose a Saved Search
table's datetime column the parameter applies to. You can click Edit parameters within this dialog to create a period range parameter to use. If you
choose to import a period range, you must set a period parameter or the import will fail.
3. Click Apply
4. Click Save in the Actions panel

Import Data from a Saved Search

1. In the Actions panel click Import Data.


2. The NetSuite Saved Search data imports to the Staging area.

Deleting NetSuite Saved Searches

1. Click Managed Saved Searches in the Actions pane.


2. Right-click on the saved search in the Managed Saved Searches and select Delete. The saved search is removed from the Manage Saved Searches dialog
list, but its structure will remain in the Data Components pane and the Staging area until Import Structure is run again.

If a NetSuite saved search is deleted within NetSuite, a message will indicate it is no longer available when performing the import structure action. If a saved search
that is already being used within Integration for data import is modified in NetSuite, then future data imports are not guaranteed to succeed.

Tip: Best Practice: Within NetSuite, create your saved searches specifically for use in integration and name them so that they are not modified or deleted by other
NetSuite users.
Tip: Best Practice: Make sure that you have the appropriate permissions in NetSuite to view the contents returned by a Saved Search result. If you don't have
permission to the content, your search will return zero records without an error message. This is a limitation in NetSuite indicated in their online help: If you
reference a saved search for which you do not have the permission, the exception is ignored and fields have no value (are not in
the SOAP response at all).

Drill-through from Adaptive Planning Back to NetSuite


You can enable drill-through on data imported from NetSuite. Drill-through links will become available on Planning sheets and reports for actuals imported from
NetSuite. In order to configure drill-through for NetSuite, you should ensure that your internal identifiers are used as part of column mapping in the Planning loader.
You will need to configure a NetSuite external system and attach it to a profile that is used by the Planning loader.

If you are configuring multiple columns on the NetSuite side to map to a single Planning dimension, then those NetSuite columns need to be combined in the data
source using a Tuple SQL column.

For more details, see the Understanding Mapping Profiles section of Create Planning Data Loaders.

High-level Steps for Enabling Drill Through from Planning to NetSuite

Before getting started, ensure the Enhanced bundle-based drill-through checkbox is checked within Planning's Integration > NetSuite Setup menu.

Configure a NetSuiteExternal System, which defines the dimensional mapping.

Make the data source adjustments required for the defined dimensional mappings.

1. If you have multiple NetSuite categories mapped into the same Planning Dimension, revisit the NetSuite Data Source to add a tuple SQL column for a
many-to-one mapping of the columns.
2. Click the Adaptive Posting Transaction Summary table within Tables to Import.
3. Select Manage Columns in the dropdown for Adaptive Posting Transaction Summary.
4. Enable AccountInternalId.
5. Enable the InternalIds for the other dimensions you plan to drill by.
6. Save the data source.

Make the loader adjustments required by using the data source adjustments for the dimensional mapping.

1. Once the Netsuite Data Source settings above are complete, configure a Planning Data Loader to import NetSuite actuals data.
Link a Profile to the External System you configured in the Configure a NetSuite External System step.
Attach this profile to the Planning Loader.
2. Click the Column Mapping tab.
3. For the Account row:
In the Source Id column select the accountInternalId column from your source table.
In the Source Display Name column select the display name.
4. Repeat the step above for each of the other standard dimensions that you want to drill by.
5. Save the loader

With all of those steps completed you should now be able to drill.

1.1.2.6.2 | Steps: Set Up NetSuite Credentials

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 20/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Note: As of NetSuite's 2020.1 release, NetSuite enforces Token Based Authentication (TBA) for all users.

A NetSuite credential is a collection of token-based authorization keys from NetSuite that act like a password for connecting to a NetSuite endpoint. You can
associate a NetSuite credential with one or more NetSuite data sources as a centralized way of reusing NetSuite login details.

A NetSuite credential contains a:

NetSuite Account ID to identify the user (automatically carried over when upgrading an existing NetSuite data source to the 2020.1 endpoint)
Consumer Key
Consumer Secret
Token ID
Token Secret

Important: Because token-based authorization keys function exactly like a password for a NetSuite account, Adaptive Planning prevents viewing their values the
moment you enter them. Always treat token-based authorization keys as you would a password.
Note: NetSuite Token Based Authentication uses HMAC-SHA256 signature method.

Prerequisites
In NetSuite

Generate authorization tokens within NetSuite for the user that integrates with Adaptive Planning and have the keys available

In Adaptive Planning

Permissions required: Integration Operator, Data Designer


If you have an existing NetSuite data source you must upgrade to NetSuite 2020.1. Find out how to upgrade to the NetSuite 2020.1 endpoint here. Only
NetSuite endpoints for 2018.1 or higher can be associated with a NetSuite credential.
If you create a new NetSuite data source, it automatically uses the 2020.1 endpoint. You can create credentials without having to upgrade.

Navigation

Integration > Design Integrations.

Basic Steps
1. Create a new NetSuite Credential
2. Name the NetSuite Credential and enter the NetSuite Account ID and its token-based authentication keys
3. Associate the credential with a NetSuite data source that uses at least the NetSuite 2020.1 endpoint.

Create a NetSuite Credential


1. Select Credentials in the Component Library.
2. Select Create New Credential in the Credentials menu.
3. Select NetSuite Credential.
4. Enter a unique name for the credential.
5. Enter the NetSuite Account ID. This field remains visible after you save.
6. Enter the Consumer Key, Consumer Secret, Token ID, and Token Secret you generated from NetSuite. For security reasons, these secrets fields get
hidden the moment you enter them into Adaptive Planning.
7. Select Save in the actions panel.

Associate a NetSuite Credential with a NetSuite Data Source


A NetSuite credential can only be associated with a NetSuite data source that was upgraded to the NetSuite 2020.1 endpoint.

1. Select Data Sources in the Component Library.


2. Select a NetSuite data source that uses a NetSuite 2020.1 upgraded endpoint. You can tell a data source has been upgraded if "Upgrade to 2020.1" is not
visible in the Actions pane.
3. Select a NetSuite Credential in the Credentials dropdown.
4. Save the data source.

1.1.2.6.3 | Reference: NetSuite Data Source Tables and Data Types

Supported NetSuite Tables


The table below shows information about the tables supported in NetSuite Integration. The columns for this table show the following information:

Integration Table: The name of the table as shown in the integration data source.
Table Source: The name of the table as used in the NetSuite Schema Browser.
Access: The access mechanism for each NetSuite table. The types are:
Search means Integration brings across all records that match the search criteria using the specified API. Constrained search means Integration
imposes additional constraints on the search in addition to any search constraints NetSuite may impose.
Get all means Integration brings across all the records using the specified API.
Differential means Integration brings across only the data that has changed.
Comments: Comments about the tables.

Integration also supports custom NetSuite tables that are exposed by the NetSuite Web Services API. You can choose which table/columns to import for each one.

Integration Table Table Source Access Comments

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 21/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Integration Table Table Source Access Comments

Account AccountSearchRowBasic Search

AccountingPeriod AccountingPeriodSearchRowBasic Search

AdaptivePostingTransactionSummary Table created in the Integration data source, not available


in NetSuite. Joins the PostingTransactionSummary table
with the standard category tables (Account, Time Period,
Subsidiary, Department, Class, Location, Item,Customer)

AllCustomLists CustomList Get all

Budget BudgetSearchRowBasic Search

BudgetExchangeRate Special: getBudgetExchangeRate Constrained


search

CalendarEvent CalendarEventSearchRowBasic Search

Campaign CampaignSearchRowBasic Differential

CampaignCategory CampaignCategory Get all

CampaignFamily CampaignFamily Get all

Classification ClassificationSearchRowBasic Search

ConsolidatedExchangeRate Special: Constrained


getConsolidatedExchangeRate Search

Contact ContactSearchRowBasic Search

Currency Currency Get all

CustomerCategory CustomerSearchRowBasic Differential

CustomerStatus CustomerCategorySearchRowBasic Search

DeletedRecord Special: getDeleted Constrained Not for use by end user


search

Department DepartmentSearchRowBasic Search

Employee EmployeeSearchRowBasic Differential

EntityGroup EntityGroupSearchRowBasic Differential

ExpenseCategory ExpenseCategorySearchRowBasic Search

Item ItemSearchRowBasic Differential

Job JobSearchRowBasic Differential

JobStatus JobStatusSearchRowBasic Search

JobType JobTypeSearchRowBasic Search

Location LocationSearchRowBasic

NetSuiteServerTime Special: getServerTime

Opportunity OpportunitySearchRowBasic

Partner PartnerSearchRowBasic

PostingTransactionBalance Special: Constrained Table created in the Integration source, not available in
getPostingTransactionSummary search NetSuite. This table contains period ending balances.

PostingTransactionSummary Special: Constrained


getPostingTransactionSummary search

ProjectTask ProjectTaskSearchRowBasic Differential

PromotionCode PromotionCodeSearchRowBasic Search

SalesTaxItem SalesTaxItem Get all

Subsidiary SubsidiarySearchRowBasic Search

SupportCase SupportCaseSearchRowBasic Differential

SupportCasePriority SupportCasePriority Get all

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 22/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Integration Table Table Source Access Comments

SupportCaseStatus SupportCaseStatus Get all

SupportIssue IssueSearchRowBasic Search

SupportSolution SolutionSearchRowBasic Search

SupportTopic TopicSearchRowBasic Search

Task TaskSearchRowBasic Search

TaxGroup TaxGroup Get all

TaxType TaxType Get all

Timebill TimeBillSearchRowBasic Differential

Transaction TransactionSearchRowBasic Differential

Vendor VendorSearchRowBasic Differential

Commonly Used Tables in Integration


The following tables are made importable out-of-the-box in the NetSuite Adapter:

AdaptivePostingTransactionSummary (primary source table for Planning)


Account (mapped to Adaptive Planning Accounts)
Classification (optional mapping)
Customer (optional mapping)
Department (optional mapping)
Items (optional mapping)
Location (optional mapping)
Posting Transaction Summary
Subsidiary (usually Mapped to Adaptive Planning Levels)

Note: The AdaptivePostingTransactionSummary and PostingTransactionSummary tables return a monthly delta, whereas the PostingTransactionBalance table
returns period balances. The AdaptivePostingTransactionSummary and PostingTransactionSummary tables support the standard categories (Account, Time Period,
Subsidiary, Department, Class, Location, Item, Customer). If you need additional categories you must use the Transaction table.

Differentially Updated Tables


In the current NetSuite data source, the following tables are differentially updated:

Campaign
Customer
Employee
EntityGroup
Item
Job
Opportunity
Partner
ProjectTask
SupportCase
TimeBill
Transaction
Vendor

In addition, all Custom Record types are differentially updated. You cannot use the Differential Date Column in your data import filter for differentially updated tables.
The system does not prevent you from trying to do this, but it will cause the differential update mechanism to fail.

You can limit the amount of data imported in a differential table when you are "exploring," that is, changing columns and filter settings. There is a mechanism in the
data source to short circuit the full load of differential data.

The table below contains all the differential tables along with their differential and creation date columns.

Table Differential Date Column Creation Date Column

Campaign LastModifiedDate CreatedDate

Customer LastModifiedDate DateCreated

CustomRecord (*) LastModified Created

Employee LastModifiedDate CreatedDate

EntityGroup LastModifiedDate -- None --

Item Modified Created

Job LastModifiedDate DateCreated

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 23/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Table Differential Date Column Creation Date Column

Opportunity LastModifiedDate DateCreated

Partner LastModifiedDate DateCreated

ProjectTask LastModifiedDate CreatedDate

SupportCase LastModifiedDate CreatedDate

TimeBill LastModified DateCreated

Transaction LastModifiedDate DateCreated

Vendor LastModifiedDate DateCreated

(*) - This applies to all Custom Records.

If you specify a greater-than or a great-than-or-equal filter on the Creation Date Column for your table, the code bypasses the full import and just differentially
updates from the specified date and time. This is helpful for limiting the imported data because when you start exploring a large differentially uploaded table, you
can set the filter to extract only the last few days' (or weeks') worth of data. This kind of load runs very quickly. You can then figure out what columns you need and
what other filter conditions you want to use. Once you are satisfied, you can remove the creation date filter and restart the full data load.

Note: For some tables you may not ever want records older than a certain date. For these tables you can continue to use the creation date filter with an appropriate
value.

Supported NetSuite Data Types


As data from NetSuite is imported into Integration, the 'type' of that data must be mapped to one of the data types supported by integration.

Standard NetSuite Data Fields

For standard NetSuite data fields in searched' tables, the following mappings are used:

NetSuite Standard Search Data Type Integration Data Type

SearchColumnStringField Text

SearchColumnSelectField Text

SearchColumnEnumSelectField Text

SearchColumnDoubleField Float

SearchColumnBooleanField Boolean

SearchColumnLongField Integer

SearchColumnTextNumberField Text

SearchColumnDateField DateTime

Standard NetSuite Data Fields in Tables

For standard NetSuite data fields in tables (which are always fetched in their entirety), the following mappings are used:

NetSuite Standard Data Type Integration Data Type

String Text

RecordRef Text

Double Text

Boolean Float

Long Boolean

System.DateTimeFloat Integer

Custom Fields

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 24/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

The NetSuite Data Source supports a subset of the possible custom NetSuite custom fields.

Custom fields are supported on the following record types:

CRM Custom Fields


CalendarEvent
Campaign
SupportCase
SupportIssue
SupportSolution
ProjectTask

Task
Custom Entity Fields
Contact
Customer
Employee
Entity Group
Job
Partner
Vendor
Custom Item Fields
Item
Custom Transaction Fields
Transaction Body
Transaction Column
Transaction Item
Other Custom Fields
Account
Classification
Department
Location
PromotionCode

Note that custom fields must have the "STORE VALUE" attribute checked in order for the field to be exposed on the NetSuite web services API.

Custom Field Data Types

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 25/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Integration supports all of the defined NetSuite custom field data types. However, because Integration internally implements only five basic data types, the NetSuite
custom field data types are mapped to most appropriate Integration data types. The following table illustrates this mapping:

NetSuite Data Type Integration Data Type Comment

_checkBox Float

_currency DateTime

_date DateTime

_decimalNumber Float

_document Text Reference to another record

_eMailAddress Text

_freeFormText Text

_help Text StoreValue not set. NetSuite won't allow retrieval of this type.

_hyperlink Text

_image Text Reference to another record

_inlineHTML Text

_integerNumber Integer

_listRecord Text Reference to another record

_longText Text

_multipleSelect Text Reference to zero or more other records of a given type

_password Text

_percent Float

_phoneNumber Text

_richText Text

_textArea Text

_timeOfDay DateTime

Additional Information
The following sections describe some additional considerations for accessing NetSuite data.

Data Import Filter

Each field in a search can have a maximum of one filter. The filters are ANDed together by NetSuite when the search query is executed.

Only tables that are accessed via a "search" mechanism can have synchronization filters set.

In addition, only those fields that exist in both [TableName]SearchRowBasic and in [TableName]SearchBasic can be used in synchronization filters.

Querying NetSuite Directly from Staging

When querying NetSuite directly (as opposed to querying records imported into staging from NetSuite) filter expressions are limited to the capabilities exposed by
NetSuite via Web Services.

Simple column filters with Comparison and Logic Expressions may be used when querying NetSuite.
Filters can be ANDed together but can not be ORed together.
Operators (+, -, /, *, $, ||) may not be used.
Scalar functions may not be used.
Case statements may not be used.
To filter on a custom column, the custom column must be marked for import.
Some column filters require specific NetSuite features to be enabled in order for the filter to work.

Some tables and some columns do not support filtering.

Excluded Fields

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 26/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

A number of NetSuite fields are excluded from import for various reasons. The table below shows some of these excluded fields.

NetSuite field Reasons for exclusion

Customer: ccExpDate Credit card information is excluded for privacy protection.

Customer: Credit card information is excluded for privacy protection.


ccInternalId

Employee: Excluded for privacy protection.


socialSecurityNumber

SalesTaxItem: zip A delimited list of zip codes. This text field can be exceedingly long (longer than the default 1,024 character limit for a text field) and
is not considered particularly useful for Integration operations.

Transaction: Credit card information is excluded for privacy protection.


ccExpDate

Information About Fields

Additional information about NetSuite standard and custom fields:

Text fields are limited to a maximum size of 1024 characters.


Customizations to NetSuite standard fields are not supported.
Custom hidden fields are visible. (NetSuite exposes them through their web services.)
Only NetSuite custom fields that have the "Store Value" attribute set are imported into Integration.

Saved Searches

To configure a NetSuite Saved Search, see Importing NetSuite Saved Searches section in Steps: Set Up NetSuite Data Sources

Drill-through from Adaptive Planning Back to NetSuite

Customers can enable drill-through on data imported from NetSuite. Drill-through links will become available on Planning sheets and reports for actuals imported
from NetSuite. In order to configure drill-through for NetSuite, you should ensure that your internal identifiers are used as part of column mapping in the Planning
loader. You will need to configure a NetSuite external system and attach it to a profile that is used by the Planning loader.

If you are configuring multiple columns on the NetSuite side to map to a single Planning dimension, then those NetSuite columns need to be combined in the data
source using a Tuple SQL column. For more details, refer to the Integration sections on column/data mapping and profiles.

Tips and Best Practices


Best Practice for Setting Up Planning for Import of GL Actuals

To import GL actuals using the Transaction table, set the GL accounts in Planning to Actuals by monthly delta. Navigate to the Account Admin, select the GL
account and view the account details to find the Actuals by section. In this method, planning takes care of accumulating amounts on balance sheet accounts.

Best Practice for Dealing NetSuite Timeout Messages

One of the errors that NetSuite can return is:

Your search has timed out. If your search includes the 'contains' operator, try using 'hasKeywords' instead. If your search includes broad search criteria, try
narrowing the criteria.

This error indicates that the request ran too long in NetSuite. This condition usually occurs because the filter criteria in the request would create an extremely large
result. NetSuite allows approximately 3 minutes of processing for a request. (Note that this is time allowed for the actual database query within NetSuite. The
amount of time required for a result to be returned can be much longer since it is gated by NetSuite's traffic policies.)

There are several ways to address this error. A good general guideline is to make sure that the request being generated is as specific as possible. For example,
only include transaction types that are actually used by the loaders. Another way to prevent or resolve this error is by using the Backfill Batch Duration property. For
tables that are differentially updated, this property determines the size of the update chunk. The Backfill Batch Duration is defaulted to 168 hours (one week).
However, this value may be too high if you are dealing with a request for high density data. Lowering this value reduces the size of the individual request by
tightening the time filter, which can prevent or resolve this error.

The minimum value for the Backfill Batch Duration property is one hour. The tradeoff here is that you are "nibbling" at the data rather than "gulping" it, which means
that many more requests have to be sent to NetSuite in order to complete the update. For instance, reducing 168 to 24 means that you are only trying to grab one
day at a time, but it means seven times as many requests.

Because there is no practical way to tell the density of data ahead of time, you may want to experiment with your queries and adjust the Backfill Batch Duration
property as needed to deal with the issue.

Creating Individual Lists from the AllCustomLists Staging Table

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 27/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

A join table can be used to extract/filter an individual list from the AllCustomLists staging table. For example, to create a table that has the members of the list called
Resolutiontime (with InternalId 19):

In this join expression the InternalId value is the 'selector' that picks the particular custom list that you want.

Create a new Join table. A reasonable name for the table would be "CustomList[*]" where [*] is the 'Name' value of the list that is being extracted. So for this
example the name would be "CustomListResolutiontime".
Set the Primary Table to "AllCustomLists".
Add a Join.
Primary Table: AllCustomLists
JoinedTable: AllCustomLists
Type: Inner
Column Prefix: (blank)
Join Expression: P."InternalId" = '19' and R."InternalId" = '19' and P."ValueId" = R."ValueId"

In this join expression the InternalId value functions as the 'selector' that picks the particular custom list that you want.

Then, in the join table pick only the columns from the primary table that you need (usually just "Value" and "ValueId").

The following screenshot captures this result:

Tip for Preparing Account and Level Data

Even though Account and Level data varies from one customer to another, here are a couple of examples to show how a data designer can create SQL columns in
the staging area to prepare data before loading into Planning.

Account:

CASE WHEN "acct.Number" is null THEN TRIM("acct.Name") ELSE TRIM("acct.Number") END

Level:

CASE WHEN "Department.Name" is null THEN 'No Department' ELSE TRIM("Department.Name") END || ' ' || "Location.Name"

Tip for Using Business Rules

The data designer allows you to create business rules for easy loading. Here are some tips for handling rules relating to account information:

Account codes must be numerical values so that it's easy to add the range of GL accounts to be reversed.
Avoid using underscores for these type of accounts. If you use an underscore, you have to manually add all account codes that you need to change the
signs for.
Account codes cannot have embedded spaces.

Timezone Configuration

The Account Time Zone for the NetSuite data source in Integration must match the timezone found in NetSuite's GUI under Preferences > Localization Time
Zone.

If the two do not match, do one of the following:

Change the Account Time Zone within Integration so they match.


Change the timezone setting within NetSuite for the user associated with the data source so they match.

External References

The core resource for the NetSuite API is the online help system at the NetSuite website, http://www.netsuite.com. NetSuite generates a PDF of this online help with
each release of their product. A recent copy can be found by searching for "SuiteTalk (Web Services) Records Guide.

NetSuite information can be found at https://www.oracle.com/technical-resources/. If you register for an account you can apply for access to the NetSuite subject
areas.

1.1.2.6.4 | Reference: NetSuite Transaction Types

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 28/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

The following is a list of NetSuite transaction types supported through the 2020.1 NetSuite endpoint by the NetSuite adapter within Integration. If a transaction table
or NetSuite Saved Search contains transaction types that are not supported through the NetSuite web services, the results of the Saved Search may produce
unexpected results.

See NetSuite's Help Center for more information (NetSuite Login required): https://system.na1.netsuite.com/app/help/helpcenter.nl

Supported NetSuite Transaction Types Values for the 2020.1 Endpoint

Supported NetSuite Transaction Types Values

_assemblyBuild

_assemblyUnbuild

_binTransfer

_binWorksheet

_cashRefund

_cashSale

_check

_creditMemo

_custom

_customerDeposit

_customerPayment

_customerRefund

_deposit

_depositApplication

_estimate

_expenseReport

_inventoryAdjustment

_inventoryCostRevaluation

_inventoryTransfer

_invoice

_itemFulfillment

_itemReceipt

_journal

_opportunity

_paycheckJournal

_purchaseOrder

_requisition

_returnAuthorization

_salesOrder

_transferOrder

_vendorBill

_vendorCredit

_vendorPayment

_vendorReturnAuthorization

_workOrder

_workOrderClose

_workOrderCompletion

_workOrderIssue

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 29/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

1.1.2.6.5 | Reference: Permissions Required for Custom Roles in NetSuite Data Sources

Note: These permissions are only for the NetSuite data source in Integration. For NetSuite Basic permissions, go here.

When you create a custom NetSuite Web Services Only Role within NetSuite, this role typically needs a common set of permissions to get the default set of
NetSuite tables, columns, records, and fields into Adaptive Planning.

Prerequisites
Log in to NetSuite as an admin
Understand what you need to load from NetSuite to Adaptive Planning for your organization

How to Edit Roles in NetSuite


1. Log in to NetSuite as an administrator.
2. Navigate to Setup > Users/Roles > Manage Roles.
3. Click Edit for the role.
4. Click Permissions at the bottom of the role page. The permission types appear as tabs.

Permissions for the Default Set of NetSuite Tables


Lists > Perform Search FULL

Lists > Accounts VIEW

Lists > Classes VIEW

Lists > Customers VIEW

Lists > Departments VIEW

Lists > Employee Record - VIEW (required if the customer has the Advanced Employee Permission feature)

Lists > Employees VIEW

Lists > Items VIEW

Lists > Jobs VIEW

Lists > Locations VIEW

Lists > Projects VIEW

Lists > Vendors VIEW

Lists > Subsidiaries VIEW (required for multiple subsidiaries)

Reports > Financial Statements VIEW

Setup > Accounting Lists VIEW

Setup > Deleted Records FULL

Setup > Login using Access Tokens FULL (required for NetSuite 2020.1)

Setup > User Access Tokens FULL (required for NetSuite 2020.1)

Setup > Manage Accounting Periods VIEW

Setup > SOAP Web Services FULL

Transactions > Find Transactions VIEW

Transactions > Each transaction type (e.g. Make Journal Entry, Opportunity, etc.) that you wish to process also needs to have its permission enabled for
view access.

Note: Permissions can be renamed in NetSuite. If you don't see a permission from this list, navigate in NetSuite to Setup > Company > Rename
Records/Transactions and check for changed names. For example, Class could have been renamed Classification. Error messages use the original names.

Permissions for Subsidiaries


For NetSuite OneWorld accounts with multiple subsidiaries, grant access to all subsidiaries for the role accessing NetSuite. In the Subsidiary Restrictions section of
the role page, set accessible subsidiaries to ALL.

Permissions for Custom Fields


These permissions are only required to retrieve custom fields from NetSuite.

Setup > Custom Body Fields VIEW

Setup > Custom Column Fields VIEW

Setup > Custom Entity Fields VIEW

Setup > Custom Event Fields VIEW

Setup > Custom Item Fields VIEW

Setup > Other Custom fields VIEW

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 30/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Permissions for Custom Records


This permission is only required to retrieve custom field records from NetSuite.

Setup > Custom Record Types VIEW

Permissions for Custom Segments


If you have a NetSuite Custom Segment, you need to grant permissions for the role accessing NetSuite in the NetSuite segment configuration. For more about
permissions for Custom Segments, search the NetSuite help system for the topic Granting Roles Permission to Use Segments in Searches and Reports.

You can use Custom Segment permissions to resolve errors in the event log that indicate:

Permission Violation: You need a higher permission for value management of custom segment <segment name> to access this page.
Please contact your account administrator.

Within NetSuite:

1. Edit the custom segment.


2. Select the Permissions subtab.
3. Reference the role that requires access in the Permissions sublist.
4. Review the sublist to see if the role is already there.
If the role isn't there, add a line to the sublist. Select the role in the Role column. Choose the needed access level in the Search/Reporting Access
Level column. View the values for this role in the Value Management Access Level and Record Access Level columns. Review the Value
Management Access permission carefully. This permission lets the user create values. Select Add.
If the role is already listed but can't manage values, edit the role's access. Find the role in the sublist. Set the corresponding value in the
Search/Reporting Access Level column to Edit. Select OK.
5. Set the default search/reporting access level in the Default Search/Reporting Access Level list. This access level applies to roles that doon't show up in
the Permissions sublist with a specified access level.
6. Select Save.

1.1.2.7 | Steps: Set Up Table Groups

A table group is a data source that combines tables from many disparate sources. For example, you might have a spreadsheet with sales data, a couple of JDBC
databases that have personnel or inventory information, manufacturing information from another division in NetSuite, and then want to use scripting on a table to do
complex filtering and calculations, with all these tables linked by SQL joins and additional filtering.

You can set up a table group to import tables from different locations and then use SQL joins and other operations to filter and select information. You must have
any prerequisite data sources already set up: for example, if you're importing from a JDBC-based table, you must have a JDBC data source already set up,
including a data agent, that lets you access that database.

To set up a table group data source:

1. Access the Data Designer by going to Integration > Design Integrations.


2. In the Data Source folder in the Component Library on the right side of the screen, click Create New Data Source. The Create New dialog box appears.
3. Select Table Group as the data source type and enter a name for the data source.
4. Click Create. The center area of the screen displays your new data source's settings and other information:
5. Enter the data source's information:
Log Level: Select a log level from the drop-down list to specify the detail for the logging for this data source. Your options are:
Error: Only logs serious errors.
Info: Logs all basic information, such as when the data source was updated.
Verbose: Provides very detailed information about all phases and actions. (This level is used primarily for debugging or auditing, as it may
produce more log information than is practical for typical use.)
6. Click Save on the Actions menu.

Adding Tables to a Table Group


After you have set the logging level, you are ready to specify the information you want to import

To add tables to the table group:

1. Expand the Custom Tables entry in the Data Components menu.


2. Drag and drop the Join Tables item to the Tables to Import area.
3. Drag and drop the tables you want to import to the Tables to Import section in the center of the screen. When you drop this item, the Join Tables dialog box
appears:
4. Enter the join table's information:
Name: Enter a name for the table. A default name is supplied.
Primary Table: Click the arrow to the right of this field to display all the data sources currently associated with this login, then expand one and select
a table from that data source to use as the primary table.
Joined Table: Click the arrow to the right of this field to display all the data sources currently associated with this login, then expand one and select
a table from that data source to use as the joined table.
Type: Select Inner Join, Right Join, or Left Join from the drop-down list.
Join Expression: Click this field to enter a join condition. The Edit SQL Join Expression dialog box appears. See Adding a SQL Join Table for more
information on creating SQL joins .
5. You can click Apply to save the basic information for this table and then edit it later, or you can add SQL join information by clicking Add Join.
6. Click Save to save the changes to the table group data source.

You can edit an individual table by clicking the arrow on the tab to the right of the table name. This displays the Join Table dialog box for the table.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 31/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Working with Imported Data in a Table Group


Because a table group is using tables from other data sources, you don't import data directly in a table group data source. Instead, the table group relies on
information in the staging area for the component tables. To clear or refresh the information in the tables appearing in a table group, you must go to the data
sources for the component tables and clear or refresh them.

Setting Column Options


While using the Tables to Import section, you can see a preview of the data as it is in the staging area after it has been imported. You can change the options for
each column by mousing over its heading and then clicking the drop-down menu next to its name. These options are:

Sort Ascending: Sort the entire table based on this column in ascending order.
Sort Descending: Sort the entire table based on this column in descending order.
Column Settings: This dialog is used to change the properties of the column within the staging table.
Name: The name of the column, displayed in the header.
Column Type: The type of data used in the column.
Convert Column Type: Select the new type from this drop-down menu.
Exclude column from import: Select this to remove this column from the data being imported.
Delete custom column: Select this to delete the column. (Available for custom columns only.)

Using the Advanced Filter


Below the Source drop-down menu, you can click Advanced Filter to reveal options for filtering the data in the Tables to Import preview area. The Advanced Filter
provides tools to view and browse a subset of the data within a staging table. By changing filter properties, you can change the view of the data shown within the
preview window without changing the data in the staging area.

The preview area is specifically for previewing a small portion of the data in the staging area. You can explore the data that is available from the spreadsheet and
verify that you are getting the data you expect by examining the staging area. You can also use this to refine the data import filter you want to use. (Filters set in the
preview function do not affect the actual data in the staging area.)

The options for the Advanced Filter are:

Distinct Rows: Check this box to hide duplicate rows.


Max Rows: Limit the number of rows displayed in the preview area by entering a number in the text box.
Columns: Check or uncheck columns in this drop-down menu to show or hide the columns displayed.

Note: Removing a column from this list does not remove the column from the import list.

SQL Filter: Click the large text box to display the Edit SQL Filter dialog box. You can enter a SQL filter to restrict the rows being previewed. Click Apply to
automatically check the SQL syntax of the filter. (If there are any errors, the error is indicated in the expression.) The expression you entered appears in the
Data Import Filter field. For detailed SQL syntax help, you can click online help in the Notes section.

Click Remove Filter (next to the Source drop-down menu) to clear all advanced filter settings.

Note: As part of the table customization process, you can also create join tables and custom columns using SQL expressions.

1.1.2.8 | Steps: Set Up SAGE Intacct Data Sources

You can use integration to import data from SAGE Intacct.

Set up a Web Services User in SAGE Intacct with Permissions for Full Read Access to General
Ledger and the Company Module
Set up a Web Services User within SAGE Intacct with the following settings and permissions. This user will only exist to pull data from SAGE Intacct into Adaptive
Planning.

Username: xml_gateway_adaptive
Email: Use your email address
Account User Type: business user
Account does not need admin rights
Account needs full read access to the General Ledger Module and the Company Module

Once you create the account, you will receive a Welcome To SAGE Intacct email that contains the username, company code, and temporary password. Copy and
paste these into your Intacct Data Source Settings.

Allow SAGE Intacct Web Services Authorization Access


SAGE Intacct added a new level of security for all instances that require Web Services connections. Customers must now grant permission for a Web Services
Sender ID to connect to their Intacct instance and request data.

Grant Adaptive Planning Integration Permission to Connect to a SAGE Intacct Instance

1. Within SAGE Intacct, navigate to the Company > Company Info > Security tab. Click Edit.
2. In the Web Services Authorization Section, click the + icon above the top-right corner of the table.
3. In the Web Services Sender Information pop-up, enter adaptiveplanning. The Sender ID is case sensitive, only use lowercase.
4. Click Save.

Enter SAGE Intacct Data Source Settings


1. In integration, navigate to Integration > Design Integrations.
2. In the Data Source folder in the Component Library on the right side of the screen, click Create New Data Source. The Create New dialog box appears.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 32/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

3. Select Intacct as your data source type and enter the name for the data source.
4. Click Create. The center area of the screen displays your new data source's settings.
5. Enter the data source's information:

Include active non-posting dimensions: Select this checkbox to include non-posting dimensions in the results.

Log level: Select a log level from the drop-down list to specify the detail for the logging for this data source. Your options are:
Error: Only logs errors.
Info: Logs all basic information, such as when the data source was updated.
Verbose: Provides very detailed information about all phases and actions. (This level is used primarily for debugging or auditing, as it may
produce more log information than is practical for typical use.)
User name: Enter the user name for the Intacct Web Services account.
Password: Enter the password associated with the user name.
Company ID: Enter the company ID associated with the user name.
Client ID: Enter the client ID associated with the user name. (Optional.)
Location ID: Enter the location ID associated with the user name. (Optional.)
6. Click Save on the Actions menu.

You can test the connection information in the new agent by clicking Test connection in the Actions menu. The system tries to connect to SAGE Intacct using the
information in the data source fields. If the system can connect to your SAGE Intacct account, click OK. If there are connection problems, contact support.

When you can connect to SAGE Intacct, you're ready to import the data structure. This shows you the tables and columns in the database.

To import the SAGE Intacct Structure, do the following:

1. Click Import structure in the Actions menu. A dialog box appears with informationabout what is imported.
2. Click OK. Integration imports the structure. A dialog box appears showing the progress.
3. Click Close when the import is complete. The tables and columns appear in the Data Components menu.
4. Click Close to close the Import Intacct dialog box.
5. Click Save on the Actions menu.

Adding Tables to an Intacct Data Source


After you have imported the Intacct structure, you are ready to specify the information you want to import. The Tables to Import section of the screen lets you
configure the data imported from Intacct. To specify the tables to import from Intacct, follow these steps:

1. Expand the entry for the data source in the Data Components menu. Data components with a slash through their icon are not currently included for import.
2. Drag and drop the tables you want to import to the Tables to Import section in the center of the screen. As you drag each table to the Tables to Import
section, a tab appears for the table and information from the Spreadsheet account appears in the Tables to Import section letting you see the type of
information you've added. (Several sample tables appear below.) Each table's tab also has a drop-down menu, which you can access by clicking the arrow
next to its name.

Managing Columns
If a table you are working with has a large number of columns, you can use the Manage Columns to do quick edits for which columns to import. The Manage
Columns dialog box displays the columns in a table so you can then check or uncheck columns for importing.

To manage columns for importing, follow these steps:

1. Click the arrow on the tab to the right of the table name. A floating menu with several options appears.
2. Click Manage Columns on the floating menu.
3. Check the box next to a column to import it. When you check a column, the column also appears within the preview window after the popup contents are
saved. Unchecking a column removes the column from the preview window. You cannot change the import status on system-generated fields such as
isDeleted. You can also change the import status on individual columns by selecting column properties and setting the property or by dragging and dropping
the columns onto the designer.

Customizing the Tables


For each table, you can customize the way in which data is imported.

To customize the table settings, follow these steps:

1. Click the arrow on the tab to the right of the table name. A floating menu with several options appears.
2. Click Table Settings on the floating menu.
3. Enter the table settings:
Data Import Filter: Use this to enter a SQL expression that filters or formats information being imported. The SQL filter is applied before data is
extracted from the database to reduce the amount of data that needs to be imported, giving you an additional level of control for which data is
brought into the staging area. Click the field to display the Edit SQL Expression dialog box. (The filter you enter here is applied to the actual data in
the database rather than the preview data in the staging area.) Not all data sources support the same level of SQL filtering capability.
4. Click Apply to apply the settings.
5. Repeat steps 1-3 for each table.
6. Click Save to save the settings in the data source.

Setting Column Options


While using the Tables to Import section, you can see a preview of the data as it is in the data source or as it is in the staging area after it has been imported. Select
Intacct or Staging table from the drop-down to preview data.

You can change the options for each column by mousing over its heading and then clicking the drop-down menu next to its name. These options are:

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 33/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Sort Ascending: Sort the entire table based on this column in ascending order.
Sort Descending: Sort the entire table based on this column in descending order.
Column Settings: This dialog is used to change the properties of the column within the staging table.
Name: The name of the column, displayed in the header.
Column Type: The type of data used in the column.
Convert Column Type: Select the new type from this drop-down menu.
Exclude column from import: Select this to remove this column from the data being imported.
Delete custom column: Select this to delete the column. (Available for custom columns only.)

Downloading Data from a Staging Table


You can download data from a single staging table.

To download data from a single staging table, follow these steps:

1. Click the down arrow in a table heading in the Tables to Import section.
2. Select Download Data.
3. At the prompt This operation will send an email with a url to download the data, click Send. Adaptive Planning sends an email containing a URL to the email
account associated with the data designer.
4. Open the email and click the URL. The data is downloaded in csv format.

Using the Advanced Filter


Below the Source drop-down menu, you can click Advanced Filter to reveal options for filtering the data in the Tables to Import preview area. The Advanced Filter
provides tools to view and browse a subset of the data within a staging table. By changing filter properties, you can change the view of the data shown within the
preview window without changing the data in the staging area.

The preview area is specifically for previewing a small portion of the data in the staging area. You can explore the data that is available from the Spreadsheet
account and verify that you are getting the data you expect by examining the staging area. (Filters set in the preview function do not affect the actual data in the
staging area.) The Advanced Filter lets you experiment with the data in the preview to set up a data import filter.

The options for the Advanced Filter are:

Distinct Rows: Check this box to hide duplicate rows.


Max Rows: Limit the number of rows displayed in the preview area by entering a number in the text box.
Columns: Check or uncheck columns in this drop-down menu to show or hide the columns displayed.

Note: Removing a column from this list does not remove the column from the import list.

SQL Filter: Click the large text box to display the Edit SQL Filter dialog box.

Enter a SQL expression in the field. This is a filter to restrict the rows being previewed. Click Apply to automatically check the SQL syntax of the filter. (If there are
any errors, the error is indicated in the expression.) For detailed SQL syntax help, you can click online help in the Notes section. The expression you entered
appears in the Advanced Filter section of the preview window.

Click Remove Filter (next to the Source drop-down menu) to clear all advanced filter settings.

Note: As part of the table customization process, you can also create join tables and custom columns using SQL expressions.

Clearing the Staging Area


Information remains in the staging area until you clear it.

To clear data from the staging area, click Clear staging tables in the Actions menu. The staging area for all the tables in the data source is cleared.

1.1.2.9 | Steps: Add SQL Join Tables and Columns

In addition to the data tables and columns directly available to you from a spreadsheet or database, you can create tables with SQL joins. You can also use SQL
expressions on the data in a column. SQL join tables and columns are available to you in all data sources.

Adding a SQL Join Table


SQL join tables give you added flexibility for extracting and filtering information.

To add a SQL join table, follow these steps:

1. In the Data Components menu, expand the Custom Table folder.


2. Drag Join Table to the data source and drop it in the table area.
3. Enter the join table's information:
Name: Use the default name or enter a different name for the join table.
Primary Table: Select the primary table for the SQL join from the drop-down list.
4. Click Add join.
5. Select Create new join from the drop-down list.
6. Enter the new join's information:
Join Name: Use the default name or enter a different name for the join. (You can have more than one join in a table).
Primary Table: Select the primary table from the drop-down list.
Joined Table: Select the table to join the primary table to from the drop-down list.
Type: Select the type of SQL join from the drop-down list: Inner, Left Join, or Right Join.
Column Prefix: Enter an optional column prefix. The column prefix is a small string value that's added to each column name within the joined table.
This identifies the origin of a particular column when it appears within the join table's list of columns.
Join Expression: Click this field. The Edit SQL Join Expression dialog box appears.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 34/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

7. Enter a SQL join expression. A list of the columns available to you appears on the left of the dialog box. Click Apply to automatically check the SQL syntax
of the join expression. The expression you enter appears in the Join Expression field. For detailed SQL syntax help, you can click here in the Notes section.
8. Click Apply in the create new join bar on the Join Table dialog box to apply the changes.
9. You can repeat the process to add another join to this table, or click Apply at the bottom of the dialog box to save the changes to the join table.

The completed join table appears in the list of tables for the data source. (To include columns for import, locate the newly created join table in the list of tables under
the data source. Open the join table and locate the column that you would like to include for import. Drag and drop the selected column on to the Joined table in the
Preview region.)

You can edit the table settings by clicking the arrow next to the table name, which displays the Join Filter dialog box described earlier instead of the standard Table
Settings dialog box for other tables.

Adding a SQL Column


SQL columns are used to construct new values that can be easily loaded into Discovery by loaders. (Loaders are discussed here.)

To add a SQL column, follow these steps:

1. In the Data Components menu, expand the Custom Column folder.


2. Drag SQL Column to the data source and drop it on a table in the table area.
3. Enter the SQL column's information:
Name: Use the default name or enter a different name for the SQL column.
Column Type: This display-only field shows the data type for the column.
Convert Column Type: Select a data type to convert the new column to, or leave the selection as (Do not convert) to keep the column as the data
type displayed in Column Type.
SQL Expression: Click the field to display the SQL Expression dialog box described earlier. Enter a SQL expression in the field. Click Apply to
automatically check the SQL syntax of the expression. (If there are any errors, the error is indicated in the expression.) The expression you entered
appears in the SQL Expression field on the Column Setting dialog box. For detailed SQL syntax help, you can click here in the Notes section.
4. Click Apply on the Column Setting dialog box.

The completed column appears in the table you had selected. You can edit the column settings by clicking the arrow next to the column name, which displays the
Column Settings dialog box described earlier instead of the standard Column Settings dialog box for other columns.

Custom Cloud Data Sources


If you are interested in setting up a Custom Cloud Data Source (CCDS), see the CCDS Developer guide.

1.1.2.10 | Steps: Set Up Union Tables

Union tables let you combine or stack table row data, even when the tables comes from different data sources. With a union, you combine rows from one table with
rows from another table to make a single larger table. The data in each column must be of the same data type. For example, a retail chain that uses different ERP
systems across regions may want to combine all ERP data into in a single large table.

Prerequisites
Required Permissions: Integration and Data Designer
Verify you imported at least two staging tables for a data source.

Navigation

From the nav menu, go to Integration > Design Integrations

Basic Steps (optional)


1. Select data source tables.
2. Select data source table columns.

Select Data Source Tables


1. Select Custom Table in the Data Component pane for a data source.
2. Drag and drop Union Table into Tables to Import (the staging area).
3. Enter a name for the Union table.
4. Select the Tables tab.
5. Select the + button to add a table to your union.
6. Click (Select) in the TABLE column to expand the list of available data sources and select a table.
7. (Optional) Select (Empty) in the FILTER column to launch a popup and write an SQL expression to filter the columns from this table. Click each Available
Column you want to add to your SQL expression. Click online help to view the SQL Expression Reference for all of the functions and operators you can
use.
8. Repeat the three previous steps until you add all of the tables you want contributing to your union.

Select Data Source Table Columns


1. Select the Columns tab.
2. Select the + button and choose a data type for the table columns you want to union. Each of the data source tables you select shows up as a column header
in the grid.
3. Click (Select) under each of the column headers to choose a column from each table.
4. Repeat the two previous steps until you select all of the data source table columns you want participating in the union.
5. (Optional) Click a column name to rename it.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 35/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

6. Select OK to save your union table settings and view the results of your union.
7. Save the data source.

1.1.2.11 | Steps: Swap CCDS and Planning Data Source Credentials to Workday Credentials

For increased security and functionality, you can swap to a Workday Credential that authenticates with a JWT Bearer Grant Token for a:

Custom Cloud Data Source (CCDS) that connects to Workday via OAuth 2 credential
Planning Data Source (Adaptive Planning as a data source) that authenticates with username and password

Prerequisites
In Workday

Enable Public API and create an ISU.


Enable the security policy on the domain Adaptive Planning API Access and provision a group where the new public API ISU you just created resides.
Enable User Sync and synchronize users at least once.
Enable the Adaptive Planning functional area if it isn't already set up and activate any pending security policy changes.

In Adaptive Planning

Give the ISU you created a permission set with Design Integrations permissions and data access.

Steps
1. Create the Workday Credential in Adaptive Planning.
2. Register a Workday API Client with JWT Bearer Grant.
3. Swap the Credential in Planning Data Sources and CCDS.

Create the Workday Credential in Adaptive Planning


You can associate a single Workday credential within Adaptive Planning with one or more Workday data sources, CCDS, or loaders.

1. Log in as the ISU created for your Public API earlier.


2. Navigate to Integrations > Design Integrations.
3. Expand the Credentials pane in the Component library and select Create New Credential.
4. Select Workday Credential in the Credentials menu.
5. Enter a unique name that helps you identify the Workday tenant and user it connects to.
6. Select Create. Verify Client Grant Type uses Jwt Bearer Grant.
7. For Connection, select External and provide the Remote Tenant ID, Remote UI URL, and Remote Rest URL of the Workday Tenant you want this
credential to work with. The Remote Tenant ID, Remote UI URL, and Remote Rest URL fields are case sensitive.

Register a Workday API Client with JWT Bearer Grant


1. Select View Certificate to copy the x.509 certificate. You need this certificate to register an API client in Workday.
2. Open a new browser window and log in to Workday as a user who can register API clients.
3. Search for and select Register API Client.
4. Provide a Client Name that makes it clear this API client integrates with Adaptive Planning.
5. Select Client Grant Type Jwt Bearer Grant.
6. Select Create x509 Public Key and paste the certificate you copied from your Workday Data Source view certificate link.
7. Copy in the Redirection URI from Adaptive Planning. Though this is a required field, JWT bearer grant will not call this URL.
8. Select Access Token Type Bearer.
9. Set Scope (Functional Areas) to Adaptive Planning.
10. Select OK to generate the Client ID and other details that identify your new integration client.
11. Copy the Client ID so that you can paste it into your Workday credential in Adaptive Planning.

Complete the Workday Credential in Adaptive Planning for JWT Bearer Grant

1. Return to the browser window for Adaptive Planning containing the incomplete Workday credential.
2. Enter the Workday ISU username you want associated with this credential.
3. Paste the Client ID you copied from Workday.
4. Select Test Connection in the Actions pane, and select Test. A message indicates if the connection succeeded.

Swap the Credential in Planning Data Sources and CCDS


1. Select the CCDS or Planning Data Source you want to swap credentials for.
2. Select the new Workday Credential you just created.
3. For CCDS, update the content of the CCDS script to retrieve the token to with ai.oauth.getPlanningTokenFromWorkday()

Note: Your data source definition won't change if you connect to the same Adaptive Planning environment regardless of the warning message " Existing definition
of data source will become invalid if the credential is changed. Do you want to continue?

1.1.2.12 | Steps: Set Up Planning Data Sources

1.1.2.12.1 | Steps: Set Up Planning Data Sources

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 36/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

You can use Adaptive Planning as a data source to import metadata and data from your current Adaptive Planning instance, or another instance. When you set up
a Planning data source, you need to create an Adaptive Planning credential. The Adaptive Planning credential lets you reuse authentication details with more
Adaptive Planning data sources or loaders.

Watch the video: 3m 16s

Prerequisites
Create an Adaptive Planning Data Source Credential
Verify that the Adaptive Planning credential you select for this data source has the permissions and dimensional access for the metadata and data you need.
Permissions required: Integration > Data Designer and Integration Operator

Navigation

From the nav menu, go to Integration > Design Integrations

Basic Steps
1. Create an Adaptive Planning credential.
2. Create a Planning data source.
3. Select the Adaptive Planning sources, such as sheets, dimensions, levels, accounts, attributes, time periods, and versions to import.
4. Import the Adaptive Planning structure from the sheets or accounts.
5. Import the Adaptive Planning data from staging tables.
6. Automate Adaptive Planning imports using an integration task.

Create an Adaptive Planning Credential


Follow the steps to Create an Adaptive Planning Data Source Credential.

Create a Planning Data Source


1. Expand Data Sources in the Component Library and select Create New Data Source.
2. Select Planning Data Source.
3. Enter a unique name for the data source and select Apply.
4. Select an existing Adaptive Planning credential. If one doesn't exist, create it using the steps described earlier. You can select a Workday Credential if the
Adaptive Planning user is synchronized from Workday.
5. Save the data source settings.
6. Select Test Connection to verify your credential settings work.

Select Adaptive Planning Sources to Import


The Adaptive Planning data source only imports from the sources you select.

1. Select the Planning Data Source you just created in the Component Library if it isn't already selected.
2. Select Manage Sources in the Actions pane.
3. Select the Sources folder in the Manage Sources dialog.
4. Select Add beneath the Sources folder, or right-click on the Sources folder and select Add to select a:

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 37/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Folder to create a container for organizing your sources


Account source
Attribute source
Cube Sheet and its levels, version parameter, and period range
Dimension
Level source
Modeled Sheet and its level and version parameter, and optional period parameter
Custom source from your selection of dimensions, account, levels, version, and period range from anywhere in your instance. See the Create
Parameters for Filters in Custom Sources section for more information. (Optional) you can also include account rollups and level rollups. Account
rollups are enabled by default for any preexisting or new Planning Data Sources. Level rollups are disabled by default.
Time source
Version source
5. Give the source a name indicating how you will use it and select Apply. For example, if this source contains an expense sheet for 2019, you could name it
"expense sheet 2019"
6. Repeat these steps to add all of the Adaptive Planning sheets and model elements you want to import. Each source becomes a separate table in the staging
area.
7. Select Save in the Actions Pane.

Create Parameters For Filters in Dimension Sources

When you select a dimension filter parameter, the import dimension data only returns the filtered dimensions. You can select:

Only the External Dimension parameter if your Planning credential is connected to an external instance.
The Shared Dimension parameter if your Planning credential is connected to a self instance.

When you select the version filter parameter, the import dimension data only returns the version filtered dimensions. You can select:

Only the External Version parameter if your Planning credential is connected to external instance.
The Shared Actuals Version parameter or shared Plan Version if your Planning credential is connected to self instance.

Note: We don't automatically select any dimension parameters.

To create parameters for dimension or version filters:

1. Select Edit Parameters in the Settings tab of your Dimension Source. You can also select shared parameters when your planning credential is connected
to your local instance. This enables you to reuse the available shared parameters for other data sources.
2. Right-click the Local folder and select Add in the Edit Parameters dialog.
Select External Version to choose the version you want to use.
Select External Level Single to choose a single level.
Select External Level Multiple if you want to choose more than one level.
Select External Account to choose the accounts you want to use.
Select Period Range to configure a fixed or dynamic period range.
3. Give your parameters names that let you understand their use.
4. Select Apply.

With local parameters created, you can now select them for the Account, Level, Version and Period Range filters in the Dimension Source.

Create Parameters For Filters in Custom Sources

When you create a Custom Source you select parameters for the Account, Level, Version, and Period Range in the Adaptive Planning instance your credentials
connect to. You need to create parameters before you can select them. Remember, these parameters relate to what you can select on the external Adaptive
Planning instance.

The word External you see when you create these parameters reminds you that you are creating them for an external Adaptive Planning instance. You can select
shared parameters when your planning credential is connected to your local instance. This enables you to reuse the available shared parameters for other data
sources.

1. Select Edit Parameters in the Settings tab for the Custom Source.
2. Right-click the Local folder and select Add in the Edit Parameters dialog.
Select External Version to choose the version you want to use.
Select External Level Single to choose a single level.
Select External Level Multiple if you want to choose more than one level.
Select External Account to choose the accounts you want to use.
Select Period Range to configure a fixed or dynamic period range.
3. Give your parameters names that let you understand their use.
4. Select Apply.

With local parameters created, you can now select them for the Account, Level, Version and Period Range filters in the Custom Source.

Import Structure From Adaptive Planning Sources


After you select the Adaptive Planning sheets and model elements to import, import their structure before importing their data.

Important: Importing structure requires a manual action, and will not run automatically when you select Import Data. If you don't import structure after it has
changed, you will see an error prompting you to Import Structure again to update the structure.

1. Select Import Structure and view the import progress.


2. Close the Import Structure dialog.
3. View the Data Components for the tables and columns you imported. All of the sources you chose from Manage Sources also automatically appear in the
staging area so you can preview the data they contain.
4. Save the data source.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 38/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Customize Table Settings

You can customize how data from each Adaptive Planning table imports.

1. Select the triangle next to the table name in the Staging Area.
2. Select Table Settings.
3. Change the settings. What you can choose varies depending on the table columns.
Data Import Mode:
All records replaced each time a data import is run
All received rows are new and so should be added
All records that fall within a period range transmitted (available only if a source sheet contains a Timespan)

Page Cube Sheet Data by Time Strata

If you set a period parameter you can page cube sheet import data by the time strata that appear in that cube sheet. For example, you can select from Year, Month,
or Quarter if those time strata exist for the sheet. Paging breaks apart the import request by time strata, making large cube sheet imports more efficient. The import
progress indicates the status of each page load.

Import Data From Adaptive Planning


Once the Adaptive Planning sheet and model element structures import, you can import their data.

1. Drag any additional Adaptive Planning tables you might want from the Data Components area into the Staging Area
2. Select Import Data in the Actions Pane. The data gets processed by your import filters and parameters.
3. Provide any needed values for parameter prompts that appear at run-time.
4. View the import progress for any import errors or messages.
5. Review the data in the Staging Area. Imported data remains there until you clear it by selecting Clear staging tables in the Actions pane.

After you import to the staging tables, you can load from staging into Adaptive Planning with a loader.

Specify the Source Version during run-time

You can change the External Version parameter at runtime to return filtered data and run Import Data with the updated filter value. Go to Manage Sources in
Actions pane to set the external Version parameter.

Example: When you set the Version filter for a Sheet source to be an External Version parameter and run Import Data, we populate the Plan Version drop down list
with versions that were available during the external version configuration.

Reimporting Dimension Values After Deleting One in the Dimension Admin

If you reimport dimension values after deleting one in the Dimension Admin, a row for the deleted dimension value appears in the staging area. The row contains a
hidden isDeleted column set to True in the staging table preview.

To get rid of this row, clear your staging table and reload it.

Automate Imports Using an Integration Task


With a data source set up, you can create an Integration Task that runs this loader on a schedule automatically.

Any Integration Task can have one or more loaders. A task can contain other tasks, like a Planning Data Loader, a Planning Account Loader, or a Scripted Loader.

Tip: Best Practice: Have separate Integration tasks for each loader.

If a task contains multiple loaders, parameters from each loader display in a prompt when the task runs. If there is a common or shared parameter in the loaders
within a task, the task prompts for the parameter only once. You can select to override parameter prompts.

For scheduled runs of the task, default values of the parameters are used.

1.1.2.12.2 | Steps: Set Up Adaptive Planning Data Source Credentials

To use Adaptive Planning as a data source within integration, you must create and select a credential. If the username entered in the credential can access a multi-
instance environment, you also select the Adaptive Planning instance you want to use. Passwords for Adaptive Planning credentials do not get stored within
integration. When you provide a valid Adaptive Planning username and password during authorization an internal token authenticates the user for data source use.

Note: If your instance is Workday-enabled and you synchronized users from Workday to Adaptive Planning, you must select a Workday Credential for your Planning
data source or create a Planning Credential by selecting Use Currently logged in user.

Prerequisites
Required Permissions: Data Designer.
Acquire the Adaptive Planning username and password
Verify the user exists and can log in to the Adaptive Planning instance you want to access.
Verify the user has the appropriate permissions in their instance to the areas in Adaptive Planning you need for the loaders you want to create and run.
Changing the username within an existing Adaptive Planning Data Source Credential can change the instance code the credential uses. Existing data
sources that use the credential could become invalid.

Navigation

From the nav menu, go to Integration > Design Integrations

Create an Adaptive Planning Credential

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 39/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

1. Expand the Credentials pane in the Component Library


2. Select Create New Credential.
3. Select Adaptive Credential and provide a unique name.
4. Select Create.
5. Select a Log level:
Off: Does not log errors. This is the default log level.
Error: Logs only errors.
Info: Logs errors and other authorization information.
Verbose: Logs all errors and messages for debugging and troubleshooting. This level of logging can create more log information than is typically
useful.
6. Select Authorize in the Actions pane.
7. Enter an Adaptive Planning username and password or you can authorize yourself with a single click.
8. Select Authorize.
9. Select the instance if this user exists in a multi-instance environment.
10. Save the credential.

Authorize the Current User


After creating your credentials, select Authorize from the Actions pane. You can choose yourself as the current authorized user by selecting Use Currently
logged in user. This enables you to connect to your local instance. A credential set up using this option is treated as a local connection allowing you to use shared
parameters in different Planning Data Source configurations. Ensure you have access to the data sources you need.

Use a Credential
Once you complete your Adaptive Planning credential, you can select it when you set up Adaptive Planning as a data source. Edit a Credential

1. Expand the Credentials pane in the Component Library.


2. Select the menu icon for the credential you want to edit.
3. Edit the credential settings.
4. Select Test connection in the Actions pane to verify these credentials work.
5. Save the credential.

Important: Changing the username within an existing Adaptive Planning Data Source Credential can change the instance code the credential uses. Existing data
sources that use the credential could become invalid.

Restrict Who Can Edit a Credential


1. Expand the Credentials pane in the Component Library.
2. Select the credential you want to restrict.
3. Select Grant edit permissions in the Actions pane.
4. Select the Groups, Roles, or Users who can edit this credential.
5. Save the permissions.

Delete a Credential
Important: Deleting a credential removes it from every data source using it. You must select another credential or create a new credential for all of those data
sources. If you don't provide credentials for the associated data sources, manual and scheduled loaders won’t run.

1. Expand the Credentials pane in the Component Library.


2. Select the credential you want to delete.
3. Select Show usages in the Actions pane to review a list of all of the data sources using this credential.
4. Select the menu icon in the Component Library for the credential you want to delete.
5. Select Delete.
6. Confirm that you want to delete.

1.1.2.13 | Steps: Set Up Microsoft Dynamics GP Data Sources

1.1.2.13.1 | Steps: Set Up Microsoft Dynamics GP Data Sources

You can use integration to import data from Microsoft Dynamics GP. Adaptive Planning supports Microsoft Dynamics GP version 2010, 2013, and 2015, but not the
older Microsoft Dynamics GP 10.0.

To set up a Microsoft Dynamics GP data source, follow these steps:

1. Access the Data Designer by going to Integration > Design Integrations.


2. In the Data Source folder in the Component Library on the right side of the screen, click Create New Data Source. The Create New dialog box appears.
3. Select Microsoft Dynamics GP as your data source type and enter the name for the data source.
4. Click Create. The center area of the screen displays your new data source's settings.
5. Enter the data source's information:

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 40/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Associated Agent: Select the agent from the drop-down list.


Server: Enter the server.
Port: Enter the port.
Instance: Enter the instance.
User name: Enter the user name for the Microsoft Dynamics GP account.
Password: Enter the password associated with the user name.
Company Databases: (Optional) Enter the Microsoft Dynamics GP companies to import, separated by semicolons. Leaving this field blank imports
all companies.
Log level: Select a log level from the drop-down list to specify the detail for the logging for this data source. Your options are:
Error: Only logs errors.
Info: Logs all basic information, such as when the data source was updated.
Verbose: Provides very detailed information about all phases and actions. (This level is used primarily for debugging or auditing, as it may
produce more log information than is practical for typical use.)
6. Click Save on the Actions menu.

You can test the connection information in the new agent by clicking Test connection in the Actions menu. The system tries to connect to Microsoft Dynamics GP
using the information in the data source fields. If the system can connect to your Microsoft Dynamics GP account, click OK. If there are connection problems,
contact support.

When you can connect to Microsoft Dynamics GP, you're ready to import the data structure. This shows you the tables and columns in the database.

To import the Microsoft Dynamics GP structure, do the following:

1. Click Import structure in the Actions menu. The tables and columns appear in the Data Components menu.
2. Click Close to close the Import Structure dialog box.
3. Click Save on the Actions menu.

To remove specified characters from Input Text Streams in Microsoft Dynamics GP:

Refer to Remove Specified Characters from Input Text Streams in JDBC and Microsoft Dynamics GP .

Adding Tables to a Microsoft Dynamics GP Data Source


After you have imported the Microsoft Dynamics GP structure, you are ready to specify the information you want to import. The Tables to Import section of the
screen lets you configure the data imported from the Microsoft Dynamics GP account.

To specify the tables to import from the Microsoft Dynamics GP account, follow these steps:

1. Expand the entry for the data source in the Data Components menu. Data components with a slash through their icon are not currently included for import.
2. Drag and drop the tables you want to import to the Tables to Import section in the center of the screen. As you drag each table to the Tables to Import
section, a tab appears for the table and information from the Spreadsheet account appears in the Tables to Import section letting you see the type of
information you've added. Each table's tab also has a drop-down menu, which you can access by clicking the arrow next to its name.You can extend the
Account Summary table by including extra columns from the base tables, custom SQL expressions, or subquery columns.

If the Microsoft Dynamics GP account includes multiple companies, the data source will also include a union table called ALL.Adaptive Account Summary.

Managing Columns
If a table you are working with has a large number of columns, you can use the Manage Columns to do quick edits for which columns to import. The Manage
Columns dialog box displays the columns in a table so you can then check or uncheck columns for importing.

To manage columns for importing, follow these steps:

1. Click the arrow on the tab to the right of the table name. A floating menu with several options appears.
2. Click Manage Columns on the floating menu.
3. Check the box next to a column to import it. When you check a column, the column also appears within the preview window after the popup contents are
saved. Unchecking a column removes the column from the preview window. You can not change the import status on system-generated fields such as
isDeleted. You can also change the import status on individual columns by selecting column properties and setting the property or by dragging and dropping
the columns onto the designer.

Customizing the Tables


For each table, you can customize the way in which data is imported.

To customize the table settings, follow these steps:

1. Click the arrow on the tab to the right of the table name. A floating menu with several options appears.
2. Click Table Settings on the floating menu. The Table Settings dialog box appears.
3. Enter the table settings:

Data Import Filter: Use this to enter a SQL expression that filters or formats information being imported. The SQL filter is applied before data is
extracted from the database to reduce the amount of data that needs to be imported, giving you an additional level of control for which data is
brought into the staging area. Click the field to display the Edit SQL Expression dialog box, shown earlier. (The filter you enter here is applied to the
actual data in the database rather than the preview data in the staging area.) Not all data sources support the same level of SQL filtering capability.

4. Click Apply to apply the settings.


5. Repeat steps 1-3 for each table.
6. Click Save to save the settings in the data source.

Setting Column Options


While using the Tables to Import section, you can see a preview of the data as it is in the data source or as it is in the staging area after it has been imported. Select
Microsoft Dynamics GP or Staging table from the drop-down to preview data.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 41/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

You can change the options for each column by mousing over its heading and then clicking the drop-down menu next to its name. These options are:

Sort Ascending: Sort the entire table based on this column in ascending order.
Sort Descending: Sort the entire table based on this column in descending order.
Column Settings: This dialog is used to change the properties of the column within the staging table.
Name: The name of the column, displayed in the header.
Column Type: The type of data used in the column.
Convert Column Type: Select the new type from this drop-down menu.
Exclude column from import: Select this to remove this column from the data being imported.
Delete custom column: Select this to delete the column. (Available for custom columns only.)

Downloading Data from a Staging Table


You can download data from a single staging table.

To download data from a single staging table, follow these steps:

1. Click the down arrow in a table heading in the Tables to Import section.
2. Select Download Data.
3. At the prompt This operation will send an email with a url to download the data, click Send. Adaptive Planning sends an email containing a URL to the email
account associated with the data designer.
4. Open the email and click the URL. The data is downloaded in .csv format.

Using the Advanced Filter


Below the Source drop-down menu, you can click Advanced Filter to reveal options for filtering the data in the Tables to Import preview area. The Advanced Filter
provides tools to view and browse a subset of the data within a staging table. By changing filter properties, you can change the view of the data shown within the
preview window without changing the data in the staging area.

The preview area is specifically for previewing a small portion of the data in the staging area. You can explore the data that is available from the Spreadsheet
account and verify that you are getting the data you expect by examining the staging area. (Filters set in the preview function do not affect the actual data in the
staging area.) The Advanced Filter lets you experiment with the data in the preview to set up a data import filter.

The options for the Advanced Filter are:

Distinct Rows: Check this box to hide duplicate rows.


Max Rows: Limit the number of rows displayed in the preview area by entering a number in the text box.
Columns: Check or uncheck columns in this drop-down menu to show or hide the columns displayed.

Note: Removing a column from this list does not remove the column from the import list.

SQL Filter: Click the large text box to display the Edit SQL Filter dialog box.

Enter a SQL expression in the field. This is a filter to restrict the rows being previewed. Click Apply to automatically check the SQL syntax of the filter. (If there are
any errors, the error is indicated in the expression.) For detailed SQL syntax help, you can click online help in the Notes section. The expression you entered
appears in the Advanced Filter section of the preview window.

Click Remove Filter (next to the Source drop-down menu) to clear all advanced filter settings.

Note: As part of the table customization process, you can also create join tables and custom columns using SQL expressions.

Clearing the Staging Area


Information remains in the staging area until you clear it.

To clear data from the staging area, do the following:

1. Click Clear staging tables in the Actions menu. The staging area for all the tables in the data source is cleared.

1.1.2.13.2 | Configure Interoperability with MS SQL Server Integrated Security

While connecting to a MS SQL Server database through the Microsoft Dynamics GP preconfigured adapter, there may be a requirement to interoperate with the MS
SQL Server Integrated Security feature. For integration to work with the Integrated Security feature:

1. Configure the Log On property of the Data Agent service to use a domain user (there must be a \ in the account name). The Password and Confirm
Password fields should contain the password values for the configured domain user.
2. In the Microsoft Dynamics GP adapter configuration in the Data Designer, enter \ in the Username field and welcome in the Password field. These values
trigger integration to use the credentials entered in the data agent service Log On credentials to connect to the MS SQL Server database. The values
entered within the data designer will not be used to connect to the source database.

1.1.2.13.3 | Reference: Microsoft Dynamics GP Data Source Tables

Setting up a Microsoft Dynamics GP Data Source describes the basics of configuring a data source using the preconfigured adapter for Microsoft Dynamics GP.
This topic provides additional technical information for data designers who are setting up the Microsoft Dynamics GP preconfigured adapter. Integration supports
Microsoft Dynamics GP version 2010, 2013, and 2015, but not the older Microsoft Dynamics GP 10.0.

The key differentiator for using Microsoft Dynamics GP as a data source is that it supports multiple companies. When setting up a Microsoft Dynamics GP data
source, you can enter the companies you want to import in the Company Databases field in the data source settings tab and separate them with semicolons.
Leaving this field blank imports all of the companies.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 42/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Supported Microsoft Dynamics GP Tables


The Microsoft Dynamics GP preconfigured adapter brings over the metadata for the tables below. The tables marked with Yes are enabled by default. For enabled
tables, integration brings over the most common fields by default. The user can then edit the field selection as desired.

System tables are indicated with an asterix:

Physical Name Friendly Name Enabled by default Notes

GL00100 Account Master Yes

GL00102 Account Category Master Yes

GL10110 Account Current Summary Master

GL10111 Account Summary History

GL20000 Year-to-Date Transaction Open Yes

GL30000 Account Transaction History Yes

SY40100 Period Setup Yes

SY40101 Period Header Yes

SY01500 Company Master * Yes

$ADP_ACCOUNTSUMMARY - Account Summary Yes This is a table created by the Agent. It is not a native DB table from GP.

GL00105 Account Index Master

GL00200 Budget Master Header

GL00201 Budget Master Detail

GL40200 Segment Description Master

DTA10100 MDA Transaction Groups

DTA10200 MDA Transaction Codes

GL01201 Budget Summary Master View

GL11110 Open Year Summary Master

GL11111 Historical Year Summary Master

SY02200 Posting Journal Destinations

SY02300 Posting Settings

SY03300 Payment Terms Master

SY04200 Comment Master

TX00101 Tax Schedule Header Master (header)

TX00102 Tax Schedule Master (detail)

TX00201 Tax Detail Master

TX30000 Tax History

SY003001 Account Definition Header *

SY00302 Account Definition Detail *

SY00801 Resource Activity *

SY01400 Users Master *

SY01402 System User Defaults *

SY00800 Batch Activity *

SY60100 User Access *

SOP10100 Unposted/Work Transactions (header)

SOP10200 Unposted/Work Transactions (line detail)

SOP10101 Commissions Work and History

SOP10102 GL Distributions Work and History

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 43/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Physical Name Friendly Name Enabled by default Notes

SOP10103 Payment Work and History

SOP10104 Process Holds Work and History

SOP10105 Sales Taxes Work and History

SOP10106 User Defined Work and History

SOP10107 Tracking Numbers Work and History

SOP10201 Serial/Lot Work and History

SOP10202 Line Comment Work and History

SOP30200 Historical Transactions (header)

SOP30300 Historical Transactions (line detail)

SOP60100 SOP-POP Link

SOP60300 Customer Item Numbers

GL10000 Transaction Work/Unposted (header)

GL10001 Transaction Work/Unposted (line detail)

Additional Considerations
These are some additional considerations for accessing Microsoft Dynamics GP data: Simple column filters with comparison and logic expressions may be used
when querying Microsoft Dynamics GP.

You can not use operators (such as +, -, /, *, $, ||), scalar functions, nor case statements.
The configuration can be further customized via advanced configurations available to Professional Services.
For information on the interoperability of MS SQL Server's Integrated Security with integration, see Interoperability of MS SQL Server's Integrated Security.

1.1.2.14 | Steps: Set Up Scripted Data Sources

1.1.2.14.1 | Steps: Set Up Scripted Data Sources

Scripted data sources let you solve complex, custom data extraction and transformation scenarios. You can write Kettle ETL scripts to specify information sources
to extract data from and then apply customer-specific business rules to the extracted data. Before you set up a scripted data source, you must have Data Agent
installed on an on-premises Windows server in the network. See Using Data Agents for more information.

Note: Scripted data sources are for advanced ETL implementers who have experience writing Pentaho Kettle scripts and using the Spoon UI. For more information
about Pentaho Kettle and Spoon, including extensive documentation and tutorials, please see the Pentaho wiki at http://wiki.pentaho.com.

To set up a scripted data source:

1. Access the Data Designer by going to Integration > Design Integrations.


2. In the Data Source folder in the Component Library on the right side of the screen, click Create New Data Source. The Create New dialog box appears.
3. Select Scripted Data Source as the data source type and enter a name for the data source.
4. Click Create. The center area of the screen displays your new data source's settings and other information.
5. Enter the data source's information:
Associated Agent: Select the agent from the drop-down list.
Entry Point: Select an entry point from the drop-down list. The entry point is an ETL script on the system. You can edit this later.
Log Level: Select a log level from the drop-down list to specify the detail for the logging for this data source. Your options are:
Error: Only logs serious errors.
Info: Logs all basic information, such as when the data source was updated.
Verbose: Provides very detailed information about all phases and actions. (This level is used primarily for debugging or auditing, as it may produce
more log information than is practical for typical use.)
Source URI: Enter the URIs your scripts connect to separated by a semicolon (;). This field is only used to help you identify and document the
underlying source systems your scripts connect to and is not used by the software for any other purpose.
6. Click Save on the Actions menu.

Starting Spoon
After you have saved the basic information for the scripted data source, you can start Spoon, the ETL script editor, work with the script, and add tables to the
scripted data source.

To view and edit the script:

1. From the Windows Start Menu, click All Programs.


2. Open the Workday Adaptive Planning Data Agent folder. For data agent versions 7.1.44 and older, open the Adaptive Data Agent folder.
3. Click Adaptive Script Editor. After a Pentaho splash screen and a startup tip, the Spoon screen appears.
4. Enter your Adaptive Planning login email and password and click Login Now/Refresh Tenant List. If you synchronized users from Workday, see Log In to
the Data Agent and Script Editor with Workday Credentials.

5. Select the tenant from the drop-down. There is usually only one tenant. Spoon refreshes the tenant list.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 44/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

6. Select the agent you are using for this data source from the drop-down. Spoon refreshes the agent list.
7. Select the scripted data source you just created from the drop-down in Edit Script.

Now that you're logged in and have told Spoon which agent and data source you are working on, you can start editing the script.

1. Click Data Integration in the upper-right corner of the Spoon screen. The Integration perspective of Spoon appears.
2. Select File > Open and browse to the script you want to view and edit, then click OK. The Scripted Data Source sample scripts included with Integration
give information about script structure and database connections that may be useful to you as you develop your own scripts.
3. Edit the script as appropriate, then save it.
4. Click Adaptive in the upper right to return to the Adaptive Perspective. The Spoon screen displays again.
5. Click Publish Agent Changes. This pushes the script back up to the Adaptive Planning server, where it is stored in the script repository.

The following data import modes are supported. The settings can vary by table.

All records are replaced each time the data is imported.


Remote Agent scans all source records and transmits the changed records each time data must be synchronized.
All records that fall within a period range are transmitted.

Adding Tables and Columns to a Scripted Data Source


With the script in place, you can add tables and columns to your data source in integration.

Note: It's essential that the columns defined in the data source must match the columns defined in the ETL script exactly, or else the data load will fail.

To add tables to a scripted data source, follow these steps:

1. Expand the Custom Table entry in the Data Components menu.


2. Drag and drop the Scripted Table item to the Tables to Import area. When you drop this item, the Scripted Tables dialog box appears.
3. Enter the table settings:
Name: Enter the name for the table.
Data Import Mode: Select one of the import modes:
All records replaced each time a data import is run: This is the default. Whenever you import data, all records in the staging area are
replaced.
Remote cache used to identify and send changed records on import: Integration looks at the staging area and compares it with the
records in the spreadsheet or database and imports only the changed records.
All records that fall within a period range transmitted: When you select this mode, you are prompted to enter a period range and a
column integration applies the range to. Any records that meet this selection criterion are imported.
Data Import Filter: Use this to enter a SQL expression that filters or formats information being imported. The SQL filter is applied before data is
extracted from the database to reduce the amount of data that needs to be imported, giving you an additional level of control for which data is
brought into the staging area. Click the field to display the Edit SQL Filter dialog box, described earlier. (The filter you enter here is applied to the
actual data in the database rather than the preview data in the staging area.)
4. Click Apply to apply the settings.

To add columns to a scripted data source, follow these steps:

1. Expand the Custom Column entry in the Data Components menu.


2. Drag and drop one of the column types to the Tables to Import area. When you drop this item, the Custom Columns dialog box appears.
3. Enter the columns settings:
Name: Enter the name for the column. Column names must match the column names as specified in the script in Spoon exactly, including
capitalization and embedded spaces.
Column Type: A display-only field that identifies the column type.
Convert Column Type: You can not change this value except for SQL columns. For SQL columns, you can select any of half a dozen conversion
options.
4. Click Apply to apply the settings.

Managing Columns
If a table you are working with has a large number of columns, you can use the Manage Columns to do quick edits for which columns to import. The Manage
Columns dialog box displays the columns in a table so you can then check or uncheck columns for importing.

To manage columns for importing:

1. Click the arrow on the tab to the right of the table name. A floating menu with several options appears.
2. Click Manage Columns on the floating menu. The Manage Columns dialog box appears.
3. Check the box next to a column to import it. When you check a column, the column also appears within the preview window after the popup contents are
saved. Unchecking a column removes the column from the preview window. You can't change the import status on system-generated fields such as
isDeleted. You can also change the import status on individual columns by selecting column properties and setting the property or by dragging and
dropping the columns onto the designer.

Customizing the Tables


For each table, you can customize the way in which data is imported.

To customize the table settings, follow these steps:

1. Click the arrow on the tab to the right of the table name. A floating menu with several options appears.
2. Click Table Settings on the floating menu.
3. Click Apply to apply the settings.
4. Repeat steps 1-3 for each table.
5. Click Save to save the settings in the data source.

Setting Column Options

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 45/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

While using the Tables to Import section, you can see a preview of the data as it is in the data source or as it is in the Staging area after it has been imported. You
can change the options for each column by hovering over its heading and then clicking the drop-down next to its name. These options are:

Sort Ascending: Sort the entire table based on this column in ascending order.
Sort Descending: Sort the entire table based on this column in descending order.
Column Settings: This dialog is used to change the properties of the column within the staging table.
Name: The name of the column, displayed in the header.
Column Type: The type of data used in the column.
Convert Column Type: Select the new type from this drop-down menu.
Exclude column from import: Select this to remove this column from the data being imported.
Delete custom column: Select this to delete the column. (Available for custom columns only.)

Downloading Data from a Staging Table


You can download data from a single staging table.

To download data from a single staging table:

1. Click the down arrow in a table heading in the Tables to Import section.
2. Select Download Data.
3. At the prompt, This operation will send an email with a url to download the data, click Send. Adaptive Planning sends an email containing a URL to the
email account associated with the data designer.
4. Open the email and click the URL. The data downloads in .csv format.

Using the Advanced Filter


Below the Source drop-down menu, you can click Advanced Filter to reveal options for filtering the data in the Tables to Import preview area. The Advanced Filter
provides tools to view and browse a subset of the data within a staging table or from the script. (When you select Script from the Source drop-down, the preview
request is sent to the agent for processing.) By changing filter properties, you can change the view of the data shown within the preview window without changing
the data in the staging area.

The preview area is specifically for previewing a small portion of the data in the staging area. You can explore the data that is available from the spreadsheet and
verify that you are getting the data you expect by examining the staging area. (Filters set in the preview function do not affect the actual data in the staging area.)

The options for the Advanced Filter are:

Distinct Rows: Check this box to hide duplicate rows.


Max Rows: Limit the number of rows displayed in the preview area by entering a number in the text box.
Columns: Check or uncheck columns in this drop-down menu to show or hide the columns displayed.

Note: Removing a column from this list does not remove the column from the import list.

SQL Filter: Click the large text box to display the Edit SQL Filter dialog box (described earlier), where you can enter a SQL filter to restrict the rows being
previewed. Click Apply to automatically check the SQL syntax of the filter. (If there are any errors, the error is indicated in the expression.) For detailed SQL
syntax help, you can click online help in the Notes section.

Click Remove Filter (next to the Source drop-down menu) to clear all advanced filter settings.

Note: As part of the table customization process, you can also create join tables and custom columns using SQL expressions.

Adding and Editing Parameters


You can use parameters to pass information to the underlying Kettle script. These parameters can be set with a default value. The script can then use the
parameters to control the transformations and filtering in the ETL scripts.

To add a parameter:

1. Click the Edit Parameters icon to the right of the Parameters heading. The Parameters Editor dialog box appears.
2. Click the folder in the left pane that you want to add a parameter to. The folder name appears in the right pane.
3. Click Add and select one of the following options from the floating menu:
Folder: Create a new folder.
Boolean: Create a boolean parameter (true/false).
Integer: Create an integer parameter.
Text: Create a text parameter.
Password: Create a password parameter.
Period Range: Create a period range parameter (from/to dates).
Dimension: Create a dimension.
Actuals Version: Create an Actuals Version.
Plan Version: Create a Plan Version.
4. In the right pane, enter the information for the option you selected.
5. Click Apply.

You can edit individual parameters or the folders by double-clicking the item you want to edit in the left pane and making changes to the information in the fields,
then clicking Apply to save your changes.

You can also create folders to group parameters, then drag parameters to the folder.

Importing Data with a Scripted Data Source


When you have set up and saved your scripted data source, you can import data.

To import data with a scripted data source:

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 46/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

1. Click Import data in the Actions menu. The selected data is filtered by the ETL scripts, as well as any SQL expressions, and loaded into the staging area.
You can preview the data in the staging area.

Information remains in the staging area until you clear it or until a subsequent data load causes it to be cleared per the active Data Import Mode setting.

To clear data from the staging area:

1. Click Clear staging tables in the Actions menu. The staging area for all the tables in the data source is cleared.

1.1.2.14.2 | Import Version Parameters into Pentaho as Dimension Parameters

When a Scripted Loader or Scripted Data Source includes parameters, those parameters are normally passed to Pentaho as environment variables. Version
parameters cannot be passed to Pentaho as environment variables. You must pass version parameters to the agent as dimension parameters. Once a dimension
parameter for a version is created, you can over ride it at runtime, making it possible to choose from a list of versions.

1. Create a new Dimension Parameter within the Scripted Data Source.

2. Give the parameter a display name like Planning Version to Load.


3. Select the member to be within the chosen dimension. Selecting the top level node of the Version dimension is the same as selecting the Default planning
version dimension value.

4. The data designer can associate the dimension parameter with specific scripted loaders and specific scripted data sources by dragging the parameter into
the Parameters area of the canvas for them.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 47/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

5. If a scripted data source has a dimension parameter associated with it, when a user clicks Import Data in the Data Designer screen, they will be prompted
with the selected member from step 3. The default value can be overridden by choosing a different version. The same behavior exists on the Integration
Operator launch task screen within Integration.

if the selected dimension is the Planning Version then a special value [Default Version] will be included. This means use the planning application's
currently selected default version. The folder style members from the dimension tree cannot be selected if the Planning Version is selected.
6. When the Pentaho Kettle script is executed, the kettle environment will have 3 variables available for each of the Dimension Parameters: <display
name>.DimensionIsSelected, <display name>.DimensionName, <display name>.MemberName. The Pentaho Kettle script can make use of these in any
way that is applicable to the script.

Dimension Version Parameter Within Scripted Data Source Example


In the example below, Planning Version to Load is the display name of the parameter as configured in the data designer in step 2.

Planning Version to Load.MemberName: The display name of the member selected.


If the root level member (the dimension itself) is selected, then this value will be blank.
Planning Version to Load.DimensionName: The display name of the dimension associated with the parameter.
Planning Version to Load.DimensionIsSelected: Will have the value of true or false, and indicates whether the selected member is the root level member,
which is the dimension itself.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 48/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

A common usage of the version dimension value would be on an Adaptive Planning Output step in Spoon, as shown below.

1.1.2.15 | Reference: SQL Expressions

You can use SQL expressions for a variety of data integration purposes. The SQL language features supported vary according to the system against which the SQL
statement will be executed. For example:

Queries against data that has been imported to staging may make use of all SQL language features.
Queries directed to external systems, such as NetSuite, may make use of SQL filters and support a reduced set of features.

For data source type specific limitations and usage notes see these sections later in this document:

NetSuite SQL filters


Spreadsheet SQL filters
JDBC SQL filters
Salesforce SQL filters
Intacct SQL filters
Microsoft Dynamics GP SQL filters

Literal Values
Embedded constants such as fixed DateTime values or unchanging strings/numbers in an expression using literal values.

Data Type Syntax Description Example Usage

Text '*****' Text string surrounded by single quotes. To include a single quote within the text it must be 'It''s hot outside'
escaped using a second single quote

Integer # Entered exactly as it should appear 999

Float #.# Should always contain a period (.) within the float value, even if the fractional part is 0 7.7

DateTime TIMESTAMP Keyword TIMESTAMP followed by a single quoted, constant length, representation of the date TIMESTAMP '20130102
'*****' formatted yyyy-mm-dd hh:mm:ss.SSS 03:04:05.006'

Date DATE '*****' Keyword DATE followed by a single quoted, constant length, representation of the date DATE '20130102'
formatted yyyy-mm-dd

Boolean TRUE (or Keyword TRUE or keyword FALSE FALSE


FALSE)

Operators
Numeric operators perform mathematical operations on expressions, values or columns that are numeric (Integer, Float, Bit). Text operators combine two or more
Text expressions, values or columns.

Applies to Operator Description Example Uage

Numbers + Adds two numeric values together MyNumericColumn + 1000

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 49/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Applies to Operator Description Example Uage

Numbers - Subtracts the right hand value from the left hand side MyNumericColumn 1000

Numbers / Divides the left hand side by the right hand side MyNumericColumn / 1000

Numbers * Multiplies two values together MyNumericColumn * 1000

Text || Concatenates two text values together MyTextColumn || ' a suffix'

Comparison and Logic Expressions


These expressions resolve to 1 (true) or 0 (false) and can be used in table join expressions or as the [expr] in CASE WHEN [expr] THEN [value] END comparisons.
Comparison and Logic expressions can operate on Text, Numeric or DateTime columns

Applies To Syntax Description Example Usage

Any = Checks if two values or expressions are equal MyColumn1 = MyColumn2

Any <> Checks if two values or expressions are not equal MyColumn1 <> MyColumn2

Any IS NULL Checks if a value or expression is NULL. NULL is not equivalent to an empty MyColumn1 IS NULL
string

Any IS NOT Checks if a value or expression resolves to a nonNULL value MyColumn1 IS NOT NULL
NULL

Any < Checks if the left value or expression is less than the right value or expression MyColumn1 < MyColumn2

Any <= Checks if the left value or expression is less than or equal to the right value or MyColumn1 <= MyColumn2
expression

Any > Checks if the left value or expression is greater than the right value or MyColumn1 > MyColumn2
expression

Any >= Checks if the left value or expression is greater than or equal to the right value MyColumn1 >= MyColumn2
or expression

Any IN Checks if a value or expression is contained within a set MyColumn1 IN (1, 2, 3)

Any NOT IN Checks if a value or expression is not contained within a set MyColumn1 NOT IN (1, 2, 3)

Text LIKE Checks if a text value or expression matches a pattern. The % character MyColumn1 LIKE '%Apple'
operates as a wildcard

Text NOT Checks if a text value or expression does not match a pattern. The % MyColumn1 NOT LIKE '%Apple'
LIKE character operates as a wildcard

Comparisons AND Evaluates two comparisons and will return true only if both expressions are MyColumn1 >= MyColumn2 AND
true MyColumn1 IN (1, 2, 3)

Comparisons OR Evaluates two comparisons and will return true if either expression is true (MyColumn1 >= MyColumn2) OR
MyColumn1 IN (1, 2, 3)

Scalar Functions
Scalar functions take input values and return a single value

Syntax Description Example Usage

Bit Functions

CAST(expr AS BIT) Converts a Text/Float/Integer value to a Bit (0 or 1) value CAST('1' AS BIT) => 1

Integer Functions

CAST(expr AS INTEGER) Converts a Text/Float/Bit value to an Integer value CAST('2' AS INTEGER) => 2

TIMESTAMPDIFF([datepart] FROM Retrieves the number of [datepart]'s (DAY) from [datetime_expr1] TIMESTAMPDIFF(DAY FROM
[datetime_expr1] TO [datetime_expr2]) to [datetime_expr2] TIMESTAMP '2013-02-01 00:00:00.000'
TO TIMESTAMP '20130210
00:00:00.000') => 9

DATEDIFF([datepart] FROM [date_expr1] Retrieves the number of [datepart]'s (DAY) from [date_expr1] to DATEDIFF(DAY FROM DATE '2013-02-
TO [date_expr2]) [date_expr2] 01' TO DATE '2013-02-10') => 9

EXTRACT([datepart] FROM Retrieves the [datepart] EXTRACT(MONTH FROM DATE '2013-


[datetime_expr]) (YEAR/MONTH/DAY/HOUR/MINUTE/SECOND) from the 02-01') => 2
[datetime_expr]

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 50/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Syntax Description Example Usage

LENGTH([text_expr]) Retrieves the length of the [text_expr] LENGTH('Hello') => 5

POSITION([find_text_expr] IN Retrieves the first index of [find_text_expr] in the POSITION('at' IN 'hat') => 2
[search_text_expr]) [search_text_expr]. The first character is 1.

POSITION([find_text_expr] IN Retrieves the first index of [find_text_expr] in the POSITION('a' IN 'a hat' FROM 1) => 4
[search_text_expr] FROM [start]) [search_text_expr] after the [start] index (a [start] of 1 means find
the last). The first character is 1.

Float Functions

CAST(expr AS FLOAT) Converts a Text/Integer/Bit value to an Float value CAST('1.01' AS FLOAT) => 1.01

Text Functions

CAST(expr AS NVARCHAR) Converts a Float/Integer/Bit value to a Text value CAST(1.01 AS NVARCHAR) => '1.01'

TRIM([text_expr]) Removes leading and training spaces from [text_expr] TRIM(' xxx ') => 'xxx'

SUBSTRING([text_expr] FROM Extracts a portion of [text_expr] from position [start_int_expr]. The SUBSTRING('aaabbbccc' FROM 3) =>
[start_int_expr]) first character is at position 1 'abbbccc'

SUBSTRING([text_expr] FROM Extracts [len_int_expr] characters from [text_expr] from position SUBSTRING('aaabbbccc' FROM 3 FOR
[start_int_expr] FOR [len_int_expr]) [start_int_expr]. The first character is at position 1 3) => 'abb'

Replaces all instances of [text_expr_1] in [text_expr_3] with the REPLACE('z' WITH 'a' IN 'zba') => 'aba'
REPLACE([text_expr_1] WITH
value [text_expr_2].
[text_expr_2] IN [text_expr_3])

only available for custom SQL columns

Replaces all instances that match the regular expression REGEX_REPLACE('[0-9]' WITH 'a' IN
REGEX_REPLACE([text_expr_1] WITH
[text_expr_1] in [text_expr_3] with [text_expr_2]. 'a7b5c') => 'aabac'
[text_expr_2] IN [text_expr_3])

only available for custom SQL columns

Delimit a string by a specific character and select a value from SPLIT_PART('Plan|1991|Tennis', '|', 2)
SPLIT_PART([string],[delimiter],[part])
that set by index. This extracts the nth occurrence of a pattern =>'1991'
only available for custom SQL columns and returns it. The first element starts at 1. If the index is out of SPLIT_PART('Plan|1991|Tennis', '/', 1) =>
bounds, the expression returns an empty string. 'Plan|1991|Tennis'
SPLIT_PART('Plan|1991|Tennis', '/', 2) =>
''

Ensures value is compatible with the planning Account Code field. TO_ACCOUNT_CODE('A - 860+') =>
TO_ACCOUNT_CODE([text_expr_1])
Removes all spaces and then replaces any non-alphanumeric 'A_860'

only available for custom SQL columns characters with underscores and truncates values over 2048
characters long

DateTime Functions

CAST([text_expr] AS TIMESTAMP FROM Converts a Text value with a known structure/format to a CAST('20130102' AS TIMESTAMP
'[timestamp_format]') DateTime value. Only certain [timestamp_format] values are FROM 'yyyy-mm-dd') => TIMESTAMP
allowed (see below) '2013-01-02 00:00:00.000'

TRUNCATE_TIMESTAMP([datetime_part] Truncates DateTime [datetime_expr] to a Gregorian calendar TRUNCATE_TIMESTAMP(MONTH


FROM [datetime_expr]) [datetime_part] of YEAR/MONTH/DAY/HOUR FROM TIMESTAMP '2013-11-22
12:13:14.015') => TIMESTAMP '2013-11-
01 00:00:00.000'

Date Functions

CAST([text_expr] AS DATE FROM Converts a Text value with a known structure/format to a Date CAST('2013-01-02' AS DATE FROM
'[date_format]') value. Only certain [date_format] values are allowed (see below) 'yyyy-mm-dd') => DATE '2013-01-02
00:00:00.000'

TRUNCATE_DATE([date_part] FROM Truncates Date [date_expr] to a gregorian calendar [date_part] of TRUNCATE_DATE(MONTH FROM
[date_expr]) YEAR/MONTH/DAY/HOUR DATE '2013-11-22') => DATE '2013-11-
01 00:00:00.000'

Time Constants
Integration supports two constants related to the current date and time that can be used in SQL expressions:

Syntax Description Example Usage

CURRENT_TIMESTAMP Gives current DateTime and can be used in all places where EXTRACT(YEAR FROM CURRENT_TIMESTAMP)
DateTime objects are used

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 51/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Syntax Description Example Usage

CURRENT_DATE Gives current Date and can be used in all places where Date (DATEDIFF(DAY FROM CURRENT_DATE TO
objects are used [column_reference])) <= 30

CASE Statements
Case statements are used to choose a value based on other values, much like if statements in many languages

Syntax Description Example Usage

CASE WHEN [logic_expr1] THEN [result_expr1] WHEN [logic_expr#] THEN The [result_expr] from the first [logic_expr] CASE WHEN 1>2 THEN 'x'
[result_expr#] ELSE [result_expr_def] END that returns true is returned ELSE 'y' END => 'y'

CASE [expr] WHEN [expr1] THEN [result_expr1] WHEN [expr#] THEN The [result_expr] from the first [expr#] that CASE 2 WHEN 1 THEN 'x'
[result_expr#] ELSE [result_expr_def] END equals [expr] is returned ELSE 'y' END => 'y'

COALESCE Statements
Coalesce evaluates arguments in order and returns the first non-null value from a defined argument list. Coalesce can be used in an SQL column, SQL filters in
loaders, and in join expressions. Coalesce cannot be used in the import filter in a staging table.

Syntax Description Example Usage

COALESCE ([expr]) Returns the first non-null in [expr] COALESCE (NULL,NULL,20,NULL,NULL,10) => 20

Table Relationship Expressions


When joining tables using 'Table Relationship' items a Join Expression must be specified. It is possible that the two tables being joined will have columns with the
same name. In such cases columns from the primary table can be qualified using 'P.' (e.g. P."MyColumn"), and the related table using 'R.' (e.g. R."MyColumn")

The following table details [timestamp_format] values that can be used in the CAST([text_expr] AS TIMESTAMP FROM '[timestamp_format]') function

Format

'mon dd yyyy hh:mitt'

'mm/dd/yyyy'

'yyyy.mm.dd'

'dd/mm/yyyy'

'dd.mm.yyyy'

'dd-mm-yyyy'

'dd mon yyyy'

'mon dd yyyy'

'mon dd yyyy hh:mi:ss:mmmmmmtt'

'mm-dd-yyyy'

'yyyy/mm/dd'

'yyyymmdd'

'dd mon yyyy hh:mi:ss:mmmmmm'

'yy-mm-dd hh:mi:ss'

'yy-mm-dd hh:mi:ss.mmmmmm'

'yy-mm-ddThh:mi:ss.mmmmmm'

Data Source Specific Data Import Filter SQL Limitations and Usage Notes
Data source specific Data Import Filter SQL limitations and usage notes are detailed below.

NetSuite Data Source Tables

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 52/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

When querying NetSuite directly (as opposed to querying records imported into staging from NetSuite) filter expressions are limited to the capabilities exposed by
NetSuite via Web Services.

Simple column filters with Comparison and Logic Expressions may be used when querying NetSuite.
Filters can be ANDed together but cannot be ORed together.
Operators (e.g. +, , /, *, $, ||) can not be used.
Scalar Functions can not be used.
Case Statements can not be used.
In order to filter on a custom column, the custom column must be marked for import.
Some column filters require specific NetSuite features to be enabled in order for the filter to work.
Some tables and some columns do not support filtering.

Spreadsheet Data Source Tables

When querying a spreadsheet file directly (as opposed to querying records imported into staging from a spreadsheet) the filter expression can only specify the
"Upload Id" of the file to be queried. If an "Upload Id" is not specified then data from the most recently imported file is displayed.

JDBC Data Source Tables

Simple column filters with Comparison and Logic Expressions may be used when querying JDBC data sources.
Operators (e.g. +, , /, *, $, ||) can not be used.
Scalar Functions can not be used.
Case Statements can not be used.

Salesforce Data Source Tables

Simple column filters with Comparison and Logic Expressions may be used when querying Salesforce.
Operators (e.g. +, , /, *, $, ||) can not be used.
Scalar Functions can not be used.
Case Statements can not be used.

Intacct Data Source Tables

Simple column filters with Comparison and Logic Expressions may be used when querying Intacct. This includes IN(..), IS NULL, IS NOT NULL, LIKE and
NOT LIKE statements.
Intacct does not support operator <>, instead use NOT IN() comparison.
Operators (e.g. +, , /, *, $, ||) can not be used.
Scalar Functions can not be used.
Case Statements can not be used.
Filters against boolean columns must use the true/false keywords as Intacct does not recognise 1/0 as being the same as true/false.

Microsoft Dynamics GP Data Source Tables

Simple column filters with Comparison and Logic Expressions may be used when querying Microsoft Dynamics GP.
Operators (e.g. +, , /, *, $, ||) can not be used.
Scalar Functions can not be used.
Case Statements can not be used.

1.1.3 | Using Data Agents

1.1.3.1 | Using Data Agents

Explains how to use Data Agents with Integration.

When you extract information from a JDBC-compliant database or a scripted data source, you must use a data agent. The data agent is hosted in a Windows
service typically deployed behind your firewall to allow access to specific customer data. It is an extensible component that manages secure access to applications
as well as connections to the hosted Adaptive Planning Integration servers. You use the data agents to extract specified data from remote data sources.

You must have at least one agent on any computer that extracts information from a JDBC database for Adaptive Planning Integration.

1.1.3.2 | Concept: Data Agent Service Manager

Data Agents let you extract information from JDBC-compliant databases or Scripted data sources. The Data Agents are extensible components that give secure
access to applications, and manage connections to your hosted Adaptive Planning instances. These agents run in a Windows service deployed on-premise behind
your firewall, providing access to the specific data you request. Data agents let you extract data from remote and on-premise sources you can't access using other
data sources.

A data agent must run on any computer that extracts information from a JDBC-compliant database for Adaptive Planning Integration.

The Data Agent Service installs as a Java application that runs as a Windows Service. This service manages your data agents from behind your firewall.

When the Data Agent Service runs, it long-polls the Adaptive Planning Gateway. The Gateway runs as a server brokering communication through the firewall to on-
premises instances of the Data Agent Service. This gateway receives requests from Adaptive Planning servers on behalf of all data agents hosted by the service.
Each instance of the Agent Service you install hosts one or more data agents.

The Data Agent installation includes a desktop utility, the Data Agent Service Manager, used to setup and configure the Agent Service.

To use data agents and the data agent manager

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 53/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

1. Download and install the agent


2. Configure the Data Agent manager
3. Create a Data Agent
4. Set up Data Agent Email Alerts
5. Backup and restore data agents

After installing the Data Agent Service, you can upgrade to newer versions as they get released. New version downloads get posted in the Data Agent page within
Integration. Download and install a new version on the PC where the Data Agent Service Manager runs. You can also develop custom connectors using a software
development kit (SDK) and deploy them to the Agent Service.

1.1.3.3 | Install the Data Agent Service Manager

1.1.3.3.1 | Install the Data Agent Service Manager

Important: If you installed Data Agents prior to December 9, 2016 (Kettle 4.4, 5.x), and want to install and use them, refer to Install the Legacy Data Agent.

Install the Data Agent Service Manager on the Windows computer you plan on connecting to Adaptive Planning via a Data Agent. Usually, one installation can
contact all of your source systems. If a single installation can't connect to all of your source systems, install the Data Agent Service Manager on other computers
that can connect to the source systems. If you require Kettle scripts on separate systems, install on each system containing scripts.

Navigation

From the nav menu, go to Integration > Design Integrations

Prerequisites
Permissions Required: Integration > Data Designer
Verify you have administrative rights to install software on your computer.
Verify the computer has a 64 bit Java Environment version 8 or higher. OpenJDK is supported.
Obtain the username and password for an Adaptive Planning user on your instance.
If you installed Kettle on your computer, make a note of its installation directory.

Steps
1. Download the Data Agent Service Manager installer.
2. Run the installer.

Download the Data Agent Manager Installer


You must start the agent creation process to access the Data Agent Service Manager download links.

1. Select Data Agents in the component library.


2. Select Create New Data Agent.
3. Enter a name that lets you uniquely identify this data agent.
4. Select Create to view the download links.
5. Decide if you want to use Kettle or not.

Download Installer for Use with Kettle

To launch the Scripted Data Source or the Scripted Loader using Pentaho Data Integration (Kettle) 8.2, download Kettle (PDI .zip file) from
https://sourceforge.net/projects/pentaho/files/Pentaho%208.2/client-tools/,

1. Extract the Kettle download on your computer.


2. Make a note of the full path to the Pentaho data-integration folder. You need this path to install the Data Agent Service Manager for use with Kettle.

When you install Pentaho Kettle (Pentaho Data Integration) and Kettle Spoon, the Agent Service manages a pool of Kettle ETL execution instances (job runners).
Each job runner is a Java virtual machine running in its own process. The Agent Service manager delegates any launched Kettle ETL scripts to a free job runner.

Download the Data Agent Installer

1. Download the Data Agent Manager Web or Offline installer.


2. Uninstall the preexisting Data Agent if you already had one by:
Stopping the data agent windows service.
Selecting Start > All Programs > Workday Adaptive Planning Data Agent > Uninstall. For data agent versions 7.1.44 and older, select Start >
All Programs > Adaptive Data Agent > Uninstall
3. Reboot your computer to clear old installation files.

Run the Installer


1. Launch the downloaded installer.
Note: The publisher name on the certificate for the Data Agent was updated in July 2020. When you run a new installation, Windows may prompt you about
an unrecognized app. To continue with the installation:
On the prompt, click More info. This shows the app and publisher name.
Click Run anyway to accept the updated publisher and continue the installation.
2. Continue through the setup wizard. Browse to the folder containing your Java Environment (JE) or your Java Runtime Environment (JRE). The JAVA_HOME
for your system environment variable fills in by default.
3. Select Next until you see the Features and Installation Folder tabs.
4. Decide if you want to also use Kettle.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 54/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Install For Use Without Kettle

1. Uncheck Script Engine for Custom Data Imports if you do not want to use Kettle.
2. Select Next and continue with the installation.

Install for Use With Kettle

1. Select Scripting Engine for Custom Data Imports Imports and select Next.
2. Browse into your Kettle installation folder and select the data-integration directory.
3. Select Next and continue with the installation.

Complete the Installation

1. Launch the Data Agent Service Manager after installing.


2. Login with your Adaptive Planning username and select Provision a New Agent.
3. Select Tenant and Agent, then Provision.
4. Wait a few minutes to refresh the Data Agent page within Adaptive Planning so that Agent status updates to Running.

Important: You can only have one instance of the Data Agent Service Manager on each computer.

1. Complete the steps in Configuring the Adaptive Data Agent Service Manager.

1.1.3.3.2 | Swap from Oracle JDK to OpenJDK for Data Agents

You can swap from the Oracle JDK to an OpenJDK without uninstalling your Data Agent. Swapping from Oracle can help you avoid the licensing fees associated
with using the Oracle JDK. By default, the Data Agent installer will install the Oracle JRE if it does not detect a valid JDK on your system.

Several organizations provide OpenJDK build downloads, including:

AdoptOpenJDK
https://adoptopenjdk.net/
https://adoptopenjdk.net/migration.html
Amazon Corretto
https://aws.amazon.com/corretto/
RedHat OpenJDK
https://developers.redhat.com/products/openjdk/download
https://developers.redhat.com/blog/2018/11/05/migrating-from-oracle-jdk-to-openjdk-on-red-hat-enterprise-linux-what-you-need-to-know/

Prerequisites
Verify the Data Agent Service Manager v7.1.44 or newer is installed on your local computer.
Verify you have local rights on your computer to install OpenJDK.
Make a note of your Data Agent Service Manager version.
Download a 64-bit OpenJDK build for use with Pentaho Kettle.

Navigation

These steps take place on your local computer.

Swap the JDK for Data Agent Service Manager


To swap the JDK and continue using your existing data agents:

1. Stop the Adaptive AgentService in the Windows Services Manager.


2. Close the Data Agent Service Manager and the Adaptive Script Editor.
3. Uninstall the Oracle JRE/JDK and restart your computer.
4. Download and install an OpenJDK (.msi or .exe).
5. Make sure you select these OpenJDK installation options in Custom Setup in the installation wizard:
JAVA_HOME
JAR Files Association
Registry

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 55/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

6. Complete the installation.


7. Restart your computer.
8. Open the Data Agent Service Manager and verify your existing Data Agents started.

Troubleshoot Opening Data Agent Service Manager v7.1.44

If Data Agent version 7.1.44 will not open after you swap the JDK:

1. Right click on Data Agent Service Manager in the Windows start menu.
2. Select More > Open file location and select C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Workday Adaptive Planning Data
Agent. For data agent versions 7.1.44 and older select C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Adaptive Data Agent.
3. Right click on Data Agent Service Manager in the file explorer and select Properties.
4. Change the Target value to indicate the location of the new OpenJDK you installed. This target path to your javaw.exe will vary based on your OpenJDK
installation location. Example: If you installed the RedHat OpenJDK, you would indicate: "C:\Program Files\RedHat\java-1.8.0-openjdk-1.8.0.232-
3\bin\javaw.exe" -jar "C:\Program Files\Workday Adaptive Planning Data Agent\AgentManager-1.0.0.jar" . For older versions you would
indicate, "C:\Program Files\RedHat\java-1.8.0-openjdk-1.8.0.232-3\bin\javaw.exe" -jar "C:\Program Files\Adaptive Data
Agent\AgentManager-1.0.0.jar".
5. Select Apply and OK.

1.1.3.3.3 | Install the Legacy Data Agent

If you installed a Data Agent prior to December 9, 2016, you are using the legacy Data Agent.

The legacy Data Agent installation includes and was developed for use with Pentaho Kettle 4.4 and Kettle Spoon. The Agent Service manages a pool of Kettle ETL
execution instances (job runners), each of which is a Java virtual machine running in its own process. The Agent Service delegates any Kettle ETL scripts to launch
to a free job runner.

To manage legacy data agents you must install and use the legacy Data Agent Service Manager.

Navigation

From the nav menu, go to Integration > Design Integrations

Prerequisites
Permissions Required: Integration > Data Designer
Verify you need to use Pentaho Data Integration (Kettle) 4.4.
Verify you don't want to use Pentaho Data Integration (Kettle) 6.1 or newer.
Verify you have administrative rights to install software on your computer.

Steps
1. Download the Legacy Data Agent Manager Installer
2. Run the Legacy Data Agent Manager Installer

Download the Legacy Data Agent Installer


Note: You must start the agent creation process to access the Legacy Data Agent download link.

1. Select Data Agents in the component library to view the list of agents.
2. Select Create New Data Agent.
3. Enter a name that lets you uniquely identify this data agent.
4. Select Create to view the download links.
5. Select here at the end of the Download Legacy Agent section.
6. Select Download Legacy Offline Installer.

Run the Legacy Data Agent Manager Installer

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 56/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

1. Launch the legacy Data Agent installer you downloaded and run the setup wizard.
2. Uncheck Script Engine for Custom Data Imports if you are not using Kettle
3. Select Next and finish the installation.
4. Launch the legacy Data Agent Service Manager on your computer.
5. Select Provision a New Agent.
6. Select Tenant and Agent and select Provision.
7. Wait a few minutes to refresh the Data Agent page within Adaptive Planning so that Agent status updates to Running.

Important: You can only have one instance of the Data Agent Manager on each computer.

1. Configure the Data Agent Service Manager installed on your PC.

Upgrade from Kettle 4.4 to a Newer Kettle Version


There is no automatic upgrade or migration path for the Kettle 4.4 platform or conversion of Kettle scripts to the newer Kettle versions.

If you want to manually upgrade your existing legacy Data Agent Kettle install to Kettle 6.1 or newer, you need to:

1. Completely uninstall the legacy Data Agent, which also automatically uninstalls Kettle.
2. Download and install the newer Kettle version.
3. Install the Data Agent Service Manager.
4. Completely recreate your Kettle scripts to work with the newer Kettle version.

1.1.3.4 | Configure the Data Agent Manager

After you install the Data Agent Service Manager on your PC, you must launch and configure it.

Prerequisites
Required permissions: Integration > Data Designer
Verify you downloaded and installed the Data Agent Service Manager.
Verify you have access to a valid Adaptive Planning username and password
Verify your network whitelists *.adaptiveplanning.com domains, and that port 443 is open on your computer

Navigation

From the nav menu, go to Integration > Design Integrations

Steps
1. Launch the Data Agent Service Manager and verify connectivity.
2. Configure the Data Agent Service Manager.

Launch the Data Agent Manager and Verify Connectivity


1. Search for and launch the Data Agent Service Manager on your local computer.
2. Select Diagnose and Configure Network in the login prompt to open the settings and cluster URLs dialog.
3. Provide proxy settings if your network requires, and select Update Proxy Settings to save them.
4. Select Test Service Internet Access then Test Your Internet Access to verify your connectivity.
5. Select Cluster URLs and review the settings. By default, the Admin and Server URLs use Adaptive Planning adaptiveplanning.com domains.
6. Log in with a valid Adaptive Planning username and password to open the Data Agent Manager. If your instance is Workday-enabled and you synchronized
users from Workday to Adaptive Planning, you must use your Workday credentials. See Log into the Data Agent and Script Editor with Workday Credentials.
7. View the Service Internet Connection field to verify that Service Internet Connection status is bright green and Healthy.

From the Data Agent Manager Setup tab, select Refresh to reestablish the connection to your selected server. You can also select Diagnose and Configure
Network to adjust network settings.

Note: Port 443 must be open on the computer running the Data Agent Service Manager to communicate with Adaptive Planning. Also verify that
*.adaptiveplanning.com domains are allowed for your network. See Data Residency Requirements and Domain Access for more information.

(Optional) Set Appliance Cluster Base URL

The Diagnose and Configure button lets you set the URL for an appliance cluster base if your Dashboards runs as an appliance in a custom cluster. This button
also lets you set the URLs for your Adaptive Planning server information. Contact Adaptive Planning Support before changing them.

1. Select Set as Required for this Cluster to save a change to the cluster base URL.
2. Select Apply Cluster Settings to save changes to the Adaptive Planning server information or select Restore Defaults to restore the default values.
3. Verify the Service Internet Connection field in the Data Agent Manager Setup tab turns green and indicates Healthy.

Gateway URL and Geography

Gateway URL and geography fields automatically populate when you install and provision agents.

The Switch Geography button activates in the Cluster URLs tab if the Recommended Actions in the Setup tab indicates a gateway geography conflict.

Important: Contact Adaptive Planning Support before modifying Gateway and Geography settings.

Configure the Data Agent Manager


After you establish the network connection,

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 57/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

1. Select Service Info & Options in the Data Agent Service Manager .
2. Select Refresh a few times if you adjusted your network settings and you don't see the changes.
3. Review your settings:
Remote Access URL (Host Hint): (Read-only) the URL uniquely identifies the gateway connecting the Data Agent Service Manager with the
Integration server.
Data Agent Service Id: (Read-only) uniquely identifies the specific agent service. When the agent service ID appends to the remote access URL,
the resulting URL gives the full URL addressing the specific Data Agent service.
Max Disk Storage per Agent (MB): Disk storage in megabytes for storing the information extracted by each agent. Enter -1 for unlimited.
Number of Kettle Job Runners: Number of Kettle job runners allowed on this computer, usually just 1. Best Practice: Fewer is better because more
runners use more RAM.
Max Memory per Job Runner (MB): Maximum memory in megabytes per job runner.
Max Temp Disk Size per Job Runner (MB): Maximum temporary disk size in megabytes per job runner. Enter -1 for unlimited.
Trusted Tenants: Tenants allowed to create new agents on this computer over the Internet without logging in to this computer. You can also select
Users from any Tenant can create Agents on this PC (not recommended), but doing so does not guarantee you control access to your data.
Restrict Job Runner Access to Files: Selected by default. Restricts access to local files directly under control of the data agent. Uncheck to
access files throughout the file system.
Verbose Logging: Select for verbose logging.
Log all Comms: Logs entries for all database and network communication between the Data Agent Service Manager and the agents.
Scrub Non-printing characters: Removes or transforms illegal XML characters and unwanted characters from input text streams. Requires a
scrubbingRules.txt file for removing additional characters you do not want. See the next section, Remove Specified Characters from Input Text
Streams in JDBC and Microsoft Dynamics GP, for details.
4. Troubleshoot any connection problems by selecting Show Data Agent Service Log to display the log files.
5. Select Apply Data Agent Service Settings to apply changes.
6. Continue with Create a Data Agent.

Remove Specified Characters from Input Text Streams in JDBC and Microsoft Dynamics GP

When a Data Agent loads data via a JDBC data source or Microsoft Dynamics GP data source, the data writes to the local hard disk as XML. This XML may contain
control characters:

TAB (0x9)
New Line (0xA)
Carriage Return (0xD)
Other non-printing characters

Data Agents stream data into these XML files without encoding. If control characters outside of the XML character range stream in, errors show up. You can remove
or transform illegal XML and other unwanted characters from input text streams by using a scrubbingRules.txt file.

1. Create a text file named scrubbingRules.txt in C:\Program Files\Workday Adaptive Planning Data Agent. For data agent versions 7.1.44 and
older use C:\Program Files\Adaptive Data Agent
2. List the characters you want removed or transformed in the scrubbingRules.txt file.
Each line must contain the old character and the new value separated by "=".
Leave the new value empty if you to remove the character. Each character must be represented by its Unicode value.
Lines starting with a # get treated as a comment.

Example scrubbingRules.txt file content:

#Tab, New Line and CR

0009=

000A=

000D=

#|=_

007C=005F

3. Launch the Data Agent Service Manager.


4. Select the Service Info & Options tab and select Scrub Non-printing Characters.
5. Select Apply Data Agent Service Settings.
Important: If you select Scrub Non-printing Characters, all illegal XML characters disappear from the input data, even if those characters don't appear in your
scrubbingRules.txt file.
6. Restart the Data Agent windows service.

Scrub Non-printing Characters does not affect Scripted Data Sources. Use scripting to remove or transform characters as needed.

Locate Logs for Troubleshooting Data Agent Issues


If you need to troubleshoot issues, or if Support asks for them, you can find logs within:

C:Windows\System32\config\systemprofile\AppData\Local\Adaptive AgentService\Agents\<agentId>\Logs\AgentLog.txt

C:Windows\System32\config\systemprofile\AppData\Local\AdaptiveDaemon\DaemonLog.txt

1.1.3.5 | Set Up Data Agent Storage Email Alerts

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 58/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

You can configure the Data Agent Service Manager to email alerts to one or more recipients whenever hard disks drop below a specified free space threshold.

Navigation

From the nav menu, go to Integration > Design Integrations

Prerequisites
Verify you installed the Workday Adaptive Planning Data Agent.
Permissions Required: Integration > Data Designer
Obtain the username and password for an Adaptive Planning user on your instance with Data Designer permissions

Set Up Adaptive Data Agent Email Alerts


1. Launch the Data Agent Service Manager.
2. Log in with an Adaptive Planning username and password.
3. Select the Email Alerts tab in the Data Agent Service Manager.
4. Fill in the fields:
Alerts Enabled: Enables email alerts. If unchecked, the Data Agent Service Manager does not send email alerts.
Alert Recipients: Enter one or more email addresses separated by semicolons.
SMTP Server: Enter the SMTP server URL, such as smtp.someservername.com.
SMTP Port: Enter the port for contacting the SMTP server, usually port 25.
Use SSL: Select to use SSL.
User Name: Enter the user name to access the SMTP server.
Password: Enter the password associated with the user name.
Drives to Monitor (; sep): Enter the drives you want to monitor separated by semicolons.
Threshold (MB): Enter the threshold level in megabytes that triggers an alert.
5. Select Send Test Email to send a test email using these settings.
6. Select Apply Alert Settings to apply and save any changes.

1.1.3.6 | Create a Data Agent

After you configure the Data Agent Service Manager on your PC, you can create a new data agent. You can associate an individual data agent with one or more
JDBC or scripted on-premises data sources.

You can use multiple data agents for the same database. Each data agent can have different properties. You can also have data agents on different computers.
Example: You might work at a company with people using Adaptive Planning Integration in offices across the country. Each worker could have a data agent
associated with a data source that brings the information into their computer.

Navigation

From the nav menu, go to Integration > Design Integrations

Prerequisites
Permissions Required: Integration > Data Designer
Verify you installed the Data Agent Service Manager on your local computer.
Obtain the username and password for an Adaptive Planning user on your instance.
For Workday tenants that sync users to Adaptive Planning, see Log into the Data Agent with Workday Credentials.

Steps
1. Create a new data agent
2. Provision the data agent

Create a New Data Agent


This process only creates an unprovisioned data agent based on the template. The data agent essentially becomes a program stub for the server portion of the data
agent. The stub associates with a specific data agent service as part of the creation process.

1. Select Data Agents in the component library to view the list of agents.
2. Select Create New Data Agent. to open the Create New page.
3. Enter a meaningful name that uniquely identifies this agent.
4. Select Create.

Note: When you create a new data agent, the configuration and structure get created, but you can't use the agent until you provision it.

Provision the Data Agent


After creating the data agent, provision it in the Data Agent Service Manager. Provisioning creates the instance of the data agent and hooks the newly created
agent into the stub on the server. When you complete the provisioning process, the data agent gets created and associates with the server. The server then can
communicate with the agent.

1. Launch the Data Agent Service Manager if you don't already have it open.
2. Log in as an Adaptive Planning user who has Data Designer permissions on your tenant. For Workday tenants that sync users into Adaptive Planning, see
Log into the Data Agent with Workday Credentials.
3. Select Provision a New Agent.
4. Provide your Adaptive Planning password.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 59/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

5. Select your tenant from the list. Usually, only one tenant shows up.
Note: Each customer has a tenant with a dedicated database schema containing all of the configuration and data. For reference, a tenant is identical to the
concept of an instance in the Adaptive Planning architecture.
6. Select the agent you want to provision from the Agent Name drop-down list.
7. Select Provision and provide your Adaptive Planning password.
8. Select OK.

At this point, the data agent can communicate with the on-premises source system and Adaptive Planning Integration.

Update the Data Agent Configuration


The Data Designer Update Configuration action synchronizes the agent related properties in the cloud and the on-premise Adaptive Planning Data Agent.

Select Update Configuration in the Data Designer to trigger an update.

When you click Update Configuration:

The in-memory AgentConfig instance object of the on-premise agent refreshes.


If any property is updated, the configuration in the agent device and the corresponding agent property in the cloud refresh.

1.1.3.7 | Back Up and Restore Data Agents

After setting up agents, configure the Data Agent Manager to back them up.

Prerequisites
Permissions Required: Integration > Data Designer
Verify you have administrative rights on the computer
Obtain the username and password for an Adaptive Planning user on your instance.
Launch the Data Agent Service Manager.
Enter the Adaptive Planning username and password.

Back Up Data Agents


You can back up all data agents at once or individual data agents one at a time.

Back Up All Agents at Once

1. Select the Backup/Unprovision tab in the Data Agent Service Manager.


2. Select Backup Destination Folder for a directory selection dialog, or type a path in the field. Select Clear to remove the directory path and start over.
3. Select Full Backup Now. The Data Agent Service Manager backs up all data agents and associated information to the backup folder.

Back Up Individual Data Agents

1. Select the Backup/Unprovision tab in the Data Agent Service Manager.


2. Select a data agent from the Select Active Agent drop-down.
3. Select Backup Now. The Data Agent Service Manager backs up the specified data agent and associated information to the backup folder.

Restore Data Agents


You can restore all data agents at once or restore individual data agents.

Restore All Data Agents at Once

1. Select the Backup/Unprovision tab in the Data Agent Service Manager.


2. Select Full Restore Source Folder for a directory selection dialog. Select the directory you want to restore from.
3. Enter the backup password used when the backup was made. You can also select Get Backup Password to retrieve an encrypted version of the password
corresponding to the backup password from the Adaptive Planning Integration server.
Note: The backup password functions as an encryption key for your backups. This password gets stored in the Integration server for each of your locally
created backups.
4. Select Full Restore Now. The Data Agent Service Manager restores all data agents and associated information to the specified restore folder.

Restore Individual Data Agents

1. Select the Backup/Unprovision tab in the Data Agent Service Manager.


2. Select Select Agent Backup to Restore From for a directory selection dialog box. Select the backup file you want to restore from.
3. Enter the backup password used when the backup was made.
4. Select Restore Now. The Data Agent Service Manager restores the specified data agent and associated information.

Data Residency Requirements and Domain Access


The Data Agent must be able to communicate with all Adaptive Planning servers at the domain name *.adaptiveplanning.com on port 443 (the encrypted SSL port).
If your organization's internal network includes a firewall and / or http proxy then your firewall / http proxy configuration must allow the Agent service's user account
access to Adaptive Planning servers.

Allowing all *.adaptiveplanning.com domains on port 443 is a requirement to ensure that data originating in Europe, Australia and Canada is contained completely
on servers within those geographies. Traffic balancing and data sovereignty modifications cannot be performed without allowing all *.adaptiveplanning.com
connections on port 443.

One machine running the agent service cannot serve tenants in multiple geographies.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 60/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

1.1.3.8 | Connect a Data Agent to a Regional Authentication and API Gateway

To connect to a regional authentication and API gateway, update the Adaptive Admin Server URL and Adaptive Signin Server URL in the Adaptive Data Agent
on your local computer.

Prerequisites
Permissions Required: Integration > Data Designer
Verify you installed the Data Agent Service Manager on your local computer.
Obtain the username and password for an Adaptive Planning user on your instance.
Visit the whitelist page to determine the signin URL for your organization.

Change Adaptive Admin and Signin Server URLs


1. Launch the Workday Adaptive Planning Data agent on your local computer. For data agent versions 7.1.44 and older, launch the Adaptive Data Agent
on your local computer.
2. Select Diagnose and Configure Network in the login dialog.
3. Select the Cluster URLs tab.
4. Enter the new URL in the Adaptive Admin Server URL and Adaptive Signin Server URL.
5. Select Apply Cluster Settings.
6. Close the Diagnose and Configure Network dialog.
7. Enter your username and password in the Adaptive Data Agent login dialog and log in.

1.1.3.9 | Log In to the Data Agent and Script Editor with Workday Credentials

Some links in this article go to the Workday Community. If you don't have a Community account, request one.

You can log into the Adaptive Data Agent using Workday Credentials when creating an agent if:

User Sync completes from your Workday tenant.


You register an API Client for your Data Agent and provide its information to the Data Agent Manager.

Prerequisites
In Adaptive Planning

Permissions Required: Data Designer and Integration Operator

In Workday

Security required for Register an API Client.


Enable Public APIs on the Adaptive Planning tab of the Tenant Setup report described in Steps: Configure Adaptive Insights for Workday.
For Data Agents v12.0.240 and newer, create an ISU. See the Create ISU steps in Steps: Enable Planning Data Sources After User Sync.

On the network hosting the Data Agent and Data Agent Manager

Verify firewall and network settings can access Workday IP addresses as described in Workday Availability Zones: IP Address Update for Whitelisting FAQ.

Enter Workday API Client Details in the Data Agent Manager


1. Verify that Enable Public APIs was turned on within the Adaptive Insights tab in Workday Tenant Setup.
2. Register an API Client in Workday specifically for the Data Agent using Authorization Code Grant with a Bearer access token.
a. Select Non-Expiring Refresh Tokens.
b. Set Scope (Functional Areas) to System and add Adaptive Planning.
c. Select OK to generate the key, secret, and other details that identify your new integration client.
d. Copy the Authorization End Point, Token End Point, Client ID, and Client Secret. You need these once the Data Agent Manager starts.
3. Start the Data Agent Manager on the local computer.
4. Select Diagnose and Configure Network.
5. Select the Workday tab.
6. Enter the information generated when registering the API client in Workday:

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 61/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Authorization End Point


Token End Point
Client ID copied from Workday
Client Secret copied from Workday
Enter https://www.workday.com for Redirection URL
7. Launch the Data Agent and select Sign in with Workday and sign in.
8. If you use Data Agent 12.0.239 and older, stop here. For Data Agent 12.0.240 and newer, configure the Workday Integration tab.

Workday Integration Tab Setup for Data Agents 12.0.240 and Newer

1. Register an API Client in Workday specifically for the Data Agent using a JWT Bearer access token.
a. Select Non-Expiring Refresh Tokens.
b. Set Scope (Functional Areas) to System and add Adaptive Planning.
c. Select OK to generate the Client ID, Token End Point, and other details that identify your new integration client.
d. Copy the Client ID, ISU, Token End Point, and Certificate. You need these once the Data Agent Manager starts.
2. Start the Data Agent Manager on the local computer.
3. Select Diagnose and Configure Network.
4. Select the Workday Integration tab.
5. Enter the information generated when registering the API client for your JWT Bearer access token in Workday:
Client ID copied from Workday
ISU copied from Workday
Token End Point copied from Workday
Certificate copied from Workday
6. Launch the Data Agent and select Sign in with Workday and sign in.

Log in to the Adaptive Script Editor with Workday Credentials

Once you enter the API client information for your Data Agent, you can copy it into the Workday tab in the Adaptive Script Editor.

1. Launch the Adaptive Script Editor on your local computer from the start menu by navigating to Adaptive Data Agent > Adaptive Script Editor.
2. Select the Workday tab in the Script Editor.
3. Paste in these fields from your Data Agent:
Authorization End Point
Token End Point
Client ID copied from Workday
Client Secret copied from Workday
Enter https://www.workday.com for Redirection URL
4. Select the Integration tab.
5. Select Sign In with Workday.
6. Provide your Workday Credentials.
7. If you use Data Agent 12.0.239 and older, stop here. For Data Agent 12.0.240 and newer, configure the Workday Integration tab.

Workday Integration Tab Setup for Data Agents 12.0.240 and Newer

1. Select the Workday Integration tab.


2. Enter the information generated when registering the API client for your JWT Bearer access token in Workday:
Client ID copied from Workday
ISU copied from workday
Token End Point copied from Workday
Certificate copied from Workday

Install Adaptive Script Editor Adaptive Planning Input and Output Plugins with Workday Credentials

The Adaptive Planning Input and Adaptive Planning Output plugins in the script editor run without a user interface. They require a JWT bearer grant and an
Integration System User (ISU) because an individual doesn't log in each time.

1. Open the Adaptive Script Editor on the local computer and sign in.
2. Create a new transformation or job, or open an existing one.
3. Drag the Adaptive Planning Output or Adaptive Planning Input plugin in, and right click it to select Edit.
4. In the Instance Connection tab, change Login method to Workday.
5. Copy all of the contents of the Certificate field. This certificate identifies that this plugin is authorized to communicate with Workday. Don't close the script
editor until you complete the API Client Registration in Workday and editor plugin setup.

Register an API Client in Workday

1. Open a browser and log in to Workday as super user.


2. Search Workday for Register API Client.
3. Select x509 certificate.
4. Create a new certificate and paste the one you copied from the Script Editor and select OK.
5. Set Client Grant Type to JWT Bearer Token.
6. Set Scope to Adaptive Planning.
7. Enter https://www.workday.com for Redirection URL.
8. Select OK to save and keep this page open so you can copy the Client ID and Token End Point from it.

Complete Plugin Set Up in the Script Editor

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 62/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Use the API Client ID, Token End Point, and ISU to complete the plugin setup.

1. Go back to the Adaptive Script Editor to paste the Client ID and Token End Point from Workday.
2. Retrieve your Integration System User (ISU) from your admin and paste it into ISU. See Steps: Configure Workday to Import Data to Adaptive Insights for
more on creating an ISU.
3. Select OK to save.

1.1.3.10 | Reference: Integration Data Agent Technical Requirements

Data Agents
The data agent is a component of Integration that runs on a Adaptive Planning customer on-premises server. The data agent extracts information from a JDBC-
compliant database or a custom scripted data source. Data agents can also export data from Adaptive Planning. The data agent requires a computer running
Windows deployed behind a customer firewall, and runs as a hosted service. The data agent manages access to on-premises applications as well as connections
to Adaptive Planning on the cloud.

The Data Agent Service (the Agent Service) manages the data agents. This service runs as a Windows Service and launches a Java application installed behind
the customer's firewall. The Agent Service long polls the Adaptive Planning Gateway. The gateway server brokers communication through the firewall to on-
premises instances of the Agent Service. This gateway receives requests from Adaptive Planning servers on behalf of all data agents hosted by that instance of the
service. Each installed instance of the Agent Service can host multiple data agents.

The installation includes the Data Agent Service Manager, a desktop utility the customer uses to initially setup and configure the Agent Service. The installation
optionally includes Pentaho Kettle and Spoon, the Kettle ETL Designer. If the optional Pentaho Kettle components get used, the Agent Service manages a pool of
Kettle ETL execution instances (job runners). Each execution instance is a Java virtual machine running in its own process. The Agent Service delegates any Kettle
ETL scripts that launch to a free job runner. Adaptive Planning provides plugins to enable design-time connectivity between the Spoon environment and Adaptive
Planning Integration. These plugins allow for authenticating into a cloud instance of Adaptive Planning, publishing scripts to the cloud, and testing the script-based
integration from within the Kettle UI. Note that the optional Pentaho components are needed only if there is a requirement to use a Pentaho Kettle script to extract
data. These components are not needed if the data agent extracts data out of JDBC-compliant databases using Adaptive Planning JDBC data sources.

The on-premises data agents get managed and controlled from the cloud using the agent UI. The agent UI is part of the Adaptive Planning data designer, accessed
through a web browser. When an agent is created in the data designer, the customer can download and install the latest version of the data agent, along with the
optional Pentaho Kettle components. The agent UI shows the current status and version details of the agents and allows the customer to
provision/unprovision/suspend/resume data agents. The customer can also upgrade to a newer version of the data agent through the agent UI. See Concept:
Integration.

Technical Specifications
The following technical specifications are recommended for the machine the data agent will reside on. Exact specifications will depend on data volumes and should
be reviewed with an Adaptive Planning Professional Services consultant.

Operating System

Supported platforms:

Windows 2019 Server


Windows 2016 Server
Windows 2012 Server (R2)
Windows 2008 Server (R2 is recommended)
Windows 10
Windows 8.1

Data Agent Support for Pentaho Kettle and Java version:

Data Agent Version Java Version (64 bit Recommended, 32 bit Supported) Pentaho Data Integration (Kettle) Version

2020R2 Data Agent v10 8, 11, OpenJDK 8.2

2019.3 Data Agent v8 8, 11, OpenJDK 8.2

2017.1 Data Agent v60 and v7x 8 6.1

Legacy Data Agent earlier than v60 7 4.4

2019.3 Data Agent v8 and Newer Support by OS, JDK, and Kettle Version

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 63/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

OS JDK Pentaho Data Integration (Kettle) Version

Windows Server 2016 Open JDK 8 No Kettle

Windows Server 2016 Open JDK 8 Kettle 8.2

Windows Server 2016 Open JDK 8 Kettle 7.1

Windows Server 2016 Open JDK 8 Kettle 6.1

Windows Server 2016 Open JDK 11 No Kettle

Windows Server 2019 Open JDK 8 No Kettle

Windows Server 2019 Open JDK 11 No Kettle

Windows Server 2016 Oracle JRE 8 No Kettle

Windows Server 2016 Oracle JDK 8 Kettle 8.2

Windows Server 2016 Oracle JDK 8 Kettle 7.1

Windows Server 2016 Oracle JDK 8 Kettle 6.1

Windows Server 2016 Oracle Java SE 11 No Kettle

Windows Server 2019 Oracle Java SE 8 No Kettle

Windows Server 2019 Oracle Java SE 11 No Kettle

Note: Kettle Spoon starts with a parameter setting of Max Heap Size 2048MB if you don't specify your own. When Spoon launches with a 32-bit JDK, this parameter
prevents successful start-up. For 32-bit JDKs set the Max Heap Size using: set PENTAHO_DI_JAVA_OPTIONS="-Xmx1024m"

Disk Space
A minimum of 60GB of space dedicated to the Data Agent is required on the C: drive. You cannot use another drive for this space. Temporary files and disk caching
space needs vary by implementation.

Memory
A minimum of 8GB is recommended. If a virtual machine is used to host the data agent, 12GB is recommended.

Connectivity
The data agent uses HTTPS to communicate with the Adaptive Planning servers. Port 443 (default port for HTTPS) is used by the Data Agent Service Manager to
communicate with the Adaptive Planning servers and other web-based sources.

Geographies
One machine running the agent service cannot serve tenants in multiple geographies.

Restricting Access by Domain


Traffic balancing and data sovereignty/data residency management requires access to *.adaptiveplanning.com domains.

1.1.4 | Using Loaders

1.1.4.1 | Using Loaders

Explains how to use Adaptive Planning Integration Loaders.

Loaders are a set of business rules that identify how the raw data from a data source is to be used. Loaders take the data from the staging area, prepare it for
loading into Adaptive Planning, and then load the information.

When Integration is enabled, the Integration Operator and Data Designer permissions are available and can be assigned to users. See Concept: Permission Sets.

Note: Users with Integration Operator or Data Designer permissions must have the Import Capabilities permissions to perform imports into Adaptive Planning.

1.1.4.2 | Concept: Loaders

Loaders let you synchronize metadata and data in-bulk from a source system to Adaptive Planning. With loaders you automate the manual steps used in Modeling
> Model Management to create and update hierarchies of attributes, accounts, dimensions, and levels. You can also automate the manual process of importing data
with the Planning Data Loader.

Adaptive Planning loaders include:

Metadata loaders for hierarchies and structures

Planning Attribute Loader for mapping attributes from the staging area, then importing their hierarchies.
Planning Account Loader for mapping general ledger (GL) accounts and their properties from the staging area, then importing their hierarchies.
Planning Dimension Loader for mapping dimension values from the staging area, then importing their hierarchies.
Planning Level Loader for mapping levels (organizational structures) from the staging area, then importing their hierarchies.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 64/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Data loaders for data

Planning Data Loader for mapping data from the staging area, then importing it to GL Accounts (Standard import), cube and modeled sheets, or transactions
tables.
Scripted Loader for using extract, transact, load (ETL) Pentaho Kettle scripts to perform complex calculations and analysis, loading directly from external
sources.

Loaders for exporting from Adaptive Planning to other cloud-based systems

Custom Cloud Loader for loading staging data to an external cloud-based system using javaScript and the ai Namespace.

Note: If your organization uses Discovery Enterprise you can also access the Discovery Metric Loader. This loader cannot load to Adaptive Planning sheets or
transactions.

Loader Workflow
When you create a loader you identify how data and metadata in your staging tables maps to Adaptive Planning by:

Selecting the data source staging tables to load from


Selecting loader settings, such as creating new dimension values in Adaptive Planning when the loader can't find existing ones to update
Mapping source system columns to columns in Adaptive Planning
(Optional) Mapping a Planning Data Loader profile to an external system to enable drilling from Adaptive Planning into that external system
(Optional) Applying any business rules or SQL filters
(Optional) Previewing the loader output to check for errors in the logs
Running the loader manually or scheduling it to run as part of an Integration Task

Tip: Best Practice: Import the union of all the data you need to the staging area from one data source. Then filter that data for each loader to extract the specific sets
of data you need to load.

1.1.4.3 | Create Scripted Loaders

Scripted loaders use ETL scripts to perform complex calculations or analysis.

Scripted loaders differ from scripted data sources in that they use different submission steps. Scripted loaders have two types of submissions:

Dashboards configuration update.


Dashboards metric submit.

The metric submission is a mechanism for updating metrics that predate scripted data sources. Data is submitted directly to the metric data store. The staging area
is not used.

Note: You also can used Scripted loaders for submissions to planning, and exports from Planning.

To create a new scripted loader:

1. Access the Data Designer by going to Integration > Design Integrations.


2. In the Loaders folder in the Component Library on the right side of the screen, click Create New Loader. The Create New dialog box appears.
3. Select Scripted Loader as the loader type and enter a name for the loader.
4. Click Create. The center area of the screen displays your new loader's settings and other information.
5. Enter the scripted loader's information:
Associated Agent: Select the data agent from the drop-down list.
Entry Point: Select the script from the drop-down list.
Log Level: Select a log level from the drop-down list to specify the detail for the logging for this data source. Your options are:
Error: Only logs serious errors.
Info: Logs all basic information, such as when the data source was updated.
Verbose: Provides very detailed information about all phases and actions. (This level is used primarily for debugging or auditing, as it may
produce more log information than is practical for typical use.)
6. Click Save on the Actions menu.

When you save the basic configuration of the loader, you can add parameters. Use parameters to pass runtime information to the script.

To add a parameter to the loader:

1. Drag a parameter from the Parameter menu and drop it on the Metric Settings table.
2. Click Save on the Actions menu.

Adding and Updating Parameters


You can add and change parameters for scripted loaders.

To add a parameter, follow these steps:

1. Click the Edit Parameters icon to the right of the Parameters heading.
2. Click the folder in the left pane that you want to add a parameter to.

The folder name appears in the right pane.

3. Click Add and select one of the following options from the floating menu:

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 65/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Folder: Create a new folder.


Boolean: Create a boolean parameter (true/false).
Integer: Create an integer parameter.
Text: Create a text parameter.
Password: Create a password parameter.
Period Range: Create a period range parameter (from/to dates) using the time periods from the time structure in Adaptive Planning.
4. In the right pane, enter the information for the option you selected.
5. Click Apply.

You can change individual parameters or the folders by double-clicking the item in the left pane and making changes to the information in the fields, then clicking
Apply to save your changes.

You can create folders to group parameters, then drag parameters to the folder.

1.1.4.4 | Create Custom Cloud Loaders

Important: Thorough JavaScript programming knowledge and experience are required to build a Custom Cloud Loader. You should not begin creating a Custom
Cloud Loader if you do not have access to an experienced JavaScript programmer. You must also be assigned the Integration Developer permission in
Administration > Permission Sets before attempting to create a Custom Cloud Loader.

Custom Cloud Loaders let you export Adaptive Planning plan data directly to third-party cloud systems.

Watch the video: 3m 16s

Basic Steps
1. Enter data source settings.
2. Define paremeters.
3. Write JavaScript using the CCDS APIs in the ai Namespace.
4. Define business rules.
5. Run or schedule the loader.

Prerequisites
Verify that you have the Integration Developer permission.
Verify that Adaptive Planning plan data you want to export already exists in a staging table.
Create an OAuth credential for your external system, or obtain credentials you can explicitly include in your JavaScript.
Know what parameters you need to pass to your external system, and what defaults the external system expects.
Understand how to write to the external system's endpoint.

Navigation

From the nav menu, go to Integration > Design Integrations

Enter Data Source Settings


The Data Source Settings let you choose the source table you want to use from your instance's staging data, determine what credentials to use, and the level of log
detail to record during a loader run.

Create a new Custom Cloud Loader


1. Access the Data Designer by going to Integration > Design Integrations.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 66/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

2. In the Loaders folder in the Component Library select Create New Loader.
3. Select Custom Cloud Loader as the loader type and enter a name.

If you don't see Custom Cloud Loader as an option, it isn't enabled for this instance or you don't have the Integration Developer permission needed to
access it.

4. Select Create.

Select the Source Table, Credential, and Log Level


1. Enter the Custom Cloud Loader's information:
Source Table: Select a staging table containing Adaptive Planning planning data you want to export.
Require Credential: Select if the external system requires OAuth and you require a user with Integration Operator permission to select the
appropriate OAuth credential.
Credential: Select a preexisting OAuth credential.
Log Level: Select how much detail to log when the loader runs:
Error: Only logs errors.
Info: Logs all basic information, such as when the data source was updated.
Verbose: Provides very detailed information about all phases and actions. Used primarily for debugging or auditing, as it may produce more
log information than practical for typical use.
2. Click Save in the actions menu.

Define Parameters
Define what parameters your javaScript requires to export Adaptive Planning data to your external system. Parameters can include connection URLs, user names,
passwords, and dimensions from Adaptive Planning, and other information. Paremeterized settings let you change their values at run time. Static settings persist
across loader runs.

1. Select Designer Settings.


2. Drag Parameterized or Static setting items from the Settings Component pane into Designer Settings.
Parameterized setting values entered here become loader defaults if you don't provide another one at loader run time.
Static settings you enter here get used every time the loader runs and don't require input at run time.
Boolean: A value represented as one or zero.
Dimension: A dimension from the dimension admin within Adaptive Planning.
Integer: A non-negative whole number.
Password: A password. This value cannot be viewed once it is saved.
Period Range: A time period range from within Adaptive Planning.
Text: An alphanumeric value.
3. Double click a parameter item to enter a name and change its value.
4. Drag in as many items as you need to reference in your JavaScript.
5. Save the loader.
6. Use a parameter's name in your JavaScript to reference it.

Write JavaScript
1. Select Script.
2. Select the preexisting template and change it or select New Script to make your own.
3. Write the javaScript you want the loader to execute using the CCDS APIs in the ai Namespace.
4. Verify the script includes the required:
testConnection function to create an https request to post to your external system
exportData function to export data from Adaptive Planning.
5. Reference any parameters you created in the Designer Settings by their name.
6. Save the script.

Note: You can format and beautify a script in the editor using the keyboard shortcut CTRL + Shift + B. Find and replace launches with Ctrl+H.

You can separate a long script into multiple files for easier maintenance.

Example: You could contain all of your testConnection logic in one script called testconnectionscript. A second script, called exportdatascript, could
contain all of the exportData logic.

When the same function is declared in multiple scripts, the one from the most recently added script is used.

Use OAuth in Custom Cloud Loader Scripts


When you select Require Credential for a Custom Cloud Loader, your script must contain ai.https.authorizedRequest.

See Authenticate with OAuth for how to create an OAuth Credential.

Those who run a Custom Cloud Loader referencing a Credential should:

1. Select Request Authorization before running the loader.


2. Provide any additional authorization details, such as scope, needed for the external system endpoint.
3. Select Test Connection to verify the OAuth credentials passed successfully to the endpoint.
4. Note the authorization date and user ID in the Authorization Status. Authorization expiration dates vary from one external system to another. Select Reset
Authorization in the Actions pane to reauthorize when needed.

Define Business Rules


You can use Business Rules to create SQL expressions that limit the staging data that exports to the external system. Only records that meet your filter criteria will
load.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 67/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

The Business Rules tab contains a text area for entering SQL.

1. Select the Business Rules tab.


2. Select Edit.
3. Enter an SQL expression. You can click an item in Available Columns to bring that column into the SQL expression instead of typing it.
4. Select Apply to check your syntax. Errors turn the border around the expression red. Hover the expression to see syntax error information.
5. Correct any errors in your syntax and select Apply. Only staging rows that match the SQL expression will load.

Include the Custom Cloud Loader in an Integration Task


Custom cloud loaders must be run as integration tasks. Any integration task can contain one or more loaders. A task can also contain other integration tasks and
loaders.

Tip: Best Practice: Have separate Integration tasks for each loader.

If a task contains multiple loaders, then parameters from each loader are presented when the task is run. If there is a common/shared parameter used in the
loader(s) within a task, then the task only prompts for the parameter once. You can choose to override parameter prompts.

For scheduled runs of the task, the default values of the parameters stored when the loaders were created are used.

Sample CCL Script


Use the example below to connect to your AWS S3 instance for exporting and viewing your spreadsheet data. You will need the bucket name, key, access key,
secret key and region values. For more information and example codes, see ai.awss3.

1. Set up a spreadsheet data source. See Steps: Set Up a Spreadsheet Data Source.
2. Create a new Custom Cloud Loader in the Loaders pane.
3. Navigate to the Data Source Settings tab and select your spreadsheet Data Source in the Source Table field.
4. Copy the below sample script in the Scripts tab.

// Manually invoke this method via 'Test connection'


function testConnection(context) {
return true;
}
// Manually invoke this method via 'Run manually'
function exportData(context) {
//"xxx" is the name of your Amazon S3 bucket.
var bucketName = 'xxx';
//Name of the sample CSV file to which data from your spreadsheet data source is exported
var key = 'exampleTest.csv';
//"xxxx" is the access key for your AWS S3 bucket.
var awsAccessKey = 'xxxx';
//"xxxx" is the secret key of your AWS S3 bucket.
var awsSecretKey = 'xxxx';
var region = 'us-west-1';
// Step 1: Get the data
var reader = context.createTableReader();
// Step 2: Process and export the data
var result = "Column,Heading,Names\n";
var row = null;
while ((row = reader.readRow()) !== null) {
// remove meta columns we don't need
row.length = row.length - 2;
result += row.join() + '\n';
}
ai.awss3.putFile(bucketName, key, result, region, awsAccessKey, awsSecretKey);
}

5. Select Save in the Actions pane.


6. To execute the script, select Run Manually in the Actions pane.

1.1.4.5 | Create Planning Account Loaders

Note: Metadata loaders synchronize hierarchical information from source systems into the hierarchies of your planning model. Your hierarchies should already exist
in your source system before you attempt to synchronize.

The Planning Account Loader lets you map metadata about general ledger accounts from the staging area into Adaptive Planning.Use the account loader to import
accounts in bulk from an external system and synchronize them, instead of creating accounts one at a time in the accounts admin. Once you create a loader, you
can run it manually or schedule it to run as part of an Integration task.

Watch the video: 1m 36s

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 68/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Basic Steps
Enter data source settings
Configure column mapping
Create business rules
Preview the loader output
Run or schedule the loader

Prerequisites
The Planning Account Loader requires staging data from an import of an existing Data Source. Make a note of what data source you want to use.

Required Permissions: Model, Integration Operator, Data Designer

Navigation

From the nav menu, go to Integration > Design Integrations

Enter Data Source Settings


The Data Source Settings let you choose the source table you want to use from integration staging data, and indicate whether to create new accounts automatically.

Tip: Best Practice: Save frequently as you create and update your loader. Click Save in the Actions panel. To discard any unsaved changes click Close, then click
No.

1. Select Create New Loader In the Loaders section of the Component Library.
2. Select Planning Account Loader as the loader type. Enter a name for the loader.
3. Select Create.
4. Enter the Account Loader general properties information:
Source Table: Select the source table from the dropdown list. The list contains all of the tables available in the staging area you can access.
Planning Account: Select the GL account you want to load child accounts into. To load an entire GL accounts tree, select GL Accounts in the
Accounts dropdown. Loading the entire GL account tree requires that the data source contain all of the GL root nodes defined in Adaptive Planning.
Publish pending admin publishing changes: If Admin Publishing has pending workflow changes, select to publish those changes when running
the loader.
Create account if not found in Planning: Select to automatically create new accounts found in the source system, but not found in Modeling >
Model Management > Accounts. Deselecting this updates only existing GL accounts in your model.
Maintain existing order in Planning: Select to keep the existing account sort order already used in Adaptive Planning.
Proceed with warnings: Select to re-parent accounts and make attribute values compatible with their parent account's attribute. If not selected, the
loader errors out when the payload contains child account attribute values not compatible with the parent account's attribute.
Log Level: Choose the type of details to capture when running the loader.
Off: No errors logged.
Error: Log serious errors only.
Info: Log basic information, such as when the loader was updated.
Verbose: Detailed information about all phases and actions. Used primarily for debugging or auditing.

Configure Column Mapping


Column Mapping lets you map columns from the data source to accounts properties available in Modeling > Model Management > Accounts. You can unmap
columns to ignore the staging data you don't want to load. You can also unmap columns one at a time following loader runs to troubleshoot which columns generate
errors in the logs.

If there are several columns to map, use the Show filter to select:

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 69/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

All: Shows all Planning columns.


Required: Shows all required Planning columns, like Parent ID and Account.
Unmapped: Shows all unmapped Planning columns.
Mapped: Shows all mapped Planning columns.

Use Category to select:

Account Details: Shows columns that relate to account details, including Account Code, Short Name, Rolls up to, Description, Type, Weighted By, Display
Text, Planned by, Actuals by, Actuals Overlay, Balance Type, and In Workflow. In Workflow must be a boolean value of 1 for true or 0 for false.
All: Shows all columns. You can only view Data Entry Type in the All category:
Valid values for Data Entry Type are STANDARD, CUBE, or 'blank'.
If blank, Data Entry Type inherits the type from the parent account.
If the parent Data Entry Type is CUBE, then a new account will default to CUBE. Otherwise, new accounts default to STANDARD.
Data Entry Type changes to non-leaf accounts are ignored. The system automatically calculates new Data Entry Type for all non-leaf accounts.
Data Type: Shows columns that relate to account data type settings, including Account Time Stratum, Display As, Master Formula, Weighted-Average
Translation, Reset Balance, Transfer Balance on Reset, Decimal Places, and Exchange Rates.
Sheets: Shows columns that relate to how accounts appear on sheets, including Suppress on sheets, and Start expanded.
Account Attributes: Shows columns that relate to account attributes, including listing all of the account attributes associated with the account.
Data Privacy: Shows columns that relate to how public or private the data for an account is, including Contains Salary Detail.
Consolidation: Shows columns that relate to consolidation settings, including Intercompany, Elimination Trading Partner, and Subsidiary settings. Only
available for instances with Consolidation enabled.

You can use the Search field to find columns. Enter a complete or partial name to search for and click the magnifying glass. Any staging columns matching the
search appear in the results.

Map Columns

1. Click Column Mapping.


2. Select an unmapped column from the drop-down. Columns available for mapping display in the list. As you map the columns, the status indicator changes
from an exclamation point to a check mark .

The Column Mapping tab has these columns:

Status: A checkmark indicates a mapped column. An exclamation point indicates an unmapped column.
Planning Column: Displays all of the Planning columns available for mapping. The list of Planning columns include a set of mandatory Planning columns,
followed by all other Planning columns. Mandatory Planning columns are indicated by bold text with an asterisk and include a value column. Non-mandatory
columns include the Short Name and Description.
Source Id Column: Displays the columns within the staging table chosen from the Data Source Settings.
Source Account Code Column: Indicates the account code column to simplify the mapping process. Every account in Adaptive Planning requires an
account code.

Map Parents of Accounts

The Parent Id column indicates the id of an account's parent. To load to the highest account in a hierarchy, the Parent Id value in source data must be empty. Parent
Id must also be empty If you want to create a child account underneath the top level.

Unmap Columns
To unmap columns, click Unmap and choose:

Unmap All: Unmaps all of the the columns.


Unmap Selected: Unmaps only the columns that are selected.

Unmapping a column changes the status icon to an en exclamation point .

Tip: Best Practice: Along with unmapping to troubleshoot errors and ignoring columns you can use unmap to help with change management. When new columns
get introduced in a data source, you can unmap the older columns to map the new ones.

Download and Upload Mappings


Note: Only available for a limited number of customers on a first-come first-served basis until generally available. Contact Workday Adaptive Planning Support to
enable this capability.
You can download, modify, then upload mappings for loaders to quickly resolve mapping errors. Uploads perform an all or nothing, replace-all action. Only 1 sheet
of mappings from the file processes on upload. Additional sheets of mappings will error out and cancel the upload.

1. Click Download Member Mappings in the Actions pane.


2. Download the .XLSX file. You'll also receive an email or a Workday notification with a download link for the mappings file.
3. Open the file and look up the staging table values in the mappings sheet causing errors.

Any cells marked (INVALID) in the Planning Code or Planning Name columns indicate this code no longer exists in Workday Adaptive Planning.

4. Correct the errors and click Upload Member Mappings to load the file. The Read Only column doesn't upload.
5. Run the loader again.

Note: Don't click Clear Member Mappings unless instructed by your implementation partner or Workday Adaptive Planning Support.

Create Business Rules


You can use Business Rules to create SQL expressions that limit the staging data that is available for loading. Only records that meet your filter criteria will load.

The Business Rules tab contains a text area for entering SQL.

To create an SQL filter:

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 70/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

1. In the Business Rules tab, select SQL Filter. Click Edit.


2. Enter an SQL expression.

You can click an item in the Available Columns list to bring that column into the SQL expression instead of typing it.

3. Click Apply to check your SQL syntax. Errors in your syntax turn the border around the expression red. Hover your cursor over the SQL editor to see syntax
error information.

For detailed SQL syntax help, click online help in the Notes section of the Edit SQL Filter. See the SQL Expression Reference for more.

4. Correct any errors in your syntax and click Apply.

Only staging rows that match the SQL expression will import when you run the loader.

Preview the Loader Output


You can preview the loader output to check the mappings and fix validation errors before running the loader.

When the preview loader output or manual load runs, the source data is validated for errors. Examples of the validations include checks if:

A sub account is created without indicating its parent account.


An account attribute is assigned an attribute value it can't find.
The source ID value for the account is missing (empty) in the data.
There are duplicate Source IDs or account names in the data. Source IDs must be unique.
A ParentId is the same as the Source ID in the data. If so, the column is referring to itself as its parent.
When importing sub accounts, the root of the sub account maps to an existing node in Adaptive Planning. The parentID is not in the source data for a new
node introduced to Adaptive Planning.
An existing node moved under a new node and the Create New flag is disabled. An existing account is moving into a new node when the loader was set to
not make new accounts.
The data has a cyclic reference in its hierarchy. A ParentId is referring to its own child as its parent.

You can also download the preview output as an XML file to manually verify the accounts from your data source against your requirements before loading them.

1. Click Preview loader output in the Actions panel.


2. (Optional) Enter Preview Loader Output settings. The information you can enter varies depending on the data source you chose for this Planning Account
Loader. Changing the settings here imports new data into Staging tables and columns.
3. Click Preview loader output.

The loader runs, including all transformations and business rules. A status popup displays the steps as the loader executes. If accounts are available to load, the
loader creates an XML file and sends an email notification with the output as a zipped XML attachment. If no accounts load, the zip will contain a message
indicating none loaded.

An additional popup lets you download the preview loader output as a zipped XML file after the loader succeeds. The download popup may take a moment to
appear depending on the number of accounts and the size of the file.

This is an example of a downloaded unzipped output XML file:

Run the Loader


After saving a Planning Account Loader with the required settings, run the loader manually or run it as a scheduled integration task.

Important: Wait about 15 - 30 minutes between each Planning Account Loader run so that Adaptive Planning has time to synchronize with your import. Larger
imports take longer to synchronize. Wait time depends on model size and other factors.

To run the loader manually, click Run Manually in the Actions panel.

You can load accounts directly from the source system or you can run the loader using staging values that were already imported. When the loader runs, select
which of these behaviors you want. Choose Bypass data import to use the existing staging table for loading. Bypassing data import is not available when using

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 71/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

spreadsheets as data sources.

As part of the run process, the loader checks that the data in the staging table has been mapped correctly. Multiple validations are applied during the load. Any
errors that occur during the load indicate what needs to be resolved for a successful import.

Include the Planning Account Loader in an Integration Task


Any integration task can have one or more loaders. A task can contain other integration tasks, like a Planning Data Loader, or a Scripted Loader.
Tip: Best Practice: Have separate Integration tasks for each loader.

If a task contains multiple loaders, parameters from each loader display in a prompt when the task runs. If there is a common or shared parameter in the loaders
within a task, the task prompts for the parameter only once. You can choose to override parameter prompts.

For scheduled runs of the task, default values of the parameters for the loaders get used.

1.1.4.6 | Create Planning Attribute Loaders

Note: Metadata loaders synchronize hierarchical information from source systems into the hierarchies of your planning model. Your hierarchies should already exist
in your source system before you attempt to synchronize.

The Planning Attribute Loader lets you map metadata about attributes from the staging area into Adaptive Planning. Use the attribute loader to import attributes in
bulk from an external system and synchronize them, instead of creating attributes one at a time in the attributes admin. Once you create a loader, you can run it
manually or schedule it to run as part of an integration task.

Watch the video: 1m 32s

Basic Steps
Enter data source settings
Configure column mapping
Create business rules
Preview the loader output
Run or schedule the loader

Prerequisites
The Planning Attribute Loader requires staging data from an import of an existing Data Source. Make a note of what data source you want to use.

Required Permissions: Integration Operator, Data Designer, Model

Navigation

From the nav menu, go to Integration > Design Integrations

Enter Data Source Settings


The Data Source Settings let you choose the source table you want to use from staging data, and indicate whether to create new attributes automatically.
Tip: Best Practice: Save frequently as you create and update your loader. Click Save in the Actions panel. To discard any unsaved changes click Close, then click
No.

1. Select Create New Loader In the Loaders section of the Component Library.
2. Select Planning Attribute Loader as the loader type. Enter a name for the loader.
3. Select Create.
4. Enter the Attribute Loader general properties information:

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 72/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Source Table: Select the source table from the dropdown list. The list contains all of the tables available in the staging area you can access.
Planning Attribute: Select the attribute within Adaptive Planning to load into.
Create attribute value if not found in Planning: Select to automatically create new attribute values found in the source system, but not found in
Modeling > Model Management > Attributes. Deselecting this updates only existing attribute values in your model.
Publish pending admin publishing changes: If Admin Publishing has pending workflow changes, select to publish changes.
Log Level: Choose the type of details to capture when running the loader.
Off: No errors logged.
Error: Log serious errors only.
Info: Log basic information, such as when the loader was updated.
Verbose: Detailed information about all phases and actions. Used primarily for debugging or auditing.

Configure Column Mapping


Column Mapping lets you map columns from the data source to attribute properties available in Modeling > Model Management > Attributes. You can unmap
columns to ignore the staging data you don't want to load. You can also unmap columns one at a time following loader runs to troubleshoot which columns generate
errors in the logs.
If there are several columns to map, use the Show filter to select:

All: Shows all Planning columns.


Required: Shows all required Planning columns, like Parent ID and Attribute.
Unmapped: Shows all unmapped Planning columns.
Mapped: Shows all mapped Planning columns.

Use Category to select.

All: Shows all columns. Attributes do not use categories.

You can use the Search field to find columns. Enter a complete or partial name to search for and click the magnifying glass. Any staging columns matching the
search appear in the results.

Map Columns
The Column Mapping tab has these columns:

Status: A checkmark indicates a mapped column. An exclamation point indicates an unmapped column.
Planning Column: Displays all of the Planning columns available for mapping on a sheet. The list of Planning columns include a set of mandatory Planning
columns, followed by all other Planning columns. Mandatory Planning columns are indicated by bold text with an asterisk and include a value column. Non-
mandatory columns include Description.
Source Column: Displays the columns within the staging table chosen from the Data Source Settings.

1. Click Column Mapping.


2. Select an unmapped column from the drop-down. Columns available for mapping display in the list. As you map the columns, the status indicator changes
from an exclamation point to a check mark .

Map Parents of Attributes


The Parent Id column indicates the id of an attribute value's parent. To load to the highest attribute in a hierarchy, the Parent Id value in source data must be empty.
Parent Id must also be empty If you want to create child attribute values underneath the top level.

See Load Attributes From a Spreadsheet Data Source for an example of how attributes and their parents map to planning.

Unmap Columns
To unmap columns, click Unmap and choose:

Unmap All: Unmaps all of the the columns.


Unmap Selected: Unmaps only the columns that are selected.

Unmapping a column changes the status icon to an en exclamation point .

Tip: Best Practice: Along with unmapping to troubleshoot errors and ignoring columns you can use unmap to help with change management. When new columns
get introduced in a data source, you can unmap the older columns to map the new ones.

Download and Upload Mappings


Note: Only available for a limited number of customers on a first-come first-served basis until generally available. Contact Workday Adaptive Planning Support to
enable this capability.
You can download, modify, then upload mappings for loaders to quickly resolve mapping errors. Uploads perform an all or nothing, replace-all action. Only 1 sheet
of mappings from the file processes on upload. Additional sheets of mappings will error out and cancel the upload.

1. Click Download Member Mappings in the Actions pane.


2. Download the .XLSX file. You'll also receive an email or a Workday notification with a download link for the mappings file.
3. Open the file and look up the staging table values in the mappings sheet causing errors.

Any cells marked (INVALID) in the Planning Code or Planning Name columns indicate this code no longer exists in Workday Adaptive Planning.

4. Correct the errors and click Upload Member Mappings to load the file. The Read Only column doesn't upload.
5. Run the loader again.

Note: Don't click Clear Member Mappings unless instructed by your implementation partner or Workday Adaptive Planning Support.

Create Business Rules


You can use Business Rules to create SQL expressions that limit the staging data that is available for loading. Only records that meet your filter criteria will load.

The Business Rules tab contains a text area for entering SQL.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 73/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

To create an SQL filter:

1. In the Business Rules tab, select SQL Filter. Click Edit.


2. Enter an SQL expression. You can click an item in the Available Columns list to bring that column into the SQL expression instead of typing it.
3. Click Apply to check your SQL syntax. Errors in your syntax turn the border around the expression red. Hover your cursor over the SQL editor to see syntax
error information.

For detailed SQL syntax help, click online help in the Notes section of the Edit SQL Filter. See the SQL Expression Reference for more.

4. Correct any errors in your syntax and click Apply. Only staging rows that match the SQL expression will import when you run the loader.

Preview the Loader Output


You can preview the loader output to check the mappings and fix validation errors before running the loader.
When the preview loader output or manual load runs, the source data is validated for errors. Examples of the validations include checks if:

An attribute value is created without indicating its parent attribute.


An attribute is assigned an attribute value it can't find.
The source ID value for the attribute is missing (empty) in the data.
There are duplicate Source IDs or attribute names in the data. Source IDs must be unique.
A ParentId is the same as the Source ID in the data. If so, the column is referring to itself as its parent.
An existing node moved under a new node and the Create New flag is disabled. An existing attribute is moving into a new node when the loader was set to
not make new attribute values.
The data has a cyclic reference in its hierarchy. A ParentId is referring to its own child as its parent.

You can also download the preview output as an XML file to manually verify the attributes from your data source against your requirements before loading them.

1. Click Preview loader output in the Actions panel.


2. (Optional) Enter Preview Loader Output settings. The information you can enter varies depending on the data source you chose for this Planning Attribute
Loader. Changing the settings here imports new data into Staging tables and columns.
3. Click Preview loader output.

The loader runs, including all transformations and business rules. A status popup displays the steps as the loader executes. If attributes are available to load, the
loader creates an XML file and sends an email notification with the output as a zipped XML attachment. If no attributes load, the zip will contain a message
indicating none loaded.

An additional popup lets you download the preview loader output as a zipped XML file after the loader succeeds. The download popup may take a moment to
appear depending on the number of attributes and the size of the file.

This is an example of a downloaded unzipped output XML file:

Run the Loader


After saving a Planning Attribute Loader with the required settings, run the loader manually or run it as a scheduled integration task.
Important: Wait about 15 - 30 minutes between each Planning Attribute Loader run so that Adaptive Planning has time to synchronize with your import. Larger
imports take longer to synchronize. Wait time depends on model size and other factors.

To run the loader manually, click Run Manually in the Actions panel.

You can load attributes directly from the source system or you can run the loader using staging values that were already imported. When the loader runs, select
which of these behaviors you want. Choose Bypass data import to use the existing staging table for loading. Bypassing data import is not available when using
spreadsheets as data sources.

As part of the run process, the loader checks that the data in the staging table has been mapped correctly. Multiple validations are applied during the load. Any
errors that occur during the load indicate what needs to be resolved for a successful import.

Include the Planning Attribute Loader in an Integration Task


Any integration task can have one or more loaders. A task can contain other integration tasks, like Dashboards metric loaders and scripted loaders.
Tip: Best Practice: Have separate Integration tasks for each loader.

If a task contains multiple loaders, parameters from each loader display in a prompt when the task runs. If there is a common or shared parameter in the loaders
within a task, the task prompts for the parameter only once. You can choose to override parameter prompts.

For scheduled runs of the task, default values of the parameters for the loaders get used.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 74/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

1.1.4.7 | Planning Data Loaders

1.1.4.7.1 | Create Planning Data Loaders

Integration uses the Planning Data Loader to load data into Adaptive Planning.

Some links in this article go to the Workday Community. If you don't have a Community account, request one.

Prerequisites
The Planning Data Loader requires staging data from an import of an existing Data Source. Make a note of what data source you want to use.

Steps
1. Enter data source settings.
2. Select a mapping profile.
3. Configure column mapping.
4. Configure data mapping.
5. Create business rules.
6. Run or schedule the loader.

Navigation

From the nav menu, go to Integration > Design Integrations

Enter Data Source Settings


The Data Source Settings enable you to select:

The source table.


The period settings.
How actuals erase.
How to auto map accounts, levels, and dimensions.

Tip: Best Practice: Save frequently as you create and update your loader. Select Save in the Actions panel. Select Close, then No to discard unsaved changes.

1. Select Create New Loader in the Loaders section of the Component Library.
2. Select Planning Data Loader as the loader type. Enter a name for the loader.
3. Select Create. The center area of the page displays your new loader settings and other information.
4. Enter the Planning Data Loader general properties information:

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 75/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Source Table: Select the source table from the drop-down list. The source tables in the list are all the tables available in the staging area for this
user.
Import Type: Select an import type from the drop-down list.
Actuals: Enables you to load data into the Actuals version of Adaptive Planning.
Plan: Enables you to load data into any Planning or budget version defined in Adaptive Planning. (This import type isn’t available for a
Consolidation-only instance.)
Transactions: Enables you to load data into the Transactions module in Adaptive Planning. If multiple transaction tables exist in Adaptive Planning,
you can select the appropriate transaction from the drop-down. This option requires the Transactions module for your instance.
Import Into Sheet: Specify the planning sheet to load the data into, using one of these options:
Select Standard to load the data into standard accounts (General Ledger, Custom, or Assumption accounts).
Click the radio button to select a model or cube sheet from the drop-down.
Note: Changing the sheet selection in an existing loader displays a warning that doing so affects the column and members mappings. Clicking OK
removes all column and data mappings from the loader. You must create new mappings for the loader to correspond to the new sheet.
Version Parameter: Enables the user running this loader to select a version to import to. Select from the version parameters you previously defined.
(See the Creating a Version Parameter section later in this article.) The parameters visible in the list vary based on Import Type. You can use Version
Parameters in more than 1 loader.
Import Options: Enables you to select how data updates during import:
Append New Data: Adds new rows without changing existing rows.
Replace existing data in sheet: Replace all of the data in the sheet with the import, without updating or matching rows.
Update existing rows: When a key exists and an existing row matches for a modeled sheet, update the data. If a row can't match to the
import, rows don't update or append. The only required columns are Import Key and at least 1 column being updated. Sheets with Allow
splits selected do not support updates. Values in the Import Key column of your imported file must be unique.
Update existing rows and add new rows: When a key exists and a row matches for a modeled sheet, update the data. If a row can't match
to the import, make a new row. Only required columns are Import Key, Level, and any text selectors, even when not adding new rows. Sheets
with Allow splits selected do not support updates. Values in the Import Key column of your imported file must be unique.
Import Key Column: Indicates the modeled sheet dimension or level column as the key for matching rows when importing. Values in the Import Key
column of your imported file must be unique.
Import Secondary Column: Indicates the modeled sheet dimension or level column as the secondary key for rows that did not match on the Import
Key Column. Only available for the Import Options Update existing rows only and Update existing rows and add new rows.
Make New Actuals Visible: Only available when selecting Actuals for Import Type. When checked, the Actuals version has its Completed Values
Through date set to the final month of data found in the import, making the imported data available for overlaying plan data in plan versions. You
can also access Make New Actuals Visible as a parameter, to allow the user running the integration task to override this setting. Depending on the
period range being imported, and the current date set on the actuals version, the import might move the completed date backwards.
Delete Existing Transactions: Only available when selecting Transactions for Import Type. When checked, all existing transactions associated
with the Period parameter are deleted. Keep this checked unless a specific reason comes up to uncheck it. If you reimport data for a given period
while unchecked, you end up with duplicate transaction records.
Log level: Select a log level to specify the detail for the logging for this loader. Logs automatically erase after a week. If you need logs for debugging,
download them.
Error: Only logs serious errors.
Info: Logs all basic information, such as when the loader was updated.
Verbose: Provides very detailed information about all phases and actions. (This level is used primarily for debugging or auditing, as it may
produce more log information than is practical for typical use.)
GL Accounts: Only available when Import Type is set to Actuals, unless you configure Erase Data settings in Administration > General Setup. If
GL Accounts is selected, all data in general ledger accounts erases for the time period chosen in the loader prior to new data loading. You can also
access GL Accounts as a parameter you can override at runtime. Selecting GL Accounts only deletes data in general ledger accounts but leaves
data unchanged in custom accounts and in cell notes.
Custom Accounts: Only available when Import Type is set to Actuals, unless you configure Erase Data settings in Administration > General
Setup. If Custom Accounts is selected, all data in custom accounts erases for the time period chosen in the loader, prior to new data loading. You
can also access Custom Accounts as a paremeter you can override at runtime. Selecting Custome Accounts only deletes data in custom
accounts but leaves data unchanged in general ledger accounts and in cell notes.
Cube Accounts: Only available when Import Type is set to Actuals, unless you configure Erase Data settings in Administration > General Setup.
If Cube Accounts is selected, all data in cube accounts erases for the time period chosen in the loader, prior to new data loading. You can also
access Cube Accounts as a parameter you can override at runtime. Selecting Cube Accounts only deletes cube accounts but leaves data
unchanged in general ledger accounts, custom accounts, and cell notes.
Cell Notes: Only available when Import Type is set to Actuals, unless you configure Erase Data settings in Administration > General Setup. If
Cell Notes is selected, all data in general ledger accounts erases for the time period selected in the loader, prior to new data loading. You can also
access Cell Notes as a parameter you can overrided at runtime. Selecting Cell Notes only deletes cell notes but leaves data unchanged in general
ledger accounts and custom accounts.
5. Enter the planning loader default period settings:
Period Parameter: You can specify the range of time periods for loading into Adaptive Planning. See the Creating a Period Parameter section that
follows for more on how to create a period parameter. You can use Period Parameters in more than 1 loader.
Start Date: This display-only field shows the start period selected in the Period Parameter.
End Date: This display-only field shows the end period selected in the Period Parameter.
Time Stratum: This display-only field shows the time stratum based on the selection in Import Type. For import type Actuals or Plan, the time
stratum sets to the lowest available time stratum of the sheet you import to. For import type Transactions, the time stratum won't set to Day.
Period Column: Available for Import Type: Transactions. This drop-down displays all columns of type Date or DateTime available in the source
table selected in the Source Table field. When only 1 column meets these criteria, this field defaults to that column. Period Column controls the
mapping of time period data from the staging table, to the period defined in Adaptive Planning. You must align the data values in the staging values
with periods in Adaptive Planning.
Posting Date: Available when Import Type: Transactions. Indicates the staging column that contains the Date or DateTime values for the posting
date. The posting date helps with identifying and finding applicable transactions when drilling through transactions data submitted to Adaptive
Planning.
6. Create a Version Parameter.

You must use a version parameter to specify at runtime which version to load the data into. A version parameter gives you greater flexibility when setting up
a planning data loader, by enabling you to select a version other than the default at runtime.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 76/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

You only need to create a version parameter once for a loader. Users with access to the loader can select a value for the parameter by selecting an
available version within the version tree. The version tree you can select from varies depending on the type of the parameter. The versions displayed at
runtime restrict based on the user running the loader.

Creating an Actuals Version Parameter


You can set up version parameters of either actuals or plan type. The different types specify where you want to load the data.

1. Click Edit parameters below the Version Parameters drop-down.


2. Select a folder from the left pane.

If you want the parameter to be shared across users or loaders, select a folder from the Shared area. If you want the parameter to only be available to the
current loader, select a folder from the Local area.

3. Click Add.
4. From the context menu, click Actuals Version.
5. Enter the actuals parameters information:
Name: Enter the name for the parameter. The name entered here is the label the planning loader and associated tasks show at runtime.
ActualsActuals Version: Select the default value for the version from the drop-down.
Note: For consolidations, select which of the Actuals sub-versions is used as the default. For planning, there is only 1 Actuals version, which is the
only available selection in this dialog.
6. Click Apply to apply the settings.
7. Click Close to return to the Parameter editor dialog box. The actuals version parameter you have just created is now visible in Version Parameters drop-
down list.

Creating a Plan Version Parameter


The process for setting up a plan version parameter is similar to that for creating an actuals version parameter.

1. Click Edit parameters below the Version Parameters drop-down.


2. Select a folder from the left pane.

If you want the parameter to be shared across users or loaders, select a folder from the Shared area. If you want the parameter to only be available to the
current loader, select a folder from the Local area.

3. Click Add.
4. From the context menu, click Plan Version.
5. Enter the plan version parameter information:
Name: Enter the name for the parameter. The name entered here is the label the planning loader and associated tasks show at runtime.
Plan Version: Select the default value for the version from the drop-down list.
6. Click Apply to apply the settings.
7. Click Close to return to the Parameter editor dialog box. The plan version parameter you have just created is now visible in Version Parameters drop-down
list.

Creating a Period Parameter


The period parameter specifies the range of time periods for which data will be loaded into Adaptive Planning. You can override the assigned time periods at
runtime. You can select a single period, or set start and end periods that are either dynamic or fixed. When a scheduled task runs, it uses these settings to decide
what periods to import. Dynamic dates automatically adjust as months go by.

Dynamic Period
A dynamic period allows configuring an offset from the current time in configured planning calendar:

Offset: A positive integer representing how many Time Strata to offset from the current date.
Time Strata Selector: A drop-down list of the time strata configured in the Planning calendar (months, quarters, weeks, years, etc.).
Direction: The direction of the offset, either forwards or backwards from the current time.

Fixed Period
A fixed period period allows choosing any time values found in Planning's configured calendar by letting you navigate its time hierarchy.

1. Click Edit parameters below the Period Parameters drop-down.


2. Select a folder from the left pane.

If you want the parameter to be shared across users or loaders, select a folder from the Shared area. If you want the parameter to only be available to the
current loader, select a folder from the Local area.

3. Click Add.
4. From the context menu, click Period Range.
5. Enter the period range parameter information:

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 77/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Single Period: Check this box if you want to specify a single period for the date range.
Start Period:
Select Dynamic to choose a dynamic date for the start period, such as the previous quarter, month, year, or other stratum (if you are using a
custom calendar) available from your Planning calendar.
Enter an offset integer and select forward or backward. Use 0 to select the current time stratum.
Select Fixed to specify any time period from your time structure in Planning. The resolved date for your selection appears beneath the
dropdowns.
End Period:
Select Dynamic to choose a dynamic date for the end period, such as the previous quarter, month, year or other stratum (if you are using a
customer calendar) available from your Planning calendar.
Enter an offset integer and select forward or backward. Use 0 to select the current time stratum.
Select Fixed to specify any time period from your time structure in Planning. The resolved date for your selection appears beneath the
dropdowns.
6. Click Apply to apply the settings.
7. Click Close to return to the Parameter editor dialog box.

The period range parameter you created becomes visible in the Period Parameter drop-down list.

Dynamic Period Example


Assume the current month is April.

The Start Period would resolve to March 1st, the first date of the prior month. The End Period would resolve to May 1st, the first date in the next month.

Fixed Period Example


For a fixed Start Period of November 1, 2016 and a fixed End Period of March 31, 2017, select the start and end time periods from the Adaptive Planning
configured calendar.

Auto Mapping
You can select auto mapping options to automatically map new data elements detected at loader run time. Auto mapping can replace the manual steps you take in
the Data Mapping tab for:

Accounts
Levels
Dimensions

Existing loaders and any new loaders you create do not automap by default.

If your Data Mapping doesn't include a selection for Source Display Name, you can automap:

Accounts by Account Name or Account Code


Levels by Source ID
Dimensions by Source ID

If your Data Mapping does include a selection for Source Display Name Column, you can automap:

Accounts by Source ID to Account Name


Accounts by Source ID to Account Code
Accounts by Source Display Name to Account Name
Accounts by Source Display Name to Account Code
Levels by Source ID
Levels by Source Display Name
Dimensions by Source ID
Dimensions by Source Display Name

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 78/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

If the loader encounters data elements it cam't automap, the loader errors out.

Erase Data
The Erase Data tab only displays after selecting Enable Integration Loaders - Erase Data in Administration > General Setup.
Note: You must have Import Capabilities > Erase Actuals permission enabled in Adpative Planning to erase actuals data. Erasing actuals is a superuser
permission that enables erasing actuals or plan data across Adaptive Planning, including in locked levels. Erase Actuals overrides Access Rules and level
ownership restrictions.

You can erase plan or actuals data independent of the data being loaded. You can also choose to erase data for specific time periods, versions, levels or accounts.

Erase Data Details

Erase Data only erases data from non-virtual plan or actuals versions.
Erase Data can erase data from calculated accounts with a data entry override for versions that are set up for data entry.
Selecting a parent level deletes all data in its child levels.
Selecting a rollup account deletes all data in its child accounts.
Formulas will not be deleted.

1. Click the Erase Settings tab.


2. Select the Enable Data Erase check box to erase data.
3. Select Edit Parameters in the Actions pane and create Version and Period parameters.

You can also to choose to use the Version or Period parameters specified in the Data Source Settings tab.

4. Select the accounts you want to erase data from.

You can include all GL accounts, all custom accounts, all cube accounts in a sheet, or create a new account parameter to erase specific accounts. You can
also select a combination of all the available account options.

5. Specify levels for erasing data.

You can select all levels or or create a new level parameter for specific levels.

6. Run the loader manually using Erase Manually in the Actions pane or schedule the loader to run as a part of a task.

If more than 1 planning loader exists within a task, then each of the erase options become available for each included loader. The options tag with the name
of the loader to help you identify the source of the erase option.

Note: With Erase Settings, you can erase data from cube assumption accounts. If the request includes an account code used by both an assumption and an
account, the loader returns an error and won't erase anything.

Select a Mapping Profile


You may need to load data with similar account/dimension value information from separate GL/ERP/CRM systems. This could require similarly named source-side
members as part of more than one unique mapping. This results in similarly named source members being loaded into different sheets.

Users must define a linked profile before performing any column mapping.

Important: To use the Default profile you must explicitly link to it, even if it's the only profile available.

Mappings created within a planning loader by default have all mappings in a default, global mapping set: all mappings created are within a single unified mapping
set, with a behavior similar to the one in Adaptive Planning, where there can be no two different maps with the same source member name.

You can save account/level/dimension value mappings for your planning loaders in a new mapping profile for each loader and assign it a name. When you create a
loader, you can then attach either the default profile or the new mapping profile. This is useful if you are creating a large number of planning loaders.

For example, if you are extracting information from multiple different systems such as Workday, NetSuite, and Salesforce, or if you have multiple subsidiaries, you
can use mapping profiles to easily create a large number of mappings. If there are multiple planning loaders in the same Integration instance, the loaders can link to
either the default mapping profile, or can link to a different mapping profile.

Most users do not need to use something other than the default mapping profile. If you don't think you need to use this, you probably don't.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 79/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Understanding Mapping Profiles


Suppose you had the following members on the Source and Planning sides:

Source1:

Acct1
Acct2

Source2:

Acct1
Acct3

Planning:

Acct10
Acct11
Acct12

You can create the following mappings:

Loader 1: Profile 1: Acc1 <-> Acct10


Loader 2: Profile 2: Acc1 <-> Acct11

Using Mapping Profiles


You link the mapping profile to a planning loader as part of the loader creation process.

1. After completing the Data Source Settings, select the Profile tab.
2. Select the mapping profile you want to use.

You can create a new mapping profile by clicking New at the bottom of the page. You then enter the name of the new mapping profile and click Save. You can also
clone a profile from an existing mapping profile.

Cloning copies all the mappings from an exisn’tting profile into a newly cloned profile. This helps if you want to inherit mappings from an existing profile and then
make changes to some of the mappings that should not affect the original profile. To clone a profile, click the Clone button and then specify the profile to clone from,
as well as the name of the new profile.

Mapping Profile Tips

When a loader is created, it has the default profile linked to it unless you specify another profile in the Profile tab.
When you create a new profile, it is initially empty. Mappings from the default profile are not copied into it. If you need to duplicate mappings, you must use
Clone.
If you change the linked profile from a named profile to the default profile, only new mappings come in. Integration does not check for conflicts. However, if
the default profile doesn't have any staging values that exist in the staging columns mapped in this loader, then these staging values come into the default
profile as unmapped values when you click the Data Mapping tab.

External Systems
You can double click a profile in the Profiles tab to associate that profile with an external system to allow drill-through on Adaptive Planning sheet and report data.

When a user clicks a drill-through link, Adaptive Planning connects to the external system and reveals the underlying transactions for the data.

Associating a profile with an external system is optional. Only set up an external system to enable drillback to Workday or NetSuite drill-through in Adaptive
Planning.

Warning: Do not associate a profile with an external system if you do not plan on using Drill-through in Adaptive Planning.

Basic Steps for Creating an External System


Create an external system and give it a name.
Set up external system settings so that Adaptive Planning knows where to connect and what account or credentials to use.
Set up external dimension mappings to identify how dimensions on the external system map into the dimensions in Adaptive Planning.
Set up tuple SQL columns if multiple external columns map to one Adaptive Planning dimension

Set Up a Workday External System


Follow the steps described here.

Set Up a NetSuite External System


Follow the steps described here

Configure Column Mapping


After you link a profile in the Profiles tab, you must map the staging columns to columns in Adaptive Planning.

Important: You cannot perform column mapping until you link a profile.

To map staging columns to Adaptive Planning columns:

The Column Mapping page has four columns. You can complete the entire mapping process with just the Source Id Column. The only requirement is that the
Source Id column must contain unique values from the data source. In cases where the information in the Source Id Column is easily understandable, or if you need
further context for what the identifier represents, you can include an optional source display name column to make it easier to map source values. If you use the
Source Display Name Column in the mapping, its values are used in the member mapping UI; otherwise, the values from the Source Id Column are used.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 80/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

1. Select the Column Mapping tab.


Status: Indicates if a particular Planning column is mapped.
Key: Indicates if the Planning Column participates in an Import key for a modeled sheet by displaying a key icon.
Planning Column: Displays all the Planning columns available for mapping on a sheet. The list of Planning columns includes a set of mandatory
Planning columns, followed by all other dimensions defined in the model. Map only the dimensions in the Planning columns you want to import.
Unmapped columns won't import anything when the loader runs. Mandatory Planning columns are indicated by bold text with an asterisk and include
a value column (labeled Actuals Version Value if the import type is Actuals or Plan Version Value if the import type is Plan), Accounts, Level, and any
other mandatory column specified on a particular sheet. The account will display on sheets and reports by its name when creating an account
mapping in a loader. The exception is in Matrix reports where you have the option to display an account code next to the account name. Non-
mandatory columns include any other Planning column on the sheet (typically all custom dimensions). Actuals or Plan Version Value if the import
type is Plan), Accounts, Level, and any other mandatory column specified on a particular sheet. Non-mandatory columns include any other Planning
column on the sheet (typically all custom dimensions).
Source Id Column: Displays all columns within the staging table chosen in the data source settings.
Source Display Name Column: Displays optional display names to simplify the mapping process.
2. Select an unmapped column and click the down arrow. A list of columns you can map to appears in the drop-down.
3. As you map the columns, the status indicator changes from red to green. You do not need to map every dimension. Map only the ones you need to import.
Unmapped columns will not import.

If there are a lot of Planning columns to map, you can use the Show filter at the upper left of the page. You can select any of the following options:

All: Shows all Planning columns.


Required: Shows all required Planning columns.
Unmapped: Shows all unmapped Planning columns.
Mapped: Shows all mapped Planning columns.

You can use the Search field to find staging columns. Enter a complete or partial name to search and click the magnifying glass. Any staging columns matching the
search appear in the staging column.

Note: When you see red exclamation marks for non-mandatory Planning columns in Column Mapping they do not indicate an error. Red exclamation marks simply
mean you did not provide a mapping and nothing will import for those Planning columns when you run the loader.

Configure Data Mapping


After you configure the settings for the loader and map staging columns to planning columns, map the accounts, levels, and dimension members within those
columns to their corresponding planning column members in Adaptive Planning. The data mapping overview summarizes the mapped, unmapped, and invalid
staging members, showing numbers for each. Select a number to navigate into the data mapping page for that category and status of mapping.

Once you navigate into the account mapping, level mapping, or dimension mapping page within the data mapping tab, you can see the mapping status for every
member in that category.

Important: Map all accounts, levels, and dimensions, or create explicit business rules to filter out records containing unmapped values. If a loader encounters an
unmapped value during final import, the loader status errors out as Failed.

Requirements for Data Mapping and Drilling Into NetSuite

Important: If you import data from NetSuite and want to configure drill-through to NetSuite based on NetSuite's standard categories of Account, Time Period,
Subsidiary, Department, Class, Location, Item and Customer, you must configure the NetSuite internal identifiers for each of these dimensions as part of your
column and data mapping steps.

Data Mapping Status


Each member in an account, level, or dimension data mapping category gets one of these statuses:

Mapped: Staging members that map to a planning member in Adaptive Planning.


Unmapped: Staging members that are not mapped to a planning member in Adaptive Planning.
Invalid: Staging members that were mapped at some point to a planning member, but that planning member was deleted in Adaptive Planning.

Map Account, Level, and Dimension Staging Column Members


You can map individual account, level, or dimension members within the staging columns to their corresponding planning members in Adaptive Planning.

You can import and map calculated accounts with data entry override for a plan version.

1. Select Data Mapping.


2. Select a linked number in the Data Mapping Overview page or select the category link for Account Mapping, Level Mapping, or Dimension Mapping.
3. Select a mapping status in the Display drop-down. Display shows all mappings by default.
4. (Optional) Enter a term in Search to filter the results for your display selection from the previous step.
5. Select a Planning Value for a Staging Value by browsing or searching the hierarchical view of Adaptive Planning.
6. Select Apply.
7. Select Save.

Create a New Data Mapping


You can create a new mapping in anticipation of a new data import containing new staging members. New mappings help with scheduled loader runs when you
know that a particular member value will appear in a future import. Completing a new mapping prevents the loader from failing due to an unmapped or invalid value.

1. Navigate to the Account mapping, Level Mapping, or Dimension Mapping page within Data Mapping.

2. Select the gear icon for mapping settings.


3. Select New Account, Level, or Dimension Mapping.
4. Enter a Staging Value exactly as you expect it to appear in your future import. For a new account mapping, also enter the staging display value for the
account.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 81/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

5. Select a Planning Value to map to the Staging Value you selected in the previous step.
6. Select Apply.
7. Select Save.

Upload Data Mappings


You can download a mappings template to upload mappings for account data mappings, level data mappings, or dimension data mappings.

1. Navigate to the Account mapping, Level Mapping, or Dimension Mapping page within Data Mapping.

2. Select the gear icon for mapping settings.


3. Select Upload Mappings.
4. Select Download Template in the Upload Mappings dialog.
5. Open the downloaded template Excel file and follow the instructions in the first sheet tab to populate the second sheet tab in the sheet with your mappings.
Save the template.
6. Select Browse and locate your edited Excel template file on your local computer.
7. Select Import.
8. Select Apply.
9. Select Save.

Download Data Mappings for Bulk Edits


You can download mappings to bulk edit and upload them. Use a downloaded mappings file to fill in a downloaded template file. For account data mappings, level
data mappings, or dimension data mappings you can download:

All mappings
Mapped Only
Unmapped Only
Invalid Only

1. Navigate to the Account mapping, Level Mapping, or Dimension Mapping page within Data Mapping.

2. Select the gear icon for mapping settings.


3. Select Download Mappings.
4. Select a download filter and wait for the system to prepare your download and enable the download button.
5. Select Download.
6. Select the gear icon again and select Import Mappings.
7. Select Download Template so that you now have two downloaded files: a downloaded mappings file and a downloaded template file.

Update Downloaded Mappings and Paste into Excel Template File


1. Open the downloaded mappings Excel file and make all your changes.
2. Copy all of the content from this file.
3. Paste the content into sheet two of the downloaded template excel file.
4. Save your populated Excel template file.

Upload the Populated Excel Template File

1. Select the gear icon and select Upload Mappings in the Planning Data Loader data mappings page for accounts, levels, or dimensions.
2. Select Browse and select your updated Excel template file.
3. Select Import.
4. Select Apply
5. Select Save.

Automap, Unmap, and Delete Data Mappings


Automap Data Mappings
You can automap staging members to planning members. The system searches for planning members that match staging members by name. For accounts, the
system matches by account code or account name. Automap will attempt to map both unmapped or invalid mappings. When an exact match happens, the staging
members map automatically.

1. Select the members to automap by selecting the checkboxes on member rows.


2. Select Automap.
3. Select Automap Selected.

Automap all unmapped members by selecting Automap All.

For accounts, you can select to automap by source ID column, or by source display name column. For both, you can automap by Account Code or Account Name.
Note: Custom dimension members always automap using dimension member names. You will not see an Automap dialog when you automap dimension members.

Unmap Data Mappings


Unmap one or more mappings by selecting Unmap then selecting Unmap Selected. Unmapping disconnects the mapping between staging and planning
members. You can disconnect all of the mappings at once by selecting Unmap All.

Delete Data Mappings


You can delete a mapping and its member information by selecting Delete and then Delete Selected. Deleting removes the member information completely, so that
you can start over with another staging table import. Select Delete All to delete all of the members and their information.
Important: You cannot retrieve any information from a deleted mapping.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 82/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Restrictions on Importing Member Data Mappings


Accounts
Group accounts, parent (roll up) accounts, system accounts, and metric accounts can not map.
You can import to a modeled sheet, but you can not import to modeled accounts because they are formula-driven and read-only.
You can not use the standard import to import data to GL (general ledger) or Custom accounts entered in cube sheets. You must use a cube sheet import for
cube sheets where Custom accounts show up.

Levels
Users with the Import Capabilities permission can import data into all levels, regardless of level ownership/access.
Linked levels can't map and can't import data.
Cube and modeled sheets show the full level hierarchy but only let you select levels assigned to those sheets. If a sheet isn't available on a level, that sheet
can not hold any data for that level.

Dimensions
You can map to any dimension for standard accounts (GL, custom, and assumption accounts).
Cube accounts can only map to dimension values and dimensions on cube sheets.
You can create mappings for modeled sheet selectors.
The import mapping namespace for dimension values shares across standard, cube, and modeled sheets.
If you create a mapping for standard import for a dimension's dimension value, and the dimension value also resides on a cube sheet, the standard
import mapping applies to that dimension value.
If a dimension is set to automatically create dimension members on data import, then staging columns mapped to that dimension don't need to be mapped.
These dimensions don't show up in the dimension mapping page because they will autocreate at import.

Create Business Rules


Business rules let you specify how to import data. You can create three types:

Skip accounts rule


Change signs rule
SQL filters

Create a Skip Accounts Rule


For numeric formatted accounts you can specify which accounts or ranges of accounts need to be skipped during a data load process. These accounts can only
contain numeric digits. The loader matches source accounts with codes specified within the skip account rules, and then discards those records from uploading to
Adaptive Planning.
Note: This rule applies to source accounts. The rule assumes that the staging rows contain account codes and that mappings are between staging account codes
and planning account codes.
You can set up rules for skipping individual accounts using account codes that specify alphabetic, numeric, and some special characters:

period (.)
underline (_)
hyphen (-)
colon (:)

Rules for account ranges can only use numeric characters. You can create as many skip account business rules as you want. To skip accounts that are in alpha-
numeric format, use the SQL filter in Business Rules.

1. Select Skip Accounts in Business Rules.


2. Select Add to open the account range dialog box.
3. Enter the account number or account number range.
4. Select Save Rule. Saved skip account rules appear on the Business Rules page.

Note: To create several skip account rules at once, select Create Another. When you then click Save Rule, the skip account rule saves and the Add Skip account
range dialog box stays open.

Create a Change Signs Rule


You can specify source accounts to have their values change signs.

The process for creating a change signs rule is virtually identical to that for creating a skip account rule. Any account that you specify in a change signs rule will
have the sign reversed when it is loaded into Planning.

Create an SQL Filter


You can use this feature to create SQL statements that specify which rows in the staging table are available for loading into Planning. Records that meet the filter
criteria are selected for loading into Planning.

To create a SQL filters:

1. On the Business Rules tab, select SQL Filter.


2. Click Edit.
3. Enter a SQL WHERE-clause expression in the field.

This filters out from the load any staging rows that do not match the expression. Click Apply to automatically check the SQL syntax of the filter. (If there are
any errors, the error is indicated in the expression.) For detailed SQL syntax help, you can click the link in the Notes section. The expression you entered
appears in the Business Rules page.

For additional information, click the online help link in the Notes section of the Edit SQL Filter dialog box.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 83/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Tips and Techniques


Saving Changes
You can save the changes you've made to the Planning loader at any time by clicking Save (and it's good practice to save your changes frequently). You can
discard any unsaved changes by clicking Close, then clicking No on the dialog box to discard the changes.

Run or Schedule the Loader


When you save a planning data loader with all of the required settings, you can run manually or schedule it to run as an Integration Task.

As with other loaders, you can import data from the source system or you can run the loader using staging values you already imported. At runtime, you can select
which of these behaviors you want by choosing the Bypass data import parameter to use the existing staging table for loading.
Important: Bypass data import isn’t available for spreadsheet data sources.
As part of the run process, the loader checks that the data in the staging table was mapped correctly using these rules:

Any row that contains an empty account/level value causes the loader to complete with a Failed status. The loader will complete importing all of the data it
can. If the loader is part of an integration task, the failed status causes the task to terminate and not run any additional loaders after the one with the failed
status.
For any row that contains an empty dimension value, the loader passes all rows (including those with a blank value for the dimension) to planning, which will
attempt to import that data using the "uncategorized" value for the blank dimension value.
When processing rows with missing mappings for account/level/dimension for standard and cube sheets, integration skips the row and does not write the
row to Planning. It also logs details of the issue. For modeled sheets, when a row with missing mappings is encountered, integration aborts the load with no
data written to Planning and reports the task as failed.

Note: If your load fails when reparenting levels and you receive the warning Level levelname cannot be moved with Proceed with Warnings set to 0, select
Proceed with Warnings and run the loader again.

Downloading the Output of a Planning Loader


You can download the output of a planning loader to a spreadsheet without loading data into Planning. This lets you manually check the data against your
requirements prior to loading it.

To download the output of a planning loader:

1. Select Preview loader output in the Actions pane.


2. Enter the preview loader output information.

The information you need to enter varies depending on the planning loader you're creating.

3. Click Preview loader output.

The loader runs, applying all transformations and business rules as part of the run. A status pop-up displays the steps executed as part of the loader run. If there is
data to be loaded, the loader creates a spreadsheet and sends an email notification with the output of the loader as a spreadsheet attachment.

Including the Planning Loader in an Integration Task


With a data source set up, you can create an Integration Task that runs this loader on a schedule automatically.

Any Integration Task can have one or more loaders. A task can contain other tasks, like a Planning Data Loader, a Planning Account Loader, or a Scripted Loader.

Tip: Best Practice: Have separate Integration tasks for each loader.

If a task contains multiple loaders, parameters from each loader display in a prompt when the task runs. If there is a common or shared parameter in the loaders
within a task, the task prompts for the parameter only once. You can select to override parameter prompts.

For scheduled runs of the task, default values of the parameters are used.

1.1.4.7.2 | Set Up NetSuite External System for Drill Through

You can set up an external system and associate it with a mapping profile in a Planning Data Loader to allow drill through from Adaptive Planning sheet and report
data into NetSuite. When a user clicks a drill through link, Adaptive Planning connects to the system and reveals the data's underlying transactions.

Associating a mapping profile with an external system is optional. Only set one up to enable drill through from Adaptive Planning to NetSuite.

NetSuite External Systems only support drilling from leaf levels, not rollup levels. NetSuite Basic supports drilling from rollup levels.

Prerequisites
Permissions required: Integration, Data Designer
Verify you have access to NetSuite data sources in your instance
Verify you created a NetSuite Credential for Token Based Authentication
When you create a new data source specifically for drilling, make a note of the NetSuite columns you want to map to data in Adaptive Planning .
Only the standard NetSuite dimensions (categories) of Account, Level, Customer, Item, and Department allow drilling

Navigation
Go to nav menu Integration > Data Designer

Basic Steps
1. Create an external system and give it a name.
2. Set up external system settings so that Adaptive Planning knows how to connect and what account and/or credentials to use.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 84/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

3. Set up external dimension mappings to identify how dimensions on the external system map into the dimensions in Adaptive Planning.
4. Configure tuple SQL columns if multiple external columns map to one Adaptive Planning dimension

Tip: Best Practice: Configure an external system for NetSuite before configuring a planning loader for the data source. After you create the external system, you will
need to return to the NetSuite data source to complete the drill through set up.
Warning: If you are importing data from NetSuite and would like to also configure drill through to NetSuite based on the standard categories Account, Time Period,
Subsidiary, Department, Class, Location, Item and Customer, then you will need to configure the NetSuite internal identifiers for each of these dimensions as part of
your column and data mapping steps in the Planning Data Loader.

Create an External System:


1. Expand External Systems in the Component Library panel on the right.
2. Click Create New External System.
3. In the Create New ... dialog, enter a name and click Create.

Set Up NetSuite External System Settings:


1. Select the External Source System, in the External System Settings tab. Select NetSuite, enter the Account ID used in NetSuite.
2. Select External Dimensions to view a list of the external system dimensions and drill through parameter names.

Set Up NetSuite External Dimension Settings


1. Click the External Dimension Mapping tab.
2. Double click a Planning Dimension. In the dialog, select an External Dimension to map it to. Click Apply.
3. A green status checkmark indicates the Planning Dimension successfully mapped to at least one external dimension. Click Save.

External Dimension Mappings


External Dimension mappings help when mapping two or more dimensions from an external system into a single planning dimension for drill through.

1. Select an External System listed in the Component Library to map additional external dimensions to a single Planning dimension.
2. Select the External Dimension Mapping tab and double click a Planning dimension to launch the mappings editor.
3. Select external dimensions. Selected dimensions shift to the top of the list, possibly out of view without scrolling up.
4. (Optional) Drag and drop the selected dimensions that shift to the top of to reorder them. Ensure that the order you configure matches the order you expect
them to load from NetSuite.
5. Enter a delimiter in the mappings editor. A delimiter is required when multiple external dimensions get selected.
6. Delimiters cannot exceed five characters in length and should not match any characters used in a dimension value (actual values in the tuple mapped
columns described later). Click Apply.
7. View the External Dimension(s) column to verify it indicates multiple external dimensions mapped to a single Planning dimension.
8. Click Save in the Actions panel after you finish mapping the Planning Dimensions the External Dimensions.

Configure Tuple SQL Columns For NetSuite


If you map multiple columns from NetSuite into a single dimension in Planning, then you need to create a Tuple SQL column in the staging table that you wish to
expose in the Planning loader.

If you do not require data from multiple NetSuite columns into the same Planning dimension, then you do not need to create a Tuple SQL column in the data
source.

If you plan to reuse an existing NetSuite data source to enable drill through and if you need to bring multiple NetSuite columns into a single Planning dimension, you
must redo that mapping using Tuple SQL columns. Reconfigure your loaders to ensure that the integration task can be valid. Make these types of changes in a test
environment and validate the changes there before rolling them out to a production system.

All of the following steps need to be completed to configure the Tuple SQL Column for drill through. Perform them only if you require data import from multiple
NetSuite columns into a single Planning dimension.

In order for Adaptive Planning to parse the different data items into the source NetSuite categories, you will need to specify which NetSuite source columns
combine to form a single column before importing this data into Planning.

The order in which the different NetSuite columns combine, and the delimiter specified, should match how the many-to-one column mappings are specified in the
NetSuite external system.

By indicating the constituent NetSuite columns and what their underlying NetSuite categories are, Adaptive Planning constructs drill through URLs on the Planning
sheet.

Important: Before you create a Tuple SQL column, ensure that you have configured the many-to-one column mapping in the NetSuite external system.

1. Select your NetSuite Data Source in the Component Library.


2. Select the table you want to enable drill through on in the Data Components panel on the left.
3. The table comes into focus in the Staging Area. Expand the custom column folder in the Data Components.
4. Drag and drop a Tuple SQL Column into the Staging Area. This column is available when at least one tuple mapping is defined in an external system.
5. Add a name, select a previously configured External System, and select the Planning Dimension that corresponds to the External Dimension Mapping
performed in the previous section.
6. Select the Mappings tab.
7. For each of the External Dimensions, map the corresponding table column.
8. Select Apply
9. Select Save in the Actions panel.

1.1.4.8 | Planning Dimension Loaders

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 85/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

1.1.4.8.1 | Create Planning Dimension Loaders

Note: Metadata loaders synchronize hierarchical information from source systems into the hierarchies of your planning model. Your hierarchies should already exist
in your source system before you attempt to synchronize.
Important: The Planning Dimension Loader requests are limited to updating a maximum of 10000 dimension values in a hierarchical dimension, or 40000 dimension
values in a flat dimension. These limits do not apply to creation of new dimension values within a loader request.

The Planning Dimension Loader lets you map metadata about dimension values from the staging area into Adaptive Planning. The primary benefit of the Planning
Dimension Loader is that it allows you to import dimensions values in bulk, instead of creating them one at a time within Modeling > Model Management >
Dimensions. Once you create a loader, you can run it manually or schedule it to run as part of an integration task.

To create a Planning Dimension Loader, follow this flow:

1. Enter Data Source Settings


2. Configure Column Mapping
3. Create Business Rules
4. Preview the Loader Output
5. Run or Schedule the Loader

Before You Start


The Planning Dimension Loader requires staging data from an import of an existing Data Source.

Enter Data Source Settings


The Data Source Settings let you choose what source table you want to use from staging data, select what Planning Dimension to load to, and whether or not new
dimension values should be created automatically.

1. Navigate to Integration > Designer Integrations.


2. Click Create New Loader In the Loaders area of the Component Library.
3. Select Planning Dimension Loader as the loader type. Enter a name for the loader.
4. Click Create.

Tip: Best Practice: Save frequently as you create and edit your loader by clicking Save in the Actions panel. You can discard any unsaved changes by clicking
Close, then clicking No.
Enter the Planning Dimension Loader general properties information:

Source Table: Select the source table from the dropdown list. The source tables in the list are all the tables available in the staging area you have access
to.
Planning Dimension: Choose a dimension from all of the dimensions for the source to load into. The dimensions listed come from Modeling > Model
Management > Dimensions.
Create dimension value if not found in Planning: Check the box to automatically create new dimension values found in the source system, but not found
in Modeling > Model Management > Dimensions. If this option is not checked, only updates to existing dimension values are performed and no new
dimensions are created.
If the dimension you load into does not have 'Data import automatically creates dimension values' enabled in Modeling > Model Management >
Dimensions, the loader will warn you.
Log Level: Choose the type of details logged when running the loader.
Error: Log serious errors only.
Info: Log basic information, such as when the loader was updated.
Verbose: Provide detailed information about all phases and actions. This level is used primarily for debugging or auditing, as it may produce more
log information than is practical for typical use.

Configure Column Mapping


Column Mapping lets you map columns from the data source to dimension values available in Modeling > Model Management > Dimensions.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 86/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

If there are several columns to map, you can use the Show filter to select:

All: Shows all Planning columns.


Required: Shows all required Planning columns.
Unmapped: Shows all unmapped Planning columns.
Mapped: Shows all mapped Planning columns.

You can use the Search field to find columns. Enter a complete or partial name to search for and click the magnifying glass. Any staging columns matching the
search appear in the results.

Map Columns

1. Click Column Mapping.


The Column Mapping tab contains:
Status: Indicates if a Planning column is mapped. A checkmark indicates a mapped column. An exclamation point indicates an unmapped
column.
Planning Column: Displays all of the Planning columns available for mapping on a sheet. The list of Planning columns include a set of mandatory
Planning columns, followed by all other Planning columns. Mandatory Planning columns are indicated by bold text with an asterisk and include a
value column. Non-mandatory columns include the Short Name and Description.
Source Column: Displays the columns within the staging table chosen from the Data Source Settings.
2. Select an unmapped column and click the dropdown. A list of columns you can map to appears in the dropdown list. As you map the columns, the status
indicator changes from red to green .

See Example: Load Dimension Values From Spreadsheet Data Sources for an example of how dimension values and their parents map to Planning.

Change Planning Dimension Value Names at Load


To change the name of a planning dimension value at load:

1. Select the Source Column that uniquely identifies the dimension value in the source.
2. Map the id column to the dimension value id.
3. Map the name to the dimension value name.

Unmap Columns
To unmap columns, click Unmap and choose:

Unmap All: Unmaps all of the the columns.


Unmap Selected: Unmaps only the columns that are selected.

Unmapping a column changes its map status icon to red .

Map Attributes Associated with List Dimensions

You can associate attributes with a list dimension by mapping columns from a data source import.

Note: Associating attributes with dimensions is only possible for list dimensions. You cannot associate attributes with hierarchical dimensions.

Within Adaptive Planning you can visit Model Management > Dimensions and click a dimension to view its details to find out if it is a list dimension.

Within Data Source Settings, select a list dimension as the Planning Dimension.

Attributes become available as columns within Column Mapping because the dimension is a list dimension.

Because list dimensions are not hierarchical, parentId is not an option for the Source Column.

Download and Upload Mappings


Note: Only available for a limited number of customers on a first-come first-served basis until generally available. Contact Workday Adaptive Planning Support to
enable this capability.
You can download, modify, then upload mappings for loaders to quickly resolve mapping errors. Uploads perform an all or nothing, replace-all action. Only 1 sheet
of mappings from the file processes on upload. Additional sheets of mappings will error out and cancel the upload.

1. Click Download Member Mappings in the Actions pane.


2. Download the .XLSX file. You'll also receive an email or a Workday notification with a download link for the mappings file.
3. Open the file and look up the staging table values in the mappings sheet causing errors.

Any cells marked (INVALID) in the Planning Code or Planning Name columns indicate this code no longer exists in Workday Adaptive Planning.

4. Correct the errors and click Upload Member Mappings to load the file. The Read Only column doesn't upload.
5. Run the loader again.

Note: Don't click Clear Member Mappings unless instructed by your implementation partner or Workday Adaptive Planning Support.

Create Business Rules


You can use Business Rules to create SQL expressions that limit what data in staging is available for loading. Only records that meet your filter criteria will load.
To create an SQL filter:

1. In the Business Rules tab, select SQL Filter. Click Edit.


2. Enter an SQL expression. You can click an item in the Available Columns list to bring that column into the SQL expression instead of typing it.
3. Click Apply to check your SQL syntax. Errors in your syntax turn the border around the expression red. Hover your cursor over the SQL editor to see syntax
error information.

For detailed SQL syntax help, you can click 'online help' in the Notes section of the Edit SQL Filter. You can also visit the SQL Expression Reference.

4. Correct any errors in your syntax and click Apply. Only staging rows that match the SQL expression will import when you run the loader.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 87/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Preview the Loader Output


You can preview the loader output before performing a full load to check that the mappings are the way you need them. You can also download its output as an
XML file to manually verify the dimension values from your data source against your requirements before loading them.

1. Click Preview loader output in the Actions panel


2. (Optional) Enter Preview Loader Output settings. The information you can enter varies depending on the data source you chose for this Planning Dimension
Loader. Changing the settings here imports new data into Staging tables and columns.
3. Click Preview loader output.

The loader runs, applying all transformations and business rules as part of the run. A status popup displays the steps the loader executed. If there are dimension
values to load, the loader creates an XML file and sends an email notification with the output of the loader as a zipped XML attachment.

An additional popup lets you download the preview loader output as a zipped XML file after the loader succeeds. The download popup may take a moment to
appear depending on the number of dimension values and the size of the file.

Fix Validation Errors


When dimension values are loaded, the source data is validated for the following errors:

The source Id value for the dimension value is missing (empty) in the data.
There are duplicate Source Ids in the data. Source Ids must be unique.
A dimension value name is missing (empty) in the data.
There are duplicate dimension value names in the data.
A ParentId is the same as the Source Id in the data. In this case, the column is referring to itself as its parent.
When importing a sub tree, the root of the sub tree maps to an existing node in Planning. In this case, the parentID is not in the source data for a new node
being introduced to Planning.
An existing node is moved under a new node and the Create New flag is disabled. In this case, an existing dimension value is moving into a new node when
the loader has been explicitly told not to make new dimension values.
The data has a cyclic reference in its hierarchy. In this case, a ParentId is referring to its own child as its parent.

Run the Loader


After saving a Planning Dimension Loader with all the required configuration settings, the loader can be run manually or run as a scheduled integration task.
Important: Wait about 15 - 30 minutes between each Planning Dimension Loader run so that the Adaptive Planning has time to synchronize with your import. Larger
imports take longer to synchronize. Wait time depends on model size and other factors.

You can import directly from the source system or you can run the loader using staging values that were already imported. When the loader runs, select which of
these behaviors you want. Choose Bypass data import to use the existing staging table for loading. Bypassing data import is not available when using
spreadsheets as data sources.

As part of the run process, the loader checks that the data in the staging table has been mapped correctly. Multiple validations are applied during the load. Any
errors that occur during the load indicate what needs to be resolved for a successful import.

Include the Planning Dimension Loader in an Integration Task


Any integration task can contain one or more loaders. A task can also contain other integration tasks as well as Discovery metric loaders and scripted loaders.
Tip: Best Practice: Have separate Integration tasks for each loader.

If a task contains multiple loaders, then parameters from each loader are presented when the task is run. If there is a common/shared parameter used in the
loader(s) within a task, then the task only prompts for the parameter once. You can choose to override parameter prompts.

For scheduled runs of the task, the default values of the parameters stored when the loaders were created are used.

Troubleshooting Messages and Warnings


For an explanation of the messages logged during a load, see Planning Dimension Loader Log Messages.

Load Changes to a Source Dimension Value


The Planning Dimension Loader can rename a dimension value at load if a mapping was already established to the source dimension value.

This table illustrates the mappings the loader already established. The source dimension value 'USA' maps to the source id column '1001'.

Planning Dimension Value Source id column Source dimension value

USA 1001 USA

Canada 1002 Canada

In the source system, if 'USA' changes to 'United States', then the Planning Dimension Loader can apply this change at load because the loader maintains the
mapping between the source id column '1001' and Planning's internal id for the dimension value 'USA'.

Planning Dimension Value Source id column Source dimension value

USA 1001 United States

Canada 1002 Canada

Running the loader will change the dimension value in Planning from 'USA' to 'United States'.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 88/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

1.1.4.8.2 | Example: Load Dimension Values From Spreadsheet Data Sources

This example illustrates loading a CRM Customer list from a spreadsheet data source into Adaptive Planning using the Planning Dimension Loader. It assumes a
hierarchical dimension called Customer already exists.

The end goal is to add several dimension values directly under the hierarchical Customer dimension as a collection of CRM Customers, so that the tree looks like:

Customer
|__Customer 1
|__Customer 2
|__CRM Customers
|__R.G. Barry Corporation
|__Sierra Bancorp
|__SkullCandy, Inc.
...
|__StoneMore Partners L.P.
|__ScanSource, Inc.
...

Format the CRM Customer Spreadsheet


Spreadsheets used to import into the Planning Dimension Loader require specific formatting to indicate which dimension values are parents and which are children.
Three columns are required:

Id: The unique identifier for the dimension value in the source system.
ParentId: The Id for the parent of the dimension value in the source system if it has a parent.
Name: The name of the dimension in the source system that ideally should match the Planning dimension value if it exists in Planning for the first run of the
loader.

The Id column uniquely identifies each dimension value. The ParentId column indicates the Id the dimension values point to as their parent. To load at the root,
ParentID should be null.

Option Description

1 ID column

2 ParentId column

Notice that CRM Customers has an Id of 3. This Id of 3 is referenced in the ParentId column to flag all of the dimension values that will become its children.

The dimension Customer does not need to be included in the spreadsheet because it will be selected in the Data Source Settings of the loader.

Create a CRM Sheet Data Source for the Planning Dimension Loader
Using the spreadsheet shown above, create a spreadsheet data source called CRM Sheet.

Import the sheet contents for the data source to populate the staging area.

Configure Planning Dimension Loader Settings


After the spreadsheet data source is created and its data populates into the staging table, the loader can be configured.

Data Source Settings


The Source Table is the CRM Sheet data source's Sheet1. This example only uses the CRM Sheet data source, but you can see the other data sources in the list.
Planning Dimension Loaders can access any staging data, regardless of the data source.

Select Customer as the Planning Dimension.

Enable Create dimension value if not found in Planning.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 89/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Column Mapping
Because of the data source spreadsheet's format and columns, the column mappings for this loader should be:

Planning Column Source Column

Parent Id ParentId

Customer Id Id

Customer Name Name

This example does not need any business rules.

Save the loader by clicking Save in the Actions Panel.

Preview the Loader Output


Once the loader is saved, click Preview Loader Output in the Actions Panel.

Review the Preview Loader Output Status to verify that no errors occur.

Run the Loader


With a successful preview of the loader output, this loader is ready to load. Click Run manually in the Actions Panel to run it.

The loader is also ready to be included in a scheduled Integration Task that could run automatically.

View the Loaded Dimension Values


The screenshot below illustrates the results of loading the Customer dimension values. The left side pane shows the expanded tree within Modeling > Model
Management > Dimensions. The drop-down value C8 shows the spreadsheet formatted for import. If the ParentId column is left blank, the planning dimension you
choose in the Planning Dimension Loader Data Source Settings dropdown becomes its parent.

Option Description

1 Dimension Values Pane: Customer and CRM Customers hierarchy

2 Spreadsheet formatted for import

3 Parent Id column

Customer, at the top of the Dimension Values list on the left, was selected as the Planning Dimension in the Data Source Settings dropdown within the loader.

Reparent Dimension Values


To reparent existing dimension values with the loader, provide the Id of the new parent in the ParentId column of the dimension value you need to move. Example:
Using the result of the example above, if you wanted CRM Customers to become a child of Customer 1 so that the tree looks like:

Customer
|__Customer 1
|__CRM Customers
|__R.G. Barry Corporation
|__Sierra Bancorp
|__SkullCandy, Inc.
...
|__Customer 2
|__StoneMore Partners L.P.
|__ScanSource, Inc.
...

The data source spreadsheet would look like:

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 90/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Option Description

1 ID column

2 ParentId column

Customer 1 has an Id of 1. It will become the parent of CRM Customers as indicated in the parentId column for CRM Customers.

The result of loading this spreadsheet would be:

Notice that Customer 1 is the parent of CRM Customers as indicated by the parentId column in the spreadsheet.

Associate Attributes with List Dimensions


You can associate attributes with list dimensions by mapping them without indicating a parentId.

A list dimension is a dimension that is entirely non-hierarchical. It has no sub-dimensions and no hierarchy of dimension values, only a flat list of values.

A spreadsheet data source for the list dimension Product would have columns for each of its dimension attributes such as Group, Color, and Size.

The columns for Group, Color, and Size contain the attributes for the product dimension.

Select a list dimension in the loader Data Source Settings.

The attributes for Product become available as columns within Column Mapping because this dimension is a list dimension.

These additional columns would not be available for column mapping if this were a hierarchical dimension.

1.1.4.8.3 | Planning Dimension Loader Log Messages

Important: The Planning Dimension Loader requests are limited to updating a maximum of 10000 dimension values in a hierarchical dimension, or 40000 dimension
values in a flat dimension. These limits do not apply to creation of new dimension values within a loader request.

Details
The Planning Dimension Loader logs the create, update, error, and warning messages generated during a load.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 91/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Each line item in the log contains a maximum of 100 dimension value entries. Hovering an item in the log shows the updated or created items. You can download
the full log of the load as a spreadsheet by clicking .

Tip: Best Practice: Download your logs if you need them at a later date. They remain available up to 1 week following a loader run.

Details for Import Dimension Values


This message provides a URL you can use to retrieve a zipped XML file of the full updateDimensions API response to your loader run.

When you visit the URL, you end up on a page that describes the file and lets you download it. Downloads are deleted after seven days.

The zip download contains the XML of the full response.

<?xml version='1.0' encoding='UTF-8'?>


<response success="true">
<messages>
<message type="INFO">Dimension was saved successfully.</message>
</messages>
<output>
<dimensions>
<dimension id="4" name="CountryRegion" shortName="" autoCreate="0" listDimension="0" keepSorted="0" useOnLevels="0" status="">
<dimensionValue id="132" name="Venezuela" shortName="VEN" description="Land of the Anaconda" status="updated" />
</dimension>
</dimensions>
</output>
</response>

Create/Update Message
These messages appear for successful creation or update of dimension values.

Example Create/Update Message

The following dimension values were updated Product A3, Product A1, Product A2.

Warning Message
These messages appear for list dimensions when the loader encounters attribute values in the source that are not found in Adaptive Planning. The Planning
Dimension Loader does not automatically create attribute values.

Example Warning

The following values were not recognized for attribute Color: Mauve

Error Message
These messages appear when the loader encounters a dimension value in the source that already exists the Adaptive Planning.

Example Error

Following Source Dimension have duplicate name: 2,3

Error and Warning Message Descriptions

Type Message Example/Description

Error Internal error. An error occurred in the system.

Error System dimensions cannot be Only custom dimensions can be updated.


updated via API.

Error Id "{0}" does not exist. Id "456" does not exist. The id indicated does not match any id in the system.

Error {0} "{1}" must be an integer value Dimension id "-3" must be an integer value within range from 1 (inclusive) to 2,147,483,647 (inclusive).
within the range {2} (inclusive) to {3}
(inclusive).

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 92/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Type Message Example/Description

Error The {0} "{1}" cannot be more than {2} The dimension name "more-than-5-chars" is too long. It cannot be more than X characters in length.
characters long.

Error The {0} can not be empty. The dimension name can not be empty.

Error A dimension with the name "{0}" A dimension with the name "Product" already exists.
already exists.

Error The "{0}" is too long. It cannot be more The short name "more-than-5-chars" is too long. It cannot be more than 5 characters in length.
than {0} characters long.

Error A dimension with id "{0}" does not A dimension with id "123" does not exist." The id indicated for a dimension does not match any id of a
exist. dimension in the system.

Error {0} "{1}" must be an integer value Dimension value id "-3" must be an integer value within range from 1 (inclusive) to 2,147,483,647
within the range {2} (inclusive) to {3} (inclusive).
(inclusive).

Error The {0} "{1}" cannot be more than {2} The dimension value name "more-than-5-chars" is too long. It cannot be more than X characters in
characters long. length.

Error "{0}" is NOT allowed as name. "This" is not allowed as a name. "This" is a reserved word that cannot be used as a name. Applies to
dimension value names only.

Error The {0} can not be empty. The dimension value name cannot be empty.

Error A dimension value with the name "{0}" Dimension value names must be unique within a dimension.
already exists.

Error "{0}" is duplicated for IDs {1}. "Computers 2A" is duplicated for IDs 50, 69.

Error Found {0} new entities in the payload Found 2 new entities in the payload with value "Computers".
with value "{1}".

Error Missing Dimension/Dimension value No dimension or dimension value was defined.


in provided input.

Error Illegal Input. Input data must be an The input was not XML.
XML document.

Error A dimension value cannot be its own A dimension value referred to itself as a parent.
parent.

Error Parent node "{0}" is becoming the Parent node "2" is becoming child of its current direct/indirect child node "3". A parent is set to become
child of its current direct/indirect child the child of itself or one of its children.
node "{1}".

Error Invalid {0} "{1}". Invalid dimension name "foo(+)". Invalid dimension name "foo(-)." + and - are invalid characters for a
dimension name.

Error Invalid {0} "{1}". Invalid dimension value name "foo(+)". Invalid dimension value name "foo(-)." + and - are invalid
characters for a dimension value name.

Warning Both useOnLevels and listDimension List dimensions cannot have parents.
cannot be "1" at the same time.

Warning Invalid "autoCreate" value "x". The Illegal values for fixed-value properties (e.g. listDimension="1999") leaves the property unchanged and
value must be "1" or "0". generates a warning.

Warning Invalid "listDimension" value "w". The Illegal dimension names and dimension value names (length restrictions and character restrictions) are
value must be "1" or "0". warnings and leaves the element's property unchanged

Warning Invalid "keepSorted" value "z". The Attempting to change a listDimension or useOnLevels setting to an illegal combination will be a
value must be "1" or "0". warning and leaves the flag unchanged.

Warning Invalid "useOnLevels" value "y". The Attempting to create an invalid version visibility combination (stating allVersions=true but then
value must be "1" or "0". specifying versions) is a warning and will ignore the conflicting "visible" setting, and will respect the
allVersions setting.

Warning A list dimension value cannot have List dimensions are not hierarchical and should not have parents.
parents.

Warning A dimension value name cannot be Dimension values cannot have the same name as their dimension.
the same as its dimension name.

Warning The {0} "{1}" cannot be more than {2} The dimension value short name "more-than-5-chars" is too long. It cannot be more than 5 characters
characters long. in length.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 93/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Type Message Example/Description

Warning The provided dimension attribute {0} is An attribute was provided in the input, but that attribute is not associated with the indicated dimension.
not associated with the dimension {1}.

1.1.4.9 | Planning Level Loaders

1.1.4.9.1 | Create Planning Level Loaders

Note: Metadata loaders synchronize hierarchical information from source systems into the hierarchies of your planning model. Your hierarchies should already exist
in your source system before you attempt to synchronize.

The Planning Level Loader lets you map metadata about organizational hierarchies from the staging area into Adaptive Planning.Use the planning level loader to
import levels in bulk, instead of creating them one at a time in the levels admin. Once you create a loader, you can run it manually or schedule it to run as part of an
Integration task.

Watch the video: 1m 36s

Basic Steps
Enter data source settings
Configure column mapping
Create business rules
Preview the loader output
Run or schedule the loader

Prerequisites
The Planning Level Loader requires staging data from an import of an existing Data Source. Make a note of what data source you want to use.

Required Permissions: Integration Operator, Data Designer

Navigation

From the nav menu, go to Integration > Design Integrations

Enter Data Source Settings


The Data Source Settings let you choose the source table you want to use from integration staging data, and indicate whether to create new levels automatically.
Tip: Best Practice: Save frequently as you create and edit your loader. Click Save in the Actions panel. To discard any unsaved changes click Close, then click No.

1. Click Create New Loader In the Loaders section of the Component Library.
2. Select Planning Level Loader as the loader type. Enter a name for the loader.
3. Click Create.
4. Enter the Planning Level Loader general properties information:

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 94/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Source Table: Select the source table from the dropdown list. The source tables in the list are of all the tables available in the staging area you have
access to.
Create level if not found in Planning: Check to automatically create new levels found in the source system, but not found in Modeling > Model
Management > Levels. Uncheck update only existing levels in your model.
Propagate applicable level updates to children: Check to update child levels if the change involves a cascading property. If this is unchecked only
the level explicitly updated will change.
Delete workflow items when disabling workflow: Check to delete items within workflow if you disable workflows. If this is unchecked, workflow
items will not get deleted when workflow is disabled.
Delete inaccessible actuals when updating level availability: If the start or end date for actuals on a level changes to make actuals inaccessible,
delete the actuals data that can't be accessed.
Publish pending admin publishing changes: If Admin Publishing has pending workflow changes, check to publish the changes.
Maintain existing order in Planning: Select to keep the existing level sort order already used in Adaptive Planning.
Log Level: Choose the type of details to capture when running the loader.
Off: No errors logged.
Error: Log serious errors only.
Info: Log basic information, such as when the loader was updated.
Verbose: Detailed information about all phases and actions. Used primarily for debugging or auditing.

Configure Column Mapping


Column Mapping lets you map columns from the data source to levels available in Modeling > Model Management > Levels. You can unmap columns to ignore
the staging data you don't want to load. You can also unmap columns one at a time following loader runs to troubleshoot which columns generate errors in the logs.
Important: The only way to get a list of the existing Level IDs is to use the exportLevels API. Level ID does not appear anywhere in the application UI.The Source ID
Column for Levels becomes the Level ID when you load.
If there are several columns to map, use the Show filter to select:

All: Shows all Planning columns.


Required: Shows all required Planning columns, like Parent ID and Level.
Unmapped: Shows all unmapped Planning columns.
Mapped: Shows all mapped Planning columns.

Use Category to select:

Level Details: Shows columns that relate to level details, including Short Name, Currency, and In Workflow. In Workflow must be a boolean value of 1 for
true or 0 for false.
Elimination Settings: Shows columns that relate to elimination settings, including elimination level, and elimination trading partner. These boolean values
must be either 1 for true or 0 for false.
Version Settings: Shows columns that relate to version settings, including actuals start, and actuals end. These values should be date formats like
01/01/2010.
Level Attributes: Shows columns that relate to level attributes.
Level Dimensions: Shows columns that relate to level dimensions.

You can use the Search field to find columns. Enter a complete or partial name to search for and click the magnifying glass. Any staging columns matching the
search appear in the results.

Map Columns

1. Click Column Mapping.


2. Select an unmapped column from the drop-down. Columns available for mapping display in the list. As you map the columns, the status indicator changes
from an exclamation point to a check mark .

The Column Mapping tab has these columns:

Status: A checkmark indicates a mapped column. An exclamation point indicates an unmapped column.
Planning Column: Displays all of the Planning columns available for mapping on a sheet. The list of Planning columns include a set of mandatory Planning
columns, followed by all other Planning columns. Mandatory Planning columns are indicated by bold text with an asterisk and include a value column. Non-
mandatory columns include the Short Name and Currency.
Source Column: Displays the columns within the staging table chosen from the Data Source Settings.

Map Parents of Levels


The Parent Id column indicates the id of a level's parent. To load to the highest level in a hierarchy, the Parent Id value in source data must be empty. Parent Id
must also be empty If you want to create a child level underneath the top level.

See Example: Load Levels From Spreadsheet Data Sources for an example of how levels and their parents map to planning.

Unmap Columns
To unmap columns, click Unmap and choose:

Unmap All: Unmaps all of the the columns.


Unmap Selected: Unmaps only the columns that are selected.

Unmapping a column changes the status icon to an en exclamation point .

Tip: Best Practice: Along with unmapping to troubleshoot errors and ignoring columns you can use unmap to help with change management. When new columns
get introduced in a data source, you can unmap the older columns to map the new ones.

Download and Upload Mappings


Note: Only available for a limited number of customers on a first-come first-served basis until generally available. Contact Workday Adaptive Planning Support to
enable this capability.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 95/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

You can download, modify, then upload mappings for loaders to quickly resolve mapping errors. Uploads perform an all or nothing, replace-all action. Only 1 sheet
of mappings from the file processes on upload. Additional sheets of mappings will error out and cancel the upload.

1. Click Download Member Mappings in the Actions pane.


2. Download the .XLSX file. You'll also receive an email or a Workday notification with a download link for the mappings file.
3. Open the file and look up the staging table values in the mappings sheet causing errors.

Any cells marked (INVALID) in the Planning Code or Planning Name columns indicate this code no longer exists in Workday Adaptive Planning.

4. Correct the errors and click Upload Member Mappings to load the file. The Read Only column doesn't upload.
5. Run the loader again.

Note: Don't click Clear Member Mappings unless instructed by your implementation partner or Workday Adaptive Planning Support.

Create Business Rules


You can use Business Rules to create SQL expressions that limit the staging data that is available for loading. Only records that meet your filter criteria will load.

The Business Rules tab contains a text area for entering SQL.

To create an SQL filter:

1. In the Business Rules tab, select SQL Filter. Click Edit.


2. Enter an SQL expression. You can click an item in the Available Columns list to bring that column into the SQL expression instead of typing it.
3. Click Apply to check your SQL syntax. Errors in your syntax turn the border around the expression red. Hover your cursor over the SQL editor to see syntax
error information.

For detailed SQL syntax help, click online help in the Notes section of the Edit SQL Filter. See the SQL Expression Reference for more.

4. Correct any errors in your syntax and click Apply. Only staging rows that match the SQL expression will import when you run the loader.

Preview the Loader Output


You can preview the loader output to check the mappings and fix validation errors before running the loader.
When the preview loader output or manual load runs, the source data is validated for errors. Examples of the validations include checks if:

A sub level is created without indicating its parent level.


A level attribute is assigned an attribute value it can't find.
The source ID value for the level is missing (empty) in the data.
There are duplicate Source IDs or level names in the data. Source IDs must be unique.
A ParentId is the same as the Source ID in the data. If so, the column is referring to itself as its parent.
When importing sub levels, the root of the sub level maps to an existing node in Adaptive Planning. The parentID is not in the source data for a new node
introduced to Adaptive Planning.
An existing node moved under a new node and the Create New flag is disabled. An existing level is moving into a new node when the loader was set to not
make new levels.
The data has a cyclic reference in its hierarchy. A ParentId is referring to its own child as its parent.
A level is set as an elimination trading partner and one of its child levels is set as an elimination level. A level set as an elimination trading partner can't have
a child that is an elimination level.

You can also download the preview output as an XML file to manually verify the levels from your data source against your requirements before loading them.

1. Click Preview loader output in the Actions panel.


2. (Optional) Enter Preview Loader Output settings. The information you can enter varies depending on the data source you chose for this Planning Level
Loader. Changing the settings here imports new data into Staging tables and columns.
3. Click Preview loader output.

The loader runs, including all transformations and business rules. A status popup displays the steps as the loader executes. If levels are available to load, the
loader creates an XML file and sends an email notification with the output as a zipped XML attachment. If no levels load, the zip will contain a message indicating
none loaded.

An additional popup lets you download the preview loader output as a zipped XML file after the loader succeeds. The download popup may take a moment to
appear depending on the number of levels and the size of the file.

Run the Loader


After saving a Planning Level Loader with the required settings, run the loader manually or run it as a scheduled integration task.
Important: Wait about 15 - 30 minutes between each Planning Level Loader run so that Adaptive Planning has time to synchronize with your import. Larger imports
take longer to synchronize. Wait time depends on model size and other factors.

To run the loader manually, click Run Manually in the Actions panel.

You can load levels directly from the source system or you can run the loader using staging values that were already imported. When the loader runs, select which
of these behaviors you want. Choose Bypass data import to use the existing staging table for loading. Bypassing data import is not available when using
spreadsheets as data sources.

As part of the run process, the loader checks that the data in the staging table has been mapped correctly. Multiple validations are applied during the load. Any
errors that occur during the load indicate what needs to be resolved for a successful import.

Include the Planning Level Loader in an Integration Task

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 96/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Any integration task can have one or more loaders. A task can contain other integration tasks, like metric loaders and scripted loaders.
Tip: Best Practice: Have separate Integration tasks for each loader.

If a task contains multiple loaders, parameters from each loader display in a prompt when the task runs. If there is a common or shared parameter in the loaders
within a task, the task prompts for the parameter only once. You can choose to override parameter prompts.

For scheduled runs of the task, default values of the parameters for the loaders get used.

Troubleshooting Messages and Warnings


See Planning Level Loader Log Messages for descriptions of the messages logged during a load.

1.1.4.9.2 | Example: Load Levels From Spreadsheet Data Sources

This example illustrates loading a list of levels from a spreadsheet data source into Adaptive Planning using the Planning Level Loader. It assumes a level called
Total Company already exists as the top level of the organization:

The end goal is to add two new levels Sales - South East and Sales - South West under the existing level Sales - South. After loading, the level structure
you see in the Levels admin will end up looking like:

Total Company
|__Company A (100% owned)
|__Operations
|__United States
|__Sales - North
|__Sales - South
|__Sales - South East
|__Sales - South West
|__Sales - East
|__Sales - West
|__Services - East
|__Services - West
|__Support
|__Canada
|__United Kingdom
...

Format the Levels Spreadsheet


Spreadsheets used to import into the Planning Level Loader require specific columns to indicate which levels are parents and which are children.
These columns are required:

id: The unique identifier for the level in the source system.
Level: The name for the level in the source system.
ParentId: The unique identifier for the parent level in the source system.

The id column uniquely identifies each level. The ParentId column indicates the id of a level's parent. To load to the highest level in a hierarchy, ParentId must be
empty. ParentId must also be empty If you want to create a child level underneath the top level.

Option Description

1 ParentId column

2 Sales - South

3 Sales - South East and Sales - South West

ParentId value is blank for Company A (100% owned). This means Company A (100%) is the child of the highest level in the organization, Total Company. To load
new levels beneath id columns of Sales - South, the rows for Sales - South East and Sales - South West reference Sales - South in the ParentId
column. These two new levels will get Sales - South as their parent.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 97/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Important: Always include the full level tree of parents above the levels you intend to load. The loader needs to know how to distinguish levels with the same name
that sit under different parents. An organization can have a West for Sales and a West for Marketing. Loading the full tree of parents is how to handle duplicate
names in different levels.

Boolean columns, like in workflow, elimination level, and elimination trading partner require either a 1 for true, or a 0 for false. Other characters should not be used
in boolean columns.

Create a Data Source for the Planning Level Loader


Create a spreadsheet data source and name it, such as Levels Sheet.

Import the sheet contents for the data source to populate the staging area.

Configure Planning Level Loader Settings


Configure the loader after the spreadsheet data source is created and its data populates into the staging table.

Data Source Settings


The Source Table is the Levels Sheet XLSX data source worksheet name, Sheet1. If there were more than one sheet in this XLSX file, additional names would
show up under Levels Sheet. This example only uses the Levels Sheet data source, but you can see the other data sources in the list. Planning level loaders can
access any staging data, regardless of the data source.

Enable Create level if not found in Planning. This setting makes new levels if the loader can't find levels with the same name in Adaptive Planning.

Column Mapping
Because of the data source spreadsheet's format and columns, the column mappings for this loader must be:

Planning Column Source Column

Parent Id ParentId

Level Id id

Level Name Name

Remember, the Source Column references a unique id for each level. The Source Column Name row references the name of the level.

This example does not need any business rules.

Click Save in the Actions Panel.

Preview the Loader Output


Once the loader is saved, click Preview Loader Output in the Actions Panel.

Review the Preview Loader Output Status to verify that no errors occur.

Run the Loader


With a successful preview of the loader output, this loader is ready to load. Click Run manually in the Actions Panel to run it.

The loader is also ready to be included in a scheduled Integration Task that can run automatically.

View the Loaded Levels


This screenshot illustrates the results of loading the levels.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 98/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Option Description

1 Expanded tree within Modeling > Model Management > Levels

2 Spreadsheet formatted for import

3 ParentId column.

If the ParentId column is left blank, the top level of the hierarchy, Total Company, becomes the parent.

Reparent Levels
To reparent existing levels with the loader, provide the ID of the new parent in the ParentId column of the level you need to move. Example: Taking the results from
above, if you wanted Sales - South East and Sales - South West to become direct children of United States so that the tree looks like:

Total Company
|__Company A (100% owned)
|__Operations
|__United States
|__Sales - North
|__Sales - South
|__Sales - South East
|__Sales - South West
|__Sales - East
|__Sales - West
|__Services - East
|__Services - West
|__Support
|__Canada
|__United Kingdom
...

The data source spreadsheet would look like:

Option Description

1 Sales- S

2 Sales- SE

3 Sales-SW

United States is the parent of Sales - South. United States will also become the parent of Sales - South East and Sales - South West as indicated in the
ParentId column. The other siblings get listed below those levels to make sure they load in the order we want.

The result of loading this spreadsheet would be:

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 99/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Notice that United States is now the parent of Sales - South East and Sales - South West, as indicated by the ParentId column in the spreadsheet.

Associate Attributes with Levels


You can associate existing attributes with levels by indicating mappings for them. The Column Mappings tab within the loader indicates any dimensions and
attributes as columns after Actuals Start and Actuals End. Only attributes that already exist in Adaptive Planning can be associated with levels.

Watch the video: 1m 42s

To create new attribute values during load, make sure that Level import automatically creates attribute values is enabled for the attribute in the Level Attributes
Admin.

A spreadsheet data source for the level would have a column for each level attribute. In this example, there is one level attribute, Region Code. The sales levels
each get one Region Code level attribute value:

Notice that Sales - North has N20 as an attribute value that does not already exist in Adaptive Planning. Because of the setting for Region Code in the level
attribute admin, N20 will get created as a new level attribute value when we run the level loader.

The level attribute Region Code is available as a column within Column Mapping because it is a level attribute available in Adaptive Planning:

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 100/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

The result of loading the spreadsheet with the level loader would create the attribute value N20 for Region Code and immediately associate N20 with the level
Sales - North.

1.1.4.9.3 | Planning Level Loader Log Messages

Details
The Planning Level Loader logs create, update, error, and warning messages generated during a load.

Each line item in the log contains a maximum of 100 Level entries. Hovering an item in the log shows the updated or created items. Click to download the full log
as a spreadsheet.

Tip: Best Practice: Download your logs if you need them at a later date. They remain available up to 1 week following a loader run.

Details for Import Levels

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 101/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

This message provides a URL you can use to download a zipped XML file of the updateLevels API response to your loader run.

When you visit the URL, you go to a page with a description of the file and a link to download it. Downloads are deleted from your instance after seven day

The zip download contains the XML of the full response.

<?xml version='1.0' encoding='UTF-8'?>


<response success="true">
<messages>
<message type="INFO">Level was saved successfully.</message>
</messages>
<output>
<levels deleteWorkflowSilently="0" deleteActualsSilently="0">
<level id="1" name="Total Company" currency="USD" shortName="TotalCo" eliminationLevel="1" eliminationTradingPartner="0" inWorkflow="1" proceedWithWarnings=
<level id="201" name="Company A (100% owned)" currency="USD" shortName="Co.A" eliminationLevel="0" eliminationTradingPartner="0" inWorkflow="1" propagateT
<level id="164" name="Operations" currency="USD" shortName="Ops" eliminationLevel="1" eliminationTradingPartner="0" inWorkflow="1" propagateToDescendant
<level id="165" name="United States" currency="USD" shortName="US" eliminationLevel="0" eliminationTradingPartner="1" inWorkflow="1" propagateToDescen
<level id="166" name="Sales - North" currency="USD" shortName="Sales-N" eliminationLevel="0" eliminationTradingPartner="0" inWorkflow="1" propagateT
<level id="167" name="Sales - South" currency="USD" shortName="Sales-S" eliminationLevel="0" eliminationTradingPartner="0" inWorkflow="1" propagateT
<level id="321" name="Sales - South East" currency="USD" shortName="Sales-S" eliminationLevel="0" eliminationTradingPartner="0" inWorkflow="1" pro
<level id="322" name="Sales - South West" currency="USD" shortName="Sales-S" eliminationLevel="0" eliminationTradingPartner="0" inWorkflow="1" pro
</level>
</level>
</level>
</level>
</level>
</levels>
</output>
</response>

Create or Update Message

Example Create or Update Message

Level was saved successfully.

Warning Message
The messages appear for levels when the loader encounters attributes in the source that are not found in Adaptive Planning. The Planning Level Loader does not
automatically create attributes. To avoid this message, make sure the attributes already exist.

Example Warning

The following attributes were not recognized for the level HQ: Color

Error Message
These messages appear when the loader encounters a level in the source that already exists Adaptive Planning.

Example Error

Following Source Level values have duplicate names: 1,8

Error and Warning Message Descriptions

Type Message Description

Error Internal error. An error occurred in your instance.

Error System dimensions cannot be updated via Only custom dimensions can be updated.
API.

Error Id "{0}" does not exist. The ID "456" does not exist. The id indicated does not match any ID in your instance.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 102/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Type Message Description

Error {0} "{1}" must be an integer value within the The Dimension ID "-3" must be an integer value within range from 1 (inclusive) to 2,147,483,647
range {2} (inclusive) to {3} (inclusive). (inclusive).

Error The {0} "{1}" cannot be more than {2} The dimension name "a very long name" is too long. It cannot be more than N characters in
characters long. length.

Error The {0} can not be empty. The dimension name cannot be empty.

Error A dimension with the name "{0}" already The dimension Product already exists in your instance.
exists.

Error The "{0}" is too long. It cannot be more than The short name "a very long name" is too long. It cannot be more than 5 characters in length.
{0} characters long.

Error A dimension with id "{0}" does not exist. A dimension with ID "123" does not exist. The ID for a dimension does not match any ID of a
dimension in your instance.

Error {0} "{1}" must be an integer value within the Dimension value ID "-3" must be an integer value within range from 1 (inclusive) to
range {2} (inclusive) to {3} (inclusive). 2,147,483,647 (inclusive).

Error The {0} "{1}" cannot be more than {2} The dimension value name "more-than-5-chars" is too long. It cannot be more than X characters
characters long. in length.

Error "{0}" is NOT allowed as name. "This" is a reserved word and cannot be used as a name.

Error The {0} can not be empty. The dimension value name must have a value.

Error A dimension value with the name "{0}" Dimension value names must be unique within a dimension.
already exists.

Error A dimension value with the name "{0}" A dimension value"Computers" already exists in the instance for the dimension value ID "317".
already exists in the Planning instance for
the dimension value ID {0}.

Error A dimension value with the name "{0}" exists A dimension value "Computers" was found twice in the payload.
in the payload {0} times.

Error Missing Dimension/Dimension value in No dimension or dimension value was defined.


provided input.

Error Illegal Input. Input data must be an XML The input is not XML.
document.

Error A dimension value cannot be its own parent. A dimension value referred to itself as a parent.

Error Parent node "{0}" is becoming the child of its Parent node "2" is set to become the child of its current direct or indirect child node "3". A parent
current direct/indirect child node "{1}". is set to become the child of itself or one of its children.

Error Invalid {0} "{1}". The dimension name "foo(+)" contains the reserved character "+" and is invalid. + and - are
invalid characters for a dimension name.

Error Invalid {0} "{1}". Invalid dimension value name "foo(+)". Invalid dimension value name "foo(-)." + and - are invalid
characters for a dimension value name.

Error The level "{0}" is duplicated in the payload or


Multiple new levels contain the same name, ensure there is only one record {0}.
already exists in the systems with ID "{1}".
or

Levels rolling up to the top level have a value in the Rolls up To field. Specify a blank value in
the "Rolls up To" field for this record.

Warning Both use OnLevels and listDimension cannot List dimensions cannot have parents.
be "1" at the same time.

Warning Invalid "autoCreate" value "x". The value Values other than 1 or 0 for fixed-value properties (e.g. listDimension="1999") leaves the
must be "1" or "0". property unchanged and generates a warning.

Warning Invalid "listDimension" value "w". The value Dimension names and dimension value names that are too long generate warnings and leaves
must be "1" or "0". the element's property unchanged

Warning Invalid "keepSorted" value "z". The value An attempt to change a listDimension or useOnLevels setting to an illegal combination
must be "1" or "0". generates a warning and leaves the flag unchanged.

Warning Invalid "useOnLevels" value "y". The value An attempt to to create an invalid version visibility combination (stating allVersions=true but then
must be "1" or "0". specifying versions) generates a warning and will ignore the conflicting "visible" setting, and will
respect the allVersions setting.

Warning A list dimension value cannot have parents. List dimensions are not hierarchical and should not have parents.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 103/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Type Message Description

Warning A dimension value name cannot be the same Dimension values cannot have the same name as their dimension.
as its dimension name.

Warning The {0} "{1}" cannot be more than {2} The dimension value short name "a very long phrase" is too long. It cannot be more than 5
characters long. characters in length.

Warning The provided dimension attribute {0} is not An attribute was provided in the input. That attribute is not associated with the indicated
associated with the dimension {1}. dimension. Verify what attributes are associated with the dimension.

1.1.4.10 | Export Planning Data with Scripted Planning Exporter

You can use the Scripted Planning Exporter (SPE), a customized Pentaho plugin, to export Planning data to external systems. For additional information on
Adaptive Planning use of Pentaho, see Setting Up a Scripted Data Source.

Understanding the SPE


The SPE works by making a call to the Adaptive Planning export REST API and then stores the results of that API call in a file you specify. The SPE supports
output to CSV and XML file formats. Not all export data can be transformed into CSV format.

The SPE is a plugin bundled with the Data Agent starting with version v51.17.0734. You can verify which version of the Data Agent Service Manager you have by
opening the program. The version number appears on the information in the About tab. For information on installing the Data Agent, see Install the Data Agent
Service Manager. When the SPE is installed, the Adaptive Planning plugin appears in the Input folder on the Design tab of Spoon.

Note: The terminology around the Scripted Planning Exporter Adapter may be slightly confusing. Because the data flows from Planning to the script and then on to
some external destination, it is a data export from Planning and a data import into the external destination. However, looked at from Spoon, the SPE is an input
step, because it provides input into the script. This is why it is labeled "Adaptive Planning Input" in Spoon.

You can start the SPE directly from within the Spoon environment or remotely by including it in a scripter loader. The general process for using the SPE is to write a
script that creates an XML request in the format accepted by the Planning server, passes that to the SPE, and then processes the results. Below is a sample script
that shows the minimum requirements for an SPE script:

Scripted Planning Exporter


-------------------------------------------
Input:
requestXMLString: request in XML format
targetResponseFormat: CSV or XML
targetFolder: target folder to store result file generated by
this plugin

Output: The type of output fields is String, except


requestSuccess, which is boolean
requestSuccess: Boolean, Y' or N'
planningMsgs: concatenate Planning messages in a string,
delimited by ###'
responseFileName: complete path of the response file name
fieldNames: column name in CSV header, or NULL if
targetResponseFormat is XML
numberRecReturned: String, number of records returned by
Planning, or NULL if targetResponseFormat is XML

Best practices for this script include:

All the input field names are case-sensitive. Define them in the Kettle script accordingly.
requestXMLString: Each export API has its own request XML format. See the Adaptive Planning REST API for more information.
targetResponseFormat: As of API v11, only the payload of the 'exportData' API can be transformed into CSV format. All other exports must be XML.
TargetFolder: In general, do not select the Restrict Runner Access to Files checkbox in the Agent Service Manager. The target folder can be anywhere in
the file system.
responseFileName: The name of the response file is in the following format: <targetFolder>_ApiResponse_<exportMethod>_<UUID>.
<targetFormat>; Example: C:\pdiTemp\ApResponse_exportData_83980a17b3dc40c48282483cb9ea5e96.csv
requestSuccess: If the export request goes through on the Planning server side, the requestSuccess has a value of true ('Y'). If the export request fails on
the results of a call to planning, the SPE throws an exception with the error messages returned by the Planning server.

The general workflow for extracting the information from planning and sending it to an output file:

1. Input Request XML file.


2. Convert File content to String.
3. Set target Format (CSV | XML) and folder.
4. Adaptive Scripted Planning Exporter.
5. Blocking Step.
6. Log Adapter output.

Using the Planning Export APIs from the Kettle Script


The SPE uses Adaptive PlanningAPIs v11 or greater. You can use the following APIs with the SPE:

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 104/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

customReportValues : returns a set of data for the requested report criteria in the requested instance
exportData : retrieve a set of values from a specified version

See Understanding the Adaptive Planning API for more information.

Configuring the SPE Kettle Plugin


To configure the SPE Kettle plugin:

1. Click Adaptive Planning Input in the Spoon Design tab.


2. Enter the SPE's information:
Active Agent: Populated automatically by the SPE.
Instance Host: populated automatically by the SPE.
Instance Code: Populated automatically by the SPE.
Login: Value of the login context parameter.
Login Password: Value of the password context parameter.
Locale: Defaults to en_US.
3. Click OK.

You need to create a script that defines the inputs and outputs for the SPE operation. Refer to the sample script in this article.

Configuring the SPE within Adaptive Planning Integration Cloud UI


The general process for creating a scripted loader with Integration's cloud UI is:

create a scripted loader


select an entry point
configure required parameters

Start by creating a new scripted loader. See Creating Scripted Loaders for more information. You also need to select an entry point in the Entry Point drop-down.
The entry point is set to the name of the script to be executed when the scripted loader is executed.

You must map and expose the local and shared context parameters defined in the scripted loader as environment variables in the Kettle/Spoon environment.
Example: if a context parameter called "login" is defined in the loader setup screen in the Parameters section, it is exposed as the variable "${login}" in the Kettle
environment. The definition of two context parameters in a scripted loader then get used in the SPE for both of the corresponding Kettle variables.

You can update the Kettle variables at design time with the current default context parameter values by starting the Adaptive Script Editor and triggering a refresh
by clicking Refresh Configuration.

1.1.4.11 | Create Planning Association Loaders

The Planning Association Loader lets you map metadata about user dimension and level associations from the staging area into Adaptive Planning. Associations
connect levels and custom dimensions to users. Level ownership is a type of user association that connects users to levels. Unlike regular level associations, level
ownership also comes with other privileges. See Concept: Associations.

Once you create a loader, you can run it manually or schedule it to run as part of an Integration task. See Create Integration Tasks.

Prerequisites
The Planning Association Loader requires staging data from an import of an existing Data Source.
Required Permissions: Model, Integration Operator, Data Designer

Basic Steps
1. Enter data source settings
2. Configure column mapping
3. Create business rules
4. Preview the loader output
5. Run or schedule the loader

Navigation

From the nav menu, go to Integration > Design Integrations

Enter Data Source Settings


The Data Source Settings lets you choose the source table you want to use from integration staging data, and select what associations to load.

1. Select Create New Loader in the Loaders pane of the Component Library.
2. Select Planning Association Loader as the loader type. Enter a name for the loader.
3. Click Create.
4. Enter the Association Loader General Properties information in the Data Source Settings tab:

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 105/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Source Table: Select the source table from the dropdown list. The source tables in the list are of all the tables available in the staging area you have
access to.
Mapping Profile: You can link to a mapping profile as part of the loader creation process. Select the mapping profile from the dropdown list. The
mapping profiles in the list are the ones you have access to. See the mapping profile section of the Planning Data Loader. This mapping profile,
along with any mappings loaded as part of metadata loaders map the planning levels and dimensions. See Create Planning Data Loaders. Example:
If the association loader has level column value "999999" (or for Workday, a WID) then the mapping profile determines which planning level that
refers to.
Level or Dimension: Select level for level ownership or level association. Select a dimension to load dimension associations.
Mode: Select Update to only add new users. Select Replace All to delete all users within the associations mentioned in the payload and replace
them.
If you use Adaptive Planning with Workday Human Capital Management or Workday Financials, Mode automatically populates with Update.
If you don't use Adaptive Planning with Workday Human Capital Management or Workday Financials, Mode automatically populates with
Replace All.
Proceed with warnings: Check to continue running the loader with warnings. If you leave it unchecked, the loader will stop when it encounters a
warning. Enabling this means the loader skips unmapped dimensions or levels and creates a warning in the logs while allowing the loader to
continue processing.
Log Level: Choose the type of details to capture when running the loader.
Off: No errors logged.
Error: Log serious errors only.
Info: Log basic information, such as when the loader was updated.
Verbose: Detailed information about all phases and actions. Used primarily for debugging or auditing.

Configure Column Mapping


Column Mapping lets you map columns from the data source to the associations available in Modeling > Model Management > Levels or Modeling > Model
Management > Dimensions. You must map User and Planning Columns.
Note: If you are a Workday customer running a User Sync in this environment, the User column must map to the source column that contains WIDs. If you didn't run
User Sync or are not a Workday customer, the user column needs to be mapped to the source column that contains usernames or emails.
If there are several Planning Columns to map, use the Show filter to select:

All: Shows all users.


Required: Shows all required Planning columns, like User and Level.
Unmapped: Shows all unmapped Planning columns.
Mapped: Shows all mapped Planning columns.

You can use the Search field to find columns. Enter a complete or partial name to search for and click the magnifying glass. Any staging columns matching the
search appear in the results.

Map Columns

1. Click the Column Mapping tab. The Column Mapping tab has these columns:
Status: A checkmark indicates a mapped column. An exclamation point indicates an unmapped column.
Planning Column: Displays all of the Planning columns available for mapping. Mandatory Planning columns are indicated by bold text with an
asterisk.
Source Column: Displays the columns within the staging table chosen from the Data Source Settings.
2. Select an unmapped column and click the dropdown. A list of columns you can map to appears in the dropdown list. As you map the columns, the status
indicator changes from red to green .

Mapping Columns for Level Ownership


If you want to load only level ownership, don't map an identifier for the association code for the level in the Source Column. Level ownership in Administration >
Associations comes from leaving the association code empty.

Mapping Columns for Level and Dimension Association

If you want to load level and dimension associations, map an identifier such as Ref ID for the association code in the Source Column.

Important: You can't load both level ownership and level association in a single loader. Create one loader for level ownership and a separate loader for level
association.

Unmap Columns
You can unmap columns to ignore the staging data you don't want to load. You can also unmap columns one at a time following loader runs, to troubleshoot which
columns generate errors in the logs.
To unmap columns, click Unmap and choose:

Unmap All: Unmaps all of the the columns.


Unmap Selected: Unmaps only the columns that are selected.

Unmapping a column changes the status icon to an en exclamation point .

Create Business Rules


You can use Business Rules to create SQL expressions that limit the staging data that is available for loading. Only records that meet your filter criteria will load.

The Business Rules tab contains a text area for entering SQL:

To create an SQL filter:

1. In the Business Rules tab, select SQL Filter. Click Edit.


2. Enter an SQL expression. You can click an item in the Available Columns list to bring that column into the SQL expression instead of typing it.
3. Click Apply to check your SQL syntax. Errors in your syntax turn the border around the expression red. Hover your cursor over the SQL editor to see syntax
error information.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 106/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

For detailed SQL syntax help, click 'online help' in the Notes section of the Edit SQL Filter. See Reference: SQL Expressions.

4. Correct any errors in your syntax and click Apply. Only staging rows that match the SQL expression will import when you run the loader.

Preview the Loader Output


You can preview the loader output before performing a full load to check that the mappings work how you want. You can also download its output as an XML file to
manually verify the user level ownership associations from your data source against your requirements before loading them.

Click Preview loader output in the Actions pane.

The loader runs, applying all transformations and business rules as part of the run. A status popup displays the steps the loader executed. If there are user
association values to load, the loader creates an XML file and sends an email notification with the output of the loader as a zipped XML attachment.

An additional popup lets you download the preview loader output as a zipped XML file after the loader succeeds. The download popup may take a moment to
appear depending on the number of association values and the size of the file.

Fix Validation Errors


When the preview loader output or manual load runs, the source data is validated for errors. Examples of the validations include checks if:

The Source Id value for the User or Level and Dimension value is missing (empty) in the data.
The Source Id is not mapped.

Run the Loader


After saving a Planning Association Loader with all the required configuration settings, the loader can be run manually or run as a scheduled integration task.
Important: Wait about 15 - 30 minutes between each Planning Association Loader run so that the Adaptive Planning has time to synchronize with your import.
Larger imports take longer to synchronize. Wait time depends on model size and other factors.

You can import directly from the source system or you can run the loader using staging values that were already imported. When the loader runs, select which of
these behaviors you want. Choose Bypass data import to use the existing staging table for loading. Bypassing data import is not available when using
spreadsheets as data sources.

As part of the run process, the loader checks that the data in the staging table has been mapped correctly. Multiple validations are applied during the load. Any
errors that occur during the load indicate what needs to be resolved for a successful import.

Include the Planning Association Loader in an Integration Task


Any integration task can contain one or more loaders. A task can also contain other integration tasks as well as Discovery metric loaders and scripted loaders.
Tip: Best Practice: Have separate Integration tasks for each loader.

If a task contains multiple loaders, then parameters from each loader are presented when the task is run. If there is a common/shared parameter used in the
loader(s) within a task, then the task only prompts for the parameter once. You can choose to override parameter prompts.

For scheduled runs of the task, the default values of the parameters stored when the loaders were created are used.

1.1.4.12 | Run Loaders

You can run a loader manually from within the loader itself, or as part of an Integration task.

Prerequisites
Run a Loader Manually from Inside a Loader

Required Permissions: Model, Integration Operator and Data Designer


Verify the loader has a data source.
Verify the loader mappings.

Run a Loader Manually from an Integration Task

Required Permissions: Integration Operator


Verify someone with Integration > Data Designer permissions set up tasks for you to view.
Verify someone with Integration > Data Designer permissions granted you launch permissions for the tasks you want to run.

Run a Loader Manually from Inside a Loader


1. Go to nav menu > Integration > Design Integrations
2. Select the loader from the Component Library.
3. Verify the loader settings.
4. (Optional) Select Preview loader output in the Actions pane to check for load errors.
5. Select Run Manually in the Actions pane.
6. (Optional) Select Bypass data import if you want to load directly from the data source without using staging tables. Not available for spreadsheet or
scripted loaders. This option helps when the source system updates frequently and your staging tables could become out-of-date between loader runs.

Run a Loader Manually from an Integration Task


1. Go to nav menu > Integration > Run Tasks.
2. Double-click the loader task.
3. Select Run.
4. Provide any required parameters.
5. (Optional) Select Bypass data import if you want to load directly from the data source without using staging tables. Not available for spreadsheet or
scripted loaders. This option helps when the source system updates frequently and your staging tables could become out-of-date between loader runs.
6. Select Execution History to verify the run time, duration, and status.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 107/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Schedule a Loader to Run Automatically


You can also schedule a loader to run automatically as part of an Integration task. Scheduled loaders don't allow bypassing data import.

See Create Integration Tasks.

1.1.4.13 | Workforce Planning Staging Tables and Loaders

Workforce planning is an Adaptive Planning instance that uses your Workday HCM data. The model foundation includes dimension and data loaders, top-down and
bottom-up modeled sheets, dimensions, and formulas.

Running the loaders is one step of the workforce planning setup. To get started, see Steps: Set Up Workforce Planning with Workday HCM. The loaders that you
run when you get started with workforce planning add:

Levels.
Custom dimension values.
Associated custom dimension attributes.
The data associated with the corresponding Workday report in some cases.

Navigation

From the nav menu, go to Integration > Design Integrations

Workforce Planning Data Sources, Loaders, and Results


For step-by-step general instructions, see Run Loaders.
Important: Run or schedule the loaders to run in the order listed in the table.

Level Loaders
The Workday dimension you load into levels appears on all sheets. This is because all sheets require levels. For levels you can choose Company, Cost Center, or
Supervisory Org. Load the remaining two as custom dimensions.

Workday Report Source Adaptive Planning Data Source and Loader Name Result Sheets with the Dimension or Data

Planned Company Level Loads company dimension All


Dimensions/Hierarchies as levels into the model and
all sheets.

Use only if you didn't use


Company Cost Center Level
and Supervisory Org Level.

Planned Cost Center Level All


Loads cost center dimension
Dimensions/Hierarchies
as levels into the model and
all sheets.

Use only if you didn't use


Company Level and
Supervisory Org Level

Planned Supervisory Org Level Loads company dimension All


Dimensions/Hierarchies as levels into the model and
all sheets.

Use only if you didn't use


Company Cost Center Level
and Company Level.

Recommend that you use


the Workday Supervisory
Org dimension to load into
Adaptive Planning levels.

Dimension and Attribute Loaders

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 108/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Workday Report Source Adaptive Planning Data Source and Loader Name Result Sheets with the Dimension

Planned Company Loads dimension values.


Bottom Up: Position
Dimensions/Hierarchies
Use only if you didn't run the Management Plan
Company Levels loader for levels. Bottom Up: Job
Management Plan

Planned Loader name: Compensation Grade For future developments. Do not None
Dimensions/Hierarchies run.

Planned Cost Center Loads dimension values.


Bottom Up: Position
Dimensions/Hierarchies
Use only if you didn't run the Cost Management Plan
Center Level loader. Bottom Up: Job
Management Plan

PLN-Initiatives Initiatives For future developments. Do not None


run.

PLN-Job Profile Data source: Job Profile with Attributes Loads dimension values.
Bottom Up: Position
Dimension
Loader name: Job Profile Management Plan
Bottom Up: Job
Management Plan
Bottom Up: Aggregated
(Position + Job
Management) Plan

Planned Job Requisition Loads dimension values.


Bottom Up: Position
Dimensions/Hierarchies
Management Plan
Bottom Up: Job
Management Plan

PLN-Location as Bus Site Location Loads dimension values tagged


Bottom Up: Position
with Location_Country attribute
Management Plan
values.
Bottom Up: Job
Management Plan
Bottom Up: Aggregated
(Position + Job
Management) Plan
Strategic Plan: Location
Assumptions

Planned Management Level For future developments. Do not None


Dimensions/Hierarchies run.

Planned Data source: Positions Loads dimension values for


Bottom Up: Position
Dimensions/Hierarchies Positions Restrictions v2.
Loader name: Position Dimension Management Plan
Bottom Up: Job
Management Plan

Planned Supervisory Org Loads dimension values.


Bottom Up: Position
Dimensions/Hierarchies
Use only if you didn't load Management Plan
Supervisory Org for levels. Bottom Up: Job
Management Plan

PLN Worker Dimension Data source: Worker with Attributes Loads dimension values tagged
Bottom Up: Position
with Worker Type attributes.
Loader name: Worker Dimension Management Plan
Bottom Up: Job
Management Plan
Worker Data

Data Loaders

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 109/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

PLN-All Data source: Position Data Loads data into Bottom Up: Position Management Plan Bottom Up: Position
Positions modeled sheet. Management Plan
Loader name: Position Data Model
Sheet

PLN-All Data source: Worker Data Loads data into the Worker Data sheet. Worker Data
Workers
Loader name: Worker Data Model
Sheet

1.1.5 | Using Tasks and Schedules

1.1.5.1 | Using Tasks and Schedules

Explains how to manage tasks and schedules within integration.

Tasks are predefined sets of actions you can create to set up an import process, then share the tasks with other users. Tasks combine the various operations into a
single contiguous operation: the task extracts information from a data source, uses a loader to edit, filter, and specify a timestamp for raw data, and then loads the
information into Adaptive Planning. Tasks can also have multiple data sources, multiple loaders, and even multiple tasks.

1.1.5.2 | Create Integration Tasks

Integration tasks let you build import processes and filters, then give those tasks to the users who need them to do their jobs. You can schedule tasks to run
automatically, or users can run them on-demand as needed. Most day-to-day use of integration involves tasks.

Prerequisites
Required Permissions: Integration Management > Data Designer
Requires Integration

Navigation

From the nav menu, go to Integration > Design Integrations

Create a New Task


1. Access the Data Designer by going to Integration > Design Integrations.
2. Expand Tasks in the Component Library.
3. Select Create New Task.
4. Select Integration Task and enter a meaningful name describing what the task does.
5. Select Create.
6. Select a log level:
Error: Only logs serious errors.
Info: Logs all basic information, such as when the data source was updated.
Verbose: Provides detailed information about all phases and actions. (This level is used primarily for debugging or auditing, as it may produce more
log information than is practical for typical use.)
7. Select Save.

Add Task Schedule and Loader Details


After creating the new integration task, add schedule and loader details to set when and what it runs.

1. Drag an hourly, daily, weekly, or monthly schedule item from the Data Components pane to the Schedule Settings table.
2. Fill in the Edit Schedule fields:
Name: Enter the name for the schedule.
Run: Select the frequency from the drop-down. Frequencies other than the default change the other fields accordingly.
Schedule information: Depending on the schedule frequency, integration shows different schedule options:
Hourly lets you select the minute of the hour using a slider bar.
Weekly lets you select the day or days you want to run the task and the time.
Monthly lets you select the day of the month and the time of day.
Time Zone: Select the time zone of the time to run the task.
Local Time: Display-only for reference.
Active: Uses this schedule information to run the task. If unchecked, the schedule saves in the Data Components menu, but the task does not
schedule. Add multiple schedules to a task if for multiple scheduling scenarios. Only one schedule can be active at a time.
Run as me: View only.
3. Select Save.
4. Drag loaders and tasks from the Data Components pane to the Tasks and Loaders table.
Add a loader to extract data, perform data manipulation, and load the information into Adaptive Planning.
Add other tasks to create smaller subtasks as building blocks that combine into larger tasks.

When Integration runs a task, it takes a collection of loaders and tasks and builds a single list of loaders. Integration then refreshes all needed data sources.
The loaders then execute in these groups, in this order:

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 110/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Planning Metadata loaders


Discovery Metric loaders
Planning Data loaders
Scripted loaders
Custom Cloud loaders

Within the groups, tasks execute in the order that they were added to the task.

5. Select Save.

Note: By reorganizing items in subtasks of a larger task, you can run the same operations in a different order depending on the time of day or month.

1.1.5.3 | Grant Permissions for Integration Tasks

You can grant permissions for user groups, roles, or individuals to launch integration tasks. Granting launch permissions lets users run tasks but not edit the task
settings. Use launch permissions when you want to restrict lower-level payroll or accounting clerks to running specific tasks. Granting edit permissions lets users
edit task settings and launch tasks. You can grant edit permissions to more senior-level staff who should edit tasks and run them.

Prerequisites
Required Permissions: Integration Operator, Data Designer
Requires Integration

Navigation

From the nav menu, go to Integration > Design Integrations

Grant Launch or Edit Permissions


1. Expand the Tasks pane in the Component Library.
2. Select the task you want to grant permissions to.
3. Select Grant launch permissions or Grant edit permissions in the Actions pane.
4. Expand the list of groups, roles or users in the pop-up window, then double-click the one you want to grant permissions to. Each group, role, or user you
double-click gets added to the Selected list.
5. Select Show all selected (switches to view only mode) to see who already has permissions.
6. Select Save.

1.1.5.4 | Manage Integration Task Notifications

You can set up email notifications for events related to an integration task. Notifications can go out to one or more users or groups when a task succeeds or fails.
Users with different addresses in the username and email fields get notifications at both email addresses. All notifications get permanently recorded in the
Notification Logs.

Note: Users can't be locked out and must have authenticated with Adaptive Planning at least once to receive notifications.

Prerequisites
Required Permissions: Integration Management, Integration Designer
For Workday users, all notifications become Workday Notifications

Navigation

From the nav menu, go to Integration > Design Integrations

Manage Integration Task Notifications


1. Expand the Tasks pane in the Component Library
2. Select the task you want to manage notifications for.
3. Select Manage notifications in the Actions pane.
4. Expand the list of groups or users, then double-click the ones you want to add notifications for. Each one you double-click gets added in the notifications list.
5. Indicate if you want notifications to go out for task success, failure, or both.
6. Select Save.

1.1.5.5 | View and Run Tasks

When you navigate to Integration, the integration Tasks Overview page loads by default. Integration tasks are predefined sets of actions created as an import flow.
Tasks can contain multiple data sources, multiple loaders, and even other tasks. This overview shows all existing scheduled and unscheduled tasks you can view or
run.

Each row in the Tasks Overview shows the type of task, the task name, the time and date of the next scheduled run, the current status, and task queue status. If
you select a task, it opens within a new tab inside the page.

Navigation

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 111/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

From the nav menu, go to Integration > Run Tasks

Prerequisites
Permissions Required: Integration > Integration Operator
Verify someone with Integration > Data Designer permissions set up tasks for you to view
Verify someone with Integration > Data Designer permissions granted you launch permissions for the tasks you want to run

View Task Details


1. Double-click a task to view its details.
2. Select one of the runs within Pending/Recent Runs to see the task step progress and troubleshoot errors.
3. Select Run if you want to launch a task manually and provide parameters. Required fields vary depending on the task.
Tasks for spreadsheet data sources prompt for a file.
Tasks for scripted data sources may prompt for run-time parameters.
Note: If you have a scripted data source or loader, you get prompted with the parameter set to the default value. You can override the parameter for that
individual manual run. Scheduled tasks use the default parameter.
4. Select Execution History to display task information on:
Run time/date
Task name
Run duration in seconds
Run status
5. Drill into log history details by double-clicking an execution history item. You can then run that item manually and view the details of other recent runs.

1.1.6 | Custom Cloud Data Source (CCDS)

1.1.6.1 | Custom Cloud Data Source (CCDS)

Product documentation for Custom Cloud Data Source (CCDS) creation and scripting.

Important: Prerequisite: Thorough JavaScript programming knowledge and experience are required to build a Custom Cloud Data Source (CCDS). You should not
begin creating a CCDS if you do not have access to an experienced JavaScript programmer. You must also be assigned the Integration Developer permission
within Administration > Permission Set before attempting to create a CCDS in the Data Designer.

1.1.6.2 | Introduction to CCDS

1.1.6.2.1 | Concept: CCDS

Integration supports custom, ad-hoc, and generic data sources hosted on external cloud systems for loading data to Planning, Consolidation and Dashboards.
Technically skilled JavaScript developers (in Adaptive Planning, Integration Developers) can build data sources and expose them in Adaptive Planning Integration
using Custom Cloud Data Sources (CCDS).

A CCDS is a custom-built adapter designed to connect to internet addressable systems and supply data to Adaptive Planning. Once these data sources are
enabled, web-based sources like Google Sheets, Quickbooks, Sage Intacct, and other applications become available for Planning Loaders. Adaptive Planning
partners and customers can then leverage pre-written CCDS data sources without having to write JavaScript themselves. Access to CCDS Data Sources may be
turned on or off for specific customers.

Benefits of using CCDS


CCDS scripts execute on Adaptive Planning Integration servers and don't require on-premise installations.
CCDS supports JavaScript to connect to cloud-based systems as fully-featured Data Sources within the Integration web UI.
Kettle installation is not required.
Partners create purpose-built adapters for specific use cases.
CCDS enables the use of individual product APIs written by developers who self-host, for interacting with public Adaptive Planning Integration APIs to
exchange metadata and data.
CCDS supports OAuth 1.0a and OAuth 2.0.
CCDS also supports its own APIs for parsing XML and JSON data from other web applications.
Authors of CCDS data sources can share their modules.

Note: CCDS does not allow third parties to load pre-compiled code (JDBC drivers, DLLs) onto Adaptive Planning servers.

1.1.6.2.2 | Set Up a Custom Cloud Data Source (CCDS)

​You can set up a Custom Cloud Data Source (CCDS) and make scripts available for Data Designers using the Data Sources pane in the Component Library.

Before you Begin


Required Permissions: Integration Developer within Administration > Permission Set
Determine the internet addressable service and credentials to connect to your CCDS.
Read the API documentation of the external system you need your CCDS to connect to.
Determine the type of authorization (OAuth or System Key) you need to use for the external system.
Determine the response format (JSON or XML) from the external system.

Navigation

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 112/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

From the nav menu, go to Integration > Design Integrations

Steps
Create and Configure a CCDS

1. Select Create New Data Source in the Data Sources pane.


2. Select Custom Cloud Data Source as your data source type, enter a name, and click Create.
3. Select a Log Level in the Data Source Settings tab. The different types of logs are:
Error: Only logs errors.
Info: Logs all basic information including when the data source was updated.
Verbose: Provides detailed information about all phases and actions. This level is used primarily for debugging or auditing.
Parameters or Static Values: Any parameters or static values your CCDS allows the user to enter. For example, start address, end address, period
ranges or other information specified by your script.
4. (Optional) Select Requires Credentials in the Data Source Settings tab to choose an OAuth credential. Your credential must already exist in the
Credentials pane.

Define the Parameters

Determine the parameters that the Data Designer should fill in. You can add and configure parameters in Designer Settings tab and reference them your script.
For example you can add Location, GPS information, Username and Password as your parameters.

Create and Test Your Scripts

1. Write your scripts in the Scripts tab.


2. Select Save from the Actions pane to save your script.
3. Click Test Connection in the Actions pane to verify your connection.

1.1.6.2.3 | Access CCDS and Request Authorization

​You can run the CCDS scripts created by the Integration developers by accessing your CCDS in the user interface.

1. Go Integration > Design Integrations.


2. Select your CCDS from Data Sources in the Component Library. If OAuth is required, click Request Authorization in the Actions pane. See
Authenticate with OAuth.

1.1.6.2.4 | Authenticate with OAuth

​You can authenticate your CCDS data source with an OAuth service provider by configuring an OAuth Credential. Data Designers attempting to use the CCDS
must log in and authorize an access request.

Note: If you created a Workday Credential, you can use this to authenticate your CCDS.

Prerequisites
New to CCDS? See Concept: CCDS and Set up a Custom Cloud Data Source(CCDS).
Required Permissions to Set up and Authenticate a CCDS with OAuth: Integration Developer within Administration > Permission Set
Required Permissions to Request Authorization for a CCDS: Data Designer within Administration > Permission Set
Create a CCDS or select an existing CCDS.

Navigation

From the nav menu, go to Integration > Design Integrations.

Set up and Configure an OAuth


Create and manage OAuth configurations using Credentials pane in the Component Library.

1. Select Create New Credential in the Credentials pane.


2. Select OAuth1.0a or OAuth 2.0, enter a name for the credential, and click Create. OAuth 1.0a and OAuth 2.0 credentials use different icons for
identification purposes..
3. Fill in the Settings:
OAuth 1.0a Settings has these fields:
Consumer Key: Client ID or client identifier, issued to the client during registration process. The Consumer Key and Consumer Secret form the
credentials pair for identifying and authenticating the client making a request.
Consumer Secret: The secret key of the client.
Supported Signature Method: The pre-defined signature method is "HMAC-SHA1" and cannot be changed.
Request Token Service Http Method: Select either GET or POST from the dropdown.
Request Token Service Endpoint: Used by the client to request a set of token credentials.
Authorize Redirect URL: URL to obtain the temporary credentials for delegation request identification.
Access Token Service HTTP Method: Select either GET or POST according to the external access token service requirements.
Access Token Service Endpoint: URL to fetch the token for accessing protected resources.
Add OAuth Params to Request URLs: URL to identify a resource within the scope of the URI's scheme and naming authority.

OAuth 2.0 Settings has these additional fields:

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 113/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Consumer Key: Client Id or client identifier, issued to the client during registration process. The Consumer Key and Consumer Secret form the
credentials pair for identifying and authenticating the client making a request.
Consumer Secret: The secret key of the client.
Redirect URI: Redirect the user after authorization. The Integration developer uses this URI during the OAuth 2.0 application setup on the third party
server.This field cannot be changed.
Scope: The scope of services or objects for authorization access requests.
Authorization Header Required: Select this checkbox if the third party service provider requires the authorization header in the request when
requesting or refreshing the access token after authorization.
Access Token Renewable: Select this checkbox if the initial authorization process fetches the original access and refresh tokens for renewal, and if
the access token on the third party server renews automatically.
Authorize Redirect URL: The URL to obtain the temporary credentials for delegation request identification.
Access Token Service Http Method: Select either GET or POST according to the external access token service requirements.
Access Token Service Endpoint: URL to fetch the token for accessing protected resources.
Token Expiry Default (sec): Default expiration in seconds for access tokens without an expiry time.
4. Click Save in the Actions pane.

See OAuth 1.0 Protocol and The OAuth 2.0 Authorization Framework for more information.

Authenticate your CCDS with OAuth


These steps are for Integration Developers.

1. Select your CCDS in the Data Sources pane.


2. Select Requires Credentials in the Data Settings tab.
3. Choose your OAuth credential from the Credentials dropdown.
4. Update your script in the Scripts tab to include your OAuth credential. For example, response=ai.authorizeRequest(url,method,body,headers).
5. Click Save in the Actions pane.

Request Authorization
These steps are for Data Designers.

1. Select your CCDS in the Data Sources pane.


2. Select Request Authorization in the Actions pane to generate the CCDS Authorization Request.

A new browser window opens for authorizing the third party website. After the authorization is complete, the OAuth 1.0a application connects to your
account to access data. For OAuth 2.0, if the third party website allows, it may indicate the full scope of services you provided in the OAuth 2.0 Settings -
Scope field.

3. Refresh the Adaptive Planning CCDS Data Sources page. Notice that all the menu items in the Actions pane become enabled.

The Data Source Settings tab displays the Authorization Status with the third party authorization ID, and the date of the authorization. Authorization expiration
dates vary from one provider to another. Notice when your authorization will expire.

Click the Reset Authorization in the Actions pane to re-authorize when needed. You can use Reset Authorization to provide different authorization credentials to
a third party website.

1.1.6.2.5 | Concept: Design

​The CCDS API is designed to assist the Integration Operator with connecting to the data source, creating objects inside the data source, parsing XML, converting
dates, and frequently utilizing items when creating a data source.

Namespaces
The JavaScript engine provides access to built-in Adaptive Planning Integration through the 'adaptive' namespaces or 'ai' (Adaptive Planning) namespace (Alias).
This is similar to popular JavaScript libraries like jQuery (https://jquery.com/).

// JavaScript short namespace example.


ai.log.logError('this is a log');

// JavaScript long namespace example.


adaptive.log.logError('this is a log');

Beneath the root 'ai' namespace, a number of core functions are exposed to allow the JavaScript to interact with the internet and Adaptive Planning
Discovery/Integration features. These public JavaScript APIs are modeled using Node.js (https://nodejs.org/) APIs as a guide.

Functions
Functions get and set data to make the API consistent, provide encapsulation, and explicitly allow setters and getters. Functions also provide encapsulation of C#
objects to only expose JavaScript language functionality and prevent unnecessary crossing of the JavaScript / C# boundary to improve performance. The getters
are prefixed with get and setters are prefixed with set.

var isEnabled= item.getIsEnabled();


item.setIsEnabled(true);

Functions Context
Each function called by a CCDS takes a Context object. The context contains read-only objects to help with the processing.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 114/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

function importData(context) {
var tableId = context.getTableId();
var tables = context.getDataSource().getTables();
var setting = context.getDataSource().getSetting('password');
}

The context is made up of objects passed in from C#. To improve performance, we avoid exposing C# objects in the JavaScript by encapsulating each object in a
JavaScript object. This allows managing communication across the JavaScript / C# boundary. For example, when asking the context for tables, the C# object
returns wrapped in a JavaScript object. When there is an object hierarchy, we wrap each level in a JavaScript object. When asking for the columns in a table, we
return a list of JavaScript wrapped objects.

Limitations
The limits below apply to a running CCDS script process session.

Setting Description Default Value Configurable AppSetting? Configurable Tenant Setting?

Max Heap Amount of RAM the V8 engine can consume. 800 Yes Yes
Megabytes

CPU Time Limit Amount of time the V8 engine can use CPU 10 minutes Yes Yes
resources.

Run Duration Amount of time the V8 engine can run for 60 minutes Yes Yes
Limit regardless of whether it is actively using CPU
resources.

Delay Between 1 second Yes Yes


Net Calls

Logs Per Maximum number of logs that can be created 5 Yes Yes
Second Limit from script per second.

Logs Per Hour Maximum number of logs that can be created 1000 Yes Yes
Limit from script per hour.

Network Usage Maximum megabytes that a script can send and 5 gigabytes Yes Yes
Limit Megabytes receive over the network.

Milliseconds Used to throttle traffic between Task Service and 200 No No


Between Async a script runner process. If the script runner milliseconds
Script Service process can keep up with the demand from the
Requests Task service, then the wait time drops to 0
milliseconds.

Max Script Number of pages' of data the Task service can 50 No No


Result Pages request from a script runner's repository.
Per Request

Max Page size Number of rows of data the Task service will 10000 Yes Yes
request in each page of data

The limits below apply to the CCDS Script Pool Manager.

Setting Description Default Value Configurable AppSetting? Configurable Tenant Setting?

Max Script Maximum number of concurrently running script 100 Yes No


Pool Size processes.

Min Script Minimum number of script processes to have 0 Yes No


Pool Size running at any one time (used to pre-warm' script
runner processes).

Script Pool Maximum time a request for a script runner process 180 seconds Yes No
Wait Timeout can be queued for.

Max Script Maximum number of waiting requests for a script 1000 No No


Pool Queue runner process.
Size

Size script runner process.

Other limits:
Without using the ai.https.sax.parser method in your script, there is a limit to the size of an XML file for parsing. The upper size limit is not known, but for
reference, it is possible to parse 10mb file with a 100mb heap size. We recommend using ai.https.sax.parser for large files.
Scripts cannot access IPs within the Adaptive Planning network.
HTTP is not supported, only HTTPS.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 115/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Known Issues
During importData/importStructure, a datasource will call testConnection. In CCDS, this means two separate script runner processes. It is possible for the
first process to be successfully created to run testConnection. The second process to run importData/importStructure may be queued in the Pool Manager
and eventually timeout, then fail.
Sibling flexible settings can have the same display name. Therefore, in scripts that access a setting via getSetting(displayName), only a single instance is
returned, and there is no guarantee which one is returned. Users should be prevented from creating sibling flexible settings with the same display name.

1.1.6.2.6 | Create Scripts for CCDS

​You can create scripts to retrieve data from a source system. Scripts reference their unique names created in the Parameters Maintenance Panel.

Prerequisites
New to CCDS? See Concept: CCDS
Required Permissions: Integration Developer in Administration > Permission Set
CCDS Developers must be experienced JavaScript programmers

Navigation

From the nav menu, go to Integration > Design Integrations

Steps
1. Select an existing CCDS or create a CCDS from Data Sources pane in Design Integrations.
2. Select the Scripts tab for your CCDS.
3. Enter semicolon-separated URIs that your scripts connect to in the Source URIs field. This field identifies the source system connected to your CCDS.
4. Click the edit icon for the SampleCCDSJavaScript from the Included Scripts pane or double click the row containing SampleCCDSJavaScript. The
SampleCCDSJavaScript code has templates for creating a https:// request, sending a request, receiving a response and validating the response.
Keyboard shortcuts: CTRL + Shift + B on Windows to format your scripts and Ctrl+H to find and replace.
5. Select Save in the Actions pane.

Tip: Best Practice: Make small changes at a time and run scripts often to find syntax errors more easily. Use Logs in the Actions pane to identify errors. Due to
the sparse nature of error messages in the log file, it can be difficult to identify a problem if you've made many changes.

Script Functions
Use the following functions in your script to test your connection, create or update the data source's schema, import rows from the source system to Adaptive
Planning staging and preview data in the source system. See Adaptive Planning functions.

testConnection() - Test the connection to the source.


importStructure() - Import the data structure.
importData() - Get data through https:// or a static source.
previewData() - Preview the output data from the source system.

Sample Scripts
Google Sheets

1.1.6.2.7 | Parameters in Custom Cloud Data Sources (CCDS)

1.1.6.2.7.1 | Define Parameters in Custom Cloud Data Sources (CCDS)

You can add and configure parameterized (dynamic), static, and configuration (SFTP/PGP) parameters to your script via the Designer settings tab. Example:
Connection URLs, user names, passwords, start and end address for a mapped delivery route, time periods, and other information. See Reference: Parameters for
information about the various parameter types.

Parameterized: Change dynamic values during script execution at runtime.


Static: Values initialized before runtime that remain unchanged during script execution.
Configuration: SFTP connection or PGP encryption value(s) created for the Custom Cloud Loader or Set Up a Custom Cloud Data Source (CCDS)

Before you Begin


New to CCDS? See Concept: CCDS and Set up a Custom Cloud Data Source (CCDS).
Required Permissions: Integration Developer within Administration > Permission Set.
CCDS Developers must be experienced JavaScript programmers.
Determine what type of information the Data Designer should fill in.

Navigation

From the nav menu, go to Integration > Design Integrations

Steps
Add Parameters to Designer Settings

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 116/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Click on a parameter from the Settings Component pane and drag it into the Designer Settings tab. You can add as many as you want to be referenced in a
script.

Configure Parameter Values from Designer Settings

1. Select the Edit icon next to the parameters available in the Designer Settings tab. Set Parameterized variables during run time or set static variables that
persist for every run.
2. You can change the Setting Name for both Parameterized and Static parameters.
3. To change a parameterized variable, select Edit parameters on the Edit Parameterized Settings window. Edit parameters link is not available for Static
variables.

Reference the Parameters in Your Script

1. Select your script from the Scripts tab.


2. Double-click the row containing SampleCCDSJavaScript in the Included Scripts pane. SampleCCDSJavaScript contains templates for making a HTTPS
request, Import Structure, Import Data and Preview Data functions. See Adaptive Planning Functions for a complete script example.
3. Add parameters you want your script to reference.

Example:

var startAddress = dataSource.getSetting('startAddress').getvalue();

var endAddress = dataSource.getSetting('endAddress').getvalue();

1.1.6.2.7.2 | Reference: Parameters

In CCDS you can choose parameters to be added to your scripts to import data using web APIs.

The CCDS parameter types are described here. You might also want to read

Define parameters for parameter categories and configuration.


Set up a CCDS for an overview of the CCDS process flow.

Parameter types
Parameterized and Static

Type Description

Boolean Value can be 0 or 1. Default value is 0.

Dimension Dimension values can include Levels, Level Attributes, Dimensions, Dimension Attributes, Account Attributes and Versions.

Integer Numeric non-decimal values.

Password Passwords can include alphabets, numbers and/or special characters.

Period Range Start and End timeframe periods (can be Dynamic or Fixed).

Text Alpha-numeric string sequence

Additional Settings

Type Description

SFTP User defined value created in the Credentials area in the Component library. An SFTP connection includes a server and its authentication
Connection details.

PGP Encryption User defined value created in the Credentials area in the Component library. A PGP encryption includes partner, public, and private key
details.

1.1.6.2.8 | Set up PGP Encryption

You can upload and download encrypted files from Adaptive Planning using Pretty Good Privacy (PGP) to a secure server. This article explains how to create PGP
credentials from Design Integrations, how to add PGP encryption to your CCDS and how to encrypt and decrypt files using PGP.

With PGP you can share your Public key with partners and retrieve partner keys.

Before you Begin


Required Permissions: Integration Developer within Administration > Permission Set
Request the partner key to be communicated to you as an .asc file.

Basic Steps
1. Create a PGP Encryption credential.
2. Input the partner key.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 117/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

3. Download your public key.


4. Add the PGP Encryption to your CCDS.
5. Include PGP encryption or decryption in your script.

How you get There

From the nav menu, go to Integration > Design Integrations

Create a PGP Encryption credential


A new PGP encryption includes a 2048 bit key pair. Public key is visible in the form and available as a download in the Actions pane. The private key is hidden and
can not be exported.

1. Create a PGP Encryption credential from Credentials pane in Design Integrations.


2. Enter a name for the PGP encryption credential.

Input the Partner Key


A partner key is required to encrypt files or text for the partner. Your partner key comes from the .asc file you received.

1. Copy all of the text from your .asc file, including -----BEGIN PGP PUBLIC KEY BLOCK----- and -----END PGP PUBLIC KEY BLOCK-----
2. Paste the key in the Partner key field and save the form.

Download the Public Key


Select Download public key from the Actions pane. This generates your public key in an .asc file and downloads it to your local file manager.

Add PGP Encryption to your CCDS


1. Select your CCDS from Data Sources.
2. Select the Designer Settings tab for your CCDS.
3. Drag and drop the PGP Encryption parameter from Additional Settings in the Settings Component pane. The setting name is the handle you will use
inside your script. Example: 'myPgp'

Example to Encrypt/ Decrypt text string with PGP.


Example to encrypt text into a PGP message

function testConnection(context) {
var text = "Text to encrypt";
var encrypedPgpMessage = ai.util.encrypt(text,'myPgp');
ai.log.logInfo("encrypted message", encrypedPgpMessage );
return true;
}

Example to decrypt a PGP message

function testConnection(context) {
var message = "-----BEGIN PGP MESSAGE-----"
+"Version: GnuPG v2.0.14 (GNU/Linux)"
+"Your Message"
+"-----END PGP MESSAGE-----";
var text = ai.util.decrypt(message,'myPgp');
ai.log.logInfo("text message", text);
return true;
}

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 118/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

1.1.6.2.9 | Set Up and Configure an SFTP

You can create a client to connect to your Secure File Transfer Protocol (SFTP) server and perform various operations on your files. This article explains how to add
an SFTP Connection to the Custom Cloud Data Source (CCDS) and how to include the SFTP connection in your script. See Set up PGP Encryption for information
about encrypting and decrypting your files.

Before you Begin


New to CCDS? See Concept: CCDS Overview and Set up a Custom Cloud Data Source (CCDS)
Required Permissions: Integration Developer within Administration > Permission Set

Navigation

From the nav menu, go to Integration > Design Integrations

Set Up and Configure an SFTP


Create a new SFTP connection
1. Create an SFTP Connection from the Credentials pane in Design Integrations.
2. Enter a name for the connection and click Create.
3. Enter the host expression in the connection form. Connections use port 22 if you don't specify a custom port.
4. Choose your authentication method.
For private key authentication, no password is required.
For basic authentication, enter a password.
5. For private key authentication, send the public key to the client server administrator for installation.
6. Select Test Connection for the first time.

For private key or basic authentication:

When you select Test Connection for the first time, the Fingerprint field populates. This enables server verification for future connections. The client server
administrator can verify the Fingerprint confirming that you are connected to the right server.
After running Test Connection for the first time, click your SFTP connection in the Credentials pane to reload the connection and view the fingerprint field.
When you select Test Connection or use the SFTP connection in a script, the fingerprint from the server must match or the connection fails.

Select your Custom Cloud Data Source

Select a CCDS or create a CCDS from Data Sources in Design Integrations.

Add an SFTP Connection to the Custom Cloud Data Source

1. Select the Designer Settings tab for your CCDS.


2. Drag and drop the SFTP Connection parameter from Additional Settings in the Settings Component pane.
3. Configure the SFTP connection in the Designer Settings tab. The setting name is the handle you will use inside your script. For example, 'sftpserver'.

Add the SFTP Connection in your Script

1. Create a client using ai.sftp.createClient() and provide the name of your SFTP setting. For example: const client =
ai.sftp.createClient('mysftp'). After connecting successfully, a client object is created.
2. Test your Connection from the Actions pane to run your script. You can find find test results of your script in Logs in the Actions pane.

SFTP methods for File Upload and Download


Use the following methods to create a client, upload and download encrypted files to an SFTP server and encrypt or decrypt them with PGP. See ai.sftp.

createClient(sftpConnection)

client = ai.sftp.createClient('mysftp');

uploadFile(Writer, uploadedFileName)

client.uploadFile(writer,'./archive/datasample.csv.asc');

downloadFile(filename)

client.downloadFile('./archive/datasample.csv.asc');

Disconnect the client

client.disconnect();

Free the system resources consumed by the file Reader object.

reader.cleanUp();

Example to Connect and Download files from an SFTP server

function testConnection(context) {
let client;
try {
client = ai.sftp.createClient('mysftp');
}
catch(e) {

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 119/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

ai.log.logError('An error occurred connecting to the server: ' + e);


return false;
}
finally {
if (client) client.disconnect();
}
return true;
}

function importData(context) {
const rowset = context.getRowset();
const client = ai.sftp.createClient('mysftp');
const reader = client.downloadFile('./someData.csv');
try {
reader.readLine();
let line = reader.readLine();
while (line)
{
let cells = line.split(',');
rowset.addRow(cells);
line = reader.readLine();
}
}
catch(e) {
ai.log.logError('An error occurred downloading the file: ' + e);
}
finally {
client.disconnect();
reader.cleanUp();
}
}

1.1.6.3 | CCDS Scripting API

1.1.6.3.1 | ai Namespace

Namespace Description

ai.awss3 Namespace for AWS S3 functionality

ai.date Namespace for the date functionality

ai.https Namespace for communicating over HTTPS

ai.calendar Namespace for calendar functionality

ai.dataSource Namespace for data source functionality

ai.log Namespace for logging functionality

ai.oauth Namespace for OAuth functionality

ai.sftp Namespace for SFTP functionality

ai.util Namespace for utility functions such as data type checking

ai.xml Namespace for XML document parsing and construction

1.1.6.3.2 | ai.date

The ai.date namespace allows users to create ISO8601 datetime strings, as well as convert them into different timezones. Read more about ISO8601 here.

Method Parameters Return Type Description

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 120/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Method Parameters Return Type Description

create( date, sourceTz, String


date : String Date Creates an ISO8601 formatted datetime string including date, time and
format )
string base timezone offset, from a partial datetime string, timezone and optional format
string. Tokens for a valid format string can be found below.
sourceTz : String
Timezone to IMPORTANT: If date is not a valid ISO8601 string, then you must provide a
create date in format string in order to successfully parse and create a datestring.

format : String
Optional - Format
string to assist
parsing date

convertTimezone( date, String Converts a JavaScript date object or valid ISO8601 date string from one
date : Date/String
targetTz ) timezone into another. The return value is an ISO8601 date string formatted in
Date to convert
the target timezone. Valid values for timezones can be found below.
targetTz : String
Timezone to
convert date to

getServerTimezone() String Returns the Integration servers' timezone. Any new date objects created in
user scripts will be treated as in the servers' timezone.

getSupportedTimezones() Array<String> Returns an array containing all valid timezones for use in convertTimezone().

Supported Timezones

Africa/Abidjan America/Grand_Turk Asia/Amman Australia/North Europe/Vaduz

Africa/Accra America/Grenada Asia/Anadyr Australia/Perth Europe/Vatican

Africa/Addis_Ababa America/Guadeloupe Asia/Aqtau Australia/Queensland Europe/Vienna

Africa/Algiers America/Guatemala Asia/Aqtobe Australia/South Europe/Vilnius

Africa/Asmara America/Guayaquil Asia/Ashgabat Australia/Sydney Europe/Volgograd

Africa/Asmera America/Guyana Asia/Ashkhabad Australia/Tasmania Europe/Warsaw

Africa/Bamako America/Halifax Asia/Baghdad Australia/Victoria Europe/Zagreb

Africa/Bangui America/Havana Asia/Bahrain Australia/West Europe/Zaporozhye

Africa/Banjul America/Hermosillo Asia/Baku Australia/Yancowinna Europe/Zurich

Africa/Bissau America/Indiana/Indianapolis Asia/Bangkok Brazil/Acre GB

Africa/Blantyre America/Indiana/Knox Asia/Beirut Brazil/DeNoronha GB-Eire

Africa/Brazzaville America/Indiana/Marengo Asia/Bishkek Brazil/East GMT

Africa/Bujumbura America/Indiana/Petersburg Asia/Brunei Brazil/West GMT+0

Africa/Cairo America/Indiana/Tell_City Asia/Calcutta CET GMT-0

Africa/Casablanca America/Indiana/Vevay Asia/Chita CST6CDT GMT0

Africa/Ceuta America/Indiana/Vincennes Asia/Choibalsan Canada/Atlantic Greenwich

Africa/Conakry America/Indiana/Winamac Asia/Chongqing Canada/Central HST

Africa/Dakar America/Indianapolis Asia/Chungking Canada/East- Hongkong


Saskatchewan

Africa/Dar_es_Salaam America/Inuvik Asia/Colombo Canada/Eastern Iceland

Africa/Djibouti America/Iqaluit Asia/Dacca Canada/Mountain Indian/Antananarivo

Africa/Douala America/Jamaica Asia/Damascus Canada/Newfoundland Indian/Chagos

Africa/El_Aaiun America/Jujuy Asia/Dhaka Canada/Pacific Indian/Christmas

Africa/Freetown America/Juneau Asia/Dili Canada/Saskatchewan Indian/Cocos

Africa/Gaborone America/Kentucky/Louisville Asia/Dubai Canada/Yukon Indian/Comoro

Africa/Harare America/Kentucky/Monticello Asia/Dushanbe Chile/Continental Indian/Kerguelen

Africa/Johannesburg America/Knox_IN Asia/Gaza Chile/EasterIsland Indian/Mahe

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 121/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Africa/Juba America/Kralendijk Asia/Harbin Cuba Indian/Maldives

Africa/Kampala America/La_Paz Asia/Hebron EET Indian/Mauritius

Africa/Khartoum America/Lima Asia/Ho_Chi_Minh EST Indian/Mayotte

Africa/Kigali America/Los_Angeles Asia/Hong_Kong EST5EDT Indian/Reunion

Africa/Kinshasa America/Louisville Asia/Hovd Egypt Iran

Africa/Lagos America/Lower_Princes Asia/Irkutsk Eire Israel

Africa/Libreville America/Maceio Asia/Istanbul Etc/GMT Jamaica

Africa/Lome America/Managua Asia/Jakarta Etc/GMT+0 Japan

Africa/Luanda America/Manaus Asia/Jayapura Etc/GMT+1 Kwajalein

Africa/Lubumbashi America/Marigot Asia/Jerusalem Etc/GMT+10 Libya

Africa/Lusaka America/Martinique Asia/Kabul Etc/GMT+11 MET

Africa/Malabo America/Matamoros Asia/Kamchatka Etc/GMT+12 MST

Africa/Maputo America/Mazatlan Asia/Karachi Etc/GMT+2 MST7MDT

Africa/Maseru America/Mendoza Asia/Kashgar Etc/GMT+3 Mexico/BajaNorte

Africa/Mbabane America/Menominee Asia/Kathmandu Etc/GMT+4 Mexico/BajaSur

Africa/Mogadishu America/Merida Asia/Katmandu Etc/GMT+5 Mexico/General

Africa/Monrovia America/Metlakatla Asia/Khandyga Etc/GMT+6 NZ

Africa/Nairobi America/Mexico_City Asia/Kolkata Etc/GMT+7 NZ-CHAT

Africa/Ndjamena America/Miquelon Asia/Krasnoyarsk Etc/GMT+8 Navajo

Africa/Niamey America/Moncton Asia/Kuala_Lumpur Etc/GMT+9 PRC

Africa/Nouakchott America/Monterrey Asia/Kuching Etc/GMT-0 PST8PDT

Africa/Ouagadougou America/Montevideo Asia/Kuwait Etc/GMT-1 Pacific/Apia

Africa/Porto-Novo America/Montreal Asia/Macao Etc/GMT-10 Pacific/Auckland

Africa/Sao_Tome America/Montserrat Asia/Macau Etc/GMT-11 Pacific/Bougainville

Africa/Timbuktu America/Nassau Asia/Magadan Etc/GMT-12 Pacific/Chatham

Africa/Tripoli America/New_York Asia/Makassar Etc/GMT-13 Pacific/Chuuk

Africa/Tunis America/Nipigon Asia/Manila Etc/GMT-14 Pacific/Easter

Africa/Windhoek America/Nome Asia/Muscat Etc/GMT-2 Pacific/Efate

America/Adak America/Noronha Asia/Nicosia Etc/GMT-3 Pacific/Enderbury

America/Anchorage America/North_Dakota/Beulah Asia/Novokuznetsk Etc/GMT-4 Pacific/Fakaofo

America/Anguilla America/North_Dakota/Center Asia/Novosibirsk Etc/GMT-5 Pacific/Fiji

America/Antigua America/North_Dakota/New_Salem Asia/Omsk Etc/GMT-6 Pacific/Funafuti

America/Araguaina America/Ojinaga Asia/Oral Etc/GMT-7 Pacific/Galapagos

America/Argentina/Buenos_Aires America/Panama Asia/Phnom_Penh Etc/GMT-8 Pacific/Gambier

America/Argentina/Catamarca America/Pangnirtung Asia/Pontianak Etc/GMT-9 Pacific/Guadalcanal

America/Argentina/ComodRivadavia America/Paramaribo Asia/Pyongyang Etc/GMT0 Pacific/Guam

America/Argentina/Cordoba America/Phoenix Asia/Qatar Etc/Greenwich Pacific/Honolulu

America/Argentina/Jujuy America/Port-au-Prince Asia/Qyzylorda Etc/UCT Pacific/Johnston

America/Argentina/La_Rioja America/Port_of_Spain Asia/Rangoon Etc/UTC Pacific/Kiritimati

America/Argentina/Mendoza America/Porto_Acre Asia/Riyadh Etc/Universal Pacific/Kosrae

America/Argentina/Rio_Gallegos America/Porto_Velho Asia/Saigon Etc/Zulu Pacific/Kwajalein

America/Argentina/Salta America/Puerto_Rico Asia/Sakhalin Europe/Amsterdam Pacific/Majuro

America/Argentina/San_Juan America/Rainy_River Asia/Samarkand Europe/Andorra Pacific/Marquesas

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 122/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

America/Argentina/San_Luis America/Rankin_Inlet Asia/Seoul Europe/Athens Pacific/Midway

America/Argentina/Tucuman America/Recife Asia/Shanghai Europe/Belfast Pacific/Nauru

America/Argentina/Ushuaia America/Regina Asia/Singapore Europe/Belgrade Pacific/Niue

America/Aruba America/Resolute Asia/Srednekolymsk Europe/Berlin Pacific/Norfolk

America/Asuncion America/Rio_Branco Asia/Taipei Europe/Bratislava Pacific/Noumea

America/Atikokan America/Rosario Asia/Tashkent Europe/Brussels Pacific/Pago_Pago

America/Atka America/Santa_Isabel Asia/Tbilisi Europe/Bucharest Pacific/Palau

America/Bahia America/Santarem Asia/Tehran Europe/Budapest Pacific/Pitcairn

America/Bahia_Banderas America/Santiago Asia/Tel_Aviv Europe/Busingen Pacific/Pohnpei

America/Barbados America/Santo_Domingo Asia/Thimbu Europe/Chisinau Pacific/Ponape

America/Belem America/Sao_Paulo Asia/Thimphu Europe/Copenhagen Pacific/Port_Moresby

America/Belize America/Scoresbysund Asia/Tokyo Europe/Dublin Pacific/Rarotonga

America/Blanc-Sablon America/Shiprock Asia/Ujung_Pandang Europe/Gibraltar Pacific/Saipan

America/Boa_Vista America/Sitka Asia/Ulaanbaatar Europe/Guernsey Pacific/Samoa

America/Bogota America/St_Barthelemy Asia/Ulan_Bator Europe/Helsinki Pacific/Tahiti

America/Boise America/St_Johns Asia/Urumqi Europe/Isle_of_Man Pacific/Tarawa

America/Buenos_Aires America/St_Kitts Asia/Ust-Nera Europe/Istanbul Pacific/Tongatapu

America/Cambridge_Bay America/St_Lucia Asia/Vientiane Europe/Jersey Pacific/Truk

America/Campo_Grande America/St_Thomas Asia/Vladivostok Europe/Kaliningrad Pacific/Wake

America/Cancun America/St_Vincent Asia/Yakutsk Europe/Kiev Pacific/Wallis

America/Caracas America/Swift_Current Asia/Yekaterinburg Europe/Lisbon Pacific/Yap

America/Catamarca America/Tegucigalpa Asia/Yerevan Europe/Ljubljana Poland

America/Cayenne America/Thule Atlantic/Azores Europe/London Portugal

America/Cayman America/Thunder_Bay Atlantic/Bermuda Europe/Luxembourg ROC

America/Chicago America/Tijuana Atlantic/Canary Europe/Madrid ROK

America/Chihuahua America/Toronto Atlantic/Cape_Verde Europe/Malta Singapore

America/Coral_Harbour America/Tortola Atlantic/Faeroe Europe/Mariehamn Turkey

America/Cordoba America/Vancouver Atlantic/Faroe Europe/Minsk UCT

America/Costa_Rica America/Virgin Atlantic/Jan_Mayen Europe/Monaco US/Alaska

America/Creston America/Whitehorse Atlantic/Madeira Europe/Moscow US/Aleutian

America/Cuiaba America/Winnipeg Atlantic/Reykjavik Europe/Nicosia US/Arizona

America/Curacao America/Yakutat Atlantic/South_Georgia Europe/Oslo US/Central

America/Danmarkshavn America/Yellowknife Atlantic/St_Helena Europe/Paris US/East-Indiana

America/Dawson Antarctica/Casey Atlantic/Stanley Europe/Podgorica US/Eastern

America/Dawson_Creek Antarctica/Davis Australia/ACT Europe/Prague US/Hawaii

America/Denver Antarctica/DumontDUrville Australia/Adelaide Europe/Riga US/Indiana-Starke

America/Detroit Antarctica/Macquarie Australia/Brisbane Europe/Rome US/Michigan

America/Dominica Antarctica/Mawson Australia/Broken_Hill Europe/Samara US/Mountain

America/Edmonton Antarctica/McMurdo Australia/Canberra Europe/San_Marino US/Pacific

America/Eirunepe Antarctica/Palmer Australia/Currie Europe/Sarajevo US/Pacific-New

America/El_Salvador Antarctica/Rothera Australia/Darwin Europe/Simferopol US/Samoa

America/Ensenada Antarctica/South_Pole Australia/Eucla Europe/Skopje UTC

America/Fort_Nelson Antarctica/Syowa Australia/Hobart Europe/Sofia Universal

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 123/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

America/Fort_Wayne Antarctica/Troll Australia/LHI Europe/Stockholm W-SU

America/Fortaleza Antarctica/Vostok Australia/Lindeman Europe/Tallinn WET

America/Glace_Bay Arctic/Longyearbyen Australia/Lord_Howe Europe/Tirane Zulu

America/Godthab Asia/Aden Australia/Melbourne Europe/Tiraspol

America/Goose_Bay Asia/Almaty Australia/NSW Europe/Uzhgorod

Supported Date Format String Tokens


Non-alphanumeric characters are ignored by the parser.

Year, Month, and Day Tokens

Input Example Description

YYYY 2014 4 or 2 digit year

YY 14 2 digit year

Q 1..4 Quarter of year. Sets month to first month in quarter.

M MM 1..12 Month number

MMM MMMM Jan..December Month name in locale

D DD 1..31 Day of month

Do 1st..31st Day of month with ordinal

DDD DDDD 1..365 Day of year

X 1410715640.579 Unix timestamp

x 1410715640579 Unix ms timestamp

YYYY from version 2.10.5 supports 2 digit years, and converts them to a year near 2000 (same as YY).

Week Year, Week, and Weekday Tokens

For these, the lowercase tokens use the locale aware week start days, and the uppercase tokens use the ISO week date start days.

Input Example Description

gggg 2014 Locale 4 digit week year

gg 14 Locale 2 digit week year

w ww 1..53 Locale week of year

e 1..7 Locale day of week

ddd dddd Mon...Sunday Day name in locale

GGGG 2014 ISO 4 digit week year

GG 14 ISO 2 digit week year

W WW 1..53 ISO week of year

E 1..7 ISO day of week

Hour, Minute, Second, Millisecond, and Offset Tokens

Input Example Description

H HH 0..23 24 hour time

h hh 1..12 12 hour time used with a A.

aA am pm Post or ante meridiem

m mm 0..59 Minutes

s ss 0..59 Seconds

S SS SSS 0..999 Fractional seconds

Z ZZ +12:00 Offset from UTC as +-HH:mm, +-HHmm, or Z

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 124/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Creating ISO8601 Datetime Strings

// create a date from a date fragment that is in ISO8601 format


var date = ai.date.create('2016-02-01', 'America/Los_Angeles');
// date is "2016-02-01T00:00:00-08:00"

// create a date from a date fragment that is NOT in ISO8601 format


var date = ai.date.create('02/01/2016', 'America/Los_Angeles', 'MM/DD/YYYY');
// date is "2016-02-01T00:00:00-08:00"

// create a date from a date fragment that is NOT in ISO8601 format, but in Australian format
var date = ai.date.create('02/01/2016', 'America/Los_Angeles', 'DD/MM/YYYY');
// date is "2016-01-02T00:00:00-08:00"

// create a date from a date and time fragment, but no offset, fragment is in ISO8601 format.
var date = ai.date.create('2016-02-01T05:00', 'America/Los_Angeles');
// date is "2016-02-01T05:00:00-08:00"

var date = ai.date.create('2016-02-01 05:00', 'America/Los_Angeles');


// date is "2016-02-01T05:00:00-08:00"

// create a date that includes daylight savings


var date = ai.date.create('2016-02-01 12:00', 'Australia/Sydney');
// date is "2016-02-01T12:00:00+11:00"

// without daylight savings...


var date = ai.date.create('2016-06-01 12:00', 'Australia/Sydney');
// date is "2016-02-01T12:00:00+10:00"

// create a date in UTC


var date = ai.date.create('2016-03-01', 'UTC');
// date is "2016-03-01T00:00:00+00:00"

Converting ISO8601 Datetime Strings

// convert Brisbane to Sydney time with daylight savings


var date = ai.date.convertTimezone(new Date('2015-01-15T12:00:00+10:00'), 'Australia/Sydney');
// date is "2015-01-15T13:00:00+11:00"

// convert Brisbane to Sydney time without daylight savings


var date = ai.date.convertTimezone('2015-06-15T12:00:00+10:00', 'Australia/Sydney');
// date is "2015-06-15T12:00:00+10:00"

// convert Brisbane to New York time


var date = ai.date.convertTimezone('2015-06-15T12:00:00+10:00', 'America/New_York');
// date is "2015-06-14T22:00:00-04:00"

// convert New York to Brisbane time


var date = ai.date.convertTimezone('2015-06-15T12:00:00-04:00', 'Australia/Brisbane');
// date is "2015-06-16T02:00:00+10:00"

// convert New York to UTC time


var date = ai.date.convertTimezone('2015-06-15T12:00:00-04:00', 'UTC');
// date is "2015-06-15T16:00:00+00:00"

Getting Server Timezone

var serverTz = ai.date.getServerTimezone();


// as an example, serverTz = 'America/Los_Angeles'

Getting All Supported Timezones

var timezones = ai.date.getSupportedTimezones();


// timezones is an array containing the above 583 timezones

1.1.6.3.3 | ai.https

​Request

Method Description

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 125/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Method Description

request(url, method, body, Makes a HTTPS request. Returns a response.


headers)
As of 2018.3, request(method) supports

GET: Retrieve data.


POST: Submit data to the specified resource.
PUT: Creates/Replaces the specified resource.
PATCH: Apply partial modifications to the resource.

requestStream(url, method, body, Makes a HTTPS stream request. Returns a response.


headers
GET: Retrieve data.
available with 2018.3 POST: Submit data to the specified resource.
PUT: Creates/Replaces the specified resource.
PATCH: Apply partial modifications to the resource.

authorizedRequest(url, method, Makes an https request with authorization header generated for an OAuth enabled CCDS. Returns a response.
body, headers)
Uses the underlying OAuth configuration item details along with authorization information from the data source to
generate the authorization header for the https request.

As of 2018.3, authorizedRequest(method) supports

GET: Retrieve data.


POST: Submit data to the specified resource.
PUT: Creates/Replaces the specified resource.
PATCH: Apply partial modifications to the resource.

requestAuthorizedStream(url, Makes an HTTPS stream request with authorization header generated for an OAuth enabled CCDS. Returns a
method, body, headers) response.

available with 2018.3 Uses the underlying OAuth configuration item details along with authorization information from the data source to
generate the authorization header for the https stream request.

RequestAuthorizedStream(method) supports

GET: Retrieve data.


POST: Submit data to the specified resource.
PUT: Creates/Replaces the specified resource.
PATCH: Apply partial modifications to the resource.

Response

Method Description

getHttpCode() Returns the HTTP code of the response. For a complete list of HTTP response codes click here.

getHeaders() Returns the response headers.

getBody() Returns the response content.

Examples
ai.https.request

function testConnection(context) {
//This example connects to Postman Echo using GET
var URL = 'https://postman-echo.com/get?foo1=bar1&foo2=bar2';
var method = 'GET';
var body = '';
var headers = null;
//ai.https.request
var response = ai.https.request(URL, method, body, headers);
var responseCode = response.getHttpCode();
if (responseCode == 200) {
ai.log.logInfo('Test Connection Succeeded','Response code was 200');
return true;
}
else{
ai.log.logInfo('Test Connection Failed','Response code was not 200');
return false;
}
}

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 126/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

ai.https.requestStream

function testConnection(context) {
//This example connects to Postman Echo using GET
var URL = 'https://postman-echo.com/get?foo1=bar1&foo2=bar2';
var method = 'GET';
var body = '';
var headers = null;
var response = ai.https.requestStream(URL, method, body, headers);
return true;
}

ai.https.authorizedRequest

function testConnection(context) {
//This example connects to Postman Echo using GET
var URL = 'https://postman-echo.com/basic-auth';
var method = 'GET';
var username='postman';
var pwd='password';
var body = '<username>'+username+'</username><password>'+pwd+'</password>';
var headers = {'Authorization': 'Basic cG9zdG1hbjpwYXNzd29yZA=='};
var response = ai.https.authorizedRequest(URL, method, body, headers);
var responseCode = response.getHttpCode();
ai.log.logInfo(responseCode);
if (responseCode == 200) {
ai.log.logInfo('Test Connection Succeeded','Response code was 200');
var responseBody = response.getBody();
ai.log.logInfo(responseBody); //{"authenticated":true}
return true;
}
else{
ai.log.logInfo('Test Connection Failed','Response code was not 200');
return false;
}
}

ai.requestAuthorizedStream

function testConnection(context) {
//This example connects to Postman Echo using GET
var URL = 'https://postman-echo.com/basic-auth';
var method = 'GET';
var username='postman';
var pwd='password';
var body = '<username>'+username+'</username><password>'+pwd+'</password>';
var headers = {'Authorization': 'Basic cG9zdG1hbjpwYXNzd29yZA=='};
var response = ai.https.requestAuthorizedStream(URL, method, body, headers);
}

1.1.6.3.4 | ai.calendar

​A period of time that can contain raw or aggregated data. See Set Up Calendars.

Functions

Method Parameters Returns Description

getNextPeriod( period [, ai.calendar.period Returns the next Period in the Adaptive


period: String Value of the period to get
options ] ) Planning Calendar from the period passed in
next period of time for
the argument
options: Object Object containing a type
property 'number' and a value property as
an int. Example: {type: 'number', value: 3}

getPreviousPeriod( period [, ai.calendar.period Returns the previous Period in the Adaptive


period: String Value of the period to get
options ] ) Planning Calendar from the period passed in
previous period of time for
the argument
options: Object Object containing a type
property 'number' and a value property as
an int. Example: {type: 'number', value: 3}

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 127/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Method Parameters Returns Description

getAvailablePeriodTypes( Array<String> Returns array of Stratum (Period type) codes


periodType: String Stratum code of one of
periodType ) supported by the calendar higher in the
the available Strata.
hierarchy than the stratum passed in (ex
['QuarterYear', 'HalfYear', 'Year'] )

getPeriodStartDateTime( String Returns the start date time for the period in
period: ai.calendar.period Period you want
period ) ISO8601 date string format (ex '2015-06-
to get the start date time for
15T12:00:00+10:00')

getPeriodEndDateTime( String Returns the end date time for the period in
period: ai.calendar.period Period you want
period ) ISO8601 date string format (ex '2015-06-
to get the end date time for
15T12:00:00+10:00')

convertToAdaptivePeriodStart String Returns the corresponding Adaptive Planning


start: String ISO8601 formatted start date
( start, end ) Period start date in ISO8601 date string format
of the period to convert
(ex '2015-06-15T12:00:00+10:00')
end: String ISO8601 formatted end date
of the period to convert

isWithinAdaptivePeriodRange Boolean Returns true if both the start date and end date
start: String ISO8601 formatted start date
( start, end, periodFrom, given falls within the 2 the from period and to
of the period to convert
periodEnd ) period. Returns false otherwise. (ex true/false)
end: String ISO8601 formatted end date
of the period to convert
periodFrom: ai.calendar.period Period
from which you want to compare
periodEnd: ai.calendar.period Period to
which you want to compare

Examples
Example for getNextPeriod( period [, options ] ) and getPeviousPeriod( period [, options ] )

function PreviewData(context) {
var calendar = context.getCalendar();
var dataSource = context.getDataSource();
var periods = dataSource.getSetting("Periods").getValue();
// getNextPeriod
var nextMonth = calendar.getNextPeriod(periods.getFromPeriod());
//getPreviousPeriod
var prevMonth = calendar.getPreviousPeriod(periods.getFromPeriod());
}

Example for convertToAdaptivePeriodStart ( start, end )

function PreviewData(context) {
var calendar = context.getCalendar();
var newDate = calendar.convertToAdaptivePeriodStart(ai.date.create('2016-02-01', 'America/Los_Angeles'), ai.date.create('2016-05-01', 'America/Los_Angeles'));
// write the corresponding Adaptive Planning period start date to log.
ai.log.logInfo(newDate);
//Assuming server is in PST timezone, the corresponding output is '2016-04-01T00:00:00.0000000-07:00'
}

Example for getAvailablePeriodTypes( periodType )

function PreviewData(context) {
var dataSource = context.getDataSource();
var calendar = context.getCalendar();
var availableTypeMonth = calendar.getAvailablePeriodTypes('month');
var availableTypeQuarter = calendar.getAvailablePeriodTypes('qtr');
var availableTypeYear = calendar.getAvailablePeriodTypes('year');
ai.log.logInfo("Stratum code of one of the available Strata for month: "+availableTypeMonth);
ai.log.logInfo("Stratum code of one of the available Strata for quarter: "+availableTypeQuarter);
ai.log.logInfo("Stratum code of one of the available Strata for year: "+availableTypeYear);
}
//Stratum code of one of the available Strata for month: month,qtr,year
//Stratum code of one of the available Strata for quarter: qtr,year
//Stratum code of one of the available Strata for year: year

ai.calendar.period
A time period that can contain raw or aggregated data.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 128/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Functions

Method Parameters Returns Description

getValue() string Returns the string value of the Period that child columns that can be used to pass to Calendar functions as
arguments.

Example

function PreviewData(context) {
var dataSource = context.getDataSource();
var calendar = context.getCalendar();
var periods = dataSource.getSetting("Periods").getValue();
var period = calendar.nextPeriod(periods.getFromPeriod());
var nextPeriod = calendar.nextPeriod(period.getValue());
}

1.1.6.3.5 | ai.dataSource

​The data source contains settings and tables.

Functions

Method Parameters Returns Description

getTables() Array<ai.dataSource.table> Returns a list of imported tables.

getTable( tableId ) tableId : String Remote Id of the ai.dataSource.table Returns the table with requested table id. Returns null if no
table table is found.

getSettings() Array<ai.dataSource.setting> Returns all flexible settings.

getSetting( displayName : String Name of the ai.dataSource.setting Returns a flexible setting by its display name
displayName ) setting

Example

function previewData(context) {
var dataSource = context.getDataSource();
var allTablesInThisDataSource = dataSource.getTables();
//Navigate to Designer Settings tab, drag and drop a Static Integer parameter from the Settings Component
//Setting Name: Custom Integer and Value: 100
var getSetting=dataSource.getSetting("Custom Integer" );
ai.log.logInfo(getSetting.getValue()); //100
}

ai.dataSource.table

Method Parameters Returns Description

getColumnByDisplayName( name : String Display name of the column ai.dataSource.column Finds a column by its
name ) display name. Returns
null if no column found.

getColumnById( id ) id : String Remote Id of the column ai.dataSource.column Finds a column by its


remote Id. Returns null
if no column found.

getColumns() Array<ai.dataSource.column> Returns all child


columns that have been
enabled for data import.

getDisplayName() String Returns the display


name of the table.

getId() String Returns the remote Id of


this table, or display
name if no remote Id
was specified.

getLastImported() String Returns a string


identifying when the
table was last imported.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 129/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Method Parameters Returns Description

getRelationships() Array<ai.dataSource.relationship> Returns all relationships


where this table is the
primary table of the
relationship.

getRequiredParameters() Array<ai.dataSource.table.requiredParameter> Returns all table


required parameters
and their parameter
values.

getRequiredParameter( id ) id : String Remote Id of the required ai.dataSource.table.requiredParameter Returns a table required


parameter as defined during Import Structure parameter by its remote
Id.

Example

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 130/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

//Consider a sample data source


dataSample = {
rows: [
{"Value": 10, "Measure": "", "Test": "No Space", "Effective Date": "2018-11-01"},
{"Value": 20, "Measure": " ", "Test": "One Space", "Effective Date": "2018-11-01"},
{"Value": 30, "Measure": " ", "Test": "Two Spaces", "Effective Date": "2018-11-01"},
{"Value": 40, "Measure": " ", "Test": "Three Spaces", "Effective Date": "2018-11-01"},
{"Value": 50, "Measure": "1 ", "Test": "Aus" + '\\-' + "tin" + '\\-', "Effective Date": "2018-11-01"},
{"Value": 10, "Measure": "2 ", "Test": "Austin", "Effective Date": "2018-12-01"},
{"Value": 20, "Measure": "3 ", "Test": "Austin", "Effective Date": "2018-12-01"},
{"Value": 30, "Measure": "4 ", "Test": "Austin", "Effective Date": "2018-12-01"},
{"Value": 40, "Measure": "5 ", "Test": "Austin", "Effective Date": "2018-12-01"}
]
};
ExternalMetadataDefinition = {
Tables : [
{
name : "dataSample",
displayName : "Sample",
id:"dataSample",
parameterId:"sampleParameter",
columns : [
{name : "Value", displayName : "Value", type: "float", includeByDefault : true, },
{name : "Measure", displayName : "Measure", type: "text", includeByDefault : true},
{name : "Test", displayName : "Test", type: "text", includeByDefault : true},
{name : "Effective Date", displayName : "Date", type : "datetime", includeByDefault : true}
]
}
]
};

//Create a table structure


function importStructure(context) {
var addColumn = function(table, column, order) {
var recordColumn = table.addColumn(column.name);
recordColumn.setDisplayName(column.displayName);
switch (column.type) {
case "text":
recordColumn.setTextColumnType(column.length);
break;
case "int":
recordColumn.setIntegerColumnType();
break;
case "float":
recordColumn.setFloatColumnType();
break;
case "boolean":
recordColumn.setBooleanColumnType();
break;
case "datetime":
recordColumn.setDateTimeColumnType();
break;
default:
recordColumn.setTextColumnType(200);
break;
}
recordColumn.setDisplayOrder(order);
recordColumn.setIncludeByDefault(column.includeByDefault || false);
recordColumn.setIncludeInKey(column.includeInKey || false);
recordColumn.setMandatoryForImports(column.mandatoryForImport || false);
recordColumn.setRemoteColumnType(column.remoteColumnType || "String");
};
var builder = context.getStructureBuilder();
var dataSource=context.getDataSource();
for (var i = 0; i < ExternalMetadataDefinition.Tables.length; i++) {
var externalTable = ExternalMetadataDefinition.Tables[i];
var table = builder.addTable(externalTable.name);
table.setDisplayName(externalTable.displayName);
for (var j = 0; j < externalTable.columns.length; j++) {
addColumn(table, externalTable.columns[j], j + 1);
}
}
}

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 131/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

//Examples for ai.datasource.table


function importData(context){
var dataSource = context.getDataSource();
var alltablesinds=dataSource.getTables();
var rowset=context.getRowset();
//Example: getTableId;
var tableId = rowset.getTableId(); ////dataSample
var table= dataSource.getTable( tableId );
//Example: getDisplayName
var dname=table.getDisplayName(); //Sample
ai.log.logInfo("Table Display Name",dname);
//Example: getLastImported
var lastImported=table.getLastImported();
ai.log.logInfo("Last Imported:",lastImported); //Last Imported 10/23/2020 01:12:59
//Example: getId
ai.log.logInfo("Table id",table.getId()) //dataSample

ai.dataSource.table.column

Method Parameters Returns Description

getColumnType() String Returns the column type. Value is either 'DateTimeColumn', 'IntegerColumn', 'FloatColumn',
'BooleanColumn' or 'TextColumn'.

getDisplayName() String Returns the columns' display name.

getDisplayOrder() String Returns the columns' display order.

getId() String Returns the columns remote Id, or display name is no remote Id was specified.

getIncludeByDefault() Boolean Returns true if the column is included in the data import.

getIncludeInKey() Boolean Returns true if the column is part of the table key. Key columns do not allow null values.

getLength() Integer Note: Only for TextColumns. Returns the max length of values held in a TextColumn.

getMandatoryForImports() True Returns true if the column is required to be part of the data import.

getNonFilterable() True Returns true if the column cannot be used as part of a SQL filter (WHERE statement).

getRemoteColumnType() String Returns the columns' remote column type as defined in the import structure script.

Example

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 132/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

//Consider a sample JSON data set


dataSample = {
rows: [
{"Value": 10, "Measure": "", "Test": "No Space", "Effective Date": "2018-11-01"},
{"Value": 20, "Measure": " ", "Test": "One Space", "Effective Date": "2018-11-01"},
{"Value": 30, "Measure": " ", "Test": "Two Spaces", "Effective Date": "2018-11-01"},
{"Value": 40, "Measure": " ", "Test": "Three Spaces", "Effective Date": "2018-11-01"},
{"Value": 50, "Measure": "1 ", "Test": "Aus" + '\\-' + "tin" + '\\-', "Effective Date": "2018-11-01"},
{"Value": 10, "Measure": "2 ", "Test": "Austin", "Effective Date": "2018-12-01"},
{"Value": 20, "Measure": "3 ", "Test": "Austin", "Effective Date": "2018-12-01"},
{"Value": 30, "Measure": "4 ", "Test": "Austin", "Effective Date": "2018-12-01"},
{"Value": 40, "Measure": "5 ", "Test": "Austin", "Effective Date": "2018-12-01"}
]
};
ExternalMetadataDefinition = {
Tables : [
{
name : "dataSample",
displayName : "Sample",
id:"dataSample",
parameterId:"2018-01-01",
columns : [
{name : "Value", displayName : "Value", type: "float", includeByDefault : true, },
{name : "Measure", displayName : "Measure", type: "text", includeByDefault : true},
{name : "Test", displayName : "Test", type: "text", includeByDefault : true},
{name : "Effective Date", displayName : "Date", type : "datetime", includeByDefault : true}
]
}
]
};

function testConnection(context) {
return true;
}

//Create a table structure


function importStructure(context) {
var addColumn = function(table, column, order) {
var recordColumn = table.addColumn(column.name);
recordColumn.setDisplayName(column.displayName);
switch (column.type) {
case "text":
recordColumn.setTextColumnType(column.length);
break;
case "int":
recordColumn.setIntegerColumnType();
break;
case "float":
recordColumn.setFloatColumnType();
break;
case "boolean":
recordColumn.setBooleanColumnType();
break;
case "datetime":
recordColumn.setDateTimeColumnType();
break;
default:
recordColumn.setTextColumnType(200);
break;
}
recordColumn.setDisplayOrder(order);
recordColumn.setIncludeByDefault(column.includeByDefault || false);
recordColumn.setIncludeInKey(column.includeInKey || false);
recordColumn.setMandatoryForImports(column.mandatoryForImport || false);
recordColumn.setRemoteColumnType(column.remoteColumnType || "String");
};
var builder = context.getStructureBuilder();
var dataSource=context.getDataSource();
for (var i = 0; i < ExternalMetadataDefinition.Tables.length; i++) {
var externalTable = ExternalMetadataDefinition.Tables[i];
var table = builder.addTable(externalTable.name);
table.setDisplayName(externalTable.displayName);
for (var j = 0; j < externalTable.columns.length; j++) {

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 133/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

addColumn(table, externalTable.columns[j], j + 1);


}
}
}

//Examples for ai.datasource.table.column


function importData(context) {
var columnArray = rowset.getColumns();
var colIds=[];
var colDisplayNames=[];
var colTypes=[];
var colDisplayOrder=[];
var colIncludeByDefault=[];
var colLength=[];
for (var k = 0; k < columnArray.length; k++) {
//Example:getColumnType
colTypes.push(columnArray[k].getDisplayName().toString()+":"+columnArray[k].getColumnType().toString());
//Example:getDisplayName
colDisplayNames.push(columnArray[k].getDisplayName().toString());
//Example:getDisplayOrder
colDisplayOrder.push(columnArray[k].getDisplayName().toString()+":"+columnArray[k].getDisplayOrder().toString());
//Example:getId
colIds.push(columnArray[k].getId().toString());
//Example:getIncludeByDefault
colIncludeByDefault.push(columnArray[k].getDisplayName().toString()+":"+columnArray[k].getIncludeByDefault().toString());
//Example:getLength
if(columnArray[k].getColumnType()==="TextColumn")
{
colLength.push(columnArray[k].getDisplayName().toString()+":"+columnArray[k].getLength());
}
}

ai.log.logInfo("Column Ids are "+colIds);


//Column Ids are Effective Date,Value,Measure,Test
ai.log.logInfo("Column Display names are "+colDisplayNames);
//Column Display names are Date,Value,Measure,Test
ai.log.logInfo("Column Types are "+colTypes);
//Column Types are Date: DateTimeColumn, Value:FloatColumn, Measure:TextColumn,Test:TextColumn
ai.log.logInfo("Column Display Order: "+colDisplayOrder);
//Column Display Order: Date:4,Value:1,Measure:2,Test:3
ai.log.logInfo("Column Included by Default:"+colIncludeByDefault);
//Column Included by Default:Date:true,Value:true,Measure:true,Test:true
ai.log.logInfo("Length - "+colLength);
//Length - Measure:200,Test:200
}

ai.dataSource.table.relationship
Functions

Method Parameters Returns Description

getJoinExpression() String Returns the relationships' expression storage SQL e.g. 'P.Column123 = R.Column321'.

getJoinType() Int Returns the relationships' type of join. Values are either 0 (Inner), 1 (LeftOuter) or 2 (RightOuter).

getDisplayName() String Returns the relationships' display name.

getRelatedTableId() String Returns the remote Id of the relationships' related table, or its display name is no remote Id was
specified.

getRelatedTableName() String Returns the display name of the relationships' related table.

ai.dataSource.setting
Flexible settings are child items of a Custom Cloud Data Source. Settings can be static in that a value is configured, or they can be parameterized in that at script
runtime, users are prompted to enter in a value for the setting. Examples of setting usage are urls, usernames, passwords, date ranges or dimensions that a script
can access.

Functions

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 134/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Method Parameters Returns Description

getDisplayName() String Returns the settings' display name.

getValue() Mixed Returns the value of the setting's parameter. Value may be a primitive type or complex object - see Value
Types below.

isBoolean() Boolean Returns true if the setting type is Boolean.

isDimension() Boolean Returns true if the setting type is Dimension.

isInteger() Boolean Returns true if the setting type is Integer.

isPassword() Boolean Returns true if the setting type is Password.

isPeriodRange() Boolean Returns true if the setting type is PeriodRange.

isText() Boolean Returns true if the setting type is Text.

Example

//Navigate to Designer Settings tab and drag an Integer Static parameter from the Settings Component pane
//Name the setting Custom Integer and set the value to 100
var dataSource= context.getDataSource();
var setting=dataSource.getSetting("Custom Integer" );

//Example: getDisplayName
var name = setting.getDisplayName(); //Custom Integer

//Example: getValue
var value = setting.getValue(); //100

// DataType checkup for the setting.


if(setting.isInteger()){
ai.log.logInfo("Setting is of the type Integer"); //Setting is of the type Integer
}
//Check for other data types using setting.isPeriodRange(), setting.isInteger(), setting.isBoolean(), setting.isText(), setting.isPassword(), setting.isDimension(

Value Types

Each setting's getValue() function can return a primitive type or a complex object.

Boolean Settings : getValue() returns the value as a Boolean.

Text Settings : getValue() returns the value as a String.

Integer Settings : getValue() returns the value as an Integer.

Password Settings: getValue() returns the value as a String.

Period Range Settings: getValue() returns the value as a complex object. This object is defined as such:

Method Parameters Returns Description

getFromPeriod() String Returns a string defining the internal representation of resolved Adaptive Planning From
Period that can be used to pass to the ai.calendar method calls. E.g. "3152|5201611100000"

getToPeriod() String Returns a string defining the internal representation of resolved Adaptive Planning To Period
that can be used to pass to the ai.calendar method calls. E.g. "3152|5201611100000"

getFromPeriodStartDateTime() String Returns a datetime string representation of the From Period start datetime, expressed in local
time. E.g. "2016-01-01T00:00:00+10:00"

getFromPeriodEndDateTime() String Returns a datetime string representation of the From Period end datetime, expressed in local
time. E.g. "2016-02-01T00:00:00+10:00"

getToPeriodStartDateTime() String Returns a datetime string representation of the To Period start datetime, expressed in local
time. E.g. "2016-06-01T00:00:00+10:00"

getToPeriodEndDateTime() String Returns a datetime string representation of the To Period end datetime, expressed in local
time. E.g. "2016-07-01T00:00:00+10:00"

Example

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 135/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

function importData(context)
{
var dataSource = context.getDataSource();
//getFromPeriod
var getFromPeriod=dataSource.getSetting("Period Range").getValue().getFromPeriod();
//getToPeriod
var getToPeriod=dataSource.getSetting("Period Range").getValue().getToPeriod();
//getFromPeriodStartDateTime
var getFromPeriodStartDateTime = dataSource.getSetting("Period Range").getValue().getFromPeriodStartDateTime().substring(0, 10);
ai.log.LogInfo("getFromPeriodStartDateTime"+getFromPeriodStartDateTime); //2017-12-01
//getFromPeriodEndDateTime
var getFromPeriodEndDateTime = dataSource.getSetting("Period Range").getValue().getFromPeriodEndDateTime().substring(0, 10);
ai.log.LogInfo("getFromPeriodEndDateTime"+getFromPeriodEndDateTime); //2017-12-31
//getToPeriodStartDateTime
var getToPeriodStartDateTime = dataSource.getSetting("Period Range").getValue().getToPeriodEndDateTime().substring(0, 10);
ai.log.LogInfo("getToPeriodStartDateTime"+getToPeriodStartDateTime); //2018-01-01
//getToPeriodEndDateTime
var getToPeriodEndDateTime = dataSource.getSetting("Period Range").getValue().getToPeriodEndDateTime().substring(0, 10);
ai.log.LogInfo("getToPeriodEndDateTime"+getToPeriodEndDateTime); //2018-01-30
}

Dimension Settings
getValue() returns the value as a complex object. This object is defined as such:

Method Parameters Returns Description

getDimensionName() String Returns the name of the Dimension defined in the value.

getValueName() Mixed Returns the name of the Dimension Member defined in the value.

Example

//Navigate to Designer Settings tab and drag a Static Dimension parameter from the Settings Component pane
//Name the setting "Custom Dimension" and set a value from the Static Dimension Setting dropdown
var setting=dataSource.getSetting("Custom Dimension" );
var value = setting.getValue();

//Example: getDisplayName
var name = value.getDimensionName();
var settingValue=value.getValueName();

ai.log.logInfo("Dimension Settings Name: "+name+" and Dimension Settings Value: "+settingValue);


//Dimension Settings Name: Level and Dimension Settings Value: Company B (40% owned)Example for Dimension Settings
//Navigate to Designer Settings tab and drag a Static Dimension parameter from the Settings Component pane
//Name the setting "Custom Dimension" and set a value from the Static Dimension Setting dropdown
var setting=dataSource.getSetting("Custom Dimension" );
var value = setting.getValue();

//Example: getDisplayName
var name = value.getDimensionName();
var settingValue=value.getValueName();

ai.log.logInfo("Dimension Settings Name: "+name+" and Dimension Settings Value: "+settingValue);


//Dimension Settings Name: Level and Dimension Settings Value: Company B (40% owned)

ai.dataSource.table.requiredParameter
During script execution, valid Required Parameters prompt a user to provide values. These values are then accessible in scripts. Required Parameters can be
created during importStructure.

Note: During ImportData, only Required Parameters that have been configurable as setForDataImport(true) are accessible in the script.

Functions

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 136/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Method Parameters Returns Description

getId() String Returns the required parameter's remote Id.

getValue() Mixed Returns the value of the required parameter's parameter. Value may be a primitive type or complex object -
see Value Types below.

isBoolean() Boolean Returns true if the required parameter's type is Boolean.

isDimension() Boolean Returns true if the required parameter's type is Dimension.

isInteger() Boolean Returns true if the required parameter's type is Integer.

isPassword() Boolean Returns true if the required parameter's type is Password.

isPeriodRange() Boolean Returns true if the required parameter's type is PeriodRange.

isText() Boolean Returns true if the required parameter's type is Text.

Value Types

Each required parameter's getValue() function can return a primitive type or a complex object.

Boolean Required Parameters

getValue() returns the value as a Boolean.

Text Required Parameters

getValue() returns the value as a String.

Integer Required Parameters

getValue() returns the value as an Integer.

Password Required Parameters

getValue() returns the value as a String.

Period Range Required Parameters

getValue() returns the value as a complex object. This object is defined as such:

Method Parameters Returns Description

getFromPeriod() String Returns a string defining the resolved Adaptive Planning From Period. E.g. "Month y2016
M1"

getToPeriod() String Returns a string defining the resolved Adaptive Planning To Period. E.g. "Month y2016 M1"

getFromPeriodStartDateTime() String Returns a datetime string representation of the From Period start datetime, expressed in local
time. E.g. "2016-01-01T00:00:00+10:00"

getFromPeriodEndDateTime() String Returns a datetime string representation of the From Period end datetime, expressed in local
time. E.g. "2016-02-01T00:00:00+10:00"

getToPeriodStartDateTime() String Returns a datetime string representation of the To Period start datetime, expressed in local
time. E.g. "2016-06-01T00:00:00+10:00"

getToPeriodEndDateTime() String Returns a datetime string representation of the To Period end datetime, expressed in local
time. E.g. "2016-07-01T00:00:00+10:00"

Dimension Settings

getValue() returns the value as a complex object. This object is defined as such:

Method Parameters Returns Description

getDimensionName() String Returns the name of the Dimension defined in the value.

getValueName() Mixed Returns the name of the Dimension Member defined in the value.

1.1.6.3.6 | ai.log

​Functions

Method Parameters Return Type Description

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 137/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Method Parameters Return Type Description

logError( Boolean Adds an event log with an ERROR log level. 'summary' is truncated at 128 characters. 'detail' is
summary :
summary, truncated at 1000 characters. All non string values are converted to strings. Log entry is added if the
Mixed Log
detail ) logging thresholds have not been breached. Returns true if logging was successful.
summary text

detail : Mixed
Optional -
further detail
about log

logInfo( Boolean Adds an event log with an INFO log level. 'summary' is truncated at 128 characters. 'detail' is truncated
summary :
summary, at 1000 characters. All non string values are converted to strings. Log entry is added if the logging
Mixed Log
detail ) thresholds have not been breached. Returns true if logging was successful.
summary text

detail : Mixed
Optional -
further detail
about log

logVerbose( Boolean Adds an event log with an INFO log level. 'summary' is truncated at 128 characters. 'detail' is truncated
summary :
summary, at 1000 characters. All non string values are converted to strings. Log entry is added if the logging
Mixed Log
detail ) thresholds have not been breached. Returns true if logging was successful.
summary text

detail : Mixed
Optional -
further detail
about log

Example

function testConnection(context) {
// Step 1: Create a https request to send to Earthquake USGS API
var url = 'https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_hour.atom';
var method = 'GET';
var body = ``;
var headers = {};
// Step 2: Send request and receive response
try{

var response = ai.https.request(url, method, body, headers);


//Example logInfo
ai.log.logInfo("Test Connection Successful");
//Test Connection Successful
//Example logVerbose
ai.log.logVerbose("Test Connection Successful", response.getBody());
//Test Connection Successful
//2020-10-23T00:25:21ZU.S. Geological Surveyhttps://earthquake.usgs.gov/https://........
}
catch(e)
{
//Example for logError
ai.log.logError("Test Connection Failed");
}
// Step 3: Interrogate response to see if it was successful. Return true or false depending on the result.
if (response.getHttpCode() == '200') {
var body = response.getBody();
return true;
} else {
return false;
}
}

Log throttling (burst + sustained) ensures any given script cannot:

write more than X logs per second (Burst: default is 5, configurable as AppSetting or per tenant)
write more than X logs per hour (Sustained: default is 1000, configurable as AppSetting or per tenant)

1.1.6.3.7 | ai.util

​Functions

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 138/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Method Parameters Returns Description

apply( obj, Object Copies all the properties of config to obj and r
obj : Object The receiver of the properties
config )

config : Object The source of the properties

String
decodeHtml( encodedHtml: String Returns a string as raw HTML.
encodedHtml )
A string with reserved characters translated in order to be used in HTML literals. Hello 'Hello <b> [there] >words<!'
available in &lt;b&gt; [there] &gt;words&lt;!
2018.3

String
decodeUrl( encodedUrl: String Returns a string with a raw URL.
encodedUrl )
A string with an HTML encoded URL. E.g. https://www.example.com/fings/?id=123&mor
available in https%3a%2f%2ffanyv88.com%3a443%2fhttps%2fwww.example.com%2ffings%2f%3fid%3d123%26more%3dwords%23hash
2018.3

String
decodeBase64( encodedBase64: String Returns a decoded Base64 string.
encodedBase64
A string encoded as Base64. E.g. dGV4dA== Text
)

available in
2018.3

String
encodeHtml( rawHtml: String Returns a string with reserved characters tran
rawHtml )
A string with raw HTML. E.g. 'Hello <b> [there] >words<!' Hello &lt;b&gt; [there] &gt;words&lt;!
available in
2018.3

String
encodeUrl( rawUrl: String Returns a raw URL as an encoded HTML.
rawUrl )
A string with a raw URL. E.g. https://www.example.com/fings/?id=123&more=words#hash https%3a%2f%2ffanyv88.com%3a443%2fhttps%2fwww.example.com%2ffings%
available in
2018.3

String
encodeBase64( rawBase64: String encodes text as Base64.
rawBase64 )
A string with text. E.g. Text dGV4dA==
available in
2018.3

format ( String Used to define a tokenized string and pass an


formatString : String A string with replace tokens. E.g 'There are {0} things'
formatString, tokens. Each token must be unique, and mus
arg1 : String The value to replace token {0}
arg1,
arg2 : String Etc...
arg2....argN)

isDate( value ) Boolean Returns true if the passed value is a JavaScri


value : Mixed The value to test

isUndefined( Boolean Returns true if the passed value is 'undefined


value : Mixed The value to test
value )

isDefined( value Boolean Returns true if the passed value is not 'undefi
value : Mixed The value to test
)

isArray( value ) Boolean Returns true if the passed value is a JavaScri


value : Mixed
The value to test

isString( value ) Boolean Returns true if the passed value is a string.


value : Mixed The value to test

isNumber( value Boolean Returns true if the passed value is a number


value : Mixed The value to test
)

isBoolean( Boolean Returns true if the passed value is true or fals


value : Mixed The value to test
value )

toArray( a, i, j ) Array

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 139/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Method Parameters Returns Description

isPrimitive( Boolean Returns true if the passed value is a String, N


value : Mixed The value to test
value )

Examples

//Example for ai.util.apply


var sourceObj = {department:"Engineering"};
var destObj={};
ai.util.apply(destObj,sourceObj);
ai.log.logInfo("Source Properties applied to Destination object: "+JSON.stringify(destObj));
// Source Properties applied to destination object: {department:Engineering}

//Example for ai.util.decodeHtml


var encodedHtml = "Hello &lt;b&gt; [there] &gt;words&lt;!";
var decodedvalue=ai.util.decodeHtml(encodedHtml);
ai.log.logInfo("Decoded HTML is " +decodedvalue);
// Decoded HTML is Hello [there] >words

//Example for ai.util.encodeHtml


var rawHtml = "Hello <b> [there] >words<!";
var encodedvalue=ai.util.encodeHtml(rawHtml);
ai.log.logInfo("Encoded HTML is " +encodedvalue);
// Encoded HTML is Hello <b> [there] >words<!

//Example for ai.util.decodeBase64


var encodedBase64 = "VGhpcyBpcyBhIHNhbXBsZSB0ZXh0IGZvciBlbmNvZGluZw==";
var decodedbasevalue= ai.util.decodeBase64(encodedBase64);
ai.log.logInfo("Decoded base64 is: "+decodedbasevalue);
//Decoded base64 is:"This is a sample text for encoding"

//Example for ai.util.encodeBase64


var rawBase64 = "This is a sample text for encoding";
var encodedbasevalue= ai.util.encodeBase64(rawBase64, "");
ai.log.logInfo("Encoded base64 is: "+encodedbasevalue);
//Encoded base64 is:VGhpcyBpcyBhIHNhbXBsZSB0ZXh0IGZvciBlbmNvZGluZw==

//Example for ai.util.encodeUrl


var rawUrl = "https://docs.postman-echo.com/";
var encodedUrl=ai.util.encodeUrl(rawUrl);
ai.log.logInfo("Encoded URL is: "+encodedUrl);
//Encoded URL is: https%3a%2f%2ffanyv88.com%3a443%2fhttps%2fdocs.postman-echo.com%2f

//Example for ai.util.decodeUrl


var encodedUrl = "https%3a%2f%2ffanyv88.com%3a443%2fhttps%2fdocs.postman-echo.com%2f";
var decodedUrl=ai.util.decodeUrl(encodedUrl);
ai.log.logInfo("Decoded URL is: "+decodedUrl);
//Decoded URL is: https://docs.postman-echo.com/

//Example for ai.util.format


var formatted=ai.util.format('How ar{0} you{1}',"e","?");
ai.log.logInfo("Formatted String is: "+formatted);
//How are you?

//Example for ai.util.isDate()


var d = new Date();
var verifyIfDate=ai.util.isDate(d);
ai.log.logInfo("Provided value is: "+verifyIfDate);
//Provided value is: true

//Example for ai.util.isUndefined


var sampleValue;
var verifyIfUndefined=ai.util.isUndefined(sampleValue);
if (verifyIfUndefined)
{
ai.log.logInfo("Value is undefined");

}
else
{
ai.log.logInfo("Value is defined");

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 140/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

}
//Value is undefined

//Example for ai.util.isDefined


var sampleValue=6;
var verifyIfDefined=ai.util.isDefined(sampleValue);
ai.log.logInfo("verifyIfDefined: "+verifyIfDefined)
if (verifyIfDefined)
{
ai.log.logInfo("Value is defined");

}
else
{
ai.log.logInfo("Value is undefined");
}
//Value is defined

//Example for ai.util.isArray


var sampleValue=["a","b"];
var verifyIfArray=ai.util.isArray(sampleValue);
if (verifyIfArray)
{
ai.log.logInfo("Is is an Array");

}
else
{
ai.log.logInfo("Not an Array");
}
//It is an array

//Example for ai.util.isString


var sampleValue="123";
var verifyIfString=ai.util.isString(sampleValue);
if (verifyIfString)
{
ai.log.logInfo("Is is a string");

}
else
{
ai.log.logInfo("Not a string");
}

//Example for ai.util.isNumber


var sampleValue = {firstName:"Jon", lastName:"Doe"};
var verifyIfNumber=ai.util.isNumber(sampleValue);
if (verifyIfNumber)
{
ai.log.logInfo("Is is a number");

}
else
{
ai.log.logInfo("Not a number. Provided value is of type: "+typeof(sampleValue));
}
//Not a number. Provided value is of type: object

//Example for ai.util.isBoolean


var sampleValue = true;
var verifyIfBoolean=ai.util.isBoolean(sampleValue);
if (verifyIfBoolean)
{
ai.log.logInfo("Value is Boolean");
}
else
{
ai.log.logInfo("Not a Boolean. Provided value is of type: "+typeof(sampleValue));
}
//Value is Boolean
//Example for ai.util.isPrimitive
var sampleValue = {firstName:"Jon", lastName:"Doe"};
var verifyIfPrimitive=ai.util.isPrimitive(sampleValue);

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 141/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

if (verifyIfPrimitive)
{
ai.log.logInfo("Provided value is a Primitive Data Type");

}
else
{
ai.log.logInfo("Provided value is not primitive: "+typeof(sampleValue));
}
return true;

1.1.6.3.8 | ai.xml

​Functions

Method Parameters Returns Description

ai.xml.sax Creates an XML SAX parser object that can parse an XML
createFromUrl(url, method, body, url: String Valid URL
stream.
headers, callbacks)
method: String Valid HTTP
available as of 2018.3 method

body: String Request body

headers: String HTTP


Header

callbacks: Object A function

ai.xml.sax Creates an XML SAX parser object that can parse an XML
createFromUrlWithAuthorisation(url, url: String Valid URL
stream with authorisation using OAuth.
method, body, headers, callbacks)
method: String Valid HTTP
available as of 2018.3 method

body: String Request body

headers: String HTTP


Header

callbacks: Object A function

createParser() ai.xml.parser Creates a XML parser object that can parse XML strings.

createDocument() ai.xml.document Creates a XML document.

createDocType( xmlStr ) ai.xml.docType Create a doctype object that is added to a XML document
xmlStr : String Valid
to define its doctype.
DOCTYPE XML
string

createElement( name ) ai.xml.element Create a XML element, which is the basic building block of
name : String Name
a XML document, that can be added to an XMLdocument.
of the XML element

createAttribute( name, value ) ai.xml.attribute Creates an attribute object that can be added to a XML
name : String Name
element.
of the attribute
value : String Value
of the attribute

Examples

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 142/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

// Construct the sample XML request below


/*
<request>
<control>
<senderid>adaptiveplanning</senderid>
<password>Bts9DrRkeZ</password>
<controlid>SomeRandomThingToMatchToResponse</controlid>
<dtdversion>3.0</dtdversion>
</control>
</request>
*/

// create XML document


var doc = ai.xml.createDocument();

// create root element


var requestEl = ai.xml.createElement('request');

// create control element


var controlEl = ai.xml.createElement('control');

//create senderid element


var senderIdEl = ai.xml.createElement('senderid');
senderIdEl.setText('adaptiveplanning');
//add <senderid> to <control> element
controlEl.addChildElement(senderIdEl);

//create password element


var controlPasswordEl = ai.xml.createElement('password');
controlPasswordEl.setText('Bts9DrRkeZ');
//add <password> to <control> element
controlEl.addChildElement(controlPasswordEl);

//create controlid element


var controlIdEl = ai.xml.createElement('controlid');
controlIdEl.setText('SomeRandomThingToMatchToResponse');
//add <controlid> to <control> element
controlEl.addChildElement(controlIdEl);

//create dtdversion element


var dtdEl = ai.xml.createElement('dtdversion');
dtdEl.setText('3.0');
//add <dtdversion> to <control> element
controlEl.addChildElement(dtdEl);

//add <control> element to the main <request> element


requestEl.addChildElement(controlEl);

//set <request> as the doc's root element


doc.setRootElement(requestEl);

ai.xml.sax

Method Parameters Returns Description

createFromText() ai.xml.sax Creates an XML SAX parser object that can parse XML text.
XML:string

Encoding: UTF8

Callbacks: An object with


functions

createFromUrl() ai.xml.sax Creates an XML SAX parser object that can parse an XML stream.
url: String Valid URL

method: String Valid HTTP


method

body: String Request body

headers: String HTTP


Header

callbacks: An object with


functions

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 143/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Method Parameters Returns Description

createFromUrlWithAuthorisation() ai.xml.sax Creates an XML SAX parser object that can parse an XML stream with
authorisation using OAuth.

url: String Valid URL

method: String Valid HTTP


method

body: String Request body

headers: String HTTP


Header

callbacks: An object with


functions

Note: The ai.xml.sax examples below use callbacks. A callback is a function that executes after another function finishes executing. One of the benefits of using
callbacks with ai.xml.sax parsers is that you can catch errors and present those errors in the logs of a CCDS run for easier troubleshooting.

ai.xml.sax.createFromText example

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 144/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

var data = {
books: [],
currentTag: ''
};

function createSaxParser(callbacks) {
var xml = '<BookStore><book category="Cooking"><title lang="en">Everyday Italian</title><author>Giada De Laurentiis</author><year>2005</year><price>$30.00</p

try {
return ai.xml.sax.createFromText(xml, "UTF8", callbacks);
}
catch(exception) {
ai.log.logError('Unable to setup sax parser', '' + exception);
throw exception;
}
}

function testConnection(context) {
var parser = null;
var callbacks = {};
var matched = false;

callbacks.onOpenTag = function (tag) {


if(tag.name === 'book') {
matched = true;
parser.stop();
}
};

parser = createSaxParser(callbacks);
parser.readToEnd();

return matched;
}

function importStructure(context) {
var builder = context.getStructureBuilder();

var table = builder.addTable('MyNewTableFromText');


table.setDisplayName('MyNewTableFromText');

addColumn(table, 'book', 1, 'string', 100);


addColumn(table, 'title', 2, 'string', 500);
addColumn(table, 'author', 3, 'string', 100);
addColumn(table, 'year', 4, 'string', 200);
addColumn(table, 'price', 5, 'string', 1000)
}

function importData(context) {
var rowset = context.getRowset();
rowset.setSmartParsingEnabled(true);

var parser = null;


var callbacks = {};

callbacks.onOpenTag = function (tag) {


data.currentTag = tag.name;

if(tag.name === 'book') {


var book = {
category: tag.attributes['category']
};
data.books.push(book);
}
};

callbacks.onText = function (text) {


var current = data.books.length > 0 ? data.books[data.books.length-1] : null;

if(data.currentTag === 'title') {


current.title = text;
}

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 145/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

if(data.currentTag === 'author') {


current.author = text;
}

if(data.currentTag === 'year') {


current.year = text;
}

if(data.currentTag === 'price') {


current.price = text;
}
};

callbacks.onCloseTag = function (tagname) {


if(tagname === 'book') {
var saving = data.books.pop();
save(rowset, saving);
}
};

parser = createSaxParser(callbacks);
parser.readToEnd();
}

function addColumn(table, columnName, order, type, length) {


var newCol = table.addColumn(columnName);
newCol.setDisplayName(columnName);
newCol.setDisplayOrder(order);
newCol.setIncludeByDefault(true);
switch (type) {
case 'string':
newCol.setTextColumnType(length);
newCol.setRemoteColumnType('string');
break;
case 'datetime':
newCol.setDateTimeColumnType();
newCol.setRemoteColumnType('datetime');
break;
case 'float':
newCol.setFloatColumnType();
newCol.setRemoteColumnType('float');
break;
default:
newCol.setTextColumnType(100);
newCol.setRemoteColumnType('string');
}
}

var save = function (rowset, book) {


var cells = [];
cells.push(book.category);
cells.push(book.title);
cells.push(book.author);
cells.push(book.year);
cells.push(book.price);
rowset.addRow(cells);
};

ai.xml.sax.createFromUrl example

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 146/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

var data = {
entires: [],
currentTag: ''
};

function createSaxParser(callbacks) {
var url = 'https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_hour.atom';
var method = 'GET';
var body = ``;
var headers = {};

try {
return ai.xml.sax.createFromUrl(url, method, body, headers, callbacks);
}
catch (exception) {
ai.log.logError('Unable to setup sax parser', '' + exception);
throw exception;
}
}

function testConnection(context) {
var parser = null;
var callbacks = {};
var matched = false;

callbacks.onOpenTag = function (tag) {


if (tag.name === 'entry') {
matched = true;
parser.stop();
}
};

parser = createSaxParser(callbacks);
parser.readToEnd();

return matched;
}

function importStructure(context) {
var builder = context.getStructureBuilder();
var table = builder.addTable('StandardLoaderData');
table.setDisplayName('StandardLoaderData');

addColumn(table, 'id', 0, 'string', 100);


addColumn(table, 'title', 1, 'string', 500);
addColumn(table, 'updated', 2, 'string', 100);
addColumn(table, 'link', 3, 'string', 200);
addColumn(table, 'summary', 4, 'string', 1000);
addColumn(table, 'georss:point', 5, 'string', 200);
addColumn(table, 'georss:elev', 6, 'string', 200);
}

function importData(context) {
var rowset = context.getRowset();
rowset.setSmartParsingEnabled(true);

var parser = null;


var callbacks = {};

callbacks.onOpenTag = function (tag) {


data.currentTag = tag.name;

if (tag.name == 'entry') {
var entry = {};
data.entires.push(entry);
return;
}

if (tag.name == 'link') {
if (tag.attributes) {
var current = data.entires.length > 0 ? data.entires[data.entires.length-1] : null;
if(current !== null) {

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 147/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

current.link = tag.attributes["href"];
}
}
}
};

callbacks.onText = function (text) {


var current = data.entires.length > 0 ? data.entires[data.entires.length-1] : null;
if(current === null) {
return;
}
switch (data.currentTag) {
case "id":
case "title":
case "updated":
case "summary":
case "georss:point":
case "georss:elev":
current[data.currentTag] = text;
break;
}
};

callbacks.onCloseTag = function (tagname) {


if (tagname == 'entry') {
var saving = data.entires.pop();
save(rowset, saving);
}
};

callbacks.onCData = function (data) {


if (data.length === 0) return;

if (data.currentTag == 'summary') {
var current = data.entires.length > 0 ? data.entires[data.entires.length-1] : null;
current.summary = data;
}
};

parser = createSaxParser(callbacks);
parser.readToEnd();
}

function addColumn(table, columnName, order, type, length) {


var newCol = table.addColumn(columnName);
newCol.setDisplayName(columnName);
newCol.setDisplayOrder(order);
newCol.setIncludeByDefault(true);
switch (type) {
case 'string':
newCol.setTextColumnType(length);
newCol.setRemoteColumnType('string');
break;
case 'datetime':
newCol.setDateTimeColumnType();
newCol.setRemoteColumnType('datetime');
break;
case 'float':
newCol.setFloatColumnType();
newCol.setRemoteColumnType('float');
break;
default:
newCol.setTextColumnType(100);
newCol.setRemoteColumnType('string');
}
}

var save = function (rowset, entry) {


var cells = [];
cells.push(entry.id || '');
cells.push(entry.title || '');
cells.push(entry.updated || '');
cells.push(entry.link || '');

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 148/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

cells.push(entry.summary || '');
cells.push(entry['georss:point'] || '');
cells.push(entry['georss:elev'] || '');
rowset.addRow(cells);
};

ai.xml.parser

Method Parameters Returns Description

parse( xmlStr ) ai.xml.document Parses a valid XML document string into a XML document.
xmlStr Valid XML document string

Example for parse

var xmlString = '<request><control><senderid>adaptiveplanning</senderid><password>Bts9DrRkeZ</password><controlid>SomeRandomThingToMatchToResponse</controlid><dtd


var parser = ai.xml.createParser();
var xmlDoc = parser.parse(xmlString);
/* Output:
<request>
<control>
<senderid>adaptiveplanning</senderid>
<password>Bts9DrRkeZ</password>
<controlid>SomeRandomThingToMatchToResponse</controlid>
<dtdversion>3.0</dtdversion>
</control>
<operation>
<authentication>
<login>
<userid>Julia</userid>
<companyid>companyplanningDEV</companyid>
<password>GhY93tYi</password>
</login>
</authentication>
</operation>
</request>
*/

ai.xml.document

Method Parameters Returns Description

clone() ai.xml.document Returns a clone of this document.

getDOCTYPE() ai.xml.docType Gets the document DOCTYPE.

getRootElement() ai.xml.element Gets the root element in the document.

setDOCTYPE( Sets the document DOCTYPE.


docType : ai.xml.docType DOCTYPE to set the
docType )
document to

setRootElement( Sets the document root element.


element : ai.xml.element Element to be the root
element )
element of the document.

toString() Provides a formatted string representation of


the XML document.

ai.xml.docType

Method Parameters Returns Description

toString() String Provides a string representation of this document type declaration.

Example

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 149/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

var doc = ai.xml.createDocument();


var docType = ai.xml.createDocType('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">');
//set doc type
doc.setDOCTYPE(docType);
//get doc type
var getdoctype=doc.getDOCTYPE();
var rootEl = ai.xml.createElement('Books');
//set root element
doc.setRootElement(rootEl);
//sample clone
var cloned_doc=doc.clone();
//get root element
var docRoot=doc.getRootElement();
//convert the xml result to a string for logging
ai.log.logInfo(doc.toString())
/*Output:
Cloned data: <Books />
Doc type is<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Root element is <Books />
*/

ai.xml.element

Method Parameters Returns Description

addChildElement( Adds a child element.


element :
element )
ai.xml.element Element
to add

clone() ai.xml.element Returns a clone of this element.

getAttribute( name ) name : String Name of the ai.xml.attribute Gets the attribute of the given name.
attribute

getAttributeAt( index ) index : Integer Index of ai.xml.attribute Gets the attribute at the given index of the attributes array for this
attribute element.

getAttributes() Array<ai.xml.attribute> Gets the attributes of this element.

getAttributeValue( String Gets the value of the attribute of the given name.
name : String Name of
name )
the attribute

getChildElement( name ai.xml.element Gets the first child element having the specified given name.
name : String Name of
)
the element

getChildElementAt( ai.xml.element Gets a child element at the given index within the child elements.
index : Integer Index of
index )
the element

getChildElements() Array<ai.xml.elements> Gets the array of all child elements for this element.

getChildElements( Array<ai.xml.element> Gets the array of child elements for this element with the given
name : String Name of
name ) name.
the elements

getCommentText() String Gets the comment text.

getName() String Gets the qualified name of this element.

getText() String Gets the text of this element or CDATA.

hasContents() Boolean Indicates whether or not this element has child contents: Text,
CDATA or child elements.

removeAllAttributes() Removes all attributes from this element.

removeAttribute( name Removes the attribute of the given name in the element attributes
name : String Name of
) array, and recompresses the array.
the attribute

removeChildElement( Removes the first child element having the specified name.
name : String Name of
name )
the element

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 150/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Method Parameters Returns Description

removeChildElementAt( Removes a child element at the given index within the child
index ) elements.

index : Integer Index of


the element

removeChildElements() Integer Removes all child elements from this element and returns count of
elements removed.

removeChildElements( Integer Removes all child elements of the given element name from this
name : String Name of
name ) element and returns count of elements removed.
the elements

removeComments() Removes all comments attached directly to this element.

removeText() Removes all text (including CDATA sections) attached directly to


this element.

setAttribute( attribute) Adds an attribute to this element.


attribute :
ai.xml.attribute The
attribute object to add

setAttribute(name, Sets the value of the attribute of the given name, for this element.
name : String Name of
value )
the attribute
value : String Value of
the attribute

setCDATAText( text ) Removes all existing content (except comments) from this
text : String CDATA text
element, including child elements, and then sets CDATA section
text for this element.

setCommentText( text ) Removes all comments attached directly to this element, and then
text : String Comment
adds a new comment with the given text.
text

setName( name ) Sets the name of this element.


name : String Name of
the element

setText( text ) Removes all existing content (except comments) from this
text : String Text value
element, including child elements, and then sets the element text.
of the element

toString() Provides a formatted string representation of this element.

Examples

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 151/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Example for createDocument(), createElement(name), addChildElement(name), clone(), setText(), setCommentText(text), getCommentText()

// create XML document


var doc = ai.xml.createDocument();
// create root element
var requestEl = ai.xml.createElement('request');
// create an element '<control>'
var controlEl = ai.xml.createElement('control');
//create a username or id element '<senderid>'
var senderIdEl = ai.xml.createElement('senderid');
//set text for the senderid element 'adaptive planning'
senderIdEl.setText('adaptiveplanning');
//add <senderid> to <control> element
controlEl.addChildElement(senderIdEl);
//create a <password> element
var passwordEl = ai.xml.createElement('password');
//set text for the password element 'pwd'
passwordEl.setText('pwd');
//add <password> to <control> element
controlEl.addChildElement(passwordEl);
//add <control> element to the root
requestEl.addChildElement(controlEl);

//clone the sender id element


cloneEl=senderIdEl.clone();
//add clone() element to the root element
requestEl.addChildElement(cloneEl);

//setCommentText
requestEl.setCommentText("The above element is cloned");
//get comment text
ai.log.logInfo(getCommentText()); //Log Output: The above element is cloned

//set document's root


doc.setRootElement(requestEl);

/*
Output:
<request>
<control>
<senderid>adaptiveplanning</senderid>
</control>
<senderid>adaptiveplanning</senderid>
<!-- The above element is cloned-->
</request>
*/

Example for getChildElement(), getChildElementAt(), getChildElements and getChildElements( name )

// create XML document


var doc = ai.xml.createDocument();

// create root element


var requestEl = ai.xml.createElement('request');

// create an element '<control>'


var controlEl = ai.xml.createElement('control');

//create a username or id element '<senderid>'


var senderIdEl = ai.xml.createElement('senderid');
//set text for the senderid element 'adaptive planning'
senderIdEl.setText('Sender id 1');
//add <senderid> to <control> element
controlEl.addChildElement(senderIdEl);

//create another sender id element '<senderid>'


var senderIdEl2 = ai.xml.createElement('senderid');
//set text for the senderid element 'adaptive planning'
senderIdEl2.setText('Sender id 2');
//add <senderid> to <control> element
controlEl.addChildElement(senderIdEl2);

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 152/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

//create a <password> element


var passwordEl = ai.xml.createElement('password');
//set text for the password element 'pwd'
passwordEl.setText('pwd');
//add <password> to <control> element
controlEl.addChildElement(passwordEl);

//add <control> element to the root


requestEl.addChildElement(controlEl);

//set document's root


doc.setRootElement(requestEl);

//getChildElement(name)
var firstChildElement="First Child element of <control> is "+requestEl.getChildElement( "senderid" ).toString();
//Output: First Child element of <control> is <senderid>Sender id 1</senderid>

//getChildElementAt(index)
var elementIndex="Element at index 0 is"+requestEl.getChildElementAt( 0 ).toString();
/* Output: Element at index 0 is
<control><senderid>Sender id 1</senderid><senderid>Sender id 2</senderid><password>pwd</password></control> */

//getChildElements()
var specificChildElements="Child elements for the control element:"+controlEl.getChildElements().toString();
//Output: <senderid>Sender id 1</senderid><senderid>Sender id 2</senderid><password>pwd</password>

//getChildElements(name)
var childElementsControl="All child elements of control element with <senderid>: "+controlEl.getChildElements("senderid" ).toString();
//Output:All child elements of control element with <senderid>:<senderid>Sender id 1</senderid>,<senderid>Sender id 2</senderid>

Examples for hasContents(), removeChildElement( name ), removeChildElementAt(index), removeChildElements() and removeChildElements( name )

// create XML document


var doc = ai.xml.createDocument();

// create root element


var requestEl = ai.xml.createElement('request');

// create an element '<control>'


var controlEl = ai.xml.createElement('control');

//create a username or id element '<senderid>'


var senderIdEl = ai.xml.createElement('senderid');
//set text for the senderid element 'adaptive planning'
senderIdEl.setText('Sender id 1');
//getText()
ai.log.logInfo(senderIdEl.getText()); //Sender id 1
//add <senderid> to <control> element
controlEl.addChildElement(senderIdEl);

//create another sender id element '<senderid>'


var senderIdEl2 = ai.xml.createElement('senderid');
//set text for the senderid element 'adaptive planning'
senderIdEl2.setText('Sender id 2');
//add <senderid> to <control> element
controlEl.addChildElement(senderIdEl2);

//create a <password> element


var passwordEl = ai.xml.createElement('password');
//set text for the password element 'pwd'
passwordEl.setText('pwd');
//add <password> to <control> element
controlEl.addChildElement(passwordEl);

//add <control> element to the root


requestEl.addChildElement(controlEl);

//set document's root


doc.setRootElement(requestEl);

//removeChildElement of <control> element - First child element removal


var removeFirstChildElement=controlEl.removeChildElement( "senderid" );
/*Output:
|Inital XML | After removal of the child element
<request> <request>

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 153/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

<control> <control>
<senderid>Sender id 1</senderid> <senderid>Sender id 2</senderid>
<senderid>Sender id 2</senderid> <password>pwd</password>
<password>pwd</password> </control>
<control/> </request>
<request/>
*/

//removeChildElementAt index 0
var removeIndexChildElement=requestEl.removeChildElementAt(0);
/*Output:
|Initial XML | After removing the child element at index 0
<request> <request><request/>
<control>
<senderid>Sender id 1</senderid>
<senderid>Sender id 2</senderid>
<password>pwd</password>
<control/>
<request/>
*/

//removeChildElements()
var removeAllChildElements= controlEl.removeChildElements();
/*Output:
|Initial XML | After removing the child element at index 0
<request> <request><control/><request/>
<control>
<senderid>Sender id 1</senderid>
<senderid>Sender id 2</senderid>
<password>pwd</password>
<control/>
<request/>
*/

//removeChildElements( name ) and hasContents()


if(controlEl.hasContents()){
var removeSpecificElement=controlEl.removeChildElement( "senderid" );
}
/*Output:
|Inital XML | After removal of the child element
<request> <request>
<control> <control>
<senderid>Sender id 1</senderid> <password>pwd</password>
<senderid>Sender id 2</senderid> </control>
<password>pwd</password> </request>
<control/>
<request/>
*/

ai.xml.attribute

Method Parameters Returns Description

clone() ai.xml.attribute Returns a clone of this attribute.

getName() String Gets the name of the attribute.

getValue() String Gets the value of the attribute.

setName( name ) Sets the name of the attribute.


name : String Name of the attribute

setValue( value ) Sets the value of the attribute.


value : String Value of the attribute

toString() Returns a string representation of this attribute.

Example

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 154/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

var tablesElement = ai.xml.createElement('Tables');


var table1Element = ai.xml.createElement('Table');
var row1=ai.xml.createElement('row');
var row2=ai.xml.createElement('row');

//Create a new arribute


var attribute1 = ai.xml.createAttribute('remoteId', '248');
//Add the attribute to <table> element using setAttribute(ai.xml.attribute)
table1Element.setAttribute(attribute1);

//Or set the name and value of the attribute for the <row> elements using setAttribute(name,value)
row1.setAttribute('age','50');
row1.setAttribute('color','white');
row2.setAttribute('age','35');
row2.setAttribute('color','blue');

//Set text for the <table> element


table1Element.setText('Sample table');

//Add <table> as the child of <tables> element


tablesElement.addChildElement(table1Element);
table1Element.addChildElement(row1);
table1Element.addChildElement(row2);

/*Ouput
<Tables>
<Table remoteId="248"> Sample table
<row age="50" />
<row age="35" />
</Table>
</Tables>
*/

//Clone() attributes
var cloned = row1.clone();
cloned.setName('cloned_row');
table1Element.addChildElement(cloned);

/*Ouput
<Tables>
<Table remoteId="248"> Sample table
<row age="50" />
<row age="35" />
<cloned_row age="50">
</Table>
</Tables>
*/

//getAttribute( name )
ai.log.logInfo(table1Element.getAttribute("remoteid")); //Output:remoteId="248"

//getAttributeAt( index )
ai.log.logInfo(row1.getAttributeAt(0).toString()); //Output: age=50

//getAttributes()
ai.log.logInfo(row1.getAttributes().toString()); //Output: age="50",color="white"

//getAttributeValue( name )
ai.log.logInfo(row2.getAttributeValue('color').toString()); //Output: blue

//removeAttribute( name )

var removeRow1Attribute=row1.removeAttribute('age');
/*Output:
|Inital XML | After removing the attribute 'age' for row1
<Tables> <Tables>
<Table remoteId="248">Sample table <Table remoteId="248">Sample table
<row age="50" color="white" /> <row color="white" />
<row age ="35" color="blue" /> <row age ="35" color="blue" />
<Table/> <Table/>
<Tables/> <Tables/>

*/

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 155/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

//removeAllAttributes()
var removeRow1Attributes=row1.removeAllAttributes();
/*Output:
|Inital XML | After removing the attribute 'age' for row1
<Tables> <Tables>
<Table remoteId="248">Sample table <Table remoteId="248">Sample table
<row age="50" color="white" /> <row/>
<row age ="35" color="blue" /> <row age ="35" color="blue" />
<Table/> <Table/>
<Tables/> <Tables/>

*/

View XML Output logs with AWS S3


You must parse your sample XML before logging the results with the ai.log methods. To view raw XML samples, convert the file to a string with toString() function
and view the file in your AWS S3 bucket.

Use the example below to connect to your AWS S3 instance for creating and viewing your XML results. You will need the bucket name, key, access key, secret key
and region values. For more information and example codes, see ai.awss3

Example

function testConnection(context) {
var bucketName = 'xxx';
var key = 'newfile.xml';
var awsAccessKey = 'xxx';
var awsSecretKey = 'xxx';
var region = 'xxx'

var doc = ai.xml.createDocument();


var docType = ai.xml.createDocType('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">');
//set doc type
doc.setDOCTYPE(docType);
//get doc type
var getdocType="Doc type is"+doc.getDOCTYPE().toString();
var rootEl = ai.xml.createElement('Books');
//set root element
doc.setRootElement(rootEl);
//get root element
var getroot="Root element is "+doc.getRootElement().toString();
//Combine the Doc type and the root element sentences to form a string
var result = getdocType+"\n"+getroot;
//send the string to a file on aws
ai.awss3.putFile(bucketName, key, result.toString(), region, awsAccessKey, awsSecretKey);
return true;
}
/*
Output:
Doc type is<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Root element is <Books />
*/

1.1.6.3.9 | Adaptive Planning Functions

Test Connection Function


The Test Connection function is used to determine whether Integration can connect to an external system. Test Connection function must return true or false
indicating the result.

Context Parameter

The Test Connection is provided with 1 parameter, 'context'.

Method Parameters Return Type Description

getDataSource() ai.dataSource Returns the active data source.

getCalendar() ai.calendar Returns the Adaptive Planning Calendar

Example

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 156/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

function testConnection(context) {
// Step 1: Create a https request to send to Earthquake USGS API
var url = 'https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_hour.atom';
var method = 'GET';
var body = ``;
var headers = {};
// Step 2: Send request and receive response
try{

var response = ai.https.request(url, method, body, headers);


ai.log.logInfo("Test Connection Successful");
}
catch(e)
{

ai.log.logInfo("Test Connection Failed");


}
// Step 3: Interrogate response to see if it was successful. Return true or false depending on the result.
if (response.getHttpCode() == '200') {
var body = response.getBody();
return true;
} else {
return false;
}
}

Import Structure Function


The Import Structure function is used to create/update the data source's schema (i.e tables and columns) defined by an external system. The Import Structure
function must return an ai.structure.structureBuilder object.

Context Parameter

The Import Structure function is provided with 1 parameter, 'context'.

Method Parameters Return Type Description

getDataSource() ai.dataSource Returns the active data source.

getProgressManager() ai.progressManager Returns an object that can be used to update the Import Structure task percentage
complete value.

getStructureBuilder() ai.structure.structureBuilder Returns an object that is used to create the data source structure - tables,
columns, parameters etc.

getCalendar() ai.calendar Returns the Adaptive Planning Calendar

Example

function importStructure(context) {
//getDataSource
var dataSource=context.getDataSource();
// getStructureBuilder
var builder = context.getStructureBuilder();
//getCalendar
var calendar= context.getCalendar();
}

ai.progressManager

The ai.progressManager object allows a user to manually set the percentage complete of the task that is running their Import Structure script. Script execution
accounts for 70% of the overall task percentage complete. Therefore, progress values defined via the ai.progressManager are scaled to represent the progress of
the overall task. Example: Setting the ai.progressManager percentage complete to 100% would equate to 70% of the running task, 50% would equate to 35% of the
running task and so on.

Functions

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 157/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Method Parameters Return Type Description

getProgress() Number Returns the percentage complete of the script as defined be the user. If the user has
not previously set the percentage complete, this function would return 0.

setProgress(
value: Number Value to Sets the script percentage complete. This works as follows:
value )
set script percentage
Only numeric values are accepted such as 0, 10, 22.5 100, 110.
complete to
Values greater than 100 are treated as 100.
Values less than the current script progress are ignored. Example: Call
setProgress(50) followed by setProgress(40). This results in the script
percentage complete to 50%.
All other input types for 'value' will have no effect on script progress,

Example

function importStructure(context) {
..........

var progressManager = context.getProgressManager();

// Set script progress % to 10


progressManager.setProgress(10);

// Increase script progress % to 50


progressManager.setProgress(50.0);

// Set progress to 100 by using value greater than 100


progressManager.setProgress(230);
progressManager.getProgress(); // returns 100

// Increase progress by 10% based on current progress


progressManager.setProgress(progressManager.getProgress() + 10);

..........
return builder;
}

ai.structure.structureBuilder
Functions

Method Parameters Returns Description

addTable( tableId ) ai.structure.editableTable Creates and returns a new table for the data source.
tableId : String Unique Id of the table

Example

Provides the ability to define the tables and column structure that will be populated by data.

function importStructure(context) {
........
//getStructureBuilder
var builder = context.getStructureBuilder();
//Example addTable( tableId )-"Sample"
var table = builder.addTable("Sample");
.......
}

ai.structure.editableTable

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 158/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Functions

Method Parameters Returns Description

setDisplayName( displayName : String Value ai.structure.editableTable Sets the display name of the table.
displayName ) to set the table's display
name property to.

addColumn( columnId ) columnId : String ai.structure.editableColumn Creates and returns a new child column of the table.
RemoteId of the column

addRequiredParameter( parameterId : String Id of ai.structure.editableParameter Creates and returns a new required parameter for the table. An
parameterId ) the parameter assignable parameter must be set as the value of a Required
Parameter when this table is used as part of ImportData or
ImportStructure.

ai.structure.editableColumn
Functions

Method Parameters Returns Description

setDisplayName( value ) ai.structure.editableColumn Sets the display name of the


value : String Value to set the columns' displayName
column.
property to

setDisplayOrder( value ) ai.structure.editableColumn Sets the display order of the


value : String Value to set the columns' displayOrder
column.
property to

setIncludeByDefault( value ai.structure.editableColumn Sets the column to be


value : Boolean Value to set the columns IsEnabled
) enabled for data import.
property to

setIncludeInKey( value ) ai.structure.editableColumn Indicates whether the column


value : Boolean Value to set the columns'
is part of the table key.
includeInKey property to

setMandatoryForImports( ai.structure.editableColumn Sets the column to be


value : Boolean Value to indicate if this column is
value ) enabled for data import by
enabled for data imports by mandatory
mandatory.

setNonFilterable( value ) ai.structure.editableColumn Indicates if the column can


value : Boolean Value to set the columns'
be included in a remote
nonFilterable property to
query.

setRemoteColumnType( ai.structure.editableColumn Sets the remote data type of


value : String Value to set the columns'
value ) the column e.g. 'string',
remoteColumnType property to
'integer' etc

setTextColumnType( ai.structure.editableColumn Makes the column a text


length : Integer Max length of the values this column
length ) column.
can hold

setIntegerColumnType() ai.structure.editableColumn Makes the column an integer


column.

setFloatColumnType() ai.structure.editableColumn Makes the column a double


precision column.

setBooleanColumnType() ai.structure.editableColumn Makes the column a boolean


column.

setDateTimeColumnType() ai.structure.editableColumn Makes the column a date


time column.

ai.structure.editableParameter

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 159/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Functions

Method Parameters Returns Description

setDisplayName( Sets the display name of the


value : String Value to set the parameters' displayName property to
value ) parameter.

setForDataImport( Enables parameter for data import.


value : Boolean Value indicating whether the parameter will be
value )
accessible in a ImportData script

setTypePeriodRange() Changes the type of the parameter


to a Period Range

Example

function importStructure(context) {
...............
//addColumn
var valueColumn= table.addColumn('Value');
//setDisplayName
valueColumn.setDisplayName('Value');
// Set the data type for the column - Can be Integer, Float, DateTime or Boolean values
valueColumn.setFloatColumnType();
//setDisplayOrder
valueColumn.setDisplayOrder('0');
//setIncludeByDefault
valueColumn.setIncludeByDefault(true);
//setRemoteColumnType
valueColumn.setRemoteColumnType('float');
// setIncludeInKey
valueColumn.setIncludeInKey(false);
//setMandatoryForImports
valueColumn.setMandatoryForImports(false);
..............
}

Import Data Function


The Import Data function is used to bring rows from an external source and import them into Integration staging tables. The mechanism for importing rows is the
ai.rowset object, which is provided via the 'context' parameter passed into the Import Data function.

Context Parameter

The Import Data function is provided with 1 parameter, 'context'.

Method Parameters Return Type Description

ai.rowset Returns the Rowset object that


getRowset()
rows are added to. The Rowset
Generates API deprecation warning in the logs after support enables defines the Table, Columns and
getRowset(ColumnIds) at your request with the 2021R1 release. The getRowset() MaxRows.
method will continue to function but ignore any parameters.

[Column ai.rowset Returns the Rowset object that


getRowset([columnIds])
Ids] rows are added to, in your
Contact support to enable the "custom cloud services reads staging table by specified column order. The
specified columns" feature flag. Rowset defines the Table,
Columns and MaxRows.

getDataSource() ai.dataSource Returns the active data source.

getCalendar() ai.calendar Returns the Adaptive Planning


Calendar

Example

This example assumes that the rowset contains an Integer column and a Text column in order.

function importData(context) {
...........
var rowset = context.getRowset();
..........
var rowset= context.getRowset([ 'NAME', 'ID']);
}

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 160/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

ai.rowset

The Rowset object is the mechanism by which 'rows' inside a users' script are transported into the Integration stack. A Rowset models the shape (column names
and their data types, maxRows and tableId) of the table that a user is running either their PreviewData or ImportData script against.

Functions

Method Parameters Return Type Description

addRow( cells ) cells : Adds an array of cell values as a row to the Rowset. Cell values
Array<Primitive must be either a valid String (can be null), Number (Finite Integer
Types> Array of or Decimal), Boolean or Date object. Each cell value type must
values for each match its corresponding column data type in the order defined by
column, in order getColumnNames. The number of cell values must match the
number of columns defined.

getTableId() String Returns the table id of the table being previewed.

getMaxRows() Integer Returns the maximum number of rows allowed in this Rowset. 0
means unknown, as used by ImportData.

getColumns() Array<ai.dataSource.table.column> Returns the table columns selected for the preview.

setSmartParsingEnabled( If possible, enabling this setting will parse each string cell value
val :
val ) into the target columns required data type automatically during
Boolean
the addRow() function. This saves a user having to lookup a
Value
target columns' data type and doing manual parsing if the data
indicating
type of the value for the current cell does not match the target
whether
columns' data type. This is especially useful when dealing with
to turn
3rd party API's that return all row values as strings via JSON or
this
XML, and each cell value can be successfully parsed into Integer,
feature
Float, Boolean or DateTime values.
on or off

getSmartParsingEnabled() Boolean Returns true if this setting is enabled. Defaults to false.

function importData(context) {
var dataSource = context.getDataSource();
var settings = dataSource.getSettings();
var rowset = context.getRowset();

//Set and Get SmartParsingEnabled() value


rowset.setSmartParsingEnabled(true);
ai.log.logInfo(getSmartParsingEnabled()); //true

//Set a Start date and End date in the Designer Settings tab with the name "Period Range"
var startDateString = dataSource.getSetting("Period Range").getValue().getFromPeriodStartDateTime().substring(0, 10);
var endDateString = dataSource.getSetting("Period Range").getValue().getToPeriodEndDateTime().substring(0, 10);

//get columns
var columns = rowset.getColumns();

for (var i = 0; i < dataSample.rows.length; i++) {


var colName;
var cells = [];
for (var j = 0; j < columns.length; j++) {
var colValue;
var re = /\\\-/g;
if ((new Date(dataSample.rows[i]["Effective Date"]) >= new Date(startDateString)) && (new Date(dataSample.rows[i]["Effective Date"]) < new Date(endDat
colName = columns[j].getId();
colValue = dataSample.rows[i][colName];
cells.push(colValue.toString().replace(re, '.'));

}
}
if (cells.length == columns.length) {
//add rows
rowset.addRow(cells);
}
}
}

Preview Data Function

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 161/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

The Preview Data function is used to query an external system for rows of data for the specified table and columns. It is limited by the max rows the external system
allows a user to see during a preview in that system.

Context Parameter

The Preview Data Function is provided with 1 parameter, 'context'.

Method Parameters Return Type Description

getDataSource() ai.dataSource Returns the active data source.

getRowset() ai.rowset Returns the Rowset object that rows are added to. The Rowset defines the Table, Columns and
MaxRows.

getCalendar() ai.calendar Returns the Adaptive Planning Calendar

Example

Provides the ability to preview data stored in the cloud source.

function previewData(context) {

var dataSource = context.getDataSource();


var settings = dataSource.getSettings();
var rowset = context.getRowset();

//Set and Get SmartParsingEnabled() value


rowset.setSmartParsingEnabled(true);
ai.log.logInfo(getSmartParsingEnabled()); //true

//Set a Start date and End date in the Designer Settings tab with the name "Period Range"
var startDateString = dataSource.getSetting("Period Range").getValue().getFromPeriodStartDateTime().substring(0, 10);
var endDateString = dataSource.getSetting("Period Range").getValue().getToPeriodEndDateTime().substring(0, 10);

//get columns
var columns = rowset.getColumns();

for (var i = 0; i < dataSample.rows.length; i++) {


var colName;
var cells = [];
for (var j = 0; j < columns.length; j++) {
var colValue;
var re = /\\\-/g;
if ((new Date(dataSample.rows[i]["Effective Date"]) >= new Date(startDateString)) && (new Date(dataSample.rows[i]["Effective Date"]) < new Date(endDat
colName = columns[j].getId();
colValue = dataSample.rows[i][colName];
cells.push(colValue.toString().replace(re, '.'));

}
}
if (cells.length == columns.length) {
//add rows
rowset.addRow(cells);
}
}
}

Combined Test Connection, Import, and Preview Data Example

//Consider a static JSON Data Sample set


dataSample = {
rows: [
{"Value": 10, "Measure": "", "Test": "Palo Alto", "Effective Date": "2018-11-01"},
{"Value": 20, "Measure": " ", "Test": "Palo Alto", "Effective Date": "2018-11-01"},
{"Value": 30, "Measure": " ", "Test": "Palo Alto", "Effective Date": "2018-11-01"},
{"Value": 40, "Measure": " ", "Test": "Palo Alto", "Effective Date": "2018-11-01"},
{"Value": 50, "Measure": "1 ", "Test": "Pleasanton", "Effective Date": "2018-11-01"},
{"Value": 10, "Measure": "2 ", "Test": "Pleasanton", "Effective Date": "2018-12-01"},
{"Value": 20, "Measure": "3 ", "Test": "Pleasanton", "Effective Date": "2018-12-01"},
{"Value": 30, "Measure": "4 ", "Test": "Pleasanton", "Effective Date": "2018-12-01"},
{"Value": 40, "Measure": "5 ", "Test": "Pleasanton", "Effective Date": "2018-12-01"}
]
};

//Table Definition

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 162/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

ExternalMetadataDefinition = {
Tables: [{
name: "dataSample",
displayName: "Sample",
columns: [{
name: "Value",
displayName: "Value",
type: "float",
includeByDefault: true
}, {
name: "Measure",
displayName: "Measure",
includeByDefault: true
}, {
name: "Test",
displayName: "Test",
includeByDefault: true
}, {
name: "Effective Date",
displayName: "Date",
type: "datetime",
includeByDefault: true
}]
}]
};
//Since this example uses a static data source,testConnection() function can return true
function testConnection(context) {
return true;
}

//Import Structure
function importStructure(context) {
var addColumn = function(table, column, order)
{
var recordColumn = table.addColumn(column.name);
recordColumn.setDisplayName(column.displayName);
switch (column.type)
{
case "text":
recordColumn.setTextColumnType(column.length);
break;
case "int":
recordColumn.setIntegerColumnType();
break;
case "float":
recordColumn.setFloatColumnType();
break;
case "boolean":
recordColumn.setBooleanColumnType();
break;
case "datetime":
recordColumn.setDateTimeColumnType();
break;
default:
recordColumn.setTextColumnType(200);
break;
}
recordColumn.setDisplayOrder(order);
recordColumn.setIncludeByDefault(column.includeByDefault || false);
recordColumn.setIncludeInKey(column.includeInKey || false);
recordColumn.setMandatoryForImports(column.mandatoryForImport || false);
recordColumn.setRemoteColumnType(column.remoteColumnType || "String");
};
var builder = context.getStructureBuilder();
for (var i = 0; i < ExternalMetadataDefinition.Tables.length; i++)
{
var externalTable = ExternalMetadataDefinition.Tables[i];
var table = builder.addTable(externalTable.name);
table.setDisplayName(externalTable.displayName);
for (var j = 0; j < externalTable.columns.length; j++)
{
addColumn(table, externalTable.columns[j], j + 1);
}
}
}

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 163/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

function previewData(context) {
//Since the data is static, previewData() function can invoke importData()
importData(context);
}
function importData(context) {
var dataSource = context.getDataSource();
var settings = dataSource.getSettings();
var rowset = context.getRowset();

//Set and Get SmartParsingEnabled() value


rowset.setSmartParsingEnabled(true);
ai.log.logInfo(getSmartParsingEnabled()); //true

//Set a Start date and End date in the Designer Settings tab with the name "Period Range"
var startDateString = dataSource.getSetting("Period Range").getValue().getFromPeriodStartDateTime().substring(0, 10);
var endDateString = dataSource.getSetting("Period Range").getValue().getToPeriodEndDateTime().substring(0, 10);

//get columns
var columns = rowset.getColumns();

for (var i = 0; i < dataSample.rows.length; i++) {


var colName;
var cells = [];
for (var j = 0; j < columns.length; j++) {
var colValue;
var re = /\\\-/g;
if ((new Date(dataSample.rows[i]["Effective Date"]) >= new Date(startDateString)) && (new Date(dataSample.rows[i]["Effective Date"]) < new Date(endDat
colName = columns[j].getId();
colValue = dataSample.rows[i][colName];
cells.push(colValue.toString().replace(re, '.'));

}
}
if (cells.length == columns.length) {
//add rows
rowset.addRow(cells);
}
}
}

1.1.6.3.10 | ai.awss3

Functions

Method Parameters Returns Description

getFile(bucketName, key, Retrieves a file from an AWS S3 bucket.


bucketName: String
region, awsAccessKey,
AwsSecretKey) key: String

region: String

awsAcceskey: String

awsSecretKey: String

putFile(bucketName, key, Puts a file into an AWS S3 bucket.


bucketName: String
region, awsAccessKey,
AwsSecretKey) key: String

region: String

awsAcceskey: String

awsSecretKey: String

Lists the keys (files) in an AWS S3


listKeys(bucketName, bucketName: String
bucket.
region, awsAccessKey,
region: String
awsSecretKey)

awsAcceskey: String
Not recommended for
buckets with over 5000 awsSecretKey: String
keys.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 164/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Method Parameters Returns Description

listObjects(request, Lists the objects in an AWS S3 bucket.


Request object parameters
region, awsAccessKey, Allows the use of parameters in a
awsSecretKey) See Amazon S3 Request Docs for details. request to limit and filter the fetched
keys.
bucketName: String (required).

continuationToken: Indicates the list continues on this bucket with a


token. The nextContinuationToken obtained from the previous
response.

delimiter: A character used to group keys. See Amazon S3 Listing


Keys Hierarchically docs.

encoding: The encoding method to use in the response.

fetchOwner: Set to true to list owners with each key. If not specified
the owner is null.

maxKeys: The maximum number of keys in the response.

prefix: Limits the response to keys that begin with the specified
prefix.

requestPlayer: String

startAfter: The list begins after this key. Use any key in the bucket.
Can't be set at the same time as the continuationToken.

Response object parameters

See Amazon S3 Response Docs for details.

s3Objects: List of objects found.

keyCount: Number of objects found.

isTruncated: Indicates if more keys match the initial request. Can be


specified in the request. AWS defaults to 1000.

nextContinuationToken: Sent when isTruncated is true, indicating


more keys in the bucket can be listed. The list can be continued with
this nextContinuationToken.

httpStatusCode:

name:

prefix:

maxKeys:

delimiter:

commonPrefixes:

encoding:

continuationToken:

startAfter:

Examples

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 165/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

// Invoke this method using 'Test connection' in Actions pane


function testConnection(context) {
exampleGetFile(context);
exampleListKeys(context);
return true;
}

//Example for getFile


function exampleGetFile(context)
{
var bucketName = 'xxx';
var key = 'newfile.xml';
var awsAccessKey = 'xxx';
var awsSecretKey = 'xxx';
var region = 'xxx';
var doc = ai.xml.createDocument();
var myFile=ai.awss3.getFile(bucketName, key, region, awsAccessKey, awsSecretKey);
ai.log.logVerbose("File contents are",JSON.stringify(myFile));
}
//Column,Heading,Names\n,2016-05-31T00:00:00,49570.89,4110_Product_Revenue_Grp_A,Sales - Canada\n,.....

//Example for listkeys


function exampleListKeys(context) {
var bucketName = 'xxx';
var key = 'test.csv';
var awsAccessKey = 'xxx';
var awsSecretKey = 'xxx';
var region = 'xxx';
var myFile=ai.awss3.listKeys(bucketName, region, awsAccessKey, awsSecretKey);
ai.log.logVerbose("Keys are",JSON.stringify(myFile));
return true;
}
//Keys are ["attribute-import-demo.csv","cloadertest.csv"]

//Example for putFile


function exportData(context) {
var bucketName = 'xxx';
var key = 'newfile.xml';
var awsAccessKey = 'xxx';
var awsSecretKey = 'xxx';
var region = 'xxx';
var doc = ai.xml.createDocument();
var requestEl = ai.xml.createElement('request');
doc.setRootElement(requestEl);
ai.awss3.putFile(bucketName, key, doc.toString(), region, awsAccessKey, awsSecretKey);
//This will create the "newfile.xml" with a single line "<request />"
}

Example with listObjects

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 166/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

This example shows how to request objects and page through the results.

//Navigate to Designer Settings tab and add 2 "text" parameters from the Settings pane.
//Enter awsAccessKey and awsSecretKey in the Name fileds and provide your keys in the Value field

function processFiles(context) {
// Retrieve access and secret keys from settings
const awsAccessKey = context.getDataSource().getSetting('awsAccessKey').getValue();
const awsSecretKey = context.getDataSource().getSetting('awsSecretKey').getValue();
const region = 'us-west-1'
// Create the request for objects, at a minimum a bucket name is required
const request = {
BucketName: 'xxx',
Prefix: 'mydata/', // Return keys from this directory
};

// Push all the keys into an array


const keyNames = [];

let processing = true;


while (processing)
{
var response = ai.awss3.listObjects(request, region, awsAccessKey, awsSecretKey);
for (const entry of response.s3Objects)
{
// Here we have a single key that can be processed as desired
keyNames.push(entry.key);
}

if (response.isTruncated)
{
// If the response did not include all remaining results, use the
// nextContinuationToken from the response in the next request
request.ContinuationToken = response.nextContinuationToken;
}
else
{
// If the response did include all remaining results, exit the loop
ai.log.logInfo('Response indicated no further keys available');
processing = false;
}
}
ai.log.logInfo("List of Objects:"+JSON.stringify(keyNames));
//List of Objects:["attribute-import-demo (7).csv","cloadertest.csv"]
}

Sample parameter request

The parameter BucketName, is the only required value. Prefix indicates the directory.

{
BucketName: 'ag-ccds-test',
Prefix: 'samplenumber/',
StartAfter: 'samplenumber/001_samplefile',
MaxKeys: 3
}

Sample listObjects

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 167/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

This sample listOjbects response contains 8 objects.

{
"isTruncated": true,
"s3Objects": [
{
"eTag": "\"4c7507b8cf17a6650bcff6787ccd0915\"",
"bucketName": "ag-ccds-test",
"key": "archiveListing/archiveList_1575352592693.txt",
"lastModified": "2019-12-03T15:56:34+10:00",
"owner": null,
"size": 1323,
"storageClass": {
"value": "STANDARD"
}
},
{
"eTag": "\"b2addf641c43f17df4492524c834984c\"",
"bucketName": "ag-ccds-test",
"key": "archiveListing/archiveList_1575353843184.txt",
"lastModified": "2019-12-03T16:17:24+10:00",
"owner": null,
"size": 1323,
"storageClass": {
"value": "STANDARD"
}
},
{
"eTag": "\"b2addf641c43f17df4492524c834984c\"",
"bucketName": "ag-ccds-test",
"key": "archiveListing/archiveList_1575353844190.txt",
"lastModified": "2019-12-03T16:17:25+10:00",
"owner": null,
"size": 1323,
"storageClass": {
"value": "STANDARD"
}
},
{
"eTag": "\"b2addf641c43f17df4492524c834984c\"",
"bucketName": "ag-ccds-test",
"key": "archiveListing/archiveList_1575353845193.txt",
"lastModified": "2019-12-03T16:17:26+10:00",
"owner": null,
"size": 1323,
"storageClass": {
"value": "STANDARD"
}
},
{
"eTag": "\"b2addf641c43f17df4492524c834984c\"",
"bucketName": "ag-ccds-test",
"key": "archiveListing/archiveList_1575353846195.txt",
"lastModified": "2019-12-03T16:17:27+10:00",
"owner": null,
"size": 1323,
"storageClass": {
"value": "STANDARD"
}
},
{
"eTag": "\"b2addf641c43f17df4492524c834984c\"",
"bucketName": "ag-ccds-test",
"key": "archiveListing/archiveList_1575353847194.txt",
"lastModified": "2019-12-03T16:17:28+10:00",
"owner": null,
"size": 1323,
"storageClass": {
"value": "STANDARD"
}
},
{
"eTag": "\"b2addf641c43f17df4492524c834984c\"",
"bucketName": "ag-ccds-test",
"key": "archiveListing/archiveList_1575353848223.txt",

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 168/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

"lastModified": "2019-12-03T16:17:29+10:00",
"owner": null,
"size": 1323,
"storageClass": {
"value": "STANDARD"
}
},
{
"eTag": "\"b2addf641c43f17df4492524c834984c\"",
"bucketName": "ag-ccds-test",
"key": "archiveListing/archiveList_1575353849192.txt",
"lastModified": "2019-12-03T16:17:30+10:00",
"owner": null,
"size": 1323,
"storageClass": {
"value": "STANDARD"
}
}
],
"name": "ag-ccds-test",
"prefix": "archiveListing/",
"maxKeys": 8,
"commonPrefixes": [],
"delimiter": null,
"encoding": null,
"keyCount": 8,
"continuationToken": null,
"nextContinuationToken": "1Vut/ORdOSPdn8ZQdd8Z5nhNvlEfPkw0hkekFIDTVzk8Hn8jlttn/yIjkl67yK3RAUkPIoUHwDuiybia7Rx7YjVaRefLocnF4",
"startAfter": null,
"responseMetadata": {
"requestId": "5ACCAA141D2F7D2B",
"metadata": {
"x-amz-id-2": "zlslMcRM+qj6SCKELuE2crlEzhc0eEFkpo5OC3Pzn9tMvtOYnaEkLoRQNj1m1SThPzI1lQ233Zo="
}
},
"contentLength": -1,
"httpStatusCode": 200
}

1.1.6.3.11 | ai.oauth

Functions

getPlanningTokenFromWorkday() None Return Type: Object { authorization : string } Obtain a token for authenticating against planning.

Availability: Only available for customers who complete:

Pairing their Workday tenant with Adaptive Planning by working with Provisioning.
Workday SAML SSO into Adaptive Planning.
The Public API setup task in Workday within the Public API tab of the Adaptive Planning tab in Workday.

Note: If you do not currently have a project open with a resource certified in the Workday platform, please contact your Customer Success Manager to get the next
steps and scope of work for the configuration. If you have a project in place, you can open a ticket with Provisioning to enable the connection. You must have a
project in place with an Implementer certified on the Workday platform for us to enable the connection.

Some links in this article go to the Workday community. If you don't have a community account, request one.

Example

function testConnection(context) {
var token = ai.oauth.getPlanningTokenFromWorkday();

var body = '<?xml version="1.0" encoding="UTF-8"?><call method="customReportValues" callerName="AdaptiveInsights.Discovery">'


body += '<credentials token="' + token.authorization + '" instanceCode="MYINSTANCE" /><report>...</report> </call>';

var url = 'http://api.adaptiveinsights.com/api/v22';


var method = 'POST';
var headers = { 'Content-Type': 'application/xml' };

var response = null;


try {
response = ai.https.request(url, method, body, headers);
}
catch (exception) {

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 169/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

ai.log.logInfo('api call failed', '' + exception);


return false;
}
ai.log.logInfo(response.getBody());
return true;
}

1.1.6.3.12 | ai.sftp

The article describes the ai.sftp namespace and the associated methods to create a client, perform basic client operations, upload and download files with the file
Reader and Writer objects.

The ai.sftp namespace allows a user to upload and download files to an SFTP server. It also allows uploading and downloading encrypted files letting you encrypt
and decrypt them with PGP.

Create a Client
ai.sftp.createClient

You can create an SFTP instance with the createClient() method and initiate all operations with the SFTP server. This function takes the name of the SFTP
connection string configured for the script as a parameter and returns a client instance object.

Method Parameters Return type Description

createClient(sftpConnection) Object Creates an SFTP Client


sftpConnection : String

Name of your SFTP Connection

Usage

const client = ai.sftp.createClient('mySftpConnectionSetting');

Basic Client Operations


You can perform the following operations on the client instance object returned from the ai.createClient method.

Method Parameters Return Type Description

isConnected() Boolean Returns True if the SFTP client is connected; False otherwise.

disconnect() Logs out and closes the client session with the server. Any further
operations called on the client will result in an exception being thrown.

delete(fileName) fileName : String Name of Deletes the specified file


the file to be deleted

rename (renameFrom, Renames the specified file


renameFrom : String
renameTo)

Original Name of the file

renameTo : String

New name of the file

createdirectory(directoryName) Creates a directory on the server.


Name: String

Relative path of the new


directory

changeDirectory(newLocation) String Changes the current working directory on the server. This operation will
newLocation : String
return the current working directory
Relative path of the new
location on the server

getCurrentDirectory() String Get the current working directory

getFileSizeBytes(fileName) fileName : String File name Number Returns the size of the specified file in bytes
for the file size fetched

listCurrentDirectory() Collection Returns a list of all files and directories in the current working directory.

Download a File
Use the following client methods to download files from the server.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 170/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

downloadFile(fileName) Object Downloads the file and returns a reader to read through
fileName: String
the file line by line.
Name of the file to download

downloadEncryptedFile(fileName, Object Downloads the file, decrypts it using the specified


fileName : String
encryptionSettingName) encryption setting and returns a reader to read through the
Relative path of the file to download file line by line.

encryptionSettingName : String

Name of your encryption setting


from the Credentials area in
Design Integrations.

downloadAndVerifyEncryptedFile(fileName, Object Downloads the file, verifies and decrypts it using the
fileName : String
encryptionSettingName) specified encryption setting and returns a reader which to
Relative path of the file to download read through the file line by line

encryptionSettingName : String

Name of your encryption setting


from the Credentials area in
Design Integrations.

File Reader Methods

You can invoke these methods on the reader object returned from the downloadFiles() method.

readLine() String Reads a file line by line

cleanUp()
Free the system resources consumed by the file Reader object.

FileReader can't be used after running the cleanup() method.

Resources are automatically cleaned up at the end of the script.

Example

//Pass the relative filepath and the name of your encryption setting
const reader = client.downloadEncryptedFile('./archive/datasample.csv.asc', 'mypgp');
let line = reader.readLine()
while(line !== null){
//Process the line
line = reader.readLine()
}

Upload a File
To upload a file, a writer must be created to which lines can be written. The writer object is obtained from the ai.sftp namespace. Once the file has been created it
can be uploaded to the client using one of the following methods.

uploadFile(writer, uploadedFileName) Uploads the specified file to the server.


Writer : writer

Obtained from
ai.sftp.createFileWriter()
method

uploadedFileName:
String

Name of the file you are


uploading

uploadEncryptedFile (writer, Encrypts the file using the specified encryption setting (found in the Credentials
Writer : writer
uploadedFileName, area in Design Integrations) and uploads it to the server. The file name and
encryptionSettingName ) Obtained from location is specified by the uploadedFileName argument.

ai.sftp.createFileWriter()
method

uploadedFileName:
String

Name of the file you are


uploading

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 171/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

encryptionSettingName
: String

Name of your
encryption setting

uploadEncryptedAndSignedFile(writer, Encrypts and signs the file using the specified encryption setting (found in the
Writer : writer
uploadedFileName, Credentials area in Design Integrations) and uploads it to the server. The file
encryptionSettingName) Obtained from name and location is specified by the uploadedFileName argument.
ai.sftp.createFileWriter()
method

uploadedFileName:
String

Name of the file you are


uploading

encryptionSettingName
: String

Name of your
encryption setting

File Writer Methods

You can invoke the following methods on the Reader object that has been returned from downloading files.

writeLine(val) Writes content to a file line by line.


val : String

Content to write to a file

cleanUp()
Free the system resources consumed by the File Writer object.

Writer can't be used after running the cleanup() method.

Resources are automatically cleaned up at the end of the script.

Example

const client = ai.sftp.createClient('mySftpConnectionSetting');



//Invoke the File Writer method
const writer = ai.sftp.createFileWriter();

//Write content to the writer variable
writer.writeLine('Here is a line to upload');
client.uploadFile(writer, 'myFileToShare.txt');
writer.cleanUp();

Notes on AWS Transfer for SFTP


While connecting to an AWS S3 server via SFTP, there are some differences in behavior with the AWS S3 file organization compared to Open SSH servers.

CreateDirectory
AWS S3 allows you to specify the path of new directories. For example, client.createDirectory('./parent/child'); will create the parent directory.
However, If the parent directory already exists and you attempt to create a child directory, an exception will be thrown.

1.1.6.4 | CCDS Examples

1.1.6.4.1 | Google Sheets

Prerequisites
Connecting to Google Drive requires a few preliminary steps:

1. Navigate to your Google Drive.


2. Select New and choose File Upload to upload a csv file to your Google drive. Example: CCDS Demo.csv
3. Right click on the uploaded file and select Share.
4. Set your share settings to "Anyone with the link" in the Share with People and Groups pane.
5. Get the Google Doc ID from the shared link. Example: In the Sample URL https://drive.google.com/file/d/1QZYX2345ri6789/view?usp=sharing,
file id is 1QZYX2345ri6789
6. Use the file id your Script. Example: var url = 'https://drive.google.com/uc?export=downloade&id=ENTER_FILE_ID_HERE';

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 172/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Google Sheets Sample Script

var tableName = 'Csv Example';


//Make sure you adjust the settings to allow people to download this file from your google drive
var url = 'https://drive.google.com/uc?export=downloade&id=ENTER_FILE_ID_HERE';

/* Example cvs file:


----------------------------------------------
Heading A,Heading B,Heading C
A1,B1,C1
A2,B2,C2
A3,B3,C3
----------------------------------------------
*/

//Create an HTTPS request to send to the Google Drive API using the callApi function.

function callApi() {
var method = 'GET';
var body = '';
var headers = null;
//Construct and send an HTTPS request to get all of the tables.
return ai.https.request(url, method, body, headers);
}

function testConnection(context)
{
var response = callApi();
var responseCode = response.getHttpCode();
// Interrogate the response to check if it succeeded and that HTTP communication was successful.
if (responseCode == 200)
{
ai.log.logInfo('Test Connection Succeeded');
return true;
}
else
{
ai.log.logError('Test Connection Failed','Response code was ' + responseCode);
return false;
}
}

function importStructure(context)
{
//Use the callAPI function to construct and send an HTTPS request to get all the tables
var response = callApi();
//Get the structure builder object used to create tables, columns and other needed structures.
var builder = context.getStructureBuilder();
var table = createTable(builder, tableName);
var lines = extractLines(response);
var headingLine = lines[0];
var headings = extractCells(headingLine);
//parse the HTTPS response to construct a table
for(var i = 0; i < headings.length; i++) {
var heading = headings[i];
createColumn(table, heading);
}
}

function importData(context)
{
var response = callApi();
//Use the passed-in contextual information to create a rowset object.
var rowset = context.getRowset();
var lines = extractLines(response);
//Skip the heading row and process each row to extract cell values for each column.
for(var i = 1; i < lines.length; i++) {
var line = lines[i];
if(line === '') continue;
var cells = extractCells(line);

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 173/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

//Add each row array to the rowset.


rowset.addRow(cells);
}
}

function createColumn(table, heading) {


var columnId = escape(heading);
var column = table.addColumn(columnId);
column.setDisplayName(heading);
column.setTextColumnType(1000);
}

function extractLines(response) {
var content = response.getBody();
return content.split('\n');
}

function extractCells(line) {
return line.split(',');
}

function createTable(builder, name) {


var tableId = escape(name);
var table = builder.addTable(tableId);
table.setDisplayName(name);
return table;
}

//In this example, reuse the import data function with context for previewing the data.
//A separate function might be needed to limit the amount of data preview gets back.
function previewData(context)
{
importData(context);
}

1.1.6.4.2 | CCDS Sample Script Template

Copy the sample code into the Scripts section of your CCDS. You don't have to configure parameters or external resources to run this script. The script contains
the following code modules:

Test Connection
Import Structure
Import Data
Preview Data

Prerequisites
Required Permissions: Integration Developer within Administration > Permission Set
See Concept: CCDS, Create Scripts for CCDS
Understand the various Adaptive Planning Functions
CCDS Developers must be experienced JavaScript programmers

Example

var sampleData = {
validConnection: true,//Change this for an invalid connection
headings: ['Heading A', 'Heading B', 'Heading C'],
data: [
['A1','B1','C1'],
['A2','B2','C2'],
['A3','B3','C3']
],
tableName: 'Example'
};

function testConnection(context)
{
return sampleData.validConnection;
}

function importStructure(context)
{
var builder = context.getStructureBuilder();

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 174/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

var table = createTable(builder, sampleData.tableName);


for(var i = 0; i < sampleData.headings.length; i++) {
var heading = sampleData.headings[i];
createColumn(table, heading);
}
}

function importData(context)
{

//Use the passed-in contextual information to create a rowset object.


var rowset = context.getRowset();
//Process each row to extract cell values for each column.
for(var i = 0; i < sampleData.data.length; i++) {
var data = sampleData.data[i];
//Add each row array to the rowset.
rowset.addRow(data);
}
}

function createColumn(table, heading) {


var columnId = escape(heading);
var column = table.addColumn(columnId);
column.setDisplayName(heading);
column.setTextColumnType(1000);
}

function createTable(builder, name) {


var tableId = escape(name);
var table = builder.addTable(tableId);
table.setDisplayName(name);
return table;
}

1.1.7 | Integration for Discovery Enterprise

Integration acts as a secure bridge to import data from a wide variety of spreadsheets and databases into Adaptive Planning.You can filter, clean, and map
information being imported so you can eliminate potential errors that can happen during a manual data import. In addition, you can schedule tasks and operations
so data can be imported at specific times automatically. Adaptive Integration for Discovery Enterprise will allow customers to bring data from different data sources
into Discovery Enterprise.

There are two types of integration users:

Data analysts run tasks and work with the imported information in the Adaptive Planning. Data analysts have access to the Tasks Overview and Tasks Detail
screens and can view and run tasks shared with them and view the task history. Data analysts must have the Integration Operator role.

IT users are high-level users (frequently administrators) who can set up and edit data sources, loaders, and tasks. IT users must be familiar with the
Adaptive Planning and have a substantial understanding of databases and connectivity. IT users must have the Data Designer role and one of Discovery
Classic standard or admin roles.

The IT users do the initial set up of integration and then work in a maintenance mode, responding to requests for new tasks or different data sources from the data
analysts. IT users also grant permissions to other users to perform tasks.

Typical Workflow
The general process for importing data with integration is as follows:

1. The IT user sets up a data source that extracts information from a spreadsheet, a JDBC-compliant database, NetSuite, a table group (featuring SQL-joined
tables), or an ETL scripted data source. If extracting from a JDBC-compliant database, the IT user must also use the Adaptive Data Agent Service Manager
to set up a data agent for secure communication between the database and Adaptive Integration. SQL joins and expressions can be added to filter data.

2. The IT user previews the extracted information, which is held in Adaptive Integration's staging area.Columns or tables can be specified for use or to be
ignored. SQL expressions can be added to filter data. The IT user can also change the data type of individual columns.

3. The IT user sets up a loader, which takes the data from the staging area and loads it into Discovery. The IT user selects a table source and assigns a
date/time type to it. Columns are dragged and dropped into metrics and dimensions. The columns can be configured with the metrics and dimensions
already configured in Discovery, or the IT user can set up new metrics or dimensions as part of the loader creation process. Duplicate data rows can be
eliminated and additional calculations or SQL operations specified. When the loader is ready, the IT user can test it by running the loader manually to load
the information into Discovery.

4. The IT user creates a task, a predefined set of operations that combines loaders and sub-tasks, to extract, process, and load data that has been filtered and
scrubbed appropriately into Discovery. Tasks can be scheduled to run automatically at a specific minute, hour, day, or day of month. The IT user can
optionally grant edit and launch permissions to data analysts and other users and roles for data sources, loaders, and tasks.

5. The data analyst (or other permitted user) can run tasks manually on demand or use the scheduler to run tasks automatically. When you log on to Adaptive
Integration, the default screen is the Task Overview screen. The Tasks Overview screen displays the active tasks.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 175/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Click a task in the Tasks Overview to display detailed information about the task in the Tasks Detail screen. The Task Detail screen provides detailed information
and options for the task you selected, as follows:

You can view information about pending and recent runs of a specific task. When you click a specific run, the status of the three phases of the run (the data
import, the transformation, and the data load into Adaptive Planning) appear on the screen. You can use this information for troubleshooting errors.

To run a task manually from the Task Detail screen, enter the file to extract information from in the field, then click Run. Adaptive Integration runs the task
and displays the status of the three phases.

Click Execution History at the bottom of the screen to display the task's execution history, which includes the run time/date, the task name, the run duration
in seconds, and the status of the run. You can drill down by Clicking any entry in the execution history to display the log history for that instance.

Creating a Spreadsheet Data Source


Set up an Excel spreadsheet data source:

1. Access the Data Designer by going to Admin > Data Designer.

2. In the Data Source folder in the Component Library on the right side of the screen, click Create New Data Source. The Create New dialog box appears.

3. Select Spreadsheet as your data source type and enter the name for the data source

4. Click Create.

5. Enter the data source information:

Skip failed uploads: Check this box to skip failed uploads from the spreadsheet. When this box is checked and you are importing multiple tables, if one of
the tables fails on upload, the process continues to the next table instead of ending with an error because of the first failed table.

Log level: Select a log level from the drop-down list to specify the detail for the logging for this data source. Your options are:

Error: Only logs errors.

Info: Logs all basic information, such as when the data source was updated.

Verbose: Provides very detailed information about all phases and actions. (This level is used primarily for debugging or auditing, as it may produce more log
information than is practical for typical use.)

When you have entered the basic configuration of the spreadsheet data source, you need to import the spreadsheet.

Import the spreadsheet:

1. Click Import Spreadsheet on the Actions menu.

2. Enter the name of the spreadsheet to open. You can click Browse to search for a file. When you select the spreadsheet, Adaptive Integration opens the
spreadsheet and imports the information. Adaptive Integration also imports the spreadsheet structure (field names, order of fields). It assigns a default data
type to each column but does not interpret any formatting rules associated with each spreadsheet column. The data structure appears in the Data
Components menu on the left side of the screen, which is populated with the worksheets and contents of the imported spreadsheet.

3. Click Close to close the Import Spreadsheet dialog box.

4. Click Save on the Actions menu.

Creating a Metric Loader


You can create two types of loaders: metric loaders and scripted loaders.

Create a new metric loader:

1. Access the Data Designer by going to Admin > Data Designer.

2. In the Loaders folder in the Component Library on the right side of the screen, click Create New Loader. The Create New dialog box appears.

3. Select Discovery Metric Loader as the loader type and enter a name for the loader.

4. Click Create. The center area of the screen displays your new loader's settings and other information

5. Enter the metric loader's information.

1. In the Settings area, select the source table to point to the staging table which contains data to be brought into Discovery.

2. If the staging table contains date/period information as a column, select the appropriate option for Period source and the Period column fields.

3. Select the appropriate granularity for the Period type.

4. Within the Data Component palette, select the staging table you have chosen. Identify the columns which you would to bring into Discovery as metrics and
dimensions.

5. Drag and drop staging columns into the Metrics or Dimensions area. While defining the metrics and dimensions, use the default values to get started
quickly.

6. Save the definition of the loader.

7. Optionally, if you would like to bring a subset of records from within your staging table, you can choose to enter a SQL filter. Click in the text box under Filter
Settings. The Edit SQL Filter dialog box appears. Here, enter a SQL Filter expression. The help text in the editor provides examples and also a link to a
detailed help document.

8. Click Save on the Actions menu.

Creating a Task

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 176/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Integration tasks let you build and refine the importing and filtering processes, then let users run the specific tasks they need to perform their jobs. You can run
tasks manually on demand or schedule tasks to run automatically at a specific time or day. Tasks can be shared with other users (this is primarily how data analysts
get access to tasks). Tasks can contain one or more loaders. They can also contain other tasks.

Most day-to-day use of Adaptive Integration involves tasks.

Create a new task:

1. Access the Data Designer by going to Admin > Data Designer.

2. In the Tasks folder in the Component Library on the right side of the screen, click Create New Task. The Create New dialog box appears.

3. Select Integration Task and enter a name for the task.

4. Click Create. The center area of the screen displays your new task's settings and other information.

5. Select a log level from the drop-down list to specify the detail for the logging for this data source. See Creating a Task.

6. Click Save in the Actions menu.

When you have saved the basic configuration of the task, you need to add loader and task information. If you want to run the task at regular intervals, you will also
need to add a schedule.

The final step in creating a task is to add loaders and tasks so that the task does something. Adding a loader lets you extract data, perform data manipulation, and
load the information into Discovery. Adding other tasks lets you optionally create smaller, subtasks as building blocks that you then can combine into larger custom
tasks.

Add loaders and tasks to the task:

1. Drag a loader or task from the Data Components menu to the Tasks and Loaders table. The loader or task appears in the table.

2. Continue dragging loaders and tasks to the Tasks and Loaders table. Loaders and tasks are performed in the order they appear in the table.

3. Click Save on the Actions menu.

Add schedule information for the task:

1. Drag a scheduling option (hourly, daily, weekly, or monthly) from the Data Components menu to the Schedule Settings table. The Edit Schedule dialog
box appears.

2. Enter schedule information, including how often the task has to run and time at which it has to run. Be sure to set the task as active if you want it to go into
effect. Do not mark it as active if you only want to store the schedule data, not have the schedule implemented. See Using Tasks and Schedules for more on
each field.

3. Click Save.

1.2 | Import and Export


1.2.1 | Concept: Import Data

Whether you are just beginning to use Adaptive Planning or you need to update an existing model, getting your data from another source system into your model
requires a data import. You can choose to:

Import Automatically with Integration

Import using a Planning Data Loader, that you can schedule with an Integration Task if your organization has Integration.

Import Manually

Import spreadsheet data


Import NetSuite Actuals if you have NetSuite Basic
Import Transactions if you have Transactions enabled
Import from Custom Scripts

You may be asked to map account names, level names, and dimension names in the spreadsheet to their corresponding values in Adaptive Planning. You can view
and modify any existing manual import mappings you already made by clicking Import Account Mappings, Import Level Mappings, or Import Dimension Value
Mappings under Integration > Manual Import.

On upload, your data automatically maps to a best-fit for the data contents. You can also manually adjust:

Import Account Mappings


Import Level Mappings
Import Dimension Value Mappings

What Happens When You Import Manually


When you import data manually, Adaptive Planning examines each row of the import file to check if matching data already exists in the system. Adaptive Planning
looks at what dimensions are used, and if data exists in the same level, account, time period, and version. If a row key exists, we match to the row key column or
columns, as well.

If data exists in the system at the same location, the import replaces it. This replacement occurs row by row. The import does not replace everything at once.

For example, you perform two imports. Your first import file loads data that your second import file does not contain. That existing data will remain after the second
import.

If you want to delete all of the data in a particular column:

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 177/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Include the column and leave its cells blank in your spreadsheet import.

1.2.2 | Spreadsheet Import

You can import data into standard, cube, and modeled sheets by filling in a downloaded spreadsheet template and uploading it to your instance. If your company
has the transactions module, Adaptive Planning also lets you import transactions details from a spreadsheet. As part of the import process, you map accounts,
levels, and dimensions from your source to what already exists in Adaptive Planning.

The Import Data interface lets you select import type, source, and destination. Your choices generate an import template spreadsheet you then download and fill in
with your source system's data. After you fill in the spreadsheet template, you import it.

To find out how to import Accounts, Dimensions, and Levels (organization structure) your data loads into, see structure import.

To find out how to erase data from actuals versions in GL, custom, and cube accounts on sheets, see Erase Data.

Note: Other Ways to Import: If your company purchased the NetSuite Integration option, you can also import actuals data directly from your NetSuite account.

Adaptive Planning Integration provides a complete data integration platform that lets you schedule automatic data imports and metadata imports from a variety of
external systems. See Concept: Integration for more.

Prerequisites
Required permissions:
Import Capabilities and edit access to the specific intersections you want to import data to.
Or Import to All Locations, which enables import to all areas, regardless of location or level access.
For transactions import, you must have the transactions module and define your transaction fields.
Know the sheet name and sheet type the data will import to.
Have an export from your ERP or other source system in a CSV, XLSX, or other file you can copy data from.
To make the process efficient, verify that the accounts, levels, and dimensions your data values need to load to already exist in Adaptive Planning.

Navigation

From the nav menu click Integration > Import Data.

Basic Steps
1. Select the import type and where you are importing from.
2. Select where to import to.
3. For spreadsheet imports, download and fill in a template for one of the following:
Modeled Data
Cube Data
Standard Data
Transactions Data
4. Import the template and select your account, level, and dimension value mappings if applicable.

Select the Import Type


Select actuals versions, plan versions or transactions as the import type.

Actuals versions contain your actual financial results for a given period of time, like your income or expenses from May 2020. Actuals are records of events that
happened.

Note: You can view the history of actuals imports by navigating to Integration > Import History. You can view each actuals import request under File Name and its
status or error messages under Action.

Plan versions, also referred to as planning versions, plans, and planning, may be budgets, what-if scenarios, or almost anything else you can imagine.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 178/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Transactions are typically data related to time-stamped orders, invoices, sales process activities, or payments. Transaction data can only be imported if you have
the transactions module.

Select Where to Import From


Select Spreadsheet. Continue by selecting the sheet under Import into sheet and downloading the template for it as described in the sections that follow.

If you do not see a section called Import From, your organization does not use NetSuite Basic or Custom Scripts. Only the Import Type and Import Into sections
would be visible.

If your company has NetSuite Integration - Basic, you can select the NetSuite actuals option.

If you have a custom script, you will see a Custom Script option. See Import Data from Custom Scripts for more.

Select Where to Import To


Choose the destination for your import. After you select the destination, click Download Template and fill out its columns.

The download template varies based on the sheet type.

Enter Template Columns and Date Formats for Spreadsheet Imports


The columns you need to fill out in a spreadsheet template vary based on the sheet type you are importing to. Read the instructions on the first sheet of the
downloaded template for more details about your template's individual requirements.

See Reference: Spreadsheet Import Options for more details.

Best Practice: After you fill in a template, save it. You can simply reopen your saved template to make edits and if you plan on loading from the same sheet, reuse it.

Date Formats for Import


The following legacy formats for dates are accepted within time period columns:

Excel Date Format: Adaptive Planning will find the time period that contains this date at the appropriate time stratum.
Text strings in the format MMM-YYYY (e.g. jun-2016): If your organization configured a custom calendar, this format will not be accepted.

The preferred method of entering dates within imported files is to use time period codes. See Set Up Calendars.

Fill in a Standard Data Template


A standard sheet contains a simple grid of accounts and time periods. Common examples of standard sheets include expense sheets, revenue sheets, profit-and-
loss sheets, balance sheets, and cash flow sheets.

Standard data is data that resides in GL accounts, custom accounts, assumption accounts, and exchange rates but does not reside in a sheet. You do not select a
sheet when you import standard data.

1. Select Standard.
2. Click Download template and follow its instructions to create the columns and fill in the data you need to import.
3. Click Choose File and browse to the template you edited and click Import.
4. Select how you want Adaptive Planning to map account identifiers, levels or dimension values from your file.

Standard Sheet Data Import Columns

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 179/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Account (Required): An account identifier from your external system such as an account name or account code. It cannot be empty.
Level (Required): Organization levels from your general ledger. It cannot be empty.
Split Label: Used to distinguish between two or more splits. It can be left blank if it isn't needed.
Region: This is an example of a custom dimension column and can be renamed to any dimension in Adaptive Planning, or it can be deleted. Add columns to
specify more dimensions.
Time Period: Represented by codes of time periods at the import accounts' time stratum, or any date within the target time periods. Requires at least one
time period of data.

Standard Data Example Import Template


The example below shows a standard data import template. Standard data templates come with a sample row of data to help you understand how to fill them out.

Fill in a Modeled Sheet Data Template


Modeled sheets are for entering record-based data. The sheet has customized field names across the columns and records as rows. A modeled sheet contains the
underlying business logic for modeling financial events, such as revenues generated from sales, monthly salaries of personnel, or the depreciation of capital
purchases.

1. Select a sheet. You will know the selected sheet is a modeled sheet if you see Import Mode options.
2. Select an import mode. If your instance uses access rules, some of the options are different. See Access Rules and Your Model.
Add the imported rows to the sheet.
Replace all data in the sheet, for all levels.
Replace all the data in the sheet, but only for imported levels.
Update existing rows. Only required column is Import Key. Sheets with Allow splits selected do not support updates. Values in the Import Key column
of your imported file must be unique.
Update existing rows and add new rows. Only required columns are Import Key, Level, and any text selectors, even when not adding new rows.
Sheets with Allow splits selected do not support updates. Values in the Import Key column of your imported file must be unique.
3. Click Download template and follow its instructions to create the columns and fill in the data you need to import.
4. Click Choose File and browse to the template you edited and click Import.
5. Select an Import Key for import modes that update rows. Choose a custom dimension or level to indicate the rows in the modeled sheet your import will
update. Any rows that match the import key will update. Values in the Import Key column of your imported file must be unique.
6. Select how you want Adaptive Planning to map account identifiers, levels or dimension values from your file.

Modeled Sheet Import Columns


Note: Required fields and columns for modeled sheets vary depending on the model sheet definition.

Before you import, check that the sheet does not have duplicate column names. Only the Timespan column and one Display column can have the same name. All
other duplicate names cause the import to fail. If you get a duplicate column name error message, you may have more duplicates than the error message indicates.
You must find and remove the duplicate names from the sheet, not the template. See Add or Edit Modeled Sheet Columns.

Modeled sheets allow columns of the following types of data:

Level (required): Organization levels from your general ledger. It cannot be empty.
Data Entry
Text: Any string value.
Number: Any numeric value.
Date: Any date value.
Text selector: String value of corresponding text selector option.
Initial Balance: Any numeric value.
Timespan: Any numeric value. The order of the time span columns should match the one given in the template.
Dimension: String value of the corresponding dimension value.
Attribute: String value of the corresponding attribute value.

Modeled Sheet Example Import Template

The Services Revenue modeled sheet below only requires three columns:

Level
Rev Rec
Invoicing

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 180/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Fill in a Cube Sheet Data Template


A cube sheet is a type of sheet that allows for multi-dimensional data input in a few accounts across a potentially large set of dimensions.

1. Select a sheet. You will know if the selected sheet is a cube sheet if you do not see Import Mode options.
2. Click Download template and follow its instructions to create the columns and fill in the data you need to import.
3. Click Choose File and browse to the template you edited and click Import.
4. Select how you want Adaptive Planning to map account identifiers, levels or dimension values from your file.

Cube Sheet Import Columns

Level (required): Organization levels from your general ledger. It cannot be empty.
Account (required): An account identifier from your external system such as an account name or account code. It cannot be empty.
Custom Dimensions (required): All other labeled columns represent Custom Dimensions available on the cube. Enter names of values in each dimension for
each row. None of these columns can be empty.
The final columns represent time periods which contain the data. Values in these columns are the values which will be imported into the corresponding
location in the cube. A value of 0 will be imported as a blank value to allow for erasing data in the cube. Titles of time period columns are codes of time
periods at the import accounts' time stratum, or any date within the target time periods.

Cube Sheet Example Import Template


The Product Revenue Cube Sheet below requires:

Level
Account
Customer
Product
and at least one time period

Select or Add Mappings


Note: View and edit the mappings you already created by navigating to Integration > Import Account Mappings, Level Mappings, or Dimension Value
Mappings.

When your file uploads, Adaptive Planning will attempt to match the accounts, levels, or dimensions values in that file to those already in Adaptive Planning.

If you already have mappings, you can choose the option that best fits them.

Click Continue.

If you don't have accounts, levels, or dimension values already mapped from your sheet to Adaptive Planning, you can map them by continuing through a wizard-
like process.

1. Click the account in the table on the left to select it.


2. Enter the exact account as it is named in the source you are importing from.
3. Click the account within Adaptive Planning that you want to map to.
4. Click Accept.
5. After you map all of the accounts, click Save.

Follow the same mapping steps to map levels and dimension values, if needed. After you verify all of the mappings, click Import.

Data Import to Locked Levels in Sheets


When importing data into any sheet for a specific version, the data import for rows associated with a locked level can fail. Based on their permissions and level
access, users can receive an error message for the following Workflow statuses:

Submitted for Review


Approved
Approved and Locked

The import in general succeeds but ignores updating the locked rows. Super users with the Import To All Locations permission can continue to import data to all
sheets regardless of Workflow status.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 181/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

See Use Workflow.

1.2.3 | Import Accounts, Levels, or Dimension Values Mappings

When you import data, you must map accounts, levels, and dimension values from your source to their counterparts in Adaptive Planning. The first time you import
mappings, the mapping process gets triggered for you. You can also start the mapping process separately from a data import using the Import Account Mappings,
Import Level Mappings, and Dimension Value Mappings pages.

Prerequisites
Required permissions: Import Capabilities
You should have a CSV, XLSX, or other export file you can copy your external account, level, or dimension value names from.
Although these have the same names, these mappings are not associated with mappings found in Integration.

Navigation

From the nav menu, go to Integration > and select Import Account Mappings, Import Level Mappings, or Import Dimension Value Mappings

Download and Fill in the Template


1. Click Import Mapping in the top right corner of the page.
2. Click the download template link in the pop-up.
3. Open the downloaded template and follow the instructions to fill in the template.
4. Click Choose File in the popup and select the file and click Upload
5. Review the mappings and mapping details, or add more mappings manually and click Accept.
6. Click Save

Template Columns for Import Mappings


The instructions for filling out the template and an example appear in the first sheet of the template file.
The templates for importing accounts, levels, and dimension values mappings only have two columns:

Import (Required): Enter the name of the account, level, or dimension value from your external source.
Mapped: Enter the account, level, or dimension value already in Adaptive Planning. If this column is left empty, you will be asked to complete the mappings
after upload.

Level Mapping Template Example


The following example template is for level mappings. The required and optional columns are clearly marked.

Map an Import Manually


If you don't want to map automatically, or if you only want to add a few mappings, you can map items manually:

1. Click Add Mapping


2. Enter the exact name as it appears in the source you are importing from.
3. Click the item within Adaptive Planning that you want to map to.
4. Click Accept.
5. After you map all of the items you need, click Continue.

1.2.4 | Import NetSuite Actuals

If you are a NetSuite customer you can import actuals directly from NetSuite if you complete the NetSuite Basic setup and configure your NetSuite category
mappings. The NetSuite actuals option then becomes available in the Import Data page.

Prerequisites
Permissions Required: Import Capabilities
NetSuite Basic must be enabled and configured.
Your NetSuite Category Mappings must be complete.

Navigation

Navigate to Integration > Import Data.

Import Actuals from NetSuite


1. Select Actuals for Import Type.
2. Select NetSuite Actuals under Import From.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 182/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

3. Verify that Standard is selected for Import into Sheet. For NetSuite Actuals, Standard is the default.
4. Select one or a range of time periods to import.
5. Click Continue.
6. Configure your NetSuite Category Mappings if you haven't already done so.
7. Click Continue
8. Decide whether the actuals you are importing are ready to appear on sheets in your model by clicking yes or no.
9. Click Import Actuals.

Once the import completes you can view information on its success or failure in the Results of Import page.

1.2.5 | Import Transactions

Transactions are typically data related to time-stamped orders, invoices, sales process activities, or payments. Transactions can come from a variety of external
systems. You can import transactions if your instance has transactions enabled.

Prerequisites
Permissions required: Import Capabilities
Understand and complete your transaction field definitions.

Navigation

Navigate to Integration > Import Data.

Import Transactions
Before you can import transactions, you need to create your transaction field definitions. Your transaction field definitions determine what columns appear in your
transactions template.
See Transactions for details.

1. Select Transactions as the Import Type.


2. Click Download template and follow its instructions to fill in the data you need to import.
3. Click Choose File and browse to the template you edited and click Import.
4. Click Continue.

Transaction Example Import Template


Note: The columns for a transaction import vary depending on your transaction field definitions.
The Transactions import template has columns for:

Posting Date (Required): A date field for the transaction posting date.
Transaction Type (Required): The transaction type.
Account (Required): The account for the transaction.
Level (Required): The level the transaction applies to.
Transaction Amount (Required): The amount for the transaction.
Description: A text field.

Delete Transactions During Import


When you import you can choose to delete existing transactions as part of the import.

If you select No, your import adds to the existing transactions.

If you select Yes, provide a date range and choose which transactions get removed before the import begins.

Important: Transactions can only be deleted during the import process.

1.2.6 | Import Data From Custom Scripts

Custom scripts are an older method of importing data from external sources like CRM, ERP or HR systems. These scripts were written specifically for your
organization's needs and pull data directly from your source system.

Note: Custom scripts are in the process of being migrated to Integration tasks. Once the migration is complete, all custom scripts will be removed.

Prerequisites
Required permissions: Import Data Capabilities
The version you are in at the time you run the Custom script is the version you are importing to/exporting from

Navigation

From the nav menu click Integration > Import Data.

Run a Custom Script


1. Select actuals, plan, or transactions as the import type.
2. Select the version.
3. Select Custom script. Your scripts appear in a table along with their last run time, last run by, and last run status.
4. Click the script name you need to run.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 183/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

5. Select the first time period the script should import to.
6. Select the last time period the script should import to. If you are only importing to one period, select the same one for first and last.
7. Provide the credentials your custom script needs connects to your source system.
8. Click Run Script.

After your script runs, the script list updates to indicate the new last run time and last run status.

1.2.7 | Export Data

You can use Integration > Export Data to export account values from the currently-selected version into a comma separated value (csv) file which can be opened

in Microsoft ExcelTM. It is in many ways similar to a download or printable view of a standard sheet. This page exports all specified accounts and their values. It
optionally maps accounts to external account codes and level names, such as those seen during Import.

If your company has the NetSuite Integration option, this page also lets you export a budget version from Adaptive Planning into NetSuite. For more information on
this feature, see NetSuite Budget Export.

To export your data, choose from the four sets of options, and select Export. Values on individual splits aggregate on export.

You can also export using the Custom Cloud Loader in Integration to export to external, cloud-based systems.

Format
This section lets you select how the accounts and levels are labeled in the Export file. Select Edit next to Format to see the choices:
Note: See the Export Account and Export Level Mappings sections for how to set external export names.

Adaptive Planning Account Names and Codes - This option labels the exported data with the account names and level names found in Adaptive
Planning.

External Account Codes - Labels the exported data with the account codes and level names established in the Export Account Mappings and Export
Level Mappings. External account codes are extremely useful when importing Adaptive Planning data into other systems that require different account or
level mappings. If an account or level does not have an Export Mapping it is excluded from the export by default. You can include all accounts and levels by
selecting Include Unmapped Items, to give unmapped items the names they have in Adaptive Planning.

Filter
Select Edit to specify the accounts, levels, and time range to be included in the exported data. All data exports unless otherwise specified.

Accounts - This section displays a list of all accounts (GL, custom, metric, modeled, cube, assumptions and exchange rates) that exist in the model. You
can Ctrl- or Shift-click to specify particular selections or ranges of accounts to include in the export. You can Ctrl-Shift-click within the Name column, then
use a right-click context menu to check or uncheck multiple selections at once. When you right click a selected parent, you can use the context menu to
check or uncheck its descendants. If you select accounts that use different time strata such as month and quarter, the export will use the higher of the two
(e.g. quarter).
Levels - This section lists all levels you can access. You can Ctrl- or Shift-click to specify particular selections or ranges of accounts to include in the export.
You can Ctrl-Shift-click within the Name column, then use a right-click context menu to check or uncheck multiple selections at once. When you right click a
selected parent, you can use the context menu to check or uncheck its descendants.
Time Range - You can select the time periods to include by using the From and To drop-down selectors. The time selector dynamically updates to indicate
the range based on the time strata of the accounts you select. If you select accounts that use different time strata such as month and quarter, the range
displays the higher of the two (e.g. quarter).

Dimensions
Select the dimension or dimensions you want tagging the data in your export file. Select Edit to show a list of all custom dimensions in your model.

Rules
Select Edit next to Rules to see the options for:

Currency - Select the currency in which all monetary values should be exported. The default choice, "Use Level's Currency" will export each level's
monetary values in the currency of that level.

Include Empty Rows - Rows that only contain zeroes or blank cells are excluded from the export by default. If you would like to include all of the accounts
and levels you have specified for this export regardless of whether the account or level has data, select this option.

Include Account and Level Rollups- if no filters are being applied to the export, you can optionally choose to include rollup (parent) accounts and levels in
the export by selecting this option. If filters are being applied, this option is unavailable, as rollups will be emitted if they are selected in the filters.

Include Time Rollups - if selected, the export will include columns for time rollups within the requested time range. If not selected, only individual default
time stratum columns will be included.

Export Data
After setting your filters, dimensions, and rules, select Export.

Export Account Mappings


If you need to export account data from Adaptive Planning and you need to map those accounts to an external name for an external system, you can use Export
Account Mappings to assist in the export.
You can set your export account mappings by visiting Integration > Export Account Mappings and following these steps:

1. Navigate and expand the parent accounts to select the child level accounts you wish to map. Parent accounts cannot be selected. You can select/deselect
all accounts by clicking the box at the top left, in the header of the Account Mappings list.
2. To use the existing import name, click Use import name in the detail panel to the right, then click OK in the confirmation popup.
3. If more than one item was selected, all of the selected accounts use their import names.

You can enter a custom external account name by visiting Integration > Export Account Mappings and following these steps:

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 184/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

1. Navigate and expand the parent accounts to select the child accounts you wish to map. Parent accounts cannot be selected. You can select/deselect all
accounts by clicking the box at the top left, in the header of the Account Mappings list.

2. Enter a custom name in the External account name field in the detail panel on the right. Click Cancel if you'd like to discard your changes.

3. Once you enter the name you want, click Save .


4. The External Export Account column will display your changes.
5. If more than one account was selected, all of the selected accounts use the text you entered.

6. Click Printable View at the top of the page to view a spreadsheet containing all of the account mappings.

Export Level Mappings


If you need to export level data from Adaptive Planning and you need to map those levels to an external level name for an external system, you can use Export
Level Mappings to assist in the export.
You can set your export level mappings by visiting Integration > Export Level Mappings and following these steps:

1. Navigate and expand the levels to select the levels you wish to map. You can select/deselect all levels by clicking the box at the top left, in the header of the
Level Mappings list.
2. To use the existing import name, click Use import name in the detail panel to the right, then click OK in the confirmation popup.
3. If more than one level was selected, all of the selected levels use their import names.

You can enter a custom external export level name by visiting Integration > Export Level Mappings and following these steps:

1. Navigate and expand the levels to select the levels you wish to map. You can select/deselect all levels by clicking the box at the top left, in the header of the
Level Mappings list.

2. Enter a custom name in the External export level name in the detail panel on the right. Click Cancel if you'd like to discard your changes.

3. Once you enter the name you want, click Save .


4. The External Export Level Name column will display your changes.
5. If more than one level was selected, all of the selected levels use the text you entered.

6. Click Printable View at the top of the page to view a spreadsheet containing all of the level mappings.

1.2.8 | Reference: Spreadsheet Import Options

For step-by-step instructions on importing sheet and transactions data, see Spreadsheet Import.

Fields Description

Import Type Identifies where the data will import.

Actuals: Choose an Actuals version.


Plan: Choose a Plan version.
Transactions (only available with the Transactions module)

Import From Identifies the source of the data being imported.

Spreadsheet
Custom Script (For Legacy Connectors)

Import Into Sheet Identifies the sheet the data will import to. Do not select a sheet when importing Transactions.

Standard: For GL, custom, assumption, exchange rates


Modeled or Cube Sheet: For the modeled and cube sheets in the system

Controls what happens at import.


Import Mode
Add the imported rows to the sheet.
Only available when a
Replace all data in the sheet, for all levels.
modeled sheet is selected for
Replace all the data in the sheet, but only for imported levels.
import into sheet
Update existing rows. Only required column is the import key. Sheets with Allow splits selected do not support
updates. Values in the Import Key column of your imported file must be unique.
Update existing rows and add new rows. Only required columns are Import Key, Level, and any text selectors, even
when not adding new rows. Sheets with Allow splits selected do not support updates. Values in the Import Key
column of your imported file must be unique.

Select File Choose the file on your local system to import. Format it by using the download template.

Download Template Downloads an import template for the sheet you selected within Import Into Sheet. The templates for modeled, cube, and
standard sheet data are different based on their contained dimensions and accounts.

1.2.9 | Prepare for NetSuite 2020.1

1.2.9.1 | Prepare for NetSuite 2020.1

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 185/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Important: This article assumes that your current version of NetSuite is 2018.1. For versions older than 2018.1, See Prepare for NetSuite 2018. 1 and Two Factor
Authentication.

What's Coming?
NetSuite 2020.1 enforces Token Based Authentication (TBA) for all NetSuite users. This feature upgrade is not automatic for existing customers. You must manually
upgrade the default version of your existing NetSuite Data Sources to 2020.1.

Your current webservices version must be less than 3 years old to ensure Adaptive Planning and NetSuite are able to provide optimal support.

Why?
Token Based Authentication (TBA) for all NetSuite users enables Adaptive Planning to maintain Built For NetSuite (BFN) certification. For more on NetSuite's two-
factor authentication see their documentation here.

What Can I Do Right Now?


Right now, you can set up Token-Based Authentication inside NetSuite by generating authentication keys. Save these keys in a secure location and have them
ready. Treat these keys as you would a password.

Review the existing NetSuite users and roles involved in integrating with Adaptive Planning. Create a role that can use two-factor authentication and has all of the
needed permissions for integrating with Adaptive Planning.

What Do I Need To Do for Integration?


If you use NetSuite data sources in Adaptive Planning Integration, you need to upgrade your NetSuite endpoint to 2020.1. Select "Upgrade to 2020.1" from the
Actions pane. You can create a new NetSuite Credential using the Credentials pane.

Generate Authentication keys from within NetSuite and paste them into specific locations inside the Adaptive Planning user interface.

What Do I Need To Do for NetSuite Basic?


If you use NetSuite Basic, your endpoint will be upgraded automatically.

Navigate to Integration > Netsuite setup and paste your keys.

1.2.9.2 | Enter NetSuite Keys for Token-based Authentication with NetSuite 2020.1

NetSuite and Two-factor Authentication


As of NetSuite's 2020.1 release, NetSuite enforces Token Based Authentication (TBA) for all roles. Adaptive Planning needs highly-privileged NetSuite roles as part
of a NetSuite Basic setup or a NetSuite data source in Integration.

Prerequisites
Enable token-based authentication in NetSuite, generate and save the Consumer Key, Consumer Secret, Access token ID, and Access token secret in a secure
location.

Enter NetSuite Token-based Authentication Keys


Where you enter token-based authentication keys depends on which method you use to integrate NetSuite with Adaptive Planning.

Your company either uses NetSuite Basic or a NetSuite Data Source in Integration.

NetSuite Basic

1. Navigate to Integration > NetSuite setup.


2. Select Token Based Authentication.
Note: You may need to select Update Import User to unlock the settings. Updating the import user does not delete any mappings or previously imported
actuals.
3. Paste the Consumer Key, Consumer Secret, Access token ID, and Access token secret you generated within NetSuite and click Save.

NetSuite Data Source in Integration

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 186/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Navigate to Integration > Data Designer.

You can upgrade an existing NetSuite data source, or create a new NetSuite data source.

If you have an existing NetSuite data source you must upgrade to NetSuite 2020.1.

If you create a new NetSuite data source you automatically get NetSuite 2020.1 and don't need to upgrade.

In both cases you create a NetSuite Credential that holds your access keys.

Upgrade an Existing NetSuite Data Source to 2020.1

1. Select an existing NetSuite Data Source.


2. Select Upgrade to 2020.1 in the Actions pane.
3. Select Create a new token based credential now the first time you upgrade any of your data sources to NetSuite 2020.1.
4. Provide a name for the NetSuite credential. A credential can be reused with any data source after you create it.
5. Paste the access keys you generated within NetSuite.
6. Select OK.
7. Review the changes in the dialog and make a note of them. Select Upgrade if you are okay with the changes and the data source gets updated.
8. Make any changes you need to your data mappings in your loaders.
9. Select Import Structure to upgrade all the tables in your data source.

Create a New NetSuite Data Source


When you create a new NetSuite data source, the 2020.1 endpoint is used by default. You won't need to upgrade it.

1. Navigate to Credentials and select Create New Credential.


2. Choose NetSuite Token Based Authentication and provide a name for the NetSuite Credential. A credential can be reused with any data source after you
create it.
3. Paste the access keys you generated from NetSuite.
4. Select Create new data source and select NetSuite.
5. Select Apply.
6. You can now create a planning loader with your data source.

View Token-based Authentication Audit Logs in NetSuite


You can view an audit log in NetSuite to check if the correct token elements get sent to NetSuite from Adaptive Planning during login attempts.

1. Log in to NetSuite.
2. Go to Setup > Users/Roles > Login Audit Trail Search.
3. Select Use Advanced Search.
4. Select the Results tab.
5. Add the following to the results:
Token-based Access Token Name
Token-based Application Name
Detail
6. Submit the search.
7. Sort the most recent logins to the top and review the status and detail columns for your login attempts.

1.2.9.3 | Generate Token-Based Authentication Keys in NetSuite

NetSuite Token Based Authentication


The NetSuite user you set up to integrate with Adaptive Planning requires a role with token-based authentication access. You can grant token-based authentication
for:

A new custom NetSuite role with only the specific permissions needed for integrating, following security best-practices
Or the existing administrator (role id=3) web services role

Prerequisites
Log in to NetSuite as an administrator
Review the NetSuite account, email address, and NetSuite role you already use in Adaptive Planning

Basic Steps
Decide if you want to use a custom role to integrate Adaptive Planning with NetSuite (recommended) or use the existing administrator (role id=3) role

Configure a user with a custom role for integrating with Adaptive Planning (recommended)

1. Turn on token-based authentication in NetSuite.


2. Create the integration record for the administrator. You cannot use the previously existing "Adaptive Insights Integration" record.
3. Assign the token-based authentication role to a user whose credentials will be used for setting up the integration with Adaptive Planning.
4. Create an access token for integrating with Adaptive Planning.
5. Enter the keys in the Adaptive Planning user interface

Configure an existing administrator (role id=3) for integrating with Adaptive Planning

1. Turn on token-based authentication in NetSuite.


2. Create the integration record for the administrator. You cannot use the previously existing "Adaptive Insights Integration" record.
3. Create the user access tokens for the administrator.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 187/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

4. Enter the keys in the Adaptive Planning user interface.

Decide if You Want to Use a Custom Role to Integrate Adaptive Planning with NetSuite
If you want to follow best-practices, create a custom role with only the specific permissions needed to integrate NetSuite with Adaptive Planning. Grant this custom
role token-based authentication.

If you already have an administrator (role id=3) you want to continue using for integration, you can create an integration record and user access tokens for it. The
steps for an administrator appear at the bottom of this article.

Configure a User with a Custom Role for Integrating with Adaptive Planning (Recommended)
Turn on Token-based Authentication in NetSuite For the Role

1. Navigate to Setup > Company > Enable features > Suite Cloud > Manage Authentication and select Token-Based Authentication.
2. Navigate to Setup > Users/Roles > Manage Roles and click New to create a new custom role. Name the custom role "Adaptive Planning Integration."
3. Give the role the permissions needed to integrate with Adaptive Planning with token-based authentication and add the permission "Setup > Log in Using
Access Tokens - FULL."

For NetSuite Basic's permission read this article.

For NetSuite enhanced integrations (NetSuite data sources in Integration) use these typical permissions.

4. Save the role.

Assign the Token Based Authentication Role

1. Navigate to Lists > Employees > Employees > Edit User and select the user who manages data integration within Adaptive Planning.
2. Click Access > Roles
3. Assign the custom role you just created to the user.
4. Navigate to Setup > Integration > Manage Integrations > New.
5. Enter the name "Adaptive Planning Integration" and click Token-based Authentication. Double check that State is set to Enabled.
6. Click Save. This creates an Integration Record you will use to create access tokens.
7. Copy and paste the following values for the integration record into a text file and save the file in a secure location you can access in the future:
Application ID (only used for your record keeping, not used by Adaptive Planning)
Consumer Key
Consumer Secret

Copy the information to a secure location before you navigate away from this page. It only displays once and can't be retrieved later.

These values are required to complete integration with Adaptive Planning. Next, you'll generate the Access Token and and Access Token ID values for the NetSuite
user associated with your Adaptive Planning integration.

Create an Access Token

1. Navigate to Setup > Users/Roles > Access Tokens and click New.
2. Select the application name "Adaptive Planning Integration" you created in the previous steps.
3. Select the user and then the role you created. Select "Adaptive Planning Integration" and associate the Adaptive Planning integration record.
4. NetSuite generates a response. Copy and paste the Access Token ID and the Access Token into the secure location you created in the previous steps.

Copy the response before you navigate away from this page. It only displays once and can't be retrieved later.

These values are also required to complete integration with Adaptive Planning.

Enter the Keys in Adaptive Planning


For NetSuite Data Sources in Integration and NetSuite basic, follow these steps to enter your keys.

Configure an Existing Administrator (role id=3) for Integrating with Adaptive Planning
Existing administrator (role id=3) web services users follow different steps than custom roles. Where administrators (role id=3) create access tokens within NetSuite
is also different.

Create the Integration Record for an Administrator


For existing administrator (role id=3) web services users, begin by creating the integration record.

1. Navigate to Setup > Integration > Manage Integrations > New.


2. Enter a Name "Adaptive Planning Integration" and click Token-based Authentication. Double check that State is set to Enabled.
3. Click Save. You just created an Integration Record you will use for generating access tokens.
4. Copy and paste the following values for the integration record into a text file and save the file in a secure location you can access in the future:
Application ID (only used for your record keeping, not used by Adaptive Planning)
Consumer Key
Consumer Secret

Copy the information to a secure location before you navigate away from this page. It only displays once and can't be retrieved later.

These values are required to complete integration with Adaptive Planning. Next, you'll generate the Access Token and and Access Token ID values for the NetSuite
user associated with your Adaptive Planning integration.

Create the User Access Tokens for an Administrator

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 188/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

1. Log in as the Administrator to NetSuite


2. Click Manage Access Tokens in the Settings Portlet
3. Click New My Access Token.
4. Select the application "Adaptive Planning Integration" you want to associate the access token with.
5. Click Save.
6. NetSuite generates a response. Copy and paste the Access Token ID and the Access Token into the secure location you created in the previous steps.

Copy the information to a secure location before you navigate away from this page. It only displays once and can't be retrieved later.

These values are required to complete integration with Adaptive Planning.

Enter the Keys in Adaptive Planning


For NetSuite Data Sources in Integration and NetSuite basic, follow these steps to enter your keys.

View Token-based Authentication Audit Logs in NetSuite


You can view an audit log in NetSuite to check if the correct token elements get sent to NetSuite from Adaptive Planning during login attempts.

1. Log in to NetSuite.
2. Go to Setup > Users/Roles > Login Audit Trail Search.
3. Select Use Advanced Search.
4. Select the Results tab.
5. Add the following to the results:
Token-based Access Token Name
Token-based Application Name
Detail
6. Submit the search.
7. Sort the most recent logins to the top and review the status and detail columns for your login attempts.

1.2.9.4 | Switch to NetSuite Token Based Authentication

A NetSuite credential is a collection of token-based authorization keys from NetSuite that act like a password for connecting to a NetSuite endpoint. You can
associate a NetSuite credential with one or more NetSuite data sources as a centralized way of reusing NetSuite login details.

A NetSuite credential contains a:

NetSuite Account ID to identify the user


Consumer Key
Consumer Secret
Token ID
Token Secret

Important: Because token-based authorization keys function exactly like a password for a NetSuite account, Adaptive Planning prevents viewing their values the
moment you enter them. Always treat token-based authorization keys as you would a password.

Prerequisites
In NetSuite

Generate authorization tokens within NetSuite for the user that integrates with Adaptive Planning and have the keys available

In Adaptive Planning

Permissions required for NetSuite Integration: Integration Operator, Data Designer


Permissions required for NetSuite Basic: Administrator

Navigation

nav menu > Integration > Data Designer.

For NetSuite Enhanced Integration


Basic Steps

1. Create a new NetSuite Credential


2. Name the NetSuite Credential and enter the NetSuite Account ID and its token-based authentication keys

Create a NetSuite Credential

1. Select Credentials in the Component Library.


2. Select Create New Credential in the Credentials menu.
3. Select NetSuite Credential.
4. Enter a unique name for the credential.
5. Enter the NetSuite Account ID. This field remains visible after you save.
6. Enter the Consumer Key, Consumer Secret, Token ID, and Token Secret you generated from NetSuite. For security reasons, these secrets fields get
hidden the moment you enter them into Adaptive Planning.
7. Select Save in the Actions panel.

Associate a NetSuite Credential with a NetSuite Data Source

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 189/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

1. Select Data Sources in the Component Library.


2. Select a NetSuite data source and select a NetSuite Credential in the Credentials dropdown.
3. Save the data source.

For NetSuite Basic


Navigate to Integration > NetSuite setup. Provide the NetSuite token-based access keys you generated.

1. Navigate to Integration > NetSuite setup.


2. Select Token Based Authentication.
Note: You may need to select Update Import User to unlock the settings. Updating the import user does not delete any mappings or previously imported
actuals.
3. Paste the Consumer Key, Consumer Secret, Access token ID, and Access token secret you generated within NetSuite and click Save.

1.2.10 | Prepare for NetSuite Two-Factor Authentication

1.2.10.1 | Prepare for NetSuite Two-Factor Authentication

Important: NetSuite's deadline for updating to two-factor authentication (2FA) is April 8, 2019. Existing legacy integrations will not work once NetSuite turns off the
legacy method of authentication. Below are the specific steps you need to take.

What's Coming?
The way you authenticate with NetSuite throughout Adaptive Planning is changing because NetSuite began requiring two-factor authentication (2FA). Regardless of
how you integrate Adaptive Planning with NetSuite, NetSuite's two-factor authentication requirement affects you.

Why?
For enhanced security, NetSuite's 2018.1 release requires two-factor authentication for all highly-privileged roles in NetSuite production, sandbox, development,
and Release Preview accounts. In NetSuite's 2019.1 release, two-factor authentication also becomes mandatory for API and integration access.

Adaptive Planning uses highly-privileged roles to integrate with NetSuite. Your Adaptive Planning integration must meet NetSuite's two-factor authentication
requirements to continue working.

For more on NetSuite's two-factor authentication see their documentation here.

What Can I Do Right Now?


Right now, you can set up Token-Based Authentication inside NetSuite by generating authentication keys. Save these keys in a secure location and have them
ready. Treat these keys as you would a password. The user interface for Adaptive Planning is going to change so that you can paste these keys in.

Review the existing NetSuite users and roles involved in integrating with Adaptive Planning. Create a role that can use two-factor authentication and has all of the
needed permissions for integrating with Adaptive Planning.

What Do I Need To Do for Integration?


If you use NetSuite data sources in Adaptive Planning Integration, you need to upgrade your NetSuite endpoint to 2018.1 by clicking the "Upgrade to 2018.1"
button. Create a NetSuite Credential and enter your keys.

After generating your authentication keys from within NetSuite and saving them, you'll need to paste them into specific locations inside the Adaptive Planning user
interface.

Watch this video: 4m 4s

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 190/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

What Do I Need To Do for NetSuite Basic?


If you use NetSuite Basic, your endpoint will be upgraded automatically. Navigate to Integration > Netsuite setup and paste your keys.

Watch this video: 4m 00s

What Happens if I Don't Upgrade to NetSuite 2018.1 and Token Based Authentication?
NetSuite is rolling out two-factor authentication and token-based authentication for integrations to all of its customers. If you don't update to token-based
authentication by April 8, 2019, your connection to NetSuite within Adaptive Planning will fail and your integration with NetSuite won't work.

1.2.10.2 | Enter NetSuite Keys for Token-based Authentication

Important: NetSuite's deadline for updating to two-factor authentication (2FA) is April 8, 2019. Existing legacy integrations will not work once NetSuite turns off the
legacy method of authentication. Below are the specific steps you need to take.

NetSuite 2018.1 and Two-factor Authentication


As of NetSuite's 2018.1 release, NetSuite requires two-factor authentication for all highly-privileged roles. Adaptive Planning needs highly-privileged roles as part of
a NetSuite Basic setup or a NetSuite data source in Integration. For NetSuite 2018.1, you need to enter authentication keys generated in NetSuite in the
appropriate location in Adaptive Planning.

Prerequisites
Enable token-based authentication in NetSuite, generate and save the Consumer Key, Consumer Secret, Access token ID, and Access token secret in a secure
location.

Enter NetSuite Token-based Authentication Keys


Where you enter token-based authentication keys depends on which method you use to integrate NetSuite with Adaptive Planning.

Your company either uses NetSuite Basic or a NetSuite Data Source in Integration.

NetSuite Basic

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 191/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

1. Navigate to Integration > NetSuite setup.


2. Select Token Based Authentication.
Note: You may need to select Update Import User to unlock the settings. Updating the import user does not delete any mappings or previously imported
actuals.
3. Paste the Consumer Key, Consumer Secret, Access token ID, and Access token secret you generated within NetSuite and click Save.

Watch this Video: 4m 00s

NetSuite Data Source in Integration

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 192/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Navigate to Integration > Data Designer.

You can upgrade an existing NetSuite data source, or create a new NetSuite data source.

If you have an existing NetSuite data source you must upgrade to NetSuite 2018.1 by April 8, 2019.

If you create a new NetSuite data source you automatically get NetSuite 2018.1 and don't need to upgrade.

In both cases you create a NetSuite Credential that holds your access keys.

Upgrade an Existing NetSuite Data Source to 2018.1

Watch this video: 4m 4s

1. Select an existing NetSuite Data Source.


2. Select Upgrade to 2018.1 in the Actions panel.
3. Select Create new credential now the first time you upgrade any of your data sources to NetSuite 2018.1.
4. Provide a name for the NetSuite credential. A credential can be reused with any data source after you create it.
5. Paste the access keys you generated within NetSuite.
6. Select OK.
7. Review the changes in the dialog and make a note of them. Select Upgrade if you are okay with the changes and the data source gets updated.
8. Make any changes you need to your data mappings in your loaders.
9. Select Import Structure to upgrade all the tables in your data source.

Create a New NetSuite Data Source


When you create a new NetSuite data source, the 2018.1 endpoint is used by default. You won't need to upgrade it.

1. Select Create Credentials and select NetSuite credentials.


2. Provide a name for the NetSuite Credentials. A credential can be reused with any data source after you create it.
3. Paste the access keys you generated from NetSuite.
4. Select Create new data source and select NetSuite.
5. Select Apply.
6. You can now create a planning loader with your data source.

View Token-based Authentication Audit Logs in NetSuite


You can view an audit log in NetSuite to check if the correct token elements get sent to NetSuite from Adaptive Planning during login attempts.

1. Log in to NetSuite.
2. Go to Setup > Users/Roles > Login Audit Trail Search.
3. Select Use Advanced Search.
4. Select the Results tab.
5. Add the following to the results:
Token-based Access Token Name
Token-based Application Name
Detail
6. Submit the search.
7. Sort the most recent logins to the top and review the status and detail columns for your login attempts.

1.2.10.3 | Generate Token-Based Authentication Keys in NetSuite

NetSuite 2018.1 and Two-factor Authentication

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 193/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

For enhanced security, NetSuite's 2018.1 release requires two-factor authentication (2FA) for all highly-privileged roles in NetSuite production, sandbox,
development, and Release Preview accounts. In NetSuite's 2019.1 release, two-factor authentication also becomes mandatory for new integration and API access.
This means the NetSuite user you set up to integrate with Adaptive Planning requires a role with token-based authentication access. You can grant token-based
authentication for:

A new custom NetSuite role with only the specific permissions needed for integrating, following security best-practices
Or the existing administrator (role id=3) web services role

Prerequisites
Log in to NetSuite as an administrator
Review the NetSuite account, email address, and NetSuite role you already use in Adaptive Planning

Basic Steps
Decide if you want to use a custom role to integrate Adaptive Planning with NetSuite (recommended) or use the existing administrator (role id=3) role

Configure a user with a custom role for integrating with Adaptive Planning (recommended)

1. Turn on token-based authentication in NetSuite.


2. Create the integration record for the administrator. You cannot use the previously existing "Adaptive Insights Integration" record.
3. Assign the token-based authentication role to a user whose credentials will be used for setting up the integration with Adaptive Planning.
4. Create an access token for integrating with Adaptive Planning.
5. Enter the keys in the Adaptive Planning user interface

Configure an existing administrator (role id=3) for integrating with Adaptive Planning

1. Turn on token-based authentication in NetSuite.


2. Create the integration record for the administrator. You cannot use the previously existing "Adaptive Insights Integration" record.
3. Create the user access tokens for the administrator.
4. Enter the keys in the Adaptive Planning user interface.

Decide if You Want to Use a Custom Role to Integrate Adaptive Planning with NetSuite
If you want to follow best-practices, create a custom role with only the specific permissions needed to integrate NetSuite with Adaptive Planning. Grant this custom
role token-based authentication.

If you already have an administrator (role id=3) you want to continue using for integration, you can create an integration record and user access tokens for it. The
steps for an administrator appear at the bottom of this article.

Configure a User with a Custom Role for Integrating with Adaptive Planning (Recommended)
Turn on Token-based Authentication in NetSuite For the Role

1. Navigate to Setup > Company > Enable features > Suite Cloud > Manage Authentication and select Token-Based Authentication.

2. Navigate to Setup > Users/Roles > Manage Roles and click New to create a new custom role. Name the custom role "Adaptive Planning Integration."

3. Give the role the permissions needed to integrate with Adaptive Planning with token-based authentication and add the permission "Setup > Log in Using
Access Tokens - FULL." For NetSuite Basic's permission read this article For NetSuite enhanced integrations (NetSuite data sources in Integration) use
these typical permissions.
4. Save the role.

Assign the Token Based Authentication Role

1. Navigate to Lists > Employees > Employees > Edit User and select the user who manages data integration within Adaptive Planning.
2. Click Access > Roles
3. Assign the custom role you just created to the user.
4. Navigate to Setup > Integration > Manage Integrations > New.
5. Enter the name "Adaptive Planning Integration" and click Token-based Authentication. Double check that State is set to Enabled.
6. Click Save. This creates an Integration Record you will use to create access tokens.
7. Copy and paste the following values for the integration record into a text file and save the file in a secure location you can access in the future:
Application ID (only used for your record keeping, not used by Adaptive Planning)
Consumer Key
Consumer Secret
Important: Copy the information to a secure location before you navigate away from this page. It only displays once and can't be retrieved later.

These values are required to complete integration with Adaptive Planning. Next, you'll generate the Access Token and and Access Token ID values for the
NetSuite user associated with your Adaptive Planning integration.

Create an Access Token

1. Navigate to Setup > Users/Roles > Access Tokens and click New
2. Select the application name "Adaptive Planning Integration" you created in the previous steps.
3. Select the user and then the role you created. Select "Adaptive Planning Integration" and associate the Adaptive Planning integration record.
4. NetSuite generates a response. Copy and paste the Access Token ID and the Access Token into the secure location you created in the previous steps.
Important: Copy the response before you navigate away from this page. It only displays once and can't be retrieved later.

These values are also required to complete integration with Adaptive Planning.

Enter the Keys in Adaptive Planning

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 194/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

For NetSuite Data Sources in Integration

After Adaptive Planning releases support for token based authentication after November 29, 2018, follow these steps to enter your keys.

For NetSuite Basic

After Adaptive Planning releases support for token based authentication expected mid-January 2018, follow these steps to enter your keys.

Configure an Existing Administrator (role id=3) for Integrating with Adaptive Planning
Existing administrator (role id=3) web services users follow different steps than custom roles. Where administrators (role id=3) create access tokens within NetSuite
is also different.

Create the Integration Record for an Administrator


For existing administrator (role id=3) web services users, begin by creating the integration record.

1. Navigate to Setup > Integration > Manage Integrations > New.


2. Enter a Name "Adaptive Planning Integration" and click Token-based Authentication. Double check that State is set to Enabled.
3. Click Save. You just created an Integration Record you will use for generating access tokens.
4. Copy and paste the following values for the integration record into a text file and save the file in a secure location you can access in the future:
Application ID (only used for your record keeping, not used by Adaptive Planning)
Consumer Key
Consumer Secret
Important: Copy the information to a secure location before you navigate away from this page. It only displays once and can't be retrieved later.

These values are required to complete integration with Adaptive Planning. Next, you'll generate the Access Token and and Access Token ID values for the
NetSuite user associated with your Adaptive Planning integration.

Create the User Access Tokens for an Administrator

1. Log in as the Administrator to NetSuite


2. Click Manage Access Tokens in the Settings Portlet
3. Click New My Access Token.
4. Select the application "Adaptive Planning Integration" you want to associate the access token with.
5. Click Save.
6. Netsuite generates a response. Copy and paste the Access Token ID and the Access Token into the secure location you created in the previous steps.
Important: Copy the information to a secure location before you navigate away from this page. It only displays once and can't be retrieved later.

These values are required to complete integration with Adaptive Planning.

Enter the Keys in Adaptive Planning

For NetSuite Data Sources in Integration

After Adaptive Planning releases support for token based authentication following November 29, 2018, follow these steps to enter your keys.

For NetSuite Basic

After Adaptive Planning releases support for token based authentication expected mid-December 2018, follow these steps to enter your keys.

View Token-based Authentication Audit Logs in NetSuite


You can view an audit log in NetSuite to check if the correct token elements get sent to NetSuite from Adaptive Planning during login attempts.

1. Log in to NetSuite.
2. Go to Setup > Users/Roles > Login Audit Trail Search.
3. Select Use Advanced Search.
4. Select the Results tab.
5. Add the following to the results:
Token-based Access Token Name
Token-based Application Name
Detail
6. Submit the search.
7. Sort the most recent logins to the top and review the status and detail columns for your login attempts.

1.3 | Application Integrations


1.3.1 | Concept: Integrate With NetSuite

Note: Adaptive Planning is NetSuite 2021.1 BFN certified.


There are two different ways in which Adaptive Planning integrates with NetSuite:

1. NetSuite Integration - Basic


2. Adaptive Integration with NetSuite Enhancements

They interact with NetSuite in slightly different ways.

For both options, you must install the Adaptive Insights for NetSuite bundle to enable SSO and to enable drill through from Adaptive Planning back into NetSuite.

Follow these instructions for how to install the Adaptive Insights for NetSuite bundle:

1. Login to NetSuite
2. Go to Setup > Customization > Search & Install Bundle

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 195/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

3. Change Location to "Production Account", enter the Account ID


4. Search for the Adaptive Insights for NetSuite bundle
5. Install the Adaptive Insights for NetSuite bundle

Imports from NetSuite


If you have Adaptive Integration with NetSuite Enhancements only use the Adaptive Integration > Design Integrations menu to manage import mappings
when you need to import data from NetSuite.
Important: Do NOT use the Integration > Import menu's mappings screens if you have Adaptive Integration with NetSuite Enhancements.

Accessing Adaptive Planning from NetSuite


NetSuite customers who have purchased Adaptive Planning will be able to log into Adaptive Planning in two ways:

Using the NetSuite Adaptive tab


Using Adaptive Planning's login screen to log in directly

Logging in directly to Adaptive Planning offers the benefit of not requiring a NetSuite seat for every user.

Transaction Drill-through
NetSuite External Systems only support drilling from leaf levels, not rollup levels. NetSuite Basic supports drilling from rollup levels.
Transaction Drill-through can be achieved in one of the following ways:

1. Both NetSuite Integration Basic and Adaptive Integration with NetSuite Enhancements allow for drilling back into NetSuite on the standard categories. This
requires that the user have a NetSuite seat.
2. It is also possible to import NetSuite transactions into the Adaptive Planning Transactions module and allow drill-through into those transactions within
Adaptive Planning. This can be achieved through Adaptive Integration with NetSuite enhancements and the Adaptive Planning Transactions module. An
integration task can be set up to automate the import of transactions into Adaptive Planning. This approach does not require individual NetSuite seats for
business users who need drill-through. If you need to drill into transactions for more than the standard NetSuite categories, then import transactions into
Adaptive Planning and use the Transactions Module.

Exports into NetSuite


Export of data from Adaptive Planning to NetSuite can be achieved in the following ways:

1. Using NetSuite Integration Basic

Export mappings need to be created in order to export Adaptive Planning data back into NetSuite. If you are using the Basic option to export, then the export
process is manual and cannot be scheduled.

Note: If you are using NetSuite Integration Enhancements for importing data, you need to maintain import mappings through Integration > Design
Integrations, and export mappings through Integration > Manage Export Mappings.
2. Using Adaptive Integration with NetSuite Enhancements

You can choose to manage both import and export through Adaptive Integration with NetSuite Enhancements. In this case, you will need to manage export
data through a Scripted Export Loader within Adaptive Integration. This option allows for automation of the export process and creating scheduled exports. It
requires implementation of export scripts through Adaptive Professional Services and the installation of an on-premises data agent. For more details see
Steps: Set Up NetSuite Data Sources.

Comparing the Options to Integrate with NetSuite

NetSuite Integration - Basic Adaptive Integration with NetSuite Enhancements

Requires installation of the Adaptive Insights for NetSuite YES YES


bundle

Enables Drill Through to NetSuite YES YES

Menu used to manage mappings for import Integration > Import Integration > Design Integrations
Account Mappings

Integration > Import Level


Mappings

Menu used to manage mappings for export Integration > Export Set up a scripted export loader and manage mappings within
Account Mappings Integration > Design Integrations

Integration > Export Level


Mapping

Requires Professional Services NO YES

To set up Import
To set up Export using a scripted export loader. This
also requires the installation of an on-premises data
agent.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 196/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

NetSuite Integration - Basic Adaptive Integration with NetSuite Enhancements

Exports NetSuite's 6 standard categories (Account, YES YES


Subsidiary, Department, Class, Item, Customer)
Through scripted export loader

Allows Imports of NetSuite's custom objects and custom NO YES


segments

Imports Standard Sheets YES YES

Automated import into any Planning sheet NO YES

Automated import of transactions in Transactions module NO YES


in Planning

Planning Administration General Setup Options for Integration and NetSuite


The diagram below illustrates the Integration and NetSuite options visible to administrators within Administration > General Setup. Although both Integration's
NetSuite data source and NetSuite Basic can be enabled simultaneously, using only Integration's NetSuite data source is recommended because it provides more
complete access to NetSuite data.

The options shown below for Integration and NetSuite are provided in the General Setup screen to let company administrators choose the setup they need for their
use case.

The Integration: <data source type> options allow an administrator to limit what data source types can be created within Adaptive Integration's Data Designer
screen. If only NetSuite is enabled, only new NetSuite data sources can be created in the Data Designer screen.

The NetSuite Customer: NetSuite SSO option allows companies who are also NetSuite customers to log into Adaptive Planning from within the NetSuite UI.

The NetSuite Customer: NetSuite Basic option enables the NetSuite specific menus available within Adaptive Planning's main navigation.

1.3.2 | Concept: NetSuite Basic Budget Export

If the NetSuite Integration feature is enabled and the current user has the Export Budgets to NetSuite permission, then NetSuite Budget Export will be available on
the Export screen. The choices for Export are NetSuite and CSV file. When you select one of these options, the other sections shown on the screen update
according to your selection. If the Output Target is a CSV File, all the current Export tab sections appear below the Output Target section (see the Export tab help
page for more information). If the Output Target is set to NetSuite, then none of the current Export tab sections appear, and instead the following sections appear:

Budget Category - In this selector, the list of all budget categories available in NetSuite is shown.
Fiscal Years - This section contains a series of check boxes, one for each fiscal year where the start month and year in NetSuite and Adaptive Planning are
equal. The labels shown for the check boxes are the labels of the NetSuite fiscal years. The check boxes are initially unchecked and a user must check at
least one of the boxes in order to continue.

The following conditions apply to the NetSuite Budget Export functionality:

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 197/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

You must have the Multiple Budget Categories feature enabled in NetSuite before exporting data into NetSuite Budgets.
The data is exported from the current working version only; this is the version currently selected on the screen.
Data is exported only from GL accounts. Custom accounts, Assumptions, Modeled Accounts, and Cube Accounts are not exportable - NetSuite does not
support budgets for anything other than GL accounts.
All old budget entries in NetSuite for the selected Budget Category for the selected fiscal year(s) are deleted, then the data from Adaptive Planning is
exported into NetSuite, completely replacing any data in the NetSuite budget.
Data associated with Adaptive Planning Dimension Values whose Export Mappings are marked as "Ignore During Export" or remain unmapped will not be
exported.
Custom level dimensions are not considered when exporting GL data. Only dimension values which are assigned by the account having splits will be
considered.
Clicking the Export button on the Export Main Page when NetSuite is the selected output target will send the user to the NetSuite Export Category
Mappings page if the system finds that there is data which would be exported which is currently unmapped in the Export Mappings screen. If all of the data
which would be exported is mapped in the Export Mappings screen, then the user is not sent to the Export Mappings screen and the export proceeds
immediately.
After the export to NetSuite, the user is taken to a results page where they are informed of the success or failure of the export.
If no Adaptive Planning dimension maps to Subsidiary, then all data will be exported to the "root" subsidiary in NetSuite.

The values which are exported are converted to currencies according to the following rules:

If Adaptive Planning levels are not configured as a dimension mapping, all values to be exported are from the level rollup at the organization structure in
Adaptive Planning, so all values are converted to the top level currency prior to any export.
If Adaptive Planning levels are mapped, and the target Budget Category is not a Global Category, then values to be exported will be exported in the
currency of the level where the values reside. They will be exported in that currency to the subsidiary or other dimension associated with that level in
NetSuite. The user must ensure that Adaptive Planning levels map to subsidiaries of equivalent currency in NetSuite.
If Adaptive Planning levels are mapped, and the target Budget Category is a Global Category, values to be exported will be converted into the Corporate
Currency at each level, then exported in the corporate currency and in the level where the values reside.

Note: Exchange Rates will not be exported from Adaptive Planning to NetSuite; there must be equivalent exchange rates in the two systems (in particular, in the
Budget Exchange Rates area for NetSuite) so that the converted numbers roll up and tie.

1.3.3 | Concept: NetSuite Basic Integration

Adaptive Planning offers a unique and full-featured integration with NetSuite, the ERP, CRM, and accounting system. In particular, we offer one-click importing of
actuals from your general ledger into Adaptive Planning, to simplify your budgeting process. Importing your actuals from NetSuite is easy. You can do it every
month, or even every day, and re-forecast or monitor your budget changes on a more frequent basis. You can also export budgets from Adaptive Planning into the
NetSuite Budget area, and drill directly from Adaptive Planning actuals numbers into NetSuite Transaction Detail reports.

To import your general ledger data from NetSuite:

1. Configure your Adaptive Planning account to connect to your NetSuite account (either Production or Sandbox) by using the NetSuite Integration Setup
screen

2. Describe how your Adaptive Planning accounts and dimensions map to your NetSuite categories on the NetSuite Category Configuration screen

3. On the Import tab, select the NetSuite choice and click the Import button. See Concept: Import Data

Once configured, future updates and imports can be done merely by clicking the Import button on the Import tab.

To purchase the NetSuite Integration option, contact us.

See NetSuite Integration Options for more on the two ways Netsuite integrates with Adaptive Planning.

1.3.4 | Concept: NetSuite Transaction Drill Through

Note: If you are using the NetSuite Adapter for Adaptive Planning integration, refer to Setting up a NetSuite Data Source, and the External Systems section for full
details on configuring the NetSuite Adapter for Adaptive Planning integration for drill through. The content below is helpful for understanding how drill through works.
The following is for configuring NetSuite Transaction Drill through within the Adaptive Planning UI. Users who have the NetSuite Integration feature turned on can
drill into transaction level detail in NetSuite for accounts that are in the Actuals version and are the target of some NetSuite Import Mapping. Users can drill into
transaction level detail from sheets or from the Cell Explorer, which can be accessed in both sheets and reports.

When viewing a sheet which contains an actuals number that has been mapped for importing from NetSuite, the user may drill into the number and launch a
NetSuite report which details which transactions comprise that number. To drill into a cell on a sheet, right-click a cell and select the Drill Through to
NetSuite option from the context menu.
When viewing the Cell Explorer window which contains an actuals number that has been mapped for importing from NetSuite, the user may drill into the
number and launch a NetSuite report which details which transactions comprise that number. When a Cell Explorer window is displaying a number which is
available for drilling, a Drill Through to NetSuite link appears in the Cell Explorer in the upper left area of the cell explorer window.
A user must have the Drill Into NetSuite Imported Numbers permission turned on in their permissions in order to access this functionality.
When the NetSuite report is launched, the user will be asked to log into NetSuite if they are not currently logged in and then the report will be run using the
NetSuite credentials provided by the user.

1.3.5 | Configure Categories for NetSuite Basic

If you are using NetSuite Basic (NetSuite OEM) integration, the following helps you configure NetSuite Categories. Before performing the first import from NetSuite,
users must map the NetSuite categories which are in use in their NetSuite account to the corresponding Adaptive Planning dimensions. In this screen, an
Administrator can specify how NetSuite categories (Subsidiary, Department, Class, Location, Item and Customer) relate to corresponding dimensions in
Adaptive Planning (Account, Level A level within the organization structure, and any custom dimensions).

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 198/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

The associations established in this screen can be more sophisticated than a standard one-to-one relationship. Multiple NetSuite categories can be mapped to a
single dimension in Adaptive Planning, or a single NetSuite category can be associated with more than one dimension in Adaptive Planning.

The associations created in this screen are aspects of the NetSuite Integration that will not change frequently. These associations determine the choices that are
presented when mapping category values, either during the import process or through the NetSuite Category Mappings page.

If multiple NetSuite categories are associated with a single Adaptive Planning dimension, the values in those categories are concatenated and mapped at
one time as though they were one category. Example: If Department and Location are both associated with level, then the import mapping screen may have
choices such as Engineering - US or Sales - London.
If a single NetSuite category is associated with two Adaptive Planning dimensions, the mapping appears for both dimensions. Example: If Class is
associated with both Region and Product, then the import mapping screen will display the Class in each dimension, allowing the user to map the Class
Americas: Product A to Americas in the Region dimension and to Product A in the Product dimension.

Note: The NetSuite Categories page is only available to companies that have the NetSuite Integration feature turned on. See Concept: NetSuite Basic Integration.

How to Configure NetSuite Categories


The following NetSuite categories are listed in this screen: Subsidiary, Department, Class, Location, Item, and Customer. Next to each of the NetSuite
categories, you will find a drop-down list that contains all of the dimensions in your instance, including N/A, Account, Level, and any custom dimensions that exist in
your Adaptive Planning instance.
Configuring categories is a very simple process:

1. Next to each of the NetSuite categories, select the corresponding Adaptive dimension from the drop-down list. If the NetSuite category is not in use or does
not map to any Adaptive dimension, select N/A. If multiple NetSuite categories map to one Adaptive Planning dimension, select that Adaptive Planning
dimension in multiple drop-down fields. If one Category in NetSuite corresponds with more than one dimension in Adaptive Planning, click the Add link next
to the dimension selection for that category. An additional dimension drop-down list will appear and you can associate another Adaptive Planning dimension
with that category. You can add up to three additional dimension drop-down lists for each category, which means that each category can be associated with
as many as four dimensions.
2. Once you have specified the dimensions in the drop-down list, select Save.

Configuring NetSuite Category Mappings (Mapping Values)


After the category configuration has been completed, the NetSuite sub-tab link on the Import tab will lead to the NetSuite Category Mappings page instead of the
configuration page. On the Mappings page, the importer can specify mappings between the NetSuite category values and the Adaptive Planning dimension values
in the dimension which corresponds to that category. The list of available NetSuite category values will be empty until an import has been performed.

1.3.6 | Steps: Set Up NetSuite Integration

Note: NetSuite is requiring two-factor authentication and token-based authentication for all of its customers. If you don't upgrade your NetSuite integration to token-
based authentication, your connection to NetSuite within Adaptive Planning will fail and your integration won't work. See Prepare for NetSuite 2020.1.

If you are an Adaptive Planning customer who's also a NetSuite customer, you can automate the import of actuals data from your NetSuite accounts into your
Adaptive Planning model using the NetSuite connector. Once the NetSuite connector gets turned on and configured, you can also export budgets from Adaptive
Planning to NetSuite and enable drill through from Adaptive Planning into NetSuite. This method of connecting is also known as NetSuite Basic.

In an Adaptive Planning model, Adaptive Planning users with administrative permissions can grant NetSuite Setup permission to any permission set. Users with that
permission can then set up the NetSuite Connector.

You can integrate using NetSuite Basic using token-based authentication requiring a Consumer Key, Consumer Secret, Token ID and Token Secret you generate in
NetSuite.

Prerequisites
Permissions required in Adaptive Planning: Administrator
Permissions required in NetSuite: NetSuite admin (role id=3)
Obtain your company's NetSuite account ID from within NetSuite by navigating to Setup > Company > Company Information
For Token-Based Access, see Generate token-based authorization keys in NetSuite

Basic Steps
Grant the NetSuite Setup permission in Adaptive Planning and assign that permission set to the user who needs to set up the NetSuite connector
Enter your NetSuite Account ID and the NetSuite System type (production or sandbox) from NetSuite. Log in to Adaptive Planning as the user with the
NetSuite Setup permission and enter NetSuite token-based authentication keys in the NetSuite Integration Setup page.
Set up NetSuite category configuration and mappings in Adaptive Planning before importing from NetSuite the first time.
Import from NetSuite to Adaptive Planning
If needed, export budgets to NetSuite

Navigation

From the nav menu navigate to Integration > NetSuite Setup.

Set Up Integration
Set up the NetSuite integration once for each Adaptive Planning instance.

1. Log in to Adaptive Planning.


2. Go to nav menu > Integration > NetSuite Setup. Only users with the NetSuite Setup permission can access NetSuite Setup.
3. Select Token based authentication if you already generated token based authentication keys from NetSuite.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 199/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Note: You may need to select Update Import User to unlock the settings. Updating the import user does not delete any mappings or previously imported
actuals.
4. Enter the NetSuite Account ID and select the System Type. If your company purchased the Adaptive Planning for Netsuite bundle in the NetSuite Bundle
Marketplace (recommended), select Enhanced bundle-based drill-through.
Important: If the NetSuite Sandbox Account ends in _SBx (eg. _ SB1 or _ SB2, etc.) System type must be set to Production.
5. Enter authentication details. For Token-Based Authentication enter the NetSuite Consumer Key, Consumer Secret, Token ID, and Token Secret you
generated from NetSuite.
6. Save the setup.

Note: For security purposes, user NetSuite passwords and email addresses are not stored in Adaptive Planning applications.

Adaptive Planning attempts to connect to NetSuite to establish the integration when you click Save. If the connection succeeds, this page confirms the integration
and displays the NetSuite account ID. If the connection fails, the page will display an error message with a description of the issue.

Create an Adaptive Planning Integration User


As a recommended best-practice you can create a new user account exclusively for performing NetSuite data imports. This optional user account protects against
the loss of the integration if the first user account becomes invalid.

If you do not want to use a NetSuite seat specifically for handling the integration and import process, you can use the following instructions to set up an existing
user with the correct permissions.

To set up an Adaptive Planning integration user in NetSuite:

1. Create a new role in NetSuite called Adaptive. Give it web-services-only access with these permissions:
Transactions > Find Transactions FULL
Transactions > Set Up Budgets FULL
Lists > Perform Search FULL
Lists > Accounts VIEW
Lists > Classes VIEW
Lists > Customers VIEW
Lists > Departments VIEW
Lists > Items VIEW
Lists > Locations VIEW
Lists > Subsidiaries VIEW
Reports > Balance Sheet VIEW
Reports > Income Statement VIEW
Reports > Financial Statements VIEW
Setup > Accounting Lists EDIT
Setup > Deleted Records FULL
Setup > Login Using Access Tokens FULL
Setup > Manage Accounting Periods VIEW
Setup > SOAP Web Services FULL
Note: Permissions can be renamed in NetSuite. If you don't see a permission from this list, navigate in NetSuite to Setup > Company > Rename
Records/Transactions and check for changed names. Example: Class could have been renamed Classification. Error messages use the original names.
Note: If you are a NetSuite OneWorld customer with multiple subsidiaries, grant the role access to all subsidiaries and check the cross-subsidiary record
viewing permission box. In the Subsidiaries Restrictions section of the role page, set accessible subsidiaries to ALL.
2. Make a note of the role's Internal ID.If the internal ID does not show, navigate to Home > Set Preferences > General > Defaults > Show Internal IDs and
select T.
3. Create a new user in NetSuite called Adaptive Planning Integration and assign this user the Adaptive role.
4. Navigate to Integration > NetSuite Setup in Adaptive Planning.
5. Select Update Import User.
6. Enter the Adaptive Planning Integration user's authorization details. To view the account ID in NetSuite, navigate to Setup > Integration > Web Service
Preferences. The role ID is the Internal ID you noted earlier.

Reset the Integration Setup


Once the NetSuite Integration has been successfully completed, a Reset Connection button appears at the bottom of the screen. Click this button to disable the
NetSuite integration and prevent data from transferring from NetSuite into Adaptive Planning. Resetting the integration does not delete any mappings or previously
imported actuals.

You can restore an integration by re-entering authentication information in the NetSuite Integration Setup page described earlier.

Set Up NetSuite Category Configuration


1. Go to nav menu > Integration > NetSuite Category Configuration.
2. Select the Netsuite Import Category Mappings at the bottom of the page.
3. Map the in-use NetSuite categories to their corresponding Adaptive Planning dimensions before performing the first import from NetSuite.

An administrator can specify how NetSuite categories (e.g. Subsidiary, Department, Class, etc.) relate to dimensions in Adaptive Planning (e.g. Account, Level,
etc.). The associations established here let you map:

A one-to-one relationship of a NetSuite category to a single dimension in Adaptive Planning


Multiple NetSuite categories to a single dimension in Adaptive Planning
A single NetSuite category to more than one dimension in Adaptive Planning

Mappings determine what choices the person importing gets during the import process or from the NetSuite Category Mappings page. Mappings don't need to
change often, if at all.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 200/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

If multiple NetSuite categories are associated with a single Adaptive Planning dimension, the values in those categories get concatenated and mapped as
though they were one category. Example: If Department and Location are both associated with Level, then the import mapping screen will display choices
like Engineering US or Sales London.
If a single NetSuite category is associated with two Adaptive Planning dimensions, the mapping appears for both dimensions. Example: If Class is
associated with both Region and Product, then the import mapping screen will display both dimensions, allowing the user to map Americas: Product A to
Americas in one instance and Americas: Product A to Product A in another.

Configure NetSuite Categories

1. Select the corresponding dimension for each category in the drop-down lists to map NetSuite categories to Adaptive Planning dimensions. The drop-downs
display Account, Level, and any custom dimensions for your model. If multiple NetSuite categories map to one Adaptive Planning dimension, select that
same dimension in the drop-down list for those categories.
2. Select Add next to the drop-down list to associate a category with multiple dimensions. Up to three additional drop-down lists can be added for each
category, for a total of four dimensions assigned to that category.
3. Click Save when you finish.

Configure NetSuite Category Mappings Values


After you complete the category configuration, the NetSuite Import Category Mappings link navigates to the mapping page. The user importing can specify
mappings between the NetSuite category values and the Adaptive Planning model dimension values. This list remains empty until an import.

Import from NetSuite


Once the NetSuite integration and category configurations have been completely set up, the import user can perform imports from NetSuite on the Import tab in
their Adaptive model.

1. Log into Adaptive Planning.


2. Go to nav menu Integration > Import Data.
3. Select Actuals under Import Type.
4. Select NetSuite Actuals under Import From.
5. Standard gets selected by default under Import into Sheet.
6. Select the time range you want to import under Time Periods to Import.
7. Click Import.
8. Set up mappings you want in the Category Mappings page.
9. Click Continue.
10. The Results of Import page loads after the import completes, indicating if the import succeeded.

Export to NetSuite
Administrators can configure Adaptive Integration to export budgets into NetSuite.

Required Permissions
Administration > General Setup > Integration and NetSuite Basic

Administration > Permission Set edit the user who exports and select Export Capabilities and Export Budgets to NetSuite.

Select NetSuite As the Export Target


Once NetSuite Basic gets enabled, users with the Export Budget to NetSuite permission can export to NetSuite or a CSV file.
Note: If NetSuite Basic is enabled but not configured, the Output Target section appears but the NetSuite checkbox is disabled. If NetSuite Setup isn't configured,
the NetSuite Category Configuration link appears.

1. Set up the NetSuite Category Configuration described earlier if you didn't already.
2. Go to Integration > Export Data.
3. Select NetSuite for the output target.
4. Select the budget category in NetSuite you want to export to.
5. Select one or more fiscal years in NetSuite you want to export to.
6. Select Export.

Drill Through
When you view a sheet in Adaptive Planning or Cell Explorer window containing an actuals number mapped for importing from NetSuite, you can drill down into the
number. This launches a NetSuite report detailing the transactions that comprise the number.

The NetSuite Basic check box in Administration > General Setup enables the Drill into NetSuite Imported Numbers permission you can grant to any
permission set.

The drill behavior depends on whether or not the Adaptive Insights for Netsuite bundle (from the NetSuite Bundle Marketplace) has been installed in your NetSuite
installation. If the bundle has been installed, be sure to go to the NetSuite Integration Setup page and check the Adaptive Insights for Netsuite bundle installed
check box.

Requirements for Drilling

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 201/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

In NetSuite, install the NetSuite Bundle 30441 for drill-though.


Once data imports from NetSuite, users with the right permissions can drill into the NetSuite data from Adaptive Planning.

Read more about requirements for drill through to NetSuite here.Without the Adaptive Insights for Netsuite Bundle

If the Adaptive Insights for Netsuite bundle was not installed in NetSuite, the Drill Through to NetSuite option will appear in the right-click menu only when all of
the following are true:

The user has a permission set that includes Drill into NetSuite Imported Numbers.
The NetSuite Integration Setup succeeded and the NetSuite connection is configured.
The right-clicked number belongs to the actuals version.The number is not the result of a formula; it must be either a raw piece of data or a rollup of such
data, and that data was imported from NetSuite.
The number is for a timeslot that maps to at least one NetSuite accounting period.
The number is for an account that is a target of a NetSuite Import Account Mapping.
The number is not in a cube account. (Linked accounts which are linked to cube accounts, but are showing their own actuals numbers, can be drilled
through.)
The number is on a level which fulfills at least one of the following requirements:
The level is the Top Level.
The level is included in the NetSuite Import Organization Mapping.
If the number is on a split, then all dimension values assigned to the split (other than blank or Any values) are included in one or more NetSuite
Import Dimension Mappings.
The number maps to at most one value for each NetSuite category.

With the Adaptive Insights for Netsuite Bundle


If the Adaptive Insights for Netsuite bundle has been installed in NetSuite, the Drill Through to NetSuite option requirements are less restrictive:

All other requirements stay the same.

To be more specific, the Drill Through to NetSuite option appears in the right-click menu only if all of the following are true:

The user has a permission set that includes Drill into NetSuite Imported Numbers.
The NetSuite Integration Setup succeeded, and the NetSuite connection is configured.
The right-clicked number belongs to the actuals version.
The number is not the result of a formula; it must be either a raw piece of data or a rollup of such data. If a rollup, at least one of the pieces of data in that
rollup must have come from NetSuite, but not necessarily all of them.
The number is for a timeslot that maps to at least one NetSuite accounting period.
The number is for an account that is a target of a NetSuite Import Account Mapping.
The number is not in a cube account. (Linked accounts which are linked to cube accounts, but are showing their own actuals numbers, can be drilled
through.)
The number is on a level which fulfills at least one of the following requirements:
The level is the Top Level.
The level is included in the NetSuite Import Organization Mapping.
If the number is on a split, then all dimension values assigned to the split (other than blank or Any values) are included in one or more NetSuite
Import Dimension Mappings.
The number maps to at least one value for at least one NetSuite category.

If the coordinates being explored or visited were mapped from NetSuite at all, then the Drill Through to NetSuite option shows. A mapping does not need
to be exactly one-to-one.
Drilling on rollups is allowed when at least one of the leaf cells included in the rollup got mapped from NetSuite. Not all cells included in the rollup need
mapping.

Drilling from a Sheet


A sheet can display actuals values when either:

The actuals version has been chosen in the View Selector


The chosen plan version displays some months of actual data

Either way, a right-click on an actuals number opens a menu including the choice, Drill Through to NetSuite.

Select Drill Through to NetSuite from the right-click menu to launch a NetSuite transaction report in a new browser window. If you haven't logged in yet to
NetSuite, you get prompted to log in.

After log in, either the NetSuite Profit and Loss Detail report or the NetSuite Balance Sheet Detail report shows up, depending on the selected number. The Profit
and Loss Detail report shows if the drilled number is in a NetSuite account of type Expense, Income, Other Income, Other Expense, Non-Posting, or Cost of Goods
Sold. All other account types launch a Balance Sheet Detail Report.

You can click on anything NetSuite allows and drill into whatever detail NetSuite provides.

Note: If the number being drilled into was changed in Adaptive Planning, it may no longer match what was originally imported from NetSuite. The number in
NetSuite may have changed at some time after it was imported into Adaptive Planning. In these cases, the NetSuite report reflects a different number than the
number you drilled into in Adaptive Planning.

Drilling from Cell Explorer


When a Cell Explorer window displays a number that satisfies rules described above, a Drill Through to NetSuite link appears in the upper left corner. This link
behaves identically to the Drill Through to NetSuite option in the right-click menu.

1.3.7 | Configure Drill Through to NetSuite

Drill Through to NetSuite requires:

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 202/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

1. Adaptive provisioning to enable any one of the following:


NetSuite Basic for your company.
Integration for your company.
Both NetSuite Basic and Integration for your company.
2. Within Planning you must:
a. Verify the bundle 30441 was installed in NetSuite.
For NetSuite Customer: NetSuite Basic - Complete the NetSuite Configuration within Planning's Integration > NetSuite Setup by checking
Enable Bundle-based Drill-through
b. Enable one of the following two choices in Planning Administration > General Setup:
i. Integration: NetSuite

OR

ii. NetSuite Customer: NetSuite Basic

c. Within Administration > Permission Set, enable Drill into NetSuite Imported Numbers for those users who need to drill.
Note: The Drill into NetSuite Imported Numbers permission is only available as a choice within P ermission Sets if either Integration: NetSuite
or NetSuite Customer: NetSuite Basic have been enabled within General Setup.

1.3.8 | Drill Through from Planning to NetSuite

This topic describes how you can enable drill through for actuals data imported using Adaptive Planning integration NetSuite Adapter.

Actuals data that is imported using the NetSuite adapter within Adaptive Planning integration can be made available for drill-through on Planning standard sheets
and the cell explorer within reports. Planning users can click on the drill-through URLs available on standard sheets and reports to navigate back to NetSuite and
view additional transactional information related to the actual value.

High-level Steps for Enabling Drill Through from Planning to NetSuite

Before getting started, ensure the Enhanced bundle-based drill-through checkbox is checked within Adaptive Planning Integration > NetSuite Setup menu.

1. Configure a NetSuite External System.

2. If you have multiple NetSuite categories mapped into the same Planning Dimension, revisit the NetSuite Data Source to add a tuple SQL column for a many-to-
one mapping of the columns.

3. After the above steps, configure a Planning Loader to import NetSuite actuals data.

Link a Profile to the External System you configured in step 1.


Attach this profile to the Planning Loader.

Refer to the Steps: Set up NetSuite Data Sources article, and the External Systems section of the Steps: Create Planning Data Loaders for full details on
configuring the NetSuite Adapter for Adaptive Planning integration for drill-through.

See: Steps: Set Up NetSuite Data Sources, Steps: Create Planning Data Loaders

1.4 | API Documentation


1.4.1 | API Documentation

Product documentation for REST APIs.

Current API Version: 31

The current version contains the cumulative changes of previous versions.

You must use v15 + of the Adaptive API if you use a custom calendar. See Set Up Calendars.

Note: With the release of API v15, the online API documentation pages indicate in-line version changes with Supported in API v15+, Supported in API v16+, etc. If a
method is completely new for a version, the version appears in a note at the top of the page. See API Changes by Release for details.

Previous API Versions: API Version 14, API Version 13, API Version 12

1.4.2 | Understanding the Adaptive Planning REST API

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 203/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

1.4.2.1 | Understanding the Adaptive Planning API

Product documentation overview for the Adaptive Planning API.

Adaptive Planning offers a rich API for use by our customers and partners. The API adheres to the principles of RESTful Web Services, providing a lightweight
interface through which users can access and manipulate data within their instance. The API accepts requests in the form of XML documents and returns XML
documents as responses. A small subset of our APIs also use JSON format with GET, POST, PUT, PATCH and DELETE Https requests. This REST API is a full-
featured data interface which allows users or client programs to retrieve data from versions, import data into various sheets, and read information about the
customer metadata such as versions, accounts, organizational levels, and users. Each API call is individually authenticated to ensure that the user invoking the API
call has the permission to perform the action and access the data being requested

1.4.2.2 | Adaptive Planning REST API

The Basic REST API Approach


The Adaptive Planning API has three general areas:

Metadata Retrieval and Manipulation


Data Retrieval
Data Creation/Updating

A client can invoke an API call by sending an HTTP POST request to the main Adaptive Planning web services endpoint. The endpoint has appended to it a version
number indicating which version of the API is being invoked. The current version of the Adaptive Planning API is v31:

https://api.adaptiveinsights.com/api/v31

API Versions are generally updated when new releases of Adaptive Planning products are published, though not all releases of products will result in a new API
Version. The current version will continue to be supported for at least one year after the release of the subsequent version of the API.

To see a history of API changes, see API changes by release.

The HTTP POST request will contain post data, which itself will be an XML document. This XML document contains some standard sections that are present on
every API method call and some other sections that are specific to each API method call. The Adaptive Planning server will process the API method call and return
the results as another XML document. Like the request, the response XML document has some sections that are the same for each API method and some sections
that are specific for each API method.

All data retrieval is done in the form of a search. The caller specifies some criteria to match some number of elements, and the server responds with a list of
metadata entities or data that match those criteria. Data creation and updating is done in the form of a bulk upload of data, also submitted via a POST directive.

Security
All API requests are stateless, single-action requests. The user must be authenticated on each separate invocation, so there is no possibility of an intruder
attempting to hijack any existing web service session.

All API requests are encrypted, as they are required to be performed using the https web protocol. The authentication credentials of the user performing the action
are transmitted to Adaptive Planning as part of the body of the web services request. This means that a user's login ID and password are encrypted by the web
layer before they leave the computer generating the web services request, and are only decrypted once received by the target server.

Authenticating a user in an API request does not create a persistent session for this user each separate web service call must authenticate its user separately.

Permissions and Data Access Control


There is no special permission required for a user to be able to access web services. However, the user making the web service request must have the required
permissions to actually perform the action being requested. For example, to call the importStandardData web service method, a user must have the Import
permission.

In addition, the web service methods restrict the output of each call to the set of data visible to the user making the request. For example, the exportData web
service method limits the data returned to the data found on the set of levels owned by the calling user.

1.4.2.3 | API Changes by Release

2021R2
(October 2021)

The following specific APIs now support level, dimension, and attribute codes for display names when:

You enable display names for your instance by contacting Workday Adaptive Planning Account Provisioning.
You call API v30 or higher.
You enable displayNameEnabled per call (see each API documentation page for details).

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 204/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Updated: updateLevels, updateDimensions, updateAttributes requests now accept code and name and continue to use id as the key.
code and name are required when you create dimension values, attribute values, and levels.
Updated: updateLevels, updateDimensions, updateAttributes responses now return name, code, displayName and displayNameType.
Updated: importDimensionMapping requests accept:
id and name for dimension.
id and code for levels and dimension values.
Updated: exportDimensionMapping requests filtering:
keyword value as a partial match on the display name.
level uses code instead of name.
dimensionValue uses code instead of name.
Attribute value refers to code, instead of name.
Updated: exportDimensionMapping responses return id, name, code, display name for levels and dimension values.
Updated: exportLevels, exportDimensions, and exportAttributes responses now return name, code, displayName, displayNameType.
Updated: importStandardData, importCubeData, importConfigurableModelData, and importTransactions request:
Header row Level changes to Level Code.
Header row Account changes to Account Code.
Header row Dimensions change to "<dimension> Code" and "<dimension> Name". "<dimension> Code" is required. "<dimension> Name" is
only allowed when "Data import automatically creates dimension values" is enabled for a dimension.
Localization is supported in the column header for the text "Code", "Name", and "Display Name".
useMappings=false uses code in the system.
useMappings and displayNameEnabled can't be true at the same time.
Updated: exportConfigurableModelData (requires API v31) requests :
level element no longer supports name in API v31+.
level element adds support for code.
modeled-sheet element adds support for includeCodes, includeNames, and includeDisplayNames with true/false options that apply to all
dimension values and levels in the call. At least one of these three options must be true.
Updated: exportConfigurableModelData responses:
Includes columns for "<dimension> Code", "<dimension> Name", and "<dimension> Display Name"
Localization is supported on the column header for the text "Code", "Name", and "Display Name".
Updated: exportData requests:
level element no longer supports name in API v30+.
level element adds support for code.
level will match code in the system.
dimensionValue element no longer supports name in API v30+.
dimensionValue adds support for code.
dimensionValue will match code in the system.
Updated: exportData responses:
Includes columns for "<dimension> Code", "<dimension> Name", and "<dimension> Display Name"
Includes columns for "<level> Code", "<level> Name", and "<level> Display Name"
Localization is supported on the column header for the text "Code", "Name", and "Display Name".
Updated: eraseData requests:
level element no longer supports name in API v30+.
level element adds support for code.
level will match code in the system.

Introduction of API v31

(September 2021)

Updated: importConfigurableModelData, importTransactions, importCubeData, and importStandardData error out when the number of pipe
characters in the header and the data don't match.
Updated: updateAccessRules now requires the Users permission to invoke it, instead of the Admin permission.
Updated: updateAccounts now allows creating a new parent account between an existing parent and its child accounts.

(August 2021) Introduction of API v30

Updated: updateAttributes, updateDimensions, updateLevels no longer support Unicode white space characters within name and shortName. Refer to
https://docs.oracle.com/javase/7/docs/api/java/lang/Character.html#isWhitespace(char) for disallowed white space characters. A single space is allowed
between words in name and shortName.

2021R1
(May 2021) Introduction of API v29

Updated: updateAccounts requests now allow creating new accounts with dataEntryType=CUBE. Adaptive Planning automatically calculates the
dataEntryType for any non-leaf accounts. If the parent dataEntryType is CUBE, new accounts will default to dataEntryType=CUBE. Otherwise, new
accounts default to dataEntryType=STANDARD. Changes to dataEntryType for non-leaf accounts are ignored.
Updated: UpdateAccounts responses indicate dataEntryType for all leaf accounts as either CUBE or STANDARD.

(April 2021) Introduction of API v28

Updated: exportVersions responses now include isPredictive=true in the version element to indicate predictive versions.
Updated: createUser requests now include alternateEmail and samlFedId. Use alternateEmail to set an alternate email, which we automatically
select as the user's email in the User Details section. Use samlFedId to include the SAML federation ID for the user for single sign-on.
Updated: updateUser requests now include alternateEmail and samlFedId. Use alternateEmail to set an alternate email, which we automatically
select as the user's email in the User Details section. Use samlFedId to include the SAML federation ID for the user for single sign-on.
Updated: exportUsers responses now include alternateEmail and samlFedId.

(March 2021) Introduction of API v27

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 205/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Updated: updateAttributes and updateDimensions requests include retainExistingOrder for indicating if the payload order is ignored to maintain the
order Adaptive Planning already uses for hierarchies. If false, the order of the payload determines how Adaptive Planning will order elements.
Updated: updateLevels requests now set the default value of retainExistingOrder to 1.
Updated: updateAccounts requests now set the default value of retainExistingOrder to 1.
Updated: importModeledSheet requests now include requiredColumn for indicating if a dimension value must be provided for users to save the modeled
sheet. You must ask Adaptive Planning support to enable requiredColumn for importModeledSheet requests.
Updated: exportModeledSheet responses now include requiredColumn for indicating if a dimension value must be provided for users to save the modeled
sheet.

Introduction of API v26

Updated: updateAccounts and updateLevels requests include retainExistingOrder for indicating if the payload order is ignored to maintain the order
Adaptive Planning already uses for hierarchies. If false, the order of the payload determines how Adaptive Planning will order elements.
Renamed: For all v26 APIs, permissionSetId replaces roleId with the renaming of Roles and Permissions to Permission Sets in Adaptive Planning.
New: updateAssociations for setting user dimension and level associations. Alternatively sets user level ownership for levels when code is not included in
the Association element.
Removed: roleID is no longer supported in APIs v26 and newer. APIs v25 and older continue to support roleID.

2020R2
(February 2021) Updated: eraseData requests ignore the case of the Accounts and Levels tags.
(December 2020) Updated: updateDimensions request replaces newline characters found in the dimensionValue name of a payload with a blank space.
Preceding or trailing newline characters in the name become spaces that get trimmed during payload processing.
(December 2020) Updated: updateDimensions request now handle multiple renames of the same entity in the same updateDimensions call. This helps
resolve an issue when names swap more than once in a remote system between synchronizations into Adaptive Planning.

Introduction of API v25

Updated: exportData request no longer includes includeRollups. Request includes boolean includeRollupAccounts for account rollups and
includeRollupLevels for level rollups.

Introduction of API v24

Updated: updateLevels request includes publishCurrency for indicating the currency when publishing a Financial Plan to Workday Core Financials.
Updated: exportLevels response includes publishCurrency for indicating the currency when publishing a Financial Plan to Workday Core Financials.
Updated: exportInstances response includes notificationType for indicating Workday tenant notification setting when Adaptive Planning is set up for
Workday.
Updated: exportData request includes stratum for indicating the code of the time stratum for the exported data. When specified, the start and end time
periods must fall within the time stratum. The time stratum must be equal to or greater than the account with the highest time stratum in the request.
Updated: exportData: When includeZeroRows=false, rows with a combination of only blanks and zeroes will not output in the response, even if
markBlanks=true.
New: eraseData for erasing plan and actuals data. Provides the same capabilities as eraseActuals but also includes the ability to erase Plan data, with
additional control over specific account-plan combinations that are targets.
New: updateAccessRules for updating access rules in-bulk by uploading a multipart xml document containing an .xslx formatted for the Access Rules
template.

2020R1
Introduction of API v23

Updated: importConfigurableModelData request includes importKey for indicating the dimension or level to map import rows to the modeled sheet rows
you want to update.
Updated: exportUsers and exportLevels requests can include the boolean groups so that responses include groupIds. GroupIds contain a comma-
separated list of all groups the level or user belongs to. The groups attribute defaults to false.
New: (Available only with sales planning.) exportDimensionMapping export user-defined dimension mapping rules.
New: (Available only with sales planning.) importDimensionMapping update existing user-defined dimension mapping rules.

2019.3
Introduction of API v22

Updated: exportConfigurableModelData request includes the new optional property useNumericIDs to remove the S prefix from split IDs, returning only
numeric values.
If your company transitions to Access Rules for security, exportAccounts, exportActiveCurrencies, exportAttributes, exportDimensions,
exportLevels, exportTime, and exportVersions will only validate on API v22. The response will contain only what the user indicated in the
credentials element has access to.
Updated: updateDimensions includes the new optional properties element for a dimensionValue that can contain up to five property elements. Each
property element includes a name and value. The value must be numeric.
Updated: exportDimensions response includes the new properties element.
Updated: exportSheetDefinition cube sheet response includes the account code and name within the account element.
Updated: exportSheetDefinition cube sheet response includes the dimension name within the dimension element.
Updated: exportSheetDefinition cube sheet response includes the attribute name within the attribute element.
Updated: exportConfigurableModelData request includes the new optional includeAllColumns in the modeled-sheet element so that the response
includes all columns.
Updated: exportConfigurableModelData response now indicates numberOfPages instead of pageCount in the job element.
Updated: exportInstances response now indicates if an instance allows Admin Publishing in the options attribute.
Removed: rootActuals is no longer supported for exportVersions regardless of API version.

2019.2

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 206/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

(September 2019) New: exportSecurityAudit returns a report of all security events in a specified time range.

2019.1
Introduction of API v20

Updated: exportInstances includes workdayTenantId, workdayEnvironment, workdayUiUrl, and workdayRestUrl information for instances with
Workday Power of One enabled.
New: updateAccounts for updating/creating accounts in-bulk. Manage accounts and their properties. Allows reparenting of existing accounts.
New: updateAttributes for updating/creating attributes in-bulk. Manage attributes and their attribute values. Allows reparenting of existing attribute values.
Updated: exportAttributes includes the the autoCreate boolean property to indicate if importing dimensions, levels, accounts, or attributes automatically
creates new attribute values not found Adaptive Planning.
Updated: exportInstances includes workdayTenantID, workdayEnvironment, workdayUiUrl, workdayRestUrl for instances with Workday Power of
One enabled.
Removed: Single-entity APIs for createDimension, updateDimension, createDimensionValue, updateDimensionValue, createLevel, and
updateLevel. Use the metadata bulk APIs of updateDimensions and updateLevels for single-entity creation or update in API v20 and beyond.

2018.3
Introduction of API v19

New: updateLevels for updating/creating levels in-bulk. Manage levels and their attribute values. Allows reparenting of existing levels.
New: exportConfigurableModelData for exporting modeled sheet rows.

2018.2
Introduction of API v18

Removed: exportLevels no longer contains inaccessibleLevels attribute in the request. See the new inaccessibleValues.
Removed: exportUsers no longer contains options for hiddenVersions and ownedLevels.
Removed: exportAccounts no longer contains the formula attribute.
New: exportAccounts, exportAttributes, exportDimensions, and exportLevels include the new inaccessibleValues attribute in the request
so that only users with the appropriate permissions can view inaccessible values.
Updated: exportAccounts, exportAttributes, exportDimensions, and exportLevels only show accessible values by default. Only users with
appropriate permissions can view inaccessible values.
Updated: exportAccounts, exportDimensions, and exportLevels include element versionName and versionID attribute in the request call will
only succeed if the user has access to the version.
Updated: exportAccounts the name "GL" is now "GL Accounts" to match how reports named this account.
Updated: exportActiveCurrencies response is now ordered by code.
Updated: exportTime version element option attribute for a single version in the request will only succeed if the user has access to the version.

2018.1
Introduction of API v17

Removed: updateUser removed from all API versions March 2018


Updated: exportActiveCurrencies contains a userDefined attribute to identify which currencies are user-defined.
New: API updateDimensions for updating/creating dimensions in-bulk by uploading an XML document

2017.3
Introduction of API v16

Updated: response formats of exportAccounts, createAccount, updatedAccount display the time stratum code of each account in the timeStratum field
Updated: eraseActuals only accepts time periods at the same time stratum as the input account type for API v15 +
Updated: eraseActuals uses the phrasing "time stratum" instead of "granularity"
Updated: request format of importModeledSheet includes optional strata-code
Updated: response format of exportModeledSheet includes optional strata-code
Added: inUse and isDefault property to stratum element in exportTime
Added: optional leafStratumId property to the request format of exportTime
New: API recalculateSheet for recalculating sheets that have the Recalculate on demand property

2017.2
Introduction of API v15

Companies are only upgraded from API v14 to API v15 if they import a custom calendar in the Time Administration UI.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 207/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Removed: calendar-related attributes for exportInstances calendarType, q1FirstMonth, lastMonthIsFY, firstDayOfWeek, periodAlgorithm,
leapWeekPeriod, and extraPeriodQuarter attributes from instance element
Updated: exportTime significantly overhauled
Updated: exportData the behavior of start and end attributes use time period codes instead of MMM-YYYY date strings.
Updated: exportData output date headers changed to time period codes.
Updated: exportVersions to replace attributes startVerFY, completedValuesThruYr, completedValuesThruMon, completedValuesThruPer,
startScrollYr, startScrollMon, startScrollPer, endVerFY, lockLeadingYr, lockLeadingMon, lockLeadingPer, leftScrollFY,
startPlanYr, startPlanMon, startPlanPer, endPlanFY with startVer, endVer, startScroll, completedValuesThru, leftScroll,
startPlan, endPlan, lockLeading
Updated: importStandardData, importConfigurableModelData, importCubeData accept time period codes instead of MMM-YYYY date strings
Updated: exportLevels modified the format of the availableStart and availableEnd attributes output time period codes instead of MMM-YYYY date
strings.
Updated: eraseActuals behavior of attributes start and end to use time period codes instead of MMM-YYYY date strings
New: API exportLocales for exporting the locales from the Time Administration UI.

2017.1
Introduction of API v14

Updated: customReportValues includes a new optional element suppress-rollups


New: API exportModeledSheet
New: API importModeledSheet

2016.3
Introduction of API v13

Updated: exportAccounts includes a new optional element sheet


Updated: exportLevels includes a new optional element sheet
Updated: exportLevels includes a new optional response element hasChildren
Updated: exportVersions includes a new optional element include

2016.2
Introduction of API v12

Updated: importCubeData, importStandardData, importConfigurableData, importTransactions context information that is part of their error
messages can be disabled using the attribute includeContext.

2016.1
Introduction of API v11

Removed: canBeTree attribute from exportDimensions


Updated: exportInstances includes new datasources attribute
Updated: exportInstances includes new potential value INTEGRATION to products attribute in the instance element
Updated: exportLevels includes new attributeId and valueId to attribute element
Updated: exportLevels includes new isLinked and isElimination attributes to level element
Updated: exportDimensions includes new attribute and attributes elements as descendants of dimensionValue element
Updated: exportDimensions includes new listDimension, keepSorted, and useOnLevels attributes to dimension element
Updated: exportSheetDefinition includes new required attribute to levels, text, dimension, text-selector, number, date, initial-
balance, level-currency, display, timespan elements of modeled-sheet
Updated: exportSheetDefinition includes new attribute element for cube sheets
Updated: exportSheetDefinition includes new split-column-title and allow-splits attributes to modeled-sheet element
Updated: Import data APIs (importCubeData, importStandardData, importConfigurableModelData, importTransactions) now have context
information as part of their error messages
New: API createDimension
New: API updateDimension
New: API updateDimensionValue
New: API createLevel
New: API updateLevel

1.4.2.4 | API Methods

1.4.2.4.1 | API Methods

API Methods
The following methods are supported in the Adaptive Planning API:

Metadata and Data Create, Update, and Read Methods

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 208/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

createAccount : lets users create new GL, Custom, or Assumption accounts


createDimension : lets users create new dimensions.
createDimensionValue : lets users create new dimension values.
createLevel : lets users create new levels.
createUser : lets users create new users
customReportValues : returns a set of data for the requested report criteria in the requested instance
exportAccounts : retrieve metadata about accounts in the system
exportActiveCurrencies : retrieve metadata about currencies which have been configured in the system
exportAttributes : retrieve metadata for all custom attributes in the system
exportConfigurableModelData : retrieve a set of rows from the requested modeled sheet in the requested version and instance.
exportCustomerLogo : retrieve a URL that can be used to retrieve the Customer Logo
exportData : retrieve a set of values from a specified version
exportDimensionFamilies : retrieve metadata about how dimensions are related to the accounts in the system
exportDimensions : retrieve metadata about custom dimensions in the system
exportDimensionMapping : export user-defined dimension mapping rules.
exportGroups: retrieve the complete list of all groups defined for the given instance.
exportInstances : retrieve metadata about the instances to which a user has access (if the user has access to multiple instances)
exportLevels : retrieve metadata about organization levels in the system
exportLocales : Returns a list of all locales for a company.
exportModeledSheet : returns the definition of the given modeled sheet
exportRoles : retrieve metadata about roles in the system
exportPermissionSet : retrieve metadata about permission sets in the system
exportSecurityAudit : retrieve security event audit logs for a specified time range
exportSheetDefinition : retrieve the definition of a modeled or cube sheet
exportSheets : retrieve a list of all sheets with type, id and name
exportTime : returns time metadata either for a specific version, or for all versions if none is specified
exportTransactionDefinition : retrieve the definition of the transaction sheet
exportUsers : retrieve metadata about users in the system
exportVersions : retrieve metadata about versions in the system
importDimensionMapping : imports derived dimension values.
importModeledSheet : imports the given modeled sheet
publishChanges : lets users publish any unpublished changes
unpublishedChangesStatus : lets users determine if admin publishing is enabled, as well as how many unpublished changes they have
updateAccessRules : lets users update access rules for instances that use access rule security.
updateAccount : lets users update the properties of existing GL, Custom, or Assumption accounts
updateDimension : lets users update properties of existing dimensions.
updateDimensionValue : lets users update properties of existing dimension values.
updateLevel : lets users update properties of existing levels.
updateUser : lets users update user information (does not function once users synchronize from Workday).

Metadata Bulk Update

updateAccounts: lets users update GL accounts in-bulk by uploading an XML file.


updateAttributes: lets users update attribute values in-bulk by uploading an XML file.
updateDimensions : lets users update dimensions and dimension values in-bulk by uploading an XML file.
updateLevels : lets users update levels in-bulk by uploading an XML file

Data Submission Methods

importConfigurableModelData : submit a set of rows for a modeled sheet


importCubeData : submit a set of data to be inserted into a cube sheet
importStandardData : submit a set of data to be inserted into standard accounts (GL accounts, assumptions, or custom accounts)
importTransactions : submit a set of transactions to be inserted into the transactions data, if the transactions feature has been enabled
eraseActuals : erase numeric data in specified time periods and accounts of an actuals version.
eraseData: erase numeric data from a plan or actuals version for the specified set of accounts for a given time frame.
recalculateSheet : recalculate sheets with the Recalculate on Demand property.

1.4.2.4.2 | Internal IDs Reference

You can include internal ids in an API Request to obtain metadata for the create, update, and read methods. When you make requests for these methods, use the
associated Export API calls to get the IDs your request requires. The Requests for all the APIs in the table below require a credentials element.

Example
You must pass the Dimension ID to update a dimension in the updateDimensions API Request. You can pass the Dimension ID "7" to update the dimension "
Education".

<dimensions>
<dimension id="7" name="Education" shortName="" autoCreate="0" listDimension="1" keepSorted="0" useOnLevels="0">
--------------------------
</dimension>
</dimensions>

Dimension ID "7" for "Education", is obtained from exportDimensions API Response.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 209/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

<response success="true">
<output>
<dimensions>
<dimension id="7" name="Education" shortName="" autoCreate="0" listDimension="0" keepSorted="0" useOnLevels="1" seqNo="35">
--------------------------------------------
</dimension>
</output>
</response>

Export APIs and Response Ids

API Adaptive Planning Internal Ids in Response Metadata Retrieved

exportAccounts Account ID and Account attribute ID List of all accounts, including all account types: Assumptions,
Cube Accounts, Custom Accounts, GL Accounts, Metric
Account Ids can be used to identify accounts in other API
Accounts, and Modeled Accounts.
calls, such as exportDimensionFamilies.

Sheet Element is optional. If you include the sheet element,


you must pass the the internal system ID for the sheet in
your request. See exportSheets.

exportActiveCurrencies List of all currencies which have been configured in the


Currency ID
system.

This can be used to uniquely identify the currency, and can


be used in customReportValues API.

exportAttributes Attribute ID and attributeValue element ID List of all attributes in the system.

exportDimensions List of all dimensions in the system.


Dimension ID and its dimensionValue element ID

This can be used to identify dimensions in other API calls,


such as exportDimensionFamilies.

exportGroups User group Id and user Id who owns this user group (only List of all groups defined for the given instance. This includes
set when isGlobal="false"). those groups defined for global across the whole instance and
those groups defined by users.

exportLevels Level ID List of all organization levels in the system.

List of all permission sets in the instance.


exportPermissionSets Permission Set ID

Available in API v25+. This is used to identify the permission set assigned to a
user in the exportUsers API call.

List of all roles in the instance.


exportRoles Role ID

Available in API v25 and This is used to identify the role assigned to a user in the
earlier. exportUsers API call.

Not available in API v25+.

exportSheets List of all sheets defined for the given instance. This includes
Sheet ID (can be standard , cube and modeled sheet
"incomplete" sheets as well as user-assigned sheets.
elements)

This can be used to identify sheets in other API calls, such


as exportSheetDefinition.

exportTime Initial balance time period ID Time metadata either for a specific version, or for all versions
if none is specified.

exportTransactionDefinition IDs for dimension, text-selector and value elements. The definition (available columns) of the transactions in the
instance.

exportUsers User ID and the role ID assigned to this user List of all users in the instance.

exportVersions An XML document describing the set of all versions defined in


Version or folder ID
the instance which are not hidden from the requesting user

All IDs are unique among all versions, sub-versions, and after verification.

folders.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 210/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

1.4.2.5 | Making Adaptive Planning API Requests with Workday Credentials

Some links in this article go to the Workday Community. If you don't have a Community account, request one.

Workday-synchronized users who log in to Workday and use the Adaptive Planning Worklet can run Adaptive Planning public APIs. Users must create an ISU
specifically for making these API requests. These users must provide a token in the credentials element of Adaptive Planning API requests instead of a
username and password. You can cache this token and use it until it expires. After it expires, you must get a new token.

Prerequisites
Workday Domain and Security Groups

Verify the ISU users who need API access are part of the Set Up: Adaptive Planning API Access security domain.

Workday Setup Tasks

Verify that Single Sign-On tasks are enabled within the User Sign-on tab in the Adaptive Planning tab.
Verify the Public API setup task is enabled within the Public API tab in the Adaptive Planning tab.
Verify an integration system user (ISU) setup task created an ISU specifically for making Workday Adaptive Planning API requests and mapped it to an
Adaptive Planning user account.

Adaptive Planning User Admin

Verify you see the ISU beginning with PublicAPIISU_ in the users list within Administration > Users.
Verify this user has the level access needed for the APIs they want to run. New ISUs don't receive level access by default.

Steps
1. Get a Certificate and Extract your Public Key.
2. Register an API Client in Workday with that certificate.
3. Generate a JWT Token, Retrieve Workday access_token, and Retrieve AdaptiveAPIAccessToken.
4. Use the AdaptiveAPIAccessToken in an Adaptive Planning API Request.

Get a Certificate and Extract your Public Key


You can create a certificate yourself or purchase a certificate from a well-known certificate authority. For the details on the parameters needed for your X.509
Certificate in Workday, see Concept: X.509 Certificates in Workday.

1. Extract the public key from your certificate for uploading to Workday.
2. Retain your private key for use in your calling application.
3. Paste the certificate into Workday when registering your JWT bearer token. Reference your private key in your script.

See OAuth with JWT (JSON Web Token) and Access External Endpoints.

Register a Workday API Client


1. Register an API Client with Client Grant Type: Jwt Bearer Grant in Workday. See Register an API Client for more information.
2. Copy the public key derived for your certificate into the x.509 Certificate in the Register API Client page in Workday.
3. For Scope (Functional Area) select Adaptive Planning.
4. For Redirection URL enter https://workday.com
5. When you finish registering the API client, copy the resulting fields at the bottom of the page to a text file to use later.
Workday REST API Endpoint
Token Endpoint
Authorization Endpoint

Generate JWT Token, Retrieve Workday access_token, and Retrieve AdaptiveAPIAccessToken


1. Use your private key and generate the JWT token by running pseudo code listed below.
2. To retrieve a Workday access token, make a POST request to the Token Endpoint, passing grant_type and assertion. Use the Token Endpoint copied
after registering your API client in Workday. Example Token Endpoint:

https://i-0b73e720dd1d2a041.workdaysuv.com/ccx/oauth2/super/token

Example CURL request to the Token Endpoint

curl --request POST 'https://i-0b73e720dd1d2a041.workdaysuv.com/ccx/oauth2/super/token' \


--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer' \
--data-urlencode 'assertion={{the jwt assertion from your certificate}}'

3. Retrieve the AdaptiveAPIAccessToken by calling the Workday endpoint using the Workday access token. Use the prior access_token value as the Bearer
token in the Auth header for this GET. Example Access Token:

https://i-0b73e720dd1d2a041.workdaysuv.com/ccx/api/planning/v1/super/adaptiveAPIAccessToken

Example CURL request for the AdaptiveAPIAccessToken:

curl --request GET 'https://i-0b73e720dd1d2a041.workdaysuv.com/ccx/api/planning/v1/super/adaptiveAPIAccessToken' \


--header 'Authorization: Bearer {{the jwt assertion from your certificate}}' \
--data-raw ''

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 211/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

4. Call the Adaptive Planning API using the AdaptiveAPIAccessToken in the credentials element of the XML in an HTTP POST . Example:

curl -H "Content-Type: text/xml" -d '<?xml version='1.0' encoding='UTF-8'?><call method="exportLevels" callerName="a string that identifies your client app

Sample Java Application for Generating a JWT Token


This sample Java application generates a JWT token.

//**********************************************************************
//
// File: TestPublicAPISample.java
//
// Copyright 2004-2019 Workday Adaptive Planning.
// All Rights Reserved.
//
// This work contains trade secrets and confidential material of
// Workday Adaptive Planning and its use or disclosure in whole or in part
// without the express written permission of Workday Adaptive Planning is prohibited.
//
//**********************************************************************

import java.io.FileInputStream;
import java.security.KeyStore;
import java.security.PrivateKey;
import java.security.Signature;
import java.text.MessageFormat;
//import java.util.Base64;

import org.apache.commons.codec.binary.Base64;

public class AccessAdaptiveAPI


{
public static void main(String args[])
{
String jwtKeyStoreFileString = "/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/security/JWTkeystore.jks";
String clientIDString = "BlywNDM1NmMtZTk2Mi00NTZiTWEyZjktZWM1NGJiOGQ3Yjca";
String userIdString = "PublicAPIISU_Test";

System.out.println(GetAccessToken(clientIDString,userIdString,jwtKeyStoreFileString));
}

public void callAPI()


{

public String getAdaptiveAPIToken()


{
return "";
}

public String getJWTToken(String privateKey, String username)


{
return "";
}

public void callWorkdayAPI()


{

public static String GetAccessToken(String clientId, String userId, String jwtKeyStore) {

String header = "{\"alg\":\"RS256\",\"typ\":\"JWT\"}";


String claimTemplate = "'{'\"iss\": \"{0}\", \"sub\": \"{1}\", \"aud\": \"{2}\", \"exp\": \"{3}\"'}'";

try {
StringBuffer token = new StringBuffer();

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 212/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

//Encode the JWT Header and add it to our string to sign


token.append(Base64.encodeBase64URLSafeString(header.getBytes("UTF-8")));

//Separate with a period


token.append(".");

//Create the JWT Claims Object


String[] claimArray = new String[4];
//iss
claimArray[0] = clientId;
//sub
claimArray[1] = userId;
//aud
claimArray[2] = "wd";
//exp
claimArray[3] = Long.toString( ( System.currentTimeMillis()/1000 ) + 300);
MessageFormat claims;
claims = new MessageFormat(claimTemplate);
String payload = claims.format(claimArray);

//Add the encoded claims object


token.append(Base64.encodeBase64URLSafeString(payload.getBytes("UTF-8")));
//token.append(Base64.encodeBase64URLSafeString(payload.getBytes("UTF-8")));

//Load the private key from a keystore


KeyStore keystore = KeyStore.getInstance("JKS");
keystore.load(new FileInputStream(jwtKeyStore), "Workday123!".toCharArray());
PrivateKey privateKey = (PrivateKey) keystore.getKey("Workday", "Workday123!".toCharArray());

//Sign the JWT Header + "." + JWT Claims Object


Signature signature = Signature.getInstance("SHA256withRSA");
signature.initSign(privateKey);
signature.update(token.toString().getBytes("UTF-8"));
String signedPayload = Base64.encodeBase64URLSafeString(signature.sign());

//Separate with a period


token.append(".");

//Add the encoded signature


token.append(signedPayload);
return token.toString();
//System.out.println(token.toString());

} catch (Exception e) {
e.printStackTrace();
}
return "";
}
}

Sample C# Application for Generating a JWT Token


This sample C# application generates a JWT token that replaces the username and password in the credentials element of an Adaptive Planning API request.

This sample code requires a NuGet page. Required NuGet package: System.IdentityModel.Tokens.Jwt

var clientId = "BlywNDM1NmMtZTk2Mi00NTZiTWEyZjktZWM1NGJiOGQ3Yjca";//Client ID from workday API Client


var isu = "PublicAPIISU_Test"; //the ISU
var timeout = (DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() / 1000 + 300).ToString(CultureInfo.InvariantCulture);
var environment = "wd";
var pfxFilePath = @"C:\temp\JWTkeystore2.pfx";
var pfxPassword = "Workday123!";

var payload = new JwtPayload


{
{"iss", clientId},
{"sub", isu},
{"aud", environment},
{"exp", timeout },
};

var signingCredentials = new X509SigningCredentials(new X509Certificate2(pfxFilePath, pfxPassword), SecurityAlgorithms.RsaSha256); // the matching PKC
var jwtHeader = new JwtHeader(signingCredentials);

var secToken = new JwtSecurityToken(jwtHeader, payload);

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 213/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

var handler = new JwtSecurityTokenHandler();


var tokenToWorkday = handler.WriteToken(secToken);
Console.WriteLine(tokenToWorkday);

Use the AdaptiveAPIAccessToken in an Adaptive Planning API Request


Once you set up Workday for Adaptive Planning public API access, the credentials element of Adaptive Planning API requests use the AdaptiveAPIAccessToken
instead of a username and password. Basic authentication with username and password won't work. See Adaptive Planning REST API and API Methods for more.

Example AdaptiveAPIAccessToken in an Adaptive Planning API Request

<?xml version='1.0' encoding='UTF-8'?>


<call method="exportLevels" callerName="a string that identifies your client application">
<credentials token="ID eyJhbDci0iJSUzUxMiIsUmtpZCI6IdvcmtkYXlfa2V5In0.eyJpc3KiOiJXb3JrZGFZIiwiYXV0aF90aW1lIjoxNTczMTY3NjU2LBjzeXnfynnJd.bztQzBmHeTj1amnHA-r96T
<include versionID="3" inaccessibleValues="false"/>
<sheet id="3" />
</call>

1.4.2.6 | Request and Response Message Formats

Request and Response Message Formats


The Request
Every API method in the Adaptive Planning API expects the XML document in its body to have a structure that looks like the following:

<?xml version='1.0' encoding='UTF-8'?>


<call method="exportData" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd"/>
method specific data goes here
</call>

Here is a description of each of the relevant lines:

1. This line indicates that the subsequent data is XML encoded in UTF-8.
2. The <call> tag indicates which API method is being called using its method attribute. In this example, the API method is exportData. In addition, callerName
is a required attribute on the <call> tag. It identifies your client application to the system and is used for identification purposes when troubleshooting and
logging.
3. Every API method needs to authenticate the user making the call. This is typically done by providing a login name and password. Other attributes are
allowed to be specified here. See the documentation for each API function for more details on credentials.
4. Some API methods require additional data in the request. For example, the exportData method requires some criteria describing which time periods,
accounts, levels, etc, should be used when retrieving its data. This portion of the request will vary from method to method.
5. This is the closing tag for the call tag on line 2.

The Response
Every response from an API method will have the following structure:

<?xml version='1.0' encoding='UTF-8'?>


<response success="true">
<messages>
<message key="modeled-import-success">Personnel import successful. Rows imported: 100</message>
</messages>
<output>
... method output ...
</output>
</response>

Here is a description of the relevant lines:

1. Similar to the request, this line indicates the subsequent data is formatted as XML and encoded in UTF-8.
2. Each response is enclosed in a <response> tag. If the request was successful, the success attribute on the response tag is set to true. If the request was
unsuccessful, the success attribute is set to false.
3. Many API calls will return this optional <messages> block containing a list of server-generated messages. This block may not appear if the server had no
messages to return in response to the call. Error messages will always appear within the messages block.
4. Each message within the messages block has a key attribute identifying the type of message being transmitted. The message tag also contains the text of
the message from the server, including any return values, status values, or other standalone metadata about the success or failure of the request. A
response may contain an unlimited number of message tags.
5. The closing messages tag.
6. The actual output from the API method call, if any is returned, is enclosed in an <output> tag.
7. The actual output from the API method call will appear here. This output varies depending upon which method was called.
8. The closing output tag.
9. The closing response tag.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 214/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

1.4.3 | Metadata and Data Create, Update, and Read Methods

1.4.3.1 | createAccount

Category Metadata modification

Description Create an account in the system. This API either returns an error message when validation or creation fails, or it returns metadata for the
created account upon success. This API supports only the following account types: Assumption, GL Account, and Custom Account. It does
not support system or linked accounts.

Permissions Model for GL and Custom account. Assumptions for Assumptions.


Required To
Invoke

Parameters Credentials
Required On
Request

This method's request contains a credentials tag to identify and authorize the calling user. User must have Model or Assumptions permission to perform the account
creation. The XML request is validated for each field and against certain business logic. Error messages are returned as part of the response when the creation
fails. The operation may be halted and a warning message provided when a risky operation (one that would potentially have unexpected side effects on other
accounts or data) is detected; in which case, the request needs to be resubmitted with the attribute "ignoreWarnings" set to 1 in order to complete the account
creation.

Request Format
The request schema is provided in the Relax NG Compact format.

default namespace = ""

start =
element account {
attribute parentId { xsd:integer }, #id of the parent account the new account should roll up to
attribute name { xsd:string { maxLength="2048" minLength="1"} }, #Non-empty string with a maximum length of 2048 characters.
attribute isGroup { string "0" | string "1" }, #0=No, 1=Yes
attribute code { xsd:string { maxLength="2048"} }, #String with a maximum length of 2048 characters.
attribute description { xsd:string { maxLength="2048"} }?, #Potentially empty string with a maximum length of 2048 characters.
attribute shortName { xsd:string { maxLength="64"} }?, #Potentially empty string with a maximum length of 64 characters.
attribute exchangeRateType { xsd:string }?, #displayAs must be CURRENCY (only if multicurrency is enabled)
attribute hasSalaryDetail { string "0" | string "1" }?, #0=No, 1=Yes
attribute dataPrivacy { string "PRIVATE" | string "PUBLIC_TOP" | string "PUBLIC_ALL" }?,
attribute isBreakbackEligible { string "0" | string "1" }?, #0=No, 1=Yes
attribute proceedWithWarnings { string "0" | string "1" }?, #0=No, 1=Yes
element attributes{
element attribute{
attribute attributeId{ xsd:integer },
attribute valueId{ xsd:integer }
}*
}?
}

Example

<?xml version='1.0' encoding='UTF-8'?>


<call method="createAccount" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd"/>
<account
parentId="441"
isGroup="0"
name="Account Name"
code="Account_Code"
description="Account Description"
shortName="Short Name"
exchangeRateType="A"
hasSalaryDetail="1"
dataPrivacy="PRIVATE" >
<attributes>
<attribute attributeId="20" valueId="170" />
</attributes>
</account>
</call>

credentials element

Tag Name credentials

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 215/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

account element

Tag Name account

Description Specifies an account to create.

Attributes of the Element

Attribute Name Required? Value Example

parentId Y The internal system ID number for the account's roll-up-to account. 16

name Y The name of the account, as it appears on reports and sheets. Current
Assets

isGroup Y Whether to create an account group, 0 for no, 1 for yes. 1

code N The code of the account, alphanumeric characters and underscores only. Must be empty or not Cur_Assets
supplied if creating an account group.

description N The textual description of the account. Defaults to empty string. Total
current
assets

shortName N The short name for the account. Defaults to empty string. CA

exchangeRateType N Only present for instances with multicurrency enabled and for accounts with E
displayAs="CURRENCY". Possible values: any of the exchange rate type codes present in the
instance, as configured in Manage Currencies. "A"=Monthly Average, "E"=End of Month. Inherits
from parent if not set. If multicurrency is disabled or parent doesn't have an exchangeRateType, this
defaults to E for cumulative accounts and A for everything else.

hasSalaryDetail N Viewing splits of account requires salary detail permission. 0 for no, 1 for yes. Inherits from parent if 1
not set, or if parent does not have hasSalaryDetail, this default to 0.

dataPrivacy N Choose whether the value of account is private (PRIVATE), public at top level only (PUBLIC_TOP) PRIVATE
or public at all levels (PUBLIC_ALL). This defaults to PRIVATE.

isBreakbackEligible N Available as a weighting choice in breakback. 0 for no, 1 for yes. Applicable only for assumptions. 0
This defaults to 0.

proceedWithWarnings N Indicates whether the user wants to ignore warning messages and go ahead with the create 1
operation. 0 for no, 1 for yes. If there are warnings and proceedWithWarnings=0, then the account
will not be created. Set proceedWithWarnings=1 to create the account when there are warnings.

Contents of the Element

One optional attributes element if you want to add one or more account attributes associated with the account.

attributes element

Tag Name attributes

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 216/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Description Container for one or more account attribute elements.

Attributes of the Element

Attribute Name Required? Value Example

(none)

Contents of the Element

One or more attribute elements.

attribute element

Tag Name attribute

Description Represents one account attribute element.

Attributes of the Element

Attribute Required? Value Example


Name

attributeID Y The ID of the account attribute that was generated by the system. 20

valueID Y The unique ID of the account attribute value that was generated by the system. If this value is 0, then this 170
attribute will be removed from the account.

Contents of the Element

none

Response Format
These are examples of responses for successful and unsuccessful creating of an account.

Success Example

<?xml version='1.0' encoding='UTF-8'?>


<response success="true">
<messages>
<message type="WARNING" key="warning-unpublished-changes" values="" parentId="1">You have unpublished changes.
Your changes will not be visible every where until it is published.</message>
</messages>
<output>
<accounts>
<account id="1" code="AssetsChild" name="AssetsChild" timeStratum="month" description="Total Assets Child" displayAs="CURRENCY"
accountTypeCode="A" decimalPrecision="0" isAssumption="0" suppressZeroes="1" isDefaultRoot="1"
shortName="" exchangeRateType="E" balanceType="DEBIT" formula="" isLinked="0" owningSheetId=""
isSystem="0" isIntercompany="0" dataEntryType="" planBy="DELTA" timeRollup="LAST" timeWeightAcctId=""
levelDimRollup="SUM" levelDimWeightAcctId="" rollupText="" startExpanded="1" hasSalaryDetail=""
dataPrivacy="PRIVATE" isBreakbackEligible="" subType="CUMULATIVE" enableActuals="1" isGroup="0" />
</accounts>
</output>
</response>

Error Example

<?xml version='1.0' encoding='UTF-8'?>


<response success="false">
<messages>
<message type="ERROR" key="invalid-attributevalueid" values="-50" parentId="-50">Invalid account id: "-50"</message>
</messages>
</response>

response element

Tag Name response

Attributes of the Element

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true
warning messages in their response.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 217/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Contents of the Element

A single optional messages element and/or a single optional output element.

output element

Tag Name output

Attributes of the Element

(none)

Contents of the Element

A single accounts element. This output wrapper is standard on all API responses and encloses the valid output of any successful API call.

messages element

Tag Name messages

Description Container for one or more message elements.

Attributes of the Element

(none)

Contents of the Element

One or more message elements.

message element

Tag Name message

Description Represents a message being sent from the system back to the caller. Messages are used for error messages when requests do
not succeed, for warning messages when requests do succeed, and for confirmation messages upon success.

Attributes of the Element

Attribute Required? Value Example


Name

type Y Type is a way to identify the type of message. The different types are INFO, WARNING and ERROR. Type WARNING
ERROR means that this request was not processed.

key Y A key is a way to identify a particular message or type of message, useful for purposes of automated error logging warning-
and recovery in client programs. Keys do not change under different locales of requests, even when the language invalid-
of the message changes. Keys also are unlikely to change in the future due to wording adjustments or timespan-
terminology changes. start

values N When given, the values represent variables used in the message text. 199,12

parentId N When available, the ID of the new account's parent that was supplied in the request. 50

Contents of the Element

The text of the message. This text is in the language of the locale specified on the request (assuming that locale is supported). The text may also contain
variable information such as the number of rows which were processed, or the particular column or value that caused an error.

accounts element

Tag Name accounts

Description Container for one or more account elements.

Attributes of the Element

(none)

Contents of the Element

One or more account elements.

account element

Tag Name account

Description Represents a single account being returned in the response to an exportAccounts API call. If this element is directly
within the enclosing accounts element of the response (that is, it is not enclosed within another account element),

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 218/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

this account element represents a root account, an account which has no parent.

Attributes of the Element

Attribute Name Required? Value Example

name Y The name of the account, as it appears on reports and sheets. Current Assets

code Y The code of the account, as it appears when referenced in formulas. Cur_Assets

id N The internal system ID number for the account. This can be used to identify accounts in 16
other API calls, such as exportDimensionFamilies.

accountTypeCode N The letter code corresponding to the data type of this account.

Type Code Account Type Account Class

A Asset GL

B Current Asset GL

C Liability & Equity GL

CUBE Cube Cube

EN YTD Earnings/Loss GL

F Fixed Asset GL

G Cost of Goods Sold GL

I Income GL

J Non-Operating Income GL

K Cumulative Translation Adjustment System

L Liability GL

M Current Liability GL

MI Consolidation Percentages Predefined

MT Metric Metric

N Net Income GL

O Other Asset GL

Q Equity GL

R Long Term Asset GL

S Assumption Assumption

T Long Term Liability GL

W Modeled Modeled

X Expense GL

XR Exchange Rate Predefined

Y Non-Operating Expenses GL

Z Custom Custom

description N The textual description of the account, if any, as entered in Account Administration Total current assets

shortName N The short name for the account, if any, as entered in Account Administration CA

N The time stratum of the account, as the code of the time stratum. For Cube accounts, Month
timeStratum
Modeled accounts, and cube-entered GL accounts, the time stratum is determined by

Supported in API v16 the time stratum of their owning sheet. All other accounts use the default time stratum

+ set within the Time Admin UI.

displayAs N The account's output display setting: NUMBER, CURRENCY, or PERCENT. Only NUMBER
provided for accounts that have a Display As property in Account Administration.

isAssumption N Either "0" or "1", indicating whether the account is an assumption. This is set to 1 for 1

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 219/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

assumptions and exchange rate accounts.

suppressZeroes N Flag indicating whether the account allows users to suppress zeroes on sheets or not. 0 1
is disallowed, 1 is allowed. Only provided for accounts that have a Suppress Zeroes
property in Account Administration.

isDefaultRoot N Either "0" or "1", indicating whether the account or account group is a default root. 1

decimalPrecision N Number of decimal places to display for numbers in this account. Default is 0. The 0
special value of 99 is used to indicate a Linked Account that inherits the decimal
precision of its target. A value of -1 means the account is a currency account and uses
the precision of whichever currency it is displaying.

planBy N For Cumulative accounts, indicates whether the account is plan by balance (BALANCE) BALANCE
or plan by delta (DELTA).

exchangeRateType N Only present for accounts with displayAs="CURERENCY". Possible values: any of the E
exchange rate type codes present in the instance, as configured in Manage Currencies.
"A"=Monthly Average, "E"=End of Month.

isImportable N 1
Indicates whether the account is able to accept imported data. 0 means the account is
not importable and 1 is importable. Only present if versionName or versionId is
specified in the request.

Note: isImportable only indicates that an account is available for import in the specified
version, not that the user making the API call has the permission to import into the
version or account. Use exportVersions to see which versions are available to the user
for import.

balanceType N Indicates the balance type of an account, DEBIT or CREDIT. This attribute is empty if DEBIT
the account does not have an associated balance type. Only GL accounts have a
balance type.

dataEntryType N Indicates the data entry type of an account. Either STANDARD or CUBE. A blank value CUBE
indicates that data entry type is not applicable to an account. For example, a linked
account or a modeled account will have a blank data entry type.

timeRollUp N Indicates how the account behaves when rolled up over a time period. Can be SUM, SUM
WEIGHTED_AVERAGE, LAST, or AVERAGE. This will be empty for account groups
and metric accounts.

timeWeightAcctId N If this account has a timeRollup of WEIGHTED_AVERAGE, this will be the internal 133
system id number of the account from where the weights are determined. This will be
empty if no weight account exists or the account does not have a timeRollup of
WEIGHTED_AVERAGE .

hasSalaryDetail N Either 0 or 1 to indicate whether this account has splits that require the Access Salary 1
Detail permission to be viewed. This will be empty if not applicable to this account.

dataPrivacy N Indicates which levels the account's values are public on and able to be referenced in PRIVATE
other levels when writing formulas. Can be PRIVATE so that the account's values are
private, PUBLIC_TOP so that the account's values are public at only the top level, or
PUBLIC_ALL so that the account's values are public at all levels. Assumptions do not
have a dataPrivacy setting since they are always public.

subType N Indicates whether the account is PERIODIC or CUMULATIVE. If an account is periodic, PERIODIC
its value in a given month equals the net activity for the month. Examples include
revenue and expense accounts. If an account is cumulative, its value equals the ending
balance for a given month. This is the prior month's value plus or minus any activity in
the given month. Balance sheet accounts are cumulative. This will be empty for account
groups and metric accounts.

startExpanded N This indicates whether an account and its children start out in an expanded state when 1
first loading a sheet. This applies only for parent accounts. This will be empty for leaf
accounts.

isBreakbackEligible N Either 0 or 1 to indicate whether this account can be used in a breakback. This applies 0
only to standard assumptions. This will be empty for other types of accounts.

levelDimRollup N Indicates how the account behaves when rolled up along a level or dimension. Can be NONBLANK_AVERAGE
SUM, WEIGHTED_AVERAGE, TEXT, or NONBLANK_AVERAGE. This will be empty
for account groups and metric accounts.

levelDimWeightAcctId N If this account has a levelDimRollup of WEIGHTED_AVERAGE, this will be the internal 118
system id number of the account from where the weights are determined. This will be
empty if no weight account exists or the account's levelDimRollup is not
WEIGHTED_AVERAGE .

rollupText N If this account has a levelDimRollup of TEXT, then this is the text string that will show None

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 220/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

up in the cell indicating the rolled up value of the account.

enableActuals N 0 to show only plan data for the account. 1 to import actuals into the account. For linked 1
accounts, 0 will show actuals only if the linked account has them, and 1 will enable
actuals for the linked account. This will be empty for account groups and metric
accounts.

isGroup Y 0 or 1 to indicate whether this is an account group or not. 1

isIntercompany N 0 or 1 to indicate whether this account is an intercompany account or not. 1

formula N The formula for the account, if it has one. ACCT.Revenue -


ACCT.Expenses

isLinked N 0 or 1 to indicate whether this account is a linked account or not. 1

isSystem N 0 or 1 to indicate whether this account is a system account or not. 1

owningSheetId N For accounts that can be on modeled and cube sheets, the internal system id number 17
of the sheet that this account is on. This will be empty if it is not such an account, or if it
is such an account but is not currently assigned to a sheet.

Contents of the Element

One nested account element for each direct child account of this account.

One attributes element if account has one or more attributes associated with it.

attributes element

Tag Name attributes

Description Container for one or more attribute elements.

Attributes of the Element

Attribute Name Required? Value Example

(none)

Contents of the Element

One or more attribute elements.

attribute element

Tag Name attribute

Description Represents a single non-blank account attribute mapping to which an account is associated.

Attributes of the Element

Attribute Name Required? Value Example

name Y The name of the account attribute. SEC Reporting

value Y The name of the account attribute associated with the account. Yes

attributeId Y The internal system ID number of the account attribute. 10

valueId Y The internal system ID number of the account attribute value. 108

Contents of the Element

None.

1.4.3.2 | createDimension

Important: Not supported in API v20 + . Use updateDimensions.

Category Metadata modification

Description Create a dimension. If successful, the API returns details for the dimension that has just been created.

Permissions Required To Invoke Model

Parameters Required On Request Credentials

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 221/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

This method's request contains a credentials tag to identify and authorize the calling user. User must have Model permission to create the dimension.

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="createDimension" callerName="fred">
<credentials login="[email protected]" password="my_pwd" />
<dimension
name="New Dimension Name"
/>
</call>

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as this user (any
audit trail or history of actions in the system will show that this user performed the action), and therefore the user must have the required
permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

dimension element

Tag Name dimension

Description Specifies a dimension to create.

Attributes of the Element

Attribute Required? Value Example


Name

name Y The name of the dimension. The name must be unique. NewDimensionName

shortName N Displayable title of the column, as seen on the sheet. NewDimensionShortName

listDimension N "1" means this is a list dimension, "0" (or not specified) means it isn't. 0

useOnLevels N "1" means this dimension can be used on levels, "0" (or not specified) means it can't 0

autoCreate N "1" means values for this dimension can be created via the import, "0" (or not specified) 0
means they can't.

keepSorted N "1" means values for this dimension are always sorted alphabetically, "0" (or not specified) 0
means they can be manually ordered.

Contents of the Element

(none)

Response Format

<?xml version='1.0' encoding='UTF-8'?>


<response success="true">
<output>

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 222/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

<dimensions>
<dimension id="41" name="New Dimension Name" shortName="" autoCreate="0" listDimension="0"
keepSorted="0" useOnLevels="0">
</dimension>
</dimensions>
</output>
</response>

Dimensions element

Tag Name dimensions

Description Container for one or more dimension elements.

Attributes of the Element

(none)

Contents of the Element

One or more dimension elements.

dimension element

Tag Name dimension

Description Represents a single custom dimension being returned in the response to an exportDimensions API call

Attributes of the Element

Attribute Required? Value Example


Name

id Y The internal system ID number for the dimension. This can be used to identify dimensions in other API calls, 16
such as exportDimensionFamilies

name Y The name of the dimension, as it appears on reports and sheets. Customer

shortName N The short name for the dimension, if any, as entered in Dimension Administration cust.

autoCreate Y 1 if the selected dimension has the "Data import automatically creates dimension values" field set; 0 otherwise. 0

listDimension Y 1 if the selected dimension is list dimension; 0 otherwise. 1

keepSorted Y 1 if the selected dimension is kept sorted, 0 otherwise. 1

useOnLevels Y 1 if the selected dimension can be used on levels, 0 otherwise. 1

Contents of the Element

Zero or more dimensionValue elements. Each enclosed dimensionValue element represents a "root dimension value" in the dimension, a value which has no
parent value.

1.4.3.3 | createDimensionValue

Important: Not supported in API v20 +. Use updateDimensions.

Category Metadata modification

Description Create a dimension value. If successful, the API returns details for the dimension and all dimension values including the one
that has just been created.

Permissions Required To Model


Invoke

Parameters Required On Credentials


Request

This method's request contains a credentials tag to identify and authorize the calling user. User must have Model permission to create the dimension. This method
returns an error if there are unpublished changes.

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="createDimensionValue" callerName="fred">
<credentials login="[email protected]" password="my_pwd" />

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 223/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

<dimensionValue
dimensionId="10"
name="New Dimension Value">
<attributes>
<attribute attributeId="20" valueId="170" />
</attributes>
</dimensionValue>
</call>

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as this user (any
audit trail or history of actions in the system will show that this user performed the action), and therefore the user must have the required
permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

dimensionValue element

Tag Name dimensionValue

Description Specifies a dimension value to create.

Attributes of the Element

Attribute Required? Value Example


Name

dimensionId Y The id of the dimension.Either dimensionId or parentId must be specified 34

parentId N The id of the parent dimension value. Either dimensionId or parentId must be 220
specified.

name Y The name of the dimension value. NewDimensionValue

shortName N The description of the dimension value. NewDimensionValue-


ShortName

description N The description of the dimension value. This is a NewDimensionValue

Contents of the Element

(none)

attributes element

Tag Name attributes

Description Container for one or more dimension attribute elements

Attributes of the Element

Attribute Name Required? Value Example

Contents of the Element

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 224/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

One or more attribute elements.

attributes element

Tag Name attribute

Description Container for one or more dimension attribute elements

Attributes of the Element

Attribute Required? Value Example


Name

attributeID Y The id of the dimension attribute generated by system. 20

valueID Y The unique id of the dimension attribute value generated by system. If this value is 0 then this attribute is 170
removed from the account.

Contents of the Element

(none)

Response Format
These are examples of responses for successful and unsuccessful creating of a dimension value.

Success Example

<?xml version='1.0' encoding='UTF-8'?>


<response success="true">
<output>
<dimensions>
<dimension id="6" name="Department" shortName="" autoCreate="0" listDimension="0" keepSorted="0"
useOnLevels="1">
<dimensionValue id="7" name="Engr" description="Engineering" shortName="">
<dimensionValue id="52" name="QA" description="Quality Assurance" shortName="" />
<dimensionValue id="53" name="Dev" description="Development" shortName="" /></dimensionValue>
</dimension>
<dimension id="7" name="Education" shortName="" autoCreate="0" listDimension="1" keepSorted="0"
useOnLevels="0">
<dimensionValue id="32" name="Graduate" description="Graduate degree" shortName="">
<attributes>
<attribute attributeId="21" name="Education Type" valueId="197" value="Tech1" />
</attributes>
</dimensionValue>
<dimensionValue id="33" name="Masters" description="Masters degree" shortName="">
<attributes>
<attribute attributeId="21" name="Education Type" valueId="196" value="Management" />
</attributes>
</dimensionValue>
<dimensionValue id="34" name="Phd" description="Phd" shortName="" />
</dimension>
</dimensions>
</output>
</response>

Error Example

<?xml version='1.0' encoding='UTF-8'?>


<response success="false">
<messages>
<message type="ERROR" key="invalid-attributevalueid" values="-50">Invalid attribute value id: "-50"</message>
</messages>
</response>

Dimensions are ordered by name.

response element

Tag response
Name

Attributes of the Element

Attribute Required? Value Example


Name

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 225/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true
warning messages in their response.

obsolete N If present on the response tag and set to true, this attribute indicates that the version of the method or API which is false
being invoked has become obsolete and is officially deprecated. While it continues to function at this time, it may
cease functioning in a short while. Typically, this attribute is not present.

Contents of the Element

A single optional messages element, and exactly one required output element.

output element

Tag Name output

Attributes of the Element

(none)

Contents of the Element

A single accounts element. This output wrapper is standard on all API responses and encloses the valid output of any successful API call.

dimensions element

Tag Name dimensions

Description Container for one or more dimension elements

Attributes of the Element

(none)

Contents of the Element

One or more dimension elements.

dimension element

Tag Name description

Description Represents a single custom dimension being returned in the response to an exportDimensions API call.

Attributes of the Element

Attribute Required? Value Example


Name

id Y The internal system ID number for the dimension. This can be used to identify dimensions in other API calls, 16
such as exportDimensionFamilies.

name Y The name of the dimension, as it appears on reports and sheets Customer

shortName N The short name for the dimension, if any, as entered in Dimension Administration cust.

autoCreate Y 1 if the selected dimension has the "Data import automatically creates dimension values" field set; 0 otherwise 0

listDimension Y 1 if the selected dimension is list dimension; 0 otherwise. 1

keepSorted Y 1 if the selected dimension is kept sorted, 0 otherwise. 1

useOnLevels Y 1 if the selected dimension can be used on levels, 0 otherwise. 1

Contents of the Element

Zero or more dimensionValue elements. Each enclosed dimensionValue element represents a "root dimension value" in the dimension, a value which has no
parent value

dimensionValue element

Tag Name dimensionValue

Description Represents a single member value of a custom dimension being returned in the response to an exportDimensions API call.

Attributes of the Element

Attribute Name Required? Value Example

id Y The internal system ID number for this member value of the dimension. 34

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 226/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

name Y The label for the member value of the dimension, as displayed on reports and used in formulas. A Corp

shortName N The short name for the dimension value, if any, as entered in Dimension Administration A

description N The description of the dimension value, if any, as entered in Dimension Administration A Corporation

Contents of the Element

Zero or more optional dimensionValue elements. Each enclosed dimensionValue element represents a "child dimension value" of this dimension value, whose
members implicitly roll up to this value

attributes element

Tag Name attributes

Description Container for one dimension attribute element

Attributes of the Element

Attribute Name Required? Value Example

attributeID Y The id of the dimension attribute generated by system. 20

name Y The name of the dimension attribute Education Type

valueID Y The unique id of the dimension attribute value generated by system. 170

value Y The value of the dimension attribute. Techl

Contents of the Element

(none)

1.4.3.4 | createLevel

Important: Not supported in API v20 +. Use updateLevels.

Category Metadata modification

Description Create a level. If successful, the API returns details for the level that has just been created.

Permissions Required To Invoke Organization Structure

Parameters Required On Request Credentials

This method's request contains a credentials tag to identify and authorize the calling user. User must have Organization Structure permission to create the level.

This method returns an error if there are unpublished changes.

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="createLevel" callerName="fred">
<credentials login="[email protected]" password="my_pwd" />
<level
name="New Level Name"
shortName="NewLvlName"
parentId="2"
>
<attributes>
<attribute attributeId="20" valueId="199" />
</attributes>
</level>
</call>

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 227/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

level element

Tag Name level

Description Specifies a level to create.

Attributes of the Element

parentId Y The ID of the level to create this level as a child of. 34

name Y The name of the level. The name must be unique. New Level
Name

shortName N The short name of the level. NewLvName

proceed- N Indicates whether the user wants to ignore warning messages and go ahead with the create operation. 0 for no, 1 for 1
WithWarnings yes. If there are warnings and proceedWithWarnings=0, then the level will not be created. Set
proceedWithWarnings=1 to create the level when there are warnings.

Contents of the Element

One optional attributes element if you want to set one or more level attributes associated with the level.

attributes element

Tag Name attributes

Description Container for one or more level attribute elements.

Attributes of the Element

Attribute Name Required? Value Example

(none)

Contents of the Element

One or more attribute elements.

attribute element

Tag Name attribute

Description Container for one level attribute element.

Attributes of the Element

Attribute Required? Value Example


Name

attributeID Y The id of the level attribute generated by system. 20

valueID Y The unique id of the level attribute value generated by system. If this value is 0 then this attribute is removed 170
from the account.

Contents of the Element

(none)

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 228/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Response Format

<?xml version='1.0' encoding='UTF-8'?>


<response success="true">
<output>
<levels>
<level="41" name="New Level Name" shortName="NewLvlName" currency="USD">
<attribute attributeId="20" name="Regional Code" valueId="199" value="A-145" />
</level>
</levels>
</output>
</response>

output element

Tag Name output

Attributes of the Element

(none)

Contents of the Element

A single required level element. This output wrapper is standard on all API responses and encloses the valid output of any successful API call.

levels element

Tag Name levels

Description Container for the level element.

Attributes of the Element

Attribute Name Required? Value Example

Contents of the Element

One or more level elements. If the request includes inaccessible levels, there will be only one level element, which represents the top level of the organization.

level element

Tag Name level

Description Represents a single organization level being returned in the response to an exportLevels API call.

Attributes of the Element

Attribute Required? Value Example


Name

id Y The internal system ID number for the level. 7

name Y The name of the level, as it appears on reports and sheets. Development

currency Y The currency code for the currency assigned to this level of the organization. The currency will be one of INR
the configured currencies for the instance, found in the exportActiveCurrencies call.

shortName N The abbreviation for the level, if any, as entered in Organization Administration. Dev

availableStart N The start date for the availability of the level for actuals verion, applicable only when the Actuals version is 01/2013
specified in the request. The value can be either a specific month, in the format "MM/YYYY", or the
special value "START" indicating the start of the version.

availableEnd N The end date for the availability of the level for actuals verion, applicable only when the Actuals version is 12/2013
specified in the request. The value can be either a specific month, in the format "MM/YYYY", or the
special value "END" indicating the end of the version.

isImportable N 1
Indicates if the associated level is importable in the specified version. '0' means it is not importable and '1'
means it is importable. A level is importable if at least one timeslot in the specified version is importable.
isImportable attribute is only emitted if versionName or versionID is specified in the request.

Note: isImportable only indicates that a level is available for import in the specified version, not that the
user making the API call has the permission to import into the version or level. Use exportVersions to see
which versions are available to the user for import.

workflowStatus N Emits the workflow status for the associated level. I for "In Progress", S for "Submitted", R for "Rejected", I
A for "Approved" and L for "Locked". Only included in the response if workflow is enabled for this

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 229/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

company, and a planning versionName or versionID is specified in the request. Workflow is not available
on actuals versions.

isLinked Y Indicates whether the level is a linked level. 0 for no, 1 for yes. 1

isElimination Y Indicates whether the level is an elimination level. 0 for no, 1 for yes. 0

Contents of the Element

One nested level element for each direct child level of this level. One attributes element if this level has one or more attributes associated with it.

attributes element

Tag Name attributes

Description Container for one or more attribute elements.

Attributes of the Element

Attribute Name Required? Value Example

(none)

Contents of the Element

One or more attribute elements.

attribute element

Tag Name attribute

Description Represents a single non-blank level attribute mapping to which a level is associated.

Attributes of the Element

Attribute Name Required? Value Example

name Y The name of the level attribute Corporate Discount

value Y The value of the level attribute associated with the level. Yes

attributeID Y The internal system id number of the level attribute. 20

valueID Y The internal system id number of the level attribute value. 188

Contents of the Element

(none)

1.4.3.5 | createUser

Category Metadata modification

Description Create one or more users. If successful, the API will return a message for the user that has just been created. Supports creating
no more than 1000 users in a single request.

Permissions Required User Permission


To Invoke

Parameters Required Credentials


On Request

This method's request contains a credentials tag to identify and authorize the calling user. User must have "User Permission" permission to create the user(s).

Important: This method does not function following user synchronization from Workday.

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="createUser" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd" />
<users>

<user
email="[email protected]"
name="new guy"
password="new Password"

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 230/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

alternateEmail="[email protected]"
samlFedId= "1234"
permissionSetId="1"
ownedLevels="2,3,7,11"
timeZone="America/Mexico_City"

/> </users>
</call>

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

users element

Tag Name users

Description Contains one or more user elements.

Attributes of the Element

Attribute Name Required? Value Example

Contents of the Element

Contains one or more user elements. Supports creating no more than 1000 users in a single request.

user element

Tag Name user

Description Specifies a user or users to create.

Attributes of the Element

Attribute Name Required? Value Example

email Y The email address for this user. Uniqueness is required. The only allowed characters are [email protected]
a-z, A-Z, 0-9, - and .

name Y The name of this user. Melvin Morsmere

password Y The password of this user. If SAML SSO is configured with Workday, then password is newpassword
optional for the new user.

N The alternate email address for this user. We automatically select this option and [email protected]
alternateEmail
populate with the email ID of the user in the User Details section.

Available in API
v27

N The SAML federation ID for this user. 1234,

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 231/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

samlFedId [email protected]

Available in API
v27

N The internal system ID of the permission set assigned to this user. 3


permissionSetId

Available in API
v25+

N The internal system ID of the role assigned to this user. There is no default. (The roleId 3
roleId
attribute is also covered in the exportRoles API.)
Available in API
v25 and earlier

Not available in API


v25+

ownedLevels N The internal system ID for the levels separated by comma. There is no default. (The 5,10,13
ownedLevels attribute is also covered in the exportLevels API.)

timeZone N The time zone of the user. If none is specified, it defaults to US/Pacific. US/Pacific

Contents of the Element

(none)

Response Format

<?xml version='1.0' encoding='UTF-8'?>


<response success="true">
<output>
<result>
<created_users>
<user success="true" message="user [email protected] was created successfully."/>
</created_users>
</result>
</output>
</response>

response element

Tag Name response

Attributes of the Element

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true
warning messages in their response.

Contents of the Element

A single result element with created_user or updated_user status elements depending on whether a createUser or updateUser call was made, respectively.

result element

Tag Name result

Description Container for one or more status elements.

Attributes of the Element

Attribute Name Required? Value Example

(none)

Contents of the Element

One or more created_user or updated_user status elements depending on whether a createUser or updateUser call was made, respectively.

created_users element

Tag Name created_users

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 232/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Description Represents a message sent from the system back to the caller.

Attributes of the Element

Attribute Name Required? Value Example

user success Y The status returned by the call. Can be true or false. true

message Y The status message. user [email protected] was created successfully.

Contents of the Element

One subscriptions element.

1.4.3.6 | customReportValues

Category Data retrieval

Description Returns a set of data for the requested report criteria in the requested instance.

Permissions Required To Invoke None (user must have a permission set assigned)

Parameters Required On Request Credentials, Report

Note: For API Version 15 and newer, call exportTime to retrieve the correct time element IDs.

This method's request contains a specification for a report that can be used to search data and return values. The API takes internal id numbers as inputs.
Metadata retrieval APIs can be called to get valid ids. The results are represented by coords and values. The response also returns warnings and error messages if
applicable.

This API is based on the matrix reports. The request requires that the caller specify elements on an X-axis (columns), Y-axis (rows), and on an optional filter axis
used to filter all data retrieved by the API. Matrix reports contain axes that determine which data appears on the report. Each axis defines an edge of the report. All
matrix reports have three axes:

the X axis (the top edge). It defines the set of columns on the report.
the Y axis (the left edge). It defines the set of rows on a report
the filter axis, a global axis that defines properties that apply to all data on the report. See the filter axis examples for more.

An axis can be divided into multiple segments. A segment is a way of separating sets of dimensions on a single axis. The filter axis can only have one segment, but
the other two axes can have as many segments as you wish.

Each segment can have an unlimited number of tiers. A tier represents a single logical dimension used to describe which elements of that dimension apply to the
rows or columns under it. A segment can only contain at most one tier per logical dimension.

Each tier can contain one or more elements of the tier's dimension. (All elements in the tier must belong to the dimension specified in the tier.) An element is usually
an item in the dimension, such as a particular account in the account dimension, or a fiscal quarter in the time dimension. These elements are then used by the
system to select and aggregate the data found on the report.

When a segment on the X or Y axis contains multiple tiers, the elements of each tier are combined with all the elements of all the other tiers to form the Cartesian
product of all possible combinations of tier elements. Each column or row represents one possible combination of elements, selecting one element from each tier.
For example, if a segment on the X axis--the columns along the top--contains a tier with five elements and a second tier with two elements, the segment will result
in ten separate columns, representing all possible combinations of the elements on the tiers. You cannot place an element type on multiple axes. For example, if
you place the account element type on rows, you cannot then add accounts on columns or filters.

A tier can have both individual elements or rollup elements. Rollup elements arbitrarily rollup all elements specified under them. Rollup elements are not allowed in
the filter.

The filter axis behaves very similarly to the X and Y axes, but it has one slight difference: because the filter axis applies to all data in the report, it cannot combine its
tiers to form multiple rows or columns. Instead, the filter axis combines all elements of each tier, aggregating the data from all elements together as though those
elements were rolling up to a single aggregation.

See matrix reports for more information on segments, axes, and dimensional elements.

Filter Axis Examples


The example below shows all of the possible elements for the filter axis.

<axis type="FILTER">
<segment>
<!-- Account filter -->
<tier type="acct">
<el id="258" />
</tier>
<!-- Time filter -->
<tier type="time">
<el id="342" />
</tier>
<!-- Level filter -->

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 233/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

<tier type="lvl">
<el id="354" />
</tier>
<!-- Version filter -->
<tier type="ver">
<el id="385" />
</tier>
<!-- Currency filter -->
<tier type="cur">
<el id="448" />
</tier>
<!-- Account Attribute filter -->
<tier entity-id="23" type="aAttr">
<el id="512" />
</tier>
<!-- Level Attribute filter -->
<tier entity-id="25" type="lAttr">
<el id="607" />
</tier>
<!-- Dimension Attribute filter -->
<tier entity-id="21" type="dAttr">
<el id="649" />
</tier>
<!-- Dimension filter -->
<tier entity-id="1" type="dim">
<el id="717" />
</tier>
</segment>
</axis>

Request Format
The XML schema for the request can be found here: customReportValues REST Specification.

<?xml version='1.0' encoding='UTF-8'?>


<call method="customReportValues" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd" locale="fr_FR" instanceCode="INSTANCE1"></credentials>
<report suppress-zeroes="1"> <!-- run report suppressing blanks, but not zero values -->
<!-- columns -->
<axis type="X">
<segment>
<!-- time columns -->
<tier type="time">
<!-- Timespan creates multiple time columns from Jan-2014 to Dec-2014.Ids specified in timespan element are retrieved from exportTime API
'show-time' is a mandatory attribute specifying list of strata ids -->
<el complex-type="timespan" end="179001" show-time="3,2,1"/>
<el id="180001" /> <!-- single column of Jan 2015 . This id is retrieved from exportTime API output-->
</tier>
</segment>
</axis>
<!-- rows -->
<axis type="Y">
<segment>
<!-- There are 2 tiers with 4 elements total. This generates 4 rows of:
1. dimension value with id 135, account with id 51
2. dimension value with id 135, account with id 53
3. dimension value with id 199, account with id 51
4. dimension value with id 199, account with id 53 -->
<tier entity-id="13" type="dim"> <!-- dimension values with id 135 and 199 from dimension with id of 13 -->
<el id="135" />
<el id="199" />
</tier>
<tier type="acct"> <!-- account with id of 51 and 53 -->
<el id="51" />
<el id="53" show-acct-splits="1" />
</tier>
</segment>
</axis>
<axis type="FILTER">
<segment versions-in-segment="7">
<tier dim-type-id="-4">
<version element-id="242" code="Budget_2011" id="7" offset="0" offset-strata="1" type="PLANNING"/>
</tier>
</segment>
</axis>

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 234/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

</report>
</call>

Each invocation of this API call must contain exactly one element of each of the listed types:

credentials

report

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

report element

Tag Name report

Description Specifies the elements that make up the report.

Attributes of the Element

Attribute Required? Value Example


Name

suppress- N Specifying this attribute suppresses data in different ways. The valid values for this attribute are 0, 1, 2. 0=Nothing 0
zeroes suppressed, 1=Suppress blank cells but not zeroes, 2=Suppress blank and zero cells(Default). A cell is considered
blank if the cell explorer value for that cell is empty. Cells that roll up to an empty text value are not considered
blank.

show- N When given, this attribute either shows or hides cell notes. 0=Don't show cell notes(default), 1=show cell notes 1
cell-notes

suppress- N When given, this attribute either shows or hides rollup rows and columns.Rollup rows and columns are suppressed 1
rollups only for those parents whose children are present on the report. Valid values are 0 (Don't suppress rollups), or 1
(Suppress rollups). The default value is 0.

Contents of the Element

(none)

Response Format
The XML schema for the response can be found in customReportValues REST Specification.

<?xml version="1.0" encoding="utf-8"?>


<response success="true">
<messages>
<!-- Dimension value id 13 is invalid. Rows with value id 13 has been removed from the report. -->
<message type="WARNING" key="invalid-dim-attr-id" values="199,13">Invalid value Id
199 for dimension/attribute type id 13
</message>

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 235/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

</messages>
<!-- Global filters. Although the request did not supply any filters, defaults are used when dimension types are not
specified. Reporting against version with id 2 which is the current version. Level with id 1 is the top most level this user
has access to. -->
<filters>
<coords>
<coord type="ver" rollup="1">
<el id="2" />
</coord>
<coord type="lvl" rollup="1">
<el id="1" />
</coord>
</coords>
</filters>
<!-- Only two time columns Dec-2014 and Jan-2015 have data, all other columns have been removed -->
<cols>
<col id="1">
<coords>
<coord type="time">
<el id="179001" />
</coord>
</coords>
</col>
<col id="2">
<coords>
<coord type="time">
<el id="180001" />
</coord>
</coords>
</col>
</cols>
<rows>
<row>
<!-- Row coordinates are account with id 51 and dimension value with id of 135 from dimension with id of 13 -->
<coords>
<coord type="acct">
<el id="51" />
</coord>
<coord type="dim" entity-id="13">
<el id="135" />
</coord>
</coords>
<cell value="2.345" col="1" /> <!-- This value's coordinates are the row coordinates listed above, matches column position 1 and the global filters
<cell value="2.345" col="2" /> <!-- This value's coordinates are the row coordinates listed above, matches column position 2 and the global filters
</row>
<row>
<!-- Row coordinates are account with id 53 and dimension value with id of 135 from dimension with id of 13 -->
<coords>
<coord type="acct">
<el id="53" />
</coord>
<coord type="dim" entity-id="13">
<el id="135" />
</coord>
</coords>
<cell value="5.34" col="1" /> <!-- This value's coordinates are the row coordinates listed above, matches column position 1 and the global filters
<cell value="7.44" col="2" /> <!-- This value's coordinates are the row coordinates listed above, matches column position 2 and the global filters
</row>
</rows>
</report>
</output>
</response>

response element

Tag Name response

Attributes of the Element

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true
warning messages in their response.

obsolete N If present on the response tag and set to true, this attribute indicates that the version of the method or API which is false

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 236/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

being invoked has become obsolete and is officially deprecated. While it continues to function at this time, it may
cease functioning in a short while. Typically, this attribute is not present.

Contents of the Element

A single optional messages element, and exactly one required output element.

messages element

Tag Name messages

Description Container for one or more message elements.

Attributes of the Element

(none)

Contents of the Element

One or more message elements.

message element

Tag Name message

Description Represents a message being sent from the system back to the caller. Messages are used for error messages when requests do
not succeed, for warning messages when requests do succeed, and for confirmation messages upon success.

Attributes of the Element

Attribute Required? Value Example


Name

type Y Type is a way to identify the type of message. The different types are INFO, WARNING and ERROR. Type WARNING
"ERROR" means that this request was not processed.

key Y A key is a way to identify a particular message or type of message, useful for purposes of auto- mated error warning-
logging and recovery in client pro- grams. Keys do not change under different locales of requests, even when the invalid-
language of the message changes. Keys also are unlikely to change in the future due to wording adjustments or time-
terminology changes. span-start

values N When given, the values represents variables that are used in the message text. 199,12

Contents of the Element

The text of the message. This text is in the language of the locale specified on the request (assuming that locale is supported). The text may also contain
variable information such as the number of rows which were processed, or the particular column or value which caused an error.

output element

Tag Name output

Description

Attributes of the Element

(none)

Contents of the Element

Refer to the Response XML for more details

1.4.3.7 | customReportValues REST Specification

This section provides supporting information about the customReportValues call.

Request
Example

<?xml version='1.0' encoding='UTF-8'?>


<call method="customReportValues" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd"
locale="fr_FR" instanceCode="INSTANCE1"></credentials>
<report suppress-zeroes="1">
<axis type="X">

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 237/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

<segment>
<tier entity-id="2" type="dim">
<el id="8" />
</tier>
<tier entity-id="22" type="lAttr">
<el id="0" />
</tier>
<tier type="ver">
<el id="2" />
</tier>
<tier type="lvl">
<el id="2" />
</tier>
<tier type="time">
<el complex-type="timespan" end="227001" show-time="1,2,3" />
<el complex-type="ptd" as-of="207001" stratum-id="3"/>
<el complex-type="ptd" as-of="207001" stratum-id="2"/>
<el id="17003" />
<el id="69002" />
<el id="210001" />
</tier>
</segment>
</axis>
<axis type="Y">
<segment>
<tier entity-id="11" type="dim">
<el id="34" />
</tier>
<tier entity-id="18" type="aAttr">
<el id="14" />
</tier>
<tier entity-id="29" type="dAttr" >
<el id="87" />
</tier>
<tier type="cur">
<el id="6600" />
</tier>
<tier type="acct">
<el id="1" />
</tier>
</segment>
</axis>
</report>
</call>

RNC (Relax NG compact) Format Specification


The following is the request schema, provided in the Relax NG Compact format.

default namespace = ""

start =
element call {
attribute callerName { text },
attribute method { "customReportValues" },
element credentials {
attribute instanceCode { text },
attribute login { text },
attribute locale { text }?,
(attribute password { text } | attribute ticket{ text })
},
element report {
attribute suppress-zeroes { "0" | "1" | "2" }?, #0=Nothing suppressed, 1=Suppress blank cells but not zeroes, 2=Suppress blank and zero cells(Default)
attribute show-cell-notes { "0" | "1" }?, #0=Don't show cell notes(default), 1=show cell notes
X-axis, # Axes must be specified in order X, Y, (optional) FILTER
Y-axis,
Filter-axis?
}
}

X-axis =
element axis {
attribute type { "X" },
segment+

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 238/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

}
Y-axis =
element axis {
attribute type { "Y" },
segment+
}
Filter-axis =
element axis {
attribute type { "FILTER" },
segment
}

segment =
element segment {
(dimTier | levelTier | accTier | timeTier | versionTier | currencyTier | accAttrTier | levelAttrTier | dimAttrTier)+
}

#Look up ids by calling the exportDimensions API


dimTier =
element tier {
attribute type { "dim" },
attribute entity-id { xsd:integer }, #dimension id
(stdRollup | stdEl)+ #stdRollup will allow for arbitrary rollups and stdEl will provide the dimension value id
}

#Look up ids by calling the exportLevels API


levelTier =
element tier {
attribute type { "lvl" },
(stdRollup | stdEl)+ #stdRollup will allow for arbitrary rollups and stdEl will provide the dimension value id
}

#Look up ids by calling the exportAccounts API


accTier =
element tier {
attribute type { "acct" },
(acctRollup | acctEl)+ #acctRollup will allow for arbitrary rollups and acctEl will provide the account id
}

#Look up ids by calling the exportTime API


timeTier =
element tier {
attribute type { "time" },
(timeRollup | timeEl)+ #timeRollup will allow for arbitrary rollups of single time elements
}

#Look up ids by calling the exportVersions API


versionTier =
element tier {
attribute type { "ver" },
(stdRollup | stdEl)+
}

#Look up ids by calling the exportActiveCurrencies API


currencyTier =
element tier {
attribute type { "cur" },
stdEl+
}

#Look up ids by calling the exportAttributes API


accAttrTier =
element tier {
attribute type { "aAttr" },
attribute entity-id { xsd:integer },#account attribute id
(stdRollup | stdEl)+ #stdRollup will allow for arbitrary rollups and stdEl will provide the account attribute value id
}

#Look up ids by calling the exportAttributes API


levelAttrTier =

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 239/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

element tier {
attribute type { "lAttr" },
attribute entity-id { xsd:integer }, #level attribute id
(stdRollup | stdEl)+ #stdRollup will allow for arbitrary rollups and stdEl will provide the level attribute value id
}

#Look up ids by calling the exportAttributes API


dimAttrTier =
element tier {
attribute type { "dAttr" },
attribute entity-id { xsd:integer }, #dimension attribute id
(stdRollup | stdEl)+ #stdRollup will allow for arbitrary rollups and stdEl will provide the dimension attribute value id
}

#All tiers except account and time have stdEl


stdEl =
element el {
attribute id { xsd:integer }, # For custom dimensions and attributes, the root is represented by id = 0. Ex: for Dimension Region(entity-id=3), Region(rollup)
attribute rollup-mode { "R" | "U" | "C" }? # R=Rollup or Leaf (as appropriate) (default), U=Uncat, C=Me & my immediate Children(not valid with arbitrary rollup
}
stdRollup =
element rollup {
stdEl+
}

timeEl = (singleTimeEl | timespanEl | ptdEl)


singleTimeEl =
element el {
attribute id { timeId }
}
timespanEl =
element el {
attribute complex-type { "timespan" },
attribute start { timeId }?, #Not specifying start or end means start or end of the 'Range of the versions in this export'.
attribute end { timeId }?,
attribute show-time { comma separated list of stratum ids }, # List of stratum ids that has show time enabled. Defaults to all strata being enabled.
}
ptdEl =
element el {
attribute complex-type { "ptd" }
attribute stratum-id { stratumId }, # Stratum id of the stratum used in "stratum to date"
attribute as-of { timeId }
}
timeRollup = element rollup {
(singleTimeEl)+
}
timeId = xsd:integer # Unique time period id

acctEl =
element el {
attribute id { xsd:integer },
( attribute rollup-mode { "R" | "C" } |
attribute show-acct-splits { "0" | "1" } #0=don't show splits in account(default), 1=show splits in accounts (not valid with arbitrary rollup)
)?
}
acctRollup =
element rollup {
acctEl+
}

Assumptions
Credentials can be login or ticket (as currently).
Axes must be specified in the following order: X, Y, (optional) FILTER.
Invalid values will always be marked. In the response, there is an invalid attribute flag on the cell.
Timespan, qtd and ytd specified in the filter will appear as timeranges in the filters in the response.
A cell is considered blank if the value for that cell in the cell explorer is empty. Cells that roll up to an empty text value are not considered blank.
TimeId construction:
Year: 4 digit year followed by 00. Ex: FY-2014 would have timeId:201400
Quarter: 4 digit year followed by '9' followed by 1 digit quarter number(1-4). Ex: Q3-2014 would have timeId: 201493
Month/Period: 4 digit year followed by the 2 digit month(01-12) or period number(01-13). Ex: Jan 2014 would be timeId: 201401, Period 3 2014
would be timeId: 201403

Response

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 240/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Example

<?xml version="1.0" encoding="utf-8"?>


<response success="true">
<messages>
<message type="INFO" key="warning-invalid-timespan">Ignoring start of timespan, which precedes start of version</message>
<message type="INFO" key="removed-by-qualification">Account "fred" was removed.</message>
<message type="ERROR" key="exception-happened">Exception message</message>
</messages>
<output>
<report>
<filters>
<coords>
<coord type="ver" rollup="1">
<el id="3" />
</coord>
<coord type="aAttr" entity-id="85" rollup="1">
<el id="45" />
</coord>
</coords>
</filters>
<cols>
<col id="1">
<coords>
<coord type="time">
<el id="204001" />
</coord>
<coord type="lvl">
<el id="4" />
</coord>
</coords>
</col>
<col id="2">
<coords>
<coord type="time">
<el id="205001" />
</coord>
<coord type="lvl">
<el id="4" />
</coord>
</coords>
</col>
<col id="3">
<coords>
<coord type="time">
<el id="204001" />
</coord>
<coord type="lvl">
<el id="5" rollup-mode="U" />
</coord>
</coords>
</col>
<col id="4">
<coords>
<coord type="time">
<el id="204002" />
</coord>
<coord type="lvl">
<el id="5" rollup-mode="U" />
</coord>
</coords>
</col>
</cols>
<rows>
<row>
<coords>
<coord type="acct">
<el id="45" />
</coord>
</coords>
<cell value="2.345" col="1" />
<cell value="4.567" col="2" />
<cell value="3.397" col="3" />
<cell value="5.274" col="4" />
</row>

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 241/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

<row>
<coords>
<coord type="acct">
<el id="46" />
</coord>
</coords>
<cell value="5.6" col="1" />
<cell value="2.7" col="2" />
<cell value="1.9" col="3" />
<cell value="9.4" col="4" />
</row>
</rows>
</report>
</output>
</response>

RNC (Relax NG compact) Format Specification


The following is the response schema, provided in the Relax NG Compact format.

default namespace = ""

start =
element response {
attribute success { xsd:boolean },
element messages {
element message {
attribute key { text }?,
attribute type { "INFO" | "ERROR" }?,
attribute values { text }?,
text
}+
}?,
element output {
element report {
element filters {
coords
}?,
element cols {
element col {
attribute id { xsd:integer },
coords
}+
},
element rows {
element row {
coords,
element cell {
attribute col { xsd:integer },
attribute value { xsd:decimal },
attribute text-rollup { xsd:string }?, # shows up only for text rollups
attribute invalid { "0" | "1" }?, # 0=value is valid(default), 1=value is invalid
attribute blank { "0" | "1" }?, # 0=value is not blank(default), 1=value is blank
element note { xsd:string }? # shows up only if show-cell-notes in the request is "1" and there is a note at this location.
}+
}*
}
}
}?
}

coords = element coords {


coord+
}
coord = (stdCoord | dimCoord | acctCoord | timeCoord)
stdCoord =
element coord {
attribute type { "lvl" | "ver" | "cur" },
attribute rollup { "0" | "1" }?, # 0=not a rollup(default), 1=arbitrary rollup/filter
coordEl+ #More than 1 indicates arbitrary rollup
}
dimCoord =
element coord {
attribute entity-id { xsd:integer }, # This is the dimId/accAttrId/lvlAttrId/dimAttrId.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 242/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

attribute type { "dim" | "aAttr" | "lAttr" },


attribute rollup { "0" | "1" }?, # 0=not a rollup(default), 1=arbitrary rollup/filter
coordEl+ #More than 1 indicates arbitrary rollup
}
acctCoord =
element coord {
attribute type { "acct" },
attribute rollup { "0" | "1" }?, # 0=not a rollup(default), 1=arbitrary rollup/filter
coordAcctEl+ #More than 1 indicates arbitrary rollup
}
timeCoord =
element coord {
attribute type { "time" },
attribute rollup { "0" | "1" }?, # 0=not a rollup(default), 1=arbitrary rollup/filter
coordTimeEl+ #More than 1 indicates arbitrary rollup
}

coordEl =
element el {
attribute id { xsd:integer }, #This is the dimValId/accAttrValId/lvlAttrValId/dimAttrValId. Id = 0, indicates the root
attribute rollup-mode { "U" }? # rollup-mode=U means categorized value
}

coordAcctEl =
element el {
attribute id { xsd:integer },
attribute split-label { xsd:string }? #Will only be emitted if this corresponds to an account split.
}

coordTimeEl = (singleTimeEl | ptdEl | timerangeEl)


singleTimeEl =
element el {
attribute id { timeId }
}
ptdEl =
element el {
attribute complex-type { "ptd" },
attribute stratum-id { stratumId } # Stratum id of the stratum used in "stratum to date"
attribute as-of { timeId }
}
timerangeEl =
element el {
attribute complex-type { "timespan" },
attribute start { timeId },
attribute end { timeId }
}
timeId = xsd:integer # Unique time period id

If a coord in a filter, col or row contains more than 1 element, it means that it represents the arbitrary rollup of all the elements in the coord.
If a timespan, qtd or ytd is passed in the filter, the response contains the corresponding timerange element in the filter.
In the filter axis, dimensions of the same type will be combined into an arbitrary rollup, except for dimensions, account attributes, and level attributes, which
will be combined if both the type and the entity-id match.
Rollup mode of C in the response for an element on the filter gets turned into a single rollup element in the response.
If there are no filter coordinates, then the response will not include a filters element.
If there is an error and the report could not be run, then there will not be an output element and the messages element will include a message with type
error.
If a cell is a text rollup, then the value attribute will be 0.

1.4.3.8 | exportAccounts

Important: This API only supports user access rules in API v22 and above.

Category Metadata retrieval

Description Returns metadata for the complete list of all accounts in the system, including all account types: Assumptions, Cube Accounts,
Custom Accounts, GL Accounts, Metric Accounts, and Modeled Accounts.

Permissions None (must be valid credentials for the instance)


Required To Invoke

Parameters Credentials
Required On
Request

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 243/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

This method's request contains a credentials tag to identify and authorize the calling user and an ''include'' tag to indicate whether the response should include
information about the importability of the accounts in a particular version. Once verified, the method returns an XML document describing the complete set of
accounts in the system. Accounts are returned in a nested tree fashion, with one account tag enclosing another if the account represented by the enclosing tag is a
parent of the enclosed account.

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="exportAccounts" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd"/>
<include versionName="sample version"/>
<sheet id="3" />
</call>

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

include element

Tag Name include

Description Represents a set of flags indicating what aspects of the accounts' information should be included or excluded from the
response. This element is optional: if not present, the API will return account information for all versions, and will not
include the isImportable attribute.

Attributes of the Element

Attribute Name Required? Value Example

N Budget
versionName Indicates whether the response should include the isImportable attribute in the response for each
2016
account, indicating whether the account can accept imported data for the specified version. The default, if
Updated in API
this element or its attribute is not present, is to not emit any isImportable attributes in the response. If both
v18
versionName and versionID attributes are specified on this element, the versionID is ignored.

When specifying a version, the call will succeed only if the user has access to the version.

N 102
versionID Same as versionName (above) except it takes an internal version ID number as a parameter. Indicates
whether the response should include the isImportable attribute in the response for each account,
Updated in API
indicating whether the account can accept imported data for the specified version.
v18
When specifying a version, the call will succeed only if the user has access to the version.

attributes N Indicates whether the response should include the attributes in the response for each account. false

inaccessibleValues N Indicates whether the response should include values inaccessible to the current user. Defaults to false. false
Only users with the "Modeling" or "Import to all levels" permissions may set this option to true.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 244/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Contents of the Element

(none)

sheet element

Tag Name sheet

Description Represents a sheet in which only accounts available for that sheet should be included in the response. This element is optional: if
not present, the API will return account information independent of a particular sheet.

Attributes of the Element

Attribute Required? Value Example


Name

id Y The internal system ID number for the sheet. 234

Contents of the Element

(none)

Response Format

<?xml version='1.0' encoding='UTF-8'?>


<response success="true">
<output>
<accounts seqNo="42">
<account id="2147483645" code="" name="GL Accounts" description="GL Accounts" timeStratum="" displayAs="NUMBER"
accountTypeCode="" decimalPrecision="0" isAssumption="0" suppressZeroes="1" isDefaultRoot="1" shortName=""
balanceType="" isLinked="0" owningSheetId="" isSystem="0" isIntercompany="0" isImportable="0" dataEntryType=""
planBy="" timeRollup="" timeWeightAcctId="" levelDimRollup="" levelDimWeightAcctId="" rollupText="" startExpanded="1"
hasSalaryDetail="" dataPrivacy="" isBreakbackEligible="" subType="" enableActuals="" isGroup="1">
<account id="1" code="Assets" name="Assets" description="Total Assets" timeStratum="month" displayAs="CURRENCY"
accountTypeCode="A" decimalPrecision="0" isAssumption="0" suppressZeroes="1" isDefaultRoot="1"
shortName="" exchangeRateType="E" balanceType="DEBIT" isLinked="0" owningSheetId=""
isSystem="0" isIntercompany="0" dataEntryType="" planBy="DELTA" timeRollup="LAST" timeWeightAcctId=""
levelDimRollup="SUM" levelDimWeightAcctId="" rollupText="" startExpanded="1" hasSalaryDetail=""
dataPrivacy="PRIVATE" isBreakbackEligible="" subType="CUMULATIVE" enableActuals="1" isGroup="0">
<account id="16" code="Current_Assets" name="Current Assets" description="current assets" timeStratum="month"
displayAs="CURRENCY" accountTypeCode="B" decimalPrecision="0" isAssumption="0" suppressZeroes="1"
isDefaultRoot="1" shortName="" exchangeRateType="E" balanceType="DEBIT" isLinked="0"
owningSheetId="" isSystem="0" isIntercompany="0" dataEntryType="" planBy="DELTA" timeRollup="LAST"
timeWeightAcctId="" levelDimRollup="SUM" levelDimWeightAcctId="" rollupText="" startExpanded="1"
hasSalaryDetail="" dataPrivacy="PRIVATE" isBreakbackEligible="" subType="CUMULATIVE" enableActuals="1"
isGroup="0">
<account id="51" code="70110" name="Bank Account" description="Wells Fargo account" timeStratum="month"
displayAs="CURRENCY" accountTypeCode="B" decimalPrecision="0" isAssumption="0" suppressZeroes="1"
isDefaultRoot="0" shortName="" exchangeRateType="E" balanceType="DEBIT" isLinked="0"
owningSheetId="" isSystem="0" isIntercompany="0" dataEntryType="STANDARD" planBy="BALANCE"
timeRollup="LAST" timeWeightAcctId="" levelDimRollup="SUM" levelDimWeightAcctId="" rollupText=""
startExpanded="" hasSalaryDetail="0" dataPrivacy="PRIVATE" isBreakbackEligible="" subType="CUMULATIVE"
enableActuals="1" isGroup="0">
<attributes>
<attribute name="SEC Reporting" value="Yes" />
<attribute name="GAAP Reporting" value="No" />
</attributes>
</account>
</account>
</account>
</account>
</accounts>
</output>
</response>

response element

Tag Name response

Attributes of the Element

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true
warning messages in their response.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 245/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

obsolete N If present on the response tag and set to true, this attribute indicates that the version of the method or API which is false
being invoked has become obsolete and is officially deprecated. While it continues to function at this time, it may
cease functioning in a short while. Typically, this attribute is not present.

Contents of the Element

A single optional messages element, and exactly one required output element.

output element

Tag Name output

Attributes of the Element

(none)

Contents of the Element

A single accounts element. This output wrapper is standard on all API responses and encloses the valid output of any successful API call.

accounts element

Tag Name accounts

Description Container for one or more account elements.

Attributes of the Element

Attribute Name Required? Value Example

seqNo

Added in API v17 but reserved for future use.

Contents of the Element

One or more account elements.

account element

Tag Name account

Description Represents a single account being returned in the response to an exportAccounts API call. If this element is directly
within the enclosing accounts element of the response (that is, it is not enclosed within another account element), this
account element represents a root account, an account that has no parent.

Attributes of the Element

Attribute Name Required? Value Example

name Y The name of the account, as it appears on reports and sheets. Current
Assets

code Y The code of the account, as it appears when referenced in formulas. Cur_Assets

id N The internal system ID number for the account. This can be used to identify accounts in other API calls, 16
such as exportDimensionFamilies.

accountTypeCode N The letter code corresponding to the data type of this account

Type Code Account Type Account Class

A Asset GL

B Current Asset GL

C Liability & Equity GL

CUBE Cube Cube

EN YTD Earnings/Loss GL

F Fixed Asset GL

G Cost of Goods Sold GL

I Income GL

J Non-Operating Income GL

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 246/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

K Cumulative Translation Adjustment System

L Liability GL

M Current Liability GL

MI Consolidation Percentages Predefined

MT Metric Metric

N Net Income GL

O Other Asset GL

Q Equity GL

R Long Term Asset GL

S Assumption Assumption

T Long Term Liability GL

W Modeled Modeled

X Expense GL

XR Exchange Rate Predefined

Y Non-Operating Expenses GL

Z Custom Custom

description N The textual description of the account, if any, as entered in Account Administration Total current assets

shortName N The short name for the account, if any, as entered in Account Administration CA

N The time stratum of the account, as the code of the time stratum. For Cube accounts, Modeled Month
timeStratum
accounts, and cube-entered GL accounts, the time stratum is determined by the time stratum of

Supported in API v16 their owning sheet. All other accounts use the default time stratum set within the Time Admin UI.

displayAs N The account's output display setting: NUMBER, CURRENCY, or PERCENT. Only provided for NUMBER
accounts that have a Display As property in Account Administration.

isAssumption N Either "0" or "1", indicating whether the account is an assumption. This is set to 1 for 1
assumptions and exchange rate accounts.

suppressZeroes N Flag indicating whether the account allows users to suppress zeroes on sheets or not. 0 is 1
disallowed, 1 is allowed. Only provided for accounts which have a Suppress Zeroes property in
Account Administration.

isDefaultRoot N Either "0" or "1", indicating whether the account or account group is a default root. 1

decimalPrecision N Number of decimal places to display for numbers in this account. Default is 0. The special value 0
of 99 is used to indicate a Linked Account which inherits the decimal precision of its target. A
value of -1 means the account is a currency account and uses the precision of whichever
currency it is displaying.

planBy N For Cumulative accounts, indicates whether the account is plan by balance (BALANCE) or plan BALANCE
by delta (DELTA).

exchangeRateType N Only present for accounts with displayAs="CURERENCY". Possible values: any of the exchange E
rate type codes present in the instance, as configured in Manage Currencies. "A"=Monthly
Average, "E"=End of Month.

isImportable N 1
Indicates whether the account is able to accept imported data. 0 means the account is not
importable and 1 is importable. Only present if versionName or versionId is specified in the
request.

Note: isImportable only indicates that an account is available for import in the specified version,
not that the user making the API call has the permission to import into the version or account.
Use exportVersions to see which versions are available to the user for import.

balanceType N Indicates the balance type of an account, DEBIT or CREDIT. This attribute is empty if the account DEBIT
does not have an associated balance type. Only GL accounts have a balance type.

dataEntryType N Indicates the data entry type of an account. Either STANDARD or CUBE. A blank value indicates CUBE
that data entry type is not applicable to an account. For example, a linked account or a modeled
account will have a blank data entry type.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 247/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

timeRollUp N Indicates how the account behaves when rolled up over a time period. Can be SUM, SUM
WEIGHTED_AVERAGE, LAST, or AVERAGE. This will be empty for account groups and metric
accounts.

timeWeightAcctId N If this account has a timeRollup of WEIGHTED_AVERAGE, this will be the internal system id 133
number of the account from where the weights are determined. This will be empty if no weight
account exists or the account does not have a timeRollup of WEIGHTED_AVERAGE.

hasSalaryDetail N Either 0 or 1 to indicate whether this account has splits that require the Access Salary Detail 1
permission to be viewed. This will be empty if not applicable to this account.

dataPrivacy N Indicates which levels the account's values are public on and able to be referenced in other PRIVATE
levels when writing formulas. Can be PRIVATE so that the account's values are private,
PUBLIC_TOP so that the account's values are public at only the top level, or PUBLIC_ALL so
that the account's values are public at all levels. Assumptions do not have a dataPrivacy setting
since they are always public.

subType N Indicates whether the account is PERIODIC or CUMULATIVE. If an account is periodic, its value PERIODIC
in a given time period equals the net activity for the time period. Examples include revenue and
expense accounts. If an account is cumulative, its value equals the ending balance for a given
time period. This is the prior time period's value plus or minus any activity in the given time
period. Balance sheet accounts are cumulative. This will be empty for account groups and metric
accounts.

startExpanded N This indicates whether an account and its children start out in an expanded state when first 1
loading a sheet. This applies only for parent accounts. This will be empty for leaf accounts.

isBreakbackEligible N Either 0 or 1 to indicate whether this account can be used in a breakback. This applies only to 0
standard assumptions. This will be empty for other types of accounts.

levelDimRollup N Indicates how the account behaves when rolled up along a level or dimension. Can be SUM, NONBLANK_AVERAGE
WEIGHTED_AVERAGE, TEXT, or NONBLANK_AVERAGE. This will be empty for account
groups and metric accounts.

levelDimWeightAcctId N If this account has a levelDimRollup of WEIGHTED_AVERAGE, this will be the internal system id 118
number of the account from where the weights are determined. This will be empty if no weight
account exists or the account's levelDimRollup is not WEIGHTED_AVERAGE.

rollupText N If this account has a levelDimRollup of TEXT, then this is the text string that will show up in the None
cell indicating the rolled up value of the account.

enableActuals N 0 to show only plan data for the account. 1 to import actuals into the account. For linked 1
accounts, 0 will show actuals only if the linked account has them, and 1 will enable actuals for the
linked account. This will be empty for account groups and metric accounts.

isGroup Y 0 or 1 to indicate whether this is an account group or not. 1

isIntercompany N 0 or 1 to indicate whether this account is an intercompany account or not. 1

N The formula for the account, if it has one. ACCT.Revenue -


formula
ACCT.Expenses

Not available in API


v18+.

isLinked N 0 or 1 to indicate whether this account is a linked account or not. 1

isSystem N 0 or 1 to indicate whether this account is a system account or not. 1

owningSheetId N For accounts that can be on modeled and cube sheets, the internal system id number of the 17
sheet that this account is on. This will be empty if it is not such an account, or if it is such an
account but is not currently assigned to a sheet.

Contents of the Element

One nested account element for each direct child account of this account. One attributes element if account has one or more attributes associated with it.

attributes element

Tag Name attributes

Description Container for one or more attribute elements.

Attributes of the Element

Attribute Name Required? Value Example

(none)

Contents of the Element

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 248/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

One or more attribute elements.

attribute element

Tag Name attribute

Description Represents a single non-blank account attribute mapping to which an account is associated.

Attributes of the Element

Attribute Name Required? Value Example

name Y The name of the account attribute SEC Reporting

value Y The value of the account attribute associated with the account. Yes

attributeID Y The internal system id number of the account attribute. 10

valueID Y The internal system id number of the account attribute. 108

Contents of the Element

none

1.4.3.9 | exportActiveCurrencies

Important: This API only supports user access rules in API v22 and above.

Category Metadata retrieval

Description Returns metadata for the complete list of all currencies which have been configured in the system.

Permissions Required To Invoke None (must be valid credentials for the instance)

Parameters Required On Request Credentials

This method's request contains only a credentials tag to identify and authorize the calling user. Once verified, the method returns an XML document describing the
complete set of all currencies which have been configured in the system. A currency has been "configured" once it has been added to the currency list in Currency
Administration, even if it does not yet have an exchange rate. Instances which do not have the Multiple Currencies feature enabled return only a single currency in
this list.

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="exportActiveCurrencies" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd"/>
</call>

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 249/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Contents of the Element

(none)

Response Format

<?xml version='1.0' encoding='UTF-8'?>


<response success="true">
<output>
<currencies seqNo="42">
<currency id="2" code="EUR" precision="4" isReportingCurrency="0" userDefined="0" description="Euro Member Countries, Euro" />
<currency id="3" code="EUR1" precision="4" isReportingCurrency="0" userDefined="1" description="User-defined Euro 1" />
<currency id="1" code="USD" precision="2" isReportingCurrency="1" userDefined="0" description="United States of America, Dollars" />
</currencies>
</output>
</response>

response element

Tag Name response

Attributes of the Element

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true
warning messages in their response.

obsolete N If present on the response tag and set to true, this attribute indicates that the version of the method or API which is false
being invoked has become obsolete and is officially deprecated. While it continues to function at this time, it may
cease functioning in a short while. Typically, this attribute is not present.

Contents of the Element

A single optional messages element, and exactly one required output element.

output element

Tag Name output

Attributes of the Element

(none)

Contents of the Element

A single required currencies element. This output wrapper is standard on all API responses and encloses the valid output of any successful API call.

currencies element

Tag Name currencies

Description Container for one or more currency elements.

Attributes of the Element

Attribute Name Required? Value Example

seqNo

Added in API v17 but reserved for future use.

Contents of the Element

One or more currency elements.

currency element

Tag Name currency

Description Represents a single currency being returned in the response to an exportActiveCurrencies API call. For versions
previous to API v17, it will not show the user Defined attribute, or the user defined currencies.

Attributes of the Element

Attribute Name Required? Value Example

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 250/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

id Y The internal system ID number for the currency. This number can be used to uniquely identify the 1
currency, but is not used in any other API calls.

code Y The three-letter code for the currency, as specified in the ISO 4217 standard. usd

precision Y The typical decimal precision (number of digits after the decimal place) to be used when displaying 2
amounts in this currency. This precision is only used for accounts which have a display type of
Currency and have their decimal precision set to "Use currency's precision."

isReportingCurrency Y Whether the currency was selected by an admin as available for use in "arbitrary report conversions". 1
True=1, False=0.

Y Whether the currency was created by the user or not. True=1, False=0. 0
userDefined

Available in API
v17+

description Y Basic description of the currency, consisting of the currency's country and its name. United
States of
America,
Dollars

Contents of the Element

(none)

1.4.3.10 | exportAttributes

Important: This API only supports user access rules in API v22 and above.

Category Metadata retrieval

Description Returns metadata for the complete list of all attributes in the system.

Permissions Required To Invoke None (must be valid credentials for the instance)

Parameters Required On Request Credentials

This method's request contains only a credentials tag to identify and authorize the calling user. Once verified, the method returns an XML document describing the
complete set of all custom attributes (excluding the trading partner sys- tem attribute for consolidation instances), including all of their member values. Member
values within an attribute are returned in tree form, with parent members containing their children.

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="exportAttributes" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd"/>
</call>

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or his- tory of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 251/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

include element

Supported in API v17 +

Tag Name include

Description Represents a set of flags indicating what aspects of the 'attribute values' information should be included or
excluded from the response. This element is optional: if not present, all attributes will appear in the
response.

Attributes of the Element

Attribute Name Required? Value Example

N A list of ids which will appear in the API response. This acts like a filter. "1,2,3,14"
attributeIDs

Supported in API v17 +

N Indicates whether the response should include values inaccessible to the current user. 1
inaccessibleValues
Defaults to false. Only users with the "Modeling" or "Import to all levels" permissions may set
Supported in API v18 + this option to true.

N Indicates whether the response should include the phantom nodes in the response for each false
uncategorized
attribute. Defaults to false. The phantom nodes are included in response only when the user

Supported in API v22+ when has access to them.

the instance uses Access


Rules for security.

displayNameEnabled N true
displayNameEnabled=true indicates exportAttributes should respect display name properties
Only available in API v30+ for when Enable Display Name is ON for the instance.
instances that enable display
displayNameEnabled=false indicates the exportAttributes API should continue following the
name.
pre-v30 API contract even when Enable Display Name is ON for the instance. The
exportAttributes API ignores the display name properties.

The default value for displayNameEnabled is "false".

Contents of the Element

(none)

Response Format

<?xml version='1.0' encoding='UTF-8'?>


<response success="true">
<output>
<attributes>
<attribute id="13" name="AP Eligible" type="account" seqNo="21">
<attributeValue id="118" name="No" />
<attributeValue id="117" name="Yes">
<attributeValue id="136" name="Full" />
<attributeValue id="135" name="Partial" />
</attributeValue>
</attribute>
<attribute id="11" name="Product Line" type="account" seqNo="3">
<attributeValue id="34" name="A" />
<attributeValue id="35" name="B" />
</attribute>
<attribute id="9" name="Corporate Discount" type="level" seqNo="11">
<attributeValue id="56" name="Available" />
<attributeValue id="54" name="Not Applicable" />
<attributeValue id="57" name="Not Available" />
<attributeValue id="55" name="TBD" />
</attribute>
<attribute id="10" name="Tax Code" type="level" seqNo="33">
<attributeValue id="146" name="TT-PYT" />

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 252/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

<attributeValue id="145" name="TT-TRE" />


</attribute>
<attribute id="16" name="Industry" type="dimension" dimension-id="15" seqNo="43">
<attributeValue id="335" name="Apparel">
<attributeValue id="354" name="Mens Apparel" />
<attributeValue id="355" name="Shoes" />
<attributeValue id="356" name="Womens Apparel" />
</attributeValue>
</attribute>
</attributes>
</output>
</response>

response element

Tag Name response

Attributes of the Element

Attribute Required? Value Example


Name

success Y Either "true" or "false", indicating whether the API call was successful or not. Even successful calls may contain true
warning messages in their response.

obsolete N If present on the response tag and set to true, this attribute indicates that the version of the method or API which is false
being invoked has become obsolete and is officially deprecated. While it continues to function at this time, it may
cease functioning in a short while. Typically, this attribute is not present.

Contents of the Element

A single optional messages element, and exactly one required output element.

output element

Tag Name output

Attributes of the Element

Attribute Name Required? Value Example

(none)

Contents of the Element

A single required attributes element. This output wrapper is standard on all API responses and encloses the valid output of any successful API call.

attributes element

Tag Name attributes

Description Container for zero or more attribute elements. Attributes will be ordered so that attributes will be in the following order according
to type: 'account', 'level', and 'dimension'. Attributes with the same type will be ordered by name.

Attributes of the Element

Attribute Required? Value Example


Name

(none)

Contents of the Element

Zero or more attribute elements.

attribute element

Tag Name attribute

Description Represents a single attribute being returned in the response to an exportAttributes API call.

Attributes of the Element

Attribute Name Required? Value Example

id Y The internal system ID number for the attribute. 16

name Y The name of the attribute as it appears on the attribute administration page. Industry

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 253/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

displayNameType The internal representation of the selected display name format for values on the Attribute NAME
Administration pages.
Only available in
API v30+ for NAME
instances that CODE
enable display NAME_CODE
name. CODE_NAME

type Y The type of the attribute. This will be 'account' if the attribute is for an account, 'level' if the attri- bute is dimension
for a level, or 'dimension' if the attribute is for a dimension.

Y 1 if the selected attribute has "Level/Account/Dimension import automatically creates attribute values" 0
autoCreate
field set, 0 otherwise.
Supported in API
v20+

Y 1
keepSorted "1" indicates values for this attribute are always sorted alphabetically.

Supported in API "0" (or not specified) means attribute values sort based on their position in the request payload.
v20+
If the XML contains both the parent and at least one sibling of an unlisted hierarchical attribute value, the
unlisted value is moved to the end of the listed siblings during the update (in reordering the children of
the parent, all listed siblings come first, in the order they are specified in the XML. All unlisted siblings
come last, in the order they already have in the system).

keepSorted applies to children of each parent attribute value.

dimension-id N The id of the dimension if the attribute is of type 'dimension'. 15

seqNo

Added in API v17


but reserved for
future use.

Contents of the Element

Zero or more optional attributeValue elements. Each enclosed attributeValue element represents a "root attribute value" in the attribute, a value which has no
parent value.

attributeValue element

Tag Name attributeValue

Description Represents a single member value of an attribute being returned in the response to an
exportAttributes API call.

Attributes of the Element

Attribute Name Required? Value Example

id Y The internal system ID number for this member value of the attribute. 34

code N The code of the member value of the attribute. Available

Only available in API v30+ for instances that


enable display name.

name Y The label for the member value of the attribute as displayed on the attribute Available
administration page.

displayName N The displayName of the member value of the attribute as derived from the Available
displayNameType of the attribute.
Only available in API v30+ for instances that
enable display name.

description N The description of the member value of the attribute as displayed on the
attribute administration page.
Only available in API v30+ for instances that
enable display name.

Contents of the Element

Zero or more optional attributeValue elements. Each enclosed attributeValue element represents a "child attribute value" of this attribute value, whose
members implicitly roll up to this value.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 254/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

1.4.3.11 | exportConfigurableModelData

Supported in API v19 +

Category Data retrieval

Description Returns a set of rows from the requested modeled sheet in the requested version and instance.

Permissions Required To Invoke Read access to the sheet, version, and instance being requested.

Parameters Required On Request Credentials, Modeled-Sheet, Version, Job

This method's request contains the parameters that will be used to determine which modeled rows will be returned. User must have read access to the sheet,
version, and instance containing the modeled sheet.

Tip: Best Practice: Invoke exportSheets to retrieve the modeled sheet name and ID needed for your exportConfigurableModelData request.

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="exportConfigurableModelData" callerName="me">
<credentials login="[email protected]" password="password"/>
<version name="Budget 2017"/>
<job jobNumber="0" pageNumber="1" pageSize="200"/>
<modeled-sheet name="Capital Model" isGlobal="false" includeAllColumns="false" useNumericIDs="false"/>
<filters>
<timeSpan end="Dec-2017"/>
<levels>
<level name="Hosting" includeDescendants="true"/>
</levels>
</filters>
</call>

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as this
user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the user must
have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

Contents of the Element

(none)

version element

Tag Name version

Description Specifies which version to retrieve the modeled rows from.

Attributes of the Element

Attribute Name Required? Value Example

Name Y The name of the version. Budget 2

Contents of the Element

Contains one or more level elements.

modeled-sheet element

Tag Name modeled-sheet

Description Specifies which modeled sheet to retrieve the modeled rows from. Uses the id or name of the model sheet as the
identifier.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 255/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Attributes of the Element

Attribute Name Required? Value Example

Name Y The name of the modeled sheet. Working


Budget

isGlobal N Specifies if the sheet is user assigned sheet or a level assigned sheet. If true the sheet is a user- false
assigned sheet. If false the sheet is a level assigned sheet.

N Specifies whether to include all columns in the response. Any value other than true will result as false
includeAllColumns
false.

Supported in API v22+

N true
useNumericIDs Specifies if the internal IDs in the response should be in a numeric format. E.g. "100" vs "S100". If it
is absent or set to anything other than "true" (case insensitive), it results in false.
Supported in API v22+
Example split ID when true:

271

Example split ID when false:

S271

displayNameEnabled N false
displayNameEnabled=true indicates exportConfigurableModelData should respect display name
Only available in API properties of code, displayNameType, and description when Enable Display Name is ON for the
v31+ for instances that instance.
enable display name.
displayNameEnabled=false indicates the exportConfigurableModelData API should continue
following the pre-v30 API contract even when Enable Display Name is ON for the instance. The
exportConfigurableModelData API ignores the properties code, displayNameType and
description.

The default value for displayNameEnabled is "false".

includeCodes false
This option is meaningful only when the effective enable display name setting is ON.
Only available in API
Set to "true" to include the code column for level and each dimension in the API response.
v31+ for instances that
enable display name. Set to "false" to exclude the code column for level and each dimension in the API response.

Default value is false.

includeNames false
This option is meaningful only when the effective enable display name setting is ON.
Only available in API
Set to "true" to include the name column for level and each dimension in the API response.
v31+ for instances that
enable display name. Set to "false" to exclude the name column for level and each dimension in the API response.

Default value is false.

includeDisplayNames false
This option is meaningful only when the effective enable display name setting is ON.
Only available in API
Set to "true" to include the display name column for level and each dimension in the API response.
v31+ for instances that
enable display name. Set to "false" to exclude the display name column for level and each dimension in the API response.

Default value is false.

Contents of the Element

(none)

job element

Tag Name job

Description Specifies the API handler serial number for the API call job.

Attributes of the Element

Attribute Required? Value Example


Name

jobNumber Y 2
0 for the initial call. A job number returns in the response. Use this job number for every subsequent request.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 256/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

The API handler will then create a sheet model which will load the sheet into memory. The sheet remains in
memory until the request times out and gets garbage collected. The API then returns the first page along with
the other parameters listed above.

pageSize N 200
Overwrites the default pageSize to let the API user specify how many rows per page get retrieved for each call.
It only takes effect on the first call, when jobNumber="0". If the pageSize given is larger than the number of
rows in the sheet, pageSize is ignored.

If the number of cells in the sheet is less than 20,000, then the sheet row limit is ignored.

pageNumber Y 1
Specifies the page number being requested if more than one page exists. The page number index starts with
"1."

The API handler is for the same user who makes subsequent call using the same request API and
authentication.

The subsequent request must be within 3 minutes of the last response time.

Contents of the Element

(none)

filters element

Tag Name filters

Description Container for the all the filters related elements.

Attributes of the Element

Attribute Name Required? Value Example

Contents of the Element

The levels element.

levels element

Tag Name levels

Description Container for one level element Specifies the level to retrieve rows from.

Attributes of the Element

Attribute Name Required? Value Example

Contents of the Element

One level elements.

level element

Tag Name level

Description Specifies a level by which to filter the request.

Attributes of the Element

Attribute Name Required? Value Example

name Y The name of the level being requested. HQ

Name is only supported for pre-v30 requests when the effective enable display name settings
is OFF.

includeDescendants N true
Indicates whether the export should include all descendants of the specified level or not. If set
to true, all children of this level will export, as will their children, and so on. If set to false, this
level will be exported alone.

Indicating "false" allows exporting levels indicated as level (only) in the Adaptive Planning web
UI.

code N false
The code of the level to be exported. This code is as specified in Level Administration. The
Only available in API v31+ for code attribute has been added in API v31.
instances that enable display

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 257/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

name. Use name attribute for pre-v30 API request and when the effective enable display name
setting is OFF.

Contents of the Element

The level name

timeSpan element

Tag Name timeSpan

Description
If the model sheet has a timeSpan element, the start and end specify the time range of data to export from the sheet. If timeSpan
is not included, data from the version's full date range export. Use an internal time period code (See Set Up Calendars) or
localized time label from the sheet view to indicate a timeSpan start or end.

TimeSpan duplicates the functionality of the Display Options > Time settings for leaf time selections in Start and End for a
modeled sheet in the Adaptive Planning UI.

Attributes of the Element

Attribute Required? Value Example


Name

start N The time code or localized time label visible in the sheet of the first time period in the range to export. The start time
Jan-2016
period must be a leaf time period. If start is not indicated, the start of the version is used.
01/2016

end N The time code or localized time label of the last time period in the range to export. The end time period must be a
Nov-
leaf time period. If end is not indicated, the end of the version is used.
2016

11/2016

timeSpan examples
Start of January 2016 and end April 2016. Jan-2016 is the internal time period code indicated by the Time Administration UI. 04/2016 is a sheet time label.

<timeSpan end="04/2016"/>

Start of February 2016 and end at the version's end date. 02/2016 is a sheet time label.

<timeSpan/>

Start with the version's start date and end November 2016. Nov-2016 is the internal time period code indicated by the Time Administration UI.

<timeSpan end="Nov-2016"/>

Response Format

<?xml version="1.0" encoding="UTF-8"?>


<response success="true">
<output>
<data jobNumber="3">
<![CDATA["InternalID","Plan","CapitalAssetClass","Label","Price","Currency","Mar-2016","Q1-FY16","Apr-2016","May-2016","Jun-2016","Q2-FY16","Jul-2016"
"S1325","Development","Furniture","Chairs","90","USD","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"S1326","Development","Furniture","Desks","200","USD","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"S1327","Development","Computers","EngineerWS","2500","USD","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"S1328","Development","Computers","ManagerWS","1000","USD","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"S1323","G & A","Facility","Garage","","USD","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"S1324","G & A","OtherEquipment","CD_Maker","","USD","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""]]>
</data>
</output>
</response>

response element

Tag Name response

Attributes of the Element

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 258/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

warning messages in their response.

Contents of the Element

A single optional messages element, and exactly one required output element.

messages element

Tag Name messages

Description Container for one or more message elements.

Attributes of the Element

(none)

Contents of the Element

One or more message elements.

message element

Tag Name message

Description Represents a message being sent from the system back to the caller. Messages are used for error messages when requests do
not succeed, for warning messages when requests do succeed, and for confirmation messages upon success.

Attributes of the Element

Attribute Required? Value Example


Name

key N When given, a key is a way to identify a particular message or type of message, useful for purposes of invalid-
automated error logging and recovery in client programs. Keys do not change under different locales of attributevalueid
requests, even when the language of the message changes. Keys also are unlikely to change in the future
due to wording adjustments or terminology changes.

Contents of the Element

The text of the message. This text is in the language of the locale specified on the request (assuming that locale is supported). The text may also contain
variable information such as the number of rows which were processed, or the particular column or value which caused an error.

job element

Tag Name job

Description Specifies the job and data paging information for the data returned so the user can make a series of calls to extract all the
data for the filtered dataset from the model sheet.

Attributes of the Element

Attribute Name Required? Value Example

jobNumber N The dedicated API handler serial number assigned by the server for the API call job. Used in all subsequent 2
requests.

numberOfPages N The total number of pages of data available for the filter set. 3

pageNumber N The page number for the current dataset being returned. 1

Contents of the Element

One or more level elements. If the request includes inaccessible levels, there will be only one level element, which represents the top level of the organization.

output element

Tag Name output

Description
The response returns a CDATA block containing a CSV-formatted data dump of the modeled rows being exported. The first row
of the CDATA block is the "header row" of the CSV, and all following rows are data rows. If no rows match the filtering request,
then only the header row is output.

The columns of the CSV begin with up to five hardcoded internal-focused columns. These columns can identify the row and some
of its immutable properties. The columns present on the sheet follow, regardless of whether:

The individual user may have hidden them in their display options
The columns are read-only or not.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 259/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

All columns in the API response are the visible/defined columns for the sheet, with their declared column header being their label
in the header row. This includes any attribute columns placed on the sheet. For the timespan account, the column headers are
the months of the current version in the same format as the exportData API.

Attributes of the Element

Attribute Required? Value Example


Name

Level N The name of the level where this row or split/row resides. This appears regardless of whether the level being Engineering
requested is a rollup level or not.

Contents of the Element

A CDATA block containing:

Rows formatted as valid CSV.


Strings are enclosed in double quotes.
Numbers are emitted in canonical form (not locale-sensitive format). Commas are removed
Dimensions and text selectors emit the selected value they have. If they have no value, they emit an empty string.
When emitting parent rows, any splittable columns are shown as blank in the CSV (they do not attempt to show any rollup or 'various' values).
When emitting child/split rows, any non-splittable columns will be shown as containing the value from their parent row. This is identical to how sheet
behaves in the Adaptive Planning web UI.

1.4.3.12 | exportCustomerLogo

Category Metadata retrieval

Description Returns a URL that can be used to retrieve the Customer Logo

Permissions Required To Invoke None (must be valid credentials for the instance)

Parameters Required On Request Credentials

This method's request contains only a credentials tag to identify and authorize the calling user. Once verified, the method returns an XML document containing the
URL which points to the Customer Logo.

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="exportCustomerLogo" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd"/>
</call>

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 260/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Response Format

<?xml version='1.0' encoding='UTF-8'?>


<response success="true">
<output>
<logos>
<logo url="/logo/DCNT/55.jpg?ticket=-1183195070:1:s&[email protected]" />
</logos>
</output>
</response>

response element

Tag Name response

Attributes of the Element

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true
warning messages in their response.

obsolete N If present on the response tag and set to true, this attribute indicates that the version of the method or API which is false
being invoked has become obsolete and is officially deprecated. While it continues to function at this time, it may
cease functioning in a short while. Typically, this attribute is not present.

Contents of the Element

A single optional messages element, and exactly one required output element.

output element

Tag Name output

Attributes of the Element

(none)

Contents of the Element

A single accounts element. This output wrapper is standard on all API responses and encloses the valid output of any successful API call.

logos element

Tag Name logos

Description Container for one logo element.

Attributes of the Element

Attribute Name Required? Value Example

(none)

Contents of the Element

Exactly one logo element.

logo element

Tag Name logo

Description Represents a URL by which the Customer Logo can be retrieved in the response to an exportCustomerLogo API call.

Attributes of the Element

Attribute Required? Value Example


Name

url Y URL by which the Customer Logo can be retrieved, or the /logo/DCNT/55.jpg?
empty string if no customer logo is defined for this instance. ticket=-1183195070:1:s&[email protected]

Contents of the Element

(none)

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 261/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

1.4.3.13 | exportData

Category Data retrieval

Description Returns a set of data from the requested version in the request instance.

Permissions Required To Invoke None (must be valid credentials for the instance)

Parameters Required On Request Credentials, Version, Format, Filters

This method's request contains the parameters that will be used to search the data in the specified version and return values which match the requested filters and
format. This is the basic method used to retrieve data from Adaptive Planning, and can be used to retrieve values from any accounts, including standard accounts,
GL accounts, modeled accounts, cube accounts, custom accounts, metric accounts, assumptions, and exchange rates.

If you export a plan version, your export will include actuals data for any actuals overlay periods. You will see actuals or plan data as you would in the sheets UI.

Note: Values on individual splits aggregate when exported by exportData.


Note: For API v16 and beyond, exportData also exports data for virtual versions.

See customReportValues for a more targeted approach to data retrieval.

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="exportData" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd" instanceCode="INSTANCE1"/>
<version name="Budget 2014" isDefault="false"/>
<format useInternalCodes="true" includeUnmappedItems="false" />
<filters>
<accounts>
<account code="A100" isAssumption="true" includeDescendants="false"/>
<account code="L100" isAssumption="false" includeDescendants="true"/>
</accounts>
<levels>
<level name="Development" isRollup="true" includeDescendants="true"/>
<level name="QA" isRollup="false" includeDescendants="false"/>
</levels>
<dimensionValues>
<dimensionValue dimName="Customer" name="A Corp" directChildren="true"/>
<dimensionValue dimName="Region" name="" uncategorized="true" directChildren="false"/>
</dimensionValues>
<timeSpan end="12/2014"/>
</filters>
<dimensions>
<dimension name="Product"/>
<dimension name="CountryRegion"/>
</dimensions>
<rules includeZeroRows="false" includeRollups="false" markInvalidValues="false" markBlanks="false" timeRollups="single">
<currency useCorporate="false" useLocal="false" override="AUD"/>
</rules>
</call>

Each invocation of this API call must contain exactly one element of each of the listed types:

credentials
version
format

A request also may contain one of the following elements:

filters
accounts > account
levels > level
dimensionValues > dimensionValue
timeSpan
dimensions > dimension
rules > currency

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action).
Note: The Export Capabilities permission in the Planning UI does not affect exportData.

Attributes of the Element

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 262/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

version element

Tag Name version

Description Indicates which version should be used to retrieve the requested data. A version must be provided for each call.

Attributes of the Element

Attribute Required? Value Example


Name

name N The name of the version to be used to receive the data. Only one version can be accessed within a single API call. Budget
If a name is not provided, the isDefault flag must be set to true on this element. 2014

isDefault N If the caller wishes to access the current default version of the instance regardless of its name, this attribute can be false
set to true, in which case the name attribute of the tag (if present) is ignored. Otherwise, if this value is false or if
this attribute is not present, a version with the supplied name must exist and be accessible to the user in order for
this call to succeed.

Contents of the Element

(none)

format element

Tag Name format

Description Indicates the type of formatting that should be used on the individual fields of the data to be returned.

Attributes of the Element

Attribute Name Required? Value Example

useInternalCodes Y Set to "true" to have account codes and level codes emitted using the codes for each entered in the true
Account and Level Admins. Set to "false" to have codes mapped in the output data using the Export
Account Mappings or Export Level Mappings found on the Export tab.

useIds N true
Set to "true" to have the accounts/levels in responses expressed in their IDs, instead of their codes.
Also, it will require the accounts in `<filters>` section to be expressed in their IDs.

Defaults to "false" if it is not present in the request.

includeUnmappedItems N This attribute only applies if useInternalCodes is false and export mappings are used. If not otherwise false
specified, items which have no Export Mapping on the Export tab will not be emitted in the output. If
includeUnmappedItems is set to "true", then accounts or levels which have no Export Mapping will be
emitted, using their internal codes (the ones set in Account or Level Administration) as their codes,
yielding a blend of mapped and unmapped items in the data, but a complete set of data. If this flag is
set to "false", some requested items may not be emitted, if those items have no Export Mapping.

includeCodes N false
This option is meaningful only when the effective enable display name setting is ON.

Set to "true" to include the code column for level in the API response.

Set to "false" to exclude the code column for level in the API response.

Default value is false.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 263/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

includeNames N This option is meaningful only when the effective enable display name setting is ON. false

Only available in API Set "true" to include the name column for level in the API response.
v30+ for instances that
Set "false" to exclude the name column for level in the API response.
enable display name.
Default value is false.

includeDisplayNames N false
This option is meaningful only when the effective enable display name setting is ON.
Only available in API
Set "true" to include the display name column for level in the API response.
v30+ for instances that
enable display name. Set "false" to exclude the display name column for level in the API response.

Default value is false.

displayNameEnabled N false
displayNameEnabled=true indicates exportData should respect duplicate metadata properties of
Only available in API code, displayNameType, and description when Enable Display Name is ON for the instance.
v30+ for instances that
displayNameEnabled=false indicates the exportData API should continue following the pre-v30 API
enable display name.
contract even when Enable Display Name is ON for the instance. The exportData API ignores the
duplicate metadata properties code, displayNameType and description.

The default value for displayNameEnabled is "false".

Contents of the Element

(none)

filters Element

Tag Name filters

Description Holds the specification for the filters which determine which data from the requested version is retrieved by the API. This element specifies the
accounts, levels, months, and dimension values which will be retrieved.

Attributes of the Element

(none)

Contents of the Element

A single required accounts element, a single optional levels element, a single required timeSpan element, and an optional single dimensionValues element.

accounts element

Tag Name accounts

Description Container for one or more account elements.

Attributes of the Element

(none)

Contents of the Element

One or more account elements.

account element

Tag Name account

Description Specifies an account to have its data exported in the exportData API call. If more than one account element is placed
within the accounts element, all accounts which match any of the account elements will be exported. If any given
account element results in no accounts which match it, that element is ignored while the other elements still apply.

Attributes of the Element

Attribute Name Required? Value Example

code Y The code of the account to be exported. This code is as specified in Account Administration. Current_Assets

isAssumption Y Indicates whether the code specifies an assumption or a non-assumption account. You can us a false
single code for both an assumption and account. Use this flag to indicate the type of account.

includeDescendants Y Indicates whether the export should include all descendants of the specified account or not. If set true
to true, all children of this account will be exported, as will their children, etc. If set to false, this
account will be exported as a single rollup account value.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 264/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Contents of the Element

(none)

levels element

Tag Name levels

Description Container for one or more level elements.

Attributes of the Element

(none)

Contents of the Element

One or more level elements. If the request includes inaccessible levels, there will be only one level element, which represents the top level of the organization.

level element

Tag Name level

Description Specifies an organization level to have its data exported in the exportData API call. If more than one level element is
placed within the levels element, all specified levels will be exported. If any given level element has no matching levels
in the instance, that element is ignored while the other elements still apply.
You must filter by code instead of name when meeting all of these conditions:

The instance enables duplicate metadata by turning on Display Name.


Calling API v30 or greater.
The displayNameEnabled property the format element is true.

Attributes of the Element

Attribute Name Required? Value Example

code Y The code of the level to be exported. This code is as specified in Organization Administration. Development

Only available in Code is supported only when the effective enable display name setting is ON.
API v30+ for
instances that
enable display
name.

name Y The name of the level to be exported. This name is as specified in Organization Administration. Development

Name is only supported for pre-v30 API requests when the effective enable display name settings is
OFF.

isRollup Y If this level has children, isRollup="true" will output the rollup value for the level (including the values false
of all of its children) and isRollup="false" will only output the uncategorized value for the level (the
values entered in Edit Data for that level). If this level does not have children, the isRollup must be
set to false (or omitted from the tag entirely).

includeDescendants Y Indicates whether the export should include all descendants of the specified level or not. If set to true
true, all children of this level will also be exported, as will their children, etc. If set to false, this level
will be exported alone. Note this is different than isRollup: isRollup affects which value will be output
for this level, while include Descendants indicates whether descendants should also be included in
the export. If both isRollup and includeDescendants are set to true and the level is a parent level, the
output will contain values for both rollup and non-rollup (uncategorized) levels for this level and each
of its descendants.

Contents of the Element

(none)

timeSpan element

Tag Name timeSpan

Description Indicates which time periods should be returned in the response. Time periods between the specified range, inclusive, are
included in the output as separate columns of data; they are not aggregated or rolled up.

Attributes of the Element

Attribute Required? Value Example


Name

start Y The code of the first time period in the range of time periods to have their data exported. The start time period must 01/2015

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 265/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

be a leaf time period.

end Y The code of the last time period in the range of time periods to have their data exported. The end time period must 03/2015
be a leaf time period.

stratum N month
The code of the time stratum for the exported data. When specified, the start and end time periods must fall within
the time stratum. The time stratum must be equal to or greater than the account with the highest time stratum in the
request. See Model Dependent Time for more information

For example, indicating a stratum of quarter requires all of the accounts to have the stratum of quarter, year or
larger.

Contents of the Element

(none)

dimensionValues element

Tag Name dimensionValues

Description Container for one or more dimensionValue elements. This element is optional and should not appear if no dimension value filtering is desired.

Attributes of the Element

(none)

Contents of the Element

One or more dimensionValue elements.

dimensionValue element

Tag Name dimensionValue

Description Indicates that the exported data should contain only values which match the specified dimensionValue. Multiple
values from different dimensions in the dimensionValues element operate as if grouped by their dimensions.
Data returns if at least one of the dimensionValues matches in each dimension. For dimensionValues within the
same dimension, data can match on any dimension value. For example, if a request specifies dimension values
of Region=East, Region=West, and Product=Product_A, then data must match either East or West Region, but
must also match Product_A Product in order to be exported.
You must filter by code instead of name when meeting all of these conditions:

The instance enables duplicate metadata by turning on Display Name.


Calling API v30 or greater.
The displayNameEnabled property of the format element is true.

Attributes of the Element

Attribute Name Required? Value Example

dimName N The name of the dimension to which the dimension value (see name attribute below) belongs. Region

code N The code of the dimension value to be exported. The code attribute is meaningful only when the
effective enable display name setting is ON for the instance.
Only available in API v30+
for instances that enable
display name.

name N The name of the dimension value to be exported. US West

Name is only supported for pre-v30 API requests when the effective enable display name settings
is OFF.

directChildren N If set to true, this will cause the API to export rollup data for each of the direct children of this false
dimension value, but not a rollup for the value itself. In other words, this will cause exportData to
export the values "one level down" in the dimension tree from the specified value. If not specified,
defaults to false.

uncategorized N If set to true, matches the "uncategorized" value of the dimension value and not the values of any true
of its descendant values (if any). Has no effect on dimension values with no children. If not
specified, defaults to false.

uncategorizedOfDimension N 15
Specify the uncategorizedOfDimension in place of the dimName/name attributes.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 266/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

If specified the value of the attribute should be an internal system ID number of a


dimension (not a dimension value) and the filter is specifying that data must be completely
uncategorized in this dimension in order to match the filter.
The directChildren and uncategorized attributes will be ignored and assumed to be false
and true respectively.
Ignored if dimName is specified.

directChildrenOfDimension N 12
Specify the directChildrenOfDimension in place of the dimName/name attributes.

If specified the value of the attribute should be an internal system ID number of a


dimension (not a dimension value) and the filter is specifying all the first level dimension
values of the dimension.

The directChildren and uncategorized attributes will be ignored and assumed to be true
and false respectively.

Ignored if dimName or uncategorizedOfDimension is specified.

id N 14
Specify the id in place of the dimName/name attributes.

The internal system ID number of the dimension value to be exported. Should be


specified in place of the dimName/ name attributes to specify the dimension value. To
determine internal IDs, see the exportDimensions API.

Ignored if either dimName, uncategorizedOfDimension or directChildrenOfDimension is


specified.

Contents of the Element

(none)

dimensions element

Tag Name dimensions

Description Container for one or more dimension elements.

Attributes of the Element

(none)

Contents of the Element

One or more dimension elements.

dimension element

Tag Name dimension

Description Indicates that the exported data should be broken down, or sliced, by the specified dimension. Note that this tag is not a part of
the filters tag and does not control filtering: it instead controls how many rows are exported for each account/level combination.
For each dimension specified in the dimensions tag, each existing combination of values will be exported as a separate row of
data. Each dimension present in the dimensions element also causes an extra column to appear in the output, labeled with that
dimension name.

Attributes of the Element

Attribute Required? Value Example


Name

name Y Name of the dimension by which the export should be sliced. Rows of data in the export which cannot be sliced by Customer
the dimension will appear only once and will show the dimension name itself in the column where the dimension
value name for this dimension would appear.

Contents of the Element

(none)

rules element

Tag Name rules

Description Specifies some extra output rules that control which types of rows are emitted and how some field values will be
rendered.

Attributes of the Element

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 267/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Attribute Name Required? Value Example

includeZeroRows N true
Set to "true" to emit rows even if they contain only zeroes or blanks. Set to "false" to omit rows without
data from the output. Default value is false.

This option is not available within the application user interface for exports that include dimensions.

For API calls, True gets ignored when exporting data by dimension. It will only emit data for dimension
values that have data.

N If set to true, rollup values for all accounts and levels in the filters tag will be included in addition to the false
includeRollups
values for their descendants. This attribute does not affect how custom dimensions specified in

Available in API v24 dimensionValue filters or in the dimensions tag behave. Default value is false. The includeRollups flag

and earlier. only applies when no explicit filtering is being applied for accounts or for levels. If any individual
accounts are included in a filter, you need to specify the individual rollup accounts if you want them
Not available in API included.
v25+.

N If set to true, rollup values for all accounts in the filters tag will be included in addition to the values for false
includeRollupAccounts
their descendants. This attribute does not affect how custom dimensions specified in dimensionValue
Available in API v25+. filters or in the dimensions tag behave. Default value is false.

N If set to true, rollup values for all levels in the filters tag will be included in addition to the values for false
includeRollupLevels
their descendants. This attribute does not affect how custom dimensions specified in dimensionValue
Available in API v25+. filters or in the dimensions tag behave. Default value is false.

markInvalidValues N If set to true, the export will add the letter "I" to invalid values. Otherwise adds "=NA()" to invalid false
values, to make them Excel compatible. Default value is false.

N false
markBlanks If set to true, blank values will be output as "B". Otherwise, values which are blank will be output as
zeroes. Default value is false.
Updated in API v24.
When includeZeroRows=false, rows with a combination of only blanks and zeroes will not output in
the response, even if markBlanks=true.

timeRollups N Has three possible values: true, false, and single. If set to true, quarter and year rollups will appear in false
their proper place within the exported span of months. Quarter rollups appear immediately after the
last month of their quarter, and year rollups appear immediately after the quarter rollup for their last
quarter. If set to single, no individual months, quarters, or years are returned and only a single time
rollup of all months covered in the timespan element is returned. If set to false, only individual months
are returned, with no time rollup columns. Default value is false.

Contents of the Element

An optional currency element to specify what currency should be used in the export.

currency element

Tag Name currency

Description Indicates which currency should be used in the output when emitting the values of currency accounts.

Attributes of the Element

Attribute Required? Value Example


Name

useCorporate N Only one of the three attributes can be set for a currency element. If useCorporate is set to true, it indicates false
that the "corporate currency" (the currency at the top of the organization tree) should be used. Default value is
false.

useLocal N Only one of the three attributes can be set for a currency element. If useLocal is set to true, it indicates that false
currency values should be emitted in the currency of the Organization Level where they reside. Each row of the
output indicates an Organization Level, and currency values on that row will be in that level's currency. Default
value is false.

override N Only one of the three attributes can be set for a currency element. If override is present, it must specify the AUD
three-letter currency code of one of the configured currencies for the instance. When specified, all currency
amounts in the export will be converted to that currency.

Contents of the Element

(none)

Response Format

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 268/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

<?xml version='1.0' encoding='UTF-8'?>


<response success="true">
<messages>
<message key="warning-invalid-timespan-start">Ignoring start of timespan, which precedes start of version; timsepan start: Nov-2009, version start date: Jan-20
</messages>
<output><![CDATA[
Account Name,Account Code,Level Name,[01/2014,02/2014,03/2014,04/2014,05/2014,06/2014,07/2014,08/2014,09/2014,10/2014,11/2014,12/2014]
"Benefits",30120,"Engineering (Rollup)",10653.75,10653.75,10653.75,11506.05,11506.05,11506.05,11506.05,11506.05,11506.05,10462.05,10426.05,10426.05
"Furniture",70310,"Engineering (Rollup)",1740.0,2610.0,2610.0,2610.0,2610.0,2610.0,2610.0,2610.0,2610.0,2610.0,2610.0,2610.0
...
]]>
</output>
</response>

response element

Tag Name response

Attributes of the Element

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true
warning messages in their response.

obsolete N If present on the response tag and set to true, this attribute indicates that the version of the method or API which is false
being invoked has become obsolete and is officially deprecated. While it continues to function at this time, it may
cease functioning in a short while. Typically, this attribute is not present.

Contents of the Element

A single optional messages element, and exactly one required output element.

messages element

Tag Name messages

Description Container for one or more message elements.

Attributes of the Element

(none)

Contents of the Element

One or more message elements.

message element

Tag Name message

Description Represents a message being sent from the system back to the caller. Messages are used for error messages when requests do
not succeed, for warning messages when requests do succeed, and for confirmation messages upon success.

Attributes of the Element

Attribute Required? Value Example


Name

key N When given, a key is a way to identify a particular message or type of message, useful for purposes of invalid-
automated error logging and recovery in client programs. Keys do not change under different locales of attributevalueid
requests, even when the language of the message changes. Keys also are unlikely to change in the future
due to wording adjustments or terminology changes.

Contents of the Element

The text of the message. This text is in the language of the locale specified on the request (assuming that locale is supported). The text may also contain
variable information such as the number of rows which were processed, or the particular column or value which caused an error.

output element

Tag Name output

Description Contains the resulting data of the export in an enclosed CDATA block.

Attributes of the Element

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 269/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

(none)

Contents of the Element

A CDATA block containing the CSV-formatted data of the export. Rows are separated by newline characters. The first row of returned data is the set of "column
headers" describing the format of each of the following rows. Dimensions and filtering elements are listed first, followed by the series of requested time period
values. Time period codes and system-generated labels such as the "(Rollup)" suffix on rollup levels are translated to the locale of the request when possible.
Values are emitted in normalized form, without commas, using a period as the decimal separator.

1.4.3.14 | exportDimensionFamilies

Category Metadata retrieval

Description Returns metadata describing the relationships between sets of accounts and sets of dimensions.

Permissions Required To Invoke None (must be valid credentials for the instance)

Parameters Required On Request Credentials

This method's request contains only a credentials tag to identify and authorize the calling user. Once verified, the method returns an XML document describing a set
of dimension families, which describe how specific sets of dimensions are related to specific sets of accounts. Each family consists of a set of accounts and a set of
dimensions, which indicates that those dimensions apply to those accounts, while other dimensions do not. Accounts and dimensions may belong to many families.
Families are defined as follows:

Accounts on a modeled sheet belong to a family for that sheet, which contains all dimensions placed on that sheet and all organization dimensions.
Accounts on a cube sheet belong to a family for that sheet, which contains all dimensions placed on that sheet and all organization dimensions.
Accounts on a standard sheet with dimensions belong to a family for that sheet, which contains all dimensions placed on that sheet and all organization
dimensions.

Standard sheets that do not have dimensions placed on them do not have an associated dimension family.

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="exportDimensionFamilies" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd"/>
</call>

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or his- tory of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not speci- fied, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

Response Format

<?xml version='1.0' encoding='UTF-8'?>


<response success="true">
<output>

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 270/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

<families>
<family name="Personal" id="381" accounts="734-739, 744" dimensions="9321,9422, 9455, 9458" />
<family name="Capital" id="382" accounts="853" dimensions="4" />
<family name="Sales" id="386" accounts="769, 4112" dimensions="" />
<family name="Balance" id="255" accounts="545, 66" dimensions="6,7" />
</families>
</output>
</response>

response element

Tag Name response

Attributes of the Element

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true
warning mes- sages in their response.

obsolete N If present on the response tag and set to true, this attribute indicates that the version of the method or API which is false
being invoked has become obsolete and is officially deprecated. While it continues to function at this time, it may
cease functioning in a short while. Typically, this attribute is not present.

Contents of the Element

A single optional messages element, and exactly one required output element.

output element

Tag Name output

Attributes of the Element

(none)

Contents of the Element

A single accounts element. This output wrapper is standard on all API responses and encloses the valid output of any successful API call.

families element

Tag Name families

Description Container for one or more family elements.

Attributes of the Element

Attribute Name Required? Value Example

(none)

Contents of the Element

One or more family elements.

family element

Tag Name family

Description Describes a single dimension family associated with a single modeled or cube sheet. A single family is also output for all non-
modeled, non-cube assumptions and exchange rates. This catch-all family has id = 0.

Attributes of the Element

Attribute Required? Value Example


Name

name Y The name of the dimension family. The family comprised of all non-cube assumptions and exchange Capital
rate accounts (which have no dimen- sions) will have the name '*'. The dimension family for a
standard sheet has the same name as the standard sheet, while the dimension fam- ily for a cube or
modeled sheet uses the sheet's prefix as the family name.

id Y The id of the dimension family, which is the ID of the sheet this family is described by. 3

accounts Y The set of account ID numbers belonging to this family. IDs are the internal system IDs for the 734-739,744
accounts, visible in the exportAccounts API call. IDs are comma-separated and may contain
hyphenated ranges, which indicate that all IDs within the range are included.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 271/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

dimensions Y The set of dimension ID numbers belonging to this family. IDs are the internal system IDs for the 9321,9422,9455,9458
dimensions, visible in the exportDimen- sions API call. IDs are comma-separated and may contain
hyphenated ranges, which indicate that all IDs within the range are included.

Contents of the Element

(none)

1.4.3.15 | exportDimensions

Important: This API only supports user access rules in API v22 and above.

Category Metadata retrieval

Description Returns metadata for the complete list of all dimensions in the system.

Permissions Required To Invoke None (must be valid credentials for the instance)

Parameters Required On Request Credentials

This method's request contains only a credentials tag to identify and authorize the calling user. Once verified, the method returns an XML document describing the
complete set of custom dimensions in the system, including all of their member values. This method does not return any of the required system dimensions such as
Version, Time, or Accounts, each of which is available in its own metadata API call. Member values within a dimension are returned in tree form, with parent
members containing their children.

Note: You can find dimension IDs using an exportDimensions request with no dimensionIDs element. This produces a list of all dimensions and their IDs. Review
the response to find the the dimension IDs you need. Dimension IDs are not available from the Adaptive Planning web user interface.

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="exportDimensions" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd"/>
<include versionName="Budget 2004" dimensionIDs="1,2,4,5" dimensionValues="true"/>
</call>

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

include element

Tag Name include

Description Represents a set of flags indicating what aspects of the 'dimension values' information should be included or
excluded from the response. This element is optional: if not present, the default value is blank (or all versions) for
versionName/versionID.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 272/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Attributes of the Element

Attribute Name Required? Value Example

N Budget
versionName Indicates whether the response should exclude dimension values which are unavailable for the
2004
requested version name. The default, if the element or its attribute is not present, is to return all
Updated in API v18
dimensions and values. If a version name is specified, dimension values which are unavailable for the
specified version will not be returned. If the specified version name is not found, this API returns an
error. If both versionName and versionID attributes are passed, the versionID is ignored. <?xml
version='1.0' encoding='UTF-8'?> <response success="true"> <output> <dimensions> <dimension
id="6" name="Department" shortName="" autoCreate="0" listDimension="0" keepSorted="0"
useOnLevels="1" seqNo="35"> <dimensionValue id="7" name="Engr" description="Engineering"
shortName=""> <dimensionValue id="52" name="QA" description="Quality Assurance" shortName=""
/> <dimensionValue id="53" name="Dev" description="Development" shortName="" />
</dimensionValue> </dimension> <dimension id="7" name="Education" shortName="" autoCreate="0"
listDimension="1" keepSorted="0" useOnLevels="0" seqNo="21"> <dimensionValue id="32"
name="Graduate" description="Graduate degree" shortName=""> <attributes> <attribute
attributeId="21" name="Education Type" valueId="197" value="Tech1" /> </attributes>
</dimensionValue> <dimensionValue id="33" name="Masters" description="Masters degree"
shortName=""> <attributes> <attribute attributeId="21" name="Education Type" valueId="196"
value="Management" /> </attributes> </dimensionValue> <dimensionValue id="34" name="Phd"
description="Phd" shortName="" /> </dimension> </dimensions> </output> </response>

When specifying a version, the call will succeed only if the user has access to the version.

N 3
versionID Same as versionName (above) except taking a version ID number as a parameter. Indicates whether
the response should exclude dimension values which are unavailable for the requested version. The
Supported in API v17
default, if the element or its attribute is not present, is to return all dimensions and values. If a version
+ Updated in API v18
ID is specified, dimension values which are unavailable for the specified version will not be returned. If
the specified version ID is not found, this API returns an error. If both versionName and versionID
attributes are passed, the versionID is ignored.

When specifying a version, the call will succeed only if the user has access to the version.

N A list of ids which will appear in the API response. This filters for a dimension, but not a dimension "1,2,3,14"
dimensionIDs
value.
Supported in API v17
+

attributes N Indicates whether the response should include the attributes in the response for each flat dimension. false

N Indicates whether the response should include values inaccessible to the current user. Defaults to 1
inaccessibleValues
false. Only users with the "Modeling" or "Import to all levels" permissions may set this option to true.
Supported in API v18
+

N false
dimensionValues Indicates whether the response should include dimension values for each dimension. The default value
is true. If set to false, returns filtered dimensions only, and not the dimension values. If
Supported in API
dimensionValues is not part of the include element, returns all dimensions and their values.
v22+
If the include element is not part of the request, all dimensions and their values will return.

displayNameEnabled N true
displayNameEnabled=true indicates exportDimensions should respect display name properties of
Only available in API code, displayNameType, and description when Enable Display Name is ON for the instance.
v30+ for instances
displayNameEnabled=false indicates the exportDimensions API should continue following the pre-v30
that enable display
API contract even when Enable Display Name is ON for the instance. The exportDimensions API
name.
ignores the display name properties code, displayNameType and description.

The default value for displayNameEnabled is "false".

Contents of the Element

(none)

Response Format
Dimensions are ordered by name.

response element

Tag Name response

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 273/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Attributes of the Element

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true
warning messages in their response.

obsolete N If present on the response tag and set to true, this attribute indicates that the version of the method or API which is false
being invoked has become obsolete and is officially deprecated. While it continues to function at this time, it may
cease functioning in a short while. Typically, this attribute is not present.

Contents of the Element

A single optional messages element, and exactly one required output element.

output element

Tag Name output

Attributes of the Element

(none)

Contents of the Element

A single accounts element. This output wrapper is standard on all API responses and encloses the valid output of any successful API call.

dimensions element

Tag Name dimensions

Description Container for one or more dimension elements.

Attributes of the Element

(none)

Contents of the Element

One or more dimension elements.

dimension element

Tag Name dimension

Description Represents a single custom dimension being returned in the response to an exportDimensions
API call.

Attributes of the Element

Attribute Name Required? Value Example

id Y The internal system ID number for the dimension. This can be used to identify 16
dimensions in other API calls, such as exportDimensionFamilies.

name Y The name of the dimension, as it appears on reports and sheets. Customer

displayNameType N The internal representation of the selected display name format for values on the NAME
Dimension Administration pages.
Only available in API v30+ for instances
that enable display name. NAME
CODE
NAME_CODE
CODE_NAME

shortName N The short name for the dimension, if any, as entered in Dimension Administration. cust.

autoCreate Y 1 if the selected dimension has the "Data import automatically creates dimension 0
values" field set, 0 otherwise.

listDimension Y 1 if the selected dimension is list dimension, 0 otherwise. 1

keepSorted Y 1 if the selected dimension is kept sorted, 0 otherwise. 1

useOnLevels Y 1 if the selected dimension can be used on levels, 0 otherwise. 1

seqNo

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 274/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Added in API v17 but reserved for future


use.

description N The description as entered in Dimension Administration.

Only available in API v30+ for instances


that enable display name.

Contents of the Element

Zero or more dimensionValue elements. Each enclosed dimensionValue elements represents a root dimension value in the dimension, a value that has no
parent value.

dimensionValue element

Tag Name dimensionValue

Description Represents a single member value of a custom dimension being returned in the response
to an exportDimensions API call.

Attributes of the Element

Attribute Name Required? Value Example

id Y The internal system ID number for this member value of the dimension. 34

code N The code for the member value of the dimension, if any, as entered in A Corp
Dimension Administration.
Only available in API v30+ for instances that
enable display name.

name Y The label for the member value of the dimension, as displayed on reports A Corp
and used in formulas.

displayName N The display name of the member value, as derived from the A Corp
displayNameType.
Only available in API v30+ for instances that
enable display name.

shortName N The short name for the dimension value, if any, as entered in Dimension A
Administration

description N The description of the dimension value, if any, as entered in Dimension A


Administration Corporation

Contents of the Element

Zero or more optional dimensionValue elements. Each enclosed dimensionValue element represents a "child dimension value" of this dimension value, whose
members implicitly roll up to this value.

One optional properties element.

properties element

Tag Name properties

Description Optional element that contains property elements.

Attributes of the Element

Attribute Name Required? Value Example

(none)

Contents of the Element

Up to five property elements.

property element

Tag Name property

Description Specifies a custom property. The property element values only contain numeric characters.

Attributes of the Element

Attribute Name Required? Value Example

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 275/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

name Y The name of the property. Latitude

value N The value of the property. 33.6015

Contents of the Element

(none)

attributes element

Tag Name attributes

Description Container for one or more dimension attribute elements.

Attributes of the Element

Attribute Name Required? Value Example

(none)

Contents of the Element

One or more attribute elements.

attribute element

Tag Name attribute

Description Container for one dimension attribute element.

Attributes of the Element

Attribute Name Required? Value Example

attributeID Y The id of the dimension attribute generated by system. 20

name Y The name of the dimension attribute Education Type

valueID Y The unique id of the dimension attribute value generated by system. 170

value Y The value of the dimension attribute. Tech1

Contents of the Element

(none)

1.4.3.16 | exportGroups

Category Metadata retrieval

Description Return the complete list of all groups defined for the given instance. This includes those groups defined global across whole
instance and those groups defined by users.

Permissions Required User Admin


To Invoke

Parameters Required On Credentials


Request

This method's request contains only a credentials tag to identify and authorize the calling user. Once verified, the method returns an XML document describing the
complete set of all groups defined in the instance.

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="exportGroups" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_password"/>
</call>

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 276/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

Response Format

<?xml version="1.0" encoding="UTF-8"?>


<response success="true">
<output>
<groups>
<group id="1" name="Corporate and Operations" isGlobal="true"/>
<group id="2" name="Admins" isGlobal="true"/>
<group id="3" name="Ops and Admins" isGlobal="true"/>
<group id="4" name="My group" isGlobal="false" ownerId="3"/>
</groups>
</output>
</response>

response element

Tag Name response

Attributes of the Element

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true
warning messages in their response.

Contents of the Element

A single optional messages element, and exactly one required output element.

messages element

Tag Name messages

Description Container for one or more message elements.

Attributes of the Element

Attribute Name Required? Value Example

(none)

Contents of the Element

One or more message elements.

message element

Tag Name message

Description Represents a message being sent from the system back to the caller. Messages are used for error messages when requests do
not succeed, for warning messages when requests do succeed, and for confirmation messages upon success.

Attributes of the Element

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 277/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Attribute Required? Value Example


Name

key N When given, a key is a way to identify a particular message or type of message, useful for purposes of automated error
logging and recovery in client programs. Keys do not change under different locales of requests, even when the
language of the message changes. Keys also are unlikely to change in the future due to wording adjustments or
terminology changes.

Contents of the Element

The text of the message. This text is in the language of the locale specified on the request (assuming that locale is supported). The text may also contain
variable information such as the number of rows which were processed, or the particular column or value which caused an error.

output element

Tag Name output

Attributes of the Element

(none)

Contents of the Element

A single groups element. This output wrapper is standard on all API responses and encloses the valid output of any successful API call.

groups element

Tag Name groups

Description Container for one or more group elements.

Attributes of the Element

Attribute Name Required? Value Example

(none)

Contents of the Element

Zero or more group elements.

group element

Tag Name group

Description Represents a single group being returned in the response to an exportGroups API call.

Attributes of the Element

Attribute Name Required? Value Example

id Y The internal system ID number for the user group. 2

name Y The name of the user group. Ops and Admins

isGlobal Y Indicates if the user group is global across the instance. 3

ownerId Y The internal system ID of the user who owns this user group. Only set when isGlobal="false". 5

Contents of the Element

(none)

1.4.3.17 | exportInstances

Category Metadata retrieval.

Description Returns metadata for the complete list of all instances of Adaptive Planning to which this user has access.

Permissions Required To Invoke None (must be valid credentials for the instance)

Parameters Required On Request Credentials

This method's request contains a credentials tag to identify and authorize the calling user and an optional include tag to indicate which instances to include in the
response. Once the user credentials are verified, the method returns an XML document describing the instance specified in the credentials, or the complete set of
all instances to which this user has access. If the Multiple Instance feature has not been purchased, this call always returns a single ele- ment for the instance to
which the user belongs.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 278/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="exportInstances" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd"/>
<include accessibleInstances="true"/>
</call>

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or his- tory of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not speci- fied, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

include element

Tag Name include

Description Represents a set of flags indicating what aspects of the instances' information should be included or excluded from the
response. This element is optional: if not present, the default value is false for accessibleInstances.

Attributes of the Element

Attribute Name Required? Value Example

accessibleInstances N False
Either true or false. Whether the response should include other instances besides the single instance
specified in the credentials

The default, if the element or its attribute is not present, is false. If included and is true, then the API
should return the list of all instances to which the user has access. These instances are not returned in
any nested or parent-indicating fashion; they merely are enumerated with the properties as shown in the
API. The first instance returned is always the default instance for the user.

Contents of the Element

(none)

Response Format

<?xml version='1.0' encoding='UTF-8'?>


<response success="true">
<output>
<instances>
<instance code="INSTANCE1" name="Globo Industries" sessionTimeout="60" calendarType="G" systemCurrency="USD" products="PLANNING,DISCOVERY" options="TRANSACTIO
</instances>
</output>
</response>

response element

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 279/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Tag Name response

Attributes of the Element

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true
warning messages in their response.

obsolete N If present on the response tag and set to true, this attribute indicates that the version of the method or API which is false
being invoked has become obsolete and is officially deprecated. While it continues to function at this time, it may
cease functioning in a short while. Typically, this attribute is not present.

Contents of the Element

A single optional messages element, and exactly one required output element.

output element

Tag Name output

Attributes of the Element

(none)

Contents of the Element

A single accounts element. This output wrapper is standard on all API responses and encloses the valid output of any successful API call.

instances element

Tag Name instances

Description Container for one or more instance elements.

Attributes of the Element

(none)

Contents of the Element

One or more instance elements.

instance element

Tag Name instance

Description Describes a single instance to which this user has access, including a number of attributes of that instance.

Attributes of the Element

Attribute Name Required? Value Example

code Y The instance INSTANCE1


code of the
instance. This
can be used to
specify an
alternate
instance for an
API call within
the credentials
element.

name Y The name of the Globo Industries


instance . This is
configured in the
Administration >
General Setup
for that instance.

sessionTimeout Y Timeout in 60
minutes of the
user session.

systemCurrency Y The ISO code for USD


the system
currency.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 280/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

products Y Comma PLANNING,CONSOLIDATION,DISCOVERY, INTEGRATION


separated list of
product names
that are enabled
for the instance.

options Y Comma TRANSACTIONS,MULTI_CURRENCY,DISCO_DISABLED,WORKDAY,PLANNING_VISUALIZE_DATA


separated list of
various modules
enabled for the
instance.

datasources Y Comma WORKDAY, NETSUITE, SALES FORCE


separated list of
data sources
enabled for the
instance.

N mytenant
workdayTenantID The Workday
tenant ID or
available in API
tenant name that
v20+
uniquely
identifies the
tenant.

Requires
Adaptive
Planning set up
for Workday,
enabled by
provisioning.

N Prod
workdayEnvironment The Workday
environment as
available in API
either Prod
v20+
(production),
Sandbox
(sandbox), or
Impl
(implementation).

Requires
Adaptive
Planning set up
for Workday,
enabled by
provisioning.

N www.myworkday.com/mytenant/d/home.html
workdayUiUrl The Workday UI
URL domain
available in API
name for the
v20+
Workday tenant.

Requires
Adaptive
Planning set up
for Workday,
enabled by
provisioning.

N www.myworkday.com/ccx/service/
workdayRestUrl The REST URL
domain name for
available in API
the Workday
v20+
tenant.

Requires
Adaptive
Planning set up
for Workday,
enabled by
provisioning.

N NONE
notificationType The notification

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 281/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

available in API type for the


v24+ Workday tenant.

Requires
Adaptive
Planning set up
for Workday,
enabled by
provisioning.

Contents of the Element

(none)

1.4.3.18 | exportLevels

Important: This API only supports user access rules in API v22 and above.

Category Metadata retrieval

Description Returns metadata for the complete list of all organization levels in the system.

Permissions Required To Invoke None (must be valid credentials for the instance)

Parameters Required On Request Credentials

This method's request contains a credentials tag to identify and authorize the calling user and an optional include tag to indicate which levels to include in the
response. Once the user credentials are verified, the method returns an XML document describing the set of organization levels in the system corresponding to the
request. Levels are returned in a nested tree fashion, with one level tag enclosing another if the level represented by the enclosing tag is the parent of the enclosed
level.

Level Filtering
Unavailable level/version filtering always applies when a version is specified.
If a user specifies a user-assigned sheet in the request:
Levels return if the user does have access to that sheet. For admin users, if inaccessibleValues is true, then levels will return for the sheet.
All levels on the sheet return if the user has access to the sheet, regardless of the user's level access.
If a user specifies a level-assigned sheet in the request:
User-access filtering applies when required by inaccessibleValues, which determines if the response should include levels the user has no
access to.
Then, sheet filtering gets applied.

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="exportLevels" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd"/>
<include versionID="3" inaccessibleValues="false"/>
<sheet id="3" />
</call>

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or his- tory of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 282/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

include element

Tag Name include

Description Represents a set of flags indicating what aspects of the levels' information should be included or excluded from the
response. This element is optional: if not present, the default value is false for inaccessibleValues, and blank (or all
versions) for versionName/versionID.

Attributes of the Element

Attribute Name Required? Value Example

N Indicates if the level elements in the response includes a groupIds attribute. If true, the groupIds in true
groups
the response contains a comma-separated list of all groups the level is in. If the attribute is not
Available in API v23+ present, or if its value is something other than true or false, the default value of false is used.

N false
inaccessibleValues Whether the response should include levels to which the user has no access. Either true or false.

Available in API The default, if the element or its attribute is not present, is false.
v18+.
If set to false, the response will only include levels to which the user has data access, either direct or
implied. Note that this means the response may no longer be a single rooted tree of levels, but may
be a series of disjoint subtrees of the overall tree.

Only users with the "Organization Structure: All Levels" or "Import to all levels" permissions may set
this option to true.

N true
inaccessibleLevels Either true or false. Whether the response should include levels to which the user has no access.

Available in API v17 The default, if the element or its attribute is not present, is true. If set to false, the response will only
and earlier. Not include levels to which the user has data access, either direct or implied. Note that this means the
available in API v18+. response may no longer be a single rooted tree of levels, but may be a series of disjoint subtrees of
the overall tree.

N Engineering
versionName Indicates whether the response should only include levels which are available for the requested
version name. The default, if the element or its attribute is not present, is to return all levels. If a
Updated in API v18
version name is specified, only levels which are available for the specified version will be returned.

If present, the inaccessibleValues attribute will also be applied, and only levels which are available in
the specified version and accessible by the requesting user will be returned.

If the specified version name is not found, this API returns an error. If both versionName and
versionID attributes are passed, the versionID is ignored.

When specifying a version, the call will succeed only if the user has access to the version.

N 3
versionID Same as versionName (above) except taking a version ID number as a parameter. Indicates
whether the response should only include levels which are available for the requested version. The
Updated in API v18
default, if the element or its attribute is not present, is to return all levels. If a version ID is specified,
only levels which are available for the specified version will be returned.

If present, the inaccessibleValues attribute will also be applied, and only levels which are available in
the specified version and accessible by the requesting user will be returned.

If the specified version ID is not found, this API returns an error. If both versionName and versionID
attributes are passed, the versionID is ignored.

When specifying a version, the call will succeed only if the user has access to the version.

N Indicates whether to include the phantom levels in the response. Defaults to false. The phantom false
uncategorized
levels are included in the response only when the user has access to them.
Supported in API
v22+ when the
instance uses Access
Rules for security.

displayNameEnabled N false
displayNameEnabled=true indicates exportLevels should respect display name properties of code,

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 283/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Only available in API displayNameType, and description when Enable Display Name is ON for the instance.
v30+ for instances
displayNameEnabled=false indicates the exportLevels API should continue following the pre-v30
that enable display
API contract even when Enable Display Name is ON for the instance. The exportLevels API ignores
name.
the display name properties code, displayNameType and description.

The default value for displayNameEnabled is "false".

Contents of the Element

(none)

sheet element

Tag Name sheet

Description Represents a sheet, where only levels available for that sheet will be included in the response. This element is optional: if not
present, the API will return level information independent of a particular sheet. If the given sheet is a level-assigned sheet, this
filtering would be applied on top of the version and user access filtering, if present. If the given sheet is a user-assigned sheet to
which the current user has access, then all levels on that sheet after any version filtering will be returned.

Attributes of the Element

Attribute Required? Value Example


Name

id Y The internal system ID number for the sheet. 234

Contents of the Element

(none)

Response Format

<?xml version='1.0' encoding='UTF-8'?>


<response success="true">
<output>
<levels seqNo="21">
<level id="1" name="Corporate Rollup" currency="USD" isImportable="1" workflowStatus="I">
<level id="2" name="Engineering" currency="USD" shortName="Engr" isImportable="1" workflowStatus="I">
<level id="7" name="Development" currency="USD" shortName="Dev" isImportable="1" workflowStatus="I"/>
<level id="8" name="QA" currency="INR" isImportable="0" workflowStatus="L"/>
<level id="9" name="Documentation" currency="PKR" shortName="Doc" isImportable="1" workflowStatus=R"/>
</level>
<level id="3" name="Professional Services" currency="USD" shortName="Prof.Srv" isImportable="0" workflowStatus="A">
<attributes>
<attribute name="Corporate Discount" value="Available" attributeId="20" valueId="188" />
<attribute name="Transfers Restricted" value="Yes" attributeId="21" valueId="194" />
</attributes>
</level>
</level>
</levels>
</output>
</response>

response element

Tag Name response

Attributes of the Element

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true
warning messages in their response.

obsolete N If present on the response tag and set to true, this attribute indicates that the version of the method or API which is false
being invoked has become obsolete and is officially deprecated. While it continues to function at this time, it may
cease functioning in a short while. Typically, this attribute is not present.

Contents of the Element

A single optional messages element, and exactly one required output element.

output element

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 284/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Tag Name output

Attributes of the Element

(none)

Contents of the Element

A single accounts element. This output wrapper is standard on all API responses and encloses the valid output of any successful API call.

levels element

Tag Name levels

Description Container for the level element.

Attributes of the Element

Attribute Name Required? Value Example

seqNo

Added in API v17 but reserved for future use.

Contents of the Element

One or more level elements. If the request includes inaccessible levels, there will be only one level element, which represents the top level of the organization.

level element

Tag Name level

Description Represents a single organization level being returned in the response to an exportLevels API call.

Attributes of the Element

Attribute Name Required? Value Example

id Y The internal system ID number for the level. 7

code N The code of the level. Development

Only available in API


v30+ for instances
that enable display
name.

name Y The name of the level, as it appears on reports and sheets. Development

displayName N The display name of the level as derived from the displayNameType. Development

Only available in API


v30+ for instances
that enable display
name.

currency Y The currency code for the currency assigned to this level of the organization. The currency will be INR
one of the configured currencies for the instance, found in the exportActiveCurrencies call.

N The currency code for the currency assigned to publish from this level. This property is only USD
publishCurrency
applicable when Power of one has been enabled for the instance. The currency will be one of the

Available in API configured currencies for the instance, found in the exportActiveCurrencies call.

v24+

shortName N The abbreviation for the level, if any, as entered in Level Administration. Dev

availableStart N The start time period for the availability of level for actuals version, applicable only when ACTUALS 01/2013
version is specified in the request. The value can be either a time period code, such as "01/2012" or
the special value "START" indicating the start of the version.

availableEnd N The end time period for the availability of level for actuals version, applicable only when ACTUALS 12/2013
version is specified in the request. The value can be either a time period code, such as "12/2013",
or the special value "END" indicating the end of the version.

isImportable N 1
Indicates if the associated level is importable in the specified version. '0' means it is not importable
and '1' means it is importable. A level is importable if at least one timeslot in the specified version is

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 285/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

importable. isImportable attribute is only emitted if versionName or versionID is specified in the


request.

Note: isImportable only indicates that a level is available for import in the specified version, not that
the user making the API call has the permission to import into the version or level. Use
exportVersions to see which versions are available to the user for import.

workflowStatus N Emits the workflow status for the associated level. I for "In Progress", S for "Submitted", R for I
"Rejected", A for "Approved" and L for "Locked". Only included in the response if workflow is
enabled for this company, and a planning versionName or versionID is specified in the request.
Workflow is not available on actuals versions.

isLinked Y 1 if the level is a linked level; otherwise, 0. 1

isElimination Y 1 if the level is an elimination level; otherwise, 0. 0

hasChildren N Indicates whether the level has children. "false" for no, "true" for yes. This attribute is set for any true
level that has children, independent of the children being accessible or not. If a level has children
but the children are not accessible, the hasChildren attribute is still set to true.

description N The description of the level, if any, as entered in Level Administration.

Only available in API


v30+ for instances
that enable display
name.

Contents of the Element

One nested level element for each direct child level of this level. One attributes element if this level has one or more attributes associated with it.

attributes element

Tag Name attributes

Description Container for one or more attribute elements.

Attributes of the Element

Attribute Name Required? Value Example

(none)

Contents of the Element

One or more attribute elements.

attribute element

Tag Name attribute

Description Represents a single non-blank level attribute mapping to which a level is associated.

Attributes of the Element

Attribute Name Required? Value Example

name Y The name of the level attribute Corporate Discount

value Y The value of the level attribute associated with the level. Yes

attributeID Y The internal system id number of the level attribute. 20

valueID Y The internal system id number of the level attribute value. 188

Contents of the Element

(none)

1.4.3.19 | exportLocales

Category Metadata retrieval

Description Returns a list of all the locales for a company.

Parameters Required On Request Credentials

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 286/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

This method's request contains only a credentials tag to identify and authorize the calling user. Once verified, the method returns an XML document describing the
complete set of all locales associated with that company.

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="exportLocales" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd"/>
</call>

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not speci- fied, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

Response Format

<?xml version="1.0" encoding="UTF-8"?>


<response success="true">
<output>
<locales>
<locale code="en" name="English" isDefault="1" />
<locale code="de" name="German" isDefault="0" />
<locale code="fr" name="French" isDefault="0" />
<locale code="es" name="Spanish" isDefault="0" />
<locale code="pt" name="Portuguese" isDefault="0" />
<locale code="nl" name="Dutch" isDefault="0" />
<locale code="ja" name="Japanese" isDefault="0" />
</locales>
</output>
</response>

response element

Tag Name response

Attributes of the Element

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true
warning messages in their response.

obsolete N If present on the response tag and set to true, this attribute indicates that the version of the method or API which is false
being invoked has become obsolete and is officially deprecated . While it continues to function at this time, it may
cease functioning in a short while. Typically, this attribute is not present.

Contents of the Element

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 287/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

A single optional messages element, and exactly one required output element.

output element

Tag Name output

Attributes of the Element

Attribute Name Required? Value Example

(none)

Contents of the Element

A single required attributes element. This output wrapper is standard on all API responses and encloses the valid output of any successful API call.

locales element

Tag Name locales

Description Container for one or more locale elements.

Attributes of the Element

Attribute name Required? Value Example

(none)

Contents of the Element

One or more locale elements.

locale element

Tag Name locale

Description Represents a single locale associated with a company.

Attributes of the Element

Attribute Name Required? Value Example

code Y The standard locale code as used by Firefox. en

name Y A readable version of the name of the locale. English

isDefault Y If this locale is the default for the company, then 1. Otherwise, 0. 1

Contents of the Element

(none)

1.4.3.20 | exportDimensionMapping

Supported in API v19 +

Category Metadata retrieval

Description Exports the derived dimension mapping criteria for one or more dimensions in a given version.

Permissions Required To Invoke

Parameters Required On Request Credentials

This API is used to retrieve a list of mapping criteria for one or more derived dimensions. For each dimension in the request it will retrieve the mapTo values and
dimension value conditions.

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="exportDimensionMapping" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_password"/>
<dimensions>
<dimension name="Area">
</dimension>
</dimensions>

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 288/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

<version name = "Budget 2017"/>


<filters>
<keyword value="Alameda" />
<levels>
<level code="HQ" includeDescendants="true" />
</levels>
<dimensionValues>
<dimensionValue dimName="Geography" code="California" />
<dimensionValue dimId="34" uncategorized="true" />
<dimensionValue dimName="Region" code="Bay Area" uncategorized="true" />
<dimensionValue dimId="19" id="78" />
</dimensionValues>
<attributes>
<attribute id="1" uncategorized="true"/>
<attribute name="attributeName1" value="attributeValue1"/>
<attribute id="3" valueId="31" uncategorized="true"/>
</attributes>
</filters>
</call>

credentials Element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, time period names, and
date formatting). The locale is also used to specify the language in which any system
messages in the response should appear. If not specified, en_US (American English) is
used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the xref API method.

Contents of the Element

(none)

version Element

Tag Name version

Description Specifies which version to retrieve the modeled rows from.

Attributes of the Element

Attribute Name Required? Value Example

Name Y The name of the version. Budget 2017

Contents of the Element

(none)

dimensions element

Tag Name dimensions

Description Container for a list of <dimension> elements.

Attributes of the Element

Attribute Name Required? Value Example

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 289/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

(none)

Contents of the Element

dimension elements

dimension Element

Tag Name dimension

Description Describes a dimension for which we want to import mappings.

Attributes of the Element

Attribute Name Required? Value Example

name Y The name of the dimension for which to import mappings Area

Contents of the Element

A mappingCriteria element.

filters Element

Tag Name filters

Description Holds the specification for the filters which determine which data from the requested version and dimension(s) is retrieved by the
API. This element specifies the keyword, levels and dimension values which the corresponding mapping criterion entries contain
will be retrieved.

Attributes of the Element

Attribute Required? Value Example


Name

(none)

Contents of the Element

A single optional keyword element, a single optional levels element, and an optional single dimensionValues element.

levels Element

Tag Name levels

Description Container for zero or one level elements.

Attributes of the Element

Attribute Name Required? Value Example

(none)

Contents of the Element

Zero or one level element

level Element

Tag Name level

Description Specifies an organization level to have its data exported in this API call.

Attributes of the Element

Attribute Name Required? Value Example

name Y The name of the level to be exported. This name is as specified in Organization Administration. Development

code Required when The code of the level to be exported. This code is as specified in Organization Administration. Development
id is not
In API v30+ use
specified.
code instead of
name.

id Required when The internal system ID number of the level to be exported. 8


code is not
specified.

includeDescendants Y Indicates whether the export should include all descendants of the specified level or not. If set to True

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 290/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

true, all children of this level will also be exported, as will their children, etc. If set to false, this
level will be exported alone.

Contents of Element

(none)

dimensionValues Element

Tag Name dimensionValues

Description Container for zero or more dimensionValue elements.

Attributes of the Element

Attribute Name Required? Value Example

(none)

Contents of Element

Zero or more dimensionValue elements.

dimensionValue Element

Tag Name dimensionValue

Description
Indicates that the exported data should contain only the mapping criterion entries which contain
the matching specified dimensionValue. If more than one dimensionValue element is within the
dimensionValues element, then the exported mapping criterion entries must contain all
specified dimension/values. For example, if a request specifies dimension values of
Region=East, and Product=Product_A, then mapping criterion must have Region contain East
and Product contains Product_A in order to be exported.

Also note that each dimensionValue within the dimensionValues element must belong to
different dimension. For example, a request with dimension values of Region=East and
Region=West won't be accepted.

In the case when the input filtering dimensions do not belong to any of the requested
dimensions, they will be ignored.

Attributes of the Element

Attribute Name Required? Value Example

dimName required when The name of the dimension to which the dimension value (see name attribute Region
uncategorizedOfDimension below) belongs.
is not specified

name N The name of the dimension value to be exported. US West

code Required when id is not The code of the dimension value to be exported. US West
specified
Only available in API v30+
for instances that enable
display name.

uncategorized N If set to true, exported data will contain the mapping criterion with only the true
matching dimension value and not the values of any of its descendant values (if
any). Has no effect on dimension values with no children. If not specified,
defaults to false.

dimId required when dimName is The internal system ID number of the dimension to which the dimension value 15
not specified. (see name attribute above) belongs.

uncategorizedOfDimension N Specify the uncategorizedOfDimension in place of the dimName/uncategorized 15


attributes.

If specified the value of the attribute should be an internal system ID


number of a dimension (not a dimension value) and the filter is specifying
that data must be completely uncategorized in this dimension in order to
match the filter.
The uncategorized attributes will be ignored and assumed to be true.
Ignored if dimName is specified.

id Required when code is not Specify the id in place of the name attributes. 14
specified

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 291/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

The internal system ID number of the dimension value to be exported.


Should be specified in place of the name attributes to specify the
dimension value. To determine internal IDs, see the exportDimensions
API.
Ignored if name is specified.

Contents of Element

(none)

Response Format

<response success="true">
<output>
<mappings>
<version name="Budget 2017"/>
<dimensions>
<dimension name="Area">
<mappingCriteria>
<mappingCriterion id="121">
<mapTo dimensionValue="East"/>
<dimension name="Level" value="HQ"/>
<dimension name="State" value="MA"/>
</mappingCriterion>
<mappingCriterion id="122">
<mapTo dimensionValue="West"/>
<dimension name="Level" value="HQ"/>
<dimension name="State">
<dimensionValue name="CO"/>
<dimensionValue name="CA"/>
</dimension>
</mappingCriterion>
</mappingCriteria>
</dimension>
<dimensions/>
</mappings>
</output>
</response>

response Element

Tag Name response

Attributes of the Element

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true
warning messages in their response.

Contents of the Element

A single optional messages element, and exactly one required output element.

dimensions Element

Tag Name dimensions

Description Container for a list of <dimension> elements.

Attributes of the Element

Attribute Name Required? Value Example

(none)

Contents of the Element

dimension elements

dimension Element

Tag Name dimension

Description Describes a dimension for which we want to import mappings.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 292/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Attributes of the Element

Attribute Name Required? Value Example

name Y The name of the dimension for which to import mappings Area

Contents of the Element

A mappingCriteria element.

mappingCriteria Element

Tag Name mappingCriteria

DescriptionDescription Container for a list of <mappingCriterion> elements

Attributes of the Element

Attribute Required? Value Example


Name

id N If a id is provided, an existing mapping criterion with this id will be updated. If no id is provided, a new mapping 12
criterion is added to the dimension.

Contents of the Element

mappingCriterion elements for each dimension value for the derived dimension.

mappingCriterion Element

Tag Name mappingCriterion

DescriptionDescription Describes the individual dimensions and dimension values that govern if a dimension value is being mapped to. Must be
followed by a group of mapTo, dimension and dimensionValue tags.

Attributes of the Element

Attribute Required? Value Example


Name

id N If a id is provided, an existing mapping criterion with this id will be updated. If no id is provided, a new mapping 12
criterion is added to the dimension.

Contents of the Element

Contains one mapTo element and up to six dimension elements.

mapTo Element

Tag Name mapTo

Description Specifies the dimension value that is derived based on the mapping criteria.

Attributes of the Element

Attribute Name Required? Value Example

dimensionValueId Y The id of the dimension value to which this mapping criterion maps. 11

dimensionValue Y The name of the dimension value this mapping criterion maps to. California

dimensionValueCode Y The code of the dimension value to which this mapping criterion maps. CA

dimensionValueDisplayName Y The display name of the dimension value to which this mapping criterion maps. California

Contents of the Element

(none)

dimension Element

Tag Name dimension

Description Describes one of the dimensions being used to derive the mapTo dimension value.

Attributes of the Element

Attribute Name Required? Value Example

name Y The name of the dimension Area

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 293/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

ValueId N The id of the dimension value. Required unless there are dimensionValue elements. 282

value N The name of the dimension value. Required unless there are dimensionValue elements West

valueCode N The code of the dimension value. Required unless there are dimensionValue elements. We

valueDisplayName N The display name of the dimension value. Required unless there are dimensionValue elements. West

Contents of the Element

(none)

dimensionValue Element

Tag Name dimensionValue

Description (Optional) If more than one dimension value needs to be listed for a dimension tag, a series of dimensionValue tags can be
used instead of the name attribute.

Attributes of the Element

Attribute Required? Value Example


Name

id Y The id of the dimension value 10

name Y The name of the dimension value Colorado

code Y The code of the dimension value CO

displayName Y The display name of the dimension value Colorado

Contents of the Element

(none)

messages element

Tag Name messages

Description Container for one or more message elements.

Attributes of the Element

(none)

Contents of the Element

One or more message elements.

message element

Tag Name message

Description Represents a message being sent from the system back to the caller. Messages are used for error messages when requests do
not succeed, for warning messages when requests do succeed, and for confirmation messages upon success.

Attributes of the Element

Attribute Required? Value Example


Name

key N When given, a key is a way to identify a particular message or type of message, useful for purposes of invalid-
automated error logging and recovery in client programs. Keys do not change under different locales of attributevalueid
requests, even when the language of the message changes. Keys also are unlikely to change in the future
due to wording adjustments or terminology changes.

Contents of the Element

The text of the message. This text is in the language of the locale specified on the request (assuming that locale is supported). The text may also contain
variable information such as the number of rows which were processed, or the particular column or value which caused an error.

1.4.3.21 | exportModeledSheet

Category Metadata retrieval

Description Returns the definition of the given modeled sheet.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 294/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Permissions Required To Invoke MOD (create, edit, and delete sheets)

Parameters Required On Request Credentials, and a specification of which sheet is being requested.

Retrieve the definition of a modeled sheet.

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="exportModeledSheet" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd"/>
<exportModel sheetToExport="Name of Modeled Sheet" />
</call>

The call element contains a credentials element, as well a single exportModel element.

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or his- tory of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

Response Format

<response success="true">
<output>
<ConfigurableModel allow-actuals="false" allow-allocation="true" allow-edits-in-rollup-mode="false" breakback-pattern="0" code="Open Positions" descriptio
to be filled" frozen-column-count="0" has-salary-detail="true" id="15" isglobal="1" prefix="Openings" revision="0" selected-plan-ids=
"1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18" state="A" strata-code="month" strata-id="3">
<Columns>
<AssignablePlan abbr="" code="Plan" id="0" is-splitable="false" name="Plan" read-only="false" show-total-at-bottom="false" tool-tip="" />
<Driver abbr="" code="PositionCode" decimal-precision="0" driver-type="0" id="22" is-split-key="false" is-splitable="false" name="Position Code" r
show-total-at-bottom="false" tool-tip="" />
<Dimension abbr="" code="Department" codeHasBeenUpdated="false" hasOverriddenTitle="false" id="6" is-splitable="true" isEditDimension="false" isHi
isTextSelector="false" name="Department" read-only="false" show-total-at-bottom="false" tagType="0" tool-tip="" requiredColumn="true">
<DimensionValue abbr="" id="7" in-use="0" name="Engr" sort-order="0" />
<DimensionValue abbr="" id="40" in-use="0" name="QA" sort-order="1" />
<DimensionValue abbr="" id="8" in-use="0" name="PS" sort-order="3" />
<DimensionValue abbr="" id="41" in-use="0" name="Dev" sort-order="2" />
<DimensionValue abbr="" id="9" in-use="0" name="G & A" sort-order="4" />
<DimensionValue abbr="" id="10" in-use="0" name="Sales" sort-order="5" />
<LookupTables />
</Dimension>
<Dimension abbr="" code="Title" codeHasBeenUpdated="false" hasOverriddenTitle="false" id="16" is-splitable="true" isEditDimension="false" isHidden
isTextSelector="false" name="Title" read-only="false" show-total-at-bottom="false" tagType="0" tool-tip="">
<DimensionValue abbr="" id="64" in-use="0" name="Sales Rep" sort-order="8" />
<DimensionValue abbr="" id="65" in-use="0" name="Engr Mgr" sort-order="10" />
<DimensionValue abbr="" id="66" in-use="0" name="Sr Engr" sort-order="11" />
<DimensionValue abbr="" id="67" in-use="0" name="Engr" sort-order="12" />
<DimensionValue abbr="" id="68" in-use="0" name="GUI Engr" sort-order="13" />

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 295/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

<DimensionValue abbr="" id="47" in-use="0" name="CFO" sort-order="1" />


<DimensionValue abbr="" id="48" in-use="0" name="VP Mkt" sort-order="3" />
<DimensionValue abbr="" id="49" in-use="0" name="Doc Mgr" sort-order="5" />
<DimensionValue abbr="" id="18" in-use="0" name="CEO" sort-order="0" />
<DimensionValue abbr="" id="50" in-use="0" name="VP Sales" sort-order="7" />
<DimensionValue abbr="" id="51" in-use="0" name="VP Engr" sort-order="9" />
<DimensionValue abbr="" id="61" in-use="0" name="Controller" sort-order="2" />
<DimensionValue abbr="" id="62" in-use="0" name="Mkt Assoc" sort-order="4" />
<DimensionValue abbr="" id="63" in-use="0" name="Doc Writer" sort-order="6" />
<LookupTables />
</Dimension>
<Dimension abbr="" code="Base Pay" codeHasBeenUpdated="false" hasOverriddenTitle="false" id="1" is-splitable="true" isEditDimension="false" isHidd
isTextSelector="false" name="Base Pay" read-only="false" show-total-at-bottom="false" tagType="0" tool-tip="">
<DimensionValue abbr="" id="22" in-use="0" name="60-80K" sort-order="3" />
<DimensionValue abbr="" id="23" in-use="0" name="80-100K" sort-order="4" />
<DimensionValue abbr="" id="24" in-use="0" name="100-120K" sort-order="0" />
<DimensionValue abbr="" id="25" in-use="0" name="120-150K" sort-order="1" />
<DimensionValue abbr="" id="26" in-use="0" name="150-200K" sort-order="2" />
<DimensionValue abbr="" id="27" in-use="0" name="&gt;200K" sort-order="5" />
<LookupTables />
</Dimension>
<Dimension abbr="" code="Position Type" codeHasBeenUpdated="false" hasOverriddenTitle="false" id="10" is-splitable="true" isEditDimension="false"
"false" isTextSelector="false" name="Position Type" read-only="false" show-total-at-bottom="false" tagType="0" tool-tip="">
<DimensionValue abbr="" id="28" in-use="0" name="Full Time" sort-order="1" />
<DimensionValue abbr="" id="29" in-use="0" name="Part Time" sort-order="2" />
<DimensionValue abbr="" id="30" in-use="0" name="Contract" sort-order="0" />
<LookupTables />
</Dimension>
<Dimension abbr="" code="Education" codeHasBeenUpdated="false" hasOverriddenTitle="false" id="7" is-splitable="true" isEditDimension="false" isHid
isTextSelector="false" name="Education" read-only="false" show-total-at-bottom="false" tagType="0" tool-tip="">
<DimensionValue abbr="" id="32" in-use="0" name="Masters" sort-order="1" />
<DimensionValue abbr="" id="33" in-use="0" name="Phd" sort-order="2" />
<DimensionValue abbr="" id="31" in-use="0" name="Graduate" sort-order="0" />
<LookupTables />
</Dimension>
<Driver abbr="" code="Rate" decimal-precision="0" display-as="1" driver-type="1" id="23" is-split-key="false" is-splitable="false" name="Rate" rea
show-total-at-bottom="false" tool-tip="" />
<Driver abbr="" code="YearsOfExperience" decimal-precision="0" display-as="1" driver-type="1" id="24" is-split-key="false" is-splitable="false" na
Experience" read-only="false" show-total-at-bottom="false" tool-tip="" />
<Driver abbr="" code="FillBy" decimal-precision="0" driver-type="2" id="25" is-split-key="false" is-splitable="false" name="Fill By" read-only="fa
show-total-at-bottom="false" tool-tip="" />
</Columns>
<CalculatedAccounts />
<Assumptions />
</ConfigurableModel>
</output>
</response>

The response will contain the sheet definition in a ConfigurableModel element.

ConfigurableModel element

Tag Name ConfigurableModel

Description Represents a single modeled sheet being returned in the response to an export- ModeledSheet API call.

Attributes of the Element

Attribute Required? Value Example


Name

code Y The name of the sheet. This can be used to identify sheets in other API calls, such as Open Positions
importModeledSheet.

description N The description of the sheet, if any. Open positions to be


filled

Contents of the Element

See the Response XML

1.4.3.22 | exportPermissionSets

Category Metadata retrieval

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 296/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Description Returns metadata for the complete list of all permission sets in the instance.

Permissions Required To Invoke None (must be valid credentials for the instance)

Parameters Required On Request Credentials

This method's request contains only a credentials tag to identify and authorize the calling user. Once verified, the method returns an XML document describing the
complete permission set found in the user's instance.

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="exportPermissionSets" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd"/>
</call>

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or his- tory of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

Response Format

<?xml version='1.0' encoding='UTF-8'?>


<response success="true">
<output>
<permission_sets>
<permission_set id="1" name="Standard" permissions="SHT,RPT,SCOREBOARD"/>
<permission_set id="2" name="Administrative" permissions="SHT,RPT,SCOREBOARD,SAL,MOD,IMP,EXP"/>
</permission_sets>
</output>
</response>

Permission sets and permissions are ordered by name.

response element

Tag Name response

Attributes of the Element

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true
warning messages in their response.

obsolete N If present on the response tag and set to true, this attribute indicates that the version of the method or API which is false
being invoked has become obsolete and is officially deprecated by Adaptive Planning. While it continues to function
at this time, it may cease functioning in a short while. Typically, this attribute is not present.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 297/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Contents of the Element

A single optional messages element, and exactly one required output element.

output element

Tag Name output

Attributes of the Element

(none)

Contents of the Element

A single accounts element. This output wrapper is standard on all API responses and encloses the valid output of any successful API call.

permission_sets element

Tag Name permission_sets

Description Container for one or more permission set elements.

Attributes of the Element

(none)

Contents of the Element

One or more permission set elements.

permission_set element

Tag Name permission_set

Description Describes a single permission set available in the instance.

Attributes of the Element

Attribute Required? Value Example


Name

id Y The internal system ID number for the permission set. This is used to identify the permission set 1
assigned to a user in the exportUsers API call.

name Y The name of the permission set, as seen in Permission Set Administration Standard

permissions Y A comma-separated list of codes for permissions assigned to this permission set. The codes are SHT,RPT,SCOREBOARD
internal abbrevi- ations such as "SHT" for Sheet Access and "RPT" for Report Access.

Contents of the Element

(none)

1.4.3.23 | exportRoles

Important: Not supported in API v25+. Use exportPermissionSets.

Category Metadata retrieval

Description Returns metadata for the complete list of all roles in the instance.

Permissions Required To Invoke None (must be valid credentials for the instance)

Parameters Required On Request Credentials

This method's request contains only a credentials tag to identify and authorize the calling user. Once verified, the method returns an XML document describing the
complete set of all roles found in the user's instance.

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="exportRoles" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd"/>
</call>

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 298/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or his- tory of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have a role containing [email protected]
the permissions required for the method being invoked.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

Response Format

<?xml version='1.0' encoding='UTF-8'?>


<response success="true">
<output>
<roles>
<role id="1" name="Standard" permissions="SHT,RPT,SCOREBOARD"/>
<role id="2" name="Administrative" permissions="SHT,RPT,SCOREBOARD,SAL,MOD,IMP,EXP"/>
</roles>
</output>
</response>

Roles and permissions are ordered by name.

response element

Tag Name response

Attributes of the Element

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true
warning messages in their response.

obsolete N If present on the response tag and set to true, this attribute indicates that the version of the method or API which is false
being invoked has become obsolete and is officially deprecated by Adaptive Planning. While it continues to function
at this time, it may cease functioning in a short while. Typically, this attribute is not present.

Contents of the Element

A single optional messages element, and exactly one required output element.

output element

Tag Name output

Attributes of the Element

(none)

Contents of the Element

A single accounts element. This output wrapper is standard on all API responses and encloses the valid output of any successful API call.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 299/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

roles element

Tag Name roles

Description Container for one or more role elements.

Attributes of the Element

(none)

Contents of the Element

One or more role elements.

role element

Tag Name role

Description Describes a single role available in the instance.

Attributes of the Element

Attribute Required? Value Example


Name

id Y The internal system ID number for the role. This is used to identify the role assigned to a user in 1
the exportUsers API call.

name Y The name of the role, as seen in Role Administration. Standard

permissions Y A comma-separated list of codes for permissions assigned to this role. The codes are internal SHT,RPT,SCOREBOARD
abbrevi- ations such as "SHT" for Sheet Access and "RPT" for Report Access.

Contents of the Element

(none)

1.4.3.24 | exportSecurityAudit

Supported in API v20 +

Category Data retrieval

Description Returns a report of all security events in a specified time range, filterable by event type. Security events include unsuccessful login attempts,
password changes, account lockout, account creation, and other security related information. If no time range is requested, all events from
the last 24 hours return. Security events recorded by the audit log are based on NIST 800-53. Adaptive Planning only keeps 30 days of audit
trail data.

Permissions Administrator
Required To
Invoke

Parameters Credentials
Required On
Request

This method's request contains a credentials tag to identify and authorize the calling user, and an include tag identifying the actor and time range to retrieve security
events for. Once verified, the method returns an XML document describing all security events in the specified time range, filterable by event type.

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="exportSecurityAudit" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd"/>
<include actor="[email protected]" dateTimeFrom="2019-07-30 00:00:00" dateTimeTo="2019-07-30 11:59:59"/>
</call>

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as this
user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the user must
have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 300/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

Contents of the Element

none

include element

Tag Name include

Description

Attributes of the Element

Attribute Required? Value Example


Name

actor N The username whose security events you want to retrieve. Returns events for all users when [email protected]
actor is not included.

dateTimeFrom N The start of the time range in ISO-8601 compatible format (YYYY-MM-DDTHH:MM:SS) in UTC for 2019-07-30 00:00:00
the security events you want to retrieve.

dateTimeTo N The end of the time range in ISO-8601 compatible format (YYYY-MM-DDTHH:MM:SS) in UTC for the 2019-07-30 11:59:59
security events you want to retrieve.

Contents of the Element

none

Response Format

<?xml version='1.0' encoding='UTF-8'?>


<response success="true">
<output>
<audit>
<event timestamp="2019-07-30 01:59:48.7781" action="SUC" actor="475245454E434F000000000001000004" version="20" interface="" object="User - 475245454E434F0
<event timestamp="2019-07-30 01:59:48.9822" action="SUC" actor="475245454E434F000000000001000004" version="20" interface="" object="User - 475245454E434F0
<event timestamp="2019-07-30 02:01:29.115" action="SUC" actor="475245454E434F000000000001000004" version="20" interface="" object="User - 475245454E434F00
<event timestamp="2019-07-30 02:02:03.0594" action="SUC" actor="475245454E434F000000000001000004" version="20" interface="" object="User - 475245454E434F0
<event timestamp="2019-07-30 02:06:35.8937" action="SUC" actor="475245454E434F000000000001000004" version="20" interface="" object="User - 475245454E434F0
<event timestamp="2019-07-30 02:06:36.0589" action="SUC" actor="475245454E434F000000000001000004" version="20" interface="" object="User - 475245454E434F0
<event timestamp="2019-07-30 02:06:36.1219" action="SUC" actor="475245454E434F000000000001000004" version="20" interface="" object="User - 475245454E434F0
<event timestamp="2019-07-30 02:06:59.8724" action="SUC" actor="475245454E434F000000000001000004" version="20" interface="" object="User - 475245454E434F0
<event timestamp="2019-07-30 02:07:36.5505" action="SUC" actor="475245454E434F000000000001000004" version="20" interface="" object="User - 475245454E434F0
<event timestamp="2019-07-30 02:07:37.8862" action="SUC" actor="475245454E434F000000000001000004" version="20" interface="" object="User - 475245454E434F0
<event timestamp="2019-07-30 02:08:06.7037" action="SUC" actor="475245454E434F000000000001000004" version="20" interface="" object="User - 475245454E434F0
<event timestamp="2019-07-30 02:08:10.4557" action="SUC" actor="475245454E434F000000000001000004" version="20" interface="" object="User - 475245454E434F0
<event timestamp="2019-07-30 02:08:14.8878" action="SUC" actor="475245454E434F000000000001000004" version="20" interface="" object="User - 475245454E434F0
</audit>
</output>
</response>

response element

Tag Name response

Attributes of the Element

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true
warning messages in their response.

obsolete N If present on the response tag and set to true, this attribute indicates that the version of the method or API which is false
being invoked has become obsolete and is officially deprecated by Adaptive Planning. While it continues to function
at this time, it may cease functioning in a short while. Typically, this attribute is not present.

Contents of the Element

A single optional messages element, and exactly one required output element.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 301/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

output element

Tag Name output

Attributes of the Element

(none)

Contents of the Element

A single audit element. This output wrapper is standard on all API responses and encloses the valid output of any successful API call.

audit element

Tag Name audit

Description A collection of security events.

Attributes of the Element

(none)

Contents of the Element

One or more event elements.

event element

Tag Name event

Description A security event.

Attributes of the Element

Attribute Required? Value Example


Name

timestamp Y The timestamp in ISO-8601 compatible format (YYYY-MM-DDTHH:MM:SS.sssZ) in 2019-07-30 01:59:48.7781


UTC of the event

action Y SUC
The action that triggered the audit event:

'CRE' Account creation


'DIS' Account disabled
'LOK' Account lockout
'UOK' Account unlock
'USC' Unsuccessful login
'SUC' Successful login
'ULO' User logout
'PWC' User password change
'TER' Session termination due to exceptions
'EXP' Session expiration
'CRD' Credential changes
'AUT' Changes to authentication configuration

actor Y ID of the actor (service, user, system user) that initiated the operation triggering the 475245454E434F000000000001000004
event (NULL if no particular user can be assigned).

version Y The version of the software used to perform the action. 21

interface N The interface (API, UI, or URI) triggering the audit event. API

object N The system object triggering the audit event. User -


475245454E434F000000000001000004

outcome Y The success or failure of the action. 0 indicates success, 1 indicates failure. 0

context N System specific information about the audit event.

Contents of the Element

(none)

1.4.3.25 | exportSheetDefinition

Category Metadata retrieval

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 302/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Description Returns the definition of the given modeled or cube sheet.

Permissions Required To Invoke IMP (import data) or MOD (create, edit, and delete sheets)

Parameters Required On Request Credentials and a specification of which sheet is being requested.

Modeled Sheet Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="exportSheetDefinition" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd"/>
<modeled-sheet id="3"/>
</call>

The call element contains a credentials element as well as a single modeled-sheet.

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to per- form the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

modeled-sheet element

Tag Name modeled-sheet

Description Identifies a single modeled sheet requested via an exportSheetDefinition API call.

Attributes of the Element

Attribute Name Required? Value Example

id Y The internal system ID number for the sheet. 234

Contents of the Element

(none)

Modeled Sheet Response Format

<?xml version="1.0" encoding="UTF-8"?>


<response success="true">
<output>
<modeled-sheet id="11" prefix="Personnel" name="Personnel" description="Personnel Sheet"
available-in-actuals="false" allow-splits="true" split-column-title="Is Split Child Row" strataId="51">
<columns>
<levels code="Plan" name="Plan" read-only="false" splittable="false" required="true">
<level id="1" />
<level id="7" />
</levels>
<text code="LastName" name="Last Name" read-only="false" splittable="false" required="false" />

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 303/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

<text code="FirstName" name="First Name" read-only="false" splittable="false" required="false" />


<text code="ID" name="ID" read-only="false" splittable="false" required="false" />
<dimension code="JobCode" name="JobCode" read-only="false" splittable="false" required="false" id="9">
<value id="19" name="E1" />
<value id="20" name="E2" />
<value id="21" name="E3" />
</dimension>
<text-selector code="BenefitsSelector" name="Benefits" read-only="false" splittable="false" required="true" id="27">
<value id="208" name="No" />
<value id="209" name="Yes" />
</text-selector>
<date code="StartDate" name="Start" read-only="false" splittable="false" required="false" />
<date code="EndDate" name="End" read-only="false" splittable="false" required="false" />
<number code="HoursPerWeek" name="Hr/Week" read-only="false" splittable="false" required="false" />
<text-selector code="per" name="per" read-only="false" splittable="false" required="true" id="28">
<value id="210" name="Yr" />
<value id="211" name="Hr" />
</text-selector>
<initial-balance code="PayRate" name="Pay Rate" read-only="false" splittable="false" required="false" id="143" />
<display code="PayRate" name="Pay Rate Display Column" read-only="true" splittable="false" required="false" id="7" />
<level-currency code="" name="Currency" read-only="true" splittable="false" required="false" id="8" />
</columns>
</modeled-sheet>
</output>
</response>

The modeled-sheet element contains a single columns child holding one or more of these in the order defined for the sheet:

1. levels
2. dimension
3. text-selector
4. text
5. number
6. date
7. initial-balance
8. level-currency
9. display
10. timespan

response element

Tag Name response

Attributes of the Element

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true
warning messages in their response.

obsolete N If present on the response tag and set to true, this attribute indicates that the version of the method or API which is false
being invoked has become obsolete and is officially deprecated by Adaptive Planning. While it continues to function
at this time, it may cease functioning in a short while. Typically, this attribute is not present.

Contents of the Element

A single optional messages element, and exactly one required output element.

modeled-sheet element

Tag Name modeled-sheet

Description Represents a single modeled sheet being returned in the response to an export- Sheets API call.

Attributes of the Element

Attribute Required? Value Example


Name

id Y The internal system ID number for the sheet. This can be used to identify sheets in other API calls, such as 234
exportSheetDefinition.

prefix Y The prefix of the sheet. Capital

name Y The name of the sheet. Capital


Model

available- Y Can be true or false. Denotes whether the modeled sheet is available in actuals version or not. true

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 304/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

in-actuals

description N The textual description of the sheet, if any. This is the


Capital
Model...

allow- Y True means the modeled sheet allows splits. true


splits

split- N The additional column title for import when allow-splits is enabled. Use a localized string if a locale is specified Is Split
column- in the request. This attribute is only present when allow-splits is set to true and at least one column is splittable. Child Row
title

strataId Y The strata ID associated with this modeled sheet 2

Contents of the Element

A single columns element.

columns element

Tag Name columns

Description Container for one or more column elements.

Attributes of the Element

Attribute Name Required? Value Example

(none)

Contents of the Element

One or more of the following elements, ordered as they appear on the sheet:

levels
dimension
text-selector
text
number
date
initial-balance
level-currency
display
timespan

levels element

Tag Name levels

Description Represents the "level" column on a modeled sheet. Container for one or more level elements.

Attributes of the Element

code Y A symbolic identifier for the column, used in sheet formulas and references. MyColumn

name Y Displayable title of the column, as seen on the sheet. My Column

read-only Y True if the column is marked as read-only on the sheet, false if values can be entered into the column. false

splittable Y True if splits of rows can have different values for this column, false if splits must have the same value as their parent. true

required Y True if this attribute is a mandatory field. true

Contents of the Element

One or more level elements.

level element

Tag Name level

Description One of the levels defined for this company which is on this sheet (or on which this sheet has been placed). Level metadata,
including the hierar- chical structure, can be obtained by a call to exportLevels.

Attributes of the Element

Attribute Required? Value Example


Name

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 305/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

id Y Internal numeric identifier for the level. 42

Contents of the Element

(none)

text element

Tag Name text

Description Represents a column on the sheet which holds user-entered text.

Attributes of the Element

Attribute Required? Value Example


Name

code Y A symbolic identifier for the column, used in sheet formulas and references. MyColumn

name Y Displayable title of the column, as seen on the sheet. My


Column

read-only Y True if the column is marked as read-only on the sheet, false if values can be entered into the column. false

splittable Y True if splits of rows can have different values for this column, false if splits must have the same value as true
their parent.

required Y True if this attribute is a mandatory field. false

Contents of the Element

(none)

dimension element

Tag Name dimension

Description One of the dimensions defined for this company. Represents a column on the sheet which holds the dimension.

Attributes of the Element

Attribute Required? Value Example


Name

code Y A symbolic identifier for the column, used in sheet formulas and references. MyColumn

name Y Displayable title of the column, as seen on the sheet. My


Column

read-only Y True if the column is marked as read-only on the sheet, false if values can be entered into the column. false

splittable Y True if splits of rows can have different values for this column, false if splits must have the same value as true
their parent.

required Y True if this attribute is a mandatory field. false

Contents of the Element

One or more value elements, each of which is a valid selectable value in the dimension for this sheet. If a value of the dimension is not included here, that
value cannot be used on data rows on this sheet.

value element

Tag Name value

Description One of the values defined for this dimension or text-selector. Complete dimension metadata, including
its hierarchical structure, can be obtained by a separate call to exportDimensions.

Attributes of the Element

Attribute Name Required? Value Example

id Y Internal numeric identifier for the value. 42

code N The code for the member value of the dimension, if any, as entered in Dimension Mexico
Administration.
Only available in API v30+ for
instances that enable display name.

name Y Printed representation of the value. Mexico

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 306/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

displayName N The display name of the member value, as derived from the displayNameType. Mexico

Only available in API v30+ for


instances that enable display name.

Contents of the Element

(none)

text-selector element

Tag Name text-selector

Description Custom list of values defined for this sheet. Represents a text selector column on a modeled sheet.

Attributes of the Element

Attribute Required? Value Example


Name

code Y A symbolic identifier for the column, used in sheet formulas and references. MyColumn

name Y Displayable title of the column, as seen on the sheet. My


Column

read-only Y True if the column is marked as read-only on the sheet, false if values can be entered into the column. false

splittable Y True if splits of rows can have different values for this column, false if splits must have the same value as true
their parent.

required Y True if this attribute is a mandatory field. true

id Y Internal numeric identifier. 42

Contents of the Element

One or more value elements.

number element

Tag Name number

Description Represents a column on the sheet which holds a user-entered number.

Attributes of the Element

Attribute Required? Value Example


Name

code Y A symbolic identifier for the column, used in sheet formulas and references. MyColumn

name Y Displayable title of the column, as seen on the sheet. My


Column

read-only Y True if the column is marked as read-only on the sheet, false if values can be entered into the column. false

splittable Y True if splits of rows can have different values for this column, false if splits must have the same value as true
their parent.

required Y True if this attribute is a mandatory field. false

Contents of the Element

(none)

date element

Tag Name date

Description Represents a column on the sheet which holds a user-entered date.

Attributes of the Element

Attribute Required? Value Example


Name

code Y A symbolic identifier for the column, used in sheet formulas and references. MyColumn

name Y Displayable title of the column, as seen on the sheet. My


Column

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 307/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

read-only Y True if the column is marked as read-only on the sheet, false if values can be entered into the column. false

splittable Y True if splits of rows can have different values for this column, false if splits must have the same value as true
their parent.

required Y True if this attribute is a mandatory field. false

Contents of the Element

(none)

initial-balance element

Tag Name initial-balance

Description Represents a column on the sheet that holds a user-supplied value for the initial balance of an account with a formula that
determines the monthly change in the account's value.

Attributes of the Element

Attribute Required? Value Example


Name

code Y A symbolic identifier for the column, used in sheet formulas and references. MyColumn

name Y Displayable title of the column, as seen on the sheet. My


Column

read-only Y True if the column is marked as read-only on the sheet, false if values can be entered into the column. false

splittable Y True if splits of rows can have different values for this column, false if splits must have the same value as their true
parent.

required Y True if this attribute is a mandatory field. false

id Y Internal numeric identifier of the account associ- ated with this column. 42

Contents of the Element

(none)

level-currency element

Tag Name level-currency

Description Represents a column on the sheet that displays the code for the currency associ- ated with each row. This is the currency of the
level where the row is located.

Attributes of the Element

Attribute Required? Value Example


Name

code Y A symbolic identifier for the column, used in sheet formulas and references. MyColumn

name Y Displayable title of the column, as seen on the sheet. My


Column

read-only Y True if the column is marked as read-only on the sheet, false if values can be entered into the column. For level- true
currency elements, this value is always true.

splittable Y True if splits of rows can have different values for this column, false if splits must have the same value as their true
parent.

required Y True if this attribute is a mandatory field. false

id Y Internal numeric identifier. 42

Contents of the Element

(none)

display element

Tag Name display

Description Represents a column on the sheet that holds a row-based, read-only calculation.

Attributes of the Element

Attribute Required? Value Example

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 308/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Name

code Y A symbolic identifier for the column, used in sheet formulas and references. MyColumn

name Y Displayable title of the column, as seen on the sheet. My


Column

read-only Y True if the column is marked as read-only on the sheet, false if values can be entered into the column. false

splittable Y True if splits of rows can have different values for this column, false if splits must have the same value as true
their parent.

required Y True if this attribute is a mandatory field. false

id Y Internal numeric identifier. 42

Contents of the Element

(none)

timespan element

Tag Name timespan

Description At most one per sheet, this represents a timespan set of columns, which appear on the right of the sheet and can hold
periodic data.

Attributes of the Element

Attribute Required? Value Example


Name

code Y A symbolic identifier for the column, used in sheet formulas and references. MyColumn

name Y Displayable title of the column, as seen on the sheet. My


Column

read-only Y True if the column is marked as read-only on the sheet, false if values can be entered into the column. false

splittable Y True if splits of rows can have different values for this column, false if splits must have the same value as true
their parent.

required Y True if this attribute is a mandatory field. false

id Y Internal numeric identifier of the account associ- ated with this timespan. 42

Contents of the Element

(none)

Cube Sheet Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="exportSheetDefinition" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd"/>
<cube-sheet id="4"/>
</call>

The call element contains a credentials element, as well as a single cube-sheet.

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to per- form the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have a permission set [email protected]
containing the permissions required for the method being invoked.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to for- mat fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 309/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

cube-sheet element

Tag Name cube-sheet

Description Identifies a single cube sheet requested via an exportSheetDefinition API call.

Attributes of the Element

Attribute Name Required? Value Example

id Y The internal system ID number for the sheet. 234

Contents of the Element

(none)

Cube Sheet Response Format

<?xml version="1.0" encoding="UTF-8"?>


<response success="true">
<output>
<cube-sheet id="17" prefix="ExpenseCube" name="Expense Cube" description="" strataId="5">
<dimensions>
<dimension id="12" uncategorized="false" rollup="false" name="Product Item">
<value id="102"/> <!-- a leaf value, no rollup, no uncategorized -->
<value id="90"/>
</dimension>
<attribute id="14" uncategorized="true" rollup="true">
<value id="74" rollup="true" />
<value id="75" uncategorized="true" />
<value id="76" rollup="true" />
<value id="76" uncategorized="true"/> <!-- notice same id twice -->
<value id="80">
</attribute>
<levels>
<level id="1"/>
<level id="7"/>
</levels>
<accounts>
<account id="245" code="" />
<account id="246" code="SalesCubeWithAttribute.Unit_Price" />
<account id="247" code="SalesCubeWithAttribute.Unit_Sold" />
<account id="249" code="SalesCubeWithAttribute.SalesMetric" />
<account id="250" code="SalesCubeWithAttribute.SalesDimMetric" />
</accounts>
<time/>
</dimensions>
</cube-sheet>
</output>
</response>

The cube-sheet element contains a single dimensions child holding these in the order defined for the sheet:

1. dimension (one or more)


2. attribute (zero or more)
3. levels (one)
4. accounts (one)
5. time (one)

response element

Tag Name response

Attributes of the Element

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 310/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true
warning messages in their response.

obsolete N If present on the response tag and set to true, this attribute indicates that the version of the method or API which is false
being invoked has become obsolete and is officially deprecated by Adaptive Planning. While it continues to function
at this time, it may cease functioning in a short while. Typically, this attri- bute is not present.

Contents of the Element

A single optional messages element, and exactly one required output element.

output element

Tag Name output

Attributes of the Element

Attribute Name Required? Value Example

(none)

Contents of the Element

A single required cube-sheets element. This output wrapper is standard on all API responses and encloses the valid output of any successful API call.

cube-sheet element

Tag Name cube-sheet

Description Represents a single cube sheet being returned in the response to an exportSheets API call.

Attributes of the Element

Attribute Required? Value Example


Name

id The internal system ID number for the sheet. This can be used to identify sheets in other API calls, such as 34
exportSheetDefinition.

prefix The prefix of the sheet. ExpenseCube

name The name of the sheet. Expense


Cube

description The textual description of the sheet, if any.

strataId Y the strata id of the sheet 5

Contents of the Element

(none)

dimensions element

Tag Name dimensions

Description Container for the dimensions of the sheet.

Attributes of the Element

Attribute Name Required? Value Example

(none)

Contents of the Element

One or more levels, dimension, accounts, time elements.

dimension element

Tag Name dimension

Description One of the dimensions defined for this cube sheet.

Attributes of the Element

Attribute Name Required? Value Example

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 311/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

id Y The internal numeric identifier for the dimension. 34

uncategorized Y True means the uncategorized element of the dimension itself (the root uncategorized ele- ment) is true
available as a selection on the cube.

rollup Y True means the rollup element of the dimension itself (the rollup of all elements) is available as a selection true
on the cube.

Y Name of this dimension. Product


name
Item

Available in API
v22+

Contents of the Element

One or more value elements, indicating which dimension values are available on the sheet.

attribute element

Tag Name attribute

Description One of the attributes placed on this cube sheet. Attribute metadata, including its hierarchical structure, can be obtained by
a call to exportAttributes.

Attributes of the Element

Attribute Name Required? Value Example

id Y The internal numeric identifier for the attribute. 34

uncategorized Y True means the uncategorized element of the attribute itself (the root uncategorized ele- ment) is available true
as a selection on the cube.

rollup Y True means the rollup element of the attribute itself (the rollup of all elements) is available as a selection on true
the cube.

Y The name of the attribute. Store


name
Type

Available in API
v22 +

Contents of the Element

One or more value elements, indicating which values of the attribute are available on the sheet.

value element

Tag Name value

Description One of the values for this dimension which has been marked as available on the sheet. The same value id can appear up to
twice: with and without uncategorized set to true. Dimension metadata, including its hierar- chical structure, can be obtained
by a call to exportDimensions.

Attributes of the Element

Attribute Required? Value Example


Name

id Y Internal numeric identifier for the dimension value. 34

rollup N true indicates the rollup of this dimension value. Only allowed if the value has child values in the dimension. If true
the attribute is missing, false is used.

uncategorized N true indicates the uncategorized value of this dimension value. Only allowed if the value has child values in the true
dimension. If the attribute is missing, false is used.

Contents of the Element

(none)

levels element

Tag Name levels

Description Enforced container for one or more level elements. Individual levels are returned, even if they affect visibility only. Data can be
imported into any level.

Attributes of the Element

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 312/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Attribute Required? Value Example


Name

(none)

Contents of the Element

One or more level elements.

level element

Tag Name level

Description A level found on this sheet, on which this sheet appears. Level metadata, including its hierarchical structure, can be obtained by a call to
exportLevels.

Attributes of the Element

Attribute Name Required? Value Example

id Y Internal numeric identifier for the level. 12

Contents of the Element

(none)

accounts element

Tag Name accounts

Description Enforced container for one or more account elements. Individual accounts are returned, even if they affect visibility only. Data
can be imported into any input account.

Attributes of the Element

Attribute Required? Value Example


Name

(none)

Contents of the Element

One or more account elements. Available account elements and order determined by Use GL Account Treatment option in the cube sheet properties.

account element

Tag Name account

Description One of the accounts defined for this cube sheet. Account metadata, including its hierarchical structure, can be obtained
by a call to exportAccounts.

Attributes of the Element

Attribute Name Required? Value Example

id Y Internal numeric identifier for the account. 23

N The account code for the account. SalesCubeWithAttribute.Unit_Price


code

Available in API
v22+

Contents of the Element

(none)

time element

Tag Name time

Description Enforced time dimension.

Attributes of the Element

Attribute Name Required? Value Example

(none)

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 313/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Contents of the Element

(none)

1.4.3.26 | exportSheets

Category Metadata retrieval

Description Returns the complete list of all sheets defined for the given instance. This includes "incomplete" sheets as well as user-
assigned sheets.

Permissions Required To IMP (import data) or MOD (create, edit, and delete sheets)
Invoke

Parameters Required On Credentials


Request

This method's request contains only a credentials tag to identify and authorize the calling user. Once verified, the method returns an XML document describing the
complete set of all sheets found in the user's instance.

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="exportSheets" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd"/>
</call>

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to per- form the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to for- mat fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

Response Format

<?xml version="1.0" encoding="UTF-8"?>


<response success="true">
<output>
<sheets>
<modeled-sheet id="1" name="Personnel" prefix="Personnel" description="Personnel Sheet" />
<modeled-sheet id="2" name="Crossover Personnel" prefix="Crossovers" description="Personnel Sheet" />
<modeled-sheet id="3" name="Sales" prefix="Sales" description="Sales Sheet" />
...
<standard-sheet id="6" name="Model Summary" prefix="" description="Configurable Model Summary Sheet" />
<standard-sheet id="8" name="Expenses" prefix="" description="" />
<standard-sheet id="9" name="Balance" prefix="" description="" />
<standard-sheet id="10" name="Assumptions" prefix="" description="" />
...

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 314/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

<cube-sheet id="17" name="Expense Cube" prefix="ExpenseCube" description="" />


<cube-sheet id="19" name="Sale Cube" prefix="SalesCube" description="" />
</sheets>
</output>
</response>

response element

Tag Name response

Attributes of the Element

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true
warning messages in their response.

obsolete N If present on the response tag and set to true, this attribute indicates that the version of the method or API which is false
being invoked has become obsolete and is officially deprecated by Adaptive Planning. While it continues to function
at this time, it may cease functioning in a short while. Typically, this attribute is not present.

Contents of the Element

A single optional messages element, and exactly one required output element.

output element

Tag Name output

Attributes of the Element

Attribute Name Required? Value Example

(none)

Contents of the Element

A single required cube-sheets element. This output wrapper is standard on all API responses and encloses the valid output of any successful API call.

sheets element

Tag Name sheet

Description Container for one or more standard-sheet, modeled-sheet and cube-sheet elements.

Attributes of the Element

Attribute Name Required? Value Example

(none)

Contents of the Element

One or more standard-sheet, modeled-sheet and cube-sheet elements.

standard-sheet element

Tag Name standard-sheet

Description Represents a single standard sheet being returned in the response to an exportSheets API call.

Attributes of the Element

Attribute Required? Value Example


Name

id Y The internal system ID number for the sheet. This can be used to identify sheets in other API calls, 123
such as exportSheetDefinition.

prefix Y The prefix of the sheet. For standard sheets, this is always empty. Other sheet types have non-
empty values for this attri- bute.

name Y The name of the sheet. Rollup Modes

description N The textual description of the sheet, if any. These are the rollup
modes...

Contents of the Element

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 315/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

(none)

modeled-sheet element

Tag Name modeled-sheet

Description Represents a single modeled sheet being returned in the response to an exportSheets API call.

Attributes of the Element

Attribute Required? Value Example


Name

id Y The internal system ID number for the sheet. This can be used to identify sheets in other API calls, 234
such as exportSheetDef- inition.

prefix Y The prefix of the sheet. Capital

name Y The name of the sheet. Capital Model

available-in- Y Can be true or false. Denotes whether the modeled sheet is available in actuals version or not. true
actuals

description N The textual description of the sheet, if any. This is the Capital
Model...

Contents of the Element

(none)

cube-sheet element

Tag Name cube-sheet

Description Represents a single cube sheet being returned in the response to an exportSheets API call.

Attributes of the Element

Attribute Required? Value Example


Name

id The internal system ID number for the sheet. This can be used to identify sheets in other API calls, such as 34
exportSheetDefinition.

prefix The prefix of the sheet. ExpenseCube

name The name of the sheet. Expense


Cube

description The textual description of the sheet, if any.

Contents of the Element

(none)

1.4.3.27 | exportTime

Important: This API only supports user access rules in API v21 and above.

Category Metadata retrieval

Description Returns time metadata either for a specific version, or for all versions if none is specified.

Permissions Required To Invoke None (must be valid credentials for the instance)

Parameters Required On Request Credentials

This method's request contains a credentials tag to identify and authorize the calling user and an optional version tag to specify which version to retrieve information
for. If no version is specified, the method returns time information for the time range encompassing all versions' start and end times. Once the caller is verified, the
method returns an XML document describing the complete set of time information for the version in a nested tree fashion.

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="exportTime" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd" locale="fr_FR" instanceCode="INSTANCE1"/>

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 316/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

<options includeAllLocales="1" includeLegacyInformation="1" />


</call>

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

Options element

Tag Name Options

Description Specifies the options to be used when exporting time.

Attributes of the Element

Attribute Name Required? Value Example

includeAllLocales N Optionally, make export time export all translations for each strata / time period. If not specified, "1"
only the locale specified in the credential block is exported.

includeLegacyInformation N Optionally, make export time export additional attributes containing legacy time information. These "1"
additional attributes will not be included if isCustom = 1

N Optionally, provide the id of a time stratum to treat as the leaf. Any time strata that are finer than "5"
leafStratumId
the given time stratum will not be included in the response, nor will any time periods that belong to

Supported in API v16 + time strata that are finer than the given time stratum.

Contents of the Element

(none)

version element

Tag Name version

Description Indicates which version should be used to retrieve the requested data. The user must be able to access the version specified and
it cannot be a folder. A version element is not required, but if one is included, the version specified must be valid.

Attributes of the Element

Attribute Required? Value Example


Name

N single
option Sets the range of time to export. Can be set to "all", "single", or omitted. Defaults to "single". If single, user must
also specify either "name" or "id". Returns the time range of the single version specified and initial balance for that
updated
version. If both name and id specified, then they must refer to the same version. If all, return the time range of min
in API
to max of all versions including the initial balance period for the first stratum in the min-max time range. If all, then
v18
must not specify version "name" or "id". If omitted, return all defined time.

When specifying a single version, the call will succeed only if the user has access to the version.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 317/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

name N The name of the version to be used to retrieve the data. Only one version can be accessed within a single API call. Budget
If a name is not pro- vided, then an id must be. If both are given, then they must correspond to the same version. 2014

id N The id of the version to be used to retrieve the data. Only one version can be accessed within a single API call. If 3
option is "single" and an id is not provided, then a name must be. If both are given, then they must correspond to
the same version.

Contents of the Element

(none)

Response Format (with includeAllLocales="0" or not specified)

<?xml version='1.0' encoding='UTF-8'?>


<response success="true">
<output>
<time isCustom="1" seqNo="24">
<stratum code="year" label="Year" shortName="Yr" id="3" inUse="1">
<stratum code="qtr" label="Quarter" shortName="Qtr" id="2" inUse="1">
<stratum code="month" label="Month" shortName="Mon" id="1" inUse="1" isDefault="1" />
</stratum>
</stratum>
<period code="2015" label="FY2015" shortName="FY2015" stratumId="3" timeslot="15" encodedTimePeriod="3::15" id="15003" end="2016-01-01">
<period code="Q1-2015" label="Q1-FY15" shortName="Q1-FY15" stratumId="2" timeslot="60" encodedTimePeriod="2::60" id="60002" end="2015-04-01">
<period code="01/2015" label="Jan-2015" shortName="Jan-2015" stratumId="1"timeslot="180" encodedTimePeriod="1::180" id="180001" end="2015-02-01" />
<period code="02/2015" label="Feb-2015" shortName="Feb-2015" stratumId="1" timeslot="181" encodedTimePeriod="1::181" id="181001" end="2015-03-01" />
<period code="03/2015" label="Mar-2015" shortName="Mar-2015" stratumId="1" timeslot="182" encodedTimePeriod="1::182" id="182001" end="2015-04-01" />
</period>
<period code="Q2-2015" label="Q2-FY15" shortName="Q2-FY15" stratumId="2" timeslot="61" encodedTimePeriod="2::61" id="61002" end="2015-07-01">
<period code="04/2015" label="Apr-2015" shortName="Apr-2015" stratumId="1" timeslot="183" encodedTimePeriod="1::183" id="183001" end="2015-05-01" />
<period code="05/2015" label="May-2015" shortName="May-2015" stratumId="1" timeslot="184" encodedTimePeriod="1::184" id="184001" end="2015-06-01" />
<period code="06/2015" label="Jun-2015" shortName="Jun-2015" stratumId="1" timeslot="185" encodedTimePeriod="1::185" id="185001" end="2015-07-01" />
</period>
<period code="Q3-2015" label="Q3-FY15" shortName="Q3-FY15" stratumId="2" timeslot="62" encodedTimePeriod="2::62" id="62002" end="2015-10-01">
<period code="07/2015" label="Jul-2015" shortName="Jul-2015" stratumId="1" timeslot="186" encodedTimePeriod="1::186" id="186001" end="2015-08-01" />
<period code="08/2015" label="Aug-2015" shortName="Aug-2015" stratumId="1" timeslot="187" encodedTimePeriod="1::187" id="187001" end="2015-09-01" />
<period code="09/2015" label="Sep-2015" shortName="Sep-2015" stratumId="1" timeslot="188" encodedTimePeriod=""1::188" id="188001" end="2015-10-01" />
</period>
<period code="Q4-2015" label="Q4-FY15" shortName="Q4-FY15" stratumId="2" timeslot="63" encodedTimePeriod="2::63" id="63002" end="2016-01-01">
<period code="10/2015" label="Oct-2015" shortName="Oct-2015" stratumId="1" timeslot="189" encodedTimePeriod="1::189" id="189001" end="2015-11-01" />
<period code="11/2015" label="Nov-2015" shortName="Nov-2015" stratumId="1" timeslot="190" encodedTimePeriod="1::190" id="190001" end="2015-12-01" />
<period code="12/2015" label="Dec-2015" shortName="Dec-2015" stratumId="1" timeslot="191" encodedTimePeriod="1::191" id="191001" end="2016-01-01" />
</period>
</period>
<period code="2016" label="FY2016" shortName="FY2016" stratumId="3" timeslot="16" encodedTimePeriod="3::16" id="16003" end="2017-01-01">
<period code="Q1-2016" label="Q1-FY16" shortName="Q1-FY16" stratumId="2" timeslot="64" encodedTimePeriod="2::64" id="64002" end="2016-04-01">
<period code="01/2016" label="Jan-2016" shortName="Jan-2016" stratumId="1" timeslot="192" encodedTimePeriod="1::192" id="192001" end="2016-02-01" />
<period code="02/2016" label="Feb-2016" shortName="Feb-2016" stratumId="1" timeslot="193" encodedTimePeriod="1::193" id="193001" end="2016-03-01" />
<period code="03/2016" label="Mar-2016" shortName="Mar-2016" stratumId="1" timeslot="194" encodedTimePeriod="1::194" id="194001" end="2016-04-01" />
</period>
<period code="Q2-2016" label="Q2-FY16" shortName="Q2-FY16" stratumId="2" timeslot="65" encodedTimePeriod="2::65" id="65002" end="2016-07-01">
<period code="04/2016" label="Apr-2016" shortName="Apr-2016" stratumId="1" timeslot="195" encodedTimePeriod="1::195" id="195001" end="2016-05-01" />
<period code="05/2016" label="May-2016" shortName="May-2016" stratumId="1" timeslot="196" encodedTimePeriod="1::196" id="196001" end="2016-06-01" />
<period code="06/2016" label="Jun-2016" shortName="Jun-2016" stratumId="1" timeslot="197" encodedTimePeriod="1::197" id="197001" end="2016-07-01" />
</period>
<period code="Q3-2016" label="Q3-FY16" shortName="Q3-FY16" stratumId="2" timeslot="66" encodedTimePeriod="2::66" id="66002" end="2016-10-01">
<period code="07/2016" label="Jul-2016" shortName="Jul-2016" stratumId="1" timeslot="198" encodedTimePeriod="1::198" id="198001" end="2016-08-01" />
<period code="08/2016" label="Aug-2016" shortName="Aug-2016" stratumId="1" timeslot="199" encodedTimePeriod="1::199" id="199001" end="2016-09-01" />
<period code="09/2016" label="Sep-2016" shortName="Sep-2016" stratumId="1" timeslot="200" encodedTimePeriod="1::200" id="200001" end="2016-10-01" />
</period>
<period code="Q4-2016" label="Q4-FY16" shortName="Q4-FY16" stratumId="2" timeslot="67" encodedTimePeriod="2::67" id="67002" end="2017-01-01">
<period code="10/2016" label="Oct-2016" shortName="Oct-2016" stratumId="1" timeslot="201" encodedTimePeriod="1::201" id="201001" end="2016-11-01" />
<period code="11/2016" label="Nov-2016" shortName="Nov-2016" stratumId="1" timeslot="202" encodedTimePeriod="1::202" id="202001" end="2016-12-01" />
<period code="12/2016" label="Dec-2016" shortName="Dec-2016" stratumId="1" timeslot="203" encodedTimePeriod="2::203" id="203001" end="2017-01-01" />
</period>
</period>
</time>
</output>
</response>

Partial Response Format (with includeAllLocales="1")


Note: Normally there is a locales block for every time period and stratum. Below, only the stratum section is shown. The locales/locale block for the time periods are
identical in format.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 318/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

<stratum code="year" label="Year" shortName="Year" id="3">


<locales>
<locale locale="en" label="Year" shortName="Year" />
<locale locale="de" label="Jahr" shortName="Jahr" />
<locale locale="fr" label="Anne" shortName="Anne" />
<locale locale="es" label="Ao" shortName="Ao" />
<locale locale="pt" label="Ano" shortName="Ano" />
<locale locale="nl" label="Jaar" shortName="Jaar" />
<locale locale="ja" label="年" shortName="年" />
</locales>
<stratum code="qtr" label="Quarter" shortName="Quarter" id="2">
<locales>
<locale locale="en" label="Quarter" shortName="Quarter" />
<locale locale="de" label="Quartal" shortName="Quartal" />
<locale locale="fr" label="Trimestre" shortName="Trimestre" />
<locale locale="es" label="Trimestre" shortName="Trimestre" />
<locale locale="pt" label="Trimestre" shortName="Trimestre" />
<locale locale="nl" label="Kwartaal" shortName="Kwartaal" />
<locale locale="ja" label="四半期" shortName="四半期" />
</locales>
<stratum code="month" label="Month" shortName="Month" id="1" isDefault="1">
<locales>
<locale locale="en" label="Month" shortName="Month" />
<locale locale="de" label="Monat" shortName="Monat" />
<locale locale="fr" label="Mois" shortName="Mois" />
<locale locale="es" label="Mes" shortName="Mes" />
<locale locale="pt" label="Ms" shortName="Ms" />
<locale locale="nl" label="Maand" shortName="Maand" />
<locale locale="ja" label="月" shortName="月" />
</locales>
</stratum>
</stratum>
</stratum>

response element

Tag Name response

Attributes of the Element

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true
warning mes- sages in their response.

obsolete N If present on the response tag and set to true, this attribute indicates that the version of the method or API which is false
being invoked has become obsolete and is officially deprecated. While it continues to function at this time, it may
cease functioning in a short while. Typically, this attribute is not present.

Contents of the Element

A single optional messages element, and exactly one required output element.

messages element

Tag Name messages

Description Container for one or more message elements.

Attributes of the Element

Attribute Name Required? Value Example

(none)

Contents of the Element

One or more message elements.

message element

Tag Name message

Description Represents a message being sent from the system back to the caller. Messages are used for error messages when requests do
not succeed, for warning messages when requests do succeed, and for confirmation messages upon success.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 319/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Attributes of the Element

Attribute Required? Value Example


Name

key N When given, a key is a way to identify a particular message or type of message, useful for purposes of invalid-
automated error logging and recovery in client programs. Keys do not change under different locales of attributevalueid
requests, even when the language of the message changes. Keys also are unlikely to change in the future
due to wording adjustments or terminology changes.

Contents of the Element

The text of the message. This text is in the language of the locale specified on the request (assuming that locale is supported). The text may also contain
variable information such as the number of rows which were processed, or the particular column or value which caused an error.

output element

Tag Name output

Attributes of the Element

(none)

Contents of the Element

A single required time element. This output wrapper is standard on all API responses and encloses the valid output of any successful API call.

time element

Tag Name time

Description Container for one root stratum element, zero or one initial-balance elements and one or more root stratum period
elements.

Attributes of the Element

Attribute Name Required? Value Example

isCustom Y Either 1 or 0, indicating whether the calendar for this instance has been customized or not. 1

q1FirstMonth N The month that the fiscal year starts in (starting from 0). This attribute only appears if 8
includeLegacyInformation was 1 in the request and if isCustom is 0.

lastMonthIsFY N Indicates whether the fiscal year is equivalent to the calendar year that the fiscal year ends in. This 0
attribute only appears includeLegacyInformation was 1 in the request and if isCustom is 0.

seqNo

Added in API v17 but


reserved for future use.

Contents of the Element

Exactly one stratum element, zero or one initial-balance elements and one or more root stratum period elements.

stratum element

Tag Name stratum

Description Represents a stratum of the calendar being returned from the exportTime API call.

Attributes of the Element

Attribute Name Required? Value Example

code Y A unique, user-defined identifier for the time stratum. Yr

label Y A non-unique, user-defined text identifier for the time stratum. Fiscal
Year

shortName Y A non-unique, user-defined text identifier used when a shorter name is desired. If a short name is not Year
defined, the label will be displayed here.

id Y The unique, system-generated integer identifier for the time stratum. 7

N Flag indicating whether a cube sheet or modeled sheet is associated with the time stratum, or if this is the 1
inUse
default time stratum.

Supported in API
v16 +

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 320/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

N Flag indicating whether the time stratum is the default stratum or not. 1
isDefault

Supported in API
v16 +

Contents of the Element

Zero or one locales element. This is only included if includeAllLocales is set.

Zero or one stratum element. Every stratum apart from the leaf has exactly one stratum element. The leaf stratum element has zero contained stratum
elements.

initial-balance element

Tag Name initial-balance

Description Represents the last leaf time period before the start of the version being returned in the response to an exportTime API
call. This is only included if one and only one version is requested.

Attributes of the Element

Attribute Name Required? Value Example

code Y The unique, user-defined identifier for the initial balance time period. 12/2003

label Y The non-unique, user-defined text identifier for the initial balance time period. Dec-
2003

shortname Y The non-unique, user-defined, short text identifier for the initial balance time period. If no short name was Dec
defined, then the label is displayed.

stratumId Y The id of the stratum the initial balance belongs to. 1

timeslot Y The timeslot of the time period the initial balance belongs to.. 47

encodedTimePeriod Y The encoded data for time period, in the format of strutumId::timeslot. 1::47

id Y The unique, system-generated integer identifier for the initial balance time period. 47001

start Y The starting date (inclusive) of the initial balance, in the form YYYY-MM-DD. 2003-12-
01

end Y The ending date (exclusive) of the initial balance, in the form YYYY-MM-DD. 2004-01-
01

legacyReportTimeId N The report id that would have been displayed for this time period in older versions of this API. This 200312
attribute only appears includeLegacyInformation was 1 in the request and if isCustom is 0.

legacySheetTimeId N The sheet time id that would have been used for this time period in older versions of this API. This 48, Q63
attribute only appears includeLegacyInformation was 1 in the request and if isCustom is 0. or Y72

Contents of the Element

Zero or one locales element.

Period element

Tag Name period

Description Represents a single calendar time period being returned from the exportTime API call.

Attributes of the Element

Attribute Name Required? Value Example

code Y A unique, user-defined identifier for the time period. Q1-2004

label Y A non-unique, user-defined text identifier for the time period. Q1-FY04

shortName Y A non-unique, user-defined text identifier used when a shorter name is desired. If a short name is not Q1
defined, the label will be displayed here.

stratumId Y The id of the stratum the time period belongs to . 2

id Y The unique, system-generated integer identifier for the time period . 16002

start Y The starting date (inclusive) of the time period, in the form YYYY-MM-DD. 2004-01-
01

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 321/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

end Y The ending date (exclusive) of the time period, in the form YYYY-MM-DD. 2004-04-
01

legacyReportTimeId N The report id that would have been displayed for this time period in older versions of this API. This 200491
attribute only appears includeLegacyInformation was 1 in the request and if isCustom is 0.

legacySheetTimeId N The sheet time id that would have been used for this time period in older versions of this API. This 48, Q63
attribute only appears includeLegacyInformation was 1 in the request and if isCustom is 0. or Y72

Contents of the Element

Zero or one locales elements.

Locales element

Tag Name locales

Description Container for one or more locale elements.

Attributes of the Element

Attribute Name Required? Value Example

(none)

Contents of the Element

One or more locale elements.

locale element

Tag Name locale

Description Description of locale. Note that the text will follow the locale fallback rules.

Attributes of the Element

Attribute Name Required? Value Example

locale Y The code for the locale. en

label Y The localized label for the time period/strata.. FY2016

shortName Y The localized short name for the time period/strata.. 2016

Contents of the Element

(none)

1.4.3.28 | exportTransactionDefinition

Category Metadata retrieval

Description Returns the definition (available columns) of the transactions in the instance.

Permissions Required To Invoke IMP (import data) or MANAGE_TX (manage the transaction field definition)

Parameters Required On Request Credentials

This method's request contains only a credentials tag to identify and authorize the calling user. Once verified, the method returns an XML document describing the
definition of a transaction in the instance.

Request Format

<?xml version="1.0" encoding="UTF-8"?>


<call method="exportTransactionDefinition" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd"/>
</call>

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to per- form the action in order for the API call to succeed.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 322/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Attributes of the Element

Attribute Required? Value Example


Name

login Y

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to for- mat outgoing fr_FR
numbers and dates (using the proper thousands separator, month names, and date formatting). The
locale is also used to specify the language in which any system messages in the response should
appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive Planning, this MYINSTANCE1
attribute can be used to specify that the user is intending to access an instance other than their default
instance. If not specified, the user's default instance will be used. To determine the available instance
codes, use the exportInstances API.

Contents of the Element

(none)

Response Format

<?xml version="1.0" encoding="UTF-8"?>


<response success="true">
<output>
<transaction>
<fields>
<posting-date name="Posting Date"/>
<type name="Transaction Type">
<value id="178" name="Journal Entry"/>
<value id="179" name="Purchase Order"/>
<value id="177" name="Invoice"/>
<value id="180" name="Transaction"/>
</type>
<accounts name="Account"/>
<levels name="Plan"/>
<dimension id="4" name="Product">
<value id="48" name="B-2"/>
<value id="47" name="B-1"/>
<value id="14" name="A"/>
<value id="15" name="B-Ste"/>
</dimension>
<text-selector id="4" name="Flavor">
<value id="123" name="Chocolate"/>
<value id="122" name="Vanilla"/>
</text-selector>
<text name="Description"/>
<number name="Sales Tax"/>
<date name="Due Date"/>
<amount name="Transaction Amount"/>
</fields>
</transaction>
</output>
</response>

Each of the fields for a transaction is defined by one of these elements:

1. posting-date (one)
2. type (one)
3. accounts (one)
4. levels (one)
5. dimension (zero or more)
6. text-selector (zero or more)
7. text (zero or more)
8. number (zero or more)
9. date (zero or more)
10. amount (one)

transaction element

Tag Name transaction

Attributes of the Element

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 323/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Attribute Name Required? Value Example

(none)

Contents of the Element

One fields element.

fields element

Tag Name fields

Description Container for all required and optional fields.

Attributes of the Element

Attribute Name Required? Value Example

(none)

Contents of the Element

One element for each of the fields each transaction should have.

posting-date element

Tag Name posting-date

Description The required date the transaction was posted.

Attributes of the Element

Attribute Name Required? Value Example

name Y Printed header of this field. Posting Date

Contents of the Element

(none)

type element

Tag Name type

Description The required type of transaction

Attributes of the Element

Attribute Name Required? Value Example

name Y Printed header of this field. Transaction Type

Contents of the Element

One or more value elements.

accounts element

Tag Name accounts

Description The account this transaction belongs to. Account metadata, including the hierarchical structure, can be obtained by a call to
exportAccounts.

Attributes of the Element

Attribute Required? Value Example


Name

name Y Printed header of this field. Account

Contents of the Element

(none)

levels element

Tag Name levels

Description The level this transaction belongs to. Level metadata, including the hierarchical structure, can be obtained by a call to
exportLevels.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 324/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Attributes of the Element

Attribute Required? Value Example


Name

name Y Printed header of this field. level

Contents of the Element

(none)

dimension element

Tag Name dimension

Description A dimension assignable to a transaction. Complete dimension metadata, including its hierarchical structure, can be obtained by
a separate call to exportDimensions.

Attributes of the Element

Attribute Required? Value Example


Name

id Y Internal numeric identifier for the dimension. 42

name Y Printed header of this field. Product

Contents of the Element

One or more value elements.

text-selector element

Tag Name text-selector

Description Custom list of values defined to tag transactions.

Attributes of the Element

Attribute Name Required? Value Example

id Y Internal numeric identifier for the text selector. 42

name Y Printed header of this field. Flavor

Contents of the Element

One or more value elements.

value element

Tag Name value

Description One of the values defined for the enclosing type, dimension or text-selector.

Attributes of the Element

Attribute Name Required? Value Example

id Y Internal numeric identifier for the value. 42

name Y Printed representation of the value. Invoice

Contents of the Element

(none)

text element

Tag Name text

Description Generic text corresponding to a transaction.

Attributes of the Element

Attribute Name Required? Value Example

name Y Printed header of this field. Description

Contents of the Element

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 325/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

(none)

number element

Tag Name number

Description A generic number assigned to a transaction.

Attributes of the Element

Attribute Name Required? Value Example

name Y Printed header of this field Sales Tax

Contents of the Element

(none)

date element

Tag Name date

Description A generic date assigned to a transaction.

Attributes of the Element

Attribute Name Required? Value Example

name Y Printed header of this field. Due Date

Contents of the Element

(none)

amount element

Tag Name amount

Description The required monetary amount for a transaction.

Attributes of the Element

Attribute Name Required? Value Example

name Y Printed header of this field. Transaction Amount

Contents of the Element

(none)

1.4.3.29 | exportUsers

Category Metadata retrieval

Description Returns metadata for the complete list of all users in the instance.

Permissions Required To Invoke User Admin

Parameters Required On Request Credentials

This method's request contains only a credentials tag to identify and authorize the calling user. Once verified, the method returns an XML document describing the
complete set of all users defined in the instance.

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="exportUsers" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd"/>
</call>

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 326/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

include element

Available in API v17 and earlier.

Not available in API v18+.

Tag Name include

Description Represents a set of flags indicating what aspects of the users' information should be included or excluded from the
response. This element is optional: if not present, the default values are true for ownedLevels and false for hiddenVersions.

Attributes of the Element

Attribute Required? Value Example


Name

N Either the word true or false. Indicates if the user elements in the response includes a groupIds attribute. If true
groups
true, the groupIds in the response contains a comma-separated list of all groups the user is in. If the attribute
Available in is not present, or if its value is something other than true or false, the default value of false is used.
API v23+.

N Either the word true or false. Indicates if the user elements in the response should include ownedLevels true
ownedLevels
attributes or not. If the attribute is not present, or if its value is something other than true or false, the default
Available in value of true is used.
API v17 and
earlier.

Not available in
API v18+.

N Either the word true or false. Indicates if the user elements in the response should include hiddenVersions false
hiddenVersions
attributes or not. If the attribute is not present, or if its value is something other than true or false, the default

Available in value of false is used.

API v17 and


earlier.

Not available in
API v18+.

Contents of the Element

(none)

Response Format

<?xml version='1.0' encoding='UTF-8'?>


<response success="true">
<output>
<users seqNo="55">
<user id="19" guid="B9ADBCB81AA2F9BAE040307F02092C2E" login="[email protected]" email="[email protected]"

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 327/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

name="Anna Analyzer" permissionSetId="3" timeZone="US/Pacific"/>


<user id="123" guid="AAFF5218D55ABB9234660001BEC117A9" login="[email protected]" email="[email protected]"
name="J. Random User" permissionSetId="2" timeZone="US/Pacific"/>
</users>
</output>
</response>

response element

Tag Name response

Attributes of the Element

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true
warning messages in their response.

obsolete N If present on the response tag and set to true, this attribute indicates that the version of the method or API which is false
being invoked has become obsolete and is officially deprecated. While it continues to function at this time, it may
cease functioning in a short while. Typically, this attribute is not present.

Contents of the Element

A single optional messages element, and exactly one required output element.

output element

Tag Name output

Attributes of the Element

(none)

Contents of the Element

A single accounts element. This output wrapper is standard on all API responses and encloses the valid output of any successful API call.

users element

Tag Name users

Description Container for one or more user elements.

Attributes of the Element

Attribute Name Required? Value Example

seqNo

Added in API v17 but reserved for future use.

Contents of the Element

One or more user elements.

user element

Tag Name user

Description Represents a single user being returned in the response to an exportUsers API call.

Attributes of the Element

Attribute Name Required? Value Example

id Y The internal system ID number for the user. 19

guid Y A globally-unique identifier for the user. This identifier will never change B9ADBCB81AA2F9BAE040307F02092C2E
for this user, even if their login or name changes in the future.

login Y The login for this user. [email protected]

email Y The email address for this user. May be blank if the user has not [email protected]
configured a valid email address.

name Y The name of this user. Anna Analyzer

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 328/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

permissionSetId Y The internal system ID of the permission set assigned to this user. See
also exportPermissionSets.
Available in API
v25+

Y The internal system ID of the role assigned to this user. See also 3
roleId
exportRoles.
Available in API
v25 and older

Not Available in
API v25+

Y This attribute is only included if the user included in the request's 5,10,13
ownedLevels
credentials has Level Admin permission to the entire Organization tree
Not available in and the request has indicated that ownedLevels should be included. If
API v18 included, this attribute's value is a comma-separated list of internal
system IDs for organization levels to which this user has been granted
direct access. The user will also have access to any child levels of the
levels listed here

N (see This attribute is only included if the user included in the request's 121
hiddenVersions
description) credentials has Version Admin permission and the request has indicated
Not available in that hiddenVersions should be included. If included, this attribute's value
API v18 is a comma-separated list of internal system IDs for versions or version
folders which are hidden from this user (but whose parent is either
nonexistent or not hidden). The user will also not be able to see any child
versions of the versions listed here.

timeZone Y The time zone of the user. US/Pacific

Contents of the Element

One subscriptions element.

subscriptions element

Tag Name subscriptions

Description Represents the email subscription settings for a user.

Attributes of the Element

Attribute Name Required? Value Example

nosubscriptions Y Setting to signal user has opted out of all subscriptions. 1 means user has opted out of all 0
subscriptions.

systemAlertsAndUpdates Y Setting for system alerts and updates subscription opted by the user. 1 means user has 1
opted in and 0 means he has opted out.

customerNewsLetter Y Setting for the customer news letter subscription opted by the user. 1 means user has opted 1
in and 0 means he has opted out.

localEvents Y Setting for the local events subscription opted by the user. 1 means user has opted in and 0 1
means he has opted out.

educationTraining Y Setting for the education and training events subscription opted by the user. 1 means user 1
has opted in and 0 means he has opted out.

customerWebinars Y Setting for the customer webinar events subscription opted by the user. 1 means user has 1
opted in and 0 means he has opted out.

newProductsAndEnhancements Y Setting for new product and enhancements notification opted by the user. 1 means user has 1
opted in and 0 means he has opted out.

partnerNewsLetter Y Setting for the partner newsletters subscription opted by the user. 1 means user has opted in 1
and 0 means he has opted out.

partnerWebinars Y Setting for the partner webinar events subscription opted by the user. 1 means user has 1
opted in and 0 means he has opted out.

userGroups Y Setting for user groups events notification opted by the user. 1 means user has opted in and 1
0 means he has opted out.

surveys Y Setting for receiving surveys opted by the user. 1 means user has opted in and 0 means he 0
has opted out.

Contents of the Element

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 329/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

none

1.4.3.30 | exportVersions

Important: This API only supports user access rules in API v22 and above.

Category Metadata retrieval

Description Once verified, the method returns an XML document describing the set of all versions defined in the instance which are not
hidden from the requesting user.

Permissions Required To None (must be valid credentials for the instance)


Invoke

Parameters Required On Credentials


Request

This method's request contains only a credentials tag to identify and authorize the calling user. Once verified, the method returns an XML document describing the
set of all versions defined in the instance which are not hidden from the requesting user.

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="exportVersions" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd"/>
</call>

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

include element

Tag Name include

Description Represents a set of flags indicating what aspects of the version' information should be included or excluded from
the response. This element is optional: if not present, the API will return all version information.

Attributes of the Element

Attribute Name Required? Value Example

Indicates whether the root actuals version should be included when actuals are hidden from the false
rootActuals N
version selector.

Not supported in any


API version as of 2019.3

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 330/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Contents of the Element

(none)

Response Format

<?xml version='1.0' encoding='UTF-8'?>


<response success="true">
<output>
<versions seqNo="32">
<version id="1" name="Actuals" shortName="" type="ACTUALS" isVirtual="false" description="Total Actuals" isDefaultVersion="false"
isLocked="false" hasAuditTrail="false" isImportable="0"
startVer="2012" completedValuesThru="03/2012"
startScroll="01/2012" endVer="2016" lockLeading="" >
<version id="5" name="Adjusted Actuals" shortName="SV-13" type="ACTUALS" isVirtual="false" description="Actuals SubVersion" isDefaultVersion="false"
isLocked="false" hasAuditTrail="false" isImportable="0" >
<version id="6" name="Original Import" shortName="SSV-13" type="ACTUALS" isVirtual="false" description="Values Imported from the GL" isDefaultVersion="fa
isLocked="false" hasAuditTrail="false" isImportable="1" />
<version id="8" name="Manual Adjustments" shortName="SSV-14" type="ACTUALS" isVirtual="false" description="Actuals Sub-Version for Manual Adjustments" is
isLocked="false" hasAuditTrail="true" isImportable="1" />
</version>
<version id="9" name="Eliminations" shortName="ELIM" type="ACTUALS" isVirtual="false" description="Eliminating entries" isDefaultVersion="false"
isLocked="false" hasAuditTrail="false" isImportable="0" />
</version>
<version id="2" name="Budget 2013" shortName="" type="PLANNING" isVirtual="false" description="This is the budget for 2013 with a five-year span." isDefaultV
isLocked="false" hasAuditTrail="true" isImportable="1"
leftScroll="2013" startPlan="01/2013" endPlan="2017" lockLeading="05/2013" />
<version id="3" name="Budget 2014" shortName="B-14" type="PLANNING" isVirtual="false" description="This is the budget for 2014 with a five-year span." isDefa
isLocked="false" hasAuditTrail="false" isImportable="1"
leftScroll="2014" startPlan="01/2014" endPlan="2018" lockLeading="" />
</versions>
</output>
</response>

response element

Tag Name response

Attributes of the Element

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true
warning messages in their response.

obsolete N If present on the response tag and set to true, this attribute indicates that the version of the method or API which is false
being invoked has become obsolete and is deprecated. While it continues to function at this time, it may cease
functioning in a short while. Typically, this attribute is not present.

Contents of the Element

A single optional messages element, and exactly one required output element.

output element

Tag Name output

Attributes of the Element

(none)

Contents of the Element

A single accounts element. This output wrapper is standard on all API responses and encloses the valid output of any successful API call.

versions element

Tag Name versions

Description Container for one or more version elements.

Attributes of the Element

Attribute Name Required? Value Example

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 331/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

seqNo

Added in API v17 but reserved for future use.

Contents of the Element

One or more version elements.

version element

Tag Name version

Description Represents a single version being returned in the response to an exportVersions API call.

Attributes of the Element

Attribute Name Required? Value Example

id Y The internal system ID number for the version or folder. All IDs are unique among all versions, sub- 2
versions, and folders.

name Y The name of the version or folder, as it appears in Version Administration. Budget 2015

shortName N A short name for the version, if any, as entered in Version Administration B2015

type Y ACTUALS
One of the following values:

ACTUALS = Standard Actuals Version or Sub-Version


JOURNAL_ENTRY = Journal Entry Actuals Sub-Version
PLANNING = Plan Version
VERSION_FOLDER = Folder

Y true or false to indicate if this is a virtual version false


isVirtual

Available in API v16+

description Y The description of the version or folder, as it appears in Version Administration. This is the
budget for
2015 with a
five-year
span.

isDefaultVersion Y Tells if the version is the default version. True if the version is the default version otherwise false. true

isLocked N Indicates if the version has been "globally locked" (has its Locked Version checkbox checked). If true
not present, the version is not considered to be locked. Will always be 'false' for actuals versions or
for folders.

hasAuditTrail Y Indicates if the version has Audit Trail enabled. true

N Indicates if the version is enabled for workflow. 1


enabledForWorkflow

Available in API v17+

isImportable N Indicates if the user requesting this API is allowed to import data into the version. 0 means the 1
version cannot accept imports, and 1 means it can. A version is importable if at least one timeslot
in the specified version is importable for this user.

startVer N The code of the root time period in which the version starts. Equivalent to start of version in the 2015
version administration page. This attribute is shown only for the root actuals version. This attribute
is required for the root actuals version.

endVer N The code of the root time period in which the version ends. Equivalent to end of version in the 2015
version administration page. This attribute is shown only for the root actuals version. This attribute
is required for the root actuals version.

startScroll N The code of the leaf time period where planning begins. Equivalent to starting scroll location on the 01/2015
version administration page. This attribute is shown only for the root actuals version. This attribute
is required for the root actuals version.

completedValuesThru N The code of the latest leaf time period the root actuals has data filled in for. In a standard calendar, 03/2015
this would be a month. Equivalent to completed values through on the version administration page.
This attribute is shown only for the root actuals version. This attribute is optional for the root actuals
version.

leftScroll N The code of the root time period in which the version starts. Equivalent to left scroll limit in the 2015
version administration page. This attribute is shown only for planning versions. This attribute is

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 332/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

required for planning versions.

startPlan N The code of the leaf time period where planning begins. Equivalent to start of plan on the version 02/2015
administration page. This attribute is shown only for planning versions and is required for planning
versions.

endPlan N The code of the root time period in which the version ends. Equivalent to end of plan in the version 2015
administration page. This attribute is shown only for planning versions. This attribute is required for
planning versions.

lockLeading N The code of the leaf time period up to which version values are locked. Equivalent to lock leading 05/2015
months through on the version administration page. This attribute is shown only for the root actuals
version and planning versions. This attribute is optional for the root actuals version and planning
versions.

Y Indicates if the version is a predictive version. false


isPredictive

Available in API v28


+

Contents of the Element

One nested version element for each direct child version of this version.

1.4.3.31 | importDimensionMapping

Supported in API v19 +

Category Metadata submission

Description The importDimensionMapping API can be used to import derived dimension values.

Permissions Required To Invoke

Parameters Required On Request Credentials

The importDimensionMapping API can be used to import the mapping conditions that determine the mapping dimension values to automatically populate on
modeled sheet rows. It can be used to create, update, and delete mapping conditions. Derived dimension values on modeled sheet rows don't support virtual
versions.

Request Format
<?xml version='1.0' encoding='UTF-8'?>
<call method="importDimensionMapping" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_password"/>
<version name="Budget 2017" id="7"/>
<dimensions>
<dimension id="345" name="Area">
<mappingCriteria>
<mappingCriterion id="121">
<mapTo dimensionValueId="877" dimensionValue="East"/>
<dimension name="Level" valueId="1" value="HQ"/>
<dimension name="State" valueId="15" value="MA"/>
</mappingCriterion>
<mappingCriterion id="122">
<mapTo dimensionValueId="876" dimensionValue="West"/>
<dimension name="Level" valueId="1" value="HQ"/>
<dimension name="State" id="5">
<dimensionValue id="900" code="CA"/>
<dimensionValue id="901" code="CO"/>
</dimension>
</mappingCriterion>
</mappingCriteria>
</dimension>
</dimensions>
</call>

credentials Element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 333/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, time period names, and
date formatting). The locale is also used to specify the language in which any system
messages in the response should appear. If not specified, en_US (American English) is
used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API method.

Contents of the Element

(none)

version Element

Tag Name version

Description Specifies the version for which to import mappings.

Attributes of the Element

Attribute Name Required? Value Example

Name Required when id is not specified. The name of the version. Budget 2017

id Required when name is not specified. The version id 7

Contents of the Element

Contains one or more level elements.

dimensions Element

Tag Name dimensions

Description Container for a list of <dimension> elements.

Attributes of the Element

Attribute Name Required? Value Example

(none)

Contents of the Element

dimension elements

dimension Element

Tag Name dimension

Description Describes a dimension for which we want to import mappings.

Attributes of the Element

Attribute Name Required? Value Example

name Required when id is not specified. The name of the dimension to import mappings Area

id Required when name is not specified. The id of the dimension to import mappings. 15

Contents of the Element

A mappingCriteria element.

mappingCriteria Element

Tag Name mappingCriteria

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 334/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

DescriptionDescription Container for a list of <mappingCriterion> elements

Attributes of the Element

Attribute Required? Value Example


Name

id N If a id is provided, an existing mapping criterion with this id will be updated. If no id is provided, a new mapping 12
criterion is added to the dimension.

Contents of the Element

mappingCriterion elements for each dimension value for the derived dimension.

mappingCriterion Element

Tag Name mappingCriterion

DescriptionDescription Describes the individual dimensions and dimension values that govern if a dimension value is being mapped to. Must be
followed by a group of mapTo, dimension and dimensionValue tags.

Attributes of the Element

Attribute Required? Value Example


Name

id N If a id is provided, an existing mapping criterion with this id will be updated. If no id is provided, a new mapping 12
criterion is added to the dimension.

delete N Enter "yes" to delete all mapping conditions in the mappingCriterion. An empty value or any value other than "yes" yes
is ignored and mapping conditions are not deleted.

Contents of the Element

Contains one mapTo element and up to six dimension elements.

mapTo Element

Tag Name mapTo

Description Specifies the dimension value that is derived based on the mapping criteria.

Attributes of the Element

Attribute Name Required? Value Example

dimensionValue Required when dimensionValueId is not specified. The name of the dimension value this mapping criterion maps to. Area

dimensionValueId Required when dimensionValue is not specified. The name of the dimension value id this mapping criterion maps to. 12

Contents of the Element

(none)

dimension Element

Tag Name dimension

Description Describes one of the dimensions being used to derive the mapTo dimension value. At minimum, one dimension element
for the 'Level' dimension is required as well as one dimension element for a custom dimension.

Attributes of the Element

Attribute Required? Value Example


Name

name Required when id The name of the dimension Industry


is not specified.

id Required when The id of the dimension


name is not
specified.

value N The name of the dimension value. Required unless there are dimensionValue Retail

valueId N The id of the dimension value. Either this or value is required unless there are dimensionValue elements

Contents of the Element

dimensionValue elements

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 335/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

dimensionValue Element

Tag Name dimensionValue

Description (Optional) If more than one dimension value needs to be listed for a dimension tag, a series of
dimensionValue tags can be used instead of the value attribute.

Attributes of the Element

Attribute Name Required? Value Example

name Y The name of the dimension value Retail

code Required when id is The code of the dimension value Retail


not specified.
In API v30+ use code
instead of name.

id Required when code The id of the dimension value 25


is not specified.

Contents of the Element

(none)

Examples:

Mapping criterion to map the dimension values HQ in the level dimension and MA in the state dimension to the East dimension value in the Area dimension. Rows
where both values match will be augmented with East.

<dimension name="Area">
<mappingCriteria>
<mappingCriterion>
<mapTo dimensionValue="East"/>
<dimension name="Level" value="HQ"/>
<dimension name="State" value="MA"/>
</mappingCriterion>
</mappingCriteria>
</dimension>

Mapping criterion to map the dimension values HQ in the level dimension and MA in the state dimension to the East dimension value in the Area dimension. Rows
where both values match will be augmented with East. Since the id attribute is specified, this mapping criterion will replace an existing mapping criterion with this id.

<dimension name="Area">
<mappingCriteria>
<mappingCriterion id="123">
<mapTo dimensionValue="East"/>
<dimension name="Level" value="HQ"/>
<dimension name="State" value="MA"/>
</mappingCriterion>
</mappingCriteria>
</dimension>

Mapping criterion to map the dimension values HQ in the level dimension and CA or CO in the state dimension to the East dimension value in the Area dimension.
Rows where both values match will be augmented with East.

<dimension name="Area">
<mappingCriteria>
<mappingCriterion>
<mapTo dimensionValue="East"/>
<dimension name="Level" value="HQ"/>
<dimension name="State">
<dimensionValue code="CA"/>
<dimensionValue code="CO"/>
</dimension>
</mappingCriterion>
</mappingCriteria>
</dimension>

Response Format
Success Response

<?xml version="1.0" encoding="UTF-8"?>


<response success="true"/>

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 336/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Failure Response

<?xml version="1.0" encoding="UTF-8"?>


<response success="false">
<messages>
<message>There are duplicate mapping conditions. Make all mappingCriterion conditions unique</message>
</messages>
</response>

response Element

Tag Name response

Attributes of the Element

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true
warning messages in their response.

Contents of the Element

A single optional messages element, and exactly one required output element.

messages Element

Tag Name messages

Description Container for one or more message elements.

Attributes of the Element

(none)

Contents of the Element

One or more message elements.

message element

Tag Name message

Description Represents a message being sent from the system back to the caller. Messages are used for error messages when requests do
not succeed, for warning messages when requests do succeed, and for confirmation messages upon success.

Attributes of the Element

Attribute Required? Value Example


Name

key N When given, a key is a way to identify a particular message or type of message, useful for purposes of invalid-
automated error logging and recovery in client programs. Keys do not change under different locales of attributevalueid
requests, even when the language of the message changes. Keys also are unlikely to change in the future
due to wording adjustments or terminology changes.

Contents of the Element

The text of the message. This text is in the language of the locale specified on the request (assuming that locale is supported). The text may also contain
variable information such as the number of rows which were processed, or the particular column or value which caused an error.

1.4.3.32 | importModeledSheet

Category Metadata retrieval

Description Imports the given modeled sheet.

Permissions Required To Invoke MOD (create, edit, and delete sheets)

Parameters Required On Request Credentials, and a specification of which sheet is being requested.

Request Format

<call method="importModeledSheet" callerName="a string that identifies your client application">


<credentials credentials login="[email protected]" password="my_pwd" />

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 337/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

<ConfigurableModel allow-actuals="false"
allow-allocation="true" allow-edits-in-rollup-mode="false"
breakback-pattern="0" code="Open Positions Clone" description="Open positions Clone to be filled"
frozen-column-count="0" has-salary-detail="true" id="15" isglobal="1"
prefix="OpeningsClone" revision="0"
selected-plan-ids="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18"
state="A" strata-code="month">
<Columns>
<AssignablePlan abbr="" code="Plan" id="0"
is-splitable="false" name="Plan" read-only="false"
show-total-at-bottom="false" tool-tip="" />
<Driver abbr="" code="PositionCode" decimal-precision="0"
driver-type="0" id="22" is-split-key="false" is-splitable="false"
name="Position Code" read-only="false" show-total-at-bottom="false"
tool-tip="" />
<Dimension abbr="" code="Department" codeHasBeenUpdated="false"
hasOverriddenTitle="false" id="6" is-splitable="true"
isEditDimension="false" isHiddenOnSheet="false" isTextSelector="false"
name="Department" read-only="false" show-total-at-bottom="false"
tagType="0" tool-tip="" requiredColumn="true">
<DimensionValue abbr="" id="7" in-use="1" name="Engr"
sort-order="0" />
<DimensionValue abbr="" id="40" in-use="0" name="QA"
sort-order="1" />
<DimensionValue abbr="" id="8" in-use="0" name="PS"
sort-order="3" />
<DimensionValue abbr="" id="41" in-use="0" name="Dev"
sort-order="2" />
<DimensionValue abbr="" id="9" in-use="1" name="G & A"
sort-order="4" />
<DimensionValue abbr="" id="10" in-use="1" name="Sales"
sort-order="5" />
<LookupTables />
</Dimension>
<Dimension abbr="" code="Title" codeHasBeenUpdated="false"
hasOverriddenTitle="false" id="16" is-splitable="true"
isEditDimension="false" isHiddenOnSheet="false" isTextSelector="false"
name="Title" read-only="false" show-total-at-bottom="false"
tagType="0" tool-tip="" requiredColumn="false">
<DimensionValue abbr="" id="64" in-use="1" name="Sales Rep"
sort-order="8" />
<DimensionValue abbr="" id="65" in-use="0" name="Engr Mgr"
sort-order="10" />
<DimensionValue abbr="" id="66" in-use="1" name="Sr Engr"
sort-order="11" />
<DimensionValue abbr="" id="67" in-use="0" name="Engr"
sort-order="12" />
<DimensionValue abbr="" id="68" in-use="0" name="GUI Engr"
sort-order="13" />
<DimensionValue abbr="" id="47" in-use="0" name="CFO"
sort-order="1" />
<DimensionValue abbr="" id="48" in-use="0" name="VP Mkt"
sort-order="3" />
<DimensionValue abbr="" id="49" in-use="0" name="Doc Mgr"
sort-order="5" />
<DimensionValue abbr="" id="18" in-use="0" name="CEO"
sort-order="0" />
<DimensionValue abbr="" id="50" in-use="0" name="VP Sales"
sort-order="7" />
<DimensionValue abbr="" id="51" in-use="0" name="VP Engr"
sort-order="9" />
<DimensionValue abbr="" id="61" in-use="0" name="Controller"
sort-order="2" />
<DimensionValue abbr="" id="62" in-use="1" name="Mkt Assoc"
sort-order="4" />
<DimensionValue abbr="" id="63" in-use="0" name="Doc Writer"
sort-order="6" />
<LookupTables />
</Dimension>
<Dimension abbr="" code="Base Pay" codeHasBeenUpdated="false"
hasOverriddenTitle="false" id="1" is-splitable="true"
isEditDimension="false" isHiddenOnSheet="false" isTextSelector="false"
name="Base Pay" read-only="false" show-total-at-bottom="false"
tagType="0" tool-tip="" requiredColumn="false">

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 338/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

<DimensionValue abbr="" id="22" in-use="1" name="60-80K"


sort-order="3" />
<DimensionValue abbr="" id="23" in-use="0" name="80-100K"
sort-order="4" />
<DimensionValue abbr="" id="24" in-use="0" name="100-120K"
sort-order="0" />
<DimensionValue abbr="" id="25" in-use="1" name="120-150K"
sort-order="1" />
<DimensionValue abbr="" id="26" in-use="0" name="150-200K"
sort-order="2" />
<DimensionValue abbr="" id="27" in-use="0" name=">200K"
sort-order="5" />
<LookupTables />
</Dimension>
<Dimension abbr="" code="Position Type"
codeHasBeenUpdated="false" hasOverriddenTitle="false" id="10"
is-splitable="true" isEditDimension="false" isHiddenOnSheet="false"
isTextSelector="false" name="Position Type" read-only="false"
show-total-at-bottom="false" tagType="0" tool-tip="" requiredColumn="false">
<DimensionValue abbr="" id="28" in-use="1" name="Full Time"
sort-order="1" />
<DimensionValue abbr="" id="29" in-use="1" name="Part Time"
sort-order="2" />
<DimensionValue abbr="" id="30" in-use="1" name="Contract"
sort-order="0" />
<LookupTables />
</Dimension>
<Dimension abbr="" code="Education" codeHasBeenUpdated="false"
hasOverriddenTitle="false" id="7" is-splitable="true"
isEditDimension="false" isHiddenOnSheet="false" isTextSelector="false"
name="Education" read-only="false" show-total-at-bottom="false"
tagType="0" tool-tip="" requiredColumn="false">
<DimensionValue abbr="" id="32" in-use="1" name="Masters"
sort-order="1" />
<DimensionValue abbr="" id="33" in-use="0" name="Phd"
sort-order="2" />
<DimensionValue abbr="" id="31" in-use="1" name="Graduate"
sort-order="0" />
<LookupTables />
</Dimension>
<Driver abbr="" code="Rate" decimal-precision="0"
display-as="1" driver-type="1" id="23" is-split-key="false"
is-splitable="false" name="Rate" read-only="false"
show-total-at-bottom="false" tool-tip="" />
<Driver abbr="" code="YearsOfExperience" decimal-precision="0"
display-as="1" driver-type="1" id="24" is-split-key="false"
is-splitable="false" name="Years Of Experience" read-only="false"
show-total-at-bottom="false" tool-tip="" />
<Driver abbr="" code="FillBy" decimal-precision="0"
driver-type="2" id="25" is-split-key="false" is-splitable="false"
name="Fill By" read-only="false" show-total-at-bottom="false"
tool-tip="" />
</Columns>
<CalculatedAccounts />
<Assumptions />
</ConfigurableModel>
</call>

The call element contains a credentials element, as well a single ConfigureableModel element.

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 339/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

ConfigurableModel element

Tag Name ConfigurableModel

Description Represents a single modeled sheet uploaded.

Attributes of the Element

Attribute Required? Value Example


Name

code Y The name of the sheet. This can be used to identify sheets in other API calls, such as Open Positions
importModeledSheet. The sheet will be imported if a sheet of this name does not already exist in the Clone
instance.

prefix Y The prefix of the sheet used to prefix the sheet's accounts. This must be unique. OpeningsClone

description N The description of the sheet, if any. Clone of Open


positions to be
filled

Contents of the Element

See the Request XML above

Response Format

<response success="true">
<messages>
<message type="INFO">Dimension Created: Base Pay New</message>
<message type="INFO">Dimension Created: ABC</message>
</messages>
</response>

The response will have the success attribute set to true if the import is successful. In addition, optionally, one or more informational messages will indicate if any
new dimensions have been created.

If the creation fails due to a system error, the response will be as follows:

<response success="false">
<messages>
<message key="exception-caught">Caught Exception: Failed to create modeled
sheet.
</message>
</messages>
</response>

1.4.3.33 | Metadata Bulk Update

Supported in API v17 +

The key benefit of metadata bulk update APIs is that they allow synchronizing levels, dimensions, and GL accounts within Adaptive Planning with counterparts in an
external system on a regular, scheduled basis. Instead of calling out individual elements one by one, these APIs let you submit a raw XML file or compressed
(zipped) XML to update, reorder, and create elements.

With metadata bulk APIs, the new version of the tree of existing elements imports into Adaptive Planning.

Metadata bulk update APIs:

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 340/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Never delete. Elements missing from the uploaded version remain untouched.
Create any new elements found in the upload, if they can.
Update the properties of any elements being uploaded, including their parentage properties.
Update the attribute assignments being uploaded.
They specifically allow partial tree upload (since deletion is never performed, partial uploads are non-destructive).
They allow identifying the existing elements in a tree either by their internal ID number or their "original" (pre-update) unique identifier field.
Halt on catastrophic errors and roll back. Catastrophic errors include:
Attempts to create a cycle in a hierarchy
Attempts to create a new element whose identifying field collides with one already in the system (e.g. creating a new account with a code that is in
use)
Attempts to update an element's identifying field such that it collides with one already in the system.
Proceed on ignorable errors that do not halt the import, and report in the result response as warnings. Ignorable errors include those unlikely to produce any
cascading effect, such as:
Attempts to change an attribute assignment to a value that does not exist.
Attempts to set a level name to something that is too long for the field.

Bulk upload using compressed XML (zipped)


For large payloads, you can upload compressed content as a ZIP file containing only the xml of the updates without any subdirectories, folders or other content. If
folders or subdirectories get detected in the ZIP at post, the request is rejected.

Attach a Compressed XML (zipped) File Curl Example

curl -i -X POST -H "Content-Type: multipart/form-data" -F "request=<C:/temp/requestUpdateDimVal.xml" -F "content=@C:/temp/updateDimensions.zip" https://api.adapti

requestUpdateDimVal.xml content

<?xml version='1.0' encoding='UTF-8'?>


<call method="updateDimensions" callerName="Steve C">
<credentials login="[email protected]" password="my_password"/>
</call>

updateDimVal.zip/content.xml

<?xml version='1.0' encoding='UTF-8'?>


<dimensions>
<dimension id="7" name="Education" shortName="" autoCreate="0" listDimension="1" keepSorted="0" useOnLevels="0">
<dimensionValue id="32" name="Graduate" description="Modified Graduate degree" />
</dimension>
</dimensions>

You can still make API requests in the body of an API call without using attachments.

<?xml version='1.0' encoding='UTF-8'?>


<call method="updateDimensions" callerName="Steve C">
<credentials login="[email protected]" password="my_password"/>
<dimensions>
<dimension id="7" name="Education" shortName="" autoCreate="0" listDimension="1" keepSorted="0" useOnLevels="0">
<dimensionValue id="32" name="Graduate" description="Modified Graduate degree" />
</dimension>
</dimensions>
</call>

Metadata Bulk Update APIs:


updateDimensions
updateLevels
updateAccounts
updateAttributes

1.4.3.34 | publishChanges

Category Admin publishing

Description Publish any pending changes.

Permissions Required To Must be valid credentials for the instance and "Publish Admin Changes" permission. Instance must have admin
Invoke publishing enabled.

Parameters Required On Credentials


Request

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 341/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

This method's request contains a credentials tag to identify and authorize the calling user. Once verified, this method will publish any batched changes. Optionally,
the request may contain an action tag.

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="publishChanges" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd"/>
</call>

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

Response Format
If the request is received with no batched changes, then the response is the 'Publish Success' response with 'publishedCount' = 0.
Success is where given n unpublished changes, all n are successfully published.
In a successful publish, output contains a publishResponse element that has a publishedCount attribute stating the number of changes that were published.
In an unsuccessful publish, output contains a publishResponse element that has the same publishedCount attribute and a notPublishedCount attribute
listing the number of changes that were not published.

Success Example

<?xml version='1.0' encoding='UTF-8'?>


<response success="true">
<output>
<publishResponse publishedCount="3" />
</output>
</response>

Error Example

<?xml version='1.0' encoding='UTF-8'?>


<response success="false">
<messages>
<message type="ERROR">Publish Error</message>
</messages>
<output>
<publishResponse publishedCount="0" notPublishedCount="2" />
</output>
</response>

response element

Tag Name response

Attributes of the Element

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 342/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true
warning messages in their response.

obsolete N If present on the response tag and set to true, this attribute indicates that the version of the method or API which is false
being invoked has become obsolete and is officially deprecated. While it continues to function at this time, it may
cease functioning in a short while. Typically, this attribute is not present.

Contents of the Element

A single optional messages element, and exactly one required output element.

output element

Tag Name output

Attributes of the Element

(none)

Contents of the Element

A single accounts element. This output wrapper is standard on all API responses and encloses the valid output of any successful API call.

publishResponse element

Tag Name publishResponse

Description The response to a publish changes request. Contains information on either the status of unpublished changes, or the
result of doing a publish.

Attributes of the Element

Attribute Name Required? Value Example

publishedCount Y The number of changes that were successfully published. 6

notPublishedCount N The number of changes that were NOT published. Included with an unsuccessful 'publish' response. 2

Contents of the Element

(none)

1.4.3.35 | unpublishedChangesStatus

Category Admin publishing

Description Retrieve the number of unpublished changes, and determine if admin publishing is disabled for the instance.

Permissions Must be valid credentials for the instance. If admin publishing is disabled, no additional permissions are required. If admin publishing
Required To Invoke is enabled, the user must have the Publish Admin Changes permission.

Parameters Credentials
Required On
Request

This method's request contains a credentials tag to identify and authorize the calling user. Once verified, this method will publish any batched changes. Optionally,
the request may contain an action tag.

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="unpublishedChangesStatus" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd"/>
</call>

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or his- tory of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 343/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

Response Format
These are examples of responses for admin publishing enabled and disabled.

Admin Publishing Enabled Example

<?xml version='1.0' encoding='UTF-8'?>


<response success="true">
<output>
<unpublishedStatus adminPublishingEnabled="1" numberToPublish="3" />
</output>
</response>

Admin Publishing Disabled Example

<?xml version='1.0' encoding='UTF-8'?>


<response success="true">
<output>
<unpublishedStatus adminPublishingEnabled="0" />
</output>
</response>

response element

Tag Name response

Attributes of the Element

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true
warning messages in their response.

obsolete N If present on the response tag and set to true, this attribute indicates that the version of the method or API which is false
being invoked has become obsolete and is officially deprecated . While it continues to function at this time, it may
cease functioning in a short while. Typically, this attribute is not present.

Contents of the Element

A single optional messages element, and exactly one required output element.

output element

Tag Name output

Attributes of the Element

(none)

Contents of the Element

A single required unpublishedStatus element. This output wrapper is standard on all API responses and encloses the valid output of any successful API call.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 344/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

unpublishedStatus element

Tag Name unpublishedStatus

Description The response to an unpublishedChangesStatus request. Contains information on whether admin publishing is
enabled, and if so, how many unpublished changes there are.

Attributes of the Element

Attribute Name Required? Value Example

adminPublishingEnabled Y Whether or not admin publishing is enabled for this instance (0=not enabled, 1=enabled). 1

numberToPublish N How many unpublished changes there are. Appears only if admin publishing is enabled. If there are 2
no unpublished changes, value is 0.

Contents of the Element

(none)

1.4.3.36 | updateAccessRules

Supported in API v24+

Important: updateAccessRules requires Access Rule Security.

Category Access Rules modification

Description Update or replace a set of existing access rules from an access rules spreadsheet file.

Permissions Required To Invoke Users

updated in API v31

Parameters Required On Request Credentials, importOption

The method allows user to upload a spreadsheet file to update access rules. The content-type of the method request is multipart/form-data.

Request Format
1. Key is request, value is xml content, which contains a credentials tag to identify and authorize the calling user and an importOption tag to specify the
operation. The user must have "Admin" permission to update access rules.
2. Key is content, Spreadsheet file to be imported. Spreadsheet files with extension .xls and .xlsx are supported. The file is the same with the files used in the
UI access rules import.

Example

HTTP Request Body Form Data

Key Value Content Type

request text/xml
<?xml version='1.0' encoding='UTF-8'?>
<call method="updateAccessRules" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd" locale="en_US"/>
<importOption operation="update"/>
</call>

content access_rules_template.xlsx

Full Request Example

POST https://api.adaptiveinsights.com/api/v24
Content-Type: multipart/form-data; boundary=WebAppBoundary

--WebAppBoundary
Content-Disposition: form-data; name="request"
Content-Type: text/xml

<?xml version='1.0' encoding='UTF-8'?>


<call method="updateAccessRules" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd" locale="en_US"/>
<importOption operation="update"/>
</call>
--WebAppBoundary

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 345/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Content-Disposition: form-data; name="content"; filename="access_rules_template.xlsx"

< access_rules_template.xlsx
--WebAppBoundary--

XLSX Template Format


See the Complete the Template or Edit sections of Create Access Rules to view the format for the access rules template .xlsx file.

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have a role containing [email protected]
the permissions required for the method being invoked.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

importOption element

Tag Name importOptions

Description Specifies an operation to update access rules..

Attributes of the Element

Attribute Required? Value Example


Name

operation Y update
"update" or "replaceAll"

"update":

Replaces the access rules of the users or groups who are mentioned in the request. For example, say you
add one rule in the template for the Accountants group. Update replaces all the existing rules for the
Accountant group with the one new rule. If you intend to add an additional rule to this group, export the
existing rules and then add one more rule. The import then includes the existing rules as well as the new
rule.
Adds rules for new users or groups. For example, say the template only has rules for new users or groups
that before had no rules. Update adds the news rules and leaves all existing rules as-is.

"replaceAll": Deletes all existing rules and adds the rules that are in the request.

Contents of the Element

(none)

CURL Example

curl -F "request=<updateAccessRules.xml;type=text/xml" -F "content=@access_rules_template_jp.xlsx" https://api.adaptiveinsights.com/api/v24

Response Format
There are two possible content-type for the response:

1. When the request succeeds or there are errors not related to the content of the uploaded spreadsheet, the content-type is text/xml.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 346/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

2. When the uploaded spreadsheet contains errors, the content-type is multi-part/mixed. The response body contains two parts:
a. The first part is the xml data and represents the request status.
b. The second part is the base64 encoded error report spreadsheet file.

Example
Response Without Spreadsheet Errors

HTTP/1.1 200 OK
Content-Type: text/xml;charset=UTF-8

<?xml version="1.0" encoding="UTF-8"?>


<response success="false">
<messages>
<message type="ERROR" key="error-dac-not-enabled">Dimension Access Control is not enabled in this instance.
</message>
</messages>
</response>

Response with Spreadsheet Errors

HTTP/1.1 200 OK
Content-Type: multipart/mixed; boundary=----AdaptivePlanningAPIBoundary173bb6faa3d

------AdaptivePlanningAPIBoundary173bb6faa3d
Content-type: text/xml; charset=UTF-8

<?xml version="1.0" encoding="UTF-8"?>


<response success="false">
<messages>
<message type="ERROR" key="error-contains-data-error">Error occurred, refer the error sheet for detailed error.</message>
</messages>
</response>

------AdaptivePlanningAPIBoundary173bb6faa3d
Content-Disposition: attachment; filename="Error Report.xlsx"
Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Content-Transfer-Encoding: base64

UEsDBBQACAgIAKx1BFEAAAAAAAAAAAAAAAATAAAAW0NvbnRlbnRfVHlwZXNdLnhtbM2V307CMBTGX2XprdkKmBhjGFyIXiqJ+AB1PWMN/Ze2wHh7Tzd2Ac5EhSXerF2/0+/39WzZpvNayWQHzgujczLORiQBXRgu9D
------AdaptivePlanningAPIBoundary173bb6faa3d--

Save the Error Report Spreadsheet File


The Error Report.xlsx in the response is base64 encoded data. To open it in Microsoft Excel, convert the data from base64 to binary and then save it as a binary
file.

Steps to convert the data in the response to an error report spreadsheet with text editor:

1. Open a text editor supports Hexadecimal encoding, like Sublime Text.


2. Create a new file, save it with name error_report.xlsx.
3. Click File > Reopen with Encoding > Hexadecimal.
4. Use a tool like Cryptii to convert the base64 data to hex. Remember to remove the tailing newline character.
5. Copy the converted data to the text editor, then save.
6. The file should open with Microsoft Excel.

Error Message Descriptions

Type Message Example/Description

Error Missing import operation attribute. The operation attribute is not specified.

Error Invalid operation attribute. The operation specified in the request is not valid. Valid value is "update" or
"replaceAll".

Error Invalid request format. The request part is not valid XML data.

Error Dimension Access Control is not enabled in this The target instance doesn't have DAC enabled.
instance.

Error Invalid spreadsheet file The uploaded file is not a valid spreadsheet file, make sure that is a .xls or .xlsx file.

Error Error occurred, refer to the error sheet for detailed error. There are some data errors in the uploaded spreadsheet file.

1.4.3.37 | updateAccount

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 347/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Category Metadata modification

Description Update an existing account in the system. This API returns an error message when validation or update fails, or it returns metadata for the
updated account upon success. This API supports only the following account types: Assumption, GL Account, and Custom Account. It does
not support system or linked accounts.

Permissions Model for GL and Custom account. Assumptions for Assumptions.


Required To
Invoke

Parameters Credentials
Required On
Request

This method's request contains a credentials tag to identify and authorize the calling user. User must have Model or Assumptions permission to perform the account
creation. The XML request is validated for each field and against certain business logic. Error messages are returned as part of the response when the creation
fails. The operation may be halted and a warning message provided when a risky operation is detected. The request needs to be resubmitted with the attribute
"ignoreWarnings" set to 1 in order to complete the account update.

Request Format
The request schema is provided in the Relax NG Compact format.

default namespace = ""


start =
element account {
attribute id { xsd:integer }, #account id
attribute name { xsd:string { maxLength="2048" minLength="1"} }?, #Non-empty string with a maximum length of 2048 characters.
attribute code { xsd:string { maxLength="2048" minLength="1"} }?, #Non-empty string with a maximum length of 2048 characters.
attribute description { xsd:string { maxLength="2048"} }?, #Potentially empty string with a maximum length of 2048 characters.
attribute shortName { xsd:string { maxLength="64"} }?, #Potentially empty string with a maximum length of 64 characters.
attribute exchangeRateType { xsd:string }?, #displayAs must be CURRENCY (only if multicurrency is enabled) attribute hasSalaryDetail { string "0" | string "1"
attribute dataPrivacy { string "PRIVATE" | string "PUBLIC_TOP" | string "PUBLIC_ALL" }?,
attribute isBreakbackEligible { string "0" | string "1" }?, #0=No, 1=Yes
attribute proceedWithWarnings { string "0" | string "1" }?, #0=No, 1=Yes
element attributes{
element attribute{
attribute attributeId{ xsd:integer },
attribute valueId{ xsd:integer }
}*
}?
}

Example

<?xml version='1.0' encoding='UTF-8'?>


<call method="updateAccount" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd"/>
<account
id="48"
name="Account Name"
code="Account_Code"
description="Account Description"
shortName="Short Name"
exchangeRateType="A"
hasSalaryDetail="1"
dataPrivacy="PRIVATE" >
<attributes>
<attribute attributeId="20" valueId="170" />
</attributes>
</account>
</call>

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 348/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

account element

Tag Name account

Description Specifies an account to create.

Attributes of the Element

Attribute Name Required? Value Example

id Y The internal system ID number for the account.This can be used to identify accounts in other API 16
calls, such as exportDimensionFamilies.

name Y The name of the account, as it appears on reports and sheets. Current
Assets

code N The code of the account, alphanumeric characters and underscores only. Should not supply a code Cur_Assets
attribute for account groups.

description N The textual description of the account. Total


current
assets

shortName N The short name for the account. CA

exchangeRateType N Only present for instances with multicurrency enabled and for accounts with E
displayAs="CURRENCY". Possible values: any of the exchange rate type codes present in the
instance, as configured in Manage Currencies. "A"=Monthly Average, "E"=End of Month.

hasSalaryDetail N Viewing splits of account requires salary detail permission. 0 for no, 1 for yes. 1

dataPrivacy N Choose whether the value of account is private (PRIVATE), public at top level only (PUBLIC_TOP) PRIVATE
or public at all levels (PUBLIC_ALL). This defaults to PRIVATE.

isBreakbackEligible N Available in breakback. 0 for no, 1 for yes. Applicable only for assumptions. 0

proceedWithWarnings N Indicates whether the user wants to ignore warn‐ ing messages and go ahead with the update 1
operation: 0 for no, 1 for yes. If there are warnings and proceedWithWarnings=0, then account will
not be updated. Set proceedWithWarnings=1 to update the account when there are warnings.

Contents of the Element

One optional attributes element if you want to edit one or more account attributes associated with the account.

attributes element

Tag Name attributes

Description Container for one or more account attribute elements.

Attributes of the Element

Attribute Name Required? Value Example

(none)

Contents of the Element

One or more attribute elements.

attribute element

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 349/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Tag Name attribute

Description Represents one account attribute element.

Attributes of the Element

Attribute Required? Value Example


Name

attributeID Y The ID of the account attribute that was generated by the system. 20

valueID Y The unique ID of the account attribute value that was generated by the system. If this value is 0, then this 170
attribute will be removed from the account.

Contents of the Element

none

Response Format
These are examples of responses for successful and unsuccessful updating of an account.

Success Example

<?xml version='1.0' encoding='UTF-8'?>


<response success="true">
<messages>
<message type="WARNING" key="warning-unpublished-changes" values="" accountId="1">You have unpublished changes.
Your changes will not be visible every where until it is published.</message>
</messages>
<output>
<accounts>
<account id="1" code="Assets" name="Assets" description="Total Assets" timeStratum="month" displayAs="CURRENCY" accountTypeCode="A" decimalPrecision="
<attributes>
<attribute
name="AP Eligible"
attributeId="17"
value="Yes"
valueId="170" />
</attributes>
</account>
</accounts>
</output>
</response>

Error Example

<?xml version='1.0' encoding='UTF-8'?>


<response success="false">
<messages>
<message type="ERROR" key="invalid-account-id" values="441" accountId="-50">Invalid account id: "-50"</message>
</messages>
</response>

response element

Tag Name response

Attributes of the Element

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was suc- cessful or not. Even successful calls may contain true
warning mes- sages in their response.

Contents of the Element

A single optional messages element and/or a single optional output element.

output element

Tag Name output

Attributes of the Element

(none)

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 350/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Contents of the Element

A single accounts element. This output wrapper is standard on all API responses and encloses the valid output of any successful API call.

messages element

Tag Name messages

Description Container for one or more message elements.

Attributes of the Element

(none)

Contents of the Element

One or more message elements.

message element

Tag Name message

Description Represents a message being sent from the system back to the caller. Messages are used for error messages when requests do
not succeed, for warning messages when requests do succeed, and for confirmation messages upon success.

Attributes of the Element

Attribute Required? Value Example


Name

type Y Type is a way to identify the type of message. The different types are INFO, WARNING and ERROR. Type WARNING
ERROR means that this request was not processed.

key Y A key is a way to identify a particular message or type of message, useful for purposes of automated error logging warning-
and recovery in client pro- grams. Keys do not change under different locales of requests, even when the invalid-
language of the message changes. Keys also are unlikely to change in the future due to wording adjustments or timespan-
terminology changes. start

values N When given, the values represent variables used in the message text. 199,12

parentId N When available, the ID of the new account's parent that was supplied in the request. 50

Contents of the Element

The text of the message. This text is in the language of the locale specified on the request (assuming that locale is sup- ported). The text may also contain
variable information such as the number of rows which were processed, or the particular column or value that caused an error.

accounts element

Tag Name accounts

Description Container for one or more account elements.

Attributes of the Element

(none)

Contents of the Element

One or more account elements.

account element

Tag Name account

Description Represents a single account being returned in the response to an exportAccounts API call. If this element is directly
within the enclosing accounts element of the response (that is, it is not enclosed within another account element),
this account element represents a root account, an account which has no parent.

Attributes of the Element

Attribute Name Required? Value Example

name Y The name of the account, as it appears on reports and sheets.


Current

Assets

code N The code of the account, alphanumeric characters and underscores only. Should not Cur_Assets

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 351/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

supply a code attribute for account groups.

id Y The internal system ID number for the account.This can be used to identify accounts in 16
other API calls, such as exportDimensionFamilies.

accountTypeCode N The letter code corresponding to the data type account. A

Type Code Account Type Account Class

A Asset GL

B Current Asset GL

C Liability & Equity GL

CUBE Cube Cube

EN YTD Earnings/Loss GL

F Fixed Asset GL

G Cost of Goods Sold GL

I Income GL

J Non-Operating GL
Income

K Cumulative System
Translation
Adjustment

L Liability GL

M Current Liability GL

MI Consolidation Predefined
Percentages

MT Metric Metric

N Net Income GL

O Other Asset GL

Q Equity GL

R Long Term Asset GL

S Assumption Assumption

T Long Term Liability GL

W Modeled Modeled

X Expense GL

XR Exchange Rate Predefined

Y Non-Operating GL
Expenses

Z Custom Custom

description N The textual description of the account.


Total

current assets

shortName N The short name for the account, if any, as entered in the Account Administration. CA

timeStratum N The time stratum of the account, as the code of the time stratum. For Cube accounts, Month
Modeled accounts, and cube-entered GL accounts, the time stratum is determined by
Supported in API
the time stratum of their owning sheet. All other accounts use the default time stratum
v16+
set within the Time Admin UI.

displayAs The account's output display setting: NUMBER, CURRENCY, or PERCENT. Only NUMBER
provided for accounts that have a Display As property in Account Administration.

isAssumption N Either "0" or "1", indicating whether the account is an assumption. This is set to “1” for 1
assumptions and exchange rate accounts.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 352/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

suppressZeroes N Flag indicating whether the account allows users to sup- press zeroes on sheets or not. 1
0 is disallowed, 1 is allowed. Only provided for accounts that have a Sup- press Zeroes
property in Account Administration.

isDefaultRoot N Either "0" or "1", indicating whether the account or account group is a default root. 1

decimalPrecision N Number of decimal places to display for numbers in this account. Default is 0. The 0
special value of 99 is used to indicate a Linked Account that inherits the decimal
precision of its target. A value of -1 means the account is a currency account and uses
the precision of whichever currency it is displaying.

planBy N For Cumulative accounts, indicates whether the account is plan by balance (BALANCE) BALANCE
or plan by delta (DELTA).

exchangeRateType N Only present for instances with multicurrency enabled and for accounts with E
displayAs="CURRENCY". Possible values: any of the exchange rate type codes
present in the instance, as configured in Manage Currencies. "A"=Monthly Average,
"E"=End of Month.

isImportable N Indicates whether the account is able to accept imported data. 0 means the account is 1
not importable and 1 is importable. Only present if versionName or versionId is
specified in the request.

Note: isImportable only indicates that an account is available for import in the specified
version, not that the user making the API call has the permission to import into the
version or account. Use exportVersions to see which versions are available to the user
for import.

hasSalaryDetail N Viewing splits of account requires salary detail permission. 0 for no, 1 for yes. 1

balanceType N Indicates the balance type of an account, DEBIT or CREDIT. This attribute is empty if DEBIT
the account does not have an associated balance type. Only GL accounts have a
balance type.

dataEntryType N Indicates the data entry type of an account. Either STANDARD or CUBE. A blank value CUBE
indicates that data entry type is not applicable to an account. For example, a linked
account or a modeled account will have a blank data entry type.

timeRollUp N Indicates how the account behaves when rolled up over a time period. Can be SUM, SUM
WEIGHTED_AVERAGE, LAST, or AVERAGE. This will be empty for account groups
and metric accounts.

timeWeightAcctId N If this account has a timeRollup of WEIGHTED_AVERAGE, this will be the internal 133
system id number of the account from where the weights are determined. This will be
empty if no weight account exists or the account does not have a timeRollup of
WEIGHTED_AVERAGE.

hasSalaryDetail N Either 0 or 1 to indicate whether this account has splits that require the Access Salary 1
Detail permission to be viewed. This will be empty if not applicable to this account.

dataPrivacy N Indicates which levels the account's values are public on and able to be referenced in PRIVATE
other levels when writing formulas. Can be PRIVATE so that the account's values are
private, PUBLIC_TOP so that the account's values are public at only the top level, or
PUBLIC_ALL so that the account's values are public at all levels. Assumptions do not
have a dataPrivacy setting since they are always public.

subType N Indicates whether the account is PERIODIC or CUMULATIVE. If an account is periodic, PERIODIC
its value in a given month equals the net activity for the month. Examples include
revenue and expense accounts. If an account is cumulative, its value equals the ending
balance for a given month. This is the prior month’s value plus or minus any activity in
the given month. Balance sheet accounts are cumulative. This will be empty for account
groups and metric accounts.

startExpanded N This indicates whether an account and its children start out in an expanded state when 1
first loading a sheet. This applies only for parent accounts. This will be empty for leaf
accounts.

isBreakbackEligible N Either 0 or 1 to indicate whether this account can be used in a breakback. This applies 0
only to standard assumptions. This will be empty for other types of accounts.

levelDimRollup N Indicates how the account behaves when rolled up along a level or dimension. Can be NONBLANK_AVERAGE
SUM, WEIGHTED_AVER- AGE, TEXT, or NONBLANK_AVERAGE. This will be empty
for account groups and metric accounts.

levelDimWeightAcctId N If this account has a levelDimRollup of WEIGHTED_AVERAGE, this will be the internal 118
system id number of the account from where the weights are determined. This will be
empty if no weight account exists or the account's levelDimRollup is not
WEIGHTED_AVERAGE.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 353/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

rollupText N If this account has a levelDimRollup of TEXT, then this is the text string that will show None
up in the cell indicating the rolled up value of the account.

enableActuals N 0 to show only plan data for the account. 1 to import actuals into the account. For linked 1
accounts, 0 will show actuals only if the linked account has them, and 1 will enable
actuals for the linked account. This will be empty for account groups and metric
accounts.

isGroup Y 0 or 1 to indicate whether this is an account group or not. 1

isIntercompany N 0 or 1 to indicate whether this account is an intercompany account or not. 1

formula N The formula for the account, if it has one. ACCT.Revenue -


ACCT.Expenses

isLinked N 0 or 1 to indicate whether this account is a linked account or not. 1

isSystem N 0 or 1 to indicate whether this account is a system account or not. 1

owningSheetId N For accounts that can be on modeled and cube sheets, the internal system id number 17
of the sheet that this account is on. This will be empty if it is not such an account, or if it
is such an account but is not currently assigned to a sheet.

Contents of the Element

One nested account element for each direct child account of this account.

One attributes element if account has one or more attributes associated with it.

attributes element

Tag Name attributes

Description Container for one or more attribute elements.

Attributes of the Element

Attribute Name Required? Value Example

(none)

Contents of the Element

One or more attribute elements.

attribute element

Tag Name attribute

Description Represents a single non-blank account attribute mapping to which an account is associated.

Attributes of the Element

Attribute Name Required? Value Example

name Y The name of the account attribute. SEC Reporting

value Y The name of the account attribute associated with the account. Yes

attributeId Y The internal system ID number of the account attribute. 10

valueId Y The internal system ID number of the account attribute value. 108

Contents of the Element

None.

1.4.3.38 | updateAccounts

Supported in API v20 +

Category Metadata modification

Description Update a set of existing GL accounts or create new GL accounts. Multiple accounts with multiple values can be updated in one call. If
successful, the API returns details for the accounts that were updated/created. If the API fails, a comprehensive list of errors and their
causes returns.

Permissions Model and permissions on each level

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 354/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Required To
Invoke

Parameters Credentials
Required On
Request

This method's request contains a credentials tag to identify and authorize the calling user. User must have the "Model" permission and the permission required to
administer the accounts being updated.

Tip: Best Practice: Invoke exportAccounts to retrieve the Adaptive Planning account IDs needed for your updateAccounts request. Do your best to minimize the
time between exportAccounts calls and updateAccount requests.

HTTP Description

Method Post

Content-Type text/xml

Curl Example

curl -H "Content-Type: text/xml" -d @C:/temp/updateAccounts.xml -X POST https://api.adaptiveinsights.com/api/v20

updateAccounts.xml contents

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="updateAccounts" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd"/>
<accounts proceedWithWarnings="0">
<account id="1441" code="LocalAssets" name="LocalAssets" shortName="" description="Local Assets"
displayAs="CURRENCY" decimalPrecision="0" suppressZeroes="1"
exchangeRateType="E" isIntercompany="0" planBy="DELTA" timeRollup="LAST" hasSalaryDetail="0" dataPrivacy="PRIVATE"
subType="CUMULATIVE" enableActuals="1">
<account id="1610" code="LocalCashAssets" name="Local Cash Assets" shortName="" description="cash assets"
displayAs="CURRENCY" decimalPrecision="0" suppressZeroes="1"
exchangeRateType="E" isIntercompany="0" planBy="DELTA"
timeRollup="LAST" hasSalaryDetail="0" dataPrivacy="PRIVATE"
subType="CUMULATIVE" enableActuals="1" propagateToDescendants="1">
<attribute name="SEC Reporting" value="Yes" />
<attribute name="GAAP Reporting" value="No" />
</account>
</account>
</accounts>
</call>

For large payloads, you can post compressed XML files (zipped). Find out how, here.

The following conditions apply to updateAccounts:

Accounts are identified for update via their internal ID number.


To create new accounts, give them a blank or missing ID property.
You can move an existing (non-new) item so that it becomes a child of a new item. Doing so creates the new item and moves the existing item under
it as a child.
For API v31 and newer, you can create a new parent account between an existing parent and its child accounts.

Re-parenting Accounts
updateAccounts errors out if the attribute value for a child is not compatible with the new parent attribute. Example: reparentedAccount1 attribute has SEC
Reporting value=No and is not compatible because newParentAccount2 SEC Reporting value=Yes.
updateAccounts fixes non-compatible attribute values to match their new parent during re-parenting when proceedWithWarnings=1.
Re-parenting accounts cannot form a cyclic relationship.
Re-parenting is not allowed for system-generated root accounts: Assets, Liabilities and Equities, Net Income, PL Income, Non-Operating
Income, PL COGS, PL Expense, Non-Operating Expenses.

Depending on the API version, updateAccounts allows creating a new parent account between an existing parent and its child accounts:

Source Account Moved Under API v30 and below API v31 +

root root prevented prevented

root parent prevented prevented

root leaf prevented prevented

parent root allowed allowed

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 355/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Source Account Moved Under API v30 and below API v31 +

parent parent allowed allowed

parent an existing leaf as first child prevented prevented

parent an existing leaf as non-first child allowed allowed

parent a new first account which is a child prevented allowed


of an existing parent

parent a new non-first account which is a allowed allowed


child of an existing parent

leaf root allowed allowed

leaf parent allowed allowed

leaf an existing leaf as first child prevented prevented

leaf an existing leaf as non-first child allowed allowed

leaf a new first account which is a child prevented allowed


of an existing parent

leaf a new non-first account which is a allowed allowed


child of an existing parent

leaf a new first account which is a child prevented prevented


of an existing leaf

leaf a new non-first account which is a allowed allowed


child of an existing leaf

Leaf Account Children


The first child of a leaf account can only be a new account. An existing GL account cannot be moved underneath an existing leaf account.
When an account gets its first child during re-parentage, the account mapping in Integration > Import Account Mappings is deleted.
When re-parenting accounts, balanceType and subType properties are inherited from their parent GL account.

Cube Accounts and Cube Entered Data


Cube entered accounts cannot be re-parented.
Only accounts without cube entered data in their source and destination subtrees can be re-parented.
CUBE/MIXED ACCOUNTs cannot be re-parented.
New accounts under a CUBE ACCOUNT are not allowed. New accounts under a STANDARD/MIXED ACCOUNT are allowed.

Request Format for Creating a New Account


To create a new account, include its parent by its ID. For example, to add a new child account below the LocalAssets account which has id 1441, you can use:

<?xml version='1.0' encoding='UTF-8'?>


<call method="updateAccounts" callerName="Steve C">
<credentials login="[email protected]" password="my_password"/>
<accounts>
<account id="1441">
<account id="" code="newLocalAssets" name="new Local Assets" description="new local assets account for this area" shortName="" >
</account>
</account>
</accounts>
</call>

This method does not change anything about account id 1441. It creates a new child named new Local Assets for id 1441. All unmentioned children of
LocalAssets move to the end of the child list. This is the equivalent of "setting the parent" for the new account.

Handling Multiple Renames in a Single updateAccounts Call


Multiple renames of the same entity can take place in a remote system between updateAccounts calls. The names of entities on the remote system can swap for
the same entity IDs. When updateAccounts calls take place after the name swap, the updateAccounts call manages these changes by tracking the IDs across
name changes. The call can also handle the introduction of a new ID that uses an existing name.

For each of the examples to succeed, the full swap of IDs must take place with the unique values.

Example 1: A simple name swap in the remote system.

ID Unique Value New Unique Value


1 AA BB
2 BB AA

Example 2: A sequence of 3 renames in the remote system.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 356/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

ID Unique Value New Unique Value


1 AA BB
2 BB CC
3 CC AA

Example 3: A new entity using an existing unique value.

ID Unique Value New Unique Value


4 AA
1 AA BB
2 BB Old BB

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

accounts element

Tag Name accounts

Description Only 1 accounts element request is allowed per payload. It contains one or more account elements.

Attributes of the Element

Attribute Name Required? Value Example

proceedWithWarnings N 1
proceedWithWarnings="1" indicates updateAccounts API should adjust account's attribute and
properties based on re-parentage changes.

proceedWithWarnings="0" indicates updateAccounts API should not adjust account's attribute and
properties based on re-parentage changes. UpdateAccounts errors out with a message conveying the
failure reason. For example, the attribute mapping will become invalid after re-parentage.

Defaults to 0 if missing.

N 1
retainExistingOrder retainExistingOrder="1" indicates updateAccounts API should ignore the order of elements in the XML
payload and the existing defined order will be retained.
Available in API v26 +
retainExistingOrder="0" indicates updateAccounts API should update the order of elements based on
the tag position relative to other siblings in the XML payload.

The retainExistingOrder attribute is ignored in API versions prior to API v26.

The default value for retainExistingOrder is "0" for v26. For API versions v27 and later, the default
value for retainExistingOrder is "1".

Contents of the Element

Contains one or more account elements.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 357/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

account element

Tag Name account

Description Specifies an account to create.

Attributes of the Element

Attribute Name Required? Value Example

id Y The internal system ID number for the account. 16

code N The code of the account, alphanumeric characters and underscores only. Should not supply a Cur_Assets
code attribute for account groups.

name Y The name of the account, as it appears on reports and sheets. Current
Assets

shortName N The short name for the account. CA

description N The textual description of the account. Max character length is 2048. Total
current
assets

subType N Cumulative
Indicates whether the account is PERIODIC or CUMULATIVE. If an account is periodic, its value
in a given month equals the net activity for the month. Examples include revenue and expense
accounts. If an account is cumulative, its value equals the ending balance for a given month.
This is the prior month's value plus or minus any activity in the given month. Balance sheet
accounts are cumulative. This will be empty for account groups and metric accounts.

Read-only, identified based on its parent account.

planBy N DELTA
For Cumulative accounts, indicates whether the account is plan by balance (BALANCE) or plan
by delta (DELTA).

Defaults to DELTA.

Change of planBy to DELTA is NOT allowed when account has splits in non-actual versions.

Only applicable for leaf accounts. updateAccounts errors out when the user attempts to set
planBy for a non-leaf account.

actualsBy N BALANCE
For Cumulative accounts, indicates whether the account is actuals by balance (BALANCE) or
actuals by delta (DELTA).

Defaults to BALANCE.

Only applicable for leaf accounts. updateAccounts errors out when the user attempts to set
actualsBy for a non-leaf account.

enableActuals N 1
0 to show only plan data for the account. 1 to import actuals into the account. For linked
accounts, 0 will show actuals only if the linked account has them, and 1 will enable actuals for
the linked account. This will be empty for account groups and metric accounts. Planning GL
admin UI uses term "actuals overlay".

Defaults to 0 when the current account is a group. Defaults to1 when the current account is a
leaf

balanceType N CREDIT
Indicates the balance type of an account: DEBIT or CREDIT. balanceType is empty if the
account does not have an associated balance type.

Only GL accounts have a balance type.

Read-only, identified based on its parent account.

timeStratum N month
The code of the time stratum of the account. For modeled and cube accounts, this is inherited
from the account's owning sheet.

See Set Up Calendars for more on time structure and time period codes.

Read-only property selected from time structure, modeled or cube sheet.

displayAs N NUMBER
The account's output display setting: NUMBER, CURRENCY, or PERCENT. Only provided for
accounts which have a Display As property in Account Administration.

Read-only property for GL Accounts.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 358/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

decimalPrecision N 0
The number of decimal places to display for numbers in this account.

The special value of 99 indicates a Linked Account which inherits the decimal precision of its
target. The value -1 indicates the account is a currency account and uses the precision of the
currency it displays.

Allowed values: -1, 0, 1-9, 99

Default is 0.

exchangeRateType N E
Only present for instances with multicurrency enabled and for accounts with
displayAs="CURRENCY". Possible values: any of the exchange rate type codes present in the
instance, as configured in Manage Currencies. "A"=Monthly Average, "E"=End of Month.

If missing, use A for PERIODIC and E for CUMULATIVE.

suppressZeroes N 1
Indicates whether the account allows users to suppress zeros on sheets. If 0 users cannot
suppress zeros. If 1 users can suppress zeros. Only provided for accounts with the "Suppress
on sheets" property turned on in the Accounts admin.

If missing, defaults to 1.

startExpanded N 1
Indicates whether an account and its children start out in an expanded state when the sheet first
loads. Applies only to parent accounts.

1 for expanded, 0 for collapsed.

If missing, defaults to 1.

N STANDARD
dataEntryType Indicates the data entry type for a leaf account. Either STANDARD or CUBE.

updated in API v29 If the parent dataEntryType is CUBE, then a new account will default to dataEntryType CUBE.
Otherwise, new accounts default to dataEntryType STANDARD.

dataEntryType changes to non-leaf accounts are ignored. The system automatically calculates
new dataEntryType for all non-leaf accounts.

API v29 and newer support adding new accounts with dataEntryType=CUBE.

hasSalaryDetail N 1
Indicates whether this account has splits that require the Access Salary Detail permission for
viewing. Empty if not applicable to this account.

hasSalaryDetail=1 is not allowed for account group/non-leaf accounts.

To make hasSalaryDetail=1:

dataEntryType must be STANDARD


accountType must be GL

Errors out when dataEntryType is NOT STANDARD.

Errors out when dataEntryType=1 for non-leaf accounts.

Errors out for non-GL and custom accounts.

dataPrivacy N PRIVATE
Indicates the levels the account's values are public on and refrencable in other levels when
writing formulas. PRIVATE indicates the account's values are private. PUBLIC_TOP indicates
the account's values are public at only the top level, or PUBLIC_ALL so that the account's
values are public at all levels. Assumptions are always public and do not have a dataPrivacy
setting.

When missing, default to PRIVATE.

Errors out for account group and assumption accounts.

isIntercompany N 0
Indicates if the account is an intercompany account or not.

Changes to isIntercompany property are not supported.

propagateToDescendants N 1
Indicates the propagation of attribute mapping changes to descendants.

When missing, defaults to 0.

Errors out if empty or holds any value other than 1 or 0.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 359/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Properties that propagate to descendants:

subType
planBy
displayAs
actualsBy
decimalPrecision
exchangeRateType
accountTypeCode

Contents of the Element

One optional attributes element if you want to edit one or more account attributes associated with the account.

attribute element

Tag Name attribute

Description Specifies an attribute to update. Tags the account with the attribute if the model has account attributes.

Attributes of the Element

Attribute Name Required? Value Example

name Y Location
The name of the attribute.

Errors out if the name does not already exist in the system.

Errors out if the name exists but the attribute is not an account attribute.

Errors out if the attribute name is empty or missing.

value Y 170
The attribute value for this attribute.

Allows either an empty value to remove the current value, or any of the defined account attribute values.

The attribute value must be compatible with the account's assigned attribute.

Contents of the Element

(none)

Top to Bottom Payload Processing


Account attributes logically group values and tag accounts. Because the updateAccounts API processes the XML payload from top to bottom, assign the account
attribute for a parent account before changing the child account attributes. Child accounts can be tagged with any attribute value when the parent account attribute
value is blank. If child account attributes fail to align with the parent attribute, a compatibility validation error occurs.

Consider the tree structure below where the parent "Product Line" has 2 children accounts "A" and "B-Ste". The accounts "A" and "B-Ste" are siblings.

Product Line
|__A __A
|__B-Ste __B-Ste
|__B1 __Product B-1
|__B2 __Product B-2
|__B3 __Product B-3

Sample Original Request XML with Account Attributes


Notice that the account attribute value "A" is assigned to both "Other Accounts" and "Swiss Bank".

<accounts>
<account id="60" code="70140" name="Other Accounts">
<attribute name="Product Line" value="A" />
<account id="91" code="70150" name="Swiss Bank">
<attribute name="Product Line" value="A" />
</account>
</account>
</accounts>

Example of Incorrect Order for Payload Processing


The XML payload below generates an error, "The attribute value B-1 is not compatible with the parent's attribute value". The top-to-bottom
payload processing considers the parent "Other Accounts" to have the value "A" from the previous code block and processes "B-1" as the child of "A". The error is
generated because the child "Swiss Bank" can only have the attribute values of "A" or "B-Ste" as indicated in the tree structure.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 360/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

<accounts>
<account id="60" code="70140" name="Other Accounts">
<account id="91" code="70150" name="Swiss Bank">
<attribute name="Product Line" value="B-1" />
</account>
<attribute name="Product Line" value="B-Ste" /> <!-- Account Attribute change ignored due to placement order-->
</account>
</accounts>

Example of Valid Order for Payload Processing


Re-arranging the order of placement of "B-Ste" below "Other Accounts" enables the API to process the parent account attribute "B-Ste" first, allowing "Swiss Bank"
to have values of either "B-Ste" or any of its children.

<accounts>
<account id="60" code="70140" name="Other Accounts">
<attribute name="Product Line" value="B-Ste" /> <!-- Account Attribute change processed due to correct placement order-->
<account id="91" code="70150" name="Swiss Bank">
<attribute name="Product Line" value="B-1" />
</account>
</account>
</accounts>

Response Format

<?xml version="1.0" encoding="UTF-8"?>


<response success="true">
<messages>
<message type="INFO">Accounts were saved successfully.</message>
</messages>
<output>
<accounts>
<account id="1441" code="LocalAssets" name="LocalAssets" shortName="" description="Local Assets"displayAs="CURRENCY"
decimalPrecision="0" suppressZeroes="true" exchangeRateType="E" formula="" isIntercompany="0"
planBy="DELTA" timeRollup="LAST" timeWeightAcctId="" levelDimRollup="SUM" levelDimWeightAcctId="" rollupText=""
startExpanded="true" hasSalaryDetail="" dataPrivacy="PRIVATE" isBreakbackEligible="" subType="CUMULATIVE" enableActuals="true">
<account id="1610" code="LocalCashAssets" name="Local Cash Assets" shortName="" description="cash assets" displayAs="CURRENCY"
decimalPrecision="0" suppressZeroes="true" exchangeRateType="E" formula="" isIntercompany="0" planBy="DELTA" timeRollup="LAST"
timeWeightAcctId="" levelDimRollup="SUM" levelDimWeightAcctId="" rollupText="" startExpanded="true" hasSalaryDetail=""
dataPrivacy="PRIVATE" isBreakbackEligible="" subType="CUMULATIVE" enableActuals="true">
</account>
</accounts>
</output>
</response>

output element

Tag Name output

Attributes of the Element

(none)

Contents of the Element

A single required accounts element. This output wrapper is standard on all API responses and encloses the valid output of any successful API call.

accounts element

Tag Name accounts

Description Container for one or more account elements.

Attributes of the Element

Attribute Name Required? Value Example

Contents of the Element

One or more account elements.

account element

Tag Name account

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 361/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Description Represents a single account being returned in the response to an updateAccounts API call. If this element is directly
within the enclosing accounts element of the response (that is, it is not enclosed within another account element),
this account element represents a root account (an account that has no parent).

Attributes of the Element

Attribute Name Required? Value Example

id Y The internal system ID number for the account. This can be used to identify accounts in 16
other API calls, such as exportDimensionFamilies.

code Y The code of the account, as it appears when referenced in formulas. Cur_Assets

name Y The name of the account, as it appears on reports and sheets. Current Assets

accountTypeCode N The letter code corresponding to the data type of this account

Type Code Account Type Account Class

A Asset GL

B Current Asset GL

C Liability & Equity GL

CUBE Cube Cube

EN YTD Earnings/Loss GL

F Fixed Asset GL

G Cost of Goods Sold GL

I Income GL

J Non-Operating Income GL

K Cumulative Translation Adjustment System

L Liability GL

M Current Liability GL

MI Consolidation Percentages Predefined

MT Metric Metric

N Net Income GL

O Other Asset GL

Q Equity GL

R Long Term Asset GL

S Assumption Assumption

T Long Term Liability GL

W Modeled Modeled

X Expense GL

XR Exchange Rate Predefined

Y Non-Operating Expenses GL

Z Custom Custom

description N The textual description of the account, if any, as entered in Account Administration Total current assets

shortName N The short name for the account, if any, as entered in Account Administration CA

timeStratum N The code of the time stratum of the account. For modeled and cube accounts, this is Month
inherited from the account's owning sheet.

displayAs N The account's output display setting: NUMBER, CURRENCY, or PERCENT. Only NUMBER
provided for accounts that have a Display As property in Account Administration.

isAssumption N Either "0" or "1", indicating whether the account is an assumption. This is set to 1 for 1
assumptions and exchange rate accounts.

suppressZeroes N Indicates whether the account allows users to suppress zeros on sheets. If 0 users 1
cannot suppress zeros. If 1 users can suppress zeros. Only provided for accounts with
the "Suppress on sheets" property turned on in the Accounts admin.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 362/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

isDefaultRoot N Either "0" or "1", indicating whether the account or account group is a default root. 1

decimalPrecision N 0
Number of decimal places to display for numbers in this account.

The special value of 99 indicates a Linked Account which inherits the decimal precision
of its target. The value -1 indicates the account is a currency account and uses the
precision of the currency it displays.

Allowed values: -1, 0, 1-9, 99

Default is 0.

planBy N For Cumulative accounts, indicates whether the account is plan by balance (BALANCE) BALANCE
or plan by delta (DELTA).

exchangeRateType N Only present for accounts with displayAs="CURERENCY". Possible values: any of the E
exchange rate type codes present in the instance, as configured in Manage Currencies.
"A"=Monthly Average, "E"=End of Month.

balanceType N Indicates the balance type of an account, DEBIT or CREDIT. This attribute is empty if DEBIT
the account does not have an associated balance type. Only GL accounts have a
balance type.

N STANDARD
dataEntryType Indicates the data entry type for the account. Either STANDARD or CUBE. An empty
value indicates data entry type is not applicable for the account.
updated in API v29
The system automatically calculates new dataEntryType for all non-leaf accounts.

For API v29 and above:

Non-leaf accounts always contain an empty string.


Leaf accounts always populate with a dataEntryType value of STANDARD or
CUBE.

timeRollUp N Indicates how the account behaves when rolled up over a time period. Can be SUM, SUM
WEIGHTED_AVERAGE, LAST, or AVERAGE. This will be empty for account groups
and metric accounts.

timeWeightAcctId N If this account has a timeRollup of WEIGHTED_AVERAGE, this will be the internal 133
system id number of the account from where the weights are determined. This will be
empty if no weight account exists or the account does not have a timeRollup of
WEIGHTED_AVERAGE.

hasSalaryDetail N Indicates whether this account has splits that require the Access Salary Detail 1
permission for viewing. Empty if not applicable to this account.

dataPrivacy N Indicates the levels the account's values are public on and refrencable in other levels PRIVATE
when writing formulas. PRIVATE indicates the account's values are private.
PUBLIC_TOP indicates the account's values are public at only the top level, or
PUBLIC_ALL so that the account's values are public at all levels. Assumptions are
always public and do not have a dataPrivacy setting.

subType N Indicates whether the account is PERIODIC or CUMULATIVE. If an account is periodic, PERIODIC
its value in a given time period equals the net activity for the time period. Examples
include revenue and expense accounts. If an account is cumulative, its value equals the
ending balance for a given time period. This is the prior time period's value plus or
minus any activity in the given time period. Balance sheet accounts are cumulative.
This will be empty for account groups and metric accounts.

startExpanded N This indicates whether an account and its children start out in an expanded state when 1
first loading a sheet. This applies only for parent accounts. This will be empty for leaf
accounts.

isBreakbackEligible N Either 0 or 1 to indicate whether this account can be used in a breakback. This applies 0
only to standard assumptions. This will be empty for other types of accounts.

levelDimRollup N Indicates how the account behaves when rolled up along a level or dimension. Can be NONBLANK_AVERAGE
SUM, WEIGHTED_AVERAGE, TEXT, or NONBLANK_AVERAGE. This will be empty
for account groups and metric accounts.

levelDimWeightAcctId N If this account has a levelDimRollup of WEIGHTED_AVERAGE, this will be the internal 118
system id number of the account from where the weights are determined. This will be
empty if no weight account exists or the account's levelDimRollup is not
WEIGHTED_AVERAGE.

rollupText N If this account has a levelDimRollup of TEXT, then this is the text string that will show None
up in the cell indicating the rolled up value of the account.

enableActuals N 0 to show only plan data for the account. 1 to import actuals into the account. For linked 1

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 363/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

accounts, 0 will show actuals only if the linked account has them, and 1 will enable
actuals for the linked account. This will be empty for account groups and metric
accounts.

isGroup Y 0 or 1 to indicate whether this is an account group or not. 1

isIntercompany N 0 or 1 to indicate whether this account is an intercompany account or not. 1

isLinked N 0 or 1 to indicate whether this account is a linked account or not. 1

isSystem N 0 or 1 to indicate whether this account is a system account or not. 1

status Y Updated
The status of the account following update. For warning and error, the message
element contains the message contents. The status of updated does not return any
message contents.

Error: An error was found in the entity


Warning: A warning was found in the entity
Created: The entity was created successfully
Updated: The entity was updated successfully

message N The error message for the account input. The account
ModAccount33 is either
duplicated in the
payload or already
exists in the system with
ID 8

Contents of the Element

One nested account element for each direct child account of this account. One attributes element if account has one or more attributes associated with it.

attribute element

Tag Name attribute

Description Indicates the attribute tagging for the account.

Attributes of the Element

Attribute Required? Value Example


Name

name Y The name of the account attribute Education


Type

value Y The value of the account attribute. Tech1

status Y updated
The status of the attribute following update. For warning and error, the message element contains the message
contents. The status of updated does not return any message contents.

Error: An error was found in the entity


Warning: A warning was found in the entity
Created: The account was tagged with an attribute successfully for the first time.
Updated: The account attribute tag was updated successfully

message N The error message for an invalid attribute input.

Contents of the Element

(none)

1.4.3.39 | updateAssociations

Category Metadata modification

Description Update the ownership / association for entities (e.g. Level). Multiple associations with multiple values can be updated in one call. If
successful, the API returns a success message. If the API fails, a comprehensive list of errors and their causes are returned.

Permissions Model Management : Model Model Management : Organization Structure : All Levels Admin Access : Users
Required To
Invoke

Parameters Credentials
Required On
Request

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 364/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

See Concept: Associations and Import Associations.

These conditions apply to updateAssociations:

Each association has a type, an optional operation, and a set of dim value ids (entity ids).
To create a new association, specify the entity id (e.g. level id) to which we want to give ownership and the list of user identifiers (id, WID or username).
For an association, if the same entity id is mentioned multiple times, the last one is used.
User(s) specified in the request but not present in the system will be ignored. The remaining valid users in the request will be processed and have their
association details updated.
For custom dimension associations, code, name, and dimId are required fields.
The request can contain zero or only one association for level ownership. Any other level associations require the additional fields of code, name, and dimId.

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="updateAssociations" callerName="me">
<credentials login="[email protected]" password="my_pwd"/>
<associations>
<association type="level" operation = "update">
<dimValueIds>
<dimValueId id = "2">
<users>
<id> 1, 2, 3 , 87654</id>
</users>
</dimValueId>
<dimValueId id = "24">
<users>
<WID>23,12</WID>
<username>[email protected]</username>
</users>
</dimValueId>
<dimValueId id = "6">
<users>
<id> 1, 2, 3 </id>
<username>[email protected], [email protected]</username>
<WID> ABC, CSD </WID>
</users>
</dimValueId>
<dimValueId id = "12">
</dimValueId>
</dimValueIds>
</association>
<association type="customdimension" code= "CD1" name="CustomDim1" operation="replaceAll" dimId="8">
<dimValueIds>
<dimValueId id = "86">
<users>
<id> 14, 45</id>
</users>
</dimValueId>
<dimValueId id = "92">
<users>
<id>20, 21</id>
<WID>ABCD</WID>
<username>[email protected]</username>
</users>
</dimValueId>
</dimValueIds>
</association>
<association type="customdimension" code= "CD2" name="CustomDim2" operation="update" dimId="4">
<dimValueIds>
<dimValueId id = "16">
<users>
<id> 20, 21</id>
</users>
</dimValueId>
</dimValueIds>
</association>
<association type="level" code= "TL2" name="TestLevels2" operation="update" dimId="-1">
<dimValueIds>
<dimValueId id = "1">
<users>
<id> 15</id>
</users>
</dimValueId>

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 365/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

</dimValueIds>
</association>
</associations>
</call>

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

associations element

Tag Name associations

Description Only 1 associations element request is allowed per payload. It contains one or more association elements.

Attributes of the Element

Attribute Name Required? Value Example

Contents of the Element

Contains one or more association elements.

association element

Tag Name association

Description Specifies the association to be created/updated for the list of entities.

Attributes of the Element

Attribute Required? Value Example


Name

type y The type of the entity for which the association is to be created / updated. It can take only these values - (level level
and customdimension)

operation N update
The operation mode for this association. It can take only these values - (update or replaceAll)

If operation="replaceAll", all existing ownership entries for that association type will be deleted and only
the ownership details mentioned in the request will be saved.
If operation="update", only the entity ids (eg. level ids) mentioned in the request will be updated.
If operation is not mentioned it will default to "update" behavior.

code Conditionally The code of the the association being be created / updated. The only case when it is not required is in the TL1
case of level ownership. Required for all other cases.

name Conditionally The name of the the association being be created / updated. The only case when it is not required is in the TestLevels1
case of level ownership. Required for all other cases.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 366/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

dimId Conditionally The id for whose dimValueIds will have the ownership details updated. Required in case of custom dimension. 12

Contents of the Element

Contains one dimValueIds element.

dimValueIds element

Tag Name dimValueIds

Description Specifies the list of dimValueId.

Attributes of the Element

Attribute Name Required? Value Example

Contents of the Element

Contains one or more dimValueId elements.

dimValueId element

Tag Name dimValueId

Description Specifies

Attributes of the Element

Attribute Name Required? Value Example

id Y The internal system ID number for the entity. 23

Contents of the Element

Contains at most one users element. If the users element is not mentioned, all of the existing ownership for the dmiValueId will be removed.

users element

Tag Name users

Description Specifies the user identifiers in the id, WID, or username elements.

Attributes of the Element

Attribute Name Required? Value Example

Contents of the Element

Contains the list of user identifiers which are comma separated. Users not present in the system will be ignored / skipped. If none of the user identifiers are
mentioned, all of the existing ownership for the entity (dimValueId) will be removed. If the same identifier tag is provided multiple times in a particular users tag,
the call will return an error condition.

<id> 1, 2, 3 </id> : This specifies that the ownership is to be given for users with ids 1, 2 and 3.

<username>[email protected]</username> : This specifies that the ownership is to be given for user with username [email protected] .

<WID> ABC, CSD </WID> : This specifies that the ownership is to be given for users with Workday ID ABC and CSD.

Response Format

<?xml version="1.0" encoding="UTF-8"?>


<response success="true">
<messages>
<message type="INFO">Associations were saved successfully.</message>
</messages>
</response>

Response element

Tag Name response

Description Specifies

Attributes of the Element

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 367/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Attribute Name Required? Value Example

success Y Either "true" or "false", indicating whether the API call was successful or not. true

Contents of the Element

A single optional messages element.

Messages element

Tag Name messages

Description Container for one or more message elements

Attributes of the Element

Attribute Name Required? Value Example

Contents of the Element

Contains one or more message elements.

Message element

Tag Name message

Description Represents a message being sent from the system back to the caller. Messages are used for error messages with requests do
not succeed, and for confirmation messages on success.

Attributes of the Element

Attribute Required? Value Example


Name

type N Specifies the type for the message. INFO ERROR WARNING

Contents of the Element

Error Message Descriptions

Type Message Example/Description

Error error: element "Y" incomplete; missing required element "Y" The request is missing the required element - e.g. association,
dimValueId

Error value of attribute "type" is invalid; must be equal to "level" Association has an incorrect type attached to it.

Error DimValueId can have at most one users element. The dimValueId can have at most one users element.

Warning User Id -5 not present in system. WID -98A not present in system. The user identifier values are incorrect. They have been skipped and
Username Id stevec@comp not present in system. remaining valid users have been processed.

Error DimValue Id -123 not present in system. The dim value id is incorrect.

1.4.3.40 | updateAttributes

Supported in API v20 +

Category Metadata modification

Description

Permissions Required To Invoke Model

Parameters Required On Request Credentials

This method's request contains a credentials tag to identify and authorize the calling user. User must have the "Model" Update a set of existing attributes and their
attribute values, and their properties. Multiple attributes with multiple attribute values can be updated in one call. If successful, the API returns details for the
attributes that were updated/created. If the API fails, a comprehensive list of errors and their causes returns.permission and the permission required to administer
the attributes being updated.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 368/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Tip: Best Practice: Invoke exportAttributes to retrieve the Adaptive Planning attribute IDs needed for your updateAttributes request. Do your best to minimize the
time between exportAttributes calls and updateAttributes calls.

HTTP Description

Method Post

Content-Type text/xml

Curl Example

curl -H "Content-Type: text/xml" -d @C:/temp/updateAttributes.xml -X POST https://api.adaptiveinsights.com/api/v20

updateAttributes.xml contents

Request Format
Update a set of existing attributes and their attribute values, and their
<?xml version='1.0' encoding='UTF-8'?>
<call method="updateAttributes" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd"/>
<attributes proceedWithWarnings="0">
<attribute id="13" name="AP Eligible" type="account" keepSorted="1">
<attributeValue id="118" name="No" />
<attributeValue id="117" name="Yes">
<attributeValue id="136" name="Full" />
<attributeValue id="135" name="Partial" />
</attributeValue>
</attribute>
<attribute id="11" name="Product Line" type="account">
<attributeValue id="34" name="A" />
<attributeValue id="35" name="B" />
</attribute>
<attribute id="9">
<attributeValue id="56" name="Available" />
<attributeValue id="54" name="Not Applicable" />
</attribute>
</attributes>
</call>

For large payloads, you can post compressed XML files (zipped). Find out how, here.

The following conditions apply to updateAttributes:

Attributes are identified for update via their internal ID number.


To create new attributes, give them a blank or missing ID property.
You can move an existing (non-new) item so that it becomes a child of a new item. Doing so creates the new item and moves the existing item under
it as a child.

Request Format for Creating a New Attribute


To create a new attribute, AP Eligible, leave id blank and provide its name and type.

<?xml version='1.0' encoding='UTF-8'?>


<call method="updateAttributes" callerName="Steve C">
<credentials login="[email protected]" password="my_password"/>
<attributes>
<attribute id="" name="AP Eligible" type="account">
<attributeValue id="" name="No" />
<attributeValue id="" name="Yes">
<attributeValue id="" name="Full" />
<attributeValue id="" name="Partial" />
</attributeValue>
</attribute>
</attributes>
</call>

Request for Creating a New Attribute for a List Dimension


To create a new attribute Education Type for a list dimension, Education. The attribute values Technical and its child, Tech1, have blank ids, indicating they
are new.

<?xml version="1.0" encoding="UTF-8"?>


<call method="updateAttributes" callerName="Steve C">
<credentials login="[email protected]" password="changeme" />
<attributes>

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 369/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

<attribute id="" name="Education Type" type="dimension" listDimensionName="Education" keepSorted="1" importAutoCreateValues="1">


<attributeValue id="" name="Technical" description="">
<attributeValue id="" name="Tech1" description="" />
</attributeValue>
<attributeValue id="" name="Management" description="" />
</attribute>
</attributes>
</call>

Request Format for Creating a New Attribute Value


future below the AP Eligible attribute with id 13, and attribute value no with id 118, you can use:

<?xml version='1.0' encoding='UTF-8'?>


<call method="updateAttributes" callerName="Steve C">
<credentials login="[email protected]" password="my_password"/>
<attributes>
<attribute id="13">
<attributeValue id="118" >
<attributeValue id="" name="future" />
</attributeValue>
</attribute>
</attributes>
</call>
To create a new attribute value, include its parent by its ID. For example, to add a new
attribute value

This method does not change anything about attribute id 13. It creates a new attribute value future for attribute id 13 and makes its parent the attribute value
no. All unmentioned attribute values of no move to the end of the value list. This is the equivalent of "setting the parent" for the new attribute value.

Handling Multiple Renames in a Single updateAttributes Call


Multiple renames of the same entity can take place in a remote system between updateAttributes calls. The names of entities on the remote system can swap
for the same entity IDs. When updateAttributes calls take place after the name swap, the updateAttributes call manages these changes by tracking the IDs
across name changes. The call can also handle the introduction of a new ID that uses an existing name.

For each of the examples to succeed, the full swap of IDs must take place with the unique values.

Example 1: A simple name swap in the remote system.

To create a new attribute value, include its parent by its ID. For example, to add a new
ID Unique Value New Unique Value
1 AA BB
2 BB AA

Example 2: A sequence of 3 renames in the remote system.

ID Unique Value New Unique Value


1 AA BB
2 BB CC
3 CC AA

Example 3: A new entity using an existing unique value.

ID Unique Value New Unique Value


4 AA
1 AA BB
2 BB Old BB

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 370/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

attributes element

Tag Name attributes

Description Only 1 attributes element request is allowed per payload. It contains one or more attribute elements.

Attributes of the Element

Attribute Name Required? Value Example

proceedWithWarnings N 1
Only applies when re-parenting attribute values.

If there are warnings, and proceedWithWarnings=0, then attributeValue will not be updated. Set
proceedWithWarnings=1 to update the attributeValue when there are warnings.

Only applies to type=account and type=level.

ProceedWithWarnings=1 (a) re-parentage is performed even when account/level attribute tagging


will become incompatible . (b) All incompatible account/level attribute tagging will be corrected by
using the parent's attribute tagging.

ProceedWithWarnings=0 errors out if attribute value re-parentage would result in account/level


attribute mapping becoming incompatible.

N 1
retainExistingOrder retainExistingOrder="1" indicates updateAttributes API should ignore the order of elements in the
XML payload and existing defined order will be retained.
Available in API v27+
retainExistingOrder="0" indicates updateAttributes API should update the order of elements based
on the tag position relative to other siblings in the XML payload.

The retainExistingOrder flag is ignored when attribute has keepSorted flag enabled.

The default value for retainExistingOrder is "1".

DisplayNameEnabled N 1
displayNameEnabled=1 indicates updateAttribues should respect display name properties of code,
Only available in API displayNameType, and description when Enable Display Name is ON for the instance.
v30+ for instances that
displayNameEnabled=0 indicates the updateAttributes API should continue following the pre-v30
enable display name.
API contract even when Enable Display Name is ON for the instance. The updateAttributes API
ignores the display name properties code, displayNameType and description.

The default value for displayNameEnabled is "0".

Contents of the Element

Contains one or more attribute elements.

attribute element

Tag Name attribute

Description Specifies an attribute to create or update.

Attributes of the Element

Attribute Name Required? Value Example

id Y The internal system ID number for the attribute. 16

name Y The name of the attribute, as it appears on reports and sheets. Current Assets

updated in API v30

displayNameType N Controls the display of attribute values. The possible values are NAME, CODE, "CODE_NAME"
NAME_CODE or CODE_NAME.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 371/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Only available in API Defaults to NAME when left blank or not provided.
v30+ for instances that
This property is only available when Enable Display Name is ON for the instance.
enable display name.

importAutoCreateValues N "1" means attribute values for this attribute can be created via import, "0" (or not specified) 1
means they can't.

type N account
Indicates whether the attribute is a level, account, or dimension attribute.

Required for creating new attributes that don't already exist in the system.

Type cannot be changed by an update operation.

listDimensionName N color
Indicates if the dimension is a flat list dimension.

Only applicable when attribute type=dimension.

listDimensionName cannot be changed by an update operation.

keepSorted N 1
"1" indicates values for this attribute are always sorted alphabetically.

"0" (or not specified) means attribute values sort based on their position in the request
payload.

Defaults to "0" only in the create operation when no value is provided.

If the XML contains both the parent and at least one sibling of an unlisted hierarchical
attribute value, the unlisted value is moved to the end of the listed siblings during the update
(in reordering the children of the parent, all listed siblings come first, in the order they are
specified in the XML. All unlisted siblings come last, in the order they already have in the
system).

keepSorted applies to children of each parent attribute value.

Note: Any changes to the components of a display name could alter the sort order of
elements, when Keep Sorted is enabled.

description N The description of the attribute. Max character length is 2048. Assets

Only available in API Default value: empty


v30+ for instances that
This property is only available when Enable Display Name is ON for the instance.
enable display name.

Contents of the Element

One or more attributeValue elements.

attributeValue element

Tag Name attributeValue

Description Specifies attribute values to be created or updated.

Attributes of the Element

Attribute Name Required? Value Example

id N 24
Identifies the attribute value.

If left blank, indicates a new attribute value being created by the request.

code N The unique code of the attribute value. yes

Only available in API


v30+ for instances that
enable display name.

name Y yes
The name of the attribute value, as it appears in sheets and reports. When Enable Display Name is
udpated in API v30 ON for an instance with API v30 or higher, name allows duplicate values. When Enable Display
Name is OFF for an instance, code is not available and name must be unique.

Illegal attribute value names: this names ending with (+) or (-)

description N
The textual description of the attribute value.

Default value: empty

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 372/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Default value is only used in create operation when no value is provided.

Contents of the Element

Can contain another attributeValue.

Response Format

<?xml version="1.0" encoding="UTF-8"?>


<response success="true">
<messages>
<message type="INFO">Attributes were saved successfully.</message>
</messages>
<output>
<attributes>
<attribute id="13" name="AP Eligible" type="account">
<attributeValue id="118" name="No" />
<attributeValue id="117" name="Yes">
<attributeValue id="136" name="Full" />
<attributeValue id="135" name="Partial" />
</attributeValue>
</attribute>
<attribute id="11" name="Product Line" type="account">
<attributeValue id="34" name="A" />
<attributeValue id="35" name="B" />
</attribute>
<attribute id="9" name="Corporate Discount" type="level">
<attributeValue id="56" name="Available" />
<attributeValue id="54" name="Not Applicable" />
<attributeValue id="57" name="Not Available" />
<attributeValue id="55" name="TBD" />
</attribute>
<attribute id="10" name="Tax Code" type="level">
<attributeValue id="146" name="TT-PYT" />
<attributeValue id="145" name="TT-TRE" />
</attribute>
<attribute id="16" name="Industry" type="dimension" listDimensionName="Education">
<attributeValue id="335" name="Apparel">
<attributeValue id="354" name="Mens Apparel" />
<attributeValue id="355" name="Shoes" />
<attributeValue id="356" name="Womens Apparel" />
</attributeValue>
</attribute>
</attributes>
</output>
</response>

output element

Tag Name output

Attributes of the Element

(none)

Contents of the Element

A single required attributes element. This output wrapper is standard on all API responses and encloses the valid output of any successful API call.

attributes element

Tag Name attributes

Description Container for zero or more attribute elements. Tags are placed in order based on the input request.

Attributes of the Element

Attribute Name Required? Value Example

proceedWithWarnings N proceedWithWarnings value provided in API request. 1

retainExistingOrder N 1
updateAttributes=0 updates sort order based on the XML payload content.

updateAttributes=1 retain existing sort order.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 373/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

displayNameEnabled N displayNameEnabled=1 indicates updateAttributes should respect display name properties of code, 1
displayNameType, and description when Enable Display Name is ON for the instance.
Only available in API
v30+ for instances that displayNameEnabled=0 indicates the updateAttribues API should continue following the pre-
enable display name. 2021.42 API contract even when Enable Display Name is ON for the instance. The updateAttribues
API ignores the display name properties code, displayNameType and description.

Support for displayNameEnabled began in 2021.42.

The default value for displayNameEnabled is "0".

Contents of the Element

One or more attribute elements.

attribute element

Tag Name attribute

Description Represents a single attribute being returned in the response to an updateAttributes API call.

Attributes of the Element

Attribute Name Required? Value Example

id Y The internal system ID number for the attribute. 16

name Y The name of the attribute, as it appears on reports and sheets. Current Assets

shortName The short name for the attribute. Max character length is 2048. Assets

displayNameType N Controls the display of attribute values. The possible values are NAME, CODE, CODE_NAME
NAME_CODE or CODE_NAME.
Only available in API
v30+ for instances that Defaults to NAME when left blank or not provided.
enable display name.
This property is only available when Enable Display Name is ON for the instance.

importAutoCreateValues N "1" means attribute values for this attribute can be created via import, "0" (or not 1
specified) means they can't.

type Y The type of the attribute. This will be 'account' if the attribute is for an account, 'level' if account
the attribute is for a level, or 'dimension' if the attribute is for a dimension.

listDimensionName N The name of the list dimension if the attribute is of type 'dimension'. Education

description N The textual description of the attribute, if any, as entered in Attribute Administration Total current assets

keepSorted Y 1
"1" indicates values for this attribute are always sorted alphabetically.

"0" (or not specified) means attribute values sort based on their position in the request
payload.

If the XML contains both the parent and at least one sibling of an unlisted hierarchical
attribute value, the unlisted value is moved to the end of the listed siblings during the
update (in reordering the children of the parent, all listed siblings come first, in the order
they are specified in the XML. All unlisted siblings come last, in the order they already
have in the system).

keepSorted applies to children of each parent attribute value.

status Y Updated
The status of the attribute value following update. For warning and error, the message
element contains the message contents. The status of updated does not return any
message contents.

Error: An error was found in the entity


Warning: A warning was found in the entity
Created: The entity was created successfully
Updated: The entity was updated successfully

message N The error message for the attribute input. The attribute
Industry is either
duplicated in the
payload or already
exists in the system
with ID 8

Contents of the Element

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 374/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Zero or more optional attributeValue elements. Each enclosed attributeValue element represents a "root attribute value" in the attribute, a value which has no
parent value.

attributeValue element

Tag Name attributeValue

Description Represents a single member value of an attribute being returned in the response to an updateAttributes
API call.

Attributes of the Element

Attribute Name Required? Value Example

id Y The internal system ID number for this member value of the attribute. 34

code N The unique code of the attribute value. Available

Only available in API v30+ for


instances that enable display
name.

name Y The label for the member value of the attribute as displayed on the attribute administration Available
page.

shortName N The short name of the attribute value. Avl

description N
The description of the attribute value.

Default value: empty

Default value is only used in create operation when no value is provided.

propogateToDescendants N Indicates if changes propagate to the children of this level. 0 for no, 1 for yes. 0

status Y updated
The status of the attribute following update. For warning and error, the message element
contains the message contents. The status of updated does not return any message
contents.

Error: An error was found in the entity


Warning: A warning was found in the entity
Created: The entity was created successfully
Updated: The entity was updated successfully

message N The error message for an invalid attributeValue input.

Contents of the Element

Zero or more optional attributeValue elements. Each enclosed attributeValue element represents a "child attribute value" of this attribute value, whose
members implicitly roll up to this value.

1.4.3.41 | updateDimension

Important: Not supported in API v20 +. Use updateDimensions.

Category Metadata modification

Description Update a dimension. If successful, the API returns details for the dimension that has just been updated.

Permissions Required To Invoke Model

Parameters Required On Request Credentials

This method's request contains a credentials tag to identify and authorize the calling user. User must have Model permission to create the dimension.

The following conditions apply to this API:

This method returns an error if there are unpublished changes.


You cannot turn off listDimension if you have dimension attributes defined or values aren't all available in all versions.
You cannot turn off listDimension if you have hierarchical dimensionValues.
You cannot enable both useOnLevels and listDimension. (It is possible to turn one off and the other on in the same command.)

Request Format

<?xml version='1.0' encoding='UTF-8'?>

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 375/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

<call method="updateDimension" callerName="fred">


<credentials login="[email protected]" password="my_pwd" />
<dimension id="34"
name="Updated Dimension Name"
/>
</call>

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

dimension element

Tag Name dimension

Description Specifies a dimension to create.

Attributes of the Element

Attribute Required? Value Example


Name

id Y The id of the dimension being updated. 34

name N The name of the dimension. The name must be unique. NewDimensionName

shortName N Displayable title of the column, as seen on the sheet. NewDimensionShortName

listDimension N "1" means this is a list dimension, "0" (or not specified) means it isn't. 0

useOnLevels N "1" means this dimension can be used on levels, "0" (or not specified) means it can't. 0

autoCreate N "1" means values for this dimension can be created via the import, "0" (or not specified) 0
means they can't.

keepSorted N "1" means values for this dimension are always sorted alphabetically, "0" (or not specified) 0
means they can be manually ordered.

Contents of the Element

(none)

Response Format

<?xml version='1.0' encoding='UTF-8'?>


<response success="true">
<output>
<dimensions>
<dimension id="41" name="New Dimension Name" shortName="" autoCreate="0" listDimension="0" keepSorted="0" useOnLevels="0">
</dimension>
</dimensions>

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 376/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

</output>
</response>

dimensions element

Tag Name dimensions

Description Container for one or more dimension elements.

Attributes of the Element

(none)

Contents of the Element

One or more dimension elements.

dimension element

Tag Name dimension

Description Represents a single custom dimension being returned in the response to an exportDimensions API call.

Attributes of the Element

Attribute Required? Value Example


Name

id Y The internal system ID number for the dimension. This can be used to identify dimensions in other API calls, 16
such as exportDimensionFamilies.

name Y The name of the dimension, as it appears on reports and sheets. Customer

shortName N The short name for the dimension, if any, as entered in Dimension Administration cust.

autoCreate Y 1 if the selected dimension has the "Data import automatically creates dimension values" field set; 0 otherwise. 0

listDimension Y 1 if the selected dimension is list dimension; 0 otherwise. 1

keepSorted Y 1 if the selected dimension is kept sorted, 0 otherwise. 1

useOnLevels Y 1 if the selected dimension can be used on levels, 0 otherwise. 1

Contents of the Element

Zero or more dimensionValue elements. Each enclosed dimensionValue element represents a "root dimension value" in the dimension, a value which has no
parent value.

dimensionValue element

Tag Name dimensionValue

Description Represents a single member value of a custom dimension being returned in the response to an exportDimensions API call.

Attributes of the Element

Attribute Required? Value Example


Name

id Y The internal system ID number for this member value of the dimension. 34

name Y The label for the member value of the dimension, as displayed on reports and used in formulas. A Corp

shortName N The short name for the dimension value, if any, as entered in Dimension Administration A

description N The description of the dimension value, if any, as entered in Dimension Administration A Corporation

Contents of the Element

Zero or more optional dimensionValue elements. Each enclosed dimensionValue element represents a "child dimension value" of this dimension value, whose
members implicitly roll up to this value.

attributes element

Tag Name attributes

Description Container for one or more dimension attribute elements.

Attributes of the Element

Attribute Name Required? Value Example

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 377/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

(none)

Contents of the Element

One or more attribute elements.

attribute element

Tag Name attribute

Description Container for one dimension attribute element.

Attributes of the Element

Attribute Name Required? Value Example

attributeID Y The id of the dimension attribute generated by system. 20

name Y The name of the dimension attribute Education Type

valueID Y The unique id of the dimension attribute value generated by system. 170

value Y The value of the dimension attribute. Tech1

Contents of the Element

(none)

1.4.3.42 | updateDimensions

Supported in API v17 +

Important: For a single request call of updateDimensions requests are limited to updating a maximum of 10000 dimension values in a hierarchical dimension, or
40000 dimension values in a flat dimension. These limits do not apply to creation of new dimension values within a request.

Category Metadata modification

Description Update a set of existing dimensions and their dimension values. Multiple dimensions and multiple values can be updated in one call.
If successful, the API returns details for the dimensions that have just been updated.

Permissions Model and permissions on each dimension


Required To
Invoke

Parameters Credentials
Required On
Request

This method's request contains a credentials tag to identify and authorize the calling user. User must have the "Model" permission and the permission required to
administer the dimensions being updated.

Tip: Best Practice: Invoke exportDimensions to retrieve the Planning dimension IDs needed for your updateDimensions request. No changes should be made to the
planning dimensions via the Planning UI or APIs by others before you submit your updateDimensions request.

HTTP Description

Method Post

Content-Type text/xml

Curl Example

curl -H "Content-Type: text/xml" -d @C:/temp/updateDimVal.xml -X POST https://api.adaptiveinsights.com/api/v17

updateDimVal.xml contents

<?xml version='1.0' encoding='UTF-8'?>


<call method="updateDimensions" callerName="Steve C">
<credentials login="[email protected]" password="my_password"/>
<dimensions>
<dimension id="7" name="Education" shortName="" autoCreate="0" listDimension="1" keepSorted="0" useOnLevels="0">
<dimensionValue id="32" name="Graduate" description="Modified Graduate degree" />
</dimension>
</dimensions>
</call>

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 378/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Attach an XML File Curl Example

curl -i -X POST -H "Content-Type: multipart/form-data" -F "request=<C:/temp/requestCreateNewDimVal.xml" -F "content=@C:/temp/createNewDimVal.xml" https://api.adap

requestCreateNewDimVal.xml content

<?xml version='1.0' encoding='UTF-8'?>


<call method="updateDimensions" callerName="Steve C">
<credentials login="[email protected]" password="my_password"/>
</call>

createNewDimVal.xml

<?xml version='1.0' encoding='UTF-8'?>


<dimensions>
<dimension id="7" name="Education" shortName="" autoCreate="0" listDimension="1" keepSorted="0" useOnLevels="0">
<dimensionValue id="" name="Graduate" description="Graduate degree" />
</dimension>
</dimensions>

For large payloads, you can post compressed XML files (zipped). Find out how here.

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="updateDimensions" callerName="Steve C">
<credentials login="[email protected]" password="my_password"/>
<dimensions>
<dimension id="7" name="Education" shortName="" autoCreate="0" listDimension="1" keepSorted="0" useOnLevels="0">
<dimensionValue id="32" name="Graduate" description="Graduate degree" shortName="" allVersions="0">
<attribute name="Education Type" value="Tech1" />
<version name="Budget 2017" available="1" />
</dimensionValue>
<dimensionValue id="33" name="Masters" description="Masters degree" shortName="" allVersions="0">
<attribute name="Education Type" value="Management" />
<version name="Budget 2017" available="1" />
</dimensionValue>
<dimensionValue id="34" name="Phd" description="Phd" shortName="" />
</dimension>
<dimension id="16" name="Geography" property1="Latitude" property2="Longitude">
<dimensionValue id="521" name="United States" description="USA" shortName="">
<dimensionValue id="555" name="Alabama" description="1" shortName="">
<dimensionValue id="579" name="205" description="1" shortName="">
<dimensionValue id="4718" name="35004" description="33" shortName="">
<properties>
<property name="Latitude" value="33.6015" />
<property name="Longitude" value="86.4895" />
</properties>
</dimensionValue>
<dimensionValue id="4719" name="35005" description="" shortName="" />
</dimensionValue>
<properties>
<property name="Latitude" value="" />
<property name="Longitude" value="86.9023" />
</properties>
</dimensionValue>
</dimensionValue>
</dimension>
</dimensions>
</call>

The following conditions apply to updateDimensions:

Dimensions and dimension values are both identified for update via their internal ID number.
Currency, a system dimension, cannot be updated via API.
To create new dimensions and dimension values, give them a blank or missing ID property.
Within an existing dimension, you can shift an existing (non-new) dimensionValue under a new dimensionValue. Doing so creates the new
dimensionValue and moves the existing dimensionValue under it as a child.
All dimension values created for flat dimensions are visible in all versions by default. To specify visibility you must explicitly mention it using either:
The allVersions attribute in the dimensionValue tag
Or by providing child version tags under dimensionValue to provide custom visibility

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 379/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Request Format for Creating a New Dimension Value


To create a new dimension value, include its parent by its ID. For example, to add a new child value below the Engr value which has id 7, you can use:

<?xml version='1.0' encoding='UTF-8'?>


<call method="updateDimensions" callerName="Steve C">
<credentials login="[email protected]" password="my_password"/>
<dimensions>
<dimension id="7">
<dimensionValue id="" name="Documentation" description="docs" shortName="" >
<properties>
<property name="OwnerID" value="58371998"/>
</properties>
</dimensionValue>
</dimension>
</dimensions>
</call>

This method does not change anything about value id 7. It creates a new child named Docs for id 7. All unmentioned children move to the end of the child list.
This is the equivalent of "setting the parent" for the new value, but it is accomplished by including that parent as an element.

Handling Multiple Renames in a Single updateDimensions Call


Multiple renames of the same entity can take place in a remote system between updateDimensions calls. The names of entities on the remote system can swap
for the same entity IDs. When updateDimensions calls take place after the name swap, the updateDimensions call manages these changes by tracking the IDs
across name changes. The call can also handle the introduction of a new ID that uses an existing name.

For each of the examples to succeed, the full swap of IDs must take place with the unique values.

Example 1: A simple name swap in the remote system.

ID Unique Value New Unique Value


1 AA BB
2 BB AA

Example 2: A sequence of 3 renames in the remote system.

ID Unique Value New Unique Value


1 AA BB
2 BB CC
3 CC AA

Example 3: A new entity using an existing unique value.

ID Unique Value New Unique Value


4 AA
1 AA BB
2 BB Old BB

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 380/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Contents of the Element

(none)

dimensions element

Tag Name dimensions

Description Contains one or more dimensions or dimension values.

Attributes of the Element

Attribute Name Required? Value Example

N 1
retainExistingOrder retainExistingOrder="1" indicates updateDimensions API should ignore the order of elements in the
XML payload and the existing defined order will be retained.
Available in API v27+
retainExistingOrder="0" indicates updateDimensions API should update the order of elements
based on the tag position relative to other siblings in the XML payload.

The retainExistingOrder flag is ignored when Dimension has the keepSorted flag enabled.

The default value for retainExistingOrder is "1".

displayNameEnabled N
displayNameEnabled=1 indicates updateDimensions should respect display name properties of
Only available in API code, displayNameType, and description when Enable Display Name is ON for the instance.
v30+ for instances that
displayNameEnabled=0 indicates the updateDimensions API should continue following the pre-v30
enable display name.
API contract even when Enable Display Name is ON for the instance. The updateDimensions API
ignores the display name properties code, displayNameType and description.

The default value for displayNameEnabled is "0".

Contents of the Element

Contains one or more dimensions or dimension values.

dimension element

Tag Name dimension

Description Specifies a dimension to create.

Attributes of the Element

Attribute Name Required? Value Example

id Y The id of the dimension being updated. 34

name N The name of the dimension. The name must be unique. NewDimensionName

updated in API v30

shortName N Displayable title of the column, as seen on the sheet. NewDimensionShortName

updated in API v30

listDimension N "1" means this is a list dimension, "0" (or not specified) means it isn't. 0

useOnLevels N "1" means this dimension can be used on levels, "0" (or not 0
specified) means it can't.

autoCreate N "1" means values for this dimension can be created via the import, 0
"0" (or not specified) means they can't.

keepSorted N "1" means values for this dimension are always sorted alphabetically, 0
"0" (or not specified) means they can be manually ordered.
Note: Any changes to the components of a display name alter the
sort order of elements, even with Keep Sorted enabled.

displayNameType N Controls the display of dimenision values. The possible values are "CODE_NAME"
NAME, CODE, NAME_CODE or CODE_NAME.
Only available in API v30+ for
instances that enable display name. Defaults to NAME when left blank or not provided.

This property is only available when Enable Display Name is ON for


the instance.

description N The description of the dimension. "The desc about dim"

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 381/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Only available in API v30+ for This property is only available when Enable Display Name is ON for
instances that enable display name. the instance.

property1, property2, ... N The properties of the dimension, if any, as entered in the Dimension "Latitude"
Administration. Each dimension can have up to 5 properties.

Contents of the Element

Optional dimensionValue elements.

dimensionValue element

Tag Name dimensionValue

Description Specifies a dimension value to update.

Attributes of the Element

Attribute Name Required? Value Example

id Y The id of the dimension value. 34

code N The unique code of the dimension value. NewDimensionValue

Only available in API


v30+ for instances that
enable display name.

name Y NewDimensionValue
The name of the dimension value. When Enable Display Name is ON for an
instance with API v30 or higher, name allows duplicate values. When Enable
Display Name is OFF for an instance, code is not available and name must be
unique.

Newline characters (&#10;) found between words get replaced with a single
space during payload processing.

Newline characters found at the beginning or end of the name also get
replaced with single spaces. These spaces do not appear in the user interface
because of whitespace trimming during payload processing.

shortName N The short name of the dimension value. NewDimensionValueShortName

description N The description of the dimension value. This is a NewDimensionValue

allVersions N 0
"1" means the dimension value is available in all versions, "0" means it is not.
If allVersions is missing, the default value is 1.

To indicate specific version availability, set allVersions to 0 and provide the


dimension value availability for each version.

Example: Assuming there are versions 2018a, 2018b, 2018c, 2018d To


include a dimension value in only version 2018b:

<dimensionValue .... allVersions="0"> <version name="2018a" available="0">


<version name="2018c" available="0"> <version name="2018d" available="0">

In the example above, if allVersions="1", then the child version elements below
it are ignored.

Contents of the Element

Can contain the optional properties element.

attribute element

Tag Name attribute

Description Container for one dimension attribute element. Requires a preexisting attribute name and value.

Attributes of the Element

Attribute Required? Value Example


Name

name Y The name of the dimension attribute Education


Type

Y Tech1
value The value of the dimension attribute.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 382/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

updated If "Dimension import automatically creates attribute values" is enabled in the dimension attribute administrator UI,
in API any attribute value that does not already exist becomes a new attribute value at the root level.
v18

Contents of the Element

(none)

version element

Tag Name version

Description Specifies the version availability of a dimension value. Requires a preexisting version.

Attributes of the Element

Attribute Name Required? Value Example

name Y The name of the version or folder, as it appears in Version Administration. Budget 2015

available Y If 1 this dimension value is available in this version. 1

Contents of the Element

One or more version elements for each dimension value.

properties element

Supported in API v22

Tag Name properties

Description Optional element that contains property elements.

Attributes of the Element

(none)

Contents of the Element

Contains up to five property elements.

property element

Supported in API v22

Tag Name property

Description Specifies a custom property to update. The property element values can only contain numeric characters.

Attributes of the Element

Attribute Name Required? Value Example

name Y The name of the property. Latitude

value Y The value of the property. An empty value will erase the property value for the dimension value. 33.6015

Contents of the Element

(none)

Response Format

<?xml version='1.0' encoding='UTF-8'?>


<response success="true">
<messages>
<message type="INFO">Dimension was saved successfully.</message>
</messages>
<output>
<dimensions>
<dimension id="7" name="Education" shortName="" autoCreate="0" listDimension="1" keepSorted="0" useOnLevels="0" status="">
<dimensionValue id="44" name="Documentation" description="docs" shortName="" status="created">
</dimensionValue>
</dimension>
<dimension id="16" name="Geography" shortName="" autoCreate="0" listDimension="0" keepSorted="0" useOnLevels="0" property1="Latitude" property2="Longitude"

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 383/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

<dimensionValue id="521" name="United States" shortName="" description="USA" status="">


<dimensionValue id="555" name="Alabama" shortName="" description="1" status="">
<dimensionValue id="579" name="205" shortName="" description="1" status="">
<dimensionValue id="4718" name="35004" shortName="" description="33" status="">
<properties>
<property name="Latitude" value="33.6015" status="created" />
<property name="Longitude" value="86.4895" status="" />
</properties>
</dimensionValue>
<dimensionValue id="4719" name="35005" shortName="" description="" status="" />
</dimensionValue>
<properties>
<property name="Latitude" value="" status="deleted" />
<property name="Longitude" value="86.9023" status="updated" />
</properties>
</dimensionValue>
</dimensionValue>
</dimension>
</dimensions>
</output>
</response>

dimensions element

Tag Name dimensions

Description Contains one or


more dimensions
or dimension
values.

Attributes of the Element

(none)

Contents of the Element

Contains one or more dimensions or dimension values.

retainExistingOrder N 1
If 0, updateDimensions API should update sort order based on the XML payload content.

If 1, updateDimensions API should retain existing sort order.

displayNameEnabled 1
displayNameEnabled=1 indicates updateDimensions should respect display name properties of code,
Only available in API displayNameType, and description when Enable Display Name is ON for the instance.
v30+ for instances
displayNameEnabled=0 indicates the updateDimensions API should continue following the pre-
that enable display
2021.42 API contract even when Enable Display Name is ON for the instance. The updateDimensions
name.
API ignores the display name properties code, displayNameType and description.

Support for displayNameEnabled begain in 2021.42. The default value for displayNameEnabled is "0".

dimension element

Tag Name dimension

Description Represents a single custom dimension being returned in the response to an


exportDimensions API call.

Attributes of the Element

Attribute Name Required? Value Example

id Y For create, the new ID will be provided. 16

name Y The name of the dimension, as it appears on reports and sheets. Customer

shortName N The short name for the dimension, if any, as entered in Dimension cust.
Administration

autoCreate Y 1 if the selected dimension has the "Data import automatically creates 0
dimension values" field set; 0 otherwise.

listDimension Y 1 if the selected dimension is list dimension; 0 otherwise. 1

keepSorted Y 1 if the selected dimension is kept sorted, 0 otherwise. 1

useOnLevels Y 1 if the selected dimension can be used on levels, 0 otherwise. 1

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 384/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

displayNameType N Controls the display of dimension values. The possible values are NAME, CODE_NAME
CODE, NAME_CODE or CODE_NAME.
Only available in API v30+ for instances that
enable display name. Defaults to NAME when left blank or not provided.

This property is only available when Enable Display Name is ON for the
instance.

description N The description of the dimension.

Only available in API v30+ for instances that


enable display name.

property1,propert2,... N The custom properties of the dimension.

Contents of the Element

Zero or more dimensionValue elements. Each enclosed dimensionValue element represents a "root dimension value" in the dimension, a value which has no
parent value.

dimensionValue element

Tag Name dimensionValue

Description Represents a single member value of a custom dimension being returned in the response to an
exportDimensions API call.

Attributes of the Element

Attribute Name Required? Value Example

id Y For create, the new ID will be provided. 16

code N The unique code of the dimension value. A Corp

Only available in API


v30+ for instances that
enable display name.

name Y The label for the member value of the dimension, as displayed on A Corp
reports and used in formulas.

shortName N The short name for the dimension value, if any, as entered in Dimension A
Administration

description N The description of the dimension value, if any, as entered in Dimension A Corporation
Administration

status Y updated
The status of the dimension value following update. For warning and
error, the message element contains the message contents. The status
of updated does not return any message contents.

Error: An error was found in the entity


Warning: A warning was found in the entity
Created: The entity was created successfully
Updated: The entity was updated successfully

message N The error message for an invalid dimensionValue input. The dimension name
ProductsFirst01234567890123456...
cannot be more than 64 characters
long

Contents of the Element

Zero or more optional dimensionValue elements. Each enclosed dimensionValue element represents a "child dimension value" of this dimension value, whose
members implicitly roll up to this value.

attribute element

Tag Name attribute

Description Container for one dimension attribute element.

Attributes of the Element

Attribute Required? Value Example


Name

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 385/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

name Y The name of the dimension attribute Education


Type

value Y The value of the dimension attribute. Tech1

status Y updated
The status of the dimension value following update. For warning and error, the message element contains the
message contents. The status of updated does not return any message contents.

Error: An error was found in the entity


Warning: A warning was found in the entity
Created: The entity was created successfully
Updated: The entity was updated successfully

message N The error message for an invalid attribute input.

Contents of the Element

(none)

version element

Tag Name version

Description Specifies the version availability of a dimension value.

Attributes of the Element

Attribute Required? Value Example


Name

name Y The name of the version or folder, as it appears in Version Administration. Budget
2015

available Y If 1 this dimension value is available in this version. 1

status Y updated
The status of the dimension value following update. For warning and error, the message element contains the
message contents. The status of updated does not return any message contents.

Error: An error was found in the entity


Warning: A warning was found in the entity
Created: The entity was created successfully
Updated: The entity was updated successfully

message N The error message for an invalid version input.

Contents of the Element

One or more version elements for each dimension value.

properties element

Tag Name properties

Description Contains up to five property elements.

Attributes of the Element

(none)

Contents of the Element

Contains up to five property elements.

property element

Tag Name property

Description Specifies a custom property to update.

Attributes of the Element

Attribute Value Example


Name

name The name of the property. Latitude

value The value of the property. An empty value will erase the property value for the dimension value. 33.6015

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 386/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Status The status of the property following update. For error, the message element contains the error message contents.
The status of updated does not return any message contents.

Error: An error was found in the entity


Created: The entity was created successfully
Updated: The entity was updated successfully
Nothing Changed: An empty status means nothing has been changed for the entity.

Message The error message for an invalid property input. Property tag requires a
name attribute.

1.4.3.43 | updateDimensionValue

Important: Not supported in API v20 +

Category Metadata modification

Description Update a dimension value. If successful, the API returns details for the dimension and all dimension values including the one
that has just been updated.

Permissions Required To Model


Invoke

Parameters Required On Credentials


Request

This method's request contains a credentials tag to identify and authorize the calling user. User must have Model permission to create the dimension.

This method returns an error if there are unpublished changes.

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="updateDimensionValue" callerName="fred">
<credentials login="[email protected]" password="my_pwd" />
<dimensionValue
id="10"
name="New Dimension Value">
<attributes>
<attribute attributeId="20" valueId="170" />
</attributes>
</dimensionValue>
</call>

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or his- tory of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 387/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

dimensionValue element

Tag Name dimensionValue

Description Specifies a dimension value to update.

Attributes of the Element

Attribute Name Required? Value Example

dimensionId N The id of the dimension to which the value belongs. 3

id Y The id of the dimension value. 34

name Y The name of the dimension value. NewDimensionValue

shortName N The short name of the dimension value. NewDimensionValue- ShortName

parentId N The id of the parent dimension value. 220

description N The description of the dimension value. This is a NewDimen- sionValue

Contents of the Element

(none)

attributes element

Tag Name attributes

Description Container for one or more dimension attribute elements.

Attributes of the Element

Attribute Name Required? Value Example

(none)

Contents of the Element

One or more attribute elements.

attribute element

Tag Name attribute

Description Container for one dimension attribute element.

Attributes of the Element

Attribute Required? Value Example


Name

attributeID Y The id of the dimension attribute generated by system. 20

valueID Y The unique id of the dimension attribute value generated by system. If this value is 0 then this attribute is 170
removed from the account.

Contents of the Element

(none)

Response Format
These are examples of responses for successful and unsuccessful updating of a dimension value.

Success Example

<?xml version='1.0' encoding='UTF-8'?>


<response success="true">
<output>
<dimensions>
<dimension id="6" name="Department" shortName="" autoCreate="0" listDimension="0" keepSorted="0" useOnLevels="1">
<dimensionValue id="7" name="Engr" description="Engineering" shortName="">
<dimensionValue id="52" name="QA" description="Quality Assurance" shortName="" />
<dimensionValue id="53" name="Dev" description="Development" shortName="" /></dimensionValue>
</dimension>
<dimension id="7" name="Education" shortName="" autoCreate="0" listDimension="1" keepSorted="0" useOnLevels="0">
<dimensionValue id="32" name="Graduate" description="Graduate degree" shortName="">

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 388/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

<attributes>
<attribute attributeId="21" name="Education Type" valueId="197" value="Tech1" />
</attributes>
</dimensionValue>
<dimensionValue id="33" name="Masters" description="Masters degree" shortName="">
<attributes>
<attribute attributeId="21" name="Education Type" valueId="196" value="Management" />
</attributes>
</dimensionValue>
<dimensionValue id="34" name="Phd" description="Phd" shortName="" />
</dimension>
</dimensions>
</output>
</response>

Error Example

<?xml version='1.0' encoding='UTF-8'?>


<response success="false">
<messages>
<message type="ERROR" key="invalid-attributevalueid" values="-50" dimensionValueId="10">Invalid attribute value id: "-50"</message>
</messages>
</response>

Dimensions are ordered by name.

response element

Tag Name response

Attributes of the Element

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true
warning messages in their response.

obsolete N If present on the response tag and set to true, this attribute indi-cates that the version of the method or API which is false
being invoked has become obsolete and is officially deprecated. While it continues to function at this time, it may
cease functioning in a short while. Typically, this attribute is not present.

Contents of the Element

A single optional messages element, and exactly one required output element.

output element

Tag Name output

Attributes of the Element

(none)

Contents of the Element

A single accounts element. This output wrapper is standard on all API responses and encloses the valid output of any successful API call.

dimensions element

Tag Name dimensions

Description Container for one or more dimension elements.

Attributes of the Element

(none)

Contents of the Element

One or more dimension elements.

dimension element

Tag Name dimension

Description Represents a single custom dimension being returned in the response to an exportDimensions API call.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 389/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Attributes of the Element

Attribute Required? Value Example


Name

id Y The internal system ID number for the dimension. This can be used to identify dimensions in other API calls, 16
such as exportDimensionFami- lies.

name Y The name of the dimension, as it appears on reports and sheets. Customer

shortName N The short name for the dimension, if any, as entered in Dimension Administration cust.

autoCreate Y 1 if the selected dimension has the "Data import automatically creates dimension values" field set; 0 otherwise. 0

listDimension Y 1 if the selected dimension is list dimension; 0 otherwise. 1

keepSorted Y 1 if the selected dimension is kept sorted, 0 oth- erwise. 1

useOnLevels Y 1 if the selected dimension can be used on levels, 0 otherwise. 1

Contents of the Element

Zero or more dimensionValue elements. Each enclosed dimensionValue element represents a "root dimension value" in the dimension, a value which has no
parent value.

dimensionValue element

Tag Name dimensionValue

Description Represents a single member value of a custom dimension being returned in the response to an exportDimensions API call.

Attributes of the Element

Attribute Required? Value Example


Name

id Y The internal system ID number for this member value of the dimension. 34

name Y The label for the member value of the dimension, as displayed on reports and used in formulas. A Corp

shortName N The short name for the dimension value, if any, as entered in Dimension Administration A

description N The description of the dimension value, if any, as entered in Dimen- Administration A Corporation

Contents of the Element

Zero or more optional dimensionValue elements. Each enclosed dimensionValue element represents a "child dimension value" of this dimension value, whose
members implicitly roll up to this value.

attributes element

Tag Name attributes

Description Container for one or more dimension attribute elements.

Attributes of the Element

Attribute Name Required? Value Example

(none)

Contents of the Element

One or more attribute elements.

attribute element

Tag Name attribute

Description Container for one dimension attribute element.

Attributes of the Element

Attribute Name Required? Value Example

attributeID Y The ID of the dimension attribute generated by system. 20

name Y The name of the dimension attribute Education Type

valueID Y The unique ID of the dimension attribute value generated by system. 170

value Y The value of the dimension attribute. Tech1

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 390/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Contents of the Element

(none)

1.4.3.44 | updateLevel

Important: Not supported in API v20 +. Use updateLevels.

Category Metadata modification

Description Update a level. If successful, the API returns details for the level that has just been updated.

Permissions Required To Invoke Organization Structure

Parameters Required On Request Credentials

This method's request contains a credentials tag to identify and authorize the calling user. User must have Organization Structure permission to create the level.

This method returns an error if there are unpublished changes.

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="updateLevel" callerName="fred">
<credentials login="[email protected]" password="my_pwd" />
<level
id="41"
name="New Level Name"
shortName="NewLvlName"
>
<attributes>
<attribute attributeId="20" valueId="199" />
</attributes>
</level>
</call>

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

level element

Tag Name level

Description Specifies a level to update.

Attributes of the Element

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 391/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Attribute Name Required? Value Example

id Y The ID of the level to be updated. 34

name Y The name of the level. The name must be unique. New Level
Name

shortName N The short name of the level. NewLvName

proceedWithWarnings N Indicates whether the user wants to ignore warning messages and go ahead with the create 1
operation. 0 for no, 1 for yes. If there are warnings and proceedWithWarnings=0, then the level will
not be created. Set proceedWithWarnings=1 to create the level when there are warnings.

Contents of the Element

One optional attributes element if you want to set one or more level attributes associated with the level.

attributes element

Tag Name attributes

Description Container for one or more level attribute elements.

Attributes of the Element

Attribute Name Required? Value Example

(none)

Contents of the Element

One or more attribute elements.

attribute element

Tag Name attribute

Description Container for one level attribute element.

Attributes of the Element

Attribute Required? Value Example


Name

attributeID Y The id of the level attribute generated by system. 20

valueID Y The unique id of the level attribute value generated by system. If this value is 0 then this attribute is removed 170
from the account.

Contents of the Element

(none)

Response Format

<?xml version='1.0' encoding='UTF-8'?>


<response success="true">
<output>
<levels>
<level="41" name="New Level Name" shortName="NewLvlName" currency="USD">
<attribute attributeId="20" name="Regional Code" valueId="199" value="A-145" />
</level>
</levels>
</output>
</response>

output element

Tag Name output

Attributes of the Element

(none)

Contents of the Element

A single required level element. This output wrapper is standard on all API responses and encloses the valid output of any successful API call.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 392/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

levels element

Tag Name levels

Description Container for one or more level elements.

Attributes of the Element

Attribute Name Required? Value Example

Contents of the Element

One or more level elements. If the request includes inaccessible levels, there will be only one level element, which represents the top level of the organization.

level element

Tag Name level

Description Represents a single organization level being returned in the response to an exportLevels API call.

Attributes of the Element

Attribute Required? Value Example


Name

id Y The internal system ID number for the level. 7

name Y The name of the level, as it appears on reports and sheets. Development

currency Y The currency code for the currency assigned to this level of the organization. The currency will be one of INR
the configured currencies for the instance, found in the exportActiveCurrencies call.

shortName N The abbreviation for the level, if any, as entered in Organization Administration. Dev

availableStart N The start date for the availability of the level for actuals verion, applicable only when the Actuals version is 01/2012
specified in the request. he value can be either a time period code, such as "01/2012" or the special value
"START" indicating the start of the version.

availableEnd N The end date for the availability of the level for actuals verion, applicable only when the Actuals version is 12/2013
specified in the request. The value can be either a time period code, such as "12/2013", or the special
value "END" indicating the end of the version.

isImportable N 1
Indicates if the associated level is importable in the specified version. '0' means it is not importable and '1'
means it is importable. A level is importable if at least one timeslot in the specified version is importable.
isImportable attribute is only emitted if versionName or versionID is specified in the request.

Note: isImportable only indicates that a level is available for import in the specified version, not that the
user making the API call has the permission to import into the version or level. Use exportVersions to see
which versions are available to the user for import.

workflowStatus N Emits the workflow status for the associated level. I for "In Progress", S for "Submitted", R for "Rejected", I
A for "Approved" and L for "Locked". Only included in the response if workflow is enabled for this
company, and a planning versionName or versionID is specified in the request. Workflow is not available
on actuals versions.

isLinked Y Indicates whether the level is a linked level. 0 for no, 1 for yes. 1

isElimination Y Indicates whether the level is an elimination level. 0 for no, 1 for yes. 0

Contents of the Element

One nested level element for each direct child level of this level.

One attributes element if this level has one or more attributes associated with it.

attributes element

Tag Name attributes

Description Container for one or more attribute elements.

Attributes of the Element

Attribute Name Required? Value Example

(none)

Contents of the Element

One or more attribute elements.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 393/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

attribute element

Tag Name attribute

Description Represents a single non-blank level attribute mapping to which a level is associated.

Attributes of the Element

Attribute Name Required? Value Example

name Y The name of the level attribute Corporate Discount

value Y The value of the level attribute associated with the level. Yes

attributeID Y The internal system id number of the level attribute. 20

valueID Y The internal system id number of the level attribute value. 188

Contents of the Element

(none)

1.4.3.45 | updateLevels

Supported in API v19 +

Category Metadata modification

Description Update a set of existing levels or create new levels and their properties. Multiple levels with multiple values can be updated in one call. If
successful, the API returns details for the levels that were updated/created. If the API fails, a comprehensive list of errors and their causes
returns.

Permissions Model and permissions on each level


Required To
Invoke

Parameters Credentials
Required On
Request

This method's request contains a credentials tag to identify and authorize the calling user. User must have the "Model" permission and the permission required to
administer the levels being updated.

Tip: Best Practice: Invoke exportLevels to retrieve the Adaptive Planning level IDs needed for your updateLevels request. No changes should be made to the
planning levels via the Adaptive Planning UI or APIs by others before you submit your updateLevels request.

HTTP Description

Method Post

Content-Type text/xml

Curl Example

curl -H "Content-Type: text/xml" -d @C:/temp/updateLevels.xml -X POST https://api.adaptiveinsights.com/api/v19

updateLevels.xml contents

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="updateLevels" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd"/>
<levels>
<level id="1" name="HQ">
<level id="2" name="Engineering" currency="USD" shortName="Engr">
<level id="8" name="Development" currency="USD" shortName="Dev" inWorkflow="0"/>
<level id="9" name="QA" currency="INR" eliminationTradingPartner="1"/>
<level id="10" name="Documentation" currency="PKR" shortName="Doc" actualsStart="05/2013" actualsEnd="12/2018" inWorkflow="1" propagateToDescendants="1">
<version name="Budget 2011" available="1"/>
<version name="Budget 2012" available="0"/>
<version name="Budget 2013" available="1"/>
</level>
</level>
<level id="3" name="Professional Services" currency="USD" shortName="Prof.Srv" eliminationLevel="1">

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 394/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

<attribute name="Corporate Discount" value="Available"/>


<attribute name="Transfers Restricted" value="Yes"/>
<dimension name="Region" value="C-US"/>
</level>
</level>
</levels>
</call>

For large payloads, you can post compressed XML files (zipped). Find out how here.

The following conditions apply to updateLevels:

Levels are identified for update via their internal ID number.


To create new levels, give them a blank or missing ID property.
You can move an existing (non-new) item so that it becomes a child of a new item. Doing so creates the new item and moves the existing item under
it as a child.
Sheet availability and user access cannot be updated through updateLevels.

Request Format for Creating a New Level


To create a new level, include its parent by its ID. For example, to add a new child level below the Engr value which has id 7, you can use:

<?xml version='1.0' encoding='UTF-8'?>


<call method="updateLevels" callerName="Steve C">
<credentials login="[email protected]" password="password"/>
<levels>
<level id="7">
<level id="" name="Documentation" description="docs" shortName="" >
</level>
</level>
</levels>
</call>

This method does not change anything about level id 7. It creates a new child named Documnentation for id 7. All unmentioned children of Engr move to the
end of the child list. This is the equivalent of "setting the parent" for the new level.

Handling Multiple Renames in a Single updateLevels Call


Multiple renames of the same entity can take place in a remote system between updateLevels calls. The names of entities on the remote system can swap for the
same entity IDs. When updateLevels calls take place after the name swap, the updateLevels call manages these changes by tracking the IDs across name
changes. The call can also handle the introduction of a new ID that uses an existing name.

For each of the examples to succeed, the full swap of IDs must take place with the unique values.

Example 1: A simple name swap in the remote system.

ID Unique Value New Unique Value


1 AA BB
2 BB AA

Example 2: A sequence of 3 renames in the remote system.

ID Unique Value New Unique Value


1 AA BB
2 BB CC
3 CC AA

Example 3: A new entity using an existing unique value.

ID Unique Value New Unique Value


4 AA
1 AA BB
2 BB Old BB

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 395/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

levels element

Tag Name levels

Description Only 1 levels element request is allowed per payload. It contains one or more level elements.

Attributes of the Element

Attribute Name Required? Value Example

N 1
retainExisitingOrder retainExistingOrder="1" indicates updateLevels API should ignore the order of elements in the XML
payload and the existing defined order will be retained.
Available in API v26+
retainExistingOrder="0" indicates updateLevels API should update the order of elements based on
the tag position relative to other siblings in the XML payload.

The retainExistingOrder attribute is ignored in API version prior to API v26.

The default value for retainExistingOrder is "0" for v26. For API version v27 and later, the default
value for retainExistingOrder is "1".

displayNameEnabled N 1
displayNameEnabled=1 indicates updateLevels should respect display name properties of code,
Only available in API displayNameType, and description when Enable Display Name is ON for the instance.
v30+ for instances that
displayNameEnabled=0 indicates the updateLevels API should continue following the pre-v30 API
enable display name.
contract even when Enable Display Name is ON for the instance. The updateLevels API ignores
the display name properties code, displayNameType and description.

The default value for displayNameEnabled is "0".

Contents of the Element

Contains one or more level elements.

level element

Tag Name level

Description Specifies a level to create.

Attributes of the Element

Attribute Name Required? Value Example

id Y The id of the level being updated. 34

code N The unique code of the level. NewLevelName

Only available in API This property is only available when Enable Display Name is ON for the instance.
v30+ for instances that
enable display name.

name N The name of the level. When Enable Display Name is ON for an instance with API v30 NewLevelName
or higher, name allows duplicate values. When Enable Display Name is OFF for an
updated in API v30
instance, code is not available and name must be unique.

shortName N Displayable title of the column, as seen on the sheet. NewLevelShortName

updated in API v30

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 396/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

currency N The currency code for the currency assigned to this level of the organization. The USD
currency will be one of the configured currencies for the instance, found in the
exportActiveCurrencies call.

N CAD
publishCurrency PublishCurrency sets the Workday Company currency when publishing a Financial
Plan. The Publish Currency loads through the Planning Level Loader in Workday
Available in API v24+
Adaptive Planning integration as an additional currency attribute for a level.
PublishCurrency indicates one of the configured currencies for the instance, found in
the exportActiveCurrencies call and the Levels Admin UI.

Only available when you set up Adaptive Planning for Workday. See the Publish Plans
section of Using Adaptive Planning with Workday.

inWorkflow N Indicates if this level participates in a workflow. 1

eliminationLevel N Indicates if this level is an elimination level for use in intercompany eliminations. A level 1
can be an elimination level or a elimination trading partner, but not both.

eliminationTradingPartner N Indicates if this level is an elimination trading partner. A level can be an elimination 0
trading partner or an elimination level, but not both.

actualsStart N Indicates the start of the actuals for this level. Must be an existing time code from Time May-2013
Administration at the default time stratum.

actualsEnd N Indicates the end of actuals for this level. Must be an existing time code from Time Dec-2018
Administration at the default time stratum.

description N The description of the level. The top-most


department.
Only available in API This property is only available when Enable Display Name is ON for the instance.
v30+ for instances that
enable display name.

Contents of the Element

One or more attribute elements if you want to set one or more level attributes associated with the level.

version element

Tag Name version

Description Specifies the version availability of a level. Requires a preexisting version.

Attributes of the Element

Attribute Name Required? Value Example

name Y The name of the version or folder, as it appears in Version Administration. Budget 2015

available Y If 1 this version is available in this level. 1

Contents of the Element

One or more version elements for each level

attribute element

Tag Name attribute

Description Specifies an attribute to update.

Attributes of the Element

Attribute Name Required? Value Example

name Y The name of the attribute. Location

updated in API v30

value Y The attribute value for this attribute 170

Contents of the Element

(none)

dimension element

Tag Name dimension

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 397/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Description Specifies the level dimension value assignments.

Attributes of the Element

Attribute Name Required? Value Example

name Y The name of the dimension. Budget 2015

updated in API v30

value Y The dimension value available in this level. Lahore

Contents of the Element

(none)

Top to Bottom Payload Processing


Attributes for levels logically group values and tag levels. Because the updateLevels API processes the XML payload from top to bottom, assign a level attribute for
the parent level before changing the child attribute level values. Child levels can be tagged with any attribute value when the parent level attribute value is blank. If
level attributes fail to align with the parent attribute, a compatibility validation error occurs.

Consider the tree structure below where the parent "California" has 2 child levels "Palo Alto" and "Pleasanton". The level attributes "Palo Alto" and "Pleasanton" are
siblings.

Location
|__USA
|__California
|__Palo Alto
|__Pleasanton

Sample Original Request XML with Level Attributes


Notice that the location attribute value "Palo Alto" is assigned to both "Engineering" and "Development".

<levels deleteWorkflowSilently="0" deleteActualsSilently="0">


<level id="1" name="HQ" proceedWithWarnings="0">
<attribute name="Location" value="" />
<level id="2" name="Engineering">
<attribute name="Location" value="Palo Alto" />
<level id="8" name="Development">
<attribute name="Location" value="Palo Alto" />
</level>
</level>
</level>
</levels>

Example of Incorrect Order for Payload Processing


The XML payload below generates an error, "The attribute value Pleasanton is not compatible with the parent's attribute value". The top-to-
bottom payload processing considers the parent level "Engineering" to have the location attribute value "Palo Alto" from the previous code block and processes
"Pleasanton" as the child of "Palo Alto". The error is generated because the child level "Development" can only have the location attribute as "Palo-Alto" as
indicated in the tree structure.

<levels deleteWorkflowSilently="0" deleteActualsSilently="0">


<level id="1" name="HQ" proceedWithWarnings="0">
<level id="2" name="Engineering">
<level id="8" name="Development">
<attribute name="Location" value="Pleasanton" />
</level>
<attribute name="Location" value="California" /> <!-- Level Attribute change ignored due to placement order-->
</level>
<attribute name="Location" value="" />
</level>
</levels>

Example of Valid Order for Payload Processing


Re-arranging the placement order of the attribute "California" below "Engineering" enables the API to process the parent level attribute first, allowing the child level
"Development" to have the location attribute value of either "Palo Alto" or "Pleasanton".

<levels deleteWorkflowSilently="0" deleteActualsSilently="0">


<level id="1" name="HQ" proceedWithWarnings="0">
<attribute name="Location" value="" /> <!-- Level Attribute change processed due to correct placement order-->
<level id="2" name="Engineering">

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 398/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

<attribute name="Location" value="California" />


<level id="8" name="Development">
<attribute name="Location" value="Pleasanton" />
</level>
</level>
</level>
</levels>

Version availability of a level works the same way. Set the version availability of a level before altering the child levels to avoid compatibility errors.

Sample Original Request XML with Versions


Notice that the availability of the "Budget 2020" version for the levels "Engineering" and "Development" is set to "0".

<levels deleteWorkflowSilently="0" deleteActualsSilently="0">


<level id="1" name="HQ" proceedWithWarnings="0">
<version name="Budget 2020" available="0" />
<level id="2" name="Engineering">
<version name="Budget 2020" available="0" />
<level id="8" name="Development">
<version name="Budget 2020" available="0" />
</level>
</level>
</level>
</levels>

Example of Incorrect Order for Payload Processing


The XML payload below generates an error since the top-to-bottom payload processing considers the parent "Engineering" to be unavailable ("available=0") for
the "Budget 2020" version from the previous code block, and processes the availability of the child level "Development" as "1". The child level "Development"
cannot be available when the parent level "Engineering" is unavailable.

<levels deleteWorkflowSilently="0" deleteActualsSilently="0">


<level id="1" name="HQ" proceedWithWarnings="0">
<level id="2" name="Engineering">
<level id="8" name="Development">
<version name="Budget 2020" available="1" />
</level>
<version name="Budget 2020" available="1" /><!-- Parent version availability change ignored due to placement order-->
</level>
<version name="Budget 2020" available="1" />
</level>
</levels>

Example of Valid Order for Payload Processing


Re-arranging the placement order for the "Budget 2020" version below the parent level "Engineering" enables the API to process the parent availability first,
allowing "Development" to have the version availability value of "1" or "0".

<levels deleteWorkflowSilently="0" deleteActualsSilently="0">


<level id="1" name="HQ" proceedWithWarnings="0">
<version name="Budget 2020" available="1" />
<level id="2" name="Engineering"><!-- Parent Version availability change processed due to correct placement order-->
<version name="Budget 2020" available="1" />
<level id="8" name="Development">
<version name="Budget 2020" available="1" />
</level>
</level>
</level>
</levels>

Response Format

<?xml version='1.0' encoding='UTF-8'?>


<response success="true">
<output>
<levels>
<level id="1" name="HQ" currency="CAD" shortName="" eliminationLevel="1" eliminationTradingPartner="0" inWorkflow="0" status="">
<level id="2" name="Engineering" currency="USD" shortName="Engr" eliminationLevel="0" eliminationTradingPartner="1" inWorkflow="0" status="updated">
<level id="8" name="Development" currency="USD" shortName="Dev" eliminationLevel="0" eliminationTradingPartner="0" inWorkflow="0" status="updated" />
<level id="9" name="QA" currency="INR" shortName="" eliminationLevel="0" eliminationTradingPartner="0" inWorkflow="0" status="updated" />
<level id="10" name="Documentation" currency="PKR" shortName="Doc" eliminationLevel="0" eliminationTradingPartner="0" inWorkflow="1" propagateToDescendan
<version name="Budget 2011" available="1" status="" />
<version name="Budget 2012" available="0" status="updated" />
<version name="Budget 2013" available="1" status="" />

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 399/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

</level>
</level>
<level id="3" name="Professional Services" currency="USD" shortName="Prof.Srv" eliminationLevel="1" eliminationTradingPartner="0" inWorkflow="0" status="up
<attribute name="Corporate Discount" value="Available" status="" />
<attribute name="Transfers Restricted" value="Yes" status="" />
<dimension name="Region" value="C-US" status="" />
</level>
</level>
</levels>
</output>
</response>

output element

Tag Name output

Attributes of the Element

(none)

Contents of the Element

A single required level element. This output wrapper is standard on all API responses and encloses the valid output of any successful API call.

levels element

Tag Name levels

Description Container for one or more level elements.

Attributes of the Element

Attribute Name Required? Value Example

retainExisting Order N 1
0 updateLevels API should update sort order based on the XML payload content.

1 updateLevels API should retain existing sort order.

displayNameEnabled N 1
displayNameEnabled=1 indicates updateLevels should respect display name properties of
Only available in API v30+ for code, displayNameType, and description when Enable Display Name is ON for the
instances that enable display instance.
name.

Contents of the Element

One or more level elements. If the request includes inaccessible levels, there will be only one level element, which represents the top level of the organization.

level element

Tag Name level

Description Represents a single organization level being returned in the response to an updateLevels API call.

Attributes of the Element

Attribute Name Required? Value Example

id Y The internal system ID number for the level. 7

code N The unique code of the level. HQ

Only available in API This property is only available when Enable Display Name is ON for the instance.
v30+ for instances that
enable display name.

name Y The name of the level, as it appears on reports and sheets. Development

currency Y The currency code for the currency assigned to this level of the organization. The INR
currency will be one of the configured currencies for the instance, found in the
exportActiveCurrencies call.

N CAD
publishCurrency PublishCurrency sets the Workday Company currency when publishing a Financial Plan.
The Publish Currency loads through the Planning Level Loader in Workday Adaptive
Available in API v24+
Planning integration as an additional currency attribute for a level. The Publish Currency
indicates one of the configured currencies for the instance, found in the
exportActiveCurrencies call and indicated in the Level Admin UI.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 400/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Requires Workday Power of One enabled by Provisioning.

shortName N The abbreviation for the level, if any, as entered in Level Administration. Dev

eliminationLevel N Indicates whether the level is an elimination level. 0 for no, 1 for yes. 1

eliminationTradingPartner N *description* 1

inWorkflow N Indicates whether the level is in a workflow. 0 for no, 1 for yes. 1

propogateToDescendants N 1
Indicates if changes propagate to the children of this level. 0 for no, 1 for yes.

See more about propogateToDescendants behavior here.

actualsStart N The time code as defined in Time Administration for the start of the actuals version for 05/2013
this level.

actualsEnd N The time code as defined in Time Administration for the end of the actuals version for this 12/2018
level.

description N The description of the level. The top-most


department.
Only available in API This property is only available when Enable Display Name is ON for the instance.
v30+ for instances that
enable display name.

status Y Updated
The status of the level following update. For warning and error, the message element
contains the message contents. The status of updated does not return any message
contents.

Error: An error was found in the entity


Warning: A warning was found in the entity
Created: The entity was created successfully
Updated: The entity was updated successfully

message N The error message for invalid level input The level
UKregion2 is
either duplicated in
the payload or
already exists in
the system with ID
6.

Contents of the Element

One nested level element for each direct child level of this level. One attributes element if this level has one or more attributes associated with it.

attribute element

Tag Name attribute

Description Container for one level attribute element.

Attributes of the Element

Attribute Required? Value Example


Name

name Y The name of the level attribute Education Type

value Y The value of the level attribute. Tech1

status Y updated
The status of the attribute following update. For warning and error, the message
element contains the message contents. The status of updated does not return
any message contents.

Error: An error was found in the entity


Warning: A warning was found in the entity
Created: The entity was created successfully
Updated: The entity was updated successfully

message N The error message for an invalid attribute input. The level UKregion2 is either duplicated
in the payload or already exists in the
system with ID 6.

Contents of the Element

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 401/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

(none)

version element

Tag Name version

Description Specifies the version availability of a level.

Attributes of the Element

Attribute Required? Value Example


Name

name Y The name of the version or folder, as it appears in Version Administration. Budget
2015

value Y If 1 this level is available in this version. 1

status Y updated
The status of the version following update. For warning and error, the message element contains the message
contents. The status of updated does not return any message contents.

Error: An error was found in the entity


Warning: A warning was found in the entity
Created: The entity was created successfully
Updated: The entity was updated successfully

Contents of the Element

One or more version elements for each dimension value.

dimension element

Tag Name dimension

Description Represents a single custom dimension being returned in the response to an updateLevels API call.

Attributes of the Element

Attribute Required? Value Example


Name

name Y The name of the dimension, as it appears on reports and sheets. Region

value N The dimension value available for this level. C-USA.

status N Updated
The status of the version following update. For warning and error, the message element contains the message
contents. The status of updated does not return any message contents.

Error: An error was found in the entity


Warning: A warning was found in the entity
Created: The entity was created successfully
Updated: The entity was updated successfully

Contents of the Element

(none)

Error and Warning Message Descriptions

Type Message Example/Description

Error A system error occurred contact support for more information. System error

Error Unable to find content.xml file. Already exists in updateDimensions API

Error Provided input does not contain any level tags. Payload is missing level tag.

Error {0} is not recognized as a defined {1}. Used when version name or value is unknown.

Error The {0} can not be empty. Version name is empty.

Error Version availability cannot be changed for actuals. When the user attempts to modify version visibility for the
actuals version.

Error Version availability cannot be changed for the root level {0}. When the user attempts to modify version visibility for the root
level.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 402/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Type Message Example/Description

Error The visibility of version {0} on the level {1} is not compatible with parent of {1}. When the provided version visibility of the level is not
compatible with the parent level.

Error You do not have access to update one or more of the levels or versions When the user attempts to update non-accessible level
specified in the request. information.

Error {0} is not recognized as a defined {1}. Used when dimension name or value is unknown.

Error The {0} can not be empty. Dimension name is empty.

Error List Dimension cannot be used in Level. User attempts to map a flat dimension value for a level.

Error The dimension {0} is disabled for the level. The dimension is disabled for this level.

Error The dimension value {0} is not compatible with the parent's dimension value. When the provided dimension mapping of level is not
compatible with the parent level.

Error {0} is not recognized as a defined {1}. Used when attribute name or value is unknown.

Error The attribute value {0} is not compatible with the parent's attribute value. When the provided level attribute value of the level is not
compatible with the parent level.

Error The {0} can not be empty. Attribute name is empty.

Error Exception occurred when processing updateLevels API request. System error

Error Id {0} does not exist. Nonexistent level id provided in the request payload.

Error A {0} cannot have the same id as its parent. Child and parent level have the same ID.

Error {0} cannot be the child of {1}. A specific level can't be the child of another specific level.

Error Root level id is missing. The ID for the root level was not provided.

Error The root level Id {0} with level name {1} cannot become a child level. The root level can't become a child level.

Error The root level currency cannot be changed. Currency can not be changed for the root level.

Error The currency {0} is not valid. Unknown currency name provided in the level tag.

Error The level {0} is duplicated for IDs {1}. Duplicate level name provided.

Error The level {0} is duplicated in the payload {1} {2}. Multiple new levels contain the same name.

Error The root level workflow cannot be changed. InWorkflow status can not be changed for the root level.

Error The attribute assignment of level {0} is not compatible with the parent's The provided level attribute value of the level is not compatible
attribute value. with the parent level.

Error The level with ID {0} does not exist. No level with the provided ID exists in Planning.

Error You do not have access to update one or more of the levels or versions User permission missing for a level mentioned in payload.
specified in the request.

Error The version visibility of the level {0} is not compatible with {0} parent {1}. Provided version visibility of the level is not compatible with the
parent level.

Error The level {0} has an actuals availability containing more time periods than its The current level actuals range has been changed. The
parent {1}. modified actuals range makes it smaller than one of its
descendant's actuals range.

Error You cannot disable workflow for the level ({0}) if deleteWorkflowSilently, 0. If When delete workflow silently is off, you cannnot disable
you set deleteWorkFlowSilently, 1, all of your workflow tasks associated with workflow. If delete workflow silently is turned on, all workflow
this level will be deleted. tasks for the level get deleted.

Error Could not update the Actuals Start and End date for {0} since the date range is User attempts to shrink actuals range without
smaller than the start and end dates defined for the Actuals version, and deleteActualsSilently flag set.
deleteActualsSilently is set to false preventing actuals from being deleted for
{1}.

Error Workflow cannot be enabled for the level {0} as its parent has workflow Workflow cannot be enabled for the level because its parent
disabled. has workflow disabled.

Error TradingPartner or eliminationLevel cannot be enabled for the level {0} as its When trading partner is already enabled for a parent, its
parent has tradingPartner enabled. children cannot have trading partner or elimination level
enabled.

Error A parent with id {0} does not exist. A nonexistent ID was provided for a parent level.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 403/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Type Message Example/Description

Error Parent node {0} is becoming child of its current direct/indirect child node {1}. A cyclic relationship between a parent and children is being
created.

Error A level cannot be its own parent. A level cannot become its own parent in a payload.

Error A level with id {0} does not exist. The provided entity does not exist in Planning.

Error Elimination and TradingPartner cannot be true at the same time. A level can be an elimination level, or a trading partner, but not
both at the same time.

Error You can only modify Elimination on this level while its parent has Modifying elimination for a level can only happen when that
TradingPartner disabled. level's parent has trading partner disabled.

Error A sub-level beneath this level is an elimination level, so this level cannot be The current level cannot be marked as a trading partner
marked as a trading partner. because a level underneath it is an elimination level.

Error You cannot enable workflow on this level while its parent has workflow The parent of the level has workflow disabled.
disabled.

Error {0} can only be enabled together for a node and its descendants. To make See more about propogateToDescendants behavior here.
changes to them , set propagateToDescendants=1.

Error Cannot make level ''{0}'' an elimination level since it has data in one or more A level can't become an elimination level if it contains data in
intercompany accounts. intercompany accounts.

Error actualsStart or actualsEnd cannot be changed for root level {0}. The user attempts to change actuals range for root level.

Error You cannot add children to a linked level. The user attempts to add a child level for a linked level.

Error A timecode {0} does not exist. The provided time code does not exist.

Error The actuals start date {0} cannot be greater than the actuals end date {1}. The provided actuals start time is after the end time. The
actuals start time needs to be before the end time.

Error Invalid time code "{0}". Time codes set for actualsStart and actualsEnd must Provided time code is not at lowest strata level.
match the lowest strata available in Time Administration.

Error Invalid time code "{0}". The actualsStart {0} is before parents actualsStart {1}. The actualsStart time provided is before parent level's actuals
start time.

Error Invalid time code "{0}". The actualsEnd {0} is after parents actualsEnd {1}. The actualsEnd time provided is going beyond parent level's
actuals end time.

Error The actualsStart of {0} is before the Actuals version start of {1}. The The actualsStart time provided is before Actuals version start
actualsStart should come after {1}. time.

Error The actualsEnd of {0} is after the Actuals version end of {1}. The actualsEnd The actualsEnd time provided is going beyond Actuals version
should come before {1}. end time.

Error Invalid "{0}" value "{1}". The value must be "1" or "0". The user provided something other than "0" or "1" as a value
for a boolean property.

Error Invalid {0} {1}. The user provided an invalid value.

Error {0} is NOT allowed as name. Reserved word "this", word ending with "(+)" or "(-)" has been
provided as level name.

Error Id "{0}" does not exist. Provided entity does not exist in Planning.

Warning The level {0} cannot be moved to another parent while User attempts to move level without proceedWithWarning="1".
proceedWithWarnings=0. proceedWithWarning="1" means version visibility, attribute
mapping and data will be adjusted to match with new parent
level.

Warning The actuals availability range was reduced for level {0}. The actuals data Actuals availability range was reduced. Data outside of the
excluded from the range has been deleted. range gets deleted.

Warning deleteWorkflowSilently is a global flag. It should be in the levels tag. Delete workflow silently is a global flag. It belongs in the levels
tag, not in another tag.

Warning deleteActualsSilently is a global flag. It should be in the levels tag. Delete actuals silently is a global flag. It belongs in the levels
tag, not in another tag.

Warning Levels can not be modified because there are unpublished changes. Planning has pending changes for admin publishing.

1.4.3.46 | propagateToDescendants behavior during UpdateLevels requests

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 404/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

The updateLevels API contains a boolean propagateToDescendants attribute for workflow, Level Dimension, Level Attribute, Level Version, and Level Actuals.
PropagateToDescendants handles how changes flow from a parent to its children. During an updateLevels request enabling or disabling
propagateToDescendants has different affects depending on where it is used. The ProceedWithWarnings attribute also generates different results depending on
what changes as part of an updateLevels request.

Workflow

setting propagateToDescendants result

inWorkflow=0 =1 The current level and all its children are disabled

inWorkflow=0 =0 UpdateLevels will error out.

inWorkflow=1 =0 or =1 Impacts the current level. No change for descendants.

Level Dimension

setting propagateToDescendants result

A level has a =1 The parent dimension and its child dimensions will change. First, propagateToDescendants is performed,
dimension. then specific dimension changes are executed in the children.

A level has a =0 updateLevels updates dimensions for the current level only.
dimension.

Level Attribute

setting propagateToDescendats result

Child attributes are compatible. =1 Only the current attributes will change.

Child attributes are not compatible. =1 The current level along with all its child attributes will change

Child attributes are compatible. =0 Only the current attributes will change.

Child attributes are not compatible. =0 updateLevels will error out.

Level Version

setting propagateToDescendants result

Version is unavailable for a parent. =1 The version will be unavailable for the current level and all its children.

Version is unavailable for a parent. =0 updateLevels will error out.

Version is available for a parent. =1 The version will be available for the current level and all its children.

Version is available for a parent. =0 The version will be available for the current level only.

Level Actuals

setting propagateToDescendants result

Parent actuals shrinks (the number of days reduces). =1 Actuals for the current level and all its children will shrink.

Parent actuals shrinks (the number of days reduces). =0 updateLevels will error out.

Parent actuals expands (the number of days increases). =1 Actuals for the current level expands. Children are not impacted.

Parent actuals expands (the number of days increases). =0 Actuals for the current level expands. Children are not impacted.

proceedWithWarnings

setting proceedWithWarnings result

Current level proceedWithWarnings=0 updateLevels will error out.


changes

Current level proceedWithWarnings=1


Dimension: Level will move to a new parent with its dimension values. Dimension mapping is not
changes
changed for the moved level or its descendants due to re-parentage
Parentage: The moved level will have a new parent and the level order will also change.
Version : Version visibility changes to make it compatible with the new parent level.
Actuals: The actuals start/end time changes to make it compatible with the new parent level.
Attributes: Attribute mapping will change to the parent's attribute's values if it is not compatible.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 405/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

1.4.3.47 | updateUser

Category Metadata modification

Description Update a user(s). If successful, the API will return a message for the user that has just been updated.

Permissions Required To Invoke User Permission

Parameters Required On Request Credentials

This method's request contains a credentials tag to identify and authorize the calling user. User must have "User Permission" permission to update the user(s).

This method does not control or update a user's access rules (dimension access control).

Important: This method does not function following user synchronization from Workday. It only allows assigning permission sets and level access before user
synchronization occurs.

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="updateUser" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd" />
<users>
<user
guid="B9ADBCB81AA2F9BAE040307F02092C2E"
email="[email protected]"
name="update name"
password="new Password"
alternateEmail="[email protected]"
samlFedId="1234"
permissionSetId="1"
ownedLevels="2,3,7,11"
timeZone="America/Mexico_City"
/>
</users>
</call>

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

user element

Tag Name user

Description Specifies a user or users to update.

Attributes of the Element

Attribute Name Required? Value Example

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 406/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

guid Y A globally-unique identifier for the user. This identifier will never change B9ADBCB81AA2F9BAE040307F02092C2E
for this user, even if their login or name changes in the future. (The guid is
also covered in the exportUsers API)

email N [email protected]
The email address for this user. Uniqueness is required. The only allowed
characters are a-z, A-Z, 0-9, - and .

This email address indicates the username.

name N The name of this user. Melvin Morsmere

password N The password of this user. If you are updating a user who is in a multi- newpassword
instance environment you can only specify password changes in their
default instance.

N The alternate email address for this user. We automatically select this [email protected]
alternateEmail
option and populate with the email ID of the user in the User Details

Available in API section.

v27

N The SAML federation ID for this user. 1234, [email protected]


samlFedId

Available in API
v27

N The internal system ID of the permission set assigned to this user. 3


permissionSetId

Available in API
v25+

N The internal system ID of the role assigned to this user. (The roleId 3
roleId
attribute is also covered in the exportRoles API.)

Available in API
v25 and earlier

Not available in
API v25+

ownedLevels N The internal system ID for the levels separated by comma. (The 5,10,13
ownedLevels attribute is also covered in the exportLevels API.)

timeZone N The time zone of the user. US/Pacific

Contents of the Element

(none)

Response Format

<?xml version='1.0' encoding='UTF-8'?>


<response success="true">
<output>
<result>
<updated_users>
<user success="true" message="user [email protected] was updated successfully."/>
</updated_users>
</result>
</output>
</response>

response element

Tag Name response

Attributes of the Element

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true
warning messages in their response.

Contents of the Element

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 407/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

A single result element with created_user or updated_user status elements depending on whether a createUser or updateUser call was made, respectively.

result element

Tag Name result

Description Container for one or more status elements.

Attributes of the Element

Attribute Name Required? Value Example

(none)

Contents of the Element

One or more created_user or updated_user status elements depending on whether a createUser or updateUser call was made, respectively.

updated_users element

Tag Name updated_users

Description Represents a message sent from the system back to the caller.

Attributes of the Element

Attribute Name Required? Value Example

user success Y The status returned by the call. Can be true or false. true

message Y The status message. user [email protected] was updated successfully.

Contents of the Element

One subscriptions element.

1.4.4 | Data Submission Methods

1.4.4.1 | importConfigurableModelData

Category Data submission

Description Inserts, replaces, or updates data in a modeled sheet.

Permissions Required To Invoke Import

Parameters Required On Request Credentials, ImportDataOptions, Version, Sheet, RowData

This method's request contains the parameters that will be used to determine which sheet and which version will receive the supplied rows of data.

This method can:

Append new rows onto the sheet.


Replace all rows currently on the modeled sheet with the import.
Replace all data in the sheet, but only for imported levels
Update existing rows by matching rows from the import with an import key.
Update existing rows by matching rows from the import with an import key, and add new rows.

Each invocation of this API call must contain exactly one element of each of the listed types:

credentials
importDataOptions
version
sheet
rowData

Note: A mismatch between the number of pipe characters ( | ) in the header and the data will cause an error for API v30 or higher.

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="importConfigurableModelData" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd" instanceCode="INSTANCE1"/>
<importDataOptions planOrActuals="Plan" allowParallel="false" moveBPtr="false" useMappings="false" replaceExisting="2"/>
<version name="Budget 2014" isDefault="false" />
<sheet name="Personnel" isUserAssigned="false" />
<rowData>

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 408/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

<header>Level|Region|Title|JobCode|Benefits|per|Last Name|First Name|ID|Start|End|Hr/Week|Pay Rate|Pay Rate Display Column</header>


<rows>
<row>Corporate Plan|Any|CEO|E1|Yes|Yr|Topdog|Andy|1000|12/20/2013|12/30/2014|80|500,000.12|888,888</row>
</rows>
</rowData>
</call>

Request Format for Updating Existing Rows with importKey

<?xml version='1.0' encoding='UTF-8'?>


<call method="importConfigurableModelData" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd"instanceCode="INSTANCE1"/>
<importDataOptions planOrActuals="Plan" replaceExisting="3" importKey="Region" allowParallel="false" moveBPtr="false" useMappings="false"/>
<version name="Budget 2014" isDefault="false" />
<sheet name="Personnel" isUserAssigned="false" />
<rowData>
<header>Plan|Region|Benefits|per</header>
<rows>
<row>Europe Sales|W-US|Yes|Hr</row>
</rows>
</rowData>
</call>

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, time period names, and
date formatting). The locale is also used to specify the language in which any system
messages in the response should appear. If not specified, en_US (American English) is
used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

importDataOptions element

Tag Name importDataOptions

Description Specifies the options to be used when performing the import.

Attributes of the Element

Attribute Name Required? Value Example

planOrActuals Y Set to one of Plan or Actuals to specify the type of data being imported. If this setting is in conflict with Plan
the version specified in the Version tag, the Version tag's value takes precedence and this setting is
ignored.

moveBPtr N Used only when the data being imported has a set of timespan numbers of each row. If moveBPtr is set false
to true, the import will move the actuals availability pointer in the actuals version to be the latest time
period found in the imported data. If set to false, the import will not affect which time periods show
actuals on any version. This attribute must be set to false if planOrActuals is set to Plan.

allowParallel Y If set to true, then an import will proceed even if there is already another actuals or transactions import false
in process for this instance. If set to false, then an attempt to import will fail if there is already an actuals
or transactions import being processed for this instance.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 409/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

useMappings N Specifies whether to use import mappings for accounts, plans and dimension values inside the row false
elements. Considered true by default. If false then the internal identifiers should be used: accounts are
identified by code, levels and dimension values by name.

replaceExisting N true
Set to "1" or "true" to replace all existing rows on all levels with the new rows being imported(i.e. erase
all previously existing rows on all levels). Only users with the Import to All Locations permission can
use this option.

Set to "0" or "false" to append the imported rows to the existing rows, even if the new rows are
duplicates.

Set to "2" to replace the existing rows in the modeled sheet with the new rows being imported, but only
for levels which are being imported. Levels which do not have any unsplit rows in the uploaded
spreadsheet will not have their existing rows removed, unless the row was a split of a row that is being
replaced by the upload.

replaceExisting examines the used dimensions, and if data exists in the same level, account, time
period, and version. If a row key exists, we match to the row key column or columns, as well.

If data exists in the system at the same location, the import replaces it. This replacement occurs row by
row. The import does not replace everything at once. Unmatched import rows append to the sheet.

For example, you perform two imports. Your first import file loads data that your second import file does
not contain. That existing data will remain after the second import.

If you want to delete all of the data in a particular column, include the column but leave its column
values blank. Column values for unmentioned columns remain unaltered.

Set to "3" to update existing rows in the modeled sheet to reflect the new rows being imported. A
warning will be returned if any row does not match an existing row. This mode requires an importKey.
Sheets with Allow splits selected do not support updates.

Set to "4" to update existing rows in the modeled sheet to reflect the new rows being imported, and
insert new rows for any which do not match an existing row. This mode requires an importKey. Only
required columns are Import Key, Level, and any text selectors, even when not adding new rows.
Sheets with Allow splits selected do not support updates.

Default value is true.

importKey N Level
The modeled sheet column name to use as the import key when updating modeled sheet rows.
Adaptive Planning uses the import key column to match each row in the import to rows in the modeled
sheet. The import key value of every row must be unique.

This attribute can only be used when replaceExisting is "3" or "4".

Import key columns can be one of the following:

a level column
a dimension column

includeContext N Specifies whether messages may include the context block. Values are false (never show context) or false
true (show context if appropriate). If not specified, true is assumed.

displayNameEnabled N false
displayNameEnabled=true indicates API should expect Account Code, Level Code, Dimension Code
Only available in API and Dimension Name column in the payload when the Enable Display Name setting is ON for the
v31+ for instances instance.
that enable display
displayNameEnabled=false indicates API should continue following pre- v30 API contract even when
name.
the Enable Display Name setting is ON for the instance.

The default value for displayNameEnabled is "false".

Contents of the Element

(none)

version element

Tag Name version

Description Indicates which version should be used to receive the requested data. A version must be provided for each call.

Attributes of the Element

Attribute Required? Value Example


Name

name N The name of the version to be used to receive the data. Only one version can be accessed within a single API call. Budget
If a name is not provided, the isDefault flag must be set to true on this element. 2014

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 410/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

isDefault N If the caller wishes to access the current default version of the instance regardless of its name, this attribute can be false
set to true, in which case the name attribute of the tag (if present) is ignored. Otherwise, if this value is false or if
this attribute is not present, a version with the supplied name must exist and be accessible to the user in order for
this call to succeed.

Contents of the Element

(none)

sheet element

Tag Name sheet

Description Indicates which sheet should receive the imported data. Each API call can target only one sheet's data.

Attributes of the Element

Attribute Required? Value Example


Name

name Y The name of the sheet to which the data will be imported. Personnel

isUserAssigned N Indicates the sheet is a user-assigned sheet. If not specified, defaults to false, which indicates it's a level- false
assigned sheet.

Contents of the Element

(none)

rowData element

Tag Name rowData

Description Container for the rows of data being imported.

Attributes of the Element

(none)

Contents of the Element

Exactly one header element and exactly one rows element.

header element

Tag Name header

Description Specifies the names and order of the columns of the data in the corresponding rows element.

Attributes of the Element

(none)

Contents of the Element

A line of text with vertical-bar-separated column names. These column names must correspond to the names of the dimensions or fields on the sheet, or to the
codes of the time periods that can contain data. They are identical to the column names found in the Import Template for the sheet to which the data is being
imported, with each column header separated from the next by a vertical bar or pipe symbol | .

rows element

Tag Name rows

Description Container for one or more row elements.

Attributes of the Element

(none)

Contents of the Element

One or more row elements.

row element

Tag Name row

Description Data for a single row being imported.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 411/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Attributes of the Element

(none)

Contents of the Element

Data for the fields in a single row being imported, each field's value separated by a vertical bar or pipe symbol. The data fields must be in the same order as
the line in the header element. If numbers in the values use thousands separators, they are assumed to be the comma separators used in the locale specified
in the credentials of the request.

Response Format
These are examples of responses for successful and unsuccessful importing of data.

Success Example

<?xml version='1.0' encoding='UTF-8'?>


<response success="true">
<messages>
<message key="modeled-import-success">Personnel import successful. Rows imported: 1</message>
<message key="modeled-import-replace">All existing rows were replaced.</message>
</messages>
</response>

Failed (with context)

<?xml version='1.0' encoding='UTF-8'?>


<response success="false">
<messages>
<message key="modeled-import-failed">The Personnel import has failed.</message>
<message key="error-import">Import Failed with the following error: 1 Error(s) Occurred.</message>
<message key="import-detail">Additional information:</message>
<message key="warning-nonexistent-dimension-value">Warning: No data was imported for rows with the following dimension values because the dimension values
<message key="invalid-plan-choice-withCoordinate">
<context>
<col header="Plan" value="Development1" />
<col header="Region" value="C-US" />
<col header="Title" value="CEO" />
<col header="JobCode" value="E1" />
<col header="Benefits" value="Yes" />
<col header="per" value="Yr" />
<col header="Last Name" value="Topdog" />
<col header="First Name" value="Andy" />
<col header="ID" value="1000" />
<col header="Start" value="12/20/2013" />
<col header="End" value="12/30/2014" />
<col header="Hr/Week" value="80.0" />
<col header="Pay Rate" value="500000.12" />
<col header="Pay Rate Display Column" value="888,888" />

</context>
Invalid Level Choice: Development1 on row 1 column A

</message>
</messages>
</response>

Failed (no context)

<?xml version='1.0' encoding='UTF-8'?>


<response success="false">
<messages>
<message key="modeled-import-failed">The Personnel import has failed.</message>
<message key="error-import">Import Failed with the following error: 1 Error(s) Occurred.</message>
<message key="import-detail">Additional information:</message>
<message key="warning-nonexistent-dimension-value">Warning: No data was imported for rows with the following dimension values because the dimension values
<message key="invalid-plan-choice-withCoordinate">Invalid Level Choice: Development1 on row 1 column A</message>

</messages>
</response>

response element

Tag Name response

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 412/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Attributes of the Element

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true
warning messages in their response.

Contents of the Element

A single optional messages element.

messages element

Tag Name messages

Description Container for one or more message elements.

Attributes of the Element

(none)

Contents of the Element

One or more message elements.

message element

Tag Name message

Description Represents a message being sent from the system back to the caller. Messages are used for error messages when requests do
not succeed, for warning messages when requests do succeed, and for confirmation messages upon success.

Attributes of the Element

Attribute Required? Value Example


Name

key N When given, a key is a way to identify a particular message or type of message, useful for purposes of invalid-
automated error logging and recovery in client programs. Keys do not change under different locales of attributevalueid
requests, even when the language of the message changes. Keys also are unlikely to change in the future
due to wording adjustments or terminology changes.

Contents of the Element

1. The text of the message. This text is in the language of the locale specified on the request (assuming that locale is supported). The text may also
contain variable information such as the number of rows which were processed, or the particular column or value that caused an error.
2. An optional context element.

context element

Tag Name context

Description Container for one or more col elements.

Attributes of the Element

Attribute Name Required? Value Example

none

Contents of the Element

One or more col elements.

col element

Tag Name col

Description Represents the context for the message. Gives a header/value pair so the row generating the message can be identified.

Attributes of the Element

Attribute Name Required? Value Example

header Y The header of the column. "Account"

value Y The value in the column. "GL-29482-38233"

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 413/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Contents of the Element

(none)

1.4.4.2 | importCubeData

Category Data submission

Description Inserts or replaces data in a cube sheet. This method can also be used to delete data from a cube sheet by importing zeroes to
locations in the cube. Importing a zero into a cube sheet will erase the data at the location of the zero.

Permissions Import
Required To
Invoke

Parameters Credentials, ImportDataOptions, Version, Sheet, RowData


Required On
Request

This method's request contains the parameters that will be used to determine which sheet and which version will receive the supplied rows of data. This method can
also be used to delete data from a cube sheet by importing zeroes to locations in the cube. Importing a zero into a cube sheet will erase the data at the location of
the zero.

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="importCubeData" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd" instanceCode="INSTANCE1"/>
<importDataOptions planOrActuals="Plan" allowParallel="false" moveBPtr="false"/>
<version name="Budget 2014" isDefault="false" />
<sheet name="Sales Cube" isUserAssigned="false" />
<rowData>
<header>ProductFurniture|CountryRegion|FabricationMachine|Customer|Account|Level|06/2014|07/2014|08/2014|09/2014|01/2015</header>
<rows>
<row>Coffee table|Argentina|Do-All 15 Vertical|Aeropostale|Price|Corporate Plan|0|0|0|0|0</row>
</rows>
</rowData>
</call>

Each invocation of this API call must contain exactly one element of each of the listed types:

credentials
importDataOptions
version
sheet
rowData

Note: A mismatch between the number of pipe characters ( | ) in the header and the data will cause an error for API v30 or higher.

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, time period names, and
date formatting). The locale is also used to specify the language in which any system
messages in the response should appear. If not specified, en_US (American English) is
used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 414/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

importDataOptions element

Tag Name importDataOptions

Description Specifies the options to be used when performing the import.

Attributes of the Element

Attribute Name Required? Value Example

planOrActuals Y Set to one of "Plan" or "Actuals" to specify the type of data being imported. If this setting is in conflict Plan
with the version specified in the Version tag, the Version tag's value takes precedence and this setting
is ignored.

moveBPtr N Used only when the planOrActuals attribute is set to Actuals. If moveBPtr is set to true, the import will false
move the actuals availability pointer in the actuals version to be the latest time period found in the
imported data. If set to false, the import will not affect which time periods show actuals on any version.
This attribute must be set to false if planOrActuals is set to Plan.

allowParallel Y Used only when the planOrActuals attribute is set to Actuals. If set to true, then an import will proceed false
even if there is already another actuals or transactions import in process for this instance. If set to false,
then an attempt to import will fail if there is already an actuals or transactions import being processed
for this instance.

useMappings N Specifies whether to use import mappings for accounts, plans and dimension values inside the row false
elements. Considered true by default. If false then the internal identifiers should be used: accounts are
identified by code, levels and dimension values by name.

includeContext N Specifies whether messages may include the context block. Values are false (never show context) or false
true (show context if appropriate). If not specified, true is assumed.

displayNameEnabled N false
displayNameEnabled=true indicates importCubeData should expect Account Code, Level Code,
Only available in API Dimension Code, and Dimension Name Column in the payload when Enable Display Name is ON for
v30+ for instances the instance.
that enable display
displayNameEnabled=false indicates the importCubeData API should continue following the pre-v30
name.
API contract even when Enable Display Name is ON for the instance. The importCubeData API ignores
the display name properties Account Code, Level Code, Dimension Code, and Dimension Name
Column.

The default value for displayNameEnabled is "false".

Contents of the Element

(none)

version element

Tag Name version

Description Indicates which version should be used to receive the requested data. A version must be provided for each call.

Attributes of the Element

Attribute Required? Value Example


Name

name N The name of the version to be used to receive the data. Only one version can be accessed within a single API call. Budget
If a name is not provided, the isDefault flag must be set to true on this element. 2012

isDefault N If the caller wishes to access the current default version of the instance regardless of its name, this attribute can be false
set to true, in which case the name attribute of the tag (if present) is ignored. Otherwise, if this value is false or if
this attribute is not present, a version with the supplied name must exist and be accessible to the user in order for
this call to succeed.

Contents of the Element

(none)

sheet element

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 415/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Tag Name sheet

Description Indicates which sheet should receive the imported data. Each API call can target only one sheet's data.

Attributes of the Element

Attribute Required? Value Example


Name

name Y The name of the sheet to which the data will be imported. Personnel

isUserAssigned N Indicates the sheet is a user-assigned sheet. If not specified, defaults to false, which indicates it's a level- false
assigned sheet.

Contents of the Element

(none)

rowData element

Tag Name rowData

Description Container for the rows of data being imported.

Attributes of the Element

(none)

Contents of the Element

Exactly one header element and exactly one rows element.

header element

Tag Name header

Description Specifies the names and order of the columns of the data in the corresponding rows element.

Attributes of the Element

(none)

Contents of the Element

A line of text with vertical-bar-separated column names. These column names must correspond to the names of the dimensions or fields on the sheet, or to
time period codes that can contain data. They are identical to the column names found in the Import Template for the sheet to which the data is being imported,
with each column header separated from the next by a vertical bar or pipe symbol.

rows element

Tag Name rows

Description Container for one or more row elements.

Attributes of the Element

(none)

Contents of the Element

One or more row elements.

row element

Tag Name row

Description Data for a single row being imported.

Attributes of the Element

(none)

Contents of the Element

Data for the fields in a single row being imported, each field's value separated by a vertical bar or pipe symbol. The data fields must be in the same order as
the line in the header element. If numbers in the values use thousands separators, they are assumed to be the comma separators used in the locale specified
in the credentials of the request.

Response Format

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 416/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

These are examples of responses for successful and unsuccessful importing of cube data.

Success Example

<?xml version='1.0' encoding='UTF-8'?>


<response success="true">
<messages>
<message key="warning-no-data-imported-dimension-unmapped">Warning: Row 3 was not imported because Coffeee table is unmapped.</message>
</messages>
</response>

Failed (with context)

<?xml version='1.0' encoding='UTF-8'?>


<response success="false">
<messages>
<message key="err-incomplete-cube-row">
<context>
<col header="ProductFurniture" value="Coffee table" />
<col header="CountryRegion" value="" />
<col header="Account" value="Do-All 15 Vertical" />
<col header="Level" value="Aeropostale" />
<col header="06/2014" value="Price" />
<col header="07/2014" value="Corporate Plan" />
<col header="08/2014" value="0.0" />
<col header="09/2014" value="0.0" />
<col header="01/2015" value="0.0" />

</context>
Row 1 is missing a value.

</message>
<message key="err-no-rows">You must import at least one row of data.</message>
</messages>
</response>

Failed (no context)

<?xml version='1.0' encoding='UTF-8'?>


<response success="false">
<messages>
<message key="err-incomplete-cube-row">Row 1 is missing a value.</message>
<message key="err-no-rows">You must import at least one row of data.</message>

</messages>
</response>

response element

Tag Name response

Attributes of the Element

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true
warning messages in their response.

Contents of the Element

A single optional messages element.

messages element

Tag Name messages

Description Container for one or more message elements.

Attributes of the Element

(none)

Contents of the Element

One or more message elements.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 417/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

message element

Tag Name message

Description Represents a message being sent from the system back to the caller. Messages are used for error messages when requests do
not succeed, for warning messages when requests do succeed, and for confirmation messages upon success.

Attributes of the Element

Attribute Required? Value Example


Name

key N When given, a key is a way to identify a particular message or type of message, useful for purposes of invalid-
automated error logging and recovery in client programs. Keys do not change under different locales of attributevalueid
requests, even when the language of the message changes. Keys also are unlikely to change in the future
due to wording adjustments or terminology changes.

Contents of the Element

The text of the message. This text is in the language of the locale specified on the request (assuming that locale is supported). The text may also
contain variable information such as the number of rows which were processed, or the particular column or value that caused an error.
An optional context element.

context element

Tag Name context

Description Container for one or more col elements.

Attributes of the Element

Attribute Name Required? Value Example

none

Contents of the Element

One or more col elements.

col element

Tag Name col

Description Represents the context for the message. Gives a header/value pair so the row generating the message can be identified.

Attributes of the Element

Attribute Name Required? Value Example

header Y The header of the column. "Account"

value Y The value in the column. "GL-29482-38233"

Contents of the Element

(none)

1.4.4.3 | importStandardData

Category Data submission

Description Inserts or replaces data in standard accounts.

Permissions Required To Invoke Import

Parameters Required On Request Credentials, ImportDataOptions, Version, RowData

This method's request contains the parameters that will be used to determine which version will receive the supplied rows of data. Data can be imported into any
standard account (GL Account, Custom Account, Assumption, or Exchange Rate) regardless of whether the account has been placed onto a sheet.

Important: importStandardData can't import to accounts that use Data Entry for Override Formula Setting.

Request Format

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 418/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

<?xml version='1.0' encoding='UTF-8'?>


<call method="importStandardData" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd" instanceCode="INSTANCE1"/>
<importDataOptions planOrActuals="Plan" allowParallel="false" moveBPtr="false" useMappings="false" />
<version name="Budget 2004" isDefault="false" />
<rowData>
<header>Account|Level|Split Label|Product|Region|11/2005|01/2006</header>
<rows>
<row>70110|Corporate Plan||Bunnyrabbit Toy|Western-US|2037|4032</row>
</rows>
</rowData>
</call>

Each invocation of this API call must contain exactly one element of each of the listed types:

credentials
importDataOptions
version
rowData
header
rows

Note: A mismatch between the number of pipe characters ( | ) in the header and the data will cause an error for API v30 or higher.

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, time period names, and
date formatting). The locale is also used to specify the language in which any system
messages in the response should appear. If not specified, en_US (American English) is
used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

importDataOptions element

Tag Name importDataOptions

Description Specifies the options to be used when performing the import.

Attributes of the Element

Attribute Name Required? Value Example

planOrActuals Y Set to one of "Plan" or "Actuals" to specify the type of data being imported. If this setting is in conflict Plan
with the version specified in the Version tag, the Version tag's value takes precedence and this setting
is ignored.

moveBPtr N Used only when the planOrActuals attribute is set to Actuals. If moveBPtr is set to true, the import will false
move the actuals availability pointer in the actuals version to be the latest time period found in the
imported data. If set to false, the import will not affect which time periods show actuals on any version.
This attribute must be set to false if planOrActuals is set to Plan.

allowParallel Y Used only when the planOrActuals attribute is set to Actuals. If set to true, then an import will proceed false
even if there is already another actuals or transactions import in process for this instance. If set to false,

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 419/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

then an attempt to import will fail if there is already an actuals or transactions import being processed
for this instance.

useMappings N Specifies whether to use import mappings for accounts, plans and dimension values inside the row false
elements. Considered true by default. If false then the internal identifiers should be used: accounts are
identified by code, levels and dimension values by name.

includeContext N Specifies whether messages may include the context block. Values are false (never show context) or false
true (show context if appropriate). If not specified, true is assumed.

displayNameEnabled N false
displayNameEnabled=true indicates importStandardData should expect Account Code, Level Code,
Only available in API Dimension Code, and Dimension Name Column in the payload when Enable Display Name is ON for
v30+ for instances the instance.
that enable display
displayNameEnabled=false indicates the importStandardData API should continue following the pre-
name.
v30 API contract even when Enable Display Name is ON for the instance. The importStandardData API
ignores the display name properties Account Code, Level Code, Dimension Code, and Dimension
Name Column.

The default value for displayNameEnabled is "false".

Contents of the Element

(none)

version element

Tag Name version

Description Indicates which version should be used to receive the requested data. A version must be provided for each call.

Attributes of the Element

Attribute Required? Value Example


Name

name N The name of the version to be used to receive the data. Only one version can be accessed within a single API call. Budget
If a name is not provided, the isDefault flag must be set to true on this element. 2014

isDefault N If the caller wishes to access the current default version of the instance regardless of its name, this attribute can be false
set to true, in which case the name attribute of the tag (if present) is ignored. Otherwise, if this value is false or if
this attribute is not present, a version with the supplied name must exist and be accessible to the user in order for
this call to succeed.

Contents of the Element

(none)

rowData element

Tag Name rowData

Description Container for the rows of data being imported.

Attributes of the Element

(none)

Contents of the Element

Exactly one header element and exactly one rows element.

header element

Tag Name header

Description Specifies the names and order of the columns of the data in the corresponding rows element.

Attributes of the Element

(none)

Contents of the Element

A line of text with vertical-bar-separated column names. These column names must correspond to the names of the dimensions or fields on the sheet, or to
time period codes that can contain data. They are identical to the column names found in the Import Template for the sheet to which the data is being imported,
with each column header separated from the next by a vertical bar or pipe symbol.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 420/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

rows element

Tag Name rows

Description Container for one or more row elements.

Attributes of the Element

(none)

Contents of the Element

One or more row elements.

row element

Tag Name row

Description Data for a single row being imported.

Attributes of the Element

(none)

Contents of the Element

Data for the fields in a single row being imported, each field's value separated by a vertical bar or pipe symbol. The data fields must be in the same order as
the line in the header element. If numbers in the values use thousands separators, they are assumed to be the comma separators used in the locale specified
in the credentials of the request.

Response Format
These are examples of responses for successful and unsuccessful importing of standard account data.

Success Example

<?xml version='1.0' encoding='UTF-8'?>


<response success="true"></response>

Failed (with context)

<?xml version='1.0' encoding='UTF-8'?>


<response success="false">
<messages>
<message key="error-empty-account">
<context>
<col header="Account" value="" />
<col header="Level" value="Corporate Plan" />
<col header="Split Label" value="" />
<col header="Product" value="Bunnyrabbit Toy" />
<col header="Region" value="Western-US" />
<col header="11/2005" value="2037" />
<col header="01/2006" value="4032" />

</context>
Account cannot be empty on row 1.

</message>
</messages>
</response>

Failed (no context)

<?xml version='1.0' encoding='UTF-8'?>


<response success="false">
<messages>
<message key="error-empty-account">Account cannot be empty on row 1.</message>

</messages>
</response>

response element

Tag Name response

Attributes of the Element

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 421/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true
warning messages in their response.

Contents of the Element

A single optional messages element.

messages element

Tag Name messages

Description Container for one or more message elements.

Attributes of the Element

(none)

Contents of the Element

One or more message elements.

message element

Tag Name message

Description Represents a message being sent from the system back to the caller. Messages are used for error messages when requests do
not succeed, for warning messages when requests do succeed, and for confirmation messages upon success.

Attributes of the Element

Attribute Required? Value Example


Name

key N When given, a key is a way to identify a particular message or type of message, useful for purposes of invalid-
automated error logging and recovery in client programs. Keys do not change under different locales of attributevalueid
requests, even when the language of the message changes. Keys also are unlikely to change in the future
due to wording adjustments or terminology changes.

Contents of the Element

1. The text of the message. This text is in the language of the locale specified on the request (assuming that locale is supported). The text may also
contain variable information such as the number of rows which were processed, or the particular column or value that caused an error.
2. An optional context element.

context element

Tag Name context

Description Container for one or more col elements.

Attributes of the Element

Attribute Name Required? Value Example

none

Contents of the Element

One or more col elements.

col element

Tag Name col

Description Represents the context for the message. Gives a header/value pair so the row generating the message can be identified.

Attributes of the Element

Attribute Name Required? Value Example

header Y The header of the column. "Account"

value Y The value in the column. "GL-29482-38233"

Contents of the Element

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 422/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

(none)

1.4.4.4 | importTransactions

Category Data submission

Description Inserts new transactions.

Permissions Required To Invoke Import

Parameters Required On Request Credentials, ImportTransactionsOptions, RowData

This method only applies if you have access to Transactions.

Note: You can only delete transactions during import. If you want to remove all transactions during import, consider importing one blank row and deleting the
remaining data.

This method can be used to delete existing transaction rows which match certain criteria, to insert new transaction rows into the system, or to do both actions in one
invocation (i.e. replace a set of transaction rows with another set of rows).

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="importTransactions" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_pwd" instanceCode="INSTANCE1"/>
<importTransactionsOptions allowParallel="false" useMappings="false"/>
<rowData>
<header>Posting Date|Transaction Type|Account|Plan|Transaction Amount</header>
<rows>
<row>01/02/2011|Invoice|70110|Marketing|100</row>
</rows>
</rowData>
</call>

Each invocation of this API call must contain exactly one element of each of the listed types:

credentials
importTransactionsOptions
rowData

Note: A mismatch between the number of pipe characters ( | ) in the header and the data will cause an error for API v30 or higher.

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, month names, and date
formatting). The locale is also used to specify the language in which any system messages
in the response should appear. If not specified, en_US (American English) is used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

importTransactionsOptions element

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 423/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Tag Name importTransactionsOptions

Description Specifies the options to be used when performing the import. If at least one of deleteStartDate, deleteEndDate, or
transactionTypes are specified, then this method call will attempt to delete any existing transactions which match
those specified criteria.

Attributes of the Element

Attribute Name Required? Value Example

deleteStartDate N If this method call is intended to delete some existing transactions, this attribute specifies the 11/01/2012
start date of the set of transactions to be deleted (inclusive). If not specified, all transactions
which have a date on or before the deleteEndDate (and which matches one of the optional
specified TransactionTypes) will be deleted.

deleteEndDate N If this method call is intended to delete some existing transactions, this attribute specifies the 12/31/2012
end date of the set of transactions to be deleted (inclusive). If not specified, all transactions
which have a date on or after the deleteStartDate (and which match one of the optional
specified TransactionTypes) will be deleted.

transactionTypes N A set of transaction types which will be deleted, separated by the pipe symbol. If not specified, Invoice|Purchase
all transactions given between deleteStartDate and deleteEndDate will be deleted. If no Order
deleteStartDate or deleteEndDate is specified, all transactions of the specified types will be
deleted regardless of their dates.

allowParallel Y If set to true, then an import will proceed even if there is already another actuals or transactions false
import in process for this instance. If set to false, then an attempt to import will fail if there is
already an actuals or transactions import being processed for this instance.

useMappings N Specifies whether to use import mappings for accounts, plans and dimension values inside the false
row elements. Considered true by default. If false then the internal identifiers should be used:
accounts are identified by code, levels and dimension values by name.

includeContext N Specifies whether messages may include the context block. Values are false (never show false
context) or true (show context if appropriate). If not specified, true is assumed.

displayNameEnabled N false
displayNameEnabled=true indicates API should expect Account Code, Level Code, Dimension
Only available in API Code and Dimension Name column in the payload when the Enable Display Name setting is
v31+ for instances ON for the instance.
that enable display
displayNameEnabled=false indicates API should continue following pre- v30 API contract even
name.
when the Enable Display Name setting is ON for the instance.

The default value for displayNameEnabled is "false".

Contents of the Element

(none)

rowData element

Tag Name rowData

Description Container for the rows of data being imported.

Attributes of the Element

(none)

Contents of the Element

Exactly one header element and exactly one rows element.

header element

Tag Name header

Description Specifies the names and order of the columns of the data in the corresponding rows element.

Attributes of the Element

(none)

Contents of the Element

A line of text with vertical-bar-separated column names. These column names must correspond to the names of the dimensions or fields on the sheet, or to
months that can contain data. They are identical to the column names found in the Import Template for the sheet to which the data is being imported, with each
column header separated from the next by a vertical bar or pipe symbol.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 424/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

rows element

Tag Name rows

Description Container for one or more row elements.

Attributes of the Element

(none)

Contents of the Element

One or more row elements.

row element

Tag Name row

Description Data for a single row being imported.

Attributes of the Element

(none)

Contents of the Element

Data for the fields in a single row being imported, each field's value separated by a vertical bar or pipe symbol. The data fields must be in the same order as
the line in the header element. If numbers in the values use thousands separators, they are assumed to be the comma separators used in the locale specified
in the credentials of the request.

Response Format
These are examples of responses for successful and unsuccessful importing of transaction data.

Success Example

<?xml version='1.0' encoding='UTF-8'?>


<response success="true">
<messages>
<message key="row-imported">1 row was imported.</message>
</messages>
</response>

Failed (with context)

<?xml version='1.0' encoding='UTF-8'?>


<response success="false">
<messages>
<message key="error-import">Import Failed with the following error: No transactions were imported or deleted during the import.</message>
<message key="import-detail">Additional information:</message>
<message key="warning-nonexistent-dimension-value">Warning: No data was imported for rows with the following dimension values because the dimension values
<message key="invalid-dimension-choice-withCoordinate">
<context>
<col header="Posting Date" value="01/02/2011" />
<col header="Transaction Type" value="Invoice12" />
<col header="Account" value="70110" />
<col header="Plan" value="Marketing" />
<col header="Transaction Amount" value="100.0" />

</context>
Invalid Dimension Choice: Invoice12 on row 1 column B

</message>
</messages>
</response>

Failed (no context)

<?xml version='1.0' encoding='UTF-8'?>


<response success="false">
<messages>
<message key="error-import">Import Failed with the following error: No transactions were imported or deleted during the import.</message>
<message key="import-detail">Additional information:</message>
<message key="warning-nonexistent-dimension-value">Warning: No data was imported for rows with the following dimension values because the dimension values
<message key="invalid-dimension-choice-withCoordinate">Invalid Dimension Choice: Invoice12 on row 1 column B</message>

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 425/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

</messages>
</response>

response element

Tag Name response

Attributes of the Element

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true
warning messages in their response.

Contents of the Element

A single optional messages element.

messages element

Tag Name messages

Description Container for one or more message elements.

Attributes of the Element

(none)

Contents of the Element

One or more message elements.

message element

Tag Name message

Description Represents a message being sent from the system back to the caller. Messages are used for error messages when requests do
not succeed, for warning messages when requests do succeed, and for confirmation messages upon success.

Attributes of the Element

Attribute Required? Value Example


Name

key N When given, a key is a way to identify a particular message or type of message, useful for purposes of invalid-
automated error logging and recovery in client programs. Keys do not change under different locales of attributevalueid
requests, even when the language of the message changes. Keys also are unlikely to change in the future
due to wording adjustments or terminology changes.

Contents of the Element

1. The text of the message. This text is in the language of the locale specified on the request (assuming that locale is supported). The text may also
contain variable information such as the number of rows which were processed, or the particular column or value that caused an error.
2. An optional context element.

context element

Tag Name context

Description Container for one or more col elements.

Attributes of the Element

Attribute Name Required? Value Example

none

Contents of the Element

One or more col elements.

col element

Tag Name col

Description Represents the context for the message. Gives a header/value pair so the row generating the message can be identified.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 426/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Attributes of the Element

Attribute Name Required? Value Example

header Y The header of the column. "Account"

value Y The value in the column. "GL-29482-38233"

Contents of the Element

(none)

1.4.4.5 | eraseActuals

Category Data submission

Description Erases numeric data in the specified time periods and accounts of an actuals version.

Permissions Required To Invoke Erase Data

Parameters Required On Request Credentials, EraseOptions

This method will erase numeric values from an actuals version for all levels of the specified set of accounts for a given time frame. It will not erase any formulas
(such as shared formulas, cell formulas, account formulas). It will delete those account splits that become empty as a result of the erase actuals process. An empty
split is one which contains no data, formulas, or cell notes. If erasing actuals results in the deletion of the last data from a split, that split will be deleted. This API will
leave splits untouched if they were empty prior to calling the API.

Request Format
To erase numeric values and newly-empty splits for the time periods between the start and the end from all general ledger accounts for all levels of the default
actuals version:

<?xml version='1.0' encoding='UTF-8'?>


<call method="eraseActuals" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_password"/>
<eraseOptions
accountType="GL" end="03/2013"
includeCellNotes="false" />
</call>

To erase numeric values and cell notes from a single cube sheet for all levels of a specific actuals version between the specified start and end:

<?xml version='1.0' encoding='UTF-8'?>


<call method="eraseActuals" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_password"/>
<eraseOptions
actualsVersionName="Actuals"
accountType="CUBE"
cubeSheetName="Sales Cube" end="03/2013"
includeCellNotes="true" />
</call>

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, time period names, and
date formatting). The locale is also used to specify the language in which any system
messages in the response should appear. If not specified, en_US (American English) is
used.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 427/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

eraseOptions element

Tag Name eraseOptions

Description Specifies the options to be used when erasing actuals.

Attributes of the Element

Attribute Name Required? Value Example

actualsVersionName N Required when there is more than one actuals version. If this instance contains the planning product Actuals
only, then EraseActuals will erase data from the one and only actuals version.

accountType Y Specifies if account type is general ledger ("GL"), custom ("CUSTOM") or cube sheet ("CUBE"). GL

cubeSheetName N Required if accountType="CUBE". Specifies the name of the cube sheet. Sales
Cube

start Y 01/2013
Specifies the code of the start time period of the actuals time range. The code must refer to a time
period at the time stratum of the account.

If you specify a cube sheet, the code must refer to a time period at the time stratum of the cube sheet.

If you specify a GL or custom account type, the code must refer to the default time stratum.
Note: For API v15+ the time period specified must align with the time stratum of the account. For
example, if the account has a time stratum of Quarters starting in January, then you cannot select
February as a start.

end Y 03/2013
Specifies the code of the end time period of the actuals time range. The code must refer to a time period
at the time stratum of the account.

If you specify a cube sheet, the code must refer to a time period at the time stratum of the cube sheet.

If you specify a GL or custom account type, the code must refer to the default time stratum.
Note: For API v15+ the time period specified must align with the time stratum of the account. For
example, if the account has a time stratum of Quarters starting in January, then you cannot select
February as an end.

includeCellNotes Y If set to "true", then EraseActuals will erase all cell notes in the selected version, account type and time true
range, regardless of whether it is also erasing the data from the cell. If "false", no cell notes will be
deleted.

Contents of the Element

(none)

Response Format

<?xml version="1.0" encoding="UTF-8"?>


<response success="true">
<messages>
<message key="erase-actuals-success">Successfully erased actuals data.</message>
<message key="erase-actuals-facts-deleted">4 facts deleted.</message>
<message key="erase-actuals-notes-deleted">2 notes deleted.</message>
<message key="erase-actuals-splits-deleted">1 splits deleted.</message>
</messages>
</response>

response element

Tag Name response

Attributes of the Element

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true
warning messages in their response.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 428/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Contents of the Element

A single optional messages element.

messages element

Tag Name messages

Description Container for one or more message elements.

Attributes of the Element

(none)

Contents of the Element

One or more message elements.

message element

Tag Name message

Description Represents a message being sent from the system back to the caller. Messages are used for error messages when requests do
not succeed, for warning messages when requests do succeed, and for confirmation messages upon success.

Attributes of the Element

Attribute Required? Value Example


Name

key N When given, a key is a way to identify a particular message or type of message, useful for purposes of automated warning-
error logging and recovery in client programs. Keys do not change under different locales of requests, even when invalid-
the language of the message changes. Keys also are unlikely to change in the future due to wording adjustments timespan-
or terminology changes. start

Contents of the Element

The text of the message. This text is in the language of the locale specified on the request (assuming that locale is supported). The text may also contain
variable information such as the number of rows which were processed, or the particular column or value which caused an error.

1.4.4.6 | eraseData

Supported in API v24 +.

Category Data submission

Description Erases plan or actuals data in the specified time periods for an account with optional filters for levels and accounts.

Permissions Required To Invoke Erase Data

Parameters Required On Request Credentials, EraseOptions

Erases numeric values from a plan or actuals version for the specified set of accounts for a given time frame. It will not erase any formulas (such as shared
formulas, cell formulas, account formulas). It deletes those account splits that become empty as a result of the erase process. An empty split is a split that contains
no data, formulas, or cell notes. If erasing results in the deletion of the last data from a split, that split will be deleted. This API leaves splits untouched if they were
empty prior to calling the API.

Note: The eraseData method provides the same capabilities as eraseActuals but also includes the ability to erase plan data, with additional control over specific
account-plan combinations that are targets. Cell notes matching the criteria will also be deleted.
Note: Import Capabilities > Erase Data is a superuser permission that enables erasing actuals or plan data across Adaptive Planning, including in locked levels.
Erase Data overrides Access Rules and level ownership restrictions. You can only delete data from calculated accounts with data entry override.
Note: This API validates time stratum on the accounts chosen.

Erasing Roll up Accounts


The Erase Data API doesn't erase data for roll up accounts. Include each account individually in your request.

Erasing Levels
If you pass a parent level in your request, the eraseData API only erases the data at the parent level and not child levels. You must include each level individually in
the API request.

Request Format
Requests reject unrecognized tags. Tags allow case insensitive matching. Example: <accounts>, <Accounts>, and <ACCOUNTS> are acceptable for the Accounts
element.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 429/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Erase Actuals for All Levels of the Default Actuals Version


To erase numeric values and newly-empty splits for the time periods between the start and the end from all general ledger accounts for all levels of the default
actuals version:

<?xml version="1.0" encoding="UTF-8"?>


<call method="eraseActuals" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_password" instanceCode="MYINSTANCE" locale="en_US"/>
<eraseOptions actualsVersionName="Actuals" accountType="GL" end="03/2013" includeCellNotes="false">
</eraseOptions>
</call>

To erase numeric values and cell notes from a single cube sheet for all levels of a specific actuals version between the specified start and end:

<?xml version="1.0" encoding="UTF-8"?>


<call method="eraseActuals" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_password"/>
<eraseOptions actualsVersionName="Actuals" accountType="CUBE" cubeSheetName="Sales Cube" end="03/2013" includeCellNotes="true" />
</eraseOptions>
</call>

Erase Actuals Data with Filters for Accounts on a Specific Level


For this example, actuals data in the actuals version ActualsSubVersion2013 for custom accounts WAT_Input_Custom and WAT_Test_Custom on the level QA will
be deleted.

<?xml version="1.0" encoding="UTF-8"?>


<call method="eraseData" callerName="test caller api name">
<credentials login="[email protected]" password="my_password" instanceCode="MYINSTANCE" locale="en_US" />
<eraseOptions actualsVersionName="ActualsSubVersion2013" accountType="CUSTOM" end="11/2010" includeCellNotes="true">
<filters>
<Accounts>
<Account code="WAT_Input_Custom"/>
<Account code="WAT_Test_Custom"/>
</Accounts>
<Levels>
<Level name="QA"/>
</Levels>
</filters>
</eraseOptions>
</call>

Erase Plan Data with a Filter to Delete from Specific Custom Accounts
For this example, the plan data in the plan version clone2013Budget for custom accounts SUM_TEXT and LAST_NB will be deleted.

<?xml version="1.0" encoding="UTF-8"?>


<call method="eraseData callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_password" instanceCode="MYINSTANCE1" locale="en_US"/>
<eraseOptions planVersionName="clone2013budget" accountType="CUSTOM" end="12/2013" includeCellNotes="true">
<filters>
<Accounts>
<Account code="SUM_TEXT"/>
<Account code="LAST_NB"/>
</Accounts>
</filters>
</eraseOptions>
</call>

Erase Plan Data with Filters to Delete from Specific Custom Accounts on Specific Levels
For this example, the plan data in the plan version clone2013Budget for custom accounts WA_SUM and SUM_SUM on the levels Development and Hosting will be
deleted.

<?xml version="1.0" encoding="UTF-8"?>


<call method="eraseData" callerName="test caller api name">
<credentials login="[email protected]" password="my_password" instanceCode="MYINSTANCE1" locale="en_US"/>
<eraseOptions planVersionName="clone2013Budget" accountType="CUSTOM" end="12/2013" includeCellNotes="true">
<filters>
<Accounts>
<Account code="WA_SUM"/>
<Account code="SUM_SUM"/>
</Accounts>
<Levels>

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 430/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

<Level name="Development"/>
<Level name="Hosting"/>
</Levels>
</filters>
</eraseOptions>
</call>

Erase Plan Data with Filters to Delete from a Specific Cube Account on a Specific Level
For this example, the plan data in the plan version 10YearBudget for cube account ExpenseCube.Units in the level WorldWide Sales will be deleted.

<?xml version="1.0" encoding="UTF-8"?>


<call method="eraseData" callerName="test caller api name">
<credentials login="[email protected]" password="my_password" instanceCode="MYINSTANCE1" locale="en_US" />
<eraseOptions planVersionName="10YearBudget" accountType="CUBE" cubeSheetName="Expense Cube" end="12/2017" includeCellNotes="true">
<filters>
<Accounts>
<Account code="ExpenseCube.Units" />
</Accounts>
<Levels>
<Level name="WorldWide Sales" />
</Levels>
</filters>
</eraseOptions>
</call>

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the
user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, time period names, and
date formatting). The locale is also used to specify the language in which any system
messages in the response should appear. If not specified, en_US (American English) is
used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

eraseOptions element

Tag Name eraseOptions

Description Specifies the options used when erasing actuals or plan data.

Attributes of the Element

Attribute Name Required? Value Example

actualsVersionName N ActualsSubVersion2013
Required for erasing Actuals data. Specifies the name of the actuals version to erase
data from.

Does not erase any formulas (such as shared formulas, cell formulas, account
formulas).

planVersionName N clone2013Budget
Required for erasing Plan data. Specifies the name of the plan version to erase data
from.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 431/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Does not erase any formulas (such as shared formulas, cell formulas, account
formulas).

accountType Y Specifies if account type is general ledger ("GL"), custom ("CUSTOM") or cube sheet GL
("CUBE").

cubeSheetName N Required if accountType="CUBE". Specifies the name of the cube sheet. Sales Cube

start Y 01/2013
Specifies the code of the start time period of the time range. The code must refer to a
time period at the time stratum of the account.

If you specify a cube sheet, the code must refer to a time period at the time stratum of
the cube sheet.

If you specify a GL or custom account type, the code must refer to the default time
stratum.
Note: The time period specified must align with the time stratum of the account. For
example, if the account has a time stratum of Quarters starting in January, then you
cannot select February as a start.

end Y 03/2013
Specifies the code of the end time period of the time range. The code must refer to a
time period at the time stratum of the account.

If you specify a cube sheet, the code must refer to a time period at the time stratum of
the cube sheet.

If you specify a GL or custom account type, the code must refer to the default time
stratum.
Note: The time period specified must align with the time stratum of the account. For
example, if the account has a time stratum of Quarters starting in January, then you
cannot select February as an end.

includeCellNotes Y If set to "true", then eraseData erases all cell notes in the selected version, account true
type, and time range (and account-level combinations matching the filters, if they are
specified), regardless of whether it also erases the data from the cell. If "false", no cell
notes will be deleted

displayNameEnabled N True
displayNameEnabled=true indicates eraseData should respect display name
Only available in API properties of code when Enable Display Name is ON for the instance.
v30+ for instances that
displayNameEnabled=false indicates the eraseData API should continue following the
enable display name.
pre-v30 API contract even when Enable Display Name is ON for the instance. The
eraseData API ignores the display name properties code.

The default value for displayNameEnabled is "false".

Contents of the Element

(none)

filters element

Tag Name Filters

Description Specifies the account and level filters to use when erasing data.

Attributes of the Element

Attribute Name Required? Value Example

Contents of the Element

One Accounts element, one Levels element, or both an Accounts element and a Levels element.

Accounts element

Tag Name Accounts

Description Container for one or more account elements of an eraseData filter.

Attributes of the Element

Attribute Name Required? Value Example

Contents of the Element

One or more Account elements.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 432/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Levels element

Tag Name Levels

Description Container for one or more Level elements of an eraseData filter.

Attributes of the Element

Attribute Name Required? Value Example

Contents of the Element

One or more Level elements.

Account element

Tag Name Account

Description The account that data will be erased from, specified by account code.

Attributes of the Element

Attribute Name Required? Value Example

code Y Specifies the account code for the account of the data being erased. WA_SUM

Contents of the Element

(none)

Level element

Tag Name Level

Description The level for the account data being erased, specified by Level name.

Attributes of the Element

Attribute Name Required? Value Example

name Y Specifies the level name for the account data being World Wide
erased. Sales

code N The code of the level. World Wide


Sales
Only available in API v30+ for instances that enable display Required when enable display name is turned on for an
name. instance.

Contents of the Element

(none)

Response Format

<?xml version="1.0" encoding="UTF-8"?>


<response success="true">
<messages>
<message key="erase-actuals-success">Successfully erased actuals data.</message>
<message key="erase-actuals-facts-deleted">4 facts deleted.</message>
<message key="erase-actuals-notes-deleted">2 notes deleted.</message>
<message key="erase-actuals-splits-deleted">1 splits deleted.</message>
</messages>
</response>

response element

Tag Name response

Attributes of the Element

Attribute Required? Value Example


Name

success Y Either true or false, indicating whether the API call was successful or not. Even successful calls may contain true
warning messages in their response.

Contents of the Element

A single optional messages element.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 433/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

messages element

Tag Name messages

Description Container for one or more message elements.

Attributes of the Element

(none)

Contents of the Element

One or more message elements.

message element

Tag Name message

Description Represents a message being sent from the system back to the caller. Messages are used for error messages when requests do
not succeed, for warning messages when requests do succeed, and for confirmation messages upon success.

Attributes of the Element

Attribute Required? Value Example


Name

key N When given, a key is a way to identify a particular message or type of message, useful for purposes of automated warning-
error logging and recovery in client programs. Keys do not change under different locales of requests, even when invalid-
the language of the message changes. Keys also are unlikely to change in the future due to wording adjustments timespan-
or terminology changes. start

Contents of the Element

The text of the message. This text is in the language of the locale specified on the request (assuming that locale is supported). The text may also contain
variable information such as the number of rows which were processed, or the particular column or value which caused an error.

1.4.4.7 | recalculateSheet

Supported in API v16 +

Category Data submission

Description Recalculate sheets with Recalculate on demand property.

Permissions Required To Invoke Sheet Edit Permission

Parameters Required On Request Credentials

This method's request contains a credentials tag to identify and authorize the calling user. User must have "Sheet Edit Permission" permission to recalculate.

Request Format

<?xml version='1.0' encoding='UTF-8'?>


<call method="recalculateSheet" callerName="a string that identifies your client application">
<credentials login="[email protected]" password="my_password"/>
<version name="Default Structure"/>
<sheet name="Expense Cube"/>
<level name="Corporate Plan"/>
</call>

version element - Throws an error if version is not specified.


sheet element - If no sheet element is specified, all sheets with recalculate on demand options are recalculated at the top level on given version. In this
case, level is ignored.
level element
If no level is specified, the sheet is recalculated at top level on given version.
If the user doesn't have access to the specified level, an error is thrown.
The sheet is recalculated for the level and its descendants on the given version.

credentials element

Tag Name credentials

Description All API calls must contain a single credentials element to identify the user invoking the API. The API call is then performed as
this user (any audit trail or history of actions in the system will show that this user performed the action), and therefore the

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 434/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

user must have the required permissions to perform the action in order for the API call to succeed.

Attributes of the Element

Attribute Required? Value Example


Name

login Y The login name of the user invoking the API method. This user must have the required [email protected]
permissions to invoke the method.

password Y The password of the user invoking the API method. my_password

locale N Specify the locale to be used to interpret incoming numbers and dates, and to format fr_FR
outgoing numbers and dates (using the proper thousands separator, time period names, and
date formatting). The locale is also used to specify the language in which any system
messages in the response should appear. If not specified, en_US (American English) is
used.

instanceCode N If the user specified in the credentials has access to more than one instance of Adaptive MYINSTANCE1
Planning, this attribute can be used to specify that the user is intending to access an
instance other than their default instance. If not specified, the user's default instance will be
used. To determine the available instance codes, use the exportInstances API.

Contents of the Element

(none)

version element

Tag Name version

Description Indicates which version should be used to receive the requested data. A version must be provided for each call.

Attributes of the Element

Attribute Name Required? Value Example

name N The name of the version. Default Structure

id N ID of the version. ID is considered only if name is not present. 4

Contents of the Element

(none)

sheet element

Tag Name sheet

Description Sheet defined by name or id

Attributes of the Element

Attribute Name Required? Value Example

name N The name of the sheet Expense Cube

id N ID of the sheet. ID is considered only if name is not present. 1

Contents of the Element

(none)

level element

Tag Name level

Description Level defined by name or id

Attributes of the Element

Attribute Name Required? Value Example

name N The name of the level Corporate Plan

id N ID of the level. Level is considered only if name is not present. 1

Contents of the Element

(none)

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 435/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Response Format

<?xml version="1.0" encoding="UTF-8"?>


<response success="true">
</response>

response element

Tag Name response

Description Level defined by name or id

Attributes of the Element

Attribute Required? Value Example


Name

success Y Either "true" or "false", indicating whether the API call was successful or not. Even successful calls may contain true
warning messages in their response.

Contents of the Element

A single optional messages element.

messages element

Tag Name messages

Description Container for one or more message elements.

Attributes of the Element

(none)

Contents of the Element

One or more message elements.

message element

Tag Name message

Description Represents a message being sent from the system back to the caller. Messages are used for error messages when requests do
not succeed, for warning messages when requests do succeed, and for confirmation messages upon success.

Attributes of the Element

Attribute Required? Value Example


Name

key N When given, a key is a way to identify a particular message or type of message, useful for purposes of invalid-
automated error logging and recovery in client programs. Keys do not change under different locales of attributevalueid
requests, even when the language of the message changes. Keys also are unlikely to change in the future
due to wording adjustments or terminology changes.

Contents of the Element

1. The text of the message. This text is in the language of the locale specified on the request (assuming that locale is supported). The text may also
contain variable information such as the number of rows which were processed, or the particular column or value that caused an error.
2. An optional context element.

1.4.5 | Sample Client Java Program

The following sample java program that calls the "exportAccounts" API method. The results of the API method call are printed to the screen. In a real application,
the XML data is parsed and the underlying account data is processed.

import java.net.HttpURLConnection;
import java.net.URL;

public class WebServiceClient {

/**
* Make an "exportAccounts" method call.
*/

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 436/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

public static void main(String[] args) throws Exception {


String request = "<?xml version='1.0' encoding='UTF-8'?>\n" +
"<call method=\"exportAccounts\">\n" +
" <credentials login=\"[email protected]\" password=\"my.pw\"/ callerName=\"test program\">\n" +
"</call>";

// Make a URL connection to the Adaptive Planning web service URL


URL url = new URL("https://api.adaptiveinsights.com/api/v14");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();

// Set the content type, the HTTP method, and tell the connection we expect output
conn.setRequestProperty("content-type", "text/xml;charset=UTF-8");
conn.setRequestMethod("POST");
conn.setDoOutput(true);

// Send the request


writeRequest(conn, request);

// Read the response


String response = readResponse(conn);

// Print it out
System.out.println(response);
}

/**
* Write the request to the given URLConnection
*/
private static void writeRequest(HttpURLConnection conn, String request) throws Exception {
conn.getOutputStream().write(request.getBytes("UTF-8"));
}

/**
* Read the response from the given URL Connection
*/
private static String readResponse(HttpURLConnection conn) throws Exception {
byte[] buffer = new byte[4096];
StringBuilder sb = new StringBuilder();
int amt;
while ((amt = conn.getInputStream().read(buffer)) != -1) {
String s = new String(buffer, 0, amt, "UTF-8");
sb.append(s);
}
return sb.toString();
}
}

2 | Integration FAQs and Troubleshooting


2.1 | Data Center Migration - Update Legacy Data Agents

Data Center Migration - Update Legacy Data Agents


What can I do right now?
If your instance uses a data agent, review your data agents version before the migration to see if it uses any of the 5.x versions.

To find your data agents version:


1. Log in to your instance.
2. From the navigation menu, click Integration > Design Integrations.
3. Expand the Data Agents section.
4. Select each configured data agent and review the version.

What changes do I need to make if my data agent uses a 5.x version?


Data agents using any of the legacy 5.x versions will try to use a TLS cipher suite that is not supported by AWS servers. You can use the steps below to update
your data agent so that it uses a supported cipher suite.

1. Log in to the machine where the Adaptive Data Agent Service Manager program is installed.
2. Go to the Start menu > search Notepad > right-click on Notepad > select Run As Administrator.
3. In Notepad, open the following file: C:\Program Files\Adaptive Data Agent\AgentService64.ini
4. Locate the line that starts with Virtual Machine Parameters, make sure there is a space at the end of the line, and then add the following to the end of the
line:
-Dhttps.cipherSuites=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
5. The resulting line should like this:

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 437/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Virtual Machine Parameters=-Xrs -Xmx512M -Dhttps.protocols=TLSv1.2 -


Dhttps.cipherSuites=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
6. Save the change.

2.2 | How can I Schedule a Task to Run More Frequently than Hourly?
Question
How can I schedule a task to run more frequently than once every hour?

Answer
If you have not yet setup a scheduled task you can do so following the steps in our "Create a Task" documentation.

Adaptive Integration import tasks can be scheduled to run on an hourly, daily, weekly, or monthly basis. The way to make the import more frequent would depend on
the frequency that you would like it to run.

If you would like for the task to run every hour, you would just need to have one hourly schedule.

If you would like the task to run multiple times a day, but not every hour, then you would instead add multiple daily schedules to the task, and set each daily
schedule to run at a different time through the steps above. Likewise, if you would like a task to run multiple times per hour you could create multiple Hourly tasks.
For instance, if you want a task to run every 15 minutes you can simply create 4 of the same Hourly tasks and have them each start 15 minutes apart from each
other.

2.3 | Importing and Exporting FAQs


2.3.1 | An error occurred on the Previous request: Duplicate Column Name for field(s):

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
I am receiving an error that states "An error occurred on the Previous request: Duplicate Column Name for field(s): 5, 5, 5" when importing a file to a modeled sheet.
These are not the names of the columns on my sheet. Why am I receiving this error?

Answer
When importing to modeled sheets, the import template places the column names on the fourth row (see attached file for example). Sometimes users receive this
error when the first three rows have been deleted. Adaptive Planning will recognize whichever values are entered on the fourth row in each column as being the
column names in the sheet. Use a fresh import template, or add three rows above the current first row to avoid the error.

2.3.2 | Cannot import into a locked version

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
I am importing Actuals and am a receiving a message that says I cannot import into a locked version. I have not changed anything, why can I no longer import
Actuals?

Answer

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 438/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

A user must explicitly be granted access to a version to be able to import data to that version. So, one thing you might check is the Access Settings for the Actuals
version from Modeling > Versions and the role the user who is importing Actuals is assigned. For example, if the Actuals version is only open to import for users in
the Actuals access group, and the Import user does not have the Privileged Actuals Access role permission, then the user will not be able to import the Actuals. See
Version Access Control.

2.3.3 | IP Address Changes for October 2020 Data Center Migration

Upcoming Changes to Workday Adaptive Planning IP Addresses


Important: This page details the IP address changes following the data center migration on Saturday, October 24 from 10:00 a.m. to 3:00 p.m. PST.

Region Data Pre Migration IP Addresses Post Migration IP Addresses


Center

North America / Primary 35.155.51.63 52.11.124.120 165.193.228.74 165.193.228.121 15.223.123.113 35.183.74.111


Canada 206.150.103.128 through 206.150.103.192 35.155.51.63 52.11.124.120

Disaster 15.223.123.113 35.183.74.111 35.155.51.63 52.11.124.120 165.193.228.74 40.82.179.220


Recovery 165.193.228.121

2.3.4 | Communicate with Workday Adaptive Planning Servers

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
I was just wondering what ports need to be open from a server to allow for it to be able to call the adaptive planning web services? We're in the process of setting
up a new machine and would like these ports specified so we can make allowances for the ports so that we can call adaptive planning services from these ports.

Answer
Adaptive Planning web services are available at this URL:

https://api/adaptiveinsights.com:443

Port 443 is a standard https port and usually does not require any special allowance.

You can test access to web services by entering this URL in a web browser: https://api.adaptiveinsights.com/api/v15. You should get an error message:
"Illegal Input. Input data must be an XML document.". This indicates that you have successfully reached the Adaptive Server (but since you did not include a valid
API request you get the error message). You can also "ping" api.adaptiveinsights.com and you should get a reply.

We recommend that you allow-list the domains listed below instead of allow-listing specific IP addresses because IP addresses can be added or changed
dynamically with AWS. Also, Adaptive Planning reserves the right to move your instance to a different server without notice for load balancing or other operations
management purposes.

1. *.adaptiveinsights.com
2. *.adaptiveplanning.com

If specific IP addresses need to be allow-listed, please contact Support ([email protected]) for additional assistance.

2.3.5 | Customize an import template to match a standard sheets format

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question:
How should I modify a Standard import template to match my standard sheet format?

Answer:
Modeled and cube templates will already match to your sheet and will not need any modification. Standard import templates can be adjusted as needed using the
steps below:

1. Go to Integration > Import Data


2. Fill out the appropriate fields, such as whether you are importing into the Actuals version or a specific Plan version.
3. Click "Download template" to get an excel file to import your data (see the description for each column in the template below):
Account: This column should include each account that will have data imported. You can use the account code, account name, or the name of your
account in your source system. The appropriate choice will depend on how your accounts are mapped.
Level: This column should include each level in your organization structure that will have data imported
Split Label: This column can be used to import multiple splits within one account / level intersection. You can enter the name of your splits or leave it
blank.
Region (Dimension): This column is for any sub-categories of your data. You can delete the column if you don't have a dimension on your standard
sheet. If your standard sheet has dimensions, you can change the column name from "Region" to the name of your custom dimension &/or add new
columns if you have multiple dimensions.
Timespan :This value defaults to January and February 2013 but it can be extended or replaced with new time values as needed. Please note that
tou must use the exact format used in the template.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 439/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

4. Once you have edited the dimension and timespan columns to reflect the data that you will import, you can add the appropriate data to the columns and
then import the completed file.

2.3.6 | Data Agent will not provision after sandbox refresh

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
Why is my Data Agent not provisioning after a recent migration, clone, or refresh?

Answer
Data Agents that were previously provisioned in a sandbox might not exist after a sandbox refresh because the refreshed sandbox is a copy of another instance
and the integration configuration may be different from what was previously configured in the sandbox.

The on-premise Data Agent software does not automatically remove local configuration files related to the old sandbox agents; however, it may still allow a user to
try to provision the new sandbox agents which may have the same name and internal identifier as the old sandbox agents. This can cause the Data Agent on the
server to enter a "provisioning" state indefinitely, meaning that it will never complete successfully or terminate with an error.

To provision a new agent for a new instance (or recently refreshed instance):
1. Log in to the Data Agent machine and open the Adaptive Data Agent Service Manager (ADASM) program.
2. Go to the Backup/Unprovision tab.
3. In the Select Active Agent dropdown menu, select each agent that starts with the sandbox instance code and click Unprovision Agent. You can find the
instance code by logging in to the sandbox and going to Administration > General Setup.

4. After all agents with the sandbox instance code have been unprovisioned, close the ADASM.
5. Open the Services program, right-click on Adaptive Data Agent, and click Restart.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 440/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

6. After the service has restarted, open the ADASM again and provision the agent. See Create a Data Agent .

The key is to follow the above steps before attempting to provision any agents after the sandbox is refreshed. If the old agents are unprovisioned locally and the
service is restarted beforehand, provisioning should work without issue.

2.3.7 | Exclude level rollups from exports

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
How do I exclude rollup levels and accounts when I export data?

Answer
Manually selecting accounts and levels so that you can exclude rollups when exporting data can be a tedious process.

If you select NONE on the export screen for levels and accounts, the system will automatically only export data for the child level and account combinations that
contain data.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 441/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

2.3.8 | Exporting To NetSuite

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
How do I export my data to NetSuite?

Answer
If the NetSuite Integration feature is enabled and the current user has the Export Budgets to NetSuite permission, then NetSuite Budget Export will be available on
the Export screen. The choices for Export are NetSuite and CSV file. When you select one of these options, the other sections shown on the screen update
according to your selection. If the Output Target is a CSV File, all the current Export tab sections appear below the Output Target section (see the Export tab help
page for more information). If the Output Target is set to NetSuite, then none of the current Export tab sections appear, and instead the following sections appear:

Budget Category - In this selector, the list of all budget categories available in NetSuite is shown.
Fiscal Years - This section contains a series of checkboxes, one for each fiscal year where the start month and year in NetSuite and Adaptive Insights are
equal. The labels shown for the checkboxes are the labels of the NetSuite fiscal years. The checkboxes are initially unchecked and a user must check at
least one of the boxes in order to continue.

The following conditions apply to the NetSuite Budget Export functionality:

You must have the Multiple Budget Categories feature enabled in NetSuite before exporting data into NetSuite Budgets.
The data is exported from the current working version only; this is the version currently selected on the screen.
Data is exported only from GL accounts. Custom accounts, Assumptions, Modeled Accounts, and Cube Accounts are not exportable - NetSuite does not
support budgets for anything other than GL accounts.
All old budget entries in NetSuite for the selected Budget Category for the selected fiscal year(s) are deleted, then the data from Adaptive Insights is
exported into NetSuite, completely replacing any data in the NetSuite budget.
Data associated with AP Dimension Values whose Export Mappings are marked as "Ignore During Export" or remain unmapped will not be exported.
Custom level (formerly plan) dimensions are not considered when exporting GL data. Only dimension values which are assigned by the account having
splits will be considered.
Clicking the Export button on the Export Main Page when NetSuite is the selected output target will send the user to the NetSuite Export Category Mappings
page if the system finds that there is data which would be exported which is currently unmapped in the Export Mappings screen. If all of the data which
would be exported is mapped in the Export Mappings screen, then the user is not sent to the Export Mappings screen and the export proceeds immediately.
After the export to NetSuite, the user is taken to a results page where they are informed of the success or failure of the export.
If no Adaptive Insights dimension maps to Subsidiary, then all data will be exported to the "root" subsidiary in NetSuite.

The values which are exported are converted to currencies according to the following rules:

If Adaptive Insights levels are not configured as a dimension mapping, all values to be exported are from the level rollup at the organization structure
(formerly plan tree) in AP, so all values are converted to the top level currency prior to any export.
If Adaptive Insights levels are mapped, and the target Budget Category is not a Global Category, then values to be exported will be exported in the currency
of the level where the values reside. They will be exported in that currency to the subsidiary or other dimension associated with that level in NetSuite. The
user must ensure that Adaptive Insights levels map to subsidiaries of equivalent currency in NetSuite.
If Adaptive Insights levels are mapped, and the target Budget Category is a Global Category, values to be exported will be converted into the Corporate
Currency at each level, then exported in the corporate currency and in the level where the values reside.

Note: Exchange Rates will not be exported from Adaptive Insights to NetSuite; there must be equivalent exchange rates in the two systems (in particular, in the
Budget Exchange Rates area for NetSuite) so that the converted numbers roll up and tie.

2.3.9 | Export data

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Apart from taking printable views of your sheets and running reports to Excel, you may also export data via the Integration > Export Data screen.

Steps
1. Make sure the appropriate version is selected in the top right corner.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 442/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

1. Click edit' next to each section to make adjustments to your export.

a. Format use Adaptive names and codes or External account codes


b. Filter select the account(s), level(s), and period(s)

c. Dimensions highlight a dimension and use the >> button (if desired)

d. Rules choose a currency rule and whether to include empty rows/qtrs/years


2. Click the Export button at the bottom and review your Excel output.

Tips for best Practice:


Make sure you have the right version selected
Select None' for both accounts and levels if you want the system to automatically export data for only account/level combinations that contain data
Try to avoid exporting too many years, levels, and accounts all at one time.
For example, if exporting a large number of years or levels, try to split the export up into separate pieces (e.g. only exporting a few years at a time).

2.3.10 | Export standard account data from one fiscal year and import into a different fiscal year

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
How to export standard account data from one fiscal year and import into a different fiscal year?

Answer
Export Data
There are two ways you can export the standard account data and exclude level rollups from the exports:

1. Use Integration > Export


a. In format section, check Adaptive Account Names and Account Codes.
b. Make sure to deselect ALL checked accounts and levels in the filter section.
This will generate a non-customized data that excludes rollup levels/accounts with account names/codes for the exported file in Excel format.

2. Create a Matrix Report

1. To create a Matrix report to export data, you would select accounts, levels, time periods, and version for the report
2. Expand all related hierarchies
3. In Report Properties, you would default the report to Excel and check two settings: (1) Repeat row labels in Excel and (2) Suppress rollups.

Import Data
Because the format in exported data will not be in the same time periods you will need to do the following:

1. Download a template by going to Integration > Import data > Download template
2. Update and/or add columns for the time periods that you want to import data
3. Copy the data from the export file and paste the data into the desired time periods in the import template file
4. Save the updated import file
5. Go back to the Integration > Import data > select the version (Import Type) and file (Select File) for your import
6. Click Import

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 443/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

2.3.11 | Fail to execute structure changes

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
Wen importing to a modeled sheet, I am receiving the following error: Fail to execute structure
changes. What does the error mean and how can I correct my import file?

Answer
This error message is returned when there are invalid values in the import file for modeled sheet imports. To correct the invalid values, you can search the Excel file
for invalid cells and correct them with the proper values.

Search the file for the following scenarios:


1. Any strings that appear as errors such as #N/A or #VALUE!
Correct any of these occurrences by entering the proper formula or value
2. Cells that contain formulas that are not fully evaluated such as =D5/D5 or =356/30.
To correct simple references to other cells or simple mathematical functions that did not evaluate, you can copy the cell and then use Excels "paste
as value" functionality to re-enter the formula.

If you have completed these steps and still cannot import the file, please feel free to open a Support ticket and attach the file in question.

2.3.12 | Import actuals data to a modeled sheet

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
I am able to import data to a Modeled Sheet in the Budget Version, but this Modeled Sheet is not an option when importing to the Actuals Version. How can I import
Actuals to a Modeled Sheet?

Answer
You may notice, for example, that your Personnel or Capital sheets are not showing up when trying to import to the Actuals Version. Before you can import data into
the Actuals Version on a Modeled Sheet, the Modeled Sheet first needs to be made available in the Actuals Version. To do this, you can take the following steps:

1. Open the Modeling>Model Management screen and select Sheets (either Level Assigned or User Assigned, depending on where the sheet is)
2. Click Edit next to the Modeled Sheet (Or click on the Modeled Sheet - both links will take you to the Sheet Builder)
3. Click on the "Columns and Levels" option, and select "Sheet Properties" at the top
4. Open the Settings tab
5. Check the "Available in Actuals Version" box
6. Save the sheet.

Once the sheet has been made available in the Actuals Version, you will be able to select the Modeled Sheet in the "Import into Sheet" section when the Actuals is
selected as the "Import Type" on the Import Data screen.

2.3.13 | Import account mappings

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
How do I add and edit account mappings?

Answer
Adding a new Account Mapping
If you are only adding 1 or 2 new mappings, you may manually create them.

1. Navigate to Integration > Import Account Mappings.


2. Click Add Mapping'.
3. In the Mapping Details pane, enter the Import account name. The Import account name is the name of the account coming from your source system.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 444/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

4. Then search for the account you would like to map to in the box below. The account you choose will be the Mapped Account (i.e. the name of your accounts
in Adaptive).
5. Click Accept' and Save'.

If you are adding many new account mappings, the import option will be quickest.
1. Navigate to Integration > Import Account Mappings.
2. Click on the Import Account Mapping link in the top right.
3. Click on the Account Mappings' link next to Download Template.
4. Open the Excel file.
5. Fill out the second tab.
Import Account = account name from your source system.
Mapped Account = account name found in Adaptive.
6. Save the file and go back to the Adaptive screen.
7. Next to Import File, click Browse.
Choose your previously saved file and upload the template.
If you receive any errors while uploading, click on the View now' link. This will generate an Excel file with an error tab that may be reviewed for
corrections.
8. Be sure to Save.

Editing an existing Account Mapping


1. Navigate to Integration > Import Account Mappings.
2. Click on the account you would like to change.
3. In the box to the right, scroll or use the search feature to find the account you want to map to.
4. Once the new account has been selected, click Accept' and Save'.

Note: When updating an account mapping, this will not affect your historical data. Rather, all imports moving forward will route data into the newly selected account.

Deleting an Account Mapping


1. Navigate to Integration > Import Account Mappings.
2. Locate the mapping(s) you wish to delete.
3. In the box to the left, check the mapping. The account mapping line will turn orange.
4. Select all of the mappings that you would like to delete, and then click Save'.

Note: Be very mindful when clicking on the delete boxes, for you cannot uncheck a box. Rather you will have to navigate away from the page and come back to
start over. This is particularly important if you are deleting many many mappings. If you have a lot of mappings to delete, you might consider deleting them in
batches.

2.3.14 | Import data using an Excel template

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question:
How do I use an excel template to import data into Adaptive Planning?

Answer:
You can import data into standard, modeled, and cube sheets using the steps below:

1. Go to the navigation menu > Integration > Import Data (Note: You will need the "Import Capabilities" role permission enabled for your user in order to
access this page.)
2. Fill out the appropriate fields, such as whether you are importing into the Actuals version or a specific plan version.
If you are importing into any standard sheet, simply click the "Standard" option.
If you are importing into a modeled or cube sheet, select the option below "Standard" and choose the desired sheet from the drop-down menu.
3. Click "Download Template" to download an excel file that is customized for the particular sheet based on your selections from step #2.
4. Insert data into the template.
If you are importing into a modeled or cube sheet, your template will not need to be modified before adding your data, so you can post your data in
the required fields and then skip to step 5.
If you are importing into a standard sheet, you may need to modify your template to match the values that you are interested in, as in the steps
mentioned in this article
5. Click Import. The first step will attempt to match the accounts in your file to the accounts that are set up in adaptive.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 445/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

If you have existing account mappings in the system, you can choose the option that best fits those mappings. If you do not have account mappings in the
system, you can choose any of the options and select "Continue".

6. The resulting page will show a table where you can add and/or modify account mappings. To add mappings to the system, follow the steps below:

7. Levels and any dimension values you may have will have a mappings page that will follow the same process as accounts. Once those mappings have been
verified, Click the Import button to complete the process.

2.3.15 | Import exchange rates

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
How do I import the exchange rate values found in Enter Currency Exchange Rates?

Answer
Exchange Rates can be imported in a similar manner as standard accounts.

From Integration > Import Data, you can select the version you wish to import data to
Then select Download Template at the bottom
In the second tab in the Excel template file, you will populate the Account columns with the exchange rate pair names (whatever format you would like, as
you will be making a mapping to the exchange rates with the name you chose)
The level column will be the TOP LEVEL/CORPORATE LEVEL in your organization
You can remove the default "Region" column
"Split label" can be left blank
You can then enter the desired months of data
From the Import Data screen, you will import this template file
From Account Mappings, you can match the Account names in your import file to the Exchange rates in Adaptive
Make sure you are import to the correct type (such as EOM vs Avg)
You can then verify the import from Admin > Enter Currency Exchange Rates
The version you imported to can be changed in the upper-right if needed.

2.3.16 | Import History

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
Why can't I see my Plan imports in my Import History?

Answer
The Import history will only save the Actuals imports, not the Plan data imports. You can click on the link to view all Actuals imports history. Keep in mind that users
with the import right can also remove the history. You should not have to remove older imports in order for new Actuals imports to show.

2.3.17 | Import level mappings

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
How do I add and edit level mappings?

Answer
Adding a new Level Mapping

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 446/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

If you are only adding 1 or 2 new mappings, you may manually create them.

1. Navigate to Integration > Import Level Mappings.


2. Click Add Mapping'.
3. In the Mapping Details pane, enter the Import level name. The Import level name is the name of the level coming from your source system.
4. Then search for the level you would like to map to in the box below. The level you choose will be the Mapped Level (i.e. the name of your levels in Adaptive).
5. Click Accept' and Save'.

If you are adding many new level mappings, the import option will be quickest.
1. Navigate to Integration > Import Level Mappings.
2. Click on the Import Level Mapping link in the top right.
3. Click on the Level Mappings' link next to Download Template.
4. Open the Excel file.
5. Fill out the second tab.
Import Level = level name from your source system.
Mapped Level = level name found in Adaptive.
6. Save the file and go back to the Adaptive screen.
7. Next to Import File, click Browse.
Choose your previously saved file and upload the template.
If you receive any errors while uploading, click on the View now link. This will generate an Excel file with an error tab that may be reviewed for
corrections.
8. Be sure to Save.

Editing an existing Level Mapping


1. Navigate to Integration > Import Level Mappings.
2. Click on the level you would like to change.
3. In the box to the right, scroll or use the search feature to find the level you want to map to.
4. Once the new level has been selected, click Accept' and Save'.

Note: When updating a level mapping, this will not affect your historical data. Rather, all imports moving forward will route data into the newly selected level.

Deleting a Level Mapping


1. Navigate to Integration > Import Level Mappings.
2. Locate the mapping(s) you wish to delete.
3. In the box to the left, check the mapping. The level mapping line will turn orange.
4. Select all of the mappings that you would like to delete, and then click Save'.

Note: Be very mindful when clicking on the delete boxes, for you cannot uncheck a box. Rather you will have to navigate away from the page and come back to
start over. This is particularly important if you are deleting many many mappings. If you have a lot of mappings to delete, you might consider deleting them in
batches

2.3.18 | Import personnel data

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
What is the format I'm supposed to use to recreate the Personnel sheet for my new planning version? I copied the data from my old version, but it needs to be
updated. Is there any easier way to do this than to manually delete the existing rows and re add the new employees?

Answer
The quickest way to update the the Personnel sheet is to import the data. To create the basis of your Personnel import file, you can do one of the following:

To Replace All Data:


1. Obtain the printable view of the Personnel sheet from the top Level in the organization structure. This will give you the current Personnel sheet in an Excel
file that you can then make any updates to. Please note it is imported to get the printable view from the top level, because this option replaces data for all
levels.
2. Make any necessary changes to the printable view, and save the file

To Add Imported Rows to Existing Data:


1. Download a Template from the Integration area of the application. To do this, you would select the Personnel sheet under Import Into Sheet and then click
Download Template. This template would be completely blank.
2. Populate the template with the rows you wish to import. There is an instructions page in the template for additional help.

Once you have your import template populated, you can then import the sheet to Adaptive Planning. When importing to a modeled sheet, under Import Mode you
can choose to add the imported rows to the sheet, which appends the imported data under the data already in the sheet, or to replace all the data in the sheet,
which erases everything already in the sheet and replaces it with the imported data.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 447/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

One other option you have would be to create a new version. When you create a new Version you have the option to not copy rows from modeled sheets into the
new version. When the Copy modeled rows option is not checked, the newly created version will not have a copy of all modeled rows from the source version.

2.3.19 | Import to the Initial Balance column

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
How do I import to the Initial Balance column?

Answer
You should import to the previous month. For example, if you were importing 2012 data, you would import to December 2011. December 2011 represents the Initial
Balance month.

2.3.20 | Move scripts from one data agent to another

Question
How can I transfer scripts from one data agent to another?

Answer
Sometimes you may find yourself in a position where you have created a new data agent and you would like to transfer scripts that are associated with a previous
data agent to be associated with the newly created data agent. You can transfer those scripts by following the steps below:

Important: This is a fairly advanced process that should only be performed by an individual with working knowledge of the Adaptive Data Agent and the agent server
where the Adaptive Data Agent Service Manager is installed.

1. Open the Adaptive Script Editor

2. Enter your Adaptive credentials.


3. Select your Adaptive instance code from the Active Tenant dropdown menu.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 448/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

4. Select the agent with the scripts you want to copy (Agent 1) from the Select Active Agent menu. This will download the scripts stored in this agent.
5. Select the agent that you want to copy the scripts to (Agent 2) from the Select Active Agent menu.
6. Go to C:\Users\<user you are logged in as>\Adaptive Agents\<instance code>\DataSources\CustomDataSources
In this location, there will be folders for every agent in the Adaptive instance that you accessed from the Adaptive Script Editor on that computer.
Every folder will have a name like AgentTemplate_XXXXX_, where XXXXX is an internal ID number for the agent. To find out which folder
corresponds to each agent, open the folder (e.g., AgentTemplate_XXXXX_ ) and then open the agent.config.xml file within. This XML file will have
a <displayName> node that shows the display name for this agent.

7. Go to C:\Users\<user you are logged in as>\Adaptive Agents\<instance code>\DataSources\CustomDataSources\<Agent 1


ID>\Repository and copy the scripts in this folder.
8. Go to C:\Users\<user you are logged in as>\Adaptive Agents\<instance code>\DataSources\CustomDataSources\<Agent 2
ID>\Repository and paste the scripts into this folder.
9. In the Adaptive Script Editor, click Publish Agent Changes.
10. Log in to your Adaptive Insights instance and go to Integration > Data Designer > Data Sources. For each scripted data source, select the <new agent>
as the Agent and select the script to use as the entry point for the data source.

2.3.21 | NetSuite - Can Data From NetSuite Be Imported With Multiple Currencies?

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
Can data from NetSuite be imported into Adaptive in US Dollars when importing consolidated reports with multiple currencies per subsidiary?

The customer plans using the following currencies: USD, GBP, Indian Rupee, Canadian Dollar, Euro and Australian Dollar but their base currencies are USA, GBP
and Indian Rupee. They categorize data by department and location.

Answer
There are two options:

1. Build in the currency structure at the subsidiary level and then the data can be brought in as any currency and rollup to the plan level in USD based on the
exchange rate.
2. Run a report from NetSuite in USD and then manually import it into Adaptive Insights.

Planning in Foreign Currency - If a client is planning in Multi-currency in NetSuite(NetSuite's OneWorld multi-currency subsidiary feature), we must build the plan
structure at the subsidiary level in Adaptive Planning. If we attempt to bring the data over at an aggregate level, the imported numbers do not make any sense. The
clients can see the data at an aggregate/converted level in NetSuite, but when it is imported, NetSuite gives the sum of the unconverted data.

There is no other workaround for this situation including the NetSuite API which is not designed to bring in the USD information at an aggregate level.

2.3.22 | NetSuite Import Category Mappings

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
How do I setup my Netsuite Category Mappings so that I can import my data?

Answer
Before viewing your mappings, you will first want to check the NetSuite Category Configuration page to see which NetSuite items are connected to which Adaptive
elements.

The Category Configuration page will provide a clearer understanding for how NS and Adaptive are set up.
For example, Subsidiary and Department may both be connected to Levels in Adaptive. We will focus on this example for the remainder of the article.

Next there are two pieces that you will need to understand.

NetSuite Import Category Mappings


1. You have the option to choose an element from the drop-down selector.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 449/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

2. Financial Planning Dimension: Level


[EXAMPLE] a) The columns will indicate certain items from NS and Adaptive.

1ST Child NS

2nd Parent NS

3rd Adaptive Level

b) NetSuite Subsidiary Department (1st): indicates that the formatting is set up to show Subsidiary followed by the Department
This formatting will apply to the child column (1st) and the parent column (2nd).

1st: Subsidiary Child Department Child

2nd: Subsidiary Parent Department Parent

Import File
1. The FromNetSuite.xlsx file may be obtained from Integration>Import History.
2. When viewing the Level column, the formatting would be as follows:
Subsidiary Parent: Subsidiary Child Department Parent: Department Child
The import file differs from the mapping screen in the sense that the NS elements are grouped together rather than by child/child or parent/parent.

Once you understand the file and the mappings, you may then compare to see which levels the file is pointed toward in Adaptive.

2.3.23 | Quickbooks Connector Best Practice

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
What do I do if I receive an error in the Connector Processing window?

Answer
If you see an error when in the Connector Processing window, extract the log file. It is typically located here:

C:\adaptive_planning\log\adaptiveplanning_logs.log

If the log file says something like:

At line 14 of module Create QuickBooks Connection: Property or method failed (QBXMLRP2.RequestProcessor.2: A QuickBooks company data file is already open
and it is different from the one requested or there are multiple company files open.)

Ensure you have taken the steps below:

Always open QB company files in Multi-User Mode (even if only 1 user license exists).
Hosted Multi-User Access needs to be active.
Disable the preference Keep Quickbooks running for quick startups.
If possible, associate a QB user with Admin rights to the Integrated Application Adaptive Connector

If all of the above is set and connection can still not be made (e.g. too many users logged in), open Quickbooks without a company file open. This will force our
connector to always be able to connect.

2.3.24 | Required parameter is not configured

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
What does the message "required parameter is not configured" mean when importing data?

Answer
This message appears when one of the necessary parameters has not been setup in the Data Source. In most cases, this message is referring to a Period
Parameter. The Period Parameter identifies which time period the data should be imported to. You can add a parameter by navigating to the table the error is
coming from within Data Sources, and selecting "Table Settings." You should then see an "Edit Parameters" option where a time parameter, or any other necessary
parameter, can be created.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 450/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

2.3.25 | Reserved characters

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
Are there any characters that cannot be used for account, level, and dimension names?

Answer
The pipe character (the vertical line symbol | ) should not be used in element names or memo/note fields because it is a reserved character in the Adaptive
Planning API that acts a delimiter to separate data. Pipe characters are not supported in the Integration for Planning tool, and their inclusion in element names or
source data can cause columns to be delimited incorrectly resulting in values being posted to the wrong columns.

Note: We recommend completely avoiding/removing the use of pipe characters from the fields in your source system that you will be importing into Adaptive
Planning.

You can also create a SQL column in your Data Source that removes pipe characters from the staging table. Please see an example SQL expression below:

REPLACE('|' WITH '' IN "ExampleField")

2.3.26 | Reverse the sign of accounts when importing data with an on-premise connector

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
How do I reverse the sign of Accounts when using an On-Premise Connector to import data?

Answer
Functionality can be built into the Connector to reverse signs for specific accounts or account ranges prior to importing the data. To see which accounts in your
source system have been set up to have the signs reversed, go to the following location.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 451/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

1. Go to Start> Computer
2. Open the C drive
3. Open AdaptivePlanning> CustomerParameters
4. Open the "ReverseAccounts" file

The "ReverseAccounts" file will display the accounts that currently have the sign reversed when importing. Add any additional accounts that should have the sign
permanently reversed during imports to that file and save.

Use "#,#" format to enter a range of accounts


example:

16000,18999

Use # to just enter a single account


example:

16000

18000

18500

2.3.27 | Run tasks and loaders with missing mappings

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
Why are my tasks sometimes failing due to missing mappings and not importing data, while the data is imported when running directly through the loader?

Answer
Tasks can include multiple loaders. When a loader fails within a task, subsequent loaders in the same task will not process as we do not want to load any
incomplete or conflicting data. The earlier loader may have failed due to missing mappings. You can find more specifics on missing mappings below.

When you run a loader manually, and there are missing mappings for levels or accounts, the data that is mapped will be imported, and an error will be shown in the
logs stating the mappings that are missing. This is true for all standard account imports, as well as cube sheet imports. Modeled sheet imports will be successful
without account mappings, and fail without level mappings.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 452/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

When a task is run, it is either marked as a success, or a failure. A task may fail due to missing account or level mappings, but the mapped data will still be imported
for the loaders that were run within the task. If a task has multiple loaders, you can check the task logs to identify which loaders have been run, and confirm the
error. Similar to the loader, the task will be a success or failure depending on the type of import it is. Cube and Standard act the same, while Modeled imports do not
require accounts.

If a task or loader has missing dimension mappings, they will be classed as a success because dimension values are not necessary, and data can still be imported
to the account and level combination. This may be why a task is successful when showing missing mappings.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 453/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

2.3.28 | Scheduled integration task fails with an error but completes successfully when ran manually

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
I am receiving an error within my Integration Task when it is being automatically ran. The task can be ran manually without any error, but when it is ran automatically
through a schedule it fails. How do I resolve this error to have the task run overnight without any discrepancies?

Answer
Typically, this error occurs when the user who was originally set to automatically run the task no longer exists in the instance.

To resolve this error, update the user "automatically" running the task with the following steps.

1. Go to Integration > Design Integrations > Tasks > and choose the tasks you want to update.
2. Within the Schedule Settings, choose the drop-down below Next Scheduled Run and choose the settings.
3. In the Edit Schedule menu, uncheck Active and click Save for the schedule and task.
4. Navigate back to the schedule settings for the task and selectActive and Run as me.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 454/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

5. Click Save for the Schedule and the Task.

2.3.29 | Setting Up Integration Between NetSuite And Adaptive Insights for NetSuite Bundle

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
How do I setup Integration between NetSuite and Adaptive?

Answer
Follow these steps to establish the initial integration between your NetSuite and Adaptive Insights instances and enable single sign on between the two
applications. If you have already established the initial integration between NetSuite and Adaptive Insights, start at step A3.

Setup Integration between your NetSuite Instance and Adaptive Insights for NetSuite Bundle.
Note: Click here to access our NetSuite Integration Guide

1. Login to your Adaptive Insights instance with your credentials.


2. Go to Integration > NetSuite Setup. Fill out this page and hit Save.
3. Go to Admin > Edit user and select your username. You will see a separate field on this screen under the Adaptive Insights login that asks for your NetSuite
Login Email. This has to match your NetSuite login exactly. Type in your NS login and hit Submit.

The NetSuite Login Email field will be pre-populated with your AP Login email.
If you do not see the NetSuite Login Email field, your AP instance is not enabled for NetSuite Financial Planning. If this is the case, please contact your
NetSuite Account Manager.
Repeat this step for every NetSuite user that requires access to NetSuite Financial Planning

Install the Adaptive Insights for Netsuite Bundle

1. Log in to NetSuite and follow these steps to install the bundle:

Go to Setup -> Customization -> Search & Install Bundle


Change Location to "Production Account", enter TSTDRV924675 for Account ID.
Search for the bundle.
Install the Financial Planning bundle with ID 30441

Upon completing these steps, the Financial Planning tab should appear and you should be able to navigate within Financial Planning seamlessly.

Important: Your web browser must allow cookies from the adaptiveplanning.com domain. Check any browser settings that might restrict cookie access.

2.3.30 | Source table must belong to a spreadsheet data source and can't be a custom table

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
Why am I receiving the message "Source Table Must Belong to a Spreadsheet data source, and can't be a custom table" when trying to save my Loader?

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 455/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Answer
This message is shown when importing into a Modeled Sheet that contains splits. When it has splits, the Data Source should be a Spreadsheet data source. If you
do not need the splits in the modeled sheet, and would like to load the data with a custom table or none-spreadsheet data source, you can remove the splits by
navigating to the sheet from Modeling, choosing "Sheet Properties," and unchecking "Allow splits."

Another option would be to create a Spreadsheet data source to upload the data. This way, you can keep the splits in the modeled sheet.

2.3.31 | Split Behavior when Importing

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
How do imports work when they contain splits? I keep receiving an error message when trying to import a file with splits. What might be causing the error?

Answer
1. If the account/level/version combination to which you are importing contains no data (account is blank in all time periods), any splits in the import
template are created automatically.
2. If the account/level/version combination to which you are importing contains data (in any time period in the versions), the following is true:
If you are importing one split to a particular account/level/version combination, you will get the Warning message and the data will be placed in the
unsplit account. If you want to create a new split/tag the data with the dimension, you need to go to that location in the sheet and manually add one
split. The reason that you have to do this is because you have to specify in which split the data in the main account is placed and how it is labeled.
If you are importing more than one split to a particular account/level/version combination, you will get an Error message and you have to create the
first split manually in the sheet.
A warning message means that the data still imported. If there is an error message, the data is NOT imported. The presence of a single Error will
cause the ENTIRE file upload to fail, not just the line(s) containing the Error.
3. An import that contains blank Split Labels will create new splits in the system for an account that already contains splits. The system does NOT match
and align all blank split labels associated with a particular level/account combination.
4. If you are importing an entry that is tagged with a dimension and an entry that does not have an associated dimension or a Split Label, the system will
NOT import the value that does not have an associated dimension or a Split Label. In this scenario we would recommend creating a dimension value called
_ and associate all blank entries on the import with the underscore.
5. Erase Actuals will erase splits if the process of erasing Actuals causes the split to become empty. An empty split is one where there is no value nor cell note.
Please note, splits that are already empty will remain untouched.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 456/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

2.3.32 | Supported Data Source Integrations

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
What are my options for integrating with Data Sources?

Answer
The following options are available:

1. You can use any of the available pre-configured adapters which are Intacct, Salesforce, Netsuite, and Great Plains.
2. For on-premise JDBC compliant systems, you can use our JDBC data source.
3. For cloud-based systems, you can use our Custom Cloud Data Source (CCDS) which requires building javascript code to integrate.
4. For any other systems, you can create a Scripted Data Source using Pentaho.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 457/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

2.3.33 | The level is not available for month X

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
Why am I receiving the error "The (Level X) Is Not Available For Month X" when importing my Actuals?

Answer
This is a result of the Actuals version not being available for the period. To check these please go to Modeling > Levels and select the (level X). On the right-hand
side once you have selected the level you can see the Version & Availability settings.

In the version selector dropdown select the Actuals version which will then show the Actuals start and end date dropdown.

As you can see in the attached screenshot this level has Actuals set to be available for the period April 2010 December 2015. This means the level is not available
for January 2016. Correcting this requires making January 2016 available. If you want the Actuals version to be available for the complete period of the Actuals
version you can set the dates to start and end of version. Please look screenshot below.

If you have too many levels to correct this manually, please contact support at [email protected].

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 458/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

2.3.34 | Troubleshooting Import Errors and Recommended Solutions

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
I have received several different error when importing. Is there a list of possible errors and how they can be resolved?

Answer
When importing data, there are two categories of errors that a user might encounter:

Errors displayed in the user interface this appears on the import screen as An error occurred on the previous request: or Error:
Import file is invalid or not specified this error typically occurs when the file is not in the correct format. Make sure that the file you are attempting to
import has either an .xlsx or .xls extension.
Error: Data in the spreadsheet for account 3500 plan 000 specifies more than one split, but that location in version Actuals contains no splits.
You must create at least one split at that location in order to import. If an unsplit account contains data in Adaptive Planning, you must first add one
split to that location in the sheet in order to import split data. By adding the first split, the user specifies how the existing data in the account is labeled. If the
account is empty, the splits are automatically created upon import.
Missing Required Field(s): Name ,Rolls Up To and An error occurred on the previous request: Row 2 is missing a value. Row 3 is missing a
value.... - these errors typically occurs when the first few rows of the Import Template have been deleted, i.e., the Required and Optional headers. To allow
the import to go through, you can either download a fresh import template and copy the data from the old template to the new template or add 3 rows to the
beginning of the file that you are using currently.
An error occurred on the previous request: Column "null" is required or Import Failed with the following error: java.lang.NullPointerException -
these errors typically occur when there are required columns in the import template that are not fully populated. Review the import file and populate any
blanks in the required columns.
Invalid Dimension Choice: or Row X was not imported because xxx is unmapped - these errors typically occur when the dimension value has not been
marked as available on the sheet. Go to the Modeled/Cube Sheet Builder and verify that the dimension value has been marked as available on the sheet.
An Exception Error- this appears as An error has occurred processing your request. When you encounter an exception error, you will see a blank
screen with the error message at the top. Here are a few things to check:
Check to see if there are any "#" characters in the spreadsheet. If there are, remove them.
Remove any formula driven cells form the import template.
If you are importing new structural elements, use Remove Duplicates in Excel to remove any duplicate values from the import file.
If the sheet is password protected, remove the password protection.
Check to see if there are frozen panes in the file. If so, unfreeze them.
Remove any filters.
Remove any conditional formatting.
Remove macros.
Delete columns and rows outside of the data area.
Copy all data and paste special as values into the file. If this does not work, try pasting it into a new template.
If you are importing to Custom or GL accounts and the data should not be tagged with Dimensions, be sure to delete any Dimension columns
and leave the Split Label column blank.

2.3.35 | Upload account mappings

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
How do I upload Account Mappings?

Answer
If you go to Integration > Import Accounts Mappings, you should see a link in the upper right hand corner of your screen for "Import Account Mappings". This link
allows you to download the Import Account Mappings template. The template enables you to upload your account mappings, instead of adding them one at a time.

The import account mappings template requires that the Mapped Account (the account you are mapping your ERP GL account to in Adaptive) be listed as "Account
Code - Account Name". To retrieve the account code and name and format it accordingly, please follow the steps below. An example is attached as "Account
Formatter". The formulas referenced below are provided in the Mappings tab, Cells C4:D4.

1. Go to Modeling > GL Accounts.


2. Select "Printable View" near the bottom of the screen. This will download an excel file of your GL Accounts.
3. Delete any accounts that do not need to be mapped. Mappings from your ERP to Adaptive accounts are many to one, meaning that multiple accounts from
your ERP can be mapped to one account in Adaptive. This means that importing new mappings to an account that is already mapped will not delete the old
mappings.
4. Copy and paste Column A and Column C from the Accounts tab into a newly created tab. In column C, place a formula that says =Trim(A1), where 1 is the
row number you are currently on. In Column D, place=CONCATENATE(B4," - ",C4).
5. Copy and Paste the values in Column D of your new tab into your Account Mappings Template, beneath the "Mapped Account" header in column B.
6. In column A, beneath the "Import Account" header, input the accounts from your ERP that are to be mapped to the accounts in Adaptive.

If you have any questions or concerns, contact Support at [email protected].

2.3.36 | Use the dimension import template to create dimension values

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 459/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

How do I fill out the Dimension import template?

Answer

2.3.37 | Warning: Data in the spreadsheet for account X level X has dimension values

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
What does this message mean, and how can I correct it? "Warning: Data in the spreadsheet for account X level X has dimension values which imply a split, but that
location in version X contains no split. The data will be imported into the unsplit account and the dimension values will be ignored."

Answer
When importing data with dimensions into a standard account, splits need to be created. If no splits exist when a dimension is being imported, the dimension will be
ignored, and the data will be sent to the account without creating splits. You can have the data sent to splits by first creating a split at the location, and then running
the import. Please see the Split Behavior When Importing article for additional information.

2.3.38 | Warning: Exchange rates for X exchange rates are not available in the new actuals time periods. Levels in these
currencies may have invalid values.

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
What does the message "Warning: Exchange rates for X exchange rates are not available in the new actuals time periods. Levels in these currencies may have
invalid values" mean when importing data?

Answer
When importing data to levels that are in different currencies than the corporate currency, exchange rates will need to be populated to guarantee the data is correct.
This message is to notify you that some of the exchange rates have not been populated for the time periods you are importing to, and should be populated to
guarantee the data is correct.

You can adjust the exchange rates by navigating to Modeling > Model Management > Exchange Rates, and adding the exchange rates to the version you are
importing into.

2.3.39 | What is the Make New Actuals Visible option?

Question
What does the "Make New Actuals Visible" option control when importing Actuals data?

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 460/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

Answer
When importing Actuals data, whether through a standard spreadsheet import, an automated task, or a manual loader run you may see the option to "Make New
Actuals Visible".

The "Make New Actuals Visible" option is available when Import Type is set to Actuals. If this box is checked, the Actuals version has its "Completed Values
Through" date set to the final month of data found in the import, making the imported data available for overlaying plan data in plan versions. The "Completed
Values Through" date is a field that can be changed in the Actuals version settings (Modeling>Versions). The date that is set in this field determines to what time
period Actuals data is displayed when overlaying a plan version.

The "Make New Actuals Visible" option does not affect the visibility of the data in the Actuals version. All data being imported will be visible in the Actuals version,
but if the "Make New Actuals Visible" option is not enabled during import, the "Completed Values Through" date will not update to include the new period of Actuals
and thus will not be included in the Actuals overlay on top of plan versions.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 461/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

When the "Make New Actuals Visible" option is disabled, any user with access to the Actuals version will have the ability to view the new Actuals data if they are
viewing the Actuals version. No user, regardless of version permissions, will be able to view the new Actuals data overlaid on top of any plan version until the
"Completed Values Through" field is updated to include the new time period of Actuals. The "Make New Actuals Visible" option is simply a feature that allows you to
update the "Completed Values Through" settings automatically during import. Users are still assigned access to data on a version by version basis from
Modeling>Versions.

2.3.40 | Why Can't my Connector Find the Reporting Period when Importing from Intacct

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
I'm receiving an error that states "Period Month Ended Apr 30 2013 not found in Intacct reporting periods for [Company Name]". There is data in that periods in
Intacct, so I don't know why I'm receiving an error. Is something not enabled?

Answer
That message is usually generated due to one of the following two causes.

1. There is a login issue in with the connector. This could be due to invalid credentials.
2. There is a mismatch between the names of the reporting periods. When the customer runs the connector, a user enters the names of the reporting periods
in the connector parameter screen. Those names are compared to the reporting periods in Intacct.

Check to make sure the credentials are correct and that the reporting period names entered in the Period fields match the reporting period names in Intacct.

2.3.41 | Why Did My Modeled Sheet Import Not Import the Data in the Date Columns

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
The import file was fully populated but after the import was deemed successful, we found that the system had not imported the data in the date columns. Why is this
not working?

Answer
This type of behavior typically occurs when the date column is not formatted to text: mmm-yyyy. If the format in the import file is not mmm-yyyy, when the values are
imported data in the cells will not show up in the Adaptive Planning. So, you might check to see if the date format in the import template has been changed to
something else, for example date: dd-mm-yyyy.

2.3.42 | Why is my Great Plains Connector Importing YTD Values Instead of the Values in the Current Month?

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
When I load my actual data via the GP Connector, it is pulling in YTD data versus the current month data. It's only happening with specific accounts. I've checked
the import mapping, setups, etc and did not see anything unusual. I'm not receiving any error messages as a result of the import. Any ideas where to look or what
might be causing the issue?

Answer

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 462/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

The Connector determines whether an account is an income statement account or a balance sheet account by either looking at the account definition in Great
Plains or by reading a file called C:\Adaptive_Planning\greatPlainsAccountTypes.txt.

Check to see if the accounts are identified as Income Statement accounts in Great Plains. If they are, then look at
C:\Adaptive_Planning\greatPlainsAccountTypes.txt on your machine to see if the accounts are misidentified as a Balance Sheet account (a "B" in the second
column).

If the accounts are marked as Balance Sheet accounts in either location, correct the setting and try re-importing.

2.3.43 | Why is the box to select empty rows unavailable on the Export Data page?

Question
I am trying to export data including empty rows, but the box to select empty rows cannot be checked. What do I need to do to be able to export empty rows?

Answer
If there are any dimensions selected in the export, the option to Include Empty Rows' will not be available.

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 463/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

2.3.44 | Why is the Option to Include Account and Level Rollups not Available?

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
I'm exporting our budget to import into our accounting software and would like to exclude account and level rollups. However, it looks like if I select a set of accounts
or levels in the filter, that overrides the checkbox to not include rollups. How can I exclude the rollups?

Answer
The option to 'Include Account and Level Rollups' is only available if no filters are being applied to the export. If filters are being applied, this option is unavailable,
as rollups will be exported only if they are selected in the filter.

One thing you might find useful is that if you select NONE on the export screen for levels and accounts, the system will automatically only export data for the child
level and account combinations that contain data.

2.3.45 | Write a SQL filter to extract the month value from a time column in a data source

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question
How can I write a SQL filter to extract the month value from a time column in my data source?

Answer
When extracting the month from a time column, it will take a single digit for January-September rather than a 2 digit month which would be used for October-
December. This means it will pull the value of "1" for January. Because the CAST(expr AS INTEGER) functionality for casting to a date format requires two digits,
January- September will not work without a 0 at the front the CAST(expr AS INTEGER). You can use conditional formatting to add the 0 at the beginning if the
length of month is 1 digit.

For example:
CASE WHEN LENGTH(CAST(EXTRACT(MONTH FROM "Adaptive Month") AS NVARCHAR)) = 1 THEN ('0' || CAST(EXTRACT(MONTH FROM "Adaptive Month")
AS NVARCHAR)) ELSE CAST(EXTRACT(MONTH FROM "Adaptive Month") AS NVARCHAR) END

Note: This may need to be done for any dates that equal 1 digit.

2.3.46 | Your Credentials Are Not Valid For Configuring NetSuite Integration. Please Contact Your Administrator

This article includes suggestions and workarounds. Content may not be accurate for all use cases or represent best practices for the latest release.

Question

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 464/465
11/5/21, 12:37 PM Workday® Workday Adaptive Planning

We logged in toAdaptive Planning, went to Integration > NetSuite Setup, entered by credentials in the NetSuite Account Details area and clicked Save. After I did
this, I received a message that says, "Your credentials are not valid for configuring NetSuite integration. Please contact your administrator." What is causing this and
how can I fix it?

Answer
This error typically means that the credentials entered do not have sufficient permissions in NetSuite to setup the Integration. The role in NetSuite must be a web-
services-only access role, with the following set of permissions:

Transactions > Find Transactions FULL


Transactions > Set Up Budgets FULL
Lists > Perform Search FULL
Lists > Accounts VIEW
Lists > Classes VIEW
Lists > Customers VIEW
Lists > Departments VIEW
Lists > Items VIEW
Lists > Locations VIEW
Lists > Subsidiaries VIEW
Reports > Balance Sheet VIEW
Reports > Income Statement VIEW
Reports > Financial Statements VIEW
Setup > Web Services FULL
Setup > Manage Accounting Periods VIEW
Setup > Accounting Lists EDIT

If you are a NetSuite OneWorld customer with multiple subsidiaries, grant the role access to all subsidiaries and check the cross-subsidiary record viewing
permission box.

For instructions on how to set up the integration, review NetSuite topics here: Concept: Import Data

https://adaptiveplanning.doc.workday.com/internal/api/webapp/print/cf68a36e-acff-4c1b-a7f3-3518c2517b53 465/465

You might also like