5 Change Block Status
Business Case
All groups or blocks have a status that is attached to the block header. This status code reflects the group’s status in terms of inquiry, contract sent, contract pending, confirmed, open for pickup, canceled, and so on. With each status, different options can be included, and the next available status or a status cycle can be set.
During the life of a block, you might need to change block status several times. Each status change affects the inventory differently; for example, from INQUIRY to DEDUCT, from NON DEDUCT to DEDUCT, from DEDUCT to ACTUAL, or from any status to CANCEL. In most scenarios, a status change is also necessary to change the block to an open-for-pickup status (reservations can be made against the block) to close-for-pick-up (no reservations can be made against the block). Status configuration and status flow can be configured in OPERA, and it is necessary to understand the configured status and the available status sequence for your customer site to submit the correct status update for an existing block.
Prerequisites
Table 5-1 Required Software Tools
Tool | Description | Links |
---|---|---|
Postman |
Postman is an API Platform that allows you to design, create and test API's. Use Postman to send API requests or to use the Postman collections provided. |
Table 5-2 Current Versions Required
OPERA Cloud Platform Module | Description | Minimum Version |
---|---|---|
OPERA Cloud Services |
The customer must have a subscription to OPERA Cloud Foundation |
|
Oracle Hospitality Integration Platform (OHIP) |
For custopmers OHIP is included in the subscription to OPERA Cloud Foundation. Partners must subscribe to Oracle Hospitality Integration Cloud Service. |
Configuration of OPERA Controls
To activate the Create Block functionality, you must ensure the following OPERA Controls are active in the target property. You can use the following API operations to validate the settings:
Ensure that application function BLOCKS - BUSINESS BLOCK is active
RQ: ent/config/v1/settings?hotelId={{HotelId}}¶meterNameWildCard=BUSINESS BLOCKblk/config/v1/blockStatusCodes
Check if the site is using USE SINGLE BLOCK STATUS
RQ: ent/config/v1/settings?hotelId={{HotelId}}¶meterNameWildCard=USE SINGLE BLOCK STATUS
Other Required Configuration Elements:
Block Status
RQ: blk/config/v1/blockStatusCodes
Block Status Flow
RQ: blk/config/v1/blockStatusCodes/{{scrBlockStatusCode}}/nextStatusCodes
Reservation Type
RQ: rsv/config/v1/guaranteeCodes?pageNumber=1&hotelIds={{hotelId}}
Block Lost / Cancel / Refused Reasons
RQ: blk/config/v1/blockLostBookingCodes
blk/config/v1/blockCancellationReasons
blk/config/v1/blockRefusedReasons
Reservation Cancellation Reasons
RQ: rsv/config/v1/cancellationCodes?fetchInactive=false
Workflow
Step by step solution including:
Figure 5-1 The sequence of API calls (in any direction)

Description of Steps
A typical process to change a block status is as follows:
- Check which next available statuses can be selected using the getNextBlockStatus RQ with parameter currentStatus set to the current Block Status of the block you would like to change.
- Change the status of the block using the putBlockStatus
RQ .
- Ensure that elements currentBlockStatus, newBlockStatus, and reservationType are sent with valid values.
- Two flags are available in the RQ to override rooms availability and function space availability warnings. These are overbookAll and overrideEventsProcessingWarnings.
- Ensure the reservation type sent is correct based on the new block status code. Blocks on INQUIRY or NON DEDUCT status require a non-deduct reservation type. Blocks on DEDUCT or ACTUAL status require a DEDUCT reservation type.
- If a catering status exists on the block and contains the same value as the rooms status, you can set the flag applyChangesToCateringStatus to true. This also applies the selected newBlockStatus to the catering status.
- If BLOCKS - USE SINGLE BLOCK STATUS OPERA Control is active, ensure that the block status and catering status are always changed to the same new value.
- When changing the status to a LOST / CANCEL / REFUSED status, the lost / cancellation / refused reason becomes mandatory. Therefore, if your new status is a CANCEL type status, verify that collection cancellationDetails contains valid values.
- When a Posting master already exists for the block and you want
to cancel the Posting Master with the same RQ as the block cancellation,
verify the following:
- The reservation cancellation for the Posting Master is contained within your RQ in section cancellationDetails.
- Flag cancelAllPMReservations is set to true.
- Note that it is not possible to cancel a block when there are active reservations other than the Posting Master already linked to the block. It is necessary to first cancel or unlink all reservations before block cancellation is allowed.
Sample calls: Sample API calls for steps described in the diagram.
Sample for getBlockNextStatus
Get List of Next Available Status Codes
GET{{HostName}}/blk/v1/blocks/status?currentStatus=TEN&hotelId={{HotelId}}&includeCateringStatus=true
No Body
200 Response: OK
Body:
{
"blockNextStatusList": [
{
"bookingStatus": {
"status": {
"code": "DEF",
"description": "Definite"
}
},
"parentBookingStatus": "TEN",
"deductInventory": true,
"catDeductInventory": true,
"allowPickup": true,
"returnToInventory": false,
"defaultReservationType": "GDED"
},
{
"bookingStatus": {
"status": {
"code": "ACT",
"description": "Actual"
}
},
"parentBookingStatus": "DEF",
"deductInventory": true,
"catDeductInventory": true,
"allowPickup": true,
"returnToInventory": false,
"defaultReservationType": "GDED"
},
{
"bookingStatus": {
"status": {
"code": "TDN",
"description": "Turndown New"
}
},
"parentBookingStatus": "DEF",
"deductInventory": false,
"catDeductInventory": false,
"allowPickup": false,
"returnToInventory": true
},
{
"bookingStatus": {
"status": {
"code": "REG",
"description": "Regret Type"
}
},
"parentBookingStatus": "DEF",
"deductInventory": false,
"catDeductInventory": false,
"allowPickup": false,
"returnToInventory": true
},
{
"bookingStatus": {
"status": {
"code": "REF",
"description": "Refused"
}
},
"parentBookingStatus": "DEF",
"deductInventory": false,
"catDeductInventory": false,
"allowPickup": false,
"returnToInventory": true,
"defaultReservationType": "GNON"
},
{
"bookingStatus": {
"status": {
"code": "LOST",
"description": "Lost"
}
},
"parentBookingStatus": "DEF",
"deductInventory": false,
"catDeductInventory": false,
"allowPickup": false,
"returnToInventory": true,
"defaultReservationType": "GNON"
},
{
"bookingStatus": {
"status": {
"code": "LOS",
"description": "Lost"
}
},
"parentBookingStatus": "DEF",
"deductInventory": false,
"catDeductInventory": false,
"allowPickup": false,
"returnToInventory": true
},
{
"bookingStatus": {
"status": {
"code": "CAN",
"description": "Cancel"
}
},
"parentBookingStatus": "DEF",
"deductInventory": false,
"catDeductInventory": false,
"allowPickup": false,
"returnToInventory": true
},
{
"bookingStatus": {
"status": {
"code": "ALO",
"description": "Allotment...."
}
},
"parentBookingStatus": "TEN",
"deductInventory": false,
"catDeductInventory": false,
"allowPickup": true,
"returnToInventory": false
},
{
"bookingStatus": {
"status": {
"code": "LOST",
"description": "Lost"
}
},
"parentBookingStatus": "ALO",
"deductInventory": false,
"catDeductInventory": false,
"allowPickup": false,
"returnToInventory": true,
"defaultReservationType": "GNON"
},
{
"bookingStatus": {
"status": {
"code": "TE1",
"description": "Tentative"
}
},
"parentBookingStatus": "ALO",
"deductInventory": true,
"catDeductInventory": false,
"allowPickup": false,
"returnToInventory": false,
"defaultReservationType": "9"
},
{
"bookingStatus": {
"status": {
"code": "REF",
"description": "Refused"
}
},
"parentBookingStatus": "ALO",
"deductInventory": false,
"catDeductInventory": false,
"allowPickup": false,
"returnToInventory": true,
"defaultReservationType": "GNON"
},
{
"bookingStatus": {
"status": {
"code": "TE1",
"description": "Tentative"
}
},
"parentBookingStatus": "TEN",
"deductInventory": true,
"catDeductInventory": false,
"allowPickup": false,
"returnToInventory": false,
"defaultReservationType": "9"
},
{
"bookingStatus": {
"status": {
"code": "LOS",
"description": "Lost"
}
},
"parentBookingStatus": "TE1",
"deductInventory": false,
"catDeductInventory": false,
"allowPickup": false,
"returnToInventory": true
},
{
"bookingStatus": {
"status": {
"code": "REG",
"description": "Regret Type"
}
},
"parentBookingStatus": "TE1",
"deductInventory": false,
"catDeductInventory": false,
"allowPickup": false,
"returnToInventory": true
},
{
"bookingStatus": {
"status": {
"code": "PEN",
"description": "Pending x"
}
},
"parentBookingStatus": "TE1",
"deductInventory": false,
"catDeductInventory": true,
"allowPickup": false,
"returnToInventory": false,
"defaultReservationType": "GNON"
},
{
"bookingStatus": {
"status": {
"code": "OPEN",
"description": "Open for pickup"
}
},
"parentBookingStatus": "TE1",
"deductInventory": false,
"catDeductInventory": true,
"allowPickup": true,
"returnToInventory": false
},
{
"bookingStatus": {
"status": {
"code": "TOPN",
"description": "Open Pickup"
}
},
"parentBookingStatus": "TEN",
"deductInventory": false,
"catDeductInventory": false,
"allowPickup": true,
"returnToInventory": false,
"defaultReservationType": "CC"
},
{
"bookingStatus": {
"status": {
"code": "LOST",
"description": "Lost"
}
},
"parentBookingStatus": "TOPN",
"deductInventory": false,
"catDeductInventory": false,
"allowPickup": false,
"returnToInventory": true,
"defaultReservationType": "GNON"
},
{
"bookingStatus": {
"status": {
"code": "OPEN",
"description": "Open for pickup"
}
},
"parentBookingStatus": "TEN",
"deductInventory": false,
"catDeductInventory": true,
"allowPickup": true,
"returnToInventory": false
},
{
"bookingStatus": {
"status": {
"code": "ACT",
"description": "Actual"
}
},
"parentBookingStatus": "OPEN",
"deductInventory": true,
"catDeductInventory": true,
"allowPickup": true,
"returnToInventory": false,
"defaultReservationType": "GDED"
},
{
"bookingStatus": {
"status": {
"code": "CAN",
"description": "Cancel"
}
},
"parentBookingStatus": "OPEN",
"deductInventory": false,
"catDeductInventory": false,
"allowPickup": false,
"returnToInventory": true
}
],
"cateringNextStatusList": [
{
"bookingStatus": {
"status": {
"code": "DEF",
"description": "Definite"
}
},
"parentBookingStatus": "TEN",
"deductInventory": true,
"catDeductInventory": true,
"allowPickup": true,
"returnToInventory": false,
"defaultReservationType": "GDED"
},
{
"bookingStatus": {
"status": {
"code": "ACT",
"description": "Actual"
}
},
"parentBookingStatus": "DEF",
"deductInventory": true,
"catDeductInventory": true,
"allowPickup": true,
"returnToInventory": false,
"defaultReservationType": "GDED"
},
{
"bookingStatus": {
"status": {
"code": "TDN",
"description": "Turndown New"
}
},
"parentBookingStatus": "DEF",
"deductInventory": false,
"catDeductInventory": false,
"allowPickup": false,
"returnToInventory": true
},
{
"bookingStatus": {
"status": {
"code": "REG",
"description": "Regret Type"
}
},
"parentBookingStatus": "DEF",
"deductInventory": false,
"catDeductInventory": false,
"allowPickup": false,
"returnToInventory": true
},
{
"bookingStatus": {
"status": {
"code": "REF",
"description": "Refused"
}
},
"parentBookingStatus": "DEF",
"deductInventory": false,
"catDeductInventory": false,
"allowPickup": false,
"returnToInventory": true,
"defaultReservationType": "GNON"
},
{
"bookingStatus": {
"status": {
"code": "LOST",
"description": "Lost"
}
},
"parentBookingStatus": "DEF",
"deductInventory": false,
"catDeductInventory": false,
"allowPickup": false,
"returnToInventory": true,
"defaultReservationType": "GNON"
},
{
"bookingStatus": {
"status": {
"code": "LOS",
"description": "Lost"
}
},
"parentBookingStatus": "DEF",
"deductInventory": false,
"catDeductInventory": false,
"allowPickup": false,
"returnToInventory": true
},
{
"bookingStatus": {
"status": {
"code": "CAN",
"description": "Cancel"
}
},
"parentBookingStatus": "DEF",
"deductInventory": false,
"catDeductInventory": false,
"allowPickup": false,
"returnToInventory": true
},
{
"bookingStatus": {
"status": {
"code": "ALO",
"description": "Allotment...."
}
},
"parentBookingStatus": "TEN",
"deductInventory": false,
"catDeductInventory": false,
"allowPickup": true,
"returnToInventory": false
},
{
"bookingStatus": {
"status": {
"code": "LOST",
"description": "Lost"
}
},
"parentBookingStatus": "ALO",
"deductInventory": false,
"catDeductInventory": false,
"allowPickup": false,
"returnToInventory": true,
"defaultReservationType": "GNON"
},
{
"bookingStatus": {
"status": {
"code": "TE1",
"description": "Tentative"
}
},
"parentBookingStatus": "ALO",
"deductInventory": true,
"catDeductInventory": false,
"allowPickup": false,
"returnToInventory": false,
"defaultReservationType": "9"
},
{
"bookingStatus": {
"status": {
"code": "REF",
"description": "Refused"
}
},
"parentBookingStatus": "ALO",
"deductInventory": false,
"catDeductInventory": false,
"allowPickup": false,
"returnToInventory": true,
"defaultReservationType": "GNON"
},
{
"bookingStatus": {
"status": {
"code": "TE1",
"description": "Tentative"
}
},
"parentBookingStatus": "TEN",
"deductInventory": true,
"catDeductInventory": false,
"allowPickup": false,
"returnToInventory": false,
"defaultReservationType": "9"
},
{
"bookingStatus": {
"status": {
"code": "LOS",
"description": "Lost"
}
},
"parentBookingStatus": "TE1",
"deductInventory": false,
"catDeductInventory": false,
"allowPickup": false,
"returnToInventory": true
},
{
"bookingStatus": {
"status": {
"code": "REG",
"description": "Regret Type"
}
},
"parentBookingStatus": "TE1",
"deductInventory": false,
"catDeductInventory": false,
"allowPickup": false,
"returnToInventory": true
},
{
"bookingStatus": {
"status": {
"code": "PEN",
"description": "Pending x"
}
},
"parentBookingStatus": "TE1",
"deductInventory": false,
"catDeductInventory": true,
"allowPickup": false,
"returnToInventory": false,
"defaultReservationType": "GNON"
},
{
"bookingStatus": {
"status": {
"code": "OPEN",
"description": "Open for pickup"
}
},
"parentBookingStatus": "TE1",
"deductInventory": false,
"catDeductInventory": true,
"allowPickup": true,
"returnToInventory": false
},
{
"bookingStatus": {
"status": {
"code": "TOPN",
"description": "Open Pickup"
}
},
"parentBookingStatus": "TEN",
"deductInventory": false,
"catDeductInventory": false,
"allowPickup": true,
"returnToInventory": false,
"defaultReservationType": "CC"
},
{
"bookingStatus": {
"status": {
"code": "LOST",
"description": "Lost"
}
},
"parentBookingStatus": "TOPN",
"deductInventory": false,
"catDeductInventory": false,
"allowPickup": false,
"returnToInventory": true,
"defaultReservationType": "GNON"
},
{
"bookingStatus": {
"status": {
"code": "OPEN",
"description": "Open for pickup"
}
},
"parentBookingStatus": "TEN",
"deductInventory": false,
"catDeductInventory": true,
"allowPickup": true,
"returnToInventory": false
},
{
"bookingStatus": {
"status": {
"code": "ACT",
"description": "Actual"
}
},
"parentBookingStatus": "OPEN",
"deductInventory": true,
"catDeductInventory": true,
"allowPickup": true,
"returnToInventory": false,
"defaultReservationType": "GDED"
},
{
"bookingStatus": {
"status": {
"code": "CAN",
"description": "Cancel"
}
},
"parentBookingStatus": "OPEN",
"deductInventory": false,
"catDeductInventory": false,
"allowPickup": false,
"returnToInventory": true
}
],
"links": []
}
Sample for putBlockStatus (Change from NON DEDUCT to DEDUCT)
Note:
Although there is a start and end date for each grid cell, in this call, the start and end date in each collection must be the same (and the collection must be repeated for any additional dates)/
This call is for a block that is not open for pickup. Note the element: "allocation": "INITIAL." When running this RQ for an open-for-pickup call, the elements must be :"allocation": "ACTUAL."
Change Block Status from NON DEDUCT to DEDUCT
PUT{{HostName}}/blk/v1/hotels/{{HotelId}}/blocks/{{BlockId}}/status
Body:
{
"verificationOnly": false,
"changeBlockStatus": {
"hotelId": "{{HotelId}}",
"blockId": {
"type": "Block",
"idContext": "OPERA",
"id": "{{BlockId}}"
},
"currentBlockStatus": "TEN",
"newBlockStatus": "DEF",
"reservationType": "GRPGTD",
"overbookAll": false,
"cancelAllPMReservations": false,
"applyChangesToCateringSatus": true,
"overrideEventsProcessingWarnings": true
}
}
200 Response: OK
Body:
{
"block": {
"blockIdList": [
{
"id": "916877",
"type": "Block",
"idContext": "OPERA"
}
],
"blockDetails": {
"blockStatus": {
"bookingStatus": {
"status": {
"code": "DEF",
"description": "Definite"
}
}
},
"reservationType": {
"reservationType": "GDED"
},
"status": "O",
"allowRateOverride": false,
"manualCutOff": false,
"wholesaleBlock": false
},
"markAsRecentlyAccessed": false
},
"cancellationDetails": {
"cancellationCode": {}
},
"blockNextStatusList": [
{
"bookingStatus": {
"status": {
"code": "LOST",
"description": "Lost"
}
},
"parentBookingStatus": "DEF",
"deductInventory": false,
"allowPickup": false,
"returnToInventory": true,
"defaultReservationType": "GNON",
"cancellationType": "Lost"
},
{
"bookingStatus": {
"status": {
"code": "ACT",
"description": "Actual"
}
},
"parentBookingStatus": "DEF",
"deductInventory": true,
"allowPickup": true,
"returnToInventory": false,
"defaultReservationType": "GDED"
},
{
"bookingStatus": {
"status": {
"code": "LOS",
"description": "Lost"
}
},
"parentBookingStatus": "DEF",
"deductInventory": false,
"allowPickup": false,
"returnToInventory": true,
"cancellationType": "Lost"
},
{
"bookingStatus": {
"status": {
"code": "CAN",
"description": "Cancel"
}
},
"parentBookingStatus": "DEF",
"deductInventory": false,
"allowPickup": false,
"returnToInventory": true,
"cancellationType": "Cancel"
},
{
"bookingStatus": {
"status": {
"code": "REG",
"description": "Regret Type"
}
},
"parentBookingStatus": "DEF",
"deductInventory": false,
"allowPickup": false,
"returnToInventory": true,
"cancellationType": "Refused"
},
{
"bookingStatus": {
"status": {
"code": "REF",
"description": "Refused"
}
},
"parentBookingStatus": "DEF",
"deductInventory": false,
"allowPickup": false,
"returnToInventory": true,
"defaultReservationType": "GNON",
"cancellationType": "Refused"
},
{
"bookingStatus": {
"status": {
"code": "TDN",
"description": "Turndown New"
}
},
"parentBookingStatus": "DEF",
"deductInventory": false,
"allowPickup": false,
"returnToInventory": true,
"cancellationType": "Cancel"
}
],
"blockStatusChangeHistory": [
{
"sequence": 1,
"bookingStatus": {
"code": "INQ",
"description": "Inquiry Non Deduct"
},
"modifyDateTime": "2024-02-14",
"modifierId": "SPAVFIRST"
},
{
"sequence": 2,
"bookingStatus": {
"code": "TEN",
"description": "Tentative"
},
"modifyDateTime": "2024-02-14",
"modifierId": "SPAVFIRST"
},
{
"sequence": 3,
"bookingStatus": {
"code": "DEF",
"description": "Definite"
},
"modifyDateTime": "2024-02-14",
"modifierId": "SPAVFIRST"
}
],
"links": []
}
Sample for putBlockStatus (change from DEDUCT to CANCEL)
Note:
The start and end date in the collection define the date range for which the given values should be populated. Only one range can be defined per call.
This call is for a block that is open for pickup. Note the element: "allocation": "Actual." When running this RQ for a not open-for-pickup call, the elements must be :"allocation": "Initial."
Change Block Status from DEDUCT to CANCEL
PUT {{HostName}}/blk/v1/hotels/{{HotelId}}/blocks/{{BlockId}}/status
Body:
{
"verificationOnly": false,
"changeBlockStatus": {
"hotelId": "BHOTEL",
"blockId": {
"type": "Block",
"idContext": "OPERA",
"id": "916877"
},
"currentBlockStatus": "DEF",
"newBlockStatus": "CAN",
"reservationType": "GDED",
"cancellationDetails": {
"cancellationCode": {
"code": "RATE"
},
"cancellationInfo": "Rate to High"
},
"pMReservationsCancellationDetails": {
"cancellationCode": {
"code": "6PM",
"description": "6 PM Cancellation"
}
},
"overbookAll": false,
"applyChangesToCateringSatus": true,
"overrideEventsProcessingWarnings": false
}
}
200 Response: OK
Body:
{
"block": {
"blockIdList": [
{
"id": "916877",
"type": "Block",
"idContext": "OPERA"
}
],
"blockDetails": {
"blockStatus": {
"bookingStatus": {
"status": {
"code": "CAN",
"description": "Cancel"
}
}
},
"reservationType": {
"reservationType": "GDED"
},
"status": "C",
"allowRateOverride": false,
"manualCutOff": false,
"wholesaleBlock": false
},
"markAsRecentlyAccessed": false
},
"cancellationDetails": {
"cancellationNumber": {
"id": "2040306",
"type": "Cancellation",
"idContext": "OPERA"
},
"cancellationCode": {
"code": "RATE"
},
"cancellationDate": "2023-09-22",
"cancellationInfo": "Rate to High"
},
"blockNextStatusList": [],
"blockStatusChangeHistory": [
{
"sequence": 1,
"bookingStatus": {
"code": "INQ",
"description": "Inquiry Non Deduct"
},
"modifyDateTime": "2024-02-14",
"modifierId": "SPAVFIRST"
},
{
"sequence": 2,
"bookingStatus": {
"code": "TEN",
"description": "Tentative"
},
"modifyDateTime": "2024-02-14",
"modifierId": "SPAVFIRST"
},
{
"sequence": 3,
"bookingStatus": {
"code": "DEF",
"description": "Definite"
},
"modifyDateTime": "2024-02-14",
"modifierId": "SPAVFIRST"
},
{
"sequence": 4,
"bookingStatus": {
"code": "CAN",
"description": "Cancel"
},
"modifyDateTime": "2024-02-14",
"modifierId": "SPAVFIRST"
}
],
"links": []
}
References
-
For more information, review the Anti-Patterns chapter in the OHIP user guide to learn more about functional and technical anti-patterns.
-
Fore more information, refer to the Blocks introduction topic in the OPERA Cloud Services user guide.