Opera Exchange Interface - Communication Vendor Specification
Opera Exchange Interface - Communication Vendor Specification
Interface
Communication Vendor Specification
October 2017
Copyright © 1987, 2017, Oracle and/or its affiliates. All rights reserved.
This software and related documentation are provided under a license agreement containing
restrictions on use and disclosure and are protected by intellectual property laws. Except as
expressly permitted in your license agreement or allowed by law, you may not use, copy,
reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or
display any part, in any form, or by any means. Reverse engineering, disassembly, or
decompilation of this software, unless required by law for interoperability, is prohibited.
The information contained herein is subject to change without notice and is not warranted to be
error-free. If you find any errors, please report them to us in writing.
If this software or related documentation is delivered to the U.S. Government or anyone licensing it
on behalf of the U.S. Government, then the following notice is applicable:
U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated
software, any programs installed on the hardware, and/or documentation, delivered to U.S.
Government end users are "commercial computer software" pursuant to the applicable Federal
Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication,
disclosure, modification, and adaptation of the programs, including any operating system,
integrated software, any programs installed on the hardware, and/or documentation, shall be
subject to license terms and license restrictions applicable to the programs. No other rights are
granted to the U.S. Government.
This software or hardware is developed for general use in a variety of information management
applications. It is not developed or intended for use in any inherently dangerous applications,
including applications that may create a risk of personal injury. If you use this software or
hardware in dangerous applications, then you shall be responsible to take all appropriate fail-safe,
backup, redundancy, and other measures to ensure its safe use. Oracle Corporation and its
affiliates disclaim any liability for any damages caused by use of this software or hardware in
dangerous applications.
Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be
trademarks of their respective owners.
Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC
trademarks are used under license and are trademarks or registered trademarks of SPARC
International, Inc. AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or
registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of The Open
Group.
This software or hardware and documentation may provide access to or information about content,
products, and services from third parties. Oracle Corporation and its affiliates are not responsible
for and expressly disclaim all warranties of any kind with respect to third-party content, products,
and services unless otherwise set forth in an applicable agreement between you and Oracle. Oracle
Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to
your access to or use of third-party content, products, or services, except as set forth in an
applicable agreement between you and Oracle.
2
Contents
Preface ....................................................................................................... 5
Audience ..................................................................................................................................5
Customer Support ...................................................................................................................5
Documentation ........................................................................................................................5
1 Introduction .......................................................................................... 6
2 Synchronous or Asynchronous ............................................................ 7
3 Push or Pull .......................................................................................... 8
4 HTTP/HTTPS ....................................................................................... 9
Configuration Options ...........................................................................................................9
Push/Push .........................................................................................................................9
Push/Pull ...........................................................................................................................9
Pull/Pull.............................................................................................................................9
Recommendations................................................................................................................. 10
OXI as Client: Receive Data from External System .......................................................... 10
URL Parameters ............................................................................................................. 10
Expected HTTP Response ............................................................................................. 10
Mandatory Processing Instruction .............................................................................. 10
Sample URL: ................................................................................................................... 11
OXI as Client: Send Data to External System .................................................................... 11
URL Parameters ............................................................................................................. 12
Expected HTTP Response ............................................................................................. 13
Sample URL .................................................................................................................... 13
OXI as Server: Send Data to OXI ......................................................................................... 13
Implementation Change ............................................................................................... 13
Authentication ................................................................................................................ 14
URL Components .......................................................................................................... 14
URL Parameters ............................................................................................................. 14
HTTP Response .............................................................................................................. 15
Sample URL .................................................................................................................... 15
Sample POST Data ......................................................................................................... 15
OXI as Server: Receive Data from OXI ............................................................................... 16
URL Components .......................................................................................................... 16
URL Parameters ............................................................................................................. 17
Sample URL .................................................................................................................... 17
HTTP Response - Message is available for property ................................................ 17
3
HTTP Response - Message is not available for property .......................................... 18
HTTP Response - Error occurred while processing the GET request ..................... 19
5 FTP ...................................................................................................... 21
External system has an FTP server – this is the standard handling ............................... 21
Messages into OPERA .......................................................................................................... 21
Messages from OPERA ........................................................................................................ 21
8 Tools ................................................................................................... 25
4 Contents
Preface
This document explains the communication mechanisms supported by OPERA Xchange
Interface (OXI).
Audience
This document is intended for software developers.
Customer Support
To contact Oracle Customer Support, access My Oracle Support at the following URL:
https://support.oracle.com
When contacting Customer Support, please provide the following:
Product version and program/module name
Functional and technical description of the problem (include business impact)
Detailed step-by-step instructions to re-create
Exact error message received and any associated log files
Screen shots of each step you take
Documentation
Oracle Hospitality product documentation is available on the Oracle Help Center at
http://docs.oracle.com/en/industries/hospitality/
5
1 Introduction
OXI supports the following communication mechanisms. Details of each mechanism are
provided later.
HTTP/HTTPS
FTP
File System
When OXI is implemented as a 2-way interface, the most fundamental operation it needs
to perform is receiving data to process from an external system and sending data to the
external system for processing.
Introduction 6
2 Synchronous or Asynchronous
Even though some of these communication mechanisms such as HTTP support
synchronous communication, OXI processing is always asynchronous.
When OXI receives data from an external system, that data may not be processed
immediately. It is queued for processing and a synchronous response is provided to
notify the status of the receipt of the message -whether it has been successfully received
or an error occurred while receiving/queuing the message – following the standards
defined for that particular communication mechanism, if the communication mechanism
supports a synchronous response. For example, 200 OK/400 Bad Request in case of http
communication. An asynchronous response conforms to the result XML schema is
generated for the external system stating the completion status of the processing and any
other relevant information later, once the queued data is processed.
Synchronous or Asynchronous 7
3 Push or Pull
Communication mechanisms that use the client/server terminology such as HTTP and
FTP can be implemented in different configurations. Since there are two parties involved
in the communication – in our case OXI and the external system – theoretically either can
function as the server and the other party can function as client. OXI does not support all
such combinations of configurations due to various reasons. Supported configurations,
where applicable, are explained while discussing the corresponding communication
mechanisms later in this document.
8 Push or Pull
4 HTTP/HTTPS
OXI supports the four possible client server configurations while communicating using
HTTP/HTTPS. Following details apply to both HTTP and HTTPS. To use HTTPS, server
has to be configured accordingly.
Important: HTTPS functionality when OXI functions as HTTP Client was tested and
verified only using Apache HTTP server 1.3 with Verisign’s SSL certificate.
Configuration Options
Push/Push
Both systems push messages to other system when messages are available. External
system sends messages for OXI to OPERA’s HTTP server and OXI sends messages to
external system’s HTTP server.
Pros Cons
No polling is involved to check the Both systems have to maintain HTTP
availability of messages. Reduces network servers.
activity.
Push/Pull
External system pushes messages to OPERA when messages are available and
polls OPERA’s HTTP server for availability of messages (or)
OPERA pushes messages to external system when messages are available and
polls external system’s HTTP server for availability of messages.
Pros Cons
Only one side need to have the HTTP To receive messages, one system will have
server. to poll the other system’s HTTP server for
available messages at frequent intervals.
This increases network activity.
Pull/Pull
Both systems poll the other system for messages and pull them when available. This
configuration is included for the completion of the discussion and should not be
implemented as this does not have any pros and have all cons of the previous two
options.
HTTP/HTTPS 9
Recommendations
Either first or second option should be selected after weighing the pros and cons of both
options. Third option is not recommended at all as it does not seem to have any pros and
has combined cons of the other two options.
URL Parameters
Notes : Parameter names will be in camel case as shown below and
values will be in upper case.
Name Description
propertyName Resort code used by the external system to identify the
property. This will be the same as external resort set in OXI’s
configuration.
10 HTTP/HTTPS
Tags shown in green italic above must be replaced with actual values. Details of these
tags follow:
Name Description
propertyName Resort code used by the external system to identify the
property. This should be the same as external resort set in
OXI’s configuration.
messageType Type of the XML message sent by the external system. Valid
values are:
ALLOTMENT : Allotment
INVENTORY : Inventory
MESSAGEREQUEST : Message request
PROFILE : Profile
RATE : Rate
RAVL : Rate restriction
RAVR : Rate restriction (room type)
RESERVATION : Reservation
RESULT : Result
transactionId For new messages generated by the external system, external
system’s numeric transaction identifier that uniquely identifies
this particular message. It must be between 1 and 999999999
inclusive. For RESULT messages generated in response to
OXI’s message, message id of the original message sent by OXI
– It is used to update the status of the original message sent by
OXI accordingly.
status Reserved. Must be SUCCESS always.
Sample:
Sample URL:
http://oxihub.ft.micros.com:5868/servlets/ORSInterface?propertyNa
me=SLBK
http://oxihub.ft.micros.com:5868/servlets/ORSInterface :
Configurable in OXI.
SLBK : Will be replaced by
OXI using actual value.
HTTP/HTTPS 11
URL Parameters
Notes : Parameter names will be in camel case as shown below and
values will be in upper case.
Name Description
propertyName Resort code used by the external system to identify the property.
This will be the same as external resort set in OXI’s
configuration.
messageType Type of the XML message sent by OXI. Valid values are:
ALLOTMENT : Allotment
HURDLE : Hurdle
INVENTORY : Inventory
INVENTORYQUERY : Inventory request
INVENTORYSUMMARY : Inventory summary
MESSAGEREQUEST : Message request
PACKAGES : Package
PROFILE : Profile
RATE : Rate
RAVL : Rate restriction
RAVR : Rate restriction (room type)
RESERVATION : Reservation
RESULT : Result
RTAV : Inventory snapshot
SCHEMAVERSION : XML schema version
STAY : Guest stay history
transactionId For new messages generated by OXI, OXI’s numeric transaction
identifier that uniquely identifies this particular message. It will
be between 1 and 999999999 inclusive. For RESULT messages
generated in response to external systems’ message, message id
of the original message sent by the external system.
status NEW : New non-result message.
SUCCESS : Only for result messages. OXI
processed original message received
from the external system was
successfully.
FAILED : Only for result messages. OXI could
not process original message received
from the external system.
DELETE : Only for profile messages. User deleted
the profile in OPERA.
12 HTTP/HTTPS
Expected HTTP Response
Status Code 000Content- Content- Content
Type Length
Message 200 OK not applicable not used Not used.
accepted
Error >= 400 text/plain not used Error message.
encountered OXI will resend
the message
after a delay.
Sample URL
http://oxihub.ft.micros.com:5868/servlets/ORSInterface?propertyNa
me=SLBK&messageType=PROFILE&transactionId=208&status=SUCCESS
http://oxihub.ft.micros.com:5868/servlets/ORSInterface :
Configurable in OXI.
SLBK, PROFILE, 208, SUCCESS : Will be replaced by
OXI using actual values.
All the components after the port in the URL are case-sensitive. They should be used in
the same case as shown above.
Implementation Change
Applicable to only those OPERA and OXI versions prior to 3.0.1 used the PL/SQL
Gateway component for Apache provided by Oracle to facilitate the http communication.
This mandated the clients to use form-encoded data streams while sending data to OXI’s
communication http server. Also it had issues handling https protocol and there are
message size limitations. Though this is still supported, it has been deprecated and being
replaced by the servlet based communication module which does not accept form-
encoded data, but text/xml plain text data. At the time of this writing, PL/SQL Gateway
based http communication is supported till version 3.6 of OPERA and OXI. It may not be
supported in future versions. Servlet based communication module is supposed to
resolve the following critical shortcomings: Ability to support https and the ability to
support messages larger than 32000 bytes.
HTTP/HTTPS 13
Authentication
From OPERA version 5.0.05.00 onwards, authentication information is needed to access
the servlets for message exchange. Obtain the credentials from the site administrator and
pass those using “Basic Authentication Scheme” defined in http standard, this involves
passing “Authorization” request header with base64 encoded username and password as
specified in the http standard.
URL Components
All italicised underlined words in the URL given above must be replaced with actual
values. Description of those fields follow:
URL Parameters
Notes : Parameter names and values are case sensitive. Parameter
names must be in camel case as shown below and values must
be in upper case.
Name Description
interfaceName Interface id assigned to the external system.
propertyName Property code used by the external system to identify the
property. This should be the same as the value configured in
external resort field of OXI’s interface setup.
messageType Type of the XML message. Refer to OXI as Client : Receive Data
from External System section for valid values
transactionId For RESULT messages : OXI transaction id of the original
message received from OXI.
For other messages : External system’s unique transaction
identifier. Can be alphanumeric up to
100 characters long. To make it user
and support friendly, it is
recommended to use numeric values
up to 9 digits long.
14 HTTP/HTTPS
status NEW : New non-result message.
SUCCESS : Only for result messages. To indicate
successful processing of original
message received from OXIHUB by
the external system.
FAILED : Only for result messages. To indicate
unsuccessful processing of original
message received from OXIHUB by
the external system.
HTTP Response
Result Status Code Content-Type Content
Message accepted 200 OK text/plain Brief status
message.
Invalid request from 400 Bad Request text/plain Error message
client
Authentication 401 Unauthorized text/html Generic error
failure indicating an issue
with authorization.
Authentication 403 Forbidden text/plain Generic error
failure indicating an issue
with authorization.
Error reported by 500 Internal Server text/plain Error message
OXI while Error
processing request
Sample URL
http://oxihub.ft.micros.com:5868/Operajserv/OXIServlets/PMSInterface?interfaceName=
ORS&propertyName=MEXICO&messageType=PROFILE&transactionId=60528&status=
NEW
Content
<?xml version = '1.0'?>
<?Label MEXICO|PROFILE|60528|NEW?>
<Profile profileType="CORPORATE" gender="UNKNOWN"
xmlns="profile.fidelio.2.0">
<profileID>1111111</profileID>
<creatorCode>Creator</creatorCode>
<createdDate>2004-06-09T15:29:48.000</createdDate>
<lastUpdaterCode>Creator</lastUpdaterCode>
HTTP/HTTPS 15
<lastUpdated>2004-06-09T15:30:22.000</lastUpdated>
<genericName>Master Account</genericName>
<IndividualName>
<nameSur>Master Account</nameSur>
</IndividualName>
<PostalAddresses>
<PostalAddress addressType="BUSINESS">
<address1>1111 Street</address1>
<city>Anytown</city>
<stateCode>FL</stateCode>
<postalCode>99999</postalCode>
<countryCode>US</countryCode>
<mfPrimaryYN>Y</mfPrimaryYN>
</PostalAddress>
</PostalAddresses>
<PhoneNumbers>
<PhoneNumber phoneNumberType="BUSINESS">
<phoneNumber>123-456-7890</phoneNumber>
<mfPrimaryYN>Y</mfPrimaryYN>
</PhoneNumber>
</PhoneNumbers>
<mfResort>MEXICO</mfResort>
<mfAllowMail>NO</mfAllowMail>
<mfAllowEMail>NO</mfAllowEMail>
<mfGuestPriv>NO</mfGuestPriv>
<mfAllowPhone>0</mfAllowPhone>
<mfAllowSMS>0</mfAllowSMS>
</Profile>
URL Components
All italicised underlined words in the URL given above must be replaced with actual
values. Description of those fields follow:
OperaHTTPServer Replace with the IP address or host name of the OPERA HTTP
server designated for communication
Port HTTP service’s listening port on the OPERA HTTP server.
Optional. Specify if different from standard port 80.
16 HTTP/HTTPS
URL Parameters
Notes : Parameter names and values are case sensitive. Parameter
names must be in camel case as shown below and values must
be in upper case.
Name Description
interfaceName Interface ID assigned to the external system.
propertyName Property code used by the external system to identify the
property. This should be the same as the value configured in
external resort field of OXI’s interface setup.
Sample URL
URL:
http://nploxidb/Operajserv/OXIServlets/PMSInterface?interfaceName=ORS&propertyNa
me=SLB
Request Method: GET
Sample Response
Response code : 200
Response message : OK
Header Fields
1. Connection: [close]
2. title: [SLB|PROFILE|73|NEW]
3. cache-control: [no-control]
4. Date: [Fri, 21 May 2004 17:52:23 GMT]
5. Pragma: [no-cache]
6. Server: [Oracle HTTP Server Powered by Apache/1.3.19 (Win32)
mod_ssl/2.8.1 OpenSSL/0.9.5a mod_oprocmgr/1.0 mod_perl/1.25]
HTTP/HTTPS 17
7. Content-Type: [text/xml; charset=UTF-8]
8. null: [HTTP/1.1 200 OK]
9. Transfer-Encoding: [chunked]
Sample Response
Response code : 200
Response message : OK
18 HTTP/HTTPS
Header Fields
1. Content-Length: [0]
2. Connection: [close]
3. cache-control: [no-control]
4. Date: [Fri, 21 May 2004 17:51:30 GMT]
5. null: [HTTP/1.1 200 OK]
6. Pragma: [no-cache]
7. Server: [Oracle HTTP Server Powered by Apache/1.3.19 (Win32)
mod_ssl/2.8.1 OpenSSL/0.9.5a mod_oprocmgr/1.0 mod_perl/1.25]
8. Content-Type: [text/plain]
Sample Response
Response code : 400
Response message : Bad Request
Header Fields
1. Connection: [close]
2. cache-control: [no-control]
3. Date: [Fri, 21 May 2004 18:27:39 GMT]
4. Pragma: [no-cache]
5. Server: [Oracle HTTP Server Powered by Apache/1.3.19 (Win32)
mod_ssl/2.8.1 OpenSSL/0.9.5a mod_oprocmgr/1.0 mod_perl/1.25]
6. Content-Type: [text/plain]
7. null: [HTTP/1.1 400 Bad Request]
8. Transfer-Encoding: [chunked]
Error Stream
Dequeue error for [SLB]: java.sql.SQLException: ORA-04068:
existing state of packages has been discarded
ORA-04061: existing state of package body
"OXIHUB46_D.INT_COMM_MAIN" has been invalidated
ORA-04065: not executed, altered or dropped package body
"OXIHUB46_D.INT_COMM_MAIN"
ORA-06508: PL/SQL: could not find program unit being called
ORA-06512: at "OXIHUB46_D.XMLDEQUEUECLOB2", line 22
HTTP/HTTPS 19
ORA-06512: at line 1
20 HTTP/HTTPS
5 FTP
In order to utilize data transfer via FTP protocol, a FTP server must exist that can receive
PUT and GET commands from another system.
OXI transfers data from the external system into the Inbound queue from where the
OXI download processor takes over.
OXI produces upload messages from the OPERA business events and stores these in
the Outbound queue using its upload processor and an FTP transfer mechanism to
send the messages to the external system.
FTP 21
OXI sends the XML file to the external FTP server using FTP/PUT.
22 FTP
6 File System
In order to utilize the file transfer communication method, the external system vendor
needs to establish communication to the OXI interface PC and place data into a defined
directory on that PC or the surrounding network.
File System 23
7 Requirements for the OXI Generic
Installation
Hardware Requirements
The OXI Win NT service must reside in a Microsoft Win NT or Microsoft Win 2000
workstation on the network. This workstation should not run any DOS based
programs.
The Property Interfaces PC at the property can be used to install OXI as it has similar
hardware and software requirements.
Single property thin client installations: The OPERA Application Server can also be
used to install OXI.
Tools 25