Skip to content

Commit

Permalink
[skip ci] Updates
Browse files Browse the repository at this point in the history
  • Loading branch information
concur-docs-machine committed Sep 16, 2024
1 parent 62143a1 commit 64b5e42
Show file tree
Hide file tree
Showing 6 changed files with 135 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
@startuml hotel-book

participant "User" as user

participant ConcurHotel as cHotel #Lightcyan
participant ConcurGDS as cGDS
participant "CHSSupplier" as supply #LightBlue
participant "GDS" as gds #LightYellow
participant "OtherSupplierSource" as other #LightYellow


== Book ==
user -> cHotel++: Book request
cHotel -> cHotel: Determine if PNR is managed by Concur \n for this CHS connector
alt Concur Managed PNR
cHotel -> cGDS++: Lookup existing PNR or \n create a new shell PNR in GDS \n and lock
alt PNR does not exist
cGDS -> gds: Create a new shell PNR \n (PNR with misc segment)
gds --> cGDS--: New PNR
end
cGDS --> cHotel--: PNR Reclocator
end
cHotel -> supply++: Book hotel request with PNR RecLocator
alt Source is GDS
supply -> gds: Add active segment to PNR pointed by RecLocator
else Other direct connect source
supply -> other: Book hotel request
supply -> gds: Add passive segment to PNR pointed by RecLocator
note left: Needs to meet Concur's standard passive format
end
supply -> gds: Add remarks to PNR
supply --> cHotel--: Book response with flag denoting if "ActiveSegmentInConcurPNR"
cHotel -> cGDS: Release PNR Lock
alt "ActiveSegmentInConcurPNR" is true
cHotel -> cHotel: Store booking as GDS (for read/cancel)
else "ActiveSegmentInConcurPNR" is false
cHotel -> cHotel: Store booking as CHS (same as today)
end
cHotel --> user--: Booking Confirmation

@enduml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
@startuml hotel-cancel

participant "User" as user

participant Concur as concur #Lightcyan
participant "CHSSupplier" as supply #LightBlue
participant "GDS" as gds #LightYellow
participant "OtherSupplierSource" as other #LightYellow


== Cancel GDS sourced booking ==
user -> concur++: Cancel booking/trip
concur -> gds++: Cancel booking/trip
gds --> concur--: Ack
concur -> concur: Update storage
concur -> supply++: Cancel booking (notification- includes cancellation no.)
supply -> supply: Update booking status
supply --> concur--: Cancel booking update response
concur --> user: Cancel confirmation with cancellation no.
break

== Cancel direct-connect sourced booking ==
user -> concur++: Cancel booking
concur -> supply++: Cancel booking (request)
supply -> other: Cancel with direct-connect source
other --> supply--: Cancel response
supply -> gds: Delete passive segment
gds --> supply--: Ack
supply -> concur--: Cancel response with cancellation no.
concur -> concur: Update storage
concur --> user--: Cancel confirmation with cancellation no.

@enduml


Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# Single PNR Solution For CHS

**Note: This feature is not yet generally available.**

## Overview
This document describes the design of "Single PNR Solution" for Hotel's direct connect offering of Custom Hotel Source (CHS) program.

For bookings made using CHS today, if passives are enabled, we have two PNRs associated with each hotel booking. Concur creates and manages a PNR in the appropriate GDS for the trip and adds a passive segment to that PNR with details of the hotel booking made by the CHS supplier. The CHS supplier also creates a PNR in the GDS with the active segment. Duplication of PNRs not only causes sync and operational issues but also adds cost for each booking. Hence, in cooperation with CHS suppliers, we have come up with a solution where there is only one PNR created for the CHS hotel booking. This solution will be applicable to both GDS and non-GDS content booked through the CHS supplier.

### Solution

At a high-level, solution consists of:
- Concur passes existing PNR locator or create a shell PNR (if hotel is first booking) to HSv4 endpoint for hotel booking
- TMC/Supplier confirms the hotel booking with their source (GDS or direct-connect) and work on the PNR (segment, remarks etc.) and release it back to Concur. If source is GDS, supplier will create an active segment while if source is direct-connect, supplier will create a passive segment.
- Concur takes the PNR back and perform finishing.
- If GDS booking ("active" segment added by supplier) - all post-booking operations like `Retrieve` and `Cancel` will be managed as `GDS` booking within Concur. That is, HSv4 read and cancel endpoints will not be used and instead Concur will work directly with GDS to read/cancel booking.
- If supplier supports `Modify` flow, Concur will use HSv4 endpoints to allow supplier to reshop and modify the booking.

## Requirements from TMC/Supplier for this solution
- TMC/Supplier will use standard active and passive segment format as required by Concur.
- TMC/Supplier will have option to manage their own passive segment or use current Concur managed solution for passives. If they choose to manage their own passives, they will need to:
- Disable passive segment creation for CHS bookings to avoid duplicate passive creation for non-gds hotels.
- Create new passive segment in Concur created PNR along with booking with their direct connect source (as detailed in the design).
- Cancel passive segment as part of their `cancel` flow along with canceling the booking with their direct connect source.

## Design

### Booking flow

![](images/diagrams/singlepnr/hotel_book.png)

Above sequence diagram shows the flow for booking a hotel using CHS supplier that supports single PNR solution. Highlights of the flow are:
- CHS supplier will never create a GDS PNR with this solution. During booking request, Concur looks up already existing PNR associated with the Trip and travel config used or creates a new shell PNR and associates with the trip.
- Concur obtains an internal lock on the PNR (for 60 secs) and sends the hotel booking request to supplier with the PNR locator.
- If supplier is booking with GDS, they will use this PNR locator to add the active segment to the PNR. If rate to book belongs to direct connect (e.g. Booking.com/Expedia), supplier will book with that direct connect and add a passive segment to PNR referenced by this record locator.
- Once booking is done, Concur will release the PNR lock making PNR available for further changes e.g. adding Air/Car bookings, finishing etc.
- If supplier takes longer than 55 secs, booking transaction will time out.
- If PNR lock times out, lock will be released automatically to allow further actions on this PNR. In order to prevent "Simultaneous access" errors for user, it is necessary for supplier to honor this timeout and stop working on PNR after this.
- Booking response from supplier is expected to have `ActiveSegmentInConcurPNR` flag to indicate if the active segment was added to Concur PNR or not. This flag will be used to decide if Concur should treat this booking as GDS booking or direct-connect booking for post-booking functions.

### Cancel flow

As mentioned earlier, if `ActiveSegmentInConcurPNR` is set true booking is treated as GDS booking and Concur will manage cancel flow directly with GDS. Though, CHS supplier will still be notified using HSv4's [cancel endpoint](./v4.endpoints.html#cancel-). Note that invocation of `cancel endpoint` is only for notification to allow CHS supplier to perform any cancel related processing in their system and hotel booking with GDS should be already canceled at that time.

![](images/diagrams/singlepnr/hotel_cancel.png)

#### GDS Booking
- User initiates cancel request and Concur cancels the active segment/trip in GDS and updates storage with `Canceled` status with cancellation no.
- Concur sends `cancel` request to CHS supplier with cancel number. Note here that this request is just acting as a notification to CHS supplier as booking is already canceled in GDS.
- Above `cancel` request can trigger any post-booking processing in CHS supplier system.


#### Direct Connect Booking
- User initiates cancel request and Concur forwards this cancel request to CHS supplier.
- Supplier sends cancel request to their direct connect source and also deletes any related passive segment if they created one for the booking.
- Cancel response with cancellation no. is returned to Concur which is then stored and displayed to user.

4 changes: 2 additions & 2 deletions feed.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
<description>Concur docs provides comprehensive information on working with the Concur platform</description>
<link>https://preview.developer.concur.com/</link>
<atom:link href="https://preview.developer.concur.com/feed.xml" rel="self" type="application/rss+xml" />
<pubDate>Fri, 13 Sep 2024 18:13:28 +0000</pubDate>
<lastBuildDate>Fri, 13 Sep 2024 18:13:28 +0000</lastBuildDate>
<pubDate>Mon, 16 Sep 2024 17:54:36 +0000</pubDate>
<lastBuildDate>Mon, 16 Sep 2024 17:54:36 +0000</lastBuildDate>
<generator>Jekyll v4.1.1</generator>

</channel>
Expand Down

0 comments on commit 64b5e42

Please sign in to comment.