Forgot password?
⚠ Invalid credentials. Please try again.
Dashboard
?
👤 My Shift Today
📅 Today's Shifts — All
⚠ Unassigned Alerts
🏢 Department Overview
DepartmentBuildingEmployeesThis Month ShiftsStatus
Loading...
Loading...
📍 Building:
With employees · excludes holidays & leave
📅 Mon → Fri
📅 Mon → Sat
📅 Mon → Sun
Loading…
🗓️ Roaster Management
📍 Building:
With employees · excludes holidays & leave
📅 Mon → Fri
📅 Mon → Sat
📅 Mon → Sun
📋
Loading roster...
⏰ Shift Types
NameCodeStartEndDurationApplies To DaysTypeColorActions
👥 Users & Roles
NameUsernameRoleDepartmentBuildingSub DeptWork DaysStatusActions
🏢 Departments
NameCodeBuildingColorStatusActions
🔀 Sub Departments
NameCodeParent DepartmentColorStatusActions
🏗️ Buildings
NameAddressCityStatusActions
🏖️ Public Holidays
DateNameDayApplies ToActions
🌴 Applied Leaves
EmployeeTypeFromToStatusActions
🗓️ Saturday Off
EmployeeDateNotesActions
🌴 Leave Cover Swaps
Rollback handled from Leave List
Pending Swapper Accepted Manager Approved
ProgressRequesterTheir ShiftSwap WithTarget ShiftNotesActions
🔄 Direct Swap Requests
Pending Swapper Accepted Manager Approved
ProgressRequesterTheir ShiftSwap WithTarget ShiftNotesActions
🗓️ Saturday Leave Swaps
Have a Saturday off assigned but need leave on a different Saturday? Pick your assigned off-date and the Saturday you want leave on — only eligible swap partners are shown.
ProgressRequesterTheir Off DateWants Leave OnSwap PartnerNotesActions
🏖️ Public Holidays
DateHolidayDayTypeApplies To
🔄 My Sunday Shifts
DateShiftStatus
🗓️ My Saturday Offs
DateNotes
🏖️ Public Holidays
DateHolidayType
🌴 My Leave History
TypeFromToDaysStatus
🔄 My Swap Requests
DateShiftWithStatus
🔄 Sunday Duty
Sunday Duty Pool — All Buildings (only employees with "Can work Sundays" enabled in their profile)
🏖️ Public Holiday Duty
🇮🇳 PH Duty Pool — India (covers India-only and shared holidays)
🇺🇸 PH Duty Pool — United States (covers US-only and shared holidays)
🤖 Auto Assignment
Configure which days each employee works, their building and shift — then assign for a month. Existing shifts on those days are replaced. Public Holidays and approved leaves are always skipped.
Assign For Month
Day Preset
Assign For Year
Assigns selected days for the entire year using per-employee presets below. Replaces existing shifts. PH & leaves skipped.
Clear Shifts For Month
Clear Shifts For Year
Deletes all auto-assigned shifts on the selected days (Mon–Fri / Mon–Sat / Custom). Public Holidays are always excluded.
Employee Presets — Building & Shift Per Person
🗓️ Saturday Rotation
Set which employees get Saturday Off each week. Months with 4 Saturdays use the 4-week plan; months with 5 Saturdays use the 5-week plan.
📅 4-Week Plan — months with exactly 4 Saturdays
📅 5-Week Plan — months with 5 Saturdays
📅 6-Week Plan — months with 6 Saturdays (rare)
Click "Preview Year" to see the Saturday rotation for each month.
🔔 Custom Alerts
Set minimum staff thresholds for Sunday duty and Public Holidays, then add any extra custom rules below. Dashboard alerts fire when conditions are not met.
☀️
Sunday / Shuffle Day Alert
Minimum total staff across all buildings
Set 0 to disable alert
Configured in Sunday Duty section above
🏖️
Public Holiday Alert
Minimum total staff across all buildings on PH days
Set 0 to disable alert
Also used when generating PH shifts
Additional Custom Rules
Add rules for specific buildings, days, or shift patterns.
🏢 Organization
⚙️ Roaster Preferences
Mandatory Shift Alerts
Highlight unassigned dates in red
Email Notifications
Send shift reminders via email
🔐 My Security
Email OTP on Login
Send a one-time code to your email each time you log in
Authenticator App (TOTP)
Use Google Authenticator or similar app for login
📧 Email Configuration (SMTP)
Use SSL/TLS
Enable for port 465
🔔 Email Notification Preferences
Choose which events trigger email notifications
🌐 Global MFA Enforcement
Force all employees to use MFA when logging in
Enforce Email OTP for All
Every user must verify via email OTP on each login — overrides individual settings
Enforce Authenticator App for All
Every user must have TOTP authenticator set up — overrides individual settings
⚠️ Enabling these will affect all users on next login. Users without MFA set up will be prompted to configure it.
📋 Audit Log
TimeUserActionEntityDetailsIP
📧 Roaster Emails
Scheduled & manual roster emails sent to all employees
🗓️ Weekly Full Roaster Email
Disabled
Send the full next-week roster to all employees every week
📅 Daily Roaster Emails
E.g. "Every Friday → send Saturday roster", "Every Saturday → send Sunday roster"
🏖️ Public Holiday Roaster Alert
Disabled
Send the holiday roaster to all employees N days before each public holiday
📬 Send Log
Click Refresh to load send history.

📧 Report Config

Configure the mailbox integration for Daily Reports and manage which employees are required to send reports.

📬 Mail Provider
🔐 Microsoft 365 — Azure App Credentials
Register an app in portal.azure.com → App Registrations → API Permissions → Microsoft Graph → Mail.Read (Application)
📋 Setup Steps — How to register the Azure App
  1. Go to portal.azure.com → search App registrations
  2. Click + New registration → Name: DutyFlow Reports → Single tenant → Register
  3. Go to API permissions → Add a permission → Microsoft Graph → Application permissions → search Mail.Read → Add
  4. Click Grant admin consent → Yes
  5. Go to Certificates & secrets → New client secret → Copy the Value
  6. Go to Overview → Copy Application (client) ID and Directory (tenant) ID
⚙️ Report Settings
🚫 Exclude Employees from Daily Reports
Excluded employees will not appear in the Daily Reports grid and won't be counted as missed.

💬 WhatsApp Notifications

Configure which alerts get posted to your WhatsApp group, and when. Requires the WhatsApp bridge service to be running.

Loading…
🔧 Backup Configuration
Auto Backup
Automatically create backups
📦 Create Backup

Create a full snapshot of all DutyFlow data (users, roster, leaves, swaps, settings).

Local backups stored in: /opt/duty-roaster/backups/
📤 Restore from File
⚠️ Restoring will overwrite all current data. A safety backup is automatically created before restore.
🕐 Backup History
FilenameDateTypeSizeActions
Click a day to assign shifts
Week
Actions:
📋 Clipboard ready
📅
Select a day above