Hawaii - Minor (22.20)

Release Summary


Kaptio is proud to announce this minor release for Hawaii. This release is intended to address issues with previous releases.

See Minor Changes and Bug Fixes for more information.


Sandbox Availability Date


2026-02-11


Release Type



Deployment Guide


See this page for the Hawaii Deployment guide.


Minor Changes


Feature: Adjustments


Prevent Removal of previous Adjustments After Cancellation (ST-2533)

This update improves how adjustments are handled for cancelled passengers by introducing a cancellation date/time on Room Assignments and enhancing the logic that determines when an adjustment was created relative to a passenger’s cancellation. The system now records the exact datetime a passenger is cancelled and uses this to control UI behaviour in the Adjustments tab. If an adjustment was originally created while the passenger was still active and the passenger is later cancelled, the Remove action is now disabled—even for users with permission to edit inactive passengers—preventing removal of historical, valid adjustments. Adjustments created after a passenger is cancelled can still be removed by authorized users. This change increases financial accuracy, auditability, and consistency in booking management.


Feature: Inventory


Stop sell not showing as Sold Out in booking wizard Post stay tab and pre-post has stop sale flag set but it is showing On Request on the booking wizard (ST-2510)

Stop Sale inventory behavior has been clarified and standardized. Inventory dates affected by a Stop Sale will now always return a Sold Out status, regardless of fallback configuration. This removes ambiguity caused by fallback status settings and ensures consistent availability results. To support On Request behavior, availability should instead be controlled by setting Units Available to zero. This change improves predictability and aligns Stop Sale handling with expected inventory semantics.


Feature: Itinerary Items


Incorrect number of itinerary items created for bedding request (ST-2732)

This release fixes an issue where selecting the same room-based optional component or bedding request for multiple rooms with different occupancies could create duplicate itinerary items and misassign passengers. The logic has been updated to prevent creating separate lines for optional components selected through the booking wizard, ensuring that each room generates exactly one itinerary item with the correct passenger allocation. As a result, bookings with multiple rooms now correctly reflect the selected options without duplication or allocation errors.


Feature: Passenger Grid


Expose Contact to Passenger mapping flow for Basket API (ST-2716)

A new callable method convertContactsToPassengers has been added to the BookingApi service, allowing external systems to convert Contact records into Passenger records using the configured Contact-to-Passenger flow.

Method Details

| Property | Value | | --- | --- | | Service | BookingApi | | Method | convertContactsToPassengers | | Input | contactIds - List of Contact record IDs | | Output | List<Passenger__c> - Converted passenger records |

Usage Example

Map<String, Object> arguments = new Map<String, Object>{
    'contactIds' => new List<String>{ '003Q100000U3zyaIAB', '003Q100000U3zybIAB' }
};

List<Passenger__c> passengers = (List<Passenger__c>) ServiceCall.execute('BookingApi.convertContactsToPassengers', arguments);

Prerequisites

  • The ContactToPassengerFlow__c field in AppSettings__c must be configured with a valid Flow API name


Feature: Reinstate


Decouple Itinerary Status=Lapsed from Record Type (ST-2490)

A new Lapsed Itinerary Record Type setting allows administrators to explicitly choose a record type for lapsed itineraries or leave it unchanged using a new “Do Not Change” option. The lapse logic and UI behavior have been decoupled from record type assumptions and now rely directly on the Lapsed flag, ensuring more consistent behavior across reinstate flows, booking modifications, and package search. This change preserves existing record types by default and improves reliability when working with custom configurations.


Feature: Right Rez


Add Option to Preserve Sell Price on PNR Refresh After Initial Import (ST-1535)

A new configuration option has been introduced to prevent automatic sell price overwrites during PNR refreshes from external systems such as RightRez. When the “Lock Sell Price” setting is enabled, the system preserves the originally imported sell price and skips pricing updates during subsequent PNR refreshes, while still applying passenger and flight segment changes. This ensures that user-defined or contractually agreed sell prices remain intact after the initial import, reducing unintended pricing changes.


Bug Fixes


Temporary Hold not correctly holding Pre/Post stay units when selected gradually (ST-1866)

Booking wizard now correctly manipulates Temporary Hold when selections are made gradually in pre/post tabs


RightRez Logging and Logging RRZ GUIDs For Production Support (ST-2474)

Error logging and observability have been significantly improved across PNR import and flight integrations. A new asynchronous logging framework has been introduced to reliably capture Apex and external callout errors without impacting user flows. Key services now log structured error details, callout latency, and request/response context to a centralized logging service, improving diagnostics while reducing runtime risk. These changes also harden error handling during external failures and ensure critical issues are captured even in edge cases.


When the same Adjustment type is used after pax cancellation, the display of adjustments is incorrect (ST-2530)

A fix has been applied to ensure adjustments (such as Automatic Loyalty Bonus or manual service adjustments) are displayed and calculated correctly when applied before and after a passenger cancellation. Adjustments applied prior to cancellation now remain visible as cancelled items, while any new adjustments added after cancellation are shown as separate active entries. This ensures totals in the Booking Overview remain accurate and aligned with the underlying itinerary state.


Passenger Payments Not Reflected in Adjustments Tab (ST-2532)

The Adjustments tab now correctly reflects outstanding balances by accounting for payments already made by passengers, instead of always showing the full sell price. Passenger and room totals are recalculated to display only the remaining amount due, ensuring that adjustments are applied against the correct balance. Existing validation continues to prevent adjustments from exceeding the outstanding amount, reducing the risk of incorrect refunds and improving financial accuracy.


Incorrect AIR(cabin) class displayed as Economy for Premium/Business/First class Air bookings (ST-2540)

Addressed an issue where Item__r.ExternalName__c and Price_Category__r.ExternalName__c were getting concatenated.


modify package showing allotment day on pre 3rd day but there is no record in allotment table (ST-2606)

Updates were made to the pre/post options endpoint. Pre- and post-stay option dates were incorrectly shifted when the first package component had a start_day greater than 1. The V2 pre/post endpoint now consistently calculates pre- and post-stay dates relative to the package departure date, ensuring correct night dates regardless of component start day configuration. This resolves a regression affecting packages where the first component does not start on day one


Package search when launched, displaying an error stating: “Preparing passengers for rooms: No contact found with the specified contact id.” (ST-2615)

Launching Package Search from a Patron Guest Contact profile could fail with the error “Preparing passengers for rooms: No contact found with the specified contact id,” preventing the Passenger Assignment page from loading and, in some cases, blocking the addition of other guests after proceeding. This issue has been resolved so that Package Search now initializes correctly when launched from a Patron Guest profile, ensuring the Passenger Assignment page displays as expected and additional guests can be added without error.


Import PNR with No stored fares (ST-2622)

Added support for importing and refreshing “shell” PNRs where no fare data is returned by the supplier. When the new NoFares advanced feature is enabled, the system now creates default zero-value fare breakdowns, allowing PNR imports to succeed without stored fares and flagging the PNR accordingly for downstream visibility. A new No Stored Fares field has been introduced on PNRs, with full admin access, and fare matching has been made more tolerant via an optional SegmentMismatch feature to handle minor segment discrepancies. Additional test coverage and minor cleanup were included.


Change Occupancy - Clicking Cabins {Eye icon} In Expanded result is showing "Something Went Wrong" error (ST-2635)

A new lightweight helper method buildMinimalStateForCabinModal was introduced in bookingWizardHelpers.js to initialize only the minimal state needed for the cabin search modal. This avoids unnecessary API calls while fetching and processing cabin data. Previously, clicking the cabin {Eye icon} in the Change Occupancy expanded results caused an error and prevented users from closing the modal. With this update, the cabin fly-out now opens correctly, matching the behavior of the new booking flow.


Block Package Search Button until Service Levels have loaded (ST-2638)

To prevent calls to API endpoints with partial data the Search button in Package Search > Filter Panel will now remain disabled until the loading phase and all initial API requests have completed.


Cancelled itinerary cabin and guest data persists when creating a new Itinerary in kaptio - Cache issue (ST-2649)

Prior to this fix, data from the pre/post API endpoint was memoized/cached. This data included inventory status and unit count. This cache was being reset if a window.navigation (back button) event occured, but not when the BW "overlay" was closed, disconnectedCallback();

Added additional logic to ensure the cache is cleared when BW init() and disconnects() (unmounts from the DOM).


Reinstate button leads to the PS with no results returned (ST-2657)

The Reinstate booking flow has been enhanced to correctly return and display the original Package Departure and associated itinerary lines when reinstating a lapsed itinerary. Previously, reinstating could result in Package Search (PS) returning no departures due to inactive itinerary items being excluded from queries. This update introduces controlled support for inactive itinerary items across selectors, costing services, Booking Wizard services, and UI layers. A new includeInactive / isReinstateFlowEnabled parameter allows the system to selectively include inactive modes when rebuilding lines and occupancy during reinstate, while preserving existing behaviour for standard flows. Additional safeguards were added to prevent null pointer issues, ensure correct passenger and unit defaults, and improve asynchronous room/cabin reset handling. As a result, the Reinstate action now opens Package Search with the correct departure date, rooms, and occupancy, restoring consistency with the original itinerary configuration.


RightRez_Both Cost and Sell prices are updated on 'Cost Only' Manually refresh (ST-2659)

Fixed the regression issue to allow users to only update the Cost prices on PNR refresh both for the Manual and RightRez callback updates. The RightRez callback setting is controlled by the Lock Sell Price setting in the Flights Configuration custom metadata type. If the sell price is locked, the related sell price fields do not change on the PNR refresh. Fixed the names of the asynchronous jobs for RightRez import and refresh callbacks to include the PNR locator in parenthesis.


RightRez_Lock Sell Price=true: Both Cost and Sell prices are updated on RightRez when PNR passenger reservation number is in the webhook (ST-2663)

Fixed an issue where PNR refresh was incorrectly overwriting sell prices even when LockSellPriceMode was enabled. Previously, refreshing a PNR would always update both cost and sell prices from the API response. Now, when the itinerary has LockSellPriceMode enabled (cost-only update), the system preserves the original sell amounts (base sell, billable amount, and tax sell amounts) stored in the database while still updating cost values from the API. This ensures that manually adjusted sell prices are retained during PNR refreshes when the lock mode is active.


Group Size not calculating correctly (ST-2666)

Fixed group size recalculation for chunked save.


Temporary Hold takes up units from existing rooms when a room is added (ST-2690)

Resolved an issue where adding a new room in Change Occupancy without modifying existing rooms caused Temporary Hold inventory to be applied to all rooms instead of only the newly added one. The occupancy availability check now correctly excludes unchanged rooms, ensuring inventory is held only for the room being added and preventing double allocation of Cruise, Tour, and MaxPax units.


RightRez_auto refresh failed for PNR with mismatch (SegmentMismatch = active) (ST-2712)

Changed AuraHandleException to PNRImportException due to this logic being run in an async codepath.


Modify Package mode and Change Occ shows wrong Inventory number of Pre and Post stay (ST-2717)

Fix for showing wrong inventory number in in Pre/Post stay in Modify mode and Change Occupancy mode


Promotions_Booking Overview improvement on Cancelled/Transferred Passenger section when promos are included (ST-2722)

Improved the visual layout of the Cancelled and Transferred Passengers section in Booking Overview to address alignment and spacing issues when promotions are present. The pricing columns, totals, and item rows are now structured consistently with the pre-cancellation Booking Overview layout, ensuring uniform row heights and clearer alignment across prices, fees, commissions, and totals. These changes result in a cleaner, more readable presentation for cancelled or transferred passengers, while maintaining existing pricing, promotion, and cancellation behaviour.


RightRez_Auto refresh do not update Sell and Cost prices for PNR with mismatch (ST-2729)

Auto refresh update Sell and Cost prices for PNR with mismatch


Temporary Hold takes extra Pre/Post units when gradually selected (ST-2777)

Fixed pre/post allotment hold count on gradual selections


Redirection after a transfer to the old itinerary (ST-2798)

Fixed redirection on save for transfer flow


Unable to Add Contact in Booking Wizard (ST-2806)

The Waitlist flow from Package Search has been corrected so it no longer behaves like a standard booking. In Waitlist mode, the Passengers tab is now enabled while all other wizard tabs are disabled, allowing users to add and link additional passengers as expected. The Booking Wizard will also open directly when account and contact details are already available, preventing the Primary Contact modal from appearing unnecessarily.