CC-482: Ability to create a note for all Participants assigned to an Appointment

Restored: Create Participant Notes for All Participants in One Action

We’ve restored the feature to the Manage Participant Notes modal that allows users to create the same note for all Participants assigned to an Appointment with a single action. Participant Note records are only created for Participants where the Delivery Activity is not Cancelled.

This significantly improves workflow efficiency for group appointments, where the same note content applies across multiple Participants.

What's Changed?

New "Create Note for All Participants" Checkbox: A checkbox has been added to the Participant Note creation UI. When enabled, the Participant lookup is cleared and disabled & Maica automatically creates a separate Participant Note for each Participant on the Appointment.

Note Cloning Logic: When the note is saved the base note is cloned for each Participant, including any content and related values & each Participant receives their own individual Participant Note record, fully linked and managed separately.

UI Enhancements: Client Goal lookup is hidden when the "Create for All" checkbox is selected, since it cannot be filtered without a selected Participant. The new checkbox is shown only when creating a new Participant Note, not during editing, to prevent confusion and incorrect record updates. The "Close" button in the modal is now labeled "Done" for clarity.

Post-Creation Display: After saving, all newly created Participant Note records are immediately displayed in the modal. Each note is editable individually, ensuring flexibility even after bulk creation.

Edge Case Handling: If a note was created with the checkbox ticked, it cannot later be used to create more multi-participant notes (i.e., no “re-triggering” the clone).

Fixes and Stability: Several bugs related to record deletion, cancellation logic, and unsaved change warnings were identified and fixed. Improvements were made to ensure proper deletion logic and list management inside the modal.

Example Scenarios:

A user edits an existing Note: ❌ The "Create for All" option is hidden to prevent unintended cloning or overwrites.

A user opens the modal, writes a note, enables the checkbox, and saves: ✅ All participants receive their own note; each is displayed in the modal after save.

A note is deleted and the user clicks Undo, then deletes again: ✅ Correct record is deleted and removed from the UI (bug fixed)

CC-487: Target Timezone for Appointments

Enhancement: Appointment Timezone Selection and Management

We’ve introduced robust timezone management capabilities for Appointments in Maica, allowing users to specify a target timezone at the time of booking. This ensures Appointments are created and viewed correctly regardless of the user’s local timezone, improving clarity for distributed care teams and enabling better cross State scheduling.

What's Changed?

Appointment Timezone Support: A new Time Zone field has been added to the Appointment object. The timezone is set automatically based on the selected Location using Google’s Time Zone API. If no Location is selected, users can manually select a Time Zone from a picklist.

Time Zone Detection & UI Enhancements: When a Location is selected, Maica uses the Location’s latitude and longitude to call the Google Time Zone API and determine the correct zone. A confirmation modal appears if the selected timezone differs from the existing one, allowing users to confirm or override the adjustment.

Example modal content includes: “The time zone for this Appointment differs from the time zone of the selected Location.” It displays both current and proposed timezones and offers options to Cancel or Update.

Visual Display & Conversion: Scheduled Start and End Times are displayed in the Appointment records Time Zone when managing or creating the record. Users will still see the adjusted times in the Planner and other parts of the UI in their own timezone, maintaining usability.

Timezone Info in the Planner: A new world icon has been added to the Planner control center that displays the user’s current browser timezone. Tooltips provide context (e.g., “Your current timezone is Sydney”).

Quick Info and Record Display: When the Appointment timezone differs from the browser’s, the time display includes the target timezone in this format: (GMT+11) Australia/Sydney

Flexible Logic & Support for Edge Cases: The timezone can be overridden in border cases (e.g., towns that operate on neighbouring timezones). If the Appointment starts and ends in different zones, Maica allows the user to choose which one applies.

Example Scenarios:

User creates an Appointment for 9:00 AM in Perth: ✅ Appointment shows as 9:00 AM in Perth timezone, but 11:00 AM for users in Sydney.

A border Location causes conflicting timezone logic: ✅ User is shown a confirmation modal and can override the timezone if needed.

A new Appointment is created with no Location: ✅ User can select the timezone manually via picklist.

A user views an Appointment created in a different zone: ✅ Maica shows the time adjusted to the viewer’s local timezone (e.g., Planner, Quick Info).

Location is updated post-save: ✅ System re-evaluates and prompts to apply new timezone via modal.

CC-506: Reinstate the Appointment Service Field for Non-Billable Notes

Fix: Appointment Service Field Restored for Non-Billable Participant Notes

We’ve reinstated the Appointment Service field on the Participant Note modal when the Billable toggle is OFF, allowing teams to record the service context of a note even when it is not billable. This change ensures improved reporting, clarity, and consistent Delivery Activity creation across all Appointment-linked notes—whether billable or not.

What's Changed?

Appointment Service Field Reinstated: When the Billable toggle is OFF, users can now still select an Appointment Service to indicate which service the note is related to. The Appointment Service field is not mandatory in this state but is available for reference and reporting.

Delivery Activity Behaviour for Non-Billable Notes: When saving a Participant Note marked as non-billable, a Delivery Activity is created with Billing Status = Do Not Bill & Quantity = 0. This ensures the record is tracked but not included in billing or claiming flows.

UI Logic Enhancements: If the note is non-billable then the Quantity field is hidden and locked at 0 and the Claim Type field is hidden entirely. The UI adjusts dynamically based on User permission set (Create Billable Participant Notes) & state of the Billable toggle

Permission-Based Visibility and Behaviour:

Users with the permission set: Can toggle between billable and non-billable, must select an Appointment Service for billable notes and can optionally select it for non-billable notes.

Users without the permission set: The billable toggle is disabled and set to false by default. The Appointment Service field is visible but optional. Cannot access Quantity or Claim Type fields.

Validation & Submission Logic Improvements: When the Billable toggle is OFF the system no longer performs funding validation for the Participant and the Quantity and Claim Type values are reset to null or 0 on submission. The logic to reset fields moved to Apex for consistency and auditability.

Example Scenarios:

A user creates a non-billable Participant Note and selects a Service: ✅ A Delivery Activity is created with Billing Status = Do Not Bill, Quantity = 0, and a linked Service

A user creates a billable note:Quantity is calculated and required; Claim Type and Appointment Service are mandatory

A user without permission accesses the note modal: ✅ Billable toggle is OFF and disabled; Service field is optional

User enables the Billable toggle, then disables it again:Quantity is reset to 0 and locked; Claim Type is hidden; validation bypassed

Legacy clients rely on Appointment Service for reporting: ✅ They can now resume using this field even for non-billable notes

CC-520: Prepopulate Participant when creating a New Participant Note from the Contact record

Enhancement: Automatically Populate Participant Lookup on New Notes

We’ve improved the workflow for creating Participant Notes directly from the Contact record, ensuring that the Participant lookup field is pre-populated when launched from the Participant’s page. This mirrors existing behaviour for Appointments and saves time when recording notes.

What's Changed?

New Autofill Logic for Participant Notes: When users click “New Participant Note” from the Participant (Contact) > Notes related list, the Participant lookup field now auto-fills with that Contact. This applies to all scenarios where the modal is opened directly from a Contact detail or related list view.

Consistent Behaviour with Appointment Creation: This enhancement brings the Participant Note creation flow into alignment with how Appointments behave—where the Participant is also auto-populated

CC-521: Create relationship between changed Schedule and New Schedule created

Enhancement: Link Between Original and New Schedules When a Recurring Schedule is Updated

We’ve introduced a new feature that adds a relationship between an original Appointment Schedule and the new Schedule that replaces it when recurring appointments are modified. This ensures better auditability and historical tracking of schedule changes—particularly useful when applying updates to future appointments from a non-master record.

What's Changed?

New “Previous Schedule” Field on the Schedule Object: A Lookup field called Previous Schedule has been added to the Appointment Schedule object. When a user applies changes to an Appointment in a recurring series (selecting “Apply changes to all future Appointments”), Maica now: Ends the original schedule, creates a new schedule and links the new schedule to the previous one via the Previous Schedule field

Reverse Relationship for Visibility: A related list on the original schedule called “Current Schedules” displays all new schedules that stem from it. This mirrors how Service Agreements track changes in Price Lists, providing a familiar experience for users.

Field Metadata & UI Configuration: The Previous Schedule field is: Read-only at both the field level and on the page layout, included in the Lightning Record Page and relevant page layouts, displayed in the new Schedule tab for easier access and labeled with tooltips and descriptions.

Applicable to Appointments and Unavailability: The same logic will be extended to Manage Unavailability, where the split schedule pattern is also used.

Field Naming and UX Design Finalised:

Related List Label: Current Schedules

Field Label: Previous Schedule

Example Scenarios:

A user edits an appointment mid-series and chooses to “Apply changes to all future appointments”: ✅ A new Schedule is created, and the Previous Schedule field is populated

A user edits the Master Appointment: ✅ No split occurs, and the Previous Schedule field remains blank

A user reviews a schedule that has been updated multiple times: ✅ The related list shows all subsequent schedules linked to the original

CC-523: Travel Management Default KM Value (0) Review

Fix: Removed Default '0' Value for KM Input in Travel Management

We’ve updated the Manage Travel modal to remove the default value of 0 KM from the Kilometres (KM) field, following feedback that users found this default confusing. The field now appears blank (null) by default, helping distinguish between no entry and a deliberate zero.

What's Changed?

KM Field Now Defaults to Null (Not 0): The Kilometres input field in the Travel Management modal no longer displays 0 by default. The value is still stored as 0 under the hood if left empty, to maintain existing logic, but the user experience now treats it as a blank input.

Improved Visual Clarity: This change makes it clear that a field showing 0 has been deliberately entered, vs a field that is blank and needs user input.

Updated Modal Labels: An asterisk (*) has been added next to the Minutes field label to indicate it is required, improving form clarity. This change was implemented following further feedback during QA.

Applies Across All Entry Points: The null default logic for KMs now applies across all Appointment-based actions: Quick Complete, Manage Appointment > Travel & Recurring Appointments

No Impact to Calculations or Stored Values: If the user enters a value, it behaves exactly as before. If the field is left blank, Maica internally treats it as 0 to ensure no downstream logic breaks.

Example Scenarios:

User opens the Travel modal and sees a blank KM field: ✅ User can enter a value or leave it empty (system stores 0 silently)

User explicitly enters 0: ✅ Value is stored and displayed as 0

Minutes field is required: ✅ Label now shows Minutes*, guiding the user correctly

Travel modal launched via Quick Complete or Manage Appointment: ✅ The KM field is now blank by default in all cases

CC-524: Update of Master Appointment Attributes → Schedule Appointments

Enhancement: Inherit Attributes from Master Appointment to Scheduled Appointments

We’ve introduced a flexible new feature allowing users to define exactly which attributes from the Master Appointment are inherited when generating recurring Appointments or Shifts. This supports edge cases where the Master is created without Participants or Resources, and allows for finer control of recurring scheduling behaviour across complex care delivery scenarios.

What's Changed?

New “Inherit Attributes” Checkboxes on Schedule: The Schedule object now includes new checkboxes that determine which data is cloned from the Master Appointment to each generated Appointment: Inherit Participants, Inherit Resources & Inherit Checklists. These options are visible in the Schedule section of the UI when setting up Recurring Appointments.

Default Behaviour Preserved: The default values for these checkboxes match existing system behaviour to ensure backward compatibility. A post-install script is included to update all existing Schedule records to reflect the current system default for each attribute.

Checklist Logic Now Included: Previously, Checklists were not copied from Master Appointments. This enhancement allows users to explicitly include Checklists when generating recurring appointments.

Flexible Use Cases Supported: Users can now create a Master Appointment with no Participants or Resources and choose to add them individually to scheduled appointments later. Maica will only inherit the selected attributes from the Master, allowing mixed or staged setups.

Shift-Specific Adjustments: For Shifts, the Participants checkbox is hidden, since Shifts do not support Participants. The descriptive header dynamically changes based on the Record Type:

Appointments: “When generating Appointments”

Shifts: “When generating Shifts”

Example Scenarios:

A Master Appointment has a Resource and Service, but no Participant: ✅ If “Inherit Resources” and “Inherit Appointment Services” are checked, these are applied to future Appointments

A user disables “Inherit Participants”: ✅ Scheduled Appointments are created with no Participants, allowing assignment later

A user enables “Inherit Checklists”: ✅ Checklist templates on the Master are applied to each Appointment in the series

A Shift is created: ✅ UI hides the “Inherit Participants” checkbox to avoid confusion

Client wants to manage future Appointments without cloning Resources: ✅ Can disable “Inherit Resources” to retain manual assignment control

CC-529: In Participant Notes Default Participant Name on Appointment Quick Action

Enhancement: Auto-Populate Participant in Notes When Only One Delivery Activity Exists

We’ve enhanced the Participant Note modal to automatically pre-populate the Participant lookup when a user opens the modal from an Appointment that has only one Participant assigned via Delivery Activity. This simplifies workflows and reduces manual input in common one-to-one care scenarios.

What's Changed?

Participant Field Now Auto-Fills: If an Appointment has exactly one Delivery Activity, Maica now: Detects the associated Participant and automatically sets this Participant as the default value in the Participant lookup when launching the New Participant Note modal.

Improved Quick Action UX: This behaviour applies when the Participant Note is created via the Quick Action on the Appointment. Maica confirms only one Delivery Activity (and therefore one Participant) exists.

No Change for Multi-Participant Appointments: If multiple Participants are associated with the Appointment then the Participant field will remain blank. Users must manually select the correct Participant.

Example Scenarios:

Appointment has 1 Delivery Activity (1 Participant): ✅ Participant Note modal auto-fills the Participant field

Appointment has 2+ Delivery Activities: ✅ Participant field remains blank — user must select

User clicks "New Note" from the Quick Action: ✅ System checks for Participant count and auto-fills if only one

CC-531: Logic Issues for Users Without Permission Set: Create Billable Participant Notes

Fix: Prevent Errors for Users Without Permission to Create Billable Notes

We resolved a defect where users who were not assigned the “Create Billable Participant Notes” permission set encountered errors when creating Participant Notes. Specifically, Maica incorrectly populated the Appointment Service field, triggering funding validations—even when the note was meant to be non-billable.

What's Changed?

Billable Toggle Now Defaults to False and Is Disabled: If a user does not have the Maica Client Care - Create Billable Participant Notes permission set: The Billable toggle is now set to FALSE by default and is disabled. This prevents Maica from attempting to validate against Participant funding rules.

Appointment Service Field Is No Longer Auto-Populated: Previously, the Default Appointment Service (set in Participant Note Settings) was auto-filled even for users without the permission. This now only applies to users with the permission set. For users without the permission, Appointment Service = null by default.

Fixes Two Related Defects:

Issue #1: A user without the permission set receives a validation error when selecting a Participant without a valid Service Agreement. ✅ Resolved by not auto-filling Appointment Service when Billable = false.

Issue #2: A user without the permission could create a note that appears to be valid (if the Participant had funding), but this conflicted with the user’s access level. ✅ Resolved by locking the form into a non-billable state, preventing unintended delivery activity creation logic.

Example Scenarios:

User without permission tries to create a note for Participant without an active Agreement: ✅ Note can be saved successfully with no Appointment Service selected

User with permission creates a billable note: ✅ Appointment Service is required and validations apply

User without permission opens New Note modal: ✅ Billable toggle is off and disabled; Appointment Service is left blank

Default Appointment Service is configured in Settings: It is only applied for users with appropriate permission set

CC-536: Participant Notes Header Changes

Enhancement: Improved Headers in Participant Notes Accordion

We’ve updated the Participant Notes accordion header to replace the internal record ID with a clearer, more meaningful label: Participant Name – Note text (truncated). This improves readability, especially when reviewing multiple notes for group Appointments.

What's Changed?

New Accordion Header Format: Accordion headers in the Manage Appointment > Participant Notes modal now display: The Participant Name, followed by a truncated preview of the Note content, stripped of rich text formatting.

Example format: Lee Bailey – Had a great session …

Removal of Auto-Number Field from Header: The previously displayed record ID or auto-number field has been removed to reduce clutter and confusion.

Length Limit & Ellipsis for Truncation: Note text in the header is limited to 100 characters. If longer, it is automatically truncated with an ellipsis (…).

CC-537: Notes Field on Mobile App Now Expanded by Default

Fix: Notes Field in Participant Notes Now Always Expanded on Mobile Devices

We resolved a usability issue where the Notes field in the Participant Note modal was collapsed by default on mobile devices, making it difficult for users to locate and open the input. The Notes field is now expanded by default across all platforms, ensuring a smoother user experience on mobile.

CC-538: Change Button to Save Participant Note

Enhancement: Improved Save Button Label and Unsaved Changes Confirmation in Participant Notes

We’ve made two usability enhancements to the Participant Note modal: replacing the unclear tick icon with a “Save” button, and adding a confirmation warning when closing unsaved Notes. These changes help prevent accidental data loss and improve clarity when interacting with Notes on desktop and mobile.

What's Changed?

New “Save” Button Label and Styling: The modal's old tick icon button has been replaced with a branded blue “Save” button featuring: White text for clarity & prominent placement in the header. This update improves visibility and better aligns with Maica’s UI standards.

Confirmation Prompt on Unsaved Close: When users click “Close” without saving their Note a modal now appears with the message: “You have unsaved changes, are you sure you want to close?”

Users must confirm before their unsaved work is discarded. This logic applies whether there are new notes or edited notes in the list.

Post Installation Scripts
If you require assistance with installing or running any script, please contact Maica Support for guidance.

CC-524: Post-Install Script to set default values of the new fields on Schedule. Please check a couple of schedule records and make sure the new Inherit fields got default values.

View Code

Map<Id, maica__Appointment_Schedule__c> schedules = new Map<Id, maica__Appointment_Schedule__c>([SELECT Id FROM maica__Appointment_Schedule__c WHERE maica__Inherit_Participants__c != TRUE AND maica__Inherit_Resources__c != TRUE AND maica__Inherit_Checklists__c != TRUE LIMIT 50000]);
for (maica__Appointment_Schedule__c schedule : schedules.values()) { schedule.maica__Inherit_Participants__c = true; schedule.maica__Inherit_Resources__c = true; schedule.maica__Inherit_Checklists__c = false;
}
if (schedules.size() > 0) { Database.executeBatch(new maica.vertic_UpdateRecordsBatch(schedules));
}

View Code

View Code

View Code

View Code

CC-530: In Maica Settings under Participant Notes tab ensure the Default Appointment Type value is selected.