Iceland - Minor (23.9)
This Iceland minor release strengthens operational and booking workflows across Operational Itineraries, Inventory Management, Booking Wizard, Package Search, and Booking Overview. Operational teams benefit from more reliable itinerary re-evaluation, including faster feedback when re-evaluation is triggered from an Operational Itinerary, targeted re-evaluation of only affected services, and corrected passenger assignment and quantity updates when Price Lines Per Passenger is enabled. Supplier invoice processing is improved: invoice lines now inherit Cost Bearer and Payment Method from payment rules at creation, Invoice Booking reads those values from the line, and supplier agreement resolution is corrected when multiple agreements exist per supplier. Inventory Management gains new allotment configuration options, improved lookup UX, timezone-correct departure dates, and more reliable validation. Booking and modification flows receive a broad set of fixes and enhancements, especially for pre-selected changeable options, Change Occupancy, transfers, and cancellations. Package Search date filters behave correctly across sessions, Booking Wizard summary and household display are improved, and Select All is extended to transfer and change-occupancy modals. Passenger workflows are strengthened through transactional API import, duplicate Person Account prevention, import error visibility, and configurable Cabin Allocation columns. Additional improvements cover fees on Service records, Manual Rail fare class cleanup, payment schedule rule behaviour in KTAPI, Service Search empty-state messaging, and assorted UI and data-quality fixes across Price Models, VF page loading, and Booking Overview.
Fee Tax Basis is empty on Kaptio settings (KT-14392)
Fee Tax Basis is empty on Kaptio settings Fees Fixed a defect in the **Kaptio Settings → Fees** page where the **Fee Tax Basis** dropdown appeared empty when editing an existing Fee, even though the field had a saved value on the record. The dropdown now correctly displays the stored Fee Tax Basis value when an existing fee is opened for editing, and the default of `Exclusive of Tax` is correctly applied to newly created fees.
Operational Itinerary re-evaluation progress feedback is more reliable (KT-14389)
Replace OI reevaluation platform event with local polling-based toast refresh Operational Itineraries Improves how the Itinerary page tracks Operational Itinerary re-evaluation progress. After actions such as passenger import or configuration changes that trigger re-evaluation, users continue to see the in-progress notification and receive an automatic page refresh when processing finishes — now with a more dependable status-checking approach that holds up better under load.
Supplier Invoice Lines inherit Cost Bearer and Payment Method from Payment Rules (KT-14381)
Copy field values "Cost bearer" and "Payment method" from related Payment rule to the SIL during record creation Operational Itineraries When Supplier Invoice Lines are generated from a Payment Rule during operational itinerary processing, Cost Bearer and Payment Method are now copied onto the line at creation time. Previously these values were left empty on the new line even though they were defined on the matching rule, which could cause incorrect or missing values on downstream supplier invoice workflows — including the Invoice Booking screen, which reads Cost Bearer from the line record.
Supplier Invoice Lines use the correct agreement when a supplier has multiple agreements (KT-14378)
For Supplier Invoice Basis = Itinerary service SIL is generated from only one supplier agreement Supplier Invoices Fixed an issue where generating Supplier Invoice Lines with Supplier Invoice Basis set to Itinerary Service would always use the first active supplier agreement for a supplier — even when additional agreements existed with assignments scoped to specific add-ons, fees, price categories, or services. Each itinerary service is now matched to the most relevant supplier agreement based on those assignment rules, so payment rules and invoicing are correct for suppliers deliberately configured with multiple agreements.
Invoice Booking displays Cost Bearer and Payment Method from Supplier Invoice Lines (KT-14377)
Cost bearer on invoice booking screen is taken from PaymentRule instead of Supplier invoice line record Supplier Invoices Fixed the Invoice Booking screen so Cost Bearer and Payment Method are read from each Supplier Invoice Line record, rather than from the related Payment Rule. The values shown during supplier invoice booking now match what is stored on the line itself — including when those fields are populated on the line at creation time.
VF pages in KaptioPageWrapper not loading on Lightning page (KT-14362)
VF pages in KaptioPageWrapper not loading on Lightning page Itinerary Builder Price Manager Fixes the bug where Visualforce pages embedded in `KaptioPageWrapper` — most notably the **Price Categories** tab on the Service Lightning page and the **Documents/Content** tab on the Itinerary and Operational Itinerary pages — would fail to load. Affected users saw blank panels, multi-minute load delays, or content that only appeared after navigating away from the tab and back. The issue was most pronounced under Salesforce Console navigation, where nested Lightning ↔ iframe contexts increase the chance of communication failures. KHELP-12734 Price Categories Tab Freezing / Delayed Load in Production (Post Phase 2)
Custom field "Days" on Price Model is not updating based on the formula [Regression] (KT-14359)
Custom field "Days" on Price Model is not updating based on the formula [Regression] Group Tour Itinerary Builder Operational Itineraries Fixes a regression where the **Days** custom field on Price Model itineraries was no longer calculating correctly. After enabling itinerary smart dates, the Days formula (which depends on Travel Start Date and Travel End Date) was returning incorrect values such as `1` or `-233` instead of the actual itinerary length in days. The fix restores correct date calculation for Price Models and Operational Itineraries so the Days field once again reflects the true span of the itinerary. KHELP-12744 Custom field "Days" on Price Model is not updating based on the formula
Validation for 0 value on Inventory date range disappear (KT-14337)
Validation for 0 value on Inventory date range disappear Inventory Management Fixed a bug in the Inventory upsert modal where the validation error for a `0` value on a departure date range would disappear when editing the other date field. Previously, entering `0` into Day From would show the validation error, but as soon as Day To was edited, the error message would silently vanish — leaving an invalid value with no visible warning.
User can't get price export from production due to file format change (KT-14335)
User can't get price export from the prod due to file format change Pricing controls Price export format has been changed from xls to xlsx KHELP-12616 404 and 408 Errors - Price Calculation
Timezone issue on Inventory Contract Creation (KT-14326)
Timezone issue on Inventory Contract Creation Inventory Management Fixes a timezone-related bug in the Inventory Upsert modal where date strings displayed and validated in the package-departure inventory flow were shifted by a day for users whose browser timezone differed significantly from UTC (e.g. San Francisco). The "date will be created" message now shows the correct local date, preventing spurious "date cannot be in the past" validation failures when adding a departure from the Group Tour → By Package Departure Inventory tab.
Variation Price Model – Error When Creating Configurations Manually (KT-14315)
Variation Price Model – Error When Creating Configurations Manually Group Tour Fixes a `List index out of bounds: 0` error that occurred when a user manually added the first configuration to a Variation price model that had no existing configurations (typically right after cloning a price model). The price model now correctly creates a new configuration group on the fly when none exists yet, and the configuration is saved successfully. KHELP-12643 Variation Price Model – Error When Creating Configurations Manually KHELP-12892 Kaptio - Issue adding Configuration
Data model for Crew in Price Models (KT-14311)
Data model for Crew in Price Models Group Tour Foundational data-model change for the new **Crew in Price Models** capability. Adds three custom fields and wires them into the relevant selectors so they are queryable through the framework. No business logic, calculation behaviour or UI is delivered by this ticket
Update LWC Itinerary toast state when user trigger re-evaluation from Operational itinerary (KT-14307)
Update LWC Itinerary toast state when user trigger re-evaluation from Operational itinerary Operational Itineraries The "Itinerary re-evaluation in progress" toast on the Itinerary page now appears immediately when a re-evaluation is triggered from the Operational Itinerary side — including importing passengers, changing room groups/configurations, or updating passenger-configuration assignments. Previously the toast often did not appear until the page was refreshed, making users believe nothing was happening and prompting them to re-trigger re-evaluation.
Skip setDomainCollection in the Itinerareis trigger when isDisableCoreTriggersForItinerarySObjects is true (KT-14301)
Skip setDomainCollection in the Itinerareis trigger when isDisableCoreTriggersForItinerarySObjects is true Inventory Management We've improved how itineraries are processed during bulk passenger updates — such as large passenger imports — so these operations now run more smoothly and efficiently. Bulk passenger workflows now skip unnecessary background processing, reducing delays and improving overall performance. Cancelled passengers are no longer included in itinerary recalculations during bulk operations, helping ensure cleaner, more accurate results.
Show error details after manual passenger import (KT-14263)
Show error details after manual passenger import Passenger Grid ### What’s New for Users - **New button on the Itinerary page (“Passengers” tab)** to open a new modal: **Recent Passenger Imports**. - The modal shows **up to 10 most recent import jobs** for that itinerary. - Users can expand each job to view **up to 30 failed rows per job** for quick troubleshooting. - Each job row includes a **direct link button** to open the related Bulk Job record for full details. - Added a new Bulk Job field: **Context Record Id** (used to associate import history with the relevant Itinerary record in this case). ### Client Benefit - Faster visibility into recent manual passenger imports without leaving the itinerary workflow. - Quicker diagnosis of failed imports with row-level error details available in one place. - Easier drill-down to full technical job detail when deeper investigation is needed.
OI quantity and passenger assignments not updating with Enable Price Lines Per Passenger = true (KT-14260)
OI quantity and passenger assignments not updating with Enable Price Lines Per Passenger = true Operational Itineraries Fixed an issue where Operational Itineraries (OIs) with **Enable Price Lines Per Passenger** (PLPP) enabled would not update the service quantity after re-evaluation, and the Costings tab's Passenger Assignments view threw `List index out of bounds: 0`. Re-evaluations (e.g., cancelling a passenger via the API) now correctly propagate the updated unit count and passenger assignments to the service.
Cabin Allocation Tool — Configurable Passenger Assignment Table Columns (KT-14220)
Cabin Allocation Tool — Configurable Passenger Assignment Table Columns Passenger Allocation ## Cabin Allocation Tool — configurable passenger assignment table columns **Reference:** [KT-14220](https://kaptio.atlassian.net/browse/KT-14220#icft=KT-14220) ### What’s new The **Cabin Allocation** passenger assignment table no longer relies on a fixed set of data columns. Operators can define **which columns appear, in what order, and per ship**, using a **JSON configuration** on the Lightning App Page—without code or custom metadata changes. - **Ship-specific layouts:** Configuration is keyed by ship code, with optional `DEFAULT` and sensible fallbacks so each vessel can show its own column set. - **Two kinds of columns:** - **Default** — Data already loaded with assignments (route, booking status, cabin/seat type, passenger name, pax amount, age, booking ref, package code, room ID, travelling together, booking origin, agent name, etc.). - **Passenger** — Additional `Passenger__c` fields resolved at runtime (labels from describe where not overridden). - **Optional presentation:** Per-column **label** and **width** (e.g. CSS width) in JSON when you want to override defaults. ### What stays the same **Select** and **Cabin/Seat ID** remain fixed interactive columns and are **not** driven by JSON. ### Behaviour when nothing is configured If the new setting is **empty or unset**, the table shows the **standard 12 default assignment columns** in the established order. The old **placeholder** columns (assignment request, mobility, celebrations, repeat guest with static placeholder text) are **removed**; those values appear **only** if you add them explicitly as **passenger**-source fields in JSON. ### Where to configure it In **Lightning App Builder**, on the `lwcCabinSeatingMainPageContainer` component, use the design property for **passenger table configuration JSON** (as documented in [KT-14220](https://kaptio.atlassian.net/browse/KT-14220#icft=KT-14220)). The container passes resolved configuration to the passengers table (`columnConfig`). ### Technical / operator notes (summary) - **Filtering** works per visible column, aligned with the dynamic layout. - **Error, warning, and spacer rows** use **dynamic colspan** so layout stays correct. - **Virtual scrolling** is preserved with a variable column count. - **Multiple container instances** on a page can each use different JSON (e.g. split large configs by visibility rules to work around App Builder text limits). - **JSON validity** is the administrator’s responsibility; invalid JSON is not validated in App Builder. - **Read-only** display for passenger fields in the grid (no inline edit in the allocation table). ### For administrators configuring JSON Use a top-level `ships` map: keys are **ship codes** or `DEFAULT`. Each entry has a `fields` array; **array order** is column order (after the fixed columns). Each field entry supports `key`, `source` (`default` | `passenger`), and optional `label`, `width`, `type` as implemented in the release. Built-in keys include aliases such as `passengerName`, `cabinSeatType`, `travellingTogether` (see product/Jira spec for the full default key list). Note: "Component supports design-time configuration on App Pages only; Tab placements use default settings."
Operational Itineraries re-evaluate when a service's Price Category changes (KT-14213)
Trigger OI re-evaluation on Price Category change Group Tour Operational Itineraries Changing the Price Category on a service within an Operational Itinerary now triggers re-evaluation, consistent with changes to service dates. Previously, a Price Category update alone would not re-run operational calculations, which could leave costs, supplier invoice lines, and passenger assignments out of sync with the updated pricing configuration.
Fee Enhancements for Service record (KT-14196)
Fee Enhancements for Service record Fees Services Pricing users can now view and manage fees directly from the **Service** record page through a new **Fees** tab, without navigating away to Kaptio Settings. In addition, each fee can be configured to calculate percentage values on either the **pre-tax** or **tax-inclusive** service cost via a new `FeeTaxBasis__c` field on `Fee__c`.
Error with rowIndex:0 appears when trying to update passengers via API (KT-14183)
Error with rowIndex:0 appears when trying to update passengers via API Passenger Grid Passenger import (REST and batch) is now transactional across the entire import execution. If any exception happens during post-processing — room assignments, configuration assignments, TBD cleanup, passenger cancellation, etc. — every record change made during that import (including the initial upsert) is rolled back, so partial state is never committed. Each affected row is reported back with its original `externalId` and `rowIndex` and a descriptive post-processing error message, instead of a generic single error at `rowIndex: 0`.
Values of the "Train" field dropdown goes under the footer in the create/edit Rake (KT-14164)
Values of the "Train" field dropdown goes under the footer in the create/edit Rake Cabin Configuration Scheme Fixes a UI issue in the Rake (Cabin Configuration Scheme) create/edit modal where the "Train" picklist dropdown options were partially hidden behind the modal footer, making it difficult to select a train from the list.
Send only created or assigned services to the re-evaluation endpoint (KT-14137)
Send only created or assigned services to the re-evaluation endpoint Group Tour Operational Itineraries Optimizes the operational itinerary re-evaluation flow so that only the services impacted by a user change are sent to the re-evaluation endpoint, rather than the entire itinerary. This applies in two scenarios: when a new itinerary item is added manually to an operational itinerary, and when the configuration assignment of a service is changed on the Group Builder tab.
Inventory Manager supports Time Periods for non-departure allotments (KT-14128)
Add Time Period for non-departure allotment in Inventory Manager Inventory Management When creating or editing allotment inventory in Inventory Manager that is not linked to package departures, users can now define one or more Time Periods — each with its own start and end dates and applicable departure days. Previously, allotment contracts without departures were limited to a single contract-level date range and could not use the multi-period Time Period UI. Operators can add, remove, and save multiple date windows within the same allotment for more flexible non-departure inventory modelling. Existing allotment contracts open in edit mode with their saved time periods displayed correctly.
Lookup field UX improvements in Inventory Manager (KT-14125)
Lookup field UX improvements in Inventory Manager Inventory Management Adds a Location lookup to the create/edit allotment day form in the Inventory Manager modal and uses it to filter the Service lookup, so users can narrow services by Location before picking one. The Location and Service lookups now follow the same UI pattern already used in Builder and Bulk Manager (selected value shown as a pill/tag, typed search text cleared after selection). The "Service Record Type" field label has also been shortened to "Service Type", and the form's four-column row is now five columns to fit the new Location field.
Release Based On field for Inventory Manager (KT-14123)
Release Based On field for Inventory Manager Inventory Management Introduced an option to specify Release dates by either Departure date or Service Date, when creating allotment days related to Tour Departures.
Import Passengers creates new Person Accounts even if they already exists (KT-14092)
Import Passengers creates new Person Accounts even if they already exists Passenger Grid Fixes a bug in the Passenger Import flow where importing passengers via xlsx upload would create new Person Accounts even when matching Person Accounts already existed in the org (matching by email). When updating a TBD passenger row whose `PersonAccount__c` lookup was empty, the importer previously left the field blank and downstream logic created a duplicate Person Account instead of linking to the existing one.
Cancelled standalone services not displayed in Booking Overview (ST-3424)
Cancelled standalone services not displayed in Booking Overview Booking Overview - Fixed an issue where cancelled standalone services were not shown in the Booking Overview. - Cancelled standalone services now display under the relevant passengers, including cancellation fees when applicable. - This improves visibility of cancelled services for users reviewing passenger bookings in the Booking Overview.
CO, Cancel Room and Transfer cannot be initiated (ST-3422)
CO, Cancel Room and Transfer cannot be initiated Booking Overview Cancellations Updated the affected workflow initiation logic so the CO, Cancel Room, and Transfer actions can be triggered correctly.
Change Occupancy pricing now handles new rooms with pre-selected changeable options (ST-3415)
Issues when Adding New Room in Change Occupancy Flow for Preselected Changeable Components. Booking Wizard When adding a new room in Change Occupancy for bookings that use pre-selected changeable options, pricing now carries consistent option selections across all rooms, including newly added rooms. Previously, new rooms could submit incomplete selection state and cause pricing errors. New rooms now inherit a safe fallback from existing room selections while rooms that already have their own selections continue to use those values.
Modify Package/ Change Occ shows wrong price for rooms (ST-3407)
Modify Package/ Change Occ shows wrong price for rooms Change Occupancy Modify package When a booking includes pre-selected changeable options (mandatory optional components on the Options tab), their prices are now correctly reflected in the package total. Previously, these lines were excluded from the package price summary, causing the displayed total to appear lower than the actual booking cost. This fix also ensures that when repricing a package, pre-selected changeable options are passed through to the pricing engine per room, so each room is priced against its actual selected option rather than the component default. Regular optional add-ons chosen by the traveller are unaffected and continue to be excluded from the package total as before.
Collapse/expand passenger only when clicking the arrow (ST-3385)
Collapse/expand passenger only when clicking the arrow Booking Overview Changed UI behavior in Booking Overview so that passenger rows are ONLY expanded with the chevron arrow now and not by clicking anywhere in the pax area.
Pre-selected changeable options work correctly across multiple rooms (ST-3370)
Error for Cruise package when component has Selection Type = Pre-Selected Changeable Change Occupancy Modify package Fixed an error that could occur when modifying a package or changing occupancy on multi-room bookings — such as cruise packages — where mandatory components use the Pre-Selected Changeable selection type. When the same mandatory option appeared in more than one room, the booking wizard could fail during pricing. Mandatory option selections are now handled consistently across all rooms, and newly added rooms inherit the required pre-selected changeable options from existing rooms so pricing completes successfully.
Incorrect display of active standalone service price for cancelled pax (ST-3367)
Incorrect display of active standalone service price for cancelled pax Booking Overview When a passenger is cancelled but has an active standalone service (such as a hotel or accommodation booked outside a package), the Booking Overview will now correctly display the service's sell price as the "Price Before Cancellation." Previously, this value could show as zero in cases where the cancellation price history had not been recorded on the service, making it difficult to assess the passenger's cancellation position accurately.
Changing component Selection Type from Pre-Selected Changeable to Optional keep Is Mandatory Optional = true (ST-3360)
Changing component Selection Type from Pre-Selected Changeable to Optional keep Is Mandatory Optional = true Package Editor Switching a component's selection type (e.g. from Required (Pre-Selected Changeable) to Optional) will now consistently refresh all related fields in the edit modal. Previously, certain selection type changes could leave the form in a stale state where dependent fields didn't reflect the new selection correctly.
No warning shown when multiple components have Primary Component - Price Summary enabled (ST-3352)
No warning shown when multiple components have Primary Component - Price Summary enabled Package Editor When using Package Levels, configuring more than one component as the Primary Component for Price Summary will now show a warning: *"More than one component is marked as the Primary Component for Price Summary. Only one component should be primary for Package Levels to work correctly."* Previously, only the absence of a primary component triggered a warning. This change helps catch misconfiguration at both ends — none selected, or too many selected.
Pre-Selected Changeable option is not pre selected during Change Occupancy and transfer (ST-3340)
Pre-Selected Changeable option is not pre selected during Change Occupancy and transfer Change Occupancy Fixes an issue where newly added rooms were lost during a Change Occupancy flow, causing required components and pricing to not be correctly pre-populated for those rooms. The wizard now correctly retains new rooms when updating an existing booking, ensures their components are priced after room statuses have been calculated, and handles cases where passenger selection data is missing for transferred rooms. A minor fix to the resize event handler in the Booking Overview also prevents potential errors when navigating away from the page.
"Cancelled" misspelled in the BO screen (ST-3285)
"Cancelled" misspelled in the BO screen Booking Overview Corrected typo Canceled → Cancelled
Tooltip issue for Enable Service Departures field (ST-3246)
Tooltip issue for Enable Service Departures field ComponentUI Removed line-breaks from the `inlineHelpText` property on the field to prevent UI rendering them as unicode/literal. This improves the readability of the inline help text.
Booking Wizard | Household Header missing from Passengers Tab (ST-3233)
KAPI-7149 Booking Wizard | Household Header missing from Passengers Tab Booking Wizard Resolved an issue where the collapsible Household header — which groups household members together with the household name, member count, and address — was not appearing in the Passengers tab when launching Package Search from a household contact. This occurred because the system was comparing the account's record type name against a hardcoded value of "Household", which did not match organisations configured with a custom Household record type API name in their app settings. The fix will now honor the `HouseholdAccountTypeApiName` setting that is fetched at load time and passed through the wizard, ensuring the Household grouping header displays correctly regardless of how the record type is named in a given org.
Reduce Occupancy - Add Pax (ST-3146)
Reduce Occupancy - Add Pax Cancellations Implemented the allocation part of the Reduce Occupancy epic. Now user is able to allocate passenger back to the initial room and reallocate to the other ones.
Add Paid Amount to Confirm Transfer (ST-3138)
Add Paid Amount to Confirm Transfer Transfer New “Amount Paid” column added in Confirm Transfer and Confirm Cancel Modals
UI issue with cabin auto-selection when room has 4 pax (ST-2843)
UI issue with cabin auto-selection when room has 4 pax Booking Wizard When creating an itinerary with multiple rooms and passengers, the "Unable to Auto Select" warning message no longer overlaps with passenger names in the Cabin Selection tab. Room information, warnings, and search controls are now displayed cleanly side by side regardless of passenger name length.
PS - date filter is set to the same date when date was selected manually (ST-2800)
PS - date filter is set to the same date when date was selected manually Package Search When manually selecting a start date in Package Search and then creating an itinerary, re-entering Package Search for a different contact would incorrectly pre-populate both the start and end date fields with the previously selected date. Date filters will now correctly clear when starting a fresh Package Search session. The fix also ensures that when a start date is passed in via URL parameters (e.g. when launching from an itinerary), that date is still preserved as expected — so the behaviour is now correct in both scenarios.
It is possible to create Itinerary with Pre-Stay RQ in the past (ST-2728)
It is possible to create Itinerary with Pre-Stay RQ in the past Booking Wizard Options whose dates fall before today are no longer selectable in the Pre-Stay and Post-Stay step of the Booking Wizard. Previously, when a package departure was close to the current date, non-allotment (RQ) pre-stay options in the past remained selectable and could be added to the itinerary. These options are now visually marked as disabled and cannot be chosen.
BW 'Cabin Description' text is visible when cabin selection is turned off (ST-2193)
BW 'Cabin Description' text is visible when cabin selection is turn off Booking Wizard **Booking Wizard – Summary** Fixed an issue where the Booking Wizard Summary still showed **Cabin Description** when **Booking Wizard Unit Number Selection** was set to **Not mandatory** or **Hidden** on the package (including setups with multiple service levels on one price category). The summary no longer shows that cabin column in this mode; **Package Level** summary behavior is unchanged.
Cancellation Verbiage to be changed to Penalty in Booking Wizard Flow part2 - modal and BO (ST-1403)
Cancellation Verbiage to be changed to Penalty in Booking Wizard Flow part2 - modal and BO Package Editor Updated txt copy as per [ST-848](https://kaptio.atlassian.net/browse/ST-848) in product areas missed in the initial merge request.
Passengers tab - Contact details are not updated in tab when changes are made for linked record or when we discard changes in the tab (ST-1225)
Passengers tab - Contact details are not updated in tab when changes are made for linked record or when we discard changes in the tab Passenger Grid Resolved an issue where the Passengers tab could display stale data for passengers linked to a Contact record. Two scenarios were affected: first, if a user edited a linked Contact's details and then discarded changes in the Passengers tab, the Contact's saved updates would no longer be visible until a full page reload; second, if a Contact record was edited directly on its own page and the user then navigated to or refreshed the Passengers tab, the updated Contact details would not be reflected in the passenger rows. The fix introduces a contact-to-passenger sync that runs automatically when the Passengers tab loads and when passenger records are saved, ensuring that passenger data is brought in line with the latest Contact field values. The sync is scoped to the current itinerary only, so passengers on other itineraries sharing the same Contact are not affected.
Enhancement: Add a Select all field to the Package Modifications (ST-695)
Enhancement: Add a Select all field to the Package Modifications Booking Wizard Package Search Transfer The Select All checkbox, previously only available on the Select Rooms to Cancel modal, has been extended to the Transfer and Change Package Occupancy modals. The checkbox appears in the same position as on the cancellation modal and follows the same behaviour — selecting it marks all eligible rooms, and deselecting any individual room will uncheck Select All. Rooms that are transfer-disabled are excluded from the selection logic. As part of this change, a large group warning notification has also been introduced: if more than 4 rooms are selected at once, a warning message is displayed advising users to consider reducing their selection before continuing. The notification clears automatically whenever the selection changes.
UI Improvement. Header Space in the BW Summary Panel. (ST-269)
UI Improvement. Header Space in the BW Summary Panel. Booking Wizard The Summary Panel has been updated to eliminate unnecessary white space in the header area. Previously, the header and scrollable content section used fixed heights, which meant extra space was visible at the top of the panel when optional banners (such as the modification banner) weren't displayed. The layout now uses flexbox, allowing the header and content areas to size themselves dynamically based on their actual content. This means the rooms/content section will automatically expand to fill whatever space the header isn't using, removing the visible gap and making better use of the available screen real estate.
Hover text not displayed in full for Options tab land package (ST-29)
Hover text not displayed in full for Options tab land package Booking Wizard Modify package Hovering over the Options tab in the Booking Wizard could cause the "There are no services configured for this WB tab" tooltip to disappear off-screen. This occurred when loading a package, or when a land package had no options configured, and was most noticeable in regular, Modify, and Change Occupancy modes. The issue was caused by `overflow: hidden` on the tabs list and `overflow-y: auto` on the left panel, which were clipping the tooltip before it could fully render. Both have been updated to use `visible` overflow, allowing the tooltip to display in full regardless of the package configuration or wizard state.
BW: Household addresses not showing as expected on Contacts (ST-13)
BW: Household addresses not showing as expected on Contacts Booking Wizard Added logic to extract full `billingAddress` from `Account` and format for display in the Room header(s) of the Passenger Tab in Booking Wizard.
Make Picklist "Fare Class" Restricted (CEE-913)
Make Picklist "Fare Class" Restricted Manual Rail **Fare Class field cleanup:** The Fare Class picklist on Rail Fare records now supports only Standard, Premium, and Other as active values. A new Fare Class Other text field preserves any non-standard fare class names, and a migration script is available ( **"**Update RailFare__c.FareClass__c and RailFare__c.FareClassOther__c with reliable values**"**) under Post Upgrade Steps to automatically move existing custom values into the new field. **If you reference the **`KaptioTravel__FareClass__c`** field anywhere in your custom code, please make sure to update the logic accordingly:** If the fare class value is neither `Standard` nor `Premium`, it should be set to `Other`, and the actual fare class value should be stored in `KaptioTravel__FareClassOther__c`. KHELP-12735 Manual Rail Picklist Error Msg: TOO_MANY_ENUM_VALUE, picklist inactive limit exceeded
Service Search - No Services Found Message (CEE-533)
Hawaii - Service Search - No Services Found Message Service Search (live) Added clear “No results have been found.” messaging in Service Search when no services are available to display. This prevents users from assuming the page is still loading when all services are unavailable. KHELP-12357 Hawaii - Service Search - No Services Found Message
Salesforce: Service-level payment schedule rules override package/channel rules instead of being additive (API-3304)
Salesforce: Service-level payment schedule rules override package/channel rules instead of being additive KTAPI **Payment schedule rules removed when service with dedicated schedule is added** Adding a service (e.g. insurance) with its own payment schedule assignment caused deposit and final balance rules for other itinerary items to disappear. Service-level rules are now additive, other items retain their payment schedule rules.
Fix ScheduledPayment__c.PaymentSchedule__c lookup target: change from PaymentScheduleRule__c to PaymentSchedule__c (API-3235)
Fix ScheduledPayment__c.PaymentSchedule__c lookup target: change from PaymentScheduleRule__c to PaymentSchedule__c KTAPI **Correct ScheduledPayment lookup target** The `ScheduledPayment__c.PaymentSchedule__c` field now correctly references the runtime Payment Schedule record instead of the Payment Schedule Rule template. This simplifies auto-pay and stored-card schedule flows by removing unnecessary intermediate lookups. **Note:** Existing `ScheduledPayment__c` records may require data cleanup after upgrade.