Actions and results
What each Calendar button and automatic behaviour does, with worked numbers and what the system refuses.
On this page (24)
CalendarEvent formEvent dialogEvent form > RepeatRepeating event scopeCalendar > layersSettingsResourceResourcesAppointment typeBook an appointmentAppointment cardPublic booking pageCustomer manage pageAppointmentsRemindersMeeting load by personRoom and equipment utilisationAppointments by type and outcomeOverviewCalendar settingsShared calendarsSubscribe in other appsICS feed
Calendar
| Action | When | What you do | What happens |
|---|---|---|---|
| Personal calendar made on first use | A test user with the Calendar user role who never opened the app | Open Calendar for the first time; look at My Calendars; open Configuration > Shared calendars | 'My Calendar' (تقويمي) exists, ticked, blue; listed as Kind 'Yours', Your role 'owner'; opening the app twice at the same moment still makes only one |
| Switch views and move through time | Some events this month | Press Month, Week, Day, Agenda; use previous / next and Today; click a day number in Month | Month = 6 weeks from the week start; Week = 7 days; Day = 1 day; Agenda = next 30 days, empty days left out ('Nothing planned in the next 30 days.' when none). Day number opens that day in Day view. The last view is remembered after a reload |
| Week start from settings | Settings: Week starts on = Sunday | Open Month and Week view and the mini-month | First column is Sunday in all three; weekend columns (Sat, Sun) are shaded in Month |
| '+N more' in a month cell | 5 events on one day | Month view; look at the day; press '+2 more' | 3 chips shown, then '+2 more'; pressing it opens that day in Day view |
| Tick calendars and layers on and off | A shared calendar and the HR layer available | Untick the shared calendar and HR & Leave; reload the page | Their items disappear at once and stay hidden after the reload (preference saved); ticking brings them back |
| Time zone of the person | An event Asia/Dubai 09:00-10:00 on Mon 5 Oct 2026 | Time zone > Change > Europe/London; look at the event; change back to Company (Asia/Dubai) | Stored 05:00-06:00 UTC; London (summer time UTC+1 until 25 Oct 2026) shows 06:00-07:00; Dubai shows 09:00-10:00 again; the rail shows the chosen zone |
| Search and kind filter | Events titled 'Sales Review' and 'Team Briefing'; one with location 'Conference Room A' | Search 'review'; then search 'conference'; clear; Filters > Kind = Call | 'review' finds Sales Review (title); 'conference' finds the event by its location; Kind = Call shows only calls; module layer items are hidden while searching or filtering |
| Upcoming in the right rail | Events today and later this week, one declined | Look at Upcoming; press View all -> | Next 3 items not yet ended, not cancelled, not declined; place or 'Online meeting' shown; View all opens Overview |
Event form
| Action | When | What you do | What happens |
|---|---|---|---|
| Create a timed event with the default length | Settings: New events last 60, Default reminder 15 | Click the 09:00 slot on Mon 5 Oct 2026 in Week view; Title 'Planning'; Save | Starts 09:00, Ends 10:00 (09:00 + 60 min); one bell reminder 15 min before; organiser = you (accepted); event shows in Week view; Audit 'calendar.event.created' |
| Ends is kept the same length when Starts moves | New event 09:00-10:30 | Change Starts to 11:00 | Ends jumps to 12:30 (length 1 h 30 kept) |
| End before start refused | Starts 10:00, Ends 09:00 (type it); Save | Refused: 'The event ends before it starts.'; nothing saved | |
| Longest event is 60 days | Starts 1 Oct 2026 09:00, Ends 5 Dec 2026 09:00; Save | Refused: 'An event lasts at most 60 days; repeat it instead.' | |
| All-day and multi-day event | All day on; From 8 Oct 2026, To 9 Oct 2026; Title 'Site visit'; kind Out of office; Save | Shows on both days in the All day row / as a bar in Month; no default reminder; the event dialog says Thu 8 - Fri 9 Oct; stored as 7 Oct 20:00 UTC to 9 Oct 20:00 UTC (Dubai midnight to midnight) | |
| Event in another time zone | Your zone Asia/Dubai | New event 10:00-11:00 with Time zone Europe/London on 6 Oct 2026; Save; open it | Drawn at 13:00-14:00 in your Dubai view (London UTC+1, Dubai UTC+4); the dialog adds '(Europe/London)' after the time |
| Invite colleagues and see who is busy | Colleague B has a busy meeting 10:00-11:00 that day | New event 10:30-11:30; Colleagues: B and C | 'Busy then: B' warning appears (free/busy only, no title); after Save B and C each get a bell 'Invitation: <title>' with date, zone and 'from <your username>' |
| Guests by e-mail | Guests: 'guest1@example.com; guest2@example.com'; Save; open the event | Two external attendees, 'No answer yet'; no invitation e-mail is sent to them (reminders only) | |
| Online link check | Online meeting link 'meet.example.com/x'; Save; then 'https://meet.example.com/x' | First refused: 'An online link starts with https://.'; second saved and 'Join online' opens it in a new tab | |
| Private event | Shared calendar SALES that colleague B reads | Create in SALES a Private event 'Doctor' 16:00-17:00; as B open the calendar and the event | B sees a chip 'Busy' at 16:00-17:00 with no title, place, link, notes or attendees; .ics button hidden for B |
| Show as Free | Create an event with Show as = Free; as a colleague check your free/busy in a new event form | No 'Busy then' warning for you at that time; the event does not block appointment slots | |
| Reminders on an event | Add reminders: 1 day before by E-mail and 30 min by Notification; try a 6th (API) | Two reminders saved and shown in Reminders > Coming up; 'Add reminder' disappears at 5; a 6th via API is refused 'At most five reminders.' | |
| Free/busy shows intervals only | Colleague B has events 09:00-10:00 and 09:30-11:00 (one Private) and one Free event 14:00 | As A call freebusy for B for that day (or open a new event at 09:30 with B invited) | One merged busy span 09:00-11:00; no titles; the Free event is not busy |
| Room double booking refused | Conference Room A booked 10:00-11:00 on 6 Oct 2026 by 'Client Meeting' | Book it for 10:30-11:30; then for 11:00-12:00 | First refused (409): 'Conference Room A is already booked 2026-10-06 10:00 to 11:00 for “Client Meeting”.'; second accepted (touching ends do not clash) |
| Repeating booking clashing later | Room booked on Mon 19 Oct 2026 10:00-11:00 | New weekly Monday 10:00 x4 from 5 Oct with the room | Refused naming the 19 Oct booking (the third occurrence); nothing saved |
Event dialog
| Action | When | What you do | What happens |
|---|---|---|---|
| Edit a single event | An event you organise | Open; Edit; change title and location; Save | Saved; revision +1; attendees (not declined) get a bell 'Changed: <title>'; Audit 'calendar.event.updated' scope all |
| Answer an invitation | You are invited by A | Open the event; Going? Maybe; then No | Your answer shows on the attendee line; A gets a bell '<you> tentative: <title>' then '<you> declined: <title>'; Overview stops listing it as waiting |
| Cancel a single event | An event with a room and two colleagues | Cancel event; confirm | Status cancelled (record kept, gone from the calendar views); room released; colleagues get 'Cancelled: <title>'; Edit and Cancel buttons gone |
| Download one event as .ics | An event with location and online link | Press .ics; open the file in a calendar app | One VEVENT: SUMMARY, LOCATION, URL, DTSTART/DTEND in UTC (Z); STATUS CONFIRMED; a repeating event carries its RRULE |
| Organiser is always an attendee | Create an event with no colleagues; open it | You are listed as '(organiser) · Going' |
Event form > Repeat
| Action | When | What you do | What happens |
|---|---|---|---|
| Weekly on chosen days, a number of times | Starts Mon 5 Oct 2026 09:00; Weekly, every 1, Mo + We; ends after 6 times; Save | Exactly 6 occurrences: 5, 7, 12, 14, 19, 21 Oct 2026, all 09:00 Dubai; none on 26 Oct | |
| Ends on a date is inclusive | Daily from Thu 1 Oct 2026 10:00, ends on 3 Oct 2026 | Occurrences 1, 2 and 3 Oct (the until day itself included) | |
| Monthly on the 31st skips short months | Starts Sat 31 Oct 2026 09:00; Monthly on the same day; ends after 4 times | 31 Oct 2026, 31 Dec 2026, 31 Jan 2027, 31 Mar 2027 (November and February have no 31st and are skipped, not moved) | |
| Monthly on the same weekday | Starts Tue 13 Oct 2026 (2nd Tuesday) 14:00; Monthly on the same weekday; ends after 4 times | 13 Oct, 10 Nov, 8 Dec 2026, 12 Jan 2027 (each the 2nd Tuesday); the dialog shows '(#2 weekday)' | |
| Every second week / yearly | Weekly every 2 weeks on Mo from 5 Oct 2026, 3 times; Yearly from 29 Feb 2028, 2 times (API) | 5 Oct, 19 Oct, 2 Nov 2026; the 29 Feb series lands on 29 Feb 2028 and 29 Feb 2032 (only leap years) |
Repeating event scope
| Action | When | What you do | What happens |
|---|---|---|---|
| Change only this occurrence | Weekly Monday 09:00 x10 from 5 Oct 2026 | Open the 12 Oct occurrence; Edit; Starts 11:00 (same day); Save; choose This event | 12 Oct moves to 11:00 as its own event; the series still shows 5, 19, 26 Oct... at 09:00; there is no 09:00 on 12 Oct; attendees and reminders carried to the moved one |
| Cancel only this occurrence | Same series | Open the 19 Oct occurrence; Cancel event; This event | 19 Oct gone; the others stay; colleagues get 'Cancelled: <title>' with that date and time |
| Change this and following | Weekly Monday 09:00 x10 from 5 Oct 2026 (last 7 Dec) | Open the 26 Oct occurrence (4th); Edit; title 'Briefing v2'; Save; This and following | Old series ends 25 Oct (5, 12, 19 Oct); a new series 'Briefing v2' starts 26 Oct with 7 left (10 - 3), last 7 Dec 2026; total still 10 |
| This and following from the first occurrence | Same series | Open the 5 Oct (first) occurrence; Edit; Save; This and following (API: scope following, first occurrence) | Refused: 'From the first occurrence, change the whole series.' |
| Cancel this and following / all | A weekly series with one moved occurrence | Cancel from the 3rd occurrence with This and following; on another series Cancel with All events | First: series ends the day before the 3rd; second: whole series cancelled, its moved occurrences cancelled too and their rooms released |
| Wrong occurrence refused | A weekly series | PUT the event with scope this and an occurrence that is not in the series (API) | Refused: 'That is not an occurrence of this series.' |
Calendar > layers
| Action | When | What you do | What happens |
|---|---|---|---|
| HR & Leave layer | A public holiday in an HR working calendar; your approved leave; a colleague's pending leave | Tick HR & Leave; look at the month; click your leave | Holiday (once even if on several working calendars; '(half day)' marked); 'You - <leave type>'; colleague leave only if you hold hr.employee.view, marked '(pending)'; payroll cut-off and pay day only with payroll.view; Open goes to the leave request in HR |
| Sales, Projects and Maintenance layers | A planned CRM activity assigned to you, an open deal you own with an expected close, a project milestone, a maintenance work order | Tick each layer; click an item; press Open | Activity on its due date; 'Expected close: <deal>'; '<milestone> - <project>' and 'Project due: <project>'; work order at its local time; Open goes to the record in its module; nothing can be edited here |
Settings
| Action | When | What you do | What happens |
|---|---|---|---|
| Layer colours | PUT settings with layer_colors {"hr": "#0d9488"} (API only - no screen field) | HR & Leave dot and items turn #0d9488; a bad colour refused 'Use a colour like #2563eb.' |
Resource
| Action | When | What you do | What happens |
|---|---|---|---|
| Add a room | calendar.manage | Resources > New resource: CONF-A, Conference Room A, Room, 12 seats, Floor 3; Save | Listed in the register and the schedule; offered in the event form as 'Conference Room A (12)'; code stored upper-case |
| Make a room not bookable | A room with a future booking | Edit; Bookable off; Save; try to book it | Refused: 'Conference Room A is not bookable now.'; it leaves the event form list and the schedule |
Resources
| Action | When | What you do | What happens |
|---|---|---|---|
| Day schedule | Bookings today in two rooms | Open Resources; step days with the arrows; pick a date | Bars between working-day hours (start hour to end hour + 1); a private event shows 'Busy'; inactive resources not listed |
Appointment type
| Action | When | What you do | What happens |
|---|---|---|---|
| Create and publish a type | calendar.appointment; two staff | New type: CONSULT, Consultation, 30 min, step 30, buffer after 10, notice 4 h, horizon 30, Mon-Fri 09:00-13:00, 14:00-17:00, staff two people, Public booking page on; Save | Card shows the hours and staff; 'Booking page' and 'Copy link' appear; the link opens the public page |
| Publishing needs staff | New type with nobody in 'Who takes these' and Public booking page on; Save | Refused: 'Name who takes these appointments before publishing.' |
Book an appointment
| Action | When | What you do | What happens |
|---|---|---|---|
| Slots respect hours, buffers and busy time | Type 30 min, step 30, window 09:00-12:00, buffer after 15; staff B has a meeting 10:00-10:30 that day | Book appointment; pick the type and that day | Free times 09:00, 10:30, 11:00, 11:30 (09:30 is gone: 09:30-10:00 + 15 min buffer runs into the 10:00 meeting; 10:00 is the meeting) |
| Minimum notice and horizon | Type with notice 2 h, horizon 1 day; it is 10:05 Dubai | Look at today's and the day after tomorrow's free times | Today starts at 12:30 (10:05 + 2 h = 12:05, next step); the day after tomorrow shows 'No free time this day.' (beyond the horizon) |
| Holidays and the room | A full-day public holiday tomorrow; type with a room that is booked 11:00-11:30 | Look at tomorrow and at a normal day | Tomorrow: no free time (Closed on public holidays on); the normal day: 11:00 missing because the room is taken |
| Staff book a customer | A published type | Pick a slot; name Test Customer One, e-mail customer1@example.com, phone +971500000001; Book | Appointment APT-00001 (next number), state confirmed, source Staff; event '<type> - Test Customer One' (kind appointment) in the least-busy free staff member's calendar with the customer as guest; staff bell 'New appointment'; customer e-mail with the manage link |
| Fair spread among staff | Two staff free all day, staff X already has 2 bookings of this type that day, Y has 0 | Book a slot both are free for | It goes to Y (fewest bookings of this type that day) |
Appointment card
| Action | When | What you do | What happens |
|---|---|---|---|
| Confirm a requested booking | Type with 'Staff confirm'; a customer booked on the public page | Open the Requested tab; open the row; Confirm | State confirmed; its event goes from Tentative to Confirmed; Confirm button gone |
| Done and no-show | A confirmed appointment that has started; another in the future | Mark done on the first; try No-show on the future one (API) | First: state done. Future: buttons not shown; API refused 'It has not started yet.' |
| Staff cancel | A confirmed appointment with a room | Cancel; reason 'Customer asked to move' | State cancelled with the reason; its event cancelled and the room released; the slot is offered again |
Public booking page
| Action | When | What you do | What happens |
|---|---|---|---|
| Customer books online | Published type; signed out (private window) | Open the link; pick a day and 10:00; name, e-mail customer2@example.com; Book this time | 'Thank you, Test Customer Two'; 'Your appointment is confirmed.' (or 'requested - we will confirm it shortly' for Staff confirm); facts with Reference APT-nnnnn; 'manage your appointment' link; source Booking page in the register |
| Same slot twice | The slot just booked | Book the same day and time again with another e-mail | Refused on the page: 'That time is no longer available. Choose another slot.'; the slot is no longer offered |
| Three upcoming bookings per e-mail | customer2@example.com has 3 upcoming live bookings of this type | Book a 4th with the same e-mail | Refused: 'You already have three bookings of this kind coming up.' |
Customer manage page
| Action | When | What you do | What happens |
|---|---|---|---|
| Customer cancels in time | Booking 3 days ahead; cancel notice 24 h | Open the manage link; reason 'Travelling'; Cancel this appointment | 'Your appointment is cancelled.'; state cancelled; staff bell 'Cancelled by customer: <name>'; the cancel button disappears; the slot is offered again |
| Customer too late to cancel | Type with cancel notice 720 h; booking 3 days ahead | Open the manage link; Cancel this appointment | Refused: 'It can be cancelled online up to 720 hours before it starts; please call us.'; still confirmed |
Appointments
| Action | When | What you do | What happens |
|---|---|---|---|
| Register tabs and counts | Appointments in several states | Click each tab; search by number and by customer e-mail; sort by When | Tab counts match the rows; Upcoming = requested/confirmed from now; search finds by number, name or e-mail; paging works |
Reminders
| Action | When | What you do | What happens |
|---|---|---|---|
| Bell reminder sent once | Event 09:00 today with a 15-min bell reminder; B invited (accepted), C declined | Wait until 08:45 (job runs every minute); check bells; wait two more minutes | At 08:45 organiser and B each get one bell 'Starting 09:00: <title>'; C gets nothing; no second bell on later runs; Reminders > Sent to you lists it |
| No reminder for a cancelled event or skipped occurrence | A series with one occurrence cancelled; a cancelled single event | Wait past their reminder times | Nothing sent for either |
| E-mail reminder to a customer | Appointment booked more than 25 h ahead with an e-mail; a company mail account set up | Wait until 1 day before | Customer gets 'Reminder: <type> - <name> at <date time>' from the staff member's account; without a mail account the bell still rings (e-mail skipped) |
| Coming up list | Events with reminders in the next 14 days | Open Reminders | Each reminder with its remind-at time (start - minutes), sorted; channel icon; times in your zone |
Meeting load by person
| Action | When | What you do | What happens |
|---|---|---|---|
| Meeting hours | October 2026: A organises a 1 h meeting with B, and a 1 h 30 call with B and an external guest; B declines the call | Open the report for October 2026 | A: 2 meetings, 2.5 hours, With outside people 1; B: 1 meeting, 1 hour; all-day events and kinds task/reminder/other not counted |
Room and equipment utilisation
| Action | When | What you do | What happens |
|---|---|---|---|
| Utilisation % | Working day 09:00-18:00; October 2026 has 22 weekdays (Mon-Fri); room booked 19.8 h in October | Open the report for October 2026 | Open hours 198 (22 x 9); Hours 19.8; Utilisation 10.0 %; holidays are not removed |
Appointments by type and outcome
| Action | When | What you do | What happens |
|---|---|---|---|
| No-show rate | Type CONSULT in October: 3 done, 1 no-show, 2 confirmed, 1 cancelled | Open the report | Booked 7; No-show % = 1 / (3 + 1) = 25.0 % |
Overview
| Action | When | What you do | What happens |
|---|---|---|---|
| Tiles | Two events today, one invitation waiting, one appointment today, 1 of 3 rooms in use, this week 10:00-11:00 and 10:30-11:30 | Open Overview | Today 2; Awaiting your answer 1; Appointments today 1; Rooms in use now 1 / 3; Your busy hours this week 1.5 (overlaps merged) |
| Answer from Overview | An invitation waiting | Press Accept | It leaves Invitations; the tile goes down by 1; the organiser gets a bell |
Calendar settings
| Action | When | What you do | What happens |
|---|---|---|---|
| Save settings | calendar.manage | Week starts Sunday; working day 08:30-17:30; New events last 30; Default reminder 10; Save | 'Saved.'; new events are 30 min with a 10-min reminder; Week view scrolls to 07:00 (start hour - 1); Audit 'calendar.settings.saved' |
Shared calendars
| Action | When | What you do | What happens |
|---|---|---|---|
| Make a shared calendar with members | calendar.manage; colleagues B (viewer) and C (editor) | New calendar: SALES, Sales, Its members only, readers B, editors C; Save | B and C see 'Sales' in My Calendars (B role viewer, C editor); D (not a member) does not; C can create events in it, B cannot (calendar not offered) |
Subscribe in other apps
| Action | When | What you do | What happens |
|---|---|---|---|
| Make, renew and stop the feed | Make my address; open it in a browser; New address; open the old one; Stop sharing; open the new one | First link downloads the .ics with your events from 30 days back; after New address the old link answers 'Not found' (404); after Stop sharing the new one is 404 too |
ICS feed
| Action | When | What you do | What happens |
|---|---|---|---|
| Feed content | Your calendar with a weekly series (one occurrence cancelled, one moved), a private event of yours, a cancelled event, an event you declined | Subscribe the feed in a calendar app | Series as one event with RRULE and EXDATE; moved occurrence separately; your private event keeps its title (CLASS:PRIVATE); cancelled and declined ones absent; hidden calendars left out |