Ga naar hoofdinhoud

Calendars

The Calendars settings page lets you define working-day patterns, public holidays, and calendar exceptions for your organization, projects, and resource groups. These calendars drive scheduling calculations across the PPM (Project Portfolio Management) module.

Overview​

ProBeya supports a hierarchical calendar model with three types:

TypeScopeExample
OrganizationApplies to the entire tenantCompany-wide working days and public holidays
ProjectOverrides the org calendar for a specific projectA project running 6 days per week
ResourceOverrides for a resource pool or teamA night-shift team with different hours

Child calendars inherit from their parent and override only the settings they change. Only one calendar can be marked as the default per organization.

Getting Started​

  1. Navigate to Settings > Calendars.
  2. Click Create Calendar to define a new calendar.
  3. Select the calendar type (organization, project, or resource).
  4. Configure weekdays, work hours per day, and start/end times.
  5. Optionally set a parent calendar to inherit from.
  6. Save, then add exceptions (holidays, special working days).

How It Works​

Working Days​

Select which days of the week are working days. Each day (Monday through Sunday) is a boolean toggle. The default is Monday to Friday (mon: true, tue: true, wed: true, thu: true, fri: true, sat: false, sun: false).

Exceptions​

Exceptions override the normal weekday schedule for specific dates:

Exception TypeDescriptionWork Hours
HolidayA normally working day that is non-working (e.g., Christmas)0
Working DayA normally non-working day that is working (e.g., Saturday make-up)Full day
Partial DayA day with reduced work hours (e.g., half-day on December 24th)Custom hours

Each exception records a date, type, name (optional label), and work hours for that day. Exceptions can be added individually or in bulk.

Calendar Inheritance​

When a project or resource calendar has a parent, ProBeya resolves the full calendar by walking the chain from child to root:

  1. Start at the child calendar.
  2. Walk up through each parent calendar.
  3. At each level, merge weekday patterns and exceptions (child overrides parent).
  4. The result is a combined calendar with the most specific settings applied.

Circular references are prevented: the resolver tracks visited calendar IDs and stops if a cycle is detected.

waarschuwing

Deleting a calendar that is referenced as a parent by other calendars is blocked. You must remove or reassign all child calendars first.

Calendar Preview​

The settings page includes a month-by-month preview showing which days are working, non-working, or exceptions. Use the month navigation to inspect any period.

Configuration​

SettingTypeDescription
NameStringHuman-readable calendar name
TypeEnumorganization, project, or resource
WeekdaysObjectBoolean flags for each day (mon through sun)
Work Hours Per DayDecimalDefault hours per working day (e.g., 8.0)
Default Start TimeTimeStandard day start (e.g., 09:00)
Default End TimeTimeStandard day end (e.g., 17:00)
Parent CalendarStringOptional parent calendar ID for inheritance
Is DefaultBooleanWhether this is the organization's default calendar

When a calendar is marked as the default, any previously default calendar is automatically toggled off.

Bulk Exception Import​

The calendar system supports bulk creation of exceptions via the bulkCreateExceptionsSchema. This is particularly useful for importing an entire year of public holidays at once:

  1. Open a calendar's exception manager.
  2. Click Bulk Import.
  3. Provide an array of exceptions, each with a date, type, name, and work hours.
  4. All exceptions are inserted in a single database operation.

Permissions​

  • Organization Admins and Owners can create, edit, and delete calendars.
  • Members with project-level permissions can view calendars assigned to their projects.
  • All calendar operations are scoped to the current organization for multi-tenant isolation.
  • Calendars can be filtered by type (organization, project, or resource) in the list view.

Tips & Best Practices​

tip

Create a single organization-level calendar first with your company's standard working days and public holidays. Then create project- or resource-level calendars that inherit from it, overriding only what differs.

  • Use the Bulk Import feature in the Holiday Manager to add an entire year of public holidays at once.
  • Review your calendars before each fiscal year to ensure holidays are up to date.
  • The calendar preview helps you visually verify that exceptions are applied correctly.
  • Keep calendar names descriptive (e.g., "Belgium 2026" or "Night Shift Team A").
  • For multi-site organizations, create one organization calendar per country, then assign the appropriate one as parent for each site's project calendars.

Working Day Utilities​

ProBeya provides helper functions that use the calendar configuration:

  • isWorkingDay(date, calendar) -- Determines whether a specific date is a working day by checking the weekday pattern and exceptions.
  • getWorkHours(date, calendar) -- Returns the number of work hours for a specific date, accounting for partial days.
  • mergeCalendarExceptions(parent, child) -- Combines exception lists from parent and child calendars, with child exceptions taking precedence for overlapping dates.
  • mergeWeekdays(parent, child) -- Combines weekday patterns from parent and child calendars.

These utilities are used throughout the PPM module for schedule calculations, effort estimation, and resource allocation.