---
title: "How to: Create Multi Period Import Specs in IBM Controller Web"
description: "This article explains how to create an **[Import Specification](https://www.aramar.co.uk/knowledge-share/ibm-controller/how-to-using-controller-web-for-data-import-via-import-specifications/) in [IBM Controller Web](https://www.aramar.co.uk/knowledge-share/ibm-controller/ibm-controller-web-vs-classic-key-differences/)** to load budget data where **each period is stored in a separate column** in an Excel file. This approach is commonly used for annual budget files, where…"
url: "https://www.aramar.co.uk/knowledge-share/ibm-controller/how-to-create-multi-period-import-specs-in-ibm-controller-web/"
updated: "2026-04-01"
category: IBM Controller
---

# How to: Create Multi Period Import Specs in IBM Controller Web

This article explains how to create an **[Import Specification](https://www.aramar.co.uk/knowledge-share/ibm-controller/how-to-using-controller-web-for-data-import-via-import-specifications/) in [IBM Controller Web](https://www.aramar.co.uk/knowledge-share/ibm-controller/ibm-controller-web-vs-classic-key-differences/)** to load budget data where **each period is stored in a separate column** in an Excel file.

This approach is commonly used for annual budget files, where January to December values sit side by side across the spreadsheet.

## Step 1: Prepare the Controller database

Before creating the Import Specification, ensure the target actuality and periods are unlocked.

1. Open **Controller Classic**
2. Go to **Period Locking**
3. Unlock:

   - The **BU Budget** actuality
   - All relevant periods (for example, periods **2801 to 2812**)

This must be done before any data can be imported.

## Step 2: Confirm the correct project in Controller Web

When using **Looping by period**, the project selected in Controller Web is important.

- The project must be set to the **first period of the data**
- In this example, the project is **2801 BU Budget**

This ensures Controller knows where to start when looping across periods during the import.

## Step 3: Open Import Settings

![Controller ](https://www.aramar.co.uk/wp-content/uploads/2026/01/Screenshot-2026-01-21-at-16.33.00-1024x502.png)

1. In **Controller Web**, open **Import Data**
2. Select **Import Settings**
3. Go to the **Specifications** tab
4. Click **Create specification**

## Step 4: Create the Import Specification

![](https://www.aramar.co.uk/wp-content/uploads/2026/01/Screenshot-2026-01-21-at-16.36.05-1024x495.png)

In the **Create specification** window, define the following:

### General settings

- **Name**
  Example: `Budgets`
- **Description**
  Example:
  *This import specification is for importing budget data in column-per-period format.*
- **File type**
  `XLSX`
- **Start row**
  Set to the first row that contains data (for example, row `3`)
- Enable:

  - ✅ **Skip amount 0**
  - ✅ **Looping by period**

Click **Create** to save the specification.

## Step 5: Understand “Looping by period”

Once **Looping by period** is enabled, you’ll see a message stating:

> *Actuality and Period will be available at run time.*

![](https://www.aramar.co.uk/wp-content/uploads/2026/01/Screenshot-2026-01-21-at-16.37.58-1024x494.png)

What this means:

- You **do not** define Actuality or Period in the specification itself
- They are selected **at runtime**
- By default, Controller uses:

  - The actuality from the selected project
  - The first period of the project as the starting point

This is why starting in **2801 BU Budget** is important.

## Step 6: Configure the field mappings

Set up the standard Controller fields as usual, for example:

- Account
- Company
- Dimensions

### Amount field (key step)

![](https://www.aramar.co.uk/wp-content/uploads/2026/01/Screenshot-2026-01-21-at-16.49.01-1024x493.png)

The **Amount** field is where the period boundaries are defined.

1. Enable the **Amount** field
2. Set:

   - **Column index start**
     This is the column number where the **first period** begins in Excel
     Example: `5`
   - **Column index end**
     This is the column number where the **last period** ends
     Example: `16`

This tells Controller to loop across these columns and post each value to the corresponding period.

> Note: The difference between the start and end index must not exceed 12.

Save the specification once all fields are configured.

## Step 7: Validate and test the import

Before running the import:

1. Use **Import Data Error Report**
2. Use **Preview Report**

These reports allow you to confirm:

- Column mapping is correct
- Period looping behaves as expected
- No data issues exist before posting

 

If you prefer you can follow along with [Sarah](https://www.aramar.co.uk/the-aramar-team/sarah-dow/) on [You Tube](https://www.youtube.com/watch?v=mxBynHDYZUc)

[YouTube video player](https://www.youtube.com/embed/mxBynHDYZUc?si=nZMSSqMVCCiJPY0P)

### Still got questions?

[Talk to us](http://aramar.co.uk/contact/)
