> ## 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.

# Cross-Project Planning

> Plan and schedule work items from multiple Polarion projects on a single Nextedy PLANNINGBOARD using project swimlanes and cross-project plan queries.

***

## Overview

Cross-project planning lets you bring work items from several sub-projects onto one board, giving program managers and Scrum masters a unified view of capacity and scheduling across teams. The board uses the **Project** (`PROJECT`) assignment mode to split swimlanes by sub-project, while a shared Plan query selects which Plans appear as columns.

<Frame>
  <img src="https://mintcdn.com/none-17b4493f/zUlmOSLBIQ0HyaAX/planningboard/diagrams/guides/planning/cross-project-planning/diagram-1.svg?fit=max&auto=format&n=zUlmOSLBIQ0HyaAX&q=85&s=89254b851f9897c164ed121c07f0626e" alt="Cross-project Planningboard with one swimlane per sub-project (Team A, Team B, Team C) and Sprint 1-3 Plan columns, showing work items distributed into each team/sprint cell" width="660" height="375" data-path="planningboard/diagrams/guides/planning/cross-project-planning/diagram-1.svg" />
</Frame>

<Warning title="Sub-projects only">
  The **Project** (`PROJECT`) assignment mode includes only **readable sub-projects** within the current project group. It does not include the current project itself, and it cannot reach projects outside the group hierarchy.
</Warning>

***

## Prerequisites

* Planningboard is installed and licensed in your Polarion instance.
* Your Planningboard page lives inside a **project group** that contains the sub-projects you want to plan across.
* You have permission to read work items in each sub-project.
* You are familiar with adding a Planningboard widget to a LiveDoc page. See [Create Your First Planningboard](/planningboard/getting-started/first-planning-board) if not.

***

<Steps>
  <Step title="Open the widget configuration">
    1. Navigate to the LiveDoc or Wiki page that hosts your Planningboard widget.
    2. Expand the widget tools and click **Edit** to open the widget configuration panel.

    ***
  </Step>

  <Step title="Set the Plans mode to Project Plans">
    In the **Plans (Columns)** section of the widget configuration:

    1. Set **Plans Mode** to **Project Plans** (`PROJECT_PLANS`).

       ```properties theme={null}
       plansMode = PROJECT_PLANS
       ```

       This is the default mode. It loads Plans from the current project using a Lucene query and organizes them chronologically as columns.

    2. Adjust how many past and future Plans appear on the board using the **Last Plans** and **Next Plans** counters:

       ```properties theme={null}
       lastPlans = 1
       nextPlans = 5
       ```

       The defaults show one completed Plan and five upcoming Plans. Increase `nextPlans` if your planning horizon spans more sprints.

    3. Optionally, add a **Plans Query** to restrict which Plans appear as columns. For example, to show only sprint Plans:

       ```properties theme={null}
       plansQuery = type:sprint
       ```

    <Tip title="Plan items configuration is only available in Project Plans mode">
      The plan items section in the configuration panel appears only when `plansMode` is set to `PROJECT_PLANS`. If you switch to a SAFe mode, those options are hidden.
    </Tip>

    ***
  </Step>

  <Step title="Set the assignment mode to Project">
    In the **Swimlanes (Rows)** section:

    1. Set **Assignment Mode** to **Project** (`PROJECT`).

       ```properties theme={null}
       assignmentMode = PROJECT
       ```

       The board will create one swimlane per readable sub-project within the current project group. The current project itself is excluded.

    <Warning title="Project mode does not support capacity normalization">
      When using **Project** (`PROJECT`) assignment mode with `planCellsMode`, verify your setup against the live product — normalization behavior in cross-project configurations is not confirmed in the source context.
    </Warning>

    ***
  </Step>

  <Step title="Configure the work item query">
    In the **Work Items Dataset** section, set a Lucene query that targets the work item types you want to plan across all sub-projects:

    ```properties theme={null}
    query = type:story AND NOT status:done
    ```

    Adjust the type and status filters to match your project's work item type IDs. The `maxItems` parameter (default: `1000`) limits the total number of work items loaded across all sub-projects:

    ```properties theme={null}
    maxItems = 1000
    ```

    <Warning title="Large project groups can hit the item limit quickly">
      If you have many sub-projects, the combined result set may reach `maxItems` before all sub-projects are fully represented. Tighten your query (for example, restrict by iteration date or status) or increase `maxItems` to compensate.
    </Warning>

    ***
  </Step>

  <Step title="Handle the cross-project plan loading workaround">
    There is a known Polarion issue where selecting a plan template from another project causes the page to become unresponsive. If you encounter this symptom, apply the following workaround at the **global Polarion administration level** (not at the project level):

    ```properties theme={null}
    nextedy.planningboard.workaround_siemens_issue_global_plans=false
    ```

    <Warning title="Apply this property at global administration level">
      This configuration property must be added in the global Polarion administration settings — not inside a project's `context.properties`. Applying it at the project level has no effect.
    </Warning>

    ***
  </Step>

  <Step title="Save and verify">
    1. Save the widget configuration.
    2. The board reloads. You should now see:
       * One **column per Plan** that matches your `plansQuery`, ordered chronologically.
       * One **swimlane per sub-project** within the project group.
       * Work items distributed into the cell that corresponds to their assigned Plan and their source sub-project.
    3. Verify that all expected sub-projects appear as swimlanes. If a project is missing, confirm that your Polarion user account has read access to that sub-project.

    ***
  </Step>
</Steps>

## Configuration example

The following widget parameter set configures a cross-project Planningboard showing the last sprint and the next four sprints, grouped by sub-project, displaying only Stories that are not yet done:

```properties theme={null}
plansMode       = PROJECT_PLANS
assignmentMode  = PROJECT
plansQuery      = type:sprint
lastPlans       = 1
nextPlans       = 4
query           = type:story AND NOT status:done
maxItems        = 1000
```

***

## Drag-and-drop across projects

Once the board is set up, drag-and-drop works as on a single-project board:

* Drag a card from the **Unplanned** sidebar onto a Plan column to assign it to that sprint.
* The card stays in its sub-project swimlane — dragging horizontally changes the Plan assignment; dragging vertically changes the swimlane (resource) assignment, which in **Project** (`PROJECT`) mode is not applicable for cross-project moves.

<Tip title="Items with status Verified cannot be moved">
  Cards with the **Verified** status are locked on the board and cannot be dragged or unplanned, regardless of which project they belong to.
</Tip>

See [Drag and Drop Planning](/planningboard/guides/planning/drag-and-drop) for full drag-and-drop reference.

***

## Limitations

* **Project (`PROJECT`) assignment mode excludes the current project.** Only sub-projects within the group are shown.
* **No multi-assignee swimlane split in Project mode.** Unlike the **Users (Assignee)** (`ASSIGNEE`) mode, the **Project** (`PROJECT`) mode shows one swimlane per project — it does not further subdivide by assignee within each project.
* **Capacity bars require additional setup.** Capacity tracking across multiple projects is not automatically configured; see [Configure Capacity Tracking](/planningboard/guides/configuration/capacity-configuration) for setup steps.
* **Cross-project plan template selection** may trigger a Polarion responsiveness issue — apply the `nextedy.planningboard.workaround_siemens_issue_global_plans=false` property as described in Step 5.

***

## See also

* [Project Swimlanes](/planningboard/guides/swimlanes/project-swimlanes) — detailed reference for the **Project** (`PROJECT`) assignment mode
* [Configure Plans (Columns)](/planningboard/guides/configuration/plans-configuration) — Plans query and column configuration
* [Configure Swimlanes (Rows)](/planningboard/guides/configuration/swimlanes-configuration) — all assignment modes
* [Widget Parameters Overview](/planningboard/guides/configuration/widget-parameters) — full parameter reference
* [Drag and Drop Planning](/planningboard/guides/planning/drag-and-drop) — moving cards between Plans
* [Configure Capacity Tracking](/planningboard/guides/configuration/capacity-configuration) — capacity bars and load visualization

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

  * Introduction to Planningboard
  * Planningboard interface & basic interactions
  * How to setup Planningboard into existing projects (based on E-library template)

  **Support Tickets**

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

  **Source Code**

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