Schedules & Calendars: A Guide to Managing User Working Patterns

Overview

Kompass uses two distinct but related concepts to define when and how employees work:

  • Schedules define the day-to-day working pattern for a user: which days they work, their start and end times, break allowances, and how those hours count towards availability, billing, and pay.
  • Calendars define public and bank holidays. A calendar is a named list of holiday dates that gets layered on top of a user's schedule to exclude non-working days from leave calculations, diary exports, and the resource schedule view.

Together, a user's schedule and calendar determine their effective working days, theoretical billable hours, and how hours recorded in their diary are counted.


Part 1: Schedules

What Is a Schedule?

A Schedule is a template that defines the working pattern across the days of the week. Each schedule contains one or more Schedule Days, each of which describes the working hours for a specific day type (Monday through Sunday, a Default fallback, or a special Holiday rule).

Schedules are managed via the Admin at Diary → Schedules.

Schedule Day Settings

Each row within a schedule represents a single day type. The columns you will see are:

Field What it does
Weekday Which day this row applies to. Options: Default, Monday–Sunday, Holiday (see below).
Start time The working day start time (e.g. 08:00).
End time The working day end time (e.g. 17:00).
Breaks Default break time in minutes, pre-filled when a user creates a diary entry on this day.
Travel Default travel time in minutes, pre-filled when a user creates a diary entry on this day.
Schedule Available ✅ If ticked, the user will appear on the Schedule (resource) view as available on this day. This controls visibility in the resource planner.
Diary Entry ✅ If ticked, the user's diary will be pre-filled with an empty entry row for this day to prompt them to log their time.
Billable ✅ If ticked, hours on this day count towards the user's theoretical billable hours shown on the dashboard. This is how Kompass knows how many hours a person should be billing.

A typical Monday–Friday schedule will have Schedule Available , Diary Entry , and Billable  all ticked for Monday through Friday, and no rows (or unticked rows) for Saturday and Sunday.


The "Default" Weekday

The Default row is a fallback. If a user records a diary entry on a day that does not have a specific row in their schedule (for example, they occasionally work on a Monday but the schedule only defines Tuesday–Thursday), Kompass uses the Default row's times and settings for that entry.

The "Holiday" Weekday (Weekday = 8)

The Holiday row is a special override. Normally, when a date falls on a bank holiday (from the user's assigned Calendar), it is excluded from leave day calculations. If you add a Holiday row to a schedule and tick Billable, you are explicitly saying: "Users on this schedule are expected to work bank holidays, and those hours count as billable." This overrides the holiday exclusion.

This is useful for deployments where some employees are contractually required to work on bank holidays (e.g. emergency services, 24/7 operations).

Schedules and Orgs

Each schedule must be associated with one or more Organisations (Orgs) via the Orgs inline at the bottom of the Schedule admin form. A user can only be assigned a schedule that belongs to their org. The org's Diary Config also holds a schedule_default; the fallback schedule used for any user who has not been explicitly assigned one.


Part 2: Assigning a Schedule to a User

There are two places where a schedule can be assigned to a user: the frontend User Detail page for everyday use, and the Django Admin for advanced date-range management.


Via the Frontend (Users → User Detail)

Navigate to Users → [select a user] in the Kompass frontend. In the Details section you will find a Schedule dropdown (visible only to users with the view_schedule  permission).

This dropdown lists all schedules belonging to the user's org. Selecting one and saving sets the user's active schedule immediately. This is the quickest way to assign or change a schedule for a single user without needing admin access.

The frontend schedule field assigns a single schedule without a date range. It reflects the user's current working pattern. For historical or future-dated schedule changes (e.g. tracking a move from full-time to part-time), use the Admin approach below.

Via the Django Admin (Advanced — Date-Range Assignments)

For more complex scenarios — particularly where a user's working pattern has changed or will change over time — schedules are managed via the User Schedule inline section on the User admin page (Admin → Users → select a user → scroll to Schedules section).

Each assignment has:

Field Description
Schedule Which schedule template to apply. Only schedules belonging to the user's org are shown.
Start The date from which this schedule applies (nullable = "from the beginning of time").
End The date until which this schedule applies (nullable = "open-ended").

You can assign multiple schedules to a single user with different date ranges. This supports employees who change their working pattern over time (e.g. moving from full-time to part-time, or returning from a career break).

Important: Date ranges on a user's schedules must not overlap. The admin will reject overlapping entries.

Schedule Fallback Chain

When Kompass needs to know a user's working pattern (for leave calculations, diary pre-fill, or the schedule view), it resolves the schedule in this order:

  1. The UserSchedule  record whose date range covers today — if one exists.
  2. If no UserSchedule  is active for the user, the org's default schedule (from Diary Config) is used.

This means every user always has an effective schedule, even if none has been explicitly set for them.


Part 3: Calendars and Holidays

What Is a Calendar?

A Calendar is a named collection of holiday dates (bank holidays). Calendars are managed via Admin → Calendars → Calendars and the associated Admin → Calendars → Holidays.

A calendar has:

Field Description
Name A descriptive name (e.g. "England & Wales", "Germany – Bayern", "US Federal Holidays").
Start / End Optional date range for when the calendar is active (typically left blank).

Each Holiday record within a calendar has:

Field Description
Calendar Which calendar this holiday belongs to.
Day The date of the holiday.
Name A descriptive label (e.g. "Christmas Day", "Tag der Deutschen Einheit").

Calendar Resolution per User

Calendars can be applied at two levels:

  1. Org level: the org's default calendar applies to all users in that org (set on the Org record).

  1. User (Profile) level: an individual user's profile can have a specific calendar assigned, which overrides the org-level calendar for that user.

The active calendar for any given user is resolved as: profile calendar (if set) → otherwise, org calendar.

This is what makes it possible to support employees working under different national holiday regimes within the same deployment.


Part 4: Supporting Employees in Different Countries

This is one of the most important practical use cases for calendars. If your organisation has employees based in different countries, for example, some in the UK and some in Germany, they will observe different public holidays. Kompass handles this cleanly by assigning each group of employees their own calendar.

Step-by-step: Setting Up Multi-Country Holidays

Step 1: Create a calendar for each country or region

Go to Admin → Calendars → Calendars and click Add Calendar.

Create one calendar per distinct set of holidays:

  • "England & Wales"
  • "Germany"
  • "US Federal"

Step 2: Add the holidays to each calendar

Go to Admin → Calendars → Holidays and click Add Holiday for each bank holiday, selecting the correct calendar and setting the date and name.

Step 3: Set the default calendar at org level (optional)

If the majority of your users follow a single country's holidays, set that calendar as the org default via Admin → Company → Orgs → [your org] → Calendar.

Step 4: Override the calendar at user level for employees in other countries

For employees who observe different holidays, go to Admin → Users → [select user] → Profile section → Calendar and select the appropriate country calendar.

That user will now have their leave working-day calculations, diary exports, and the schedule view's holiday markers driven by their individual calendar rather than the org default.


Part 5: How Calendars Affect the Rest of Kompass

Once assigned, a user's calendar has the following effects:

Leave Calculations

When Kompass calculates how many working days a period of leave spans, it excludes dates that fall on a bank holiday in the user's active calendar. For example, if an employee books leave over Christmas week, the bank holidays (Christmas Day, Boxing Day, etc.) are automatically excluded and do not count against their leave allowance.

The exception: if the user's schedule includes a Holiday row (weekday = 8), that overrides the exclusion. Those days are treated as working days even when they coincide with a calendar holiday.

Diary Exports

When exporting timesheet data, Kompass generates pseudo-diary entries for bank holidays. For each holiday in the user's calendar, the export includes a holiday entry showing the expected hours for that day (derived from the user's schedule). This allows payroll and reporting tools to account for paid public holidays without requiring employees to manually log them.

The Schedule (Resource) View

The schedule view, which shows task assignments, leave, and resource availability across the team, displays bank holidays inline on the calendar grid. These are drawn from each user's active calendar, so team members in different countries will show their respective national holidays.


Part 6: Quick Reference: Who Sets What

Action Where in Admin
Create / edit a Schedule Admin → Diary → Schedules
Add Schedule Days to a Schedule Inline on the Schedule record
Assign a Schedule to a User Admin → Users → [user] → Schedules inline
Set the org default Schedule Admin → Diary → Configs → [org config] → Schedule default
Create a Calendar Admin → Calendars → Calendars
Add Holidays to a Calendar Admin → Calendars → Holidays
Set the org default Calendar Admin → Company → Orgs → [org] → Calendar
Override a user's Calendar Admin → Users → [user] → Profile → Calendar

Summary

Concept Purpose Set on
Schedule Defines working days, times, and how hours count (available / billable / diary pre-fill) Admin → Diary → Schedules
User Schedule Assigns a schedule to a specific user for a date range Admin → Users → user record
Calendar Names a set of bank holidays for a region or country Admin → Calendars → Calendars
Holiday A single bank holiday date within a calendar Admin → Calendars → Holidays
Org calendar Default holidays for all users in an org Admin → Company → Orgs
Profile calendar Per-user override for employees under different national holidays Admin → Users → Profile
Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.

Still need help? Contact Us Contact Us