Integration of Hotel Property Management Systems (HPMS) with Global Internet Reservation Systems



Similar documents
Copyright 2012, Oracle and/or its affiliates. All rights reserved.

The presentation explains how to create and access the web services using the user interface. WebServices.ppt. Page 1 of 14

Introduction to Testing Webservices

Creating Web Services in NetBeans

XIII. Service Oriented Computing. Laurea Triennale in Informatica Corso di Ingegneria del Software I A.A. 2006/2007 Andrea Polini

Introduction to Web Services

IBM SPSS Collaboration and Deployment Services Version 6 Release 0. Single Sign-On Services Developer's Guide

Introduction to Service Oriented Architectures (SOA)

Mobility Information Series

T Network Application Frameworks and XML Web Services and WSDL Tancred Lindholm

Developing Java Web Services

XML Processing and Web Services. Chapter 17

Developers Integration Lab (DIL) System Architecture, Version 1.0

WEB SERVICES. Revised 9/29/2015

Using Web Services to exchange information via XML

HexaCorp. White Paper. SOA with.net. Ser vice O rient ed Ar c hit ecture

Analyses on functional capabilities of BizTalk Server, Oracle BPEL Process Manger and WebSphere Process Server for applications in Grid middleware

Improving Agility at PHMSA through Service-Oriented Architecture (SOA)

WCF WINDOWS COMMUNICATION FOUNDATION OVERVIEW OF WCF, MICROSOFTS UNIFIED COMMUNICATION FRAMEWORK FOR.NET APPLICATIONS

A Generic Database Web Service

Easy CramBible Lab DEMO ONLY VERSION Test284,IBM WbS.DataPower SOA Appliances, Firmware V3.6.0

Consuming and Producing Web Services with Web Tools. Christopher M. Judd. President/Consultant Judd Solutions, LLC

Replacements TECHNICAL REFERENCE. DTCCSOLUTIONS Dec Copyright 2009 Depository Trust Clearing Corporation. All Rights Reserved.

ITS. Java WebService. ITS Data-Solutions Pvt Ltd BENEFITS OF ATTENDANCE:

Java Web Services Training

Grid Computing. Web Services. Explanation (2) Explanation. Grid Computing Fall 2006 Paul A. Farrell 9/12/2006

Lab: Application Lifecycle Management (ALM) Across Heterogeneous Platforms (Java/.NET)

Products that are referred to in this document may be trademarks and/or registered trademarks of the respective owners.

Web Services Technologies

JVA-561. Developing SOAP Web Services in Java

Oracle Application Server 10g Web Services Frequently Asked Questions Oct, 2006

SOA REFERENCE ARCHITECTURE: WEB TIER

Common definitions and specifications for OMA REST interfaces

Motivation Definitions EAI Architectures Elements Integration Technologies. Part I. EAI: Foundations, Concepts, and Architectures

Emerging Technologies Shaping the Future of Data Warehouses & Business Intelligence

WEB SERVICES SECURITY

Getting started with OWASP WebGoat 4.0 and SOAPUI.

Service-Oriented Architectures


Secure Authentication and Session. State Management for Web Services

David Pilling Director of Applications and Development

Model User Guide for Implementing Online Insurance Verification

Introduction into Web Services (WS)

IBM WebSphere Adapter for Quick Start Tutorials

2. Define Contemporary SOA. Contemporary SOA represents an architecture that promotes service orientation through the use of web services.

Service Oriented Architecture

Load Testing SOAs which Utilize Web Services

Web Services Implementation: The Beta Phase of EPA Network Nodes

4 Understanding. Web Applications IN THIS CHAPTER. 4.1 Understand Web page development. 4.2 Understand Microsoft ASP.NET Web application development

Internationalization and Web Services

CONTRACT MODEL IPONZ DESIGN SERVICE VERSION 2. Author: Foster Moore Date: 20 September 2011 Document Version: 1.7

4.2 Understand Microsoft ASP.NET Web Application Development

Sentinel EMS v7.1 Web Services Guide

WhitePaper. Web services: Benefits, challenges, and a unique, visual development solution

Web Services and Service Oriented Architectures. Thomas Soddemann, RZG

Literature Review Service Frameworks and Architectural Design Patterns in Web Development

STUDY ON IMPROVING WEB SECURITY USING SAML TOKEN

What are Web Services? A BT Conferencing white paper

e-filing Secure Web Service User Manual

Consuming and Producing Web Services with WST and JST. Christopher M. Judd. President/Consultant Judd Solutions, LLC

Modernize your NonStop COBOL Applications with XML Thunder September 29, 2009 Mike Bonham, TIC Software John Russell, Canam Software

[MS-SPEMAWS]: SharePoint Web Service Protocol. Intellectual Property Rights Notice for Open Specifications Documentation

HireRight Integration Platform and API: HireRight Connect. Third Party Developer Guide

Research on the Model of Enterprise Application Integration with Web Services

CA Nimsoft Service Desk

3GPP TS V8.1.0 ( )

Fundamentals of Web Programming a

Automating Rich Internet Application Development for Enterprise Web 2.0 and SOA

The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into

[MS-BDSRR]: Business Document Scanning: Scan Repository Capabilities and Status Retrieval Protocol

Web Programming. Robert M. Dondero, Ph.D. Princeton University

Setup Guide Access Manager 3.2 SP3

Policy Guide Access Manager 3.1 SP5 January 2013

Developer Guide to Authentication and Authorisation Web Services Secure and Public

Message Containers and API Framework

A Java proxy for MS SQL Server Reporting Services

The increasing popularity of mobile devices is rapidly changing how and where we

Integration Using the MultiSpeak Specification

Oracle Enterprise Manager

[MS-SAMLPR]: Security Assertion Markup Language (SAML) Proxy Request Signing Protocol

An IDL for Web Services

Real-Time Connectivity Specifications For. 270/271 and 276/277 Inquiry Transactions. United Concordia Dental (UCD)

Connecting Custom Services to the YAWL Engine. Beta 7 Release

File Transfer Service (Batch SOAP) User Guide. A Guide to Submitting batches through emedny FTS

An XML Based Data Exchange Model for Power System Studies

How To Create A C++ Web Service

Oracle Service Bus Examples and Tutorials

Secure Semantic Web Service Using SAML

WebSpy Vantage Ultimate 2.2 Web Module Administrators Guide

OnCommand Performance Manager 1.1

Deploying Oracle Business Intelligence Publisher in J2EE Application Servers Release

Transcription:

Integration of Hotel Property Management Systems (HPMS) with Global Internet Reservation Systems If company want to be competitive on global market nowadays, it have to be persistent on Internet. If we speak about hotels' offers and reservations systems, that lead us to Online Tourist Agencies / Computer Reservation Systems as a solution. Today's standard for communication between HPMS and Online Tourist Agencies relies on XML messages that are based according to OpenTravel Alliance specifications. This specifications are open and free to use, and can be found here. They are written with this on mind: Open standard Flexibility Platform independancy Security Extendability International compatibility One of the most important global reservation systems is Expedia. It's subsdiary Venere is the leader in online hotel reservation systems and uses OpenTravel Alliance specifications for it's web services. We'll get back to Expedia and Venere later, let see a bit of theory for start. Communication between heterogenic systems Modern information system has following characteristics: plain, understandable language simply way for information representation reability uniformity short-time information processing easy and fast gathering, processing, storing and using information. 1

To achieve this goals, we use specifications and protocols described below. XML (extensible Markup Language) is specification produced by the W3C. It represents markup language that defines a set of rules for encoding documents in a format that is both human-readable and machine-readable. XML is in wide use for representing custom data structures, especially in web services. You can read more about XML here, here and here. There are many XML-based languages and protocols, and SOAP is one of them thas suits our needs. SOAP (Simple Object Access Protocol) is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks. It relies on Extensible Markup Language (XML) for its message format, and usually relies on other Application Layer protocols, most notably Hypertext Transfer Protocol (HTTP) and Simple Mail Transfer Protocol (SMTP), for message negotiation and transmission. SOAP protocol consists of three parts: an envelope, which defines what is in the message and how to process it, a set of encoding rules for expressing instances of application-defined datatypes, and a convention for representing procedure calls and responses. SOAP has three major characteristics: Extensibility (security and WS-routing are among the extensions under development) Neutrality (SOAP can be used over any transport protocol such as HTTP, SMTP or even TCP) Independence (SOAP allows for any programming model). You can read more about SOAP here and W3C specification is here. Web Service is "a software system designed to support interoperable machine-to-machine interaction over a network". It has an interface described in a machine-processable format (specifically WSDL). Other systems interact with the Web service in a manner prescribed by its description using SOAP messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards. 2

"Big Web services" use XML messages that follow the SOAP standard. In such systems, there is often a machine-readable description of the operations offered by the service written in the Web Services Description Language (WSDL). The latter is not a requirement of a SOAP endpoint, but it is a prerequisite for automated client-side code generation in many.net and Java SOAP frameworks. More about Web services can be found here and here. WSDL (Web Services Description Language) is an XML-based language that is used for describing the functionality offered by a Web service. The WSDL describes services as collections of network endpoints, or ports. The abstract definitions of ports and messages are separated from their concrete use or instance, allowing the reuse of these definitions. Messages are abstract descriptions of the data being exchanged. In this way, WSDL describes the public interface to the Web service. WSDL is often used in combination with SOAP and an XML Schema to provide Web services over the Internet. A client program connecting to a Web service can read the WSDL file to determine what operations are available on the server. Any special datatypes used are embedded in the WSDL file in the form of XML Schema. The client can then use SOAP to actually call one of the operations listed in the WSDL file using XML or HTTP. More about WSDL can be found here and here. XML schema is a description of a type of XML document, typically expressed in terms of constraints on the structure and content of documents of that type, above and beyond the basic syntactical constraints imposed by XML itself. XML schema language in widespread use is XML Schema (with a capital S) which is published as a W3C recommendation. More about XML schema can be found here. XSD (XML Schema Definition) which is published as a W3C recommendation, is one of several XML schema languages. Because of confusion between XML Schema as a specific W3C specification, and the use of the same term to describe schema languages in general, W3C has chosen to adopt XSD as the preferred name. Like all XML schema languages, XSD can be used to express a set of rules to which an XML document must conform in order to be considered 'valid' according to that schema. However, unlike most other schema languages, XSD was also designed with the intent that determination of a document's validity would produce a collection of information adhering to specific data types. More about XSD can be found here, here and here. 3

WCF (Windows Communication Foundation) is an application programming interface (API) in the.net Framework for building connected, service-oriented applications. WCF is designed in accordance with SOA principles to support distributed computing, where services are offered to users. Services typically have a WSDL interface that WCF client can use to access the service regardless of the platform on which to perform. WCF has the following characteristics: Service oriented Interoperability Multiple messaging patterns Service meta-data Safety Multiple transport and coding Reliable messages and messages in the queues Secure data transmission Transactions Support for AJAX, REST and SOAP Scalability Our Hotel Property Management Systems software MorenaInn is written in.net, so WCF was ideal choice for us. More about WCF can be found here and here. Communication between HPMS and Web service As a practical example, I choosed to explain communication with Venere web service. First thing to do is visiting www.expediaquickconnect.com, choosing VenereConnect in Developer Area and complete registration. After login, you have access to Frequently Asked Questions, Discussion Forum, Simulator tool and Download section. Simulator tool is very usefull for validating message transport protocol and message format. Suppliers are able to test their interface to VenereConnect by sending sample XML request messages to the VenereConnect Simulator over an HTTP connection and receiving synchronous confirmation responses from the simulator application. The simulator is the best tool to verify that the supported OTA messages suppliers send through VenereConnect have proper basic message authentication and formatting. In time of writing this article, VenereConnect applied schema is OTA 2006B. Authentication is completed by the simulator when the supplier provides the following organization, username and password credential in the request: Organization Username Password Expected behavior xhideveloper xhiuser xhipass123 Accept authentication 4

Once the authentication is validated, the request is checked against the appropriate schema. Any other username/password combination will result in an error SOAP FAULT CLIENT.3100: Authentication Error. Use the following URLs to communicate with the simulator: To send OTA_PingRQ messages: https://xhi-simulator.venere.com/xhi-1.0/services/ota_ping.soap To send OTA_ReadRQ messages for reservations: https://xhi-simulator.venere.com/xhi-1.0/services/ota_read.soap To send OTA_ReadRQ messages for availability status: https://xhi-simulator.venere.com/xhi-1.0/services/ota_readnotifreport.soap To send OTA_HotelAvailNotifRQ messages: https://xhi-simulator.venere.com/xhi-1.0/services/ota_hotelavailnotif.soap Other details about Simulator tool can be found at: http://www.expediaquickconnect.com/content/vc-simulator In Download section there are documents and files you will need for working with VenereConnect. Some of them are: VenereConnect Schemas, VenereConnect API and WSDL files. Download section can be found at http://www.expediaquickconnect.com/content/vc-downloads. For using WSDL files, you have to download them and generate proxy classes in Visual Studio with Add Service Reference wizard. This allows advanced and easier sending requests and accepting responses to/from VenereConnect. Venere.com with it's XHI-VenereConnect system supports these sort of messages: Generic Connectivity Test request / response: o OTA_PingRQ / OTA_PingRS Reservation detail request / response: o OTA_ReadRQ / OTA_ResRetrieveRS Availability and Rate detail request / response: o OTA_ReadRQ / OTA_NotifReportRQ Notification of change of Availability request / response: o OTA_HotelAvailNotifRQ / OTA_HotelAvailNotifRS Notification of change of Rate request / response: o OTA_HotelRateAmountNotifRQ / OTA_HotelRateAmountNotifRS Booking Rule detail request / response: o OTA_HotelBookingRuleRQ / OTA_HotelBookingRuleRS Notification of Booking Rule request / response: o OTA_HotelBookingRuleNotifRQ / OTA_HotelBookingRuleNotifRS Properties directory management request / response: o OTA_HotelSearchRQ / OTA_HotelSearchRS 5

As we can see, OTA messages comes in pairs each type of request has corresponding response type. Communication between MorenaInn software and venere.com web service will be shown with example of calling OTA_ReadRQ function and getting OTA_ResRetrieveRS response with data. XML structure of OTA_ReadRQ message <soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xhi="http://www.venere.com/xhi" xmlns:ns="http://www.opentravel.org/ota/2003/05"> <soapenv:header> <xhi:authentication> <xhi:userorgid>xhideveloper</xhi:userorgid> <xhi:userid>xhiuser</xhi:userid> <xhi:userpsw>xhipass123</xhi:userpsw> </xhi:authentication> </soapenv:header> <soapenv:body> <OTA_ReadRQ EchoToken="ABCDEF" Target="Production" Version="1.007" xmlns="http://www.opentravel.org/ota/2003/05" ReturnListIndicator="true"> <ReadRequests> <HotelReadRequest> <UserID Type="14" ID="2797406" /> </HotelReadRequest> </ReadRequests> </OTA_ReadRQ> </soapenv:body> </soapenv:envelope> 6

As I described before, XML SOAP message has Envelope section in it's heading, and under the Envelepo there are Header and Body. Envelope tag has addresses for XML SOAP Schema, XHI web service and OpenTravel Namespace. Header has the tag <xhi:authentication> with information about Organisation ID, User ID and Password. Body has the tag <OTA_ReadRQ> with informations about EchoToken, Target, Version, xmlns and ReturnListIndicator. In tag <UserID Type="14" ID="2797406" />, 14 means reservation and 2797406 is reservation ID. XML structure of OTA_ResRetrieveRS message <?xml version="1.0" encoding="utf-8"?> <soap:envelope xmlns:d="http://www.opentravel.org/ota/2003/05" xmlns:java="http://xml.apache.org/xslt/java" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tpa="http://www.venere.com/xhi/tpa_extensions" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"> <soap:header> <TransactionData xmlns="http://www.venere.com/xhi"> <TransactionID> TTID.XHI-1.0.325-C-DEV-0-0.fbawcpit.11777afad21.41 </TransactionID> </TransactionData> </soap:header> <soap:body> <OTA_ResRetrieveRS EchoToken="ABCDEF012345" PrimaryLangID="en-us" TimeStamp="2011-06-26T12:13:39+02:00" Version="4.000" xmlns="http://www.opentravel.org/ota/2003/05"> <Success/> <ReservationsList> <HotelReservation LastModifyDateTime="2011-06-26" ResStatus="NEW" RoomStayReservation="true"> <RoomStays> <RoomStay> <RoomTypes> <RoomType IsRoom="true" NumberOfUnits="3" RoomTypeCode="2233"> <RoomDescription Name="Double sea view"/> </RoomType> </RoomTypes> <RoomRates> <RoomRate NumberOfUnits="3" RatePlanCode="3344" RoomTypeCode="2233"> <Rates> <Rate/> </Rates> <Total AdditionalFeesExcludedIndicator="false" AmountAfterTax="112.0000" CurrencyCode="EUR" DecimalPlaces="0"/> </RoomRate> </RoomRates> <GuestCounts IsPerRoom="false"> <GuestCount Count="2"/> </GuestCounts> <TimeSpan End="2011-07-04" Start="2011-07-03"/> <BasicPropertyInfo HotelCode="112233"/> </RoomStay> </RoomStays> <ResGuests> 7

<ResGuest> <Profiles> <ProfileInfo> <Profile> <Customer> <PersonName> <GivenName>John</GivenName> <Surname>Coe</Surname> </PersonName> <Telephone PhoneNumber="+44-999-998899988"/> <Email>r.coe@dummy.com</Email> <Address> <CityName>London</CityName> <CountryName>England</CountryName> </Address> </Customer> </Profile> </ProfileInfo> </Profiles> </ResGuest> </ResGuests> <ResGlobalInfo> <TimeSpan End="2011-07-04" Start="2011-07-03"/> <Guarantee GuaranteeType="CC/DC/Voucher"> <GuaranteesAccepted> <GuaranteeAccepted> <PaymentCard CardCode="MC" CardNumber="1234567890123456" CardType="1" ExpireDate="0613"> <CardHolderName>JOHN DOE</CardHolderName> </PaymentCard> </GuaranteeAccepted> </GuaranteesAccepted> </Guarantee> <Total AdditionalFeesExcludedIndicator="false" AmountAfterTax="112.0000" CurrencyCode="EUR" DecimalPlaces="0"/> <HotelReservationIDs> <HotelReservationID ResID_Date="2006-08-03T22:22:00" ResID_Type="14" ResID_Value="2797406"/> </HotelReservationIDs> </ResGlobalInfo> <TPA_Extensions> <Venere ReservationType="IB" xmlns="http://www.venere.com/xhi/tpa_extensions"/> </TPA_Extensions> </HotelReservation> </ReservationsList> </OTA_ResRetrieveRS> </soap:body> </soap:envelope> In response message, there are also Envelope, Header and Body. In Header part there is <TransactionID> tag with information about transaction. Body holds a lot of information about reservation, every in it's tag with corresponding atributes. As example we can see part of message with client's data: <PersonName> <GivenName>John</GivenName> <Surname>Coe</Surname> </PersonName> <Telephone PhoneNumber="+44-999-998899988"/> <Email>r.coe@dummy.com</Email> <Address> <CityName>London</CityName> <CountryName>England</CountryName> </Address> 8

In response message there is a high degree of nested tags one within another, which at first glance bears a large amount of redundant information, but carries a good logical structure, makes the search easier and at the same time provides a uniform data representation. Nothing is perfect VenereConnect is running on Apache web server. Theoretically, Microsoft and Apache can communicate through SOAP, but I noticed some problems in practice. Venere Apache server response message is maked as text/plain type. In the other hand, Microsoft expects it in text/xml type. The response itself is good, and textual content of message is okay, but Microsoft Message Encoder reports an error because of other ContentType. So, custom Message Encoder has to be written and used. If you are interested in this toppic, more informations about this can be found here. Beside this, there is a little problem with VendorTypeMessage. You have to manually add a dummy attribute called "qwerty" in OTA_CommonTypes class: <xs:complextype name="vendormessagestype"> <xs:sequence> <xs:element name="vendormessage" type="vendormessagetype" <xs:annotation> <xs:documentation xml:lang="en"> A specific message associated with this vendor </xs:documentation> </xs:annotation> </xs:element> </xs:sequence> <xs:attribute name="qwerty" /> </xs:complextype> maxoccurs="99"> and after rebuilding proxy classes, you need to remove these querty fields. More about this, read here. Also, OTA_ReadRQ class misses UniqueID element, so you need to add it in Reference.cs: private string id; public string ID { get { return this.id; } set { this.id = value; this.raisepropertychanged("id"); } } I hope we ll have more luck in next versions of VenereConnect API and/or WCF, so these problems won t exist. 9

Conclusion I can conclude that OTA specification contributes to uniformity in the way of communication between HPMS's and global reservation systems, and in this way removes obstacles such as hardware differences and heterogeneity of software systems. Integration of hotel reservation system as MorenaInn with global booking system as Venere.com offers the opportunity for improved competitiveness of hotels and their offer in the global market. This type of online booking reservation system is established in advance, which is one of the techniques of demand management in the short term. Also, these reservation systems enable prediction of future demand in the long run, and consequently opportunities, increase the supply. For details about our HPMS software MorenaInn, visit this link. Saša Kostić, Morena engineering Ltd. 10