Skip to main content

Prerequisites

  • A dedicated calendar project with work item calendars already configured (see Set Up Work Item Calendars)
  • Access to Administration > Configuration Properties in both the calendar project and each consuming project

Step 1: Identify the Calendar Project Settings

In your calendar project, find the following values:
  • Project ID: The Polarion project ID of the calendar project (visible in the URL or project settings)
  • Global Calendar Work Item ID: The ID of the Calendar-type work item used as the global (company) calendar

Step 2: Configure the Calendar Project

Add these properties in the calendar project under Administration > Configuration Properties:
nextedy.gantt.workitemCalendar.projectId=CalendarProject
nextedy.gantt.workitemCalendar.globalID=CAL-1
Replace CalendarProject with the actual project ID and CAL-1 with the actual global calendar work item ID.

Step 3: Configure Each Consuming Project

In every project that should use the shared calendar, add the same properties under Administration > Configuration Properties:
nextedy.gantt.workitemCalendar.projectId=CalendarProject
nextedy.gantt.workitemCalendar.globalID=CAL-1
These properties must be present in both the calendar project and every consuming project. If a consuming project is missing the properties, its Gantt will not load calendar data from the shared project.
diagram

Step 4: Enable Working Calendars in Each Widget

In each consuming project’s Gantt widget, navigate to the Working Calendars section in the widget parameters:
  1. Set Use Working Calendar to Yes
  2. Set Load User Calendars to Yes
  3. Optionally enable Load Team Assignments for team-scoped capacity
The Gantt looks up each resource’s calendar in the shared calendar project by matching the Assignee field on Calendar work items to the resource’s Polarion user ID. Cross-project calendar resolution involves querying work items in another project, which can be slow on large installations. Enable caching to improve performance:
nextedy.gantt.workingCalendar.useCache=true
Enable nextedy.gantt.workingCalendar.useCache=true in each consuming project’s configuration properties. The cache is cleared automatically by the scheduled cache clearing job, or manually via the admin API endpoint.

How Calendar Resolution Works

When the Gantt loads in a consuming project:
  1. The Gantt reads nextedy.gantt.workitemCalendar.projectId to determine the source project
  2. For each resource, it searches for a Calendar work item in the source project where the Assignee matches the user and the From/To date range contains today
  3. If a user calendar is found, it loads the regular working hours and all linked exceptions (Time Off, Time On, Tweak) via the affects link role
  4. If no user calendar is found, the global calendar (specified by nextedy.gantt.workitemCalendar.globalID) is used as the fallback
Each user-specific calendar in the shared project must have the Assignee field set to the correct Polarion user. Without this, the Gantt cannot match calendars to resources in consuming projects.

Verify

You should now see that time off and custom working hours defined in the central calendar project appear as grey markers and adjusted capacity values in the resource view of each consuming project’s Gantt chart.

See Also

KB ArticlesSupport TicketsSource Code
  • prod-gantt-src/com.nextedy.polarion.gantt/src/com/nextedy/polarion/gantt/widget/GanttWidgetDependenciesProcessor.java
  • prod-gantt-src/com.nextedy.polarion.gantt.client/cypress/e2e/Aresource-view/AganttInitialEstimation.cy.ts
  • prod-gantt-src/com.nextedy.polarion.gantt/src/com/nextedy/polarion/gantt/model/impl/CalendarBuilder.java
  • prod-gantt-src/com.nextedy.polarion.gantt/src/com/nextedy/polarion/gantt/ConfigPropertiesConsts.java
  • prod-gantt-src/com.nextedy.polarion.gantt/src/com/nextedy/polarion/gantt/model/impl/WorkingCalendarConfigStore.java