Upgrade to Pro — share decks privately, control downloads, hide ads and more …

How to integrate with Property Management Syste...

How to integrate with Property Management Systems (RU)

Проблемы интеграций с PMS. Разбор реальных кейсов. Пути решения.

https://pirexpo.com/event/cbbb6968-d55a-11e9-8d3f-000c29f15ff6

Avatar for Vladimir Almaev

Vladimir Almaev

October 09, 2019

More Decks by Vladimir Almaev

Other Decks in Programming

Transcript

  1. О себе • Team Lead в Hapi • 10 лет

    в индустрии • Специализация: • языки программирования • интеграции • [email protected] • @vladimir_almaev
  2. Кейс: хранилище для бронирований • Крупная гостиничная сеть • Разные

    PMS от разных вендоров • Аналитика по бронированиям
  3. ⚠ Одна PMS – несколько API • Oracle Opera •

    OXI – Opera Exchange Interface • OWS – Opera Web Services • FIAS – Fidelio Interface Application Specification • Opera Reports
  4. ⚠ Одна PMS – несколько API • У каждого API

    • своя область использования • своя модель взаимодействия • свои "особенности" работы • свои конфигурационные параметры • своя цена для отеля
  5. Модели взаимодействия • PUSH • PMS инициирует отправку сообщений •

    подтверждение с принимающей стороны • HTTP API на принимающей стороне • PULL • Мы вытягиваем данные из PMS • HTTP API на стороне PMS
  6. ⚠ Сертификация с вендором PMS • Разработка по документации, а

    не с реальной PMS • Тестовые среды • нестабильны • могут сильно отличаться от реального отеля • могут быть доступны только на период сертификации • Сама сертификация: не rocket science, но время займёт
  7. ⚠ Одна гостиничная сеть – много PMS • Отели покупаются

    и продаются • Тратить деньги на переход с одной PMS на другую нецелесообразно • Переобучение персонала • Обновление инфраструктуры • Могут возникнуть проблемы с текущими интеграциями • Следствие: необходима унифицированная модель данных • Путь 1: использование существующих стандартов (OTA, HTNG) • Путь 2: своя модель
  8. ⚠ Стандарты реализуются по-разному <Service ServicePricingType="Per use" ServiceInventoryCode="UPG" Inclusive="false" Quantity="1">

    <!-- other details --> </Service> <Service ServicePricingType="2" ServiceInventoryCode="ROOMUP" Inclusive="0" Quantity="1"> <!-- other details --> </Service>
  9. ⚠ Стандарты реализуются по-разному <Service ServicePricingType="Per use" ServiceInventoryCode="UPG" Inclusive="false" Quantity="1">

    <!-- other details --> </Service> <Service ServicePricingType="2" ServiceInventoryCode="ROOMUP" Inclusive="0" Quantity="1"> <!-- other details --> </Service>
  10. ⚠ Стандарты реализуются по-разному <HotelReservation> <RoomStays> <RoomStay> <RoomTypes> <RoomType RoomID="123"/>

    </RoomTypes> </RoomStay> </RoomStays> </HotelReservation> <HotelReservation> <RoomStays> <RoomStay> <RoomRates> <RoomRate RoomID="123" /> </RoomRates> </RoomStay> </RoomStays> </HotelReservation>
  11. ⚠ Сложности унификации • Диапазоны дат • Enumerations • Разные

    названия полей: arrival VS arrivalDate vs checkInDate vs … • Taxes: net vs gross • Spaces: не все PMS работают только на уровне комнат <ServiceDetails> <TimeSpan Start="2019-10-04" End="2019-10-06"/> </ServiceDetails>
  12. ⚠ Повторная обработка • Вариант №1: инициировать
 историческую загрузку из

    PMS • не все PMS это умеют • Вариант №2: сохранять 
 "сырые" сообщения у себя • Kafka • Важно соблюдать порядок сообщений
  13. ⚠ Мониторинг и алёртинг • Низкоуровневый (для инженеров) • Стек

    Elasticsearch-Logstash-Kibana • Высокоуровневый (для бизнес-пользователей) • На уровне одного отеля • На уровне всей сети