39. Reschedule with a Replacement Appointment
Status
Accepted for the MVP working model; replacement Appointment, same-payment, same-entitlement, and Admin-only operation are resolved by ADR 0039. Whether reschedule is allowed after each lifecycle state, policy cutoff, approval details, and client notification/recovery remain open.
Context
Editing an Appointment's time in place destroys the original commitment, complicates audit, and can accidentally consume or release a package entitlement twice. Requiring a new payment/Booking for a staff-approved schedule change misrepresents the existing purchase.
Decision
An authorized admin performs a RescheduleAction:
- preserve the original Appointment record;
- mark it
rescheduledwith actor/time/reason and link to the replacement; - hold/claim a new AvailabilitySlot;
- create a replacement Appointment for the same Booking;
- for a package, link the replacement to the same SessionEntitlement and PackagePurchase;
- carry forward the existing Payment/financial settlement; no new Payment or entitlement is created;
- release the old slot only as part of the atomic successful action.
The replacement must pass the same overlap/concurrency constraints. If the new slot cannot be claimed, the original Appointment remains active.
Consequences
Positive:
- original and replacement schedule history are explicit;
- package balance is not double-consumed;
- financial reconciliation remains tied to the original purchase;
- failed reschedule does not destroy the working appointment.
Costs and constraints:
- Appointment state and replacement links are needed;
- action must be idempotent and transactional across old/new slot;
- notifications must distinguish changed schedule from cancellation;
- cancellation/refund policy may impose restrictions that admin must see.
Open follow-up
Define allowed reschedule lifecycle states, policy cutoff/approval interaction, and client notification/recovery behavior. Admin-only authority and replacement/same-entitlement semantics are resolved.