Hawaii - Major (22.13)

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


2025-12-19


Release Type


Minor Changes


Feature: Booking Wizard


Update Button Label to "Create Booking" When in Transfer Mode (ST-2128)

When using Transfer Mode in the Booking Wizard Summary, the primary action button previously displayed "Add Changes to Itinerary." This has been updated so that the button now correctly displays "Create Booking," reflecting that a transfer operation results in the creation of a new booking rather than a modification to the existing itinerary. This update improves clarity for users and aligns the UI with expected workflow behavior.


UOM Per Unit to be supported in Booking Wizard and Booking Modifications (ST-2296)

Added comprehensive support for UOM = Unit across Booking Wizard, Builder, and amendment flows. Previously, per-unit services (e.g., private transfers, vehicle-based extras, private tours) behaved inconsistently, showing incorrect occupancy, triggering validation errors, or failing during reassignment. This update extends the UOM model to treat Unit as a valid multi-passenger service type, aligning it with accommodation-style behaviour while preserving person-based logic. Core changes include updated UOM classification in ItineraryItemService, correct multi-passenger handling in item splitting and API search logic, and consistent option filtering in Booking Wizard modify actions. Builder and amend flows now correctly respect per-unit occupancy and allocation, ensuring smooth assignment, editing, and quantity changes without requiring configuration workarounds. Existing UOMs (room(s), person(s), etc.) continue to operate without regression.



For stand-alone Package Search, channel picklist should not be disabled if there is no account (ST-1389)

Exposed additional properties on the Package Search component to Lightning App Builder (LAB). A user can now check if the channels filter should be active in the event an Account Id isn’t passed in the URL Params. They can also specify a series of pre-defined channels a user can select from.


Feature: Passenger Grid


Extension point for complete modal window (not just for Contact Creation tab) (ST-1391)

The Passengers Contact modal in Booking Wizard has been extended to support full override by a customer Flow. Admins can now configure the grid so that clicking Link Contact opens a streamlined modal that hides the standard "Search" and "Create/Update Contact" tabs and displays only the specified Flow – ideal for custom CRM lookup experiences. If the override is enabled but no Flow API name is provided, the modal behaves as no flow was provided.


Passenger Grid Component Person Account linked to Passenger cannot be opened from Passenger Grid (ST-2260)

The Passengers Grid has been enhanced to make Person Account access and contact creation flows more flexible. When configured, the Primary Contact / Person Account column now renders as a clickable link that opens the related Person Account directly in a new tab, removing the need to go via the "Search Contact" dialog. Admins can optionally disable the Account lookup (showing a read-only link instead) and override the standard Search/Create Contact modal so that a custom Flow is launched on its own, without tabs, improving usability and supporting Belmond’s custom contact flow configuration.


Feature: Right Rez


KAPI-3009 - Investigate Error on Send to GDS button (ST-1035)

Enhancements were made to the RightRez integration to address routing issues identified in ST-609 and KAPI-3009. The flight-shopping workflow now supports a configurable IATA code field via a new IATA_Code_Field__c metadata setting, allowing Tauck to define which Location field RightRez should read from. Arrival and departure airport resolution has been strengthened to prioritize package-level start and end locations before falling back to item locations. Shell PNR generation now correctly passes both arrival and departure airport codes to RightRez, improving accuracy of outbound and return segments. Additional test coverage and metadata permissions were added to ensure stability. These updates help prevent incorrect airport mappings and ensure more reliable RightRez request construction.


Bug Fixes


UI: Increase width of "Add Primary Contact" screen flow modal (ST-1516)

Code added to detect if a Flow has been enabled for Primary Contact; if so modal is large, otherwise it’ll default to small.


Price Lines for Adjustment Reseller Commission not created before manual Costings recalculation (ST-1589)

Improved the Adjustments workflow so that tax and reseller commission price lines are now generated automatically without requiring a manual "Recalculate All" action in the Costings tab. Previously, only COST and SELL price lines were created when saving an adjustment, leaving TAX and RESELLER_COMMISSION missing until the user triggered recalculation. The updated logic now invokes the KTAPI pricing engine during adjustment processing, correctly calculating all dependent price lines across manual and automated pricing scenarios. Additional safeguards were added to prevent duplicate services and ensure manual reseller commission overrides are respected. As a result, adjustments consistently produce complete and accurate pricing data immediately upon save.


Booking flow - Enable Advanced Price Summary is not behaving as Cruise for the custom Service Record Types (ST-1806)

As part of ST-866, we aligned additional Belmond Service record types to behave like the Cruise record type, but during implementation we identified an issue where bookings using these updated record types pulled in the cabin/price category correctly while the Booking Overview failed to display it, and the service departure produced an error indicating it was not linked; this behaviour has been traced to differences in how the new record types interact with the existing Cruise logic, as discussed in the related Slack thread.


Created multiple passengers with duplicate reservation numbers and booked same cabin for two rooms (ST-1816)

We’ve introduced improved safeguards to better handle scenarios where itinerary saves are interrupted during complex Booking Wizard operations (such as transfers, waitlists, or multi-step saves). A new Interrupted Save flag is now set when a save process starts and automatically cleared once the operation completes successfully. This enhancement improves system resilience and recoverability without rolling back user changes, while also providing clear visibility when an itinerary may require attention after an interrupted save.


Active Bookings Showing with No Reservation Numbers (ST-1822)

We’ve introduced improved safeguards to better handle scenarios where itinerary saves are interrupted during complex Booking Wizard operations (such as transfers, waitlists, or multi-step saves). A new Interrupted Save flag is now set when a save process starts and automatically cleared once the operation completes successfully. This enhancement improves system resilience and recoverability without rolling back user changes, while also providing clear visibility when an itinerary may require attention after an interrupted save.


Itinerary Group Payment Summary not displaying values (ST-2078)

Fixed an issue on the Payments tab where the Total Paid / Itinerary Total section did not display the amounts for itinerary groups and only showed "/ {ISOCode}". It now correctly shows {Total Paid} / {Price} {ISOCode} as per the Figma design.


Itinerary items get Service Level = null (ST-2107)

Resolved an issue where itinerary items created during quote or booking creation did not inherit the correct service levels when a package was configured with Service Level Mode = Cabin Levels. Previously, items were generated with a null service level despite service levels being defined on the associated price categories. This now aligns with existing behaviour for packages using Service Level Mode = Service Level, ensuring all new itinerary items correctly receive their corresponding service level.


Validation and update logic corrected when transferring or cancelling under specific conditions (ST-2111)

Fixed an issue affecting itineraries created from packages using Service Level Mode = "Service Level" with Unit Number Selection = "Not-Mandatory/Hidden". When transferring a room to a new departure date or cancelling all rooms, the system previously threw errors that prevented the transfer or cancellation from completing. This occurred during itinerary updates, where unit-count validation failed and blocked processing. The underlying validation and update logic has now been corrected so that room transfers and room/package cancellations complete successfully without errors, and users are returned to Booking Wizard as expected.


When the cabin room was changed during the modification process or if itinerary is transferred, the previously selected cabin was not released, making it unavailable for future bookings. (ST-2115)

Resolved an issue where cabin inventory was not being released after modifying an itinerary. Previously, when a guest updated their cabin selection in the Booking Wizard, the originally selected cabin was not returned to inventory. As a result, subsequent package searches showed the cabin as unavailable, even though it should have been released. This issue also occurred after transferring an itinerary to a different package or departure, causing multiple cabins to remain incorrectly blocked. This fix ensures that when a cabin assignment is modified or transferred, the previously selected cabin is properly released and becomes available for new bookings.


Promotion Setup UI not populating RateSourceTypec and RateTypec correctly on PromotionEffect (ST-2127)

Promotion effects MostExpensiveNightsFree and LeastExpensiveNightsFree now have RateSourceType__c set as SellPrice on save.


Booking Overview unable to display the return leg on an Itinerary with 2 Cruise Components (ST-2147)

Updated logic to detect if there are multiple cruise components in an itinerary (outbound/inbound legs). If this is true a map is built of this components with dates. Category names are affixed with date and rendered to the UI. Additional logic was added to sort all items by date so it’s more chronological.


Return leg duplicated when itinerary created with more than 1 room and each room of different cabin types (ST-2148)

Resolved an issue where packages configured with Service Level Mode = "Cabin Levels" would create duplicate itinerary items for non-cabin components (flights, transfers, etc.) when multiple rooms selected different cabin types. Previously, the return leg would generate 4 items instead of the expected 2 (one per room). The fix ensures that component selections are properly grouped by their room context (roomIndex) rather than being duplicated across each cabin type selection, preventing unwanted item duplication while maintaining correct per-room behavior for cabin components.


Updated logic on how and when the "Cabins" Tab gets displayed in Booking Wizard (ST-2151)

Updated Booking Wizard tab handling to centralise and harden default view logic. The cabins-specific removeCabinsTab method has been replaced with a generic removeTabFromTabsList, which uses a new updateCurrentViewToDefault helper to switch the user to the Passengers tab (or the first enabled tab) whenever the current tab is removed or when entering Person Account search mode. This ensures consistent, predictable navigation and prevents users from remaining on or being redirected to tabs that are disabled or no longer available (such as cabin selection for non-cruise flows).


Single rooms don’t get included transfer services allocated to the passenger (ST-2155)

Updated logic on the frontend to ensure that serviceLevelId was populated to the Rooms. This is important when Service Level Mode == 'Cabins' so that allocations can be assessed at that level. Also updated logic in the backend to ensure the correct allocations were made.


Cabin not released after transfer (ST-2158)

Fixed logic to ensure old cabins are recalculated on inventory release after transfer.


After transferring one room from a multi-room itinerary, the room ID for the retained room in the prevailing itinerary is not updating correctly (ST-2165)

Resolved an issue where transferring a room to a different departure created an inaccurate Room ID display for TBD guests in the prevailing itinerary. After completing a transfer and adding mandatory components in Booking Wizard, the remaining itinerary correctly showed only one room; however, the Passengers and Payments tabs continued to display the guest as assigned to "Room 2." This fix ensures that TBD guests now display the correct Room ID as assigned in Booking Wizard and reflected on the overview page.


Cancel with Waive Penalty Not Waiving GPP/CPP (ST-2166)

Enhanced cancellation processing to correctly apply per-passenger cancellation-fee waivers. A new passengersToWaiveFee mechanism replaces the previous item-level waiveCancellationFee flag, ensuring each passenger’s waiver selection is evaluated independently—especially when cancelling specific passengers, changing occupancy, or transferring to another date/package. The Booking Wizard now honours the "Waive Penalty" checkbox for individual passengers and enforces user permissions for overriding cancellation percentages. This fix resolves an issue where waiving the penalty did not waive the General Pricing Plan (GPP) cancellation fee.