Back

Maica Client Care V.0.40

You can download the full release notes as a PDF above for detailed information on all updates and fixes included in this version.

If there are any post-install steps required, they will be listed below. In V.0.40, more detailed information on the Post Installation steps of the new Mobile Care Worker Experience and Support at Home Data Model are listed directly below in a seperate section.

Mobile Care Worker Experience App Post Installation Checklist

Apps & Navigation

  • Activate Maica: Care Mobile for the right profiles/permission sets and add its Home tab to mobile navigation so the Planner cmp loads on launch.

Lightning Record Pages

  • Re-activate the packaged Appointment record page so the highlights panel exposes View in Planner, Generate Invoice (Completed), Confirm Completion (Under Review), and standard actions on both desktop and phone.
  • On the Contact record page, keep the Maica - Photo component with prefix Photo and variant container-filled so the mobile photo card renders properly.

Page layouts

  • Appointment (both layouts): surface Review Reason near Status and ensure the scheduling section retains the travel minute field for visibility.
  • Appointment Resource: include the new Travel Management and Travel Approval sections with origin/destination, actual/proposed travel metrics, and approval fields.
  • Appointment Service: add Participant Notes Requirement to the main section.
  • Client Goal: expose the Archived checkbox in system information.
  • Resource & Resource Asset layouts: place Roster Mode and Primary Experience with the core identity fields.
  • Unavailability: add the All Day checkbox near the date fields.

Fields, Picklists & Access:

  • Confirm the new picklists Participant Notes Requirement and Primary Experience (Mobile/Desktop) are available to the relevant record types and permission sets; adjust value visibility if subscriber orgs lock picklists.

Permission Sets: 

  • New permission sets that were added in this release, as listed below. These should be reviewed and assigned to Users appropriately by function.
  • The following Permission Sets were added: 
  1. Maica - Global - Check In/Out on behalf of Others
  2. Maica - Global - Manage Incidents
  3. Maica - Global - Manage Own Incidents
  4. Maica - Incident - Create Access
  5. Maica - Incident - Delete Access
  6. Maica - Incident - Edit Access
  7. Maica - Incident - Read Only Access
  8. Maica - Incident Team Member - Create Access
  9. Maica - Incident Team Member - Delete Access
  10. Maica - Incident Team Member - Edit Access
  11. Maica - Incident Team Member - Read Access
  12. Maica - Planner - Support Available
  • To learn about the details of each Permission Set, please refer to the following table

Settings & Reference Data

  • Update Planner Setting records so Manage Location remains in Quick Info actions and populate Start Day of Week (defaults to Monday).
  • Fill Support Email and Support Phone on General Setting to power the Need Help modal in the planner.
  • Review Travel Setting distance and duration tolerances to align with your approval thresholds.

Validation

  • Exercise the Confirm Completion quick action on appointments and verify button visibility rules on the highlights panel.
  • Open the Need Help flow from the planner and confirm the surfaced phone/email reflect your updated settings.

Data Migration Script (Anonymous Apex):

Distribute historic appointment-level travel totals across accepted Appointment Resources so the new rollups preserve existing figures. Run in smaller batches if needed.

/**
 * Anonymous Apex: redistribute appointment-level travel metrics to accepted Appointment Resources.
 */
List<maica_cc__Appointment__c> appointments = [
        SELECT Id, maica_cc__Travel_mins__c, maica_cc__Travel_kms__c, maica_cc__Travel_Proportion__c, maica_cc__Travel_Proportion_kms__c,
        (SELECT Id, maica_cc__Status__c FROM maica_cc__Appointment_Resources__r)
        FROM maica_cc__Appointment__c
        WHERE maica_cc__Travel_mins__c != null
        OR maica_cc__Travel_kms__c != null
        OR maica_cc__Travel_Proportion__c != null
        OR maica_cc__Travel_Proportion_kms__c != null
];

List<maica_cc__Appointment_Resource__c> resourcesToUpdate = new List<maica_cc__Appointment_Resource__c>();

for (maica_cc__Appointment__c appointment : appointments) {
    List<maica_cc__Appointment_Resource__c> accepted = new List<maica_cc__Appointment_Resource__c>();
    for (maica_cc__Appointment_Resource__c resource : appointment.maica_cc__Appointment_Resources__r) {
        if ('Accepted'.equals(resource.maica_cc__Status__c)) {
            accepted.add(resource);
        }
    }

    if (accepted.isEmpty()) {
        System.debug(LoggingLevel.WARN,
                'Appointment ' + appointment.Id + ' has travel totals but no accepted Appointment Resources.');
        continue;
    }

    Integer count = accepted.size();
    Decimal totalMins = appointment.maica_cc__Travel_mins__c;
    Decimal totalKms = appointment.maica_cc__Travel_kms__c;
    Decimal totalPropMins = appointment.maica_cc__Travel_Proportion__c;
    Decimal totalPropKms = appointment.maica_cc__Travel_Proportion_kms__c;

    Decimal shareMins = totalMins == null ? null
            : (totalMins / count).setScale(0, System.RoundingMode.DOWN);
    Decimal shareKms = totalKms == null ? null
            : (totalKms / count).setScale(2, System.RoundingMode.DOWN);
    Decimal sharePropMins = totalPropMins == null ? null
            : (totalPropMins / count).setScale(0, System.RoundingMode.DOWN);
    Decimal sharePropKms = totalPropKms == null ? null
            : (totalPropKms / count).setScale(2, System.RoundingMode.DOWN);

    Decimal distributedMins = 0, distributedKms = 0, distributedPropMins = 0, distributedPropKms = 0;

    for (Integer i = 0; i < accepted.size(); i++) {
        maica_cc__Appointment_Resource__c updateRec = new maica_cc__Appointment_Resource__c(Id = accepted[i].Id);
        Boolean touched = false;

        if (totalMins != null) {
            Decimal value = (i == accepted.size() - 1)
                    ? (totalMins - distributedMins)
                    : shareMins;
            value = value.setScale(0, System.RoundingMode.HALF_UP);
            distributedMins += value;
            updateRec.maica_cc__Travel_mins__c = value;
            touched = true;
        }
        if (totalKms != null) {
            Decimal value = (i == accepted.size() - 1)
                    ? (totalKms - distributedKms)
                    : shareKms;
            value = value.setScale(2, System.RoundingMode.HALF_UP);
            distributedKms += value;
            updateRec.maica_cc__Travel_kms__c = value;
            touched = true;
        }
        if (totalPropMins != null) {
            Decimal value = (i == accepted.size() - 1)
                    ? (totalPropMins - distributedPropMins)
                    : sharePropMins;
            value = value.setScale(0, System.RoundingMode.HALF_UP);
            distributedPropMins += value;
            updateRec.maica_cc__Travel_Proportion_mins__c = value;
            touched = true;
        }
        if (totalPropKms != null) {
            Decimal value = (i == accepted.size() - 1)
                    ? (totalPropKms - distributedPropKms)
                    : sharePropKms;
            value = value.setScale(2, System.RoundingMode.HALF_UP);
            distributedPropKms += value;
            updateRec.maica_cc__Travel_Proportion_kms__c = value;
            touched = true;
        }

        if (touched) {
            updateRec.maica_cc__Travel_Approved__c = true;
            resourcesToUpdate.add(updateRec);
        }
    }
}

if (!resourcesToUpdate.isEmpty()) {
    update resourcesToUpdate;
}

Run the block via Developer Console (Execute Anonymous). Adjust filtering or batching if your org has a large appointment volume.

If you require assistance or have any question around the above, please contact Maica Support for guidance.

Support at Home Data Model Post Installation Checklist:

Add the new Support at Home funding source and synchronise dependent picklists. Add “Support at Home” to the Funding Source global value set, then extend the dependent picklists (Support Item Quantity Unit of Measure, Support Item Type, and Service Agreement Funding Type) so the new source exposes the Item/Hours/etc. options and the “Support at Home” funding type choice.

Rename WRAP claim type labels. Update the Claim Type global value set so each WRAP-00X value carries its new descriptive label (e.g. “Set up (WRAP‑001)“).

Expose the Support Item override number. Place the new unique “Support Item Number Override” field on every Support Item layout used for data entry so teams can populate the external reference, and keep the revised related list that surfaces parent/child items.

Update key layouts for the Support at Home model listed below: 

  1. Claim Batch: make “Funding Type” required and display it in the mini-layout.
  2. Funding: add the new Approved Services, Classifications, Individual Contributions, and Supplements related lists so Support at Home rollups are visible.
  3. Funding Item: surface the Entitlements related list to monitor derived allowances.
  4. Invoice: ensure “Claim Status” shows in the line-item related list and add the Payments related list for reconciliation.
  5. Invoice Line Item: add “Wraparound Description” to the information section so staff can satisfy the new validation rule when an “Other” wraparound code is chosen.
  6. Unavailability: display the formatted duration in both the layout and Lightning page for quicker reviews.

Re-activate Lightning record pages affected by Support at Home. Publish the updated Lightning pages (Funding, Service Agreement, Support Item, Invoice, Invoice Line Item, and Unavailability) so the new Support at Home facets and fields become visible, and assign the brand-new “Maica Entitlement Record Page” override for Entitlement records.

Post Installation Steps & Scripts
If you require assistance with installing or running these scripts, please contact Maica Support for guidance.
Enable "HCP Fee Invoicing Schedule" Job in Maica Settings -> Scheduled Jobs

View Code

View Code

View Code