> ## Documentation Index
> Fetch the complete documentation index at: https://learn.nextedy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Bulk Plan Creation

> Create multiple Polarion Plans at once from the Nextedy PLANNINGBOARD toolbar using pattern-based naming and automatic date sequencing — without leaving the board.

## Prerequisites

* The **New Plan** feature must be enabled in your widget parameters (see [Widget Parameters Overview](/planningboard/guides/configuration/widget-parameters)).
* You need write access to the Polarion project where Plans will be created.
* Decide on a `Template ID` matching an existing Polarion plan template in your project (for example, `iteration` or `release`).

***

<Steps>
  <Step title="Open the New Plan Configuration">
    In your widget parameters, navigate to the **New Plan** section. Enable the feature. The toolbar on your board will show a **plus (+) button** once the board reloads.

    The following fields control how bulk Plans are generated:

    | Parameter           | Purpose                                                           | Example            |
    | ------------------- | ----------------------------------------------------------------- | ------------------ |
    | `Template ID`       | Polarion plan template to use                                     | `iteration`        |
    | `Parent ID`         | Optional parent Plan under which new Plans are created            | `Version_3_0`      |
    | `Plan Name Pattern` | Display name template using `{planNum}` and `{teamName}`          | `Sprint {planNum}` |
    | `Plan ID Pattern`   | Unique ID template using `{planNum}` and `{teamId}`               | `Sprint_{planNum}` |
    | `New Plan Duration` | Duration of each newly created Plan                               | `14` (days)        |
    | `Last Plan Query`   | Lucene query to find the "last plan" for auto-numbering           | `type:iteration`   |
    | `Last Plan Sort`    | Sort field to determine which plan is "last" (default: `dueDate`) | `dueDate`          |

    <Warning title="Predefined patterns include Teams placeholders">
      The default `Plan Name Pattern` and `Plan ID Pattern` values include `{teamName}` and `{teamId}` respectively. If you are **not** using Teams, change these patterns before creating Plans — otherwise the placeholders will appear literally in the Plan name and ID.
    </Warning>

    ***
  </Step>

  <Step title="Configure Name and ID Patterns">
    Patterns use two placeholders:

    * **`{planNum}`** — replaced with an auto-incremented integer. Required for auto-numbering to work. The system scans plans matching your `Template ID` in the project, extracts the number from the last plan's ID, and increments by 1. If no prior plans are found, numbering starts at 1.
    * **`{teamName}`** — replaced with the team's display name (for multi-team creation).
    * **`{teamId}`** — replaced with the team's identifier (for multi-team ID uniqueness).

    **Example — single-team iteration setup:**

    ```text theme={null}
    Plan Name Pattern:  Sprint {planNum}
    Plan ID Pattern:    Sprint_{planNum}
    ```

    This produces Plans named `Sprint 4`, `Sprint 5`, etc., with IDs `Sprint_4`, `Sprint_5`.

    **Example — multi-team setup:**

    ```text theme={null}
    Plan Name Pattern:  PI {planNum} - {teamName}
    Plan ID Pattern:    PI_{planNum}_{teamId}
    ```

    This produces `PI 3 - Team Alpha` / `PI_3_TeamAlpha` for each configured team.

    <Tip title="Override auto-numbering with `nextNumber`">
      If the auto-detected starting number is wrong (for example, after renaming old Plans), you can specify `nextNumber` explicitly in the widget parameters to force a specific starting value.
    </Tip>

    ***
  </Step>

  <Step title="Set Dates">
    By default, Planningboard calculates start and end dates automatically:

    * If a `nextStartDate` is **not** specified, the system determines the start date from the tail (most recent) plan matching your template and parent configuration, or from the parent Plan's dates.
    * If you specify `nextStartDate` (in `YYYY-MM-DD` format), that value takes precedence over all automatic date logic.
    * Each subsequent plan's start date is calculated by adding `New Plan Duration` to the previous plan's start date.

    <Warning title="Date format is strict">
      `nextStartDate` must be in `YYYY-MM-DD` format. Any other format is not parsed correctly and the system falls back to automatic date calculation.
    </Warning>

    ***
  </Step>

  <Step title="Optionally Enable Teams">
    If your project uses Teams, enable **Enable Teams** and configure one or more teams with their name and ID:

    ```text theme={null}
    Enable Teams: true
    Teams:
      - name: Team Alpha
        id:   TeamAlpha
      - name: Team Beta
        id:   TeamBeta
    ```

    When Teams are enabled, clicking the **plus (+)** button creates one Plan per team in a single transaction. All Plans are created or none are created — if any Plan fails to create, the entire batch is rolled back automatically.

    <Tip title="One Plan at a time without Teams">
      When Teams are disabled, clicking **+** creates exactly one Plan using the `{planNum}` placeholder only. This is the simpler setup for projects with a single team or no team segmentation.
    </Tip>

    ***
  </Step>

  <Step title="Create Plans from the Toolbar">
    Once configured:

    1. Open the Planningboard page in Polarion.
    2. Click the **plus (+) button** in the toolbar.
    3. A confirmation dialog appears showing the resolved values — review the Plan name, ID, start date, end date, and parent.
    4. Confirm to create.

    The board refreshes and the new column(s) appear immediately.

    ***
  </Step>
</Steps>

## How the Process Flows

<Frame>
  <img src="https://mintcdn.com/none-17b4493f/zUlmOSLBIQ0HyaAX/planningboard/diagrams/guides/planning/bulk-plan-creation/diagram-1.svg?fit=max&auto=format&n=zUlmOSLBIQ0HyaAX&q=85&s=a17b61a619388489653118f7f1a4140b" alt="Flow from widget parameters through preparePlansParams (resolving plan number, applying name and ID patterns, calculating dates), to createPlans running as a single transaction, ending with the board refreshing to show the new columns" width="640" height="470" data-path="planningboard/diagrams/guides/planning/bulk-plan-creation/diagram-1.svg" />
</Frame>

***

## Common Pitfalls

<Warning title="Parent ID scopes all new Plans">
  If you set `Parent ID`, every new Plan is created under that parent regardless of which Plans are currently visible on the board. Verify the parent ID matches the correct Version or PI before bulk-creating.
</Warning>

<Warning title="Plan ID must be unique across the project">
  The `Plan ID Pattern` generates the Polarion plan ID. If a plan with that ID already exists in the project (even in a different space), creation fails for that plan and the entire batch is rolled back.
</Warning>

<Warning title="Capacity whitespace sensitivity">
  Capacity configuration parameters are whitespace-sensitive. A stray space in a capacity field value can cause unexpected behavior in capacity bars after Plans are created. Double-check values in the widget parameters before confirming creation.
</Warning>

***

## Verification

After clicking **Confirm** in the creation dialog, you should now see:

* New column(s) appear on the right side of the board, each labeled with the resolved Plan name.
* The new Plan(s) exist in Polarion's Plans section with IDs matching your `Plan ID Pattern`.
* Capacity bars (if enabled via `Show Capacity Load`) display for the new columns.
* If `Assign to Parent Plan` is enabled, work items you drag into the new Plan are also automatically planned into its parent Plan.

If columns do not appear after creation, use the **Refresh data** toolbar button to reload the board.

***

## See Also

* [Create Plans](/planningboard/guides/planning/creating-plans) — create a single Plan interactively
* [Use Plan Templates](/planningboard/guides/planning/plan-templates) — reuse Plan structures across projects
* [Widget Parameters Overview](/planningboard/guides/configuration/widget-parameters) — full parameter reference including New Plan fields
* [Configure Plans (Columns)](/planningboard/guides/configuration/plans-configuration) — control which Plans appear as columns
* [Track Team Capacity](/planningboard/guides/capacity/team-capacity) — set up capacity tracking for newly created Plans
* [SAFe Planning Workflows](/planningboard/guides/planning/safe-planning) — bulk Plan creation in a SAFe hierarchy

<Accordion title="Sources">
  **KB Articles**

  * Planningboard Widget Parameters
  * Introduction to Planningboard
  * Planningboard interface & basic interactions

  **Support Tickets**

  * [#6174](https://support.nextedy.com/helpdesk/tickets/6174)
  * [#5879](https://support.nextedy.com/helpdesk/tickets/5879)
  * [#4711](https://support.nextedy.com/helpdesk/tickets/4711)

  **Source Code**

  * `Config.java`
  * `PlanningService.java`
  * `Item.java`
  * `PlanningBoardWidgetRenderer.java`
  * `PlansMode.java`
</Accordion>
