Enter your username or email. If MFA is enabled on your account we will send a reset code to your email.
📧
OTP Sent!
A 6-digit reset code has been sent to your email.
🔒
MFA Not Enabled
Password reset via OTP requires Email OTP or an Authenticator App to be enabled on your account.
Since neither is enabled, please contact your Duty Manager or Admin to reset your password.
👤 Your admin can reset passwords from Users & Roles → Edit User
✅
Password Reset!
Your password has been updated. You can now sign in with your new password.
Dashboard
Notifications
No notifications
?
—
—
👤 My Shift Today
📅 Today's Shifts — All
⚠ Unassigned Alerts
🏢 Department Overview
Department
Building
Employees
This Month Shifts
Status
build: dept-lock-v4
Loading...
Loading...
📍 Building: —
With employees · excludes holidays & leave
📅 Mon → Fri
📅 Mon → Sat
📅 Mon → Sun
Loading…
⚙️ Day View Settings
Default Display Mode
Default Sort
Show unassigned employees
Include employees with no shift today
Show leave / day-off entries
Show employees on leave or off today
Building Display Order
Drag to reorder — first building appears at the top
🗓️ Roaster Management
📍 Building: —
With employees · excludes holidays & leave
📅 Mon → Fri
📅 Mon → Sat
📅 Mon → Sun
📋
Loading roster...
⏰ Shift Types
👥 Users & Roles
🔍
Name
Username
Phone
Role
Department
Building
Sub Dept
Work Days
Status
Actions
🏢 Departments
Name
Code
Building
Color
Status
Actions
🔀 Sub Departments
Name
Code
Parent Department
Color
Status
Actions
🏗️ Buildings
Name
Address
City
Status
Actions
🏖️ Public Holidays
Date
Name
Day
Applies To
Actions
🌴 Applied Leaves
Employee
Type
From
To
Status
Actions
🗓️ Saturday Off
Employee
Date
Notes
Actions
🗓️ Saturday Off — Monthly Coverage
🌴 Leave Cover Swaps
Rollback handled from Leave List
Pending Swapper Accepted Manager Approved
Progress
Requester
Their Shift
Swap With
Target Shift
Notes
Actions
🔄 Direct Swap Requests
Pending Swapper Accepted Manager Approved
Progress
Requester
Their Shift
Swap With
Target Shift
Notes
Actions
🗓️ 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.
Progress
Requester
Their Off Date
Wants Leave On
Swap Partner
Notes
Actions
🏖️ Public Holidays
Date
Holiday
Day
Type
Applies To
🔄 My Sunday Shifts
Date
Shift
Status
🗓️ My Saturday Offs
Date
Notes
🏖️ Public Holidays
Date
Holiday
Type
🌴 My Leave History
Type
From
To
Days
Status
🔄 My Swap Requests
Date
Shift
With
Status
🔄 Sunday Duty
▾
Sunday Duty Pool — All Buildings (only employees with "Can work Sundays" enabled in their profile)
👥 Sunday Roaster — Full Year Auto-Assign
Click "Preview" to see the full Sunday rotation.
✏️ Manual Assign — Pick a Date & Employee
Select Employee(s)
📋 Current Assignments for Year
🗑️ Clear Sunday Roaster
Removes all roster entries for every occurrence of the selected day in the chosen year.
🏖️ Public Holiday Duty
▾
🇮🇳 PH Duty Pool — India (covers India-only and shared holidays)
🇺🇸 PH Duty Pool — United States (covers US-only and shared holidays)
✏️ Manual Assign — Pick a Holiday & Employee
Select Employee(s)
📋 Holiday Assignments for Year
🗑️ Clear PH Roaster
Removes all roster entries for every public holiday in the chosen year.
🤖 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
Select Days
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
⚡ Assign Saturday Rotation
🗑️ Clears all existing rotation Saturday Off leaves for this year
⚡ Applies your configured 4/5/6-week plan to every Saturday
✅ Manual individual leaves and swap leaves are not affected
🗓️ 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.
New Alert Rule
🏢 Organization
⚙️ Roaster Preferences
Mandatory Shift Alerts
Highlight unassigned dates in red
Email Notifications
Send shift reminders via email
🏷️ Department Access for Tools
Restrict each tool below to one department — DMs, managers, and employees outside that department won't see it in their sidebar at all. Leave as "All Departments" for a tool everyone should keep seeing.
🔐 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
Scan this QR code with your authenticator app:
📧 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.
🖥️ Server Info
Loading…
📋 Audit Log
🔍
Time
User
Action
Entity
Details
IP
📧 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
Click + New registration → Name: DutyFlow Reports → Single tenant → Register
Go to API permissions → Add a permission → Microsoft Graph → Application permissions → search Mail.Read → Add
Click Grant admin consent → Yes
Go to Certificates & secrets → New client secret → Copy the Value
Go to Overview → Copy Application (client) ID and Directory (tenant) ID
🔐 Gmail / Google Workspace
Create a Service Account in Google Cloud Console with Gmail API access and domain-wide delegation.
⚙️ Report Settings
🚫 Exclude Employees from Daily Reports
Excluded employees will not appear in the Daily Reports grid and won't be counted as missed.
📸 Server Room Photos
Upload today's server room photo for each building, then get it verified. Verification is only possible once a photo is uploaded.
📅 Daily
📊 Reports
Loading…
Server Room
Verifier(s)
Days Missed Upload
Days Missed Verify
Loading…
🚪 Manage Server Rooms
A building can have multiple server rooms — each gets its own daily upload/verify.
Add a Room
Bulk Import
One room per line, format: BuildingCode | Room Name — building code must match an existing building's name exactly.
Current Server Rooms
Loading…
👤 Manage Verifiers
Applies to every building. Anyone checked here can verify any building's server room photo.
📋 Manage Uploaders
Applies to every building. Everyone is included by default — uncheck anyone who won't be uploading. Whoever's left checked shows as "pending" on any building they're actually rostered at today, if it hasn't uploaded yet.
🗑️ Photo Auto-Expiry
Older server room photos (files and their records) get permanently deleted after this period. This can't be undone. Runs automatically once a day.
⏰ Upload Timings
Restrict uploading to a daily time window. Outside this window, the Upload button is blocked (this is independent of Exceptions — a blocked room still shows in the missed-upload alert, it isn't treated as excused).
From
:
to
:
(IST)
🔍 Preview & Approve All
Every building you can verify that's uploaded today but hasn't been verified yet. Review them, then approve them all in one go.
Loading…
⚙️ Exception Settings
These settings apply to every building — not configured separately per building.
Weekend Exception
Days everyone is automatically excused every week — no upload/verify expected, no alerts sent.
Specific Days Exception
Excuse everyone for a date range at once (e.g. company shutdown).
Current Exceptions
Edit the reason or remove an exception entirely.
Loading…
🚫 Mark Exception
❌ Reject Photo
This removes the photo and emails the uploader so they know to re-upload.
Who was on shift
Loading…
🔥 Firewall Screenshots
Upload today's firewall screenshot for each building, then get it verified. Verification is only possible once a screenshot is uploaded.
📅 Daily
📊 Reports
Loading…
Firewall
Verifier(s)
Days Missed Upload
Days Missed Verify
Loading…
🔌 Crimping Tracker
Each week, tracked employees upload a photo + the number of cables crimped, then get it tested and approved.
📅 Weekly
📊 Reports
Loading…
Employee
Weeks Approved
Total Crimped
Working
Not Working
Pending
Handed to Client
Loading…
💾 Server Backup Screenshots
Each server has its own cadence — some daily, some weekly. This always shows the live status for right now, not a specific date to browse.
Loading…
🔌 Manage Crimping List
Only employees added here are tracked. Leave the weekly target blank to use the global default (20/week).
Presets:
⚙️ Crimping Settings
Presets:
⏰ Upload Timings
Restrict uploading to a weekly window, set relative to each week's Monday. Default: opens Monday 12:00 AM, closes the following Monday 5:00 PM (matching the verification deadline). Outside this window, the Upload button is blocked — independent of Exceptions, so a blocked employee still shows in the weekly status alert, not treated as excused.
Opens
at
:
(IST)
Closes
at
:
(IST)
⏰ Handoff Deadline
Once a verifier assigns a tester, the cables must physically reach that tester by this deadline — set relative to the week's Monday. Default: the following Monday at 5:00 PM. Shown on the card as a countdown, and flagged ⚠️ overdue once passed with no test results submitted yet.
Cables must reach the tester by
at
:
(IST)
🗑️ Photo Auto-Expiry
Older crimping photos (both weekly stock uploads and direct-to-client handoffs — files and their records) get permanently deleted after this period. This can't be undone. Runs automatically once a day.
✏️ Edit Crimping Record
Edits are recorded in the audit log and update the approved totals if this was already approved.
🚫 Exception Settings
These settings apply to every employee — not configured separately per person.
Weekend Exception
Days excluded from every crimping week (defines the working-week span — e.g. Sunday off means weeks run Mon–Sat). A week is only auto-excused entirely if every remaining working day in it is a public holiday.
Specific Days Exception
Excuse every week touched by a date range at once (e.g. someone on leave, or a shutdown).
Current Exceptions
Edit the reason or remove an exception entirely.
Loading…
📤 Weekly Crimping
This adds to the week's running total — submit again any other day you crimp more, right up until uploads close for the week.
🎁 Direct Handover to Client
Extra cables handed straight to a client — non-mandatory, doesn't count toward the weekly stock target, and skips straight to final approval (no testing step).
🔬 Assign Tester
Pick who should test these cables — anyone except whoever did the crimping.
📝 Submit Test Results
🔍 Preview & Approve All
Every employee you can approve who's uploaded this week but hasn't been verified yet. Review them, then approve them all in one go.
Loading…
❌ Reject Screenshot
🔍 Preview & Approve All
Every server you can approve that's uploaded but hasn't been verified yet. Review them, then approve them all in one go.
Loading…
💾 Manage Servers
Add a Server
Bulk Import
One server per line, format: BuildingCode | Name | daily-or-weekly
Current Servers
Loading…
👤 Manage Verifiers
Anyone checked here can verify any server's screenshot, plus superadmins always can.
📋 Manage Uploaders
Who's expected to upload — shown as "Pending" on the daily card until they do.
🚫 Add Exception
⚙️ Exception Settings
These settings apply to every server — not configured separately per server.
Weekend Exception
Days everyone is automatically excused every week — no upload/verify expected, no alerts sent.
Specific Days Exception
Excuse everyone for a date range at once (e.g. company shutdown).
Current Exceptions
Edit the reason or remove an exception entirely.
Loading…
🗑️ Screenshot Auto-Expiry
Older backup screenshots (files and their records) get permanently deleted after this period. This can't be undone. Runs automatically once a day.
⏰ Upload Timings
Restrict uploading to a daily time window — applies regardless of a server's cadence (daily/weekly controls how OFTEN, this controls what TIME OF DAY). Independent of Exceptions.
From
:
to
:
(IST)
🔥 Manage Firewalls
A building can have multiple firewalls — each gets its own daily upload/verify.
Add a Firewall
Bulk Import
One firewall per line, format: BuildingCode | Name — building code must match an existing building's name exactly.
Current Firewalls
Loading…
👤 Manage Verifiers
Applies to every building. Anyone checked here can verify any building's firewall screenshot.
📋 Manage Uploaders
Applies to every building. Everyone is included by default — uncheck anyone who won't be uploading. Whoever's left checked shows as "pending" on any building they're actually rostered at today, if it hasn't uploaded yet.
🗑️ Photo Auto-Expiry
Older firewall screenshots (files and their records) get permanently deleted after this period. This can't be undone. Runs automatically once a day.
⏰ Upload Timings
Restrict uploading to a daily time window. Outside this window, the Upload button is blocked (this is independent of Exceptions — a blocked firewall still shows in the missed-upload alert, it isn't treated as excused).
From
:
to
:
(IST)
🔍 Preview & Approve All
Every building you can verify that's uploaded today but hasn't been verified yet. Review them, then approve them all in one go.
Loading…
⚙️ Exception Settings
These settings apply to every building — not configured separately per building.
Weekend Exception
Days everyone is automatically excused every week — no upload/verify expected, no alerts sent.
Specific Days Exception
Excuse everyone for a date range at once (e.g. company shutdown).
Current Exceptions
Edit the reason or remove an exception entirely.
Loading…
🚫 Mark Exception
❌ Reject Photo
This removes the photo and emails the uploader so they know to re-upload.
Who was on shift
Loading…
💬 WhatsApp Notifications
Configure which alerts get posted to your WhatsApp group, and when. Requires the WhatsApp bridge service to be running.
Connection
Checking…
Bridge Auto-Restart
The WhatsApp bridge can occasionally go stale over a long uptime — it still shows "Connected" but silently stops sending. Cycling the process fixes it without needing to re-scan the QR code. Optionally schedule this daily so it doesn't need to be caught manually.
:
(IST)
Disconnect Email Alert
WhatsApp can't notify about its own disconnection — this emails you the moment it goes down, so it's not discovered only when someone happens to check. Sends once per disconnection, not repeatedly.
Alert Recipients
Anyone or any group who should get tailgating alerts.
Add Recipient
For a group: paste its invite link and click Resolve — the Label and Target fill in automatically.
Recipients
Label
Target
Type
Active
Loading…
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
Filename
Date
Type
Size
Actions
No backups yet
—
—
Click a day to assign shifts
—
Week
Actions:
📋 Clipboard ready
📅
Select a day above
Assign Shift
New Shift Type
Shift types belong to one department. Need the same timing in another department? Add it there separately rather than sharing this one.
Mon
Tue
Wed
Thu
Fri
Sat
Sun
💡 Red = Mandatory for that building | Unselected = Manageable
Add User
⭐ Duty Manager
Can approve leaves & swaps for a specific department — independent of their own role
Mon
Tue
Wed
Thu
Fri
Sat
Sun
🗓️ Special Duty Eligibility
New Department
New Sub Department
Add Building
Server room photo verifiers are managed in Other Tools → Server Room Photos → Manage Verifiers.
📥 Paste Roaster
Shifts will be pasted starting from the 1st of the selected month
Add Holiday
India
United States
📋 Bulk Import Holidays
Select which holidays to import. Edit names/dates as needed. Choose which departments each applies to.
Add Leave
📢 Cover Request
↩ Rollback Saturday Leave Swap
⚠ This will reverse all roster and leave changes. Both employees will be notified by email.
🗓️ Saturday Leave Swap
Loading...
— or —
💡 These employees are working a non-mandatory shift on . They can directly cover your shift — no partner swap needed. On your assigned-off day you'll take their shift.
🔄 New Direct Swap Request
📅 Upcoming Sunday & PH Duty — Swap Suggestions
Loading...
Date *
Shift on that day
Select a date first
Their Shift on this date
—
Options
📋 Copy shifts
📥 Paste here
✕ Clear clipboard
Mandatory Override
🔓 Set Optional for this person
🔒 Set Mandatory for this person
Danger
🗑️ Delete shifts this day
✗ Reject Leave
↩ Rollback Leave
🔄 Swap Request Details
ℹ️ By accepting, your shift on that date will be exchanged with the requester's. The manager will then approve or reject.