Table of Contents

Tours Support (SwOTA)

Seaware Tours are a complex structure of components that does not fit well into the OTA public API. However, limited tour scenarios were implemented and are supported by the SwOTA:

  1. Tours with one sail component (and possibly other component types) are presented in SwOTA as a Sailing (OTA_CruiseSailAvailRS, SelectedSailing), same as if it was a sail (primary) package.
  2. Tours with only shorex components are presented as a shorex package (OTA_CruiseShorexAvailRS, SelectedPackage).
Note

Note that when searching for availability and booking a tour, each tour is presented as a single element (examples below). After the booking with that tour is committed, the result will show each tour component separately as a separate element and allow treating them as such (Seaware rules/restrictions still apply). More on this below.

Voyage Tours

Tours that have one and only one sail component can be booked via SwOTA and are interpreted there as another type of "sail" (in addition to primary packages). Other mandatory components of the tour will be added automatically, and all optional components will be ignored.

NB! To enable this functionality the Seaware setting SwOtaEnableTours should contain the value SAIL.

If the functionality is enabled, OTA_CruiseSailAvailRS response will show (in addition to regular primary packages) tour-based SailingOption elements:

<vx:OTA_CruiseSailAvailRS TimeStamp="2022-08-08T16:02:34.533" TargetName="SW_CLST_2021C@ORAUTF8" Version="1.999" CorrelationID="d61088c8-2ccb-40c9-be4b-5adeecb008fa" xmlns:vx="http://www.opentravel.org/OTA/2003/05" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns3="http://www.versonix.com/ota">
    <vx:Success/>
    <vx:SailingOptions>
        <vx:SailingOption>
            <vx:SelectedSailing VoyageID="_@TOUR-230516" Status="36" PortsOfCallQuantity="0" Start="2023-05-16" Duration="P4D" End="2023-05-20">
                <vx:CruiseLine ShipCode="SS" ShipName="Some Ship"/>
                <vx:Region RegionCode="ICONIC"/>
                <vx:DeparturePort EmbarkationTime="2023-05-16T13:00:00" LocationCode="PTA" CodeContext="SEAWARE">Port A</vx:DeparturePort>
                <vx:ArrivalPort DebarkationDateTime="2023-05-20T07:00:00" LocationCode="PTB" CodeContext="SEAWARE">Port B</vx:ArrivalPort>
            </vx:SelectedSailing>
            <vx:InclusivePackageOption CruisePackageCode="TOUR-GRAND" InclusiveIndicator="true" Start="2023-05-16" End="2023-05-20"/>
            <vx:Currency CurrencyCode="EUR"/>
            <vx:Information Name="PKGTYPECOMMENT">
                <vx:Text Formatted="false">Unforgettable Cruise + 2 Shorex Tour</vx:Text>
                <vx:ListItem ListItem="1" Formatted="false">4 Nights All Inclusive cruise embarking in San Francisco</vx:ListItem>
                <vx:ListItem ListItem="2" Formatted="false">Wonderful excursion in Port A</vx:ListItem>
                <vx:ListItem ListItem="3" Formatted="false">Amazing excursion in Port B</vx:ListItem>
            </vx:Information>
            <vx:Information Name="ClassificationCodes">
                <vx:Text Formatted="false">4DICONIC</vx:Text>
                <vx:Text Formatted="false">AEGEAN</vx:Text>
            </vx:Information>
        </vx:SailingOption>
        [...]
    </vx:SailingOptions>
</vx:OTA_CruiseSailAvailRS>        

Such single-sail tours look and work via SwOTA same way as primary (sail) packages. The field InclusiveIndicator can help identify that a certain SailingOption represents a Tour and not a Primary Package. Further booking steps accept the VoyageID from this availability response same way as for regular bookings. The only difference for tour scenario is that VoyageID will actually contain not Primary Package Code but a combination of Tour Package Code and a prefix ("_@").

The limitations compared to regular non-tour booking flow are listed below.

The InclusivePackageOption/CruisePackageCode will return Tour Package Type instead of Primary Package Type, and InclusivePackageOption/Start and InclusivePackageOption/End values will describe Tour date range, while SelectedSailing/Start and SelectedSailing/End will describe sail date range. The InclusiveIndicator will say true for a sail tour (and false for a regular primary package sail).

        <vx:SailingOption>
            <vx:SelectedSailing VoyageID="_@TOUR-230516" Status="36" PortsOfCallQuantity="0" Start="2023-05-16" Duration="P4D" End="2023-05-20">
                <vx:CruiseLine ShipCode="SS" ShipName="Some Ship"/>
                <vx:Region RegionCode="ICONIC"/>
                <vx:DeparturePort EmbarkationTime="2023-05-16T13:00:00" LocationCode="KUS" CodeContext="SEAWARE">Kusadasi</vx:DeparturePort>
                <vx:ArrivalPort DebarkationDateTime="2023-05-20T07:00:00" LocationCode="KUS" CodeContext="SEAWARE">Kusadasi</vx:ArrivalPort>
            </vx:SelectedSailing>
            <vx:InclusivePackageOption CruisePackageCode="GRAND-TOUR" InclusiveIndicator="true" Start="2023-05-16" End="2023-05-20"/>
            [...]
        </vx:SailingOption>

The Seaware setting SailingInformationValues is also working for the tour package same way as for the Primary Package, allowing to output additional information about the package of the tour and the packages included as tour components. For example, if all packages (tour package itself, and sail package and shorex packages included in the tour as it's components) have their Package Type Comments configured, the OTA_CruiseSailAvailRS output for that tour will show (if SailingInformationValues has PKGTYPECOMMENTvalue):

            <vx:Information Name="PKGTYPECOMMENT">
                <vx:Text Formatted="false">Unforgettable Cruise + 2 Shorex Tour</vx:Text>
                <vx:ListItem ListItem="1" Formatted="false">4 Nights All Inclusive cruise embarking in San Francisco</vx:ListItem>
                <vx:ListItem ListItem="2" Formatted="false">Wonderful excursion in Port A</vx:ListItem>
                <vx:ListItem ListItem="3" Formatted="false">Amazing excursion in Port B</vx:ListItem>
            </vx:Information>
            <vx:Information Name="NAME">
                <vx:Text Formatted="false">Fantastic test tour from San Francisco</vx:Text>
                <vx:ListItem ListItem="1" Formatted="false">Iconic Californian 4 Nights All Inclusive Cruise</vx:ListItem>
            </vx:Information>            

The Information node will show information field (e.g. Package Type Comment) about the Tour Package in the Text element (if exists, if it is not set up in Seaware there will not be a Text element in the response). Then, each tour component that is a package (sail or shorex) will output same information field (e.g. Package Type Comment) in a ListItem element (with a ListItem integer attribute starting from 1 indicating the tour component "sequential number"). In the example above the tour consists of three components: Sail and 2 shorexes. The shorex packages in Seaware do not have Name of the package set up, so the Informationelement for NAME does not have ListItem 2 and 3.

Limitations

  1. Seaware Setup must limit the length of the tour package code 26 characters. This is because the VoyageID attribute limited length.
  2. Not all search parameters may be working for tours.
  3. Child Beds flow is not supported for sail tours (to be confirmed).
  4. Booking flow (after SailAvail) without VoyageID (recovering voyage (tour) package by sail date range and ship of the sail package) is not supported.
  5. Availability search by (cabin/category) attributes is not supported for Tours.
  6. Allotment ID not supported for Tours availability search.

After the tour is booked (committed) the booking will show information about the specific tour components instead of the tour. If there are shorexes included in the tour they will appear in the SelectedPackages node along with any regular shorex packages booked, but the packages that are a part of the voyage tour will have InclusiveIndicator attribute set to true.

Shorex Tours

Tours that contain only shorex packages are supported by SwOTA and are represented and booked similar way as a regular shorex secondary package.

NB! To enable this functionality the Seaware setting SwOtaEnableTours should contain the value SHOREX.

OTA_CruiseShorexAvailRS will show SHOREX tours in addition to regular (secondary package) shore excursions. Each tour will be represented as a single ShorexPackage element in the availability result:

        <vx:ShorexPackage SelectionAllowedIndicator="true" PackageTypeCode="4" 
                Status="36" CruisePackageCode="_@IDYLICKUSKUS" 
                CruisePackageSubCode="_@IDYLICKUSKUS32" 
                Start="2023-05-16T00:00:00" 
                End="2023-05-18T00:00:00">
            <vx:Location LocationName="Rhodes" LocationCode="RHO" CodeContext="PORT" Start="2023-05-16T00:00:00">
                <vx:CountryName Code="GR">Greece</vx:CountryName>
            </vx:Location>
            <vx:Location LocationName="Rhodes" LocationCode="RHO" CodeContext="PORT" End="2023-05-16T23:59:59">
                <vx:CountryName Code="GR">Greece</vx:CountryName>
            </vx:Location>
            <vx:Location LocationName="Piraeus" LocationCode="PIR" CodeContext="PORT" Start="2023-05-18T00:00:00">
                <vx:CountryName Code="GR">Greece</vx:CountryName>
            </vx:Location>
            <vx:Location LocationName="Piraeus" LocationCode="PIR" CodeContext="PORT" End="2023-05-18T23:59:59">
                <vx:CountryName Code="GR">Greece</vx:CountryName>
            </vx:Location>
            <vx:PriceInfo BreakdownType="DBL" ChargeTypeCode="30" CurrencyCode="EUR" Amount="240"/>
            <vx:PriceInfo BreakdownType="1GT" ChargeTypeCode="7" CurrencyCode="EUR" Amount="0"/>
            <vx:PriceInfo BreakdownType="2GT" ChargeTypeCode="7" CurrencyCode="EUR" Amount="0"/>
        </vx:ShorexPackage>

There is no specific flag that lets the user distinguish a tour-based ShorexPackage from a secondary package based one. The difference can be seen in the prefix _@ in the CruisePackageCode and CruisePackageSubCode (this one only shown if Versonix OTA extensions are turned on) attributes and (if tour has more than one shorex) the number of Location elements. The Location elements will describe the locations of the shore excursions (one element per start and per finish of each shorex) included in the tour.

Another difference is that Duration attribute is not returned for tours because the included shore excursions may be spaced between several days and do not have a common tour duration. The Start and End attribute of the ShorexPackage element are taken from the Tour Package Definition (is Seaware) and may not have the time portion (or time portion is 00:00:00), then they effectively are only showing the date of the first shorex in the tour and date of the last shorex). Exact date and time of each shorex will be output in the Location/Start and Location/End. However, absence of Duration attribute cannot be used to distinguish tours from single shorex packages because some shorex packages may not have Duration as well.

The Description attribute value comes from Seaware Package Type Comment, for individual shorex it is a Shorex Package Type Comment, for a tour it is the Tour Package Type Comment.

Limitations

  1. Location elements count is limited to 16 in OTA API. Each shore excursion included in the tour will produce one or two Location elements (for start and for end of the excursion, or one combined in case Seaware setup for the shorex does not define "Location To" parameters). So if a tour consists of more than 8 or 16 SHOREX components (respectively) then only locations of the first 8 (16) components will be shown in the OTA_CruiseShorexAvail_RS.
Note

Note that while the availability result presents each shorex tour as a single ShorexPackage element, and OTA_CruiseBookRQ accepts it the same way (one SelectedPackage element per tour), when retrieving the booking with the committed tour the presentation will switch to showing one SelectedPackage element per each shorex component in the tour. And in all further booking updates after the tour is committed the processing will treat tour components separately.

This applies the same way to both shorex and single sail tours (there the SelectedSailing element will show the primary package information after the tour is committed, and other components will be presented the usual way as they would be if they were booked separately without the tour).