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 |
If you have duplicate names for levels, you need an additional column in the data source XSLX file for Code. Code uniquely identifies levels when duplicate level names exist.
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.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.EnableCreate level if not found in Planning. This setting makes new levels if the loader can't find levels with the same name inAdaptive Planning.
- Column Mapping
- Because of the data source spreadsheet's format and columns, the column mappings for this loader must be:Planning ColumnSource ColumnParent IdParentIdLevel IdidLevel NameLevelRemember, 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.ClickSavein 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.

Option | Description |
|---|---|
1 | Expanded tree within |
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:

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 42sTo 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
:
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
.