التوثيق · واجهة PMS

Paramétrage OXI → Bridg_

Le guide de mise en service d'une interface Oracle OPERA (OXI) 2 voies vers Bridg_ : licence, interface, communication, versions de schéma, paramètres et recette — à remettre à l'intégrateur.

Staginghttps://staging.bridgchannel.appv1.0 · 2026-09-11<?Label BRIDG|DOC|1.0|NEW?>

هذا التوثيق التقني متاح باللغة الفرنسية فقط.

Mettre en service une interface Oracle Xchange (OXI) 2 voies entre OPERA 5 on-premise et Bridg_. Chaque valeur ci-dessous a été relevée sur une installation OXI 5.5 réelle et validée contre les schémas XML officiels d'Oracle. À remettre tel quel à l'intégrateur OPERA de l'établissement.

Avant de commencer

Cinq points à réunir avant de toucher à un écran OXI. Le premier conditionne le calendrier de toute l'installation.

Point Ce qu'il faut
OPERA OPERA 5 on-premise. OPERA Cloud n'est pas couvert par ce modèle de branchement.
OXI Module servlet HTTP/S. La passerelle PL/SQL (dépréciée) ne fait ni HTTPS ni messages > 32 Ko.
Licence OPX_GN2 — Opera Xchange Generic 2-way, add-on Oracle licencié par interface et par propriété. Sans elle, les Business Events (le flux OPERA → Bridg_) ne s'activent pas.
Réseau Sortie HTTPS (443) depuis le serveur OXI vers staging.bridgchannel.app. Aucun flux entrant : OXI est toujours le client, toutes les connexions partent de l'hôtel.
Côté Bridg_ Une connexion créée avec le dialecte opera-oxi et le code resort OPERA. Vous récupérez alors le connectionId et le secret.

1. Créer l'interface

OXI → Interface Configuration → New Interface.

Champ Valeur
Interface OXI-2W — Opera Xchange Generic 2-way
OPERA Property Le code resort OPERA (ex. ATLALG). C'est la valeur externalPropertyCode saisie dans Bridg_ — les deux doivent coïncider.
External System Property Le code de la base externe, propre à Bridg_ (ex. BRIDG). OXI le renverra dans chaque requête sous propertyName.
Message Format XML
Data Flow 2 sens : OPERA → External et External → OPERA
Delta Mode Y — n'émettre que les changements, pas l'état complet à chaque fois
Deletion Indicator Caractère ~ · Numérique -99999 · Date 12/12/1800 (valeurs usuelles ; Bridg_ ne s'en sert pas mais OXI l'exige)
INTERFACE CONFIGURATION · NEW INTERFACE Interface OXI-2W OPERA Property ATLALG External System Property BRIDG Message Format XML Data Flow Two-Way (OPERA ⇄ External) Delta Mode Y
En cuivre : les deux codes à décider. OPERA Property doit être identique à l'externalPropertyCode de la connexion Bridg_ ; External System Property est un code neuf, propre à cette interface.

2. Méthodes de communication

Interface Configuration → Comm Methods, à renseigner dans les deux sens. C'est ici que vit l'URL de Bridg_ — identique pour les deux sens :

https://staging.bridgchannel.app/api/pms/v1/connections/<connectionId>/messages?key=<secret>

OXI ajoute lui-même &propertyName=…&zipData=… à chaque requête — il détecte la query existante et concatène avec &, donc le paramètre key reste intact.

Sens Comm Type Mode Sleep Time Timeout
Opera → External (OXI pousse) HTTP/S Client .01 min (≈ 0,6 s) 60 s
External → Opera (OXI vient chercher) HTTP/S Client 1 à 2 min 60 s
COMM METHODS · OPERA → EXTERNAL SYSTEM Comm Method HTTP/S Communication Mode Client URL …/connections/<connectionId>/messages?key=<secret> Use Client Certificate No Sleep Time · Time Out .01 60
L'écran HTTP/S n'a aucun champ identifiant / mot de passe : le secret voyage dans l'URL via ?key=. Même URL dans le sens External → Opera, avec un Sleep Time de 1 à 2 min.

3. Versions de schéma XML

Edit Interface → XML Version. Alignez chaque type sur la version que Bridg_ traduit.

Type Version Namespace Statut Bridg_
RATE V6 rate.fidelio.6.0 traduit
RTAV V4 rtav.fidelio.4.0 traduit
RESERVATION V5 reservation.fidelio.5.0 traduit
RESTRICTION V4 restriction.opera.4.0 traduit
RESULT V4 result.fidelio.4.0 traduit
RAVL / RAVR V2 ravl/ravr.fidelio.2.0 RAVL oui · RAVR oui avec rateCode
PROFILE V5 — lu dans les réservations
INVENTORY · ALLOTMENT · STAY · HURDLE — — non traduits

4. Paramètres clés

Trois réglages décident si l'interface parle ou reste muette.

Paramètre Valeur Pourquoi
Change_To_Inventory_Generates RTAV La disponibilité doit voyager en RTAV. En INVENTORY, Bridg_ ne la traduit pas.
Business Events Actifs Sans eux, OPERA n'émet aucun changement live vers Bridg_.
Restrictions RAVL, RAVR ou RESTRICTION Par code tarifaire (RAVL), tarif × type (RAVR ou RESTRICTION). Une restriction de type sans tarif, de classe ou de l'hôtel entier est refusée.
EDIT INTERFACE · PARAMETERS ! Business Events Inactive ← l'état à NE PAS laisser : OPERA reste muet Business Events Active (prompt au 1ᵉʳ Edit → Yes) Change_To_Inventory_ Generates RTAV
Le bandeau rouge « Business Events Inactive » est la cause n°1 d'une interface muette. Le prompt d'activation n'apparaît qu'au premier Edit Interface — voir la note ci-dessous.

5. Correspondance des codes

Interface Configuration → Conversion Codes. Le pont entre les codes OPERA et ceux de Bridg_.

Relevez les codes de types de chambre et de codes tarifaires réellement distribués, puis mappez-les dans Bridg_ (écran Interface PMS → Correspondance des codes).

  • Seuls les tarifs et types de chambre effectivement distribués ont besoin d'un mapping — inutile de traiter les 200+ codes internes.
  • Un code non mappé est refusé item par item (le reste du message passe) et apparaît dans le journal Bridg_ avec le code fautif : UNMAPPED_UNIT_TYPE ou UNMAPPED_RATE.
  • Le mapping se complète au fil de l'eau : ajoutez le code manquant côté Bridg_, relancez, l'item passe.

6. Recette

Cinq contrôles, dans l'ordre, avant de passer la connexion en ACTIVE.

# Contrôle Attendu
1 Ping. Au redémarrage du processeur OXI, le GET de drainage sort. 200 avec Content-Length: 0 (file vide) — visible dans le log OXI.
2 Resync (Utilities → Resync) : Rates, Restriction, Inventory sur une plage de dates courte. Messages PROCESSED côté Bridg_, calendrier qui reflète les valeurs.
3 Date de fin des prix. Poussez un tarif du 01 au 03. Si la nuit du 03 manque, réglez rateEndDateInclusive à false côté Bridg_.
4 Réservation OPERA → Bridg_. Créez une résa à la réception. Elle apparaît dans Bridg_ (source PMS), départs 0 nuit inclus.
5 Boucle retour. Créez une résa de test dans Bridg_. OXI la récupère (Message Status → From External System) et renvoie un RESULT SUCCESS.

Limites connues

Ce que Bridg_ refuse volontairement plutôt que de le traduire à moitié — un item refusé est toujours journalisé, jamais perdu en silence.

  • Tarifs par durée de séjour (tiered) et prix week-end : refusés.
  • Restrictions par classe de chambre, catégorie de tarif, hôtel entier ou bloc : refusées (granularité non supportée).
  • RAVR sans code tarifaire (un type fermé sur tous les tarifs) : refusé. Avec code tarifaire, traduit.
  • Un code tarifaire sans conversion dans OXI part vide : la restriction arrive « sans rateCode » et est refusée comme restriction de l'hôtel entier. Ajoutez la conversion (Conversion Codes › Rate Codes).
  • Prix : seule l'occupation double est distribuée aujourd'hui.

Dépannage

Les symptômes les plus fréquents et leur cause.

Symptôme Cause probable Correctif
Rien n'arrive dans Bridg_, calendrier vide Business Events inactifs, ou Change_To_Inventory_Generates ≠ RTAV, ou resync jamais lancé Étape 4, puis un resync (étape 6)
Le GET ne renvoie pas 200 / Content-Length: 0 URL ou ?key= erroné, ou connexion non trouvée Recopier l'URL de l'étape 2 ; vérifier connectionId et secret
401 Unauthorized Clé ?key= invalide Régénérer / recopier le secret côté Bridg_
RESULT FAILED — UNMAPPED_* Code type de chambre / tarif absent du mapping : rien n'a été appliqué Associer le code dans Bridg_ (et sa conversion dans OXI, étape 5) — ou l'ignorer dans Bridg_ s'il n'est pas vendu en ligne
RESULT en avertissement (WARNING) — UNMAPPED_* Message appliqué en partie : les codes nommés sont refusés, le reste est écrit Associer ces codes dans Bridg_ s'ils sont vendus en ligne, sinon les ignorer (Correspondance des codes › Ignorer)
Avertissement OXI 102 PMS values used for failed conversion codes Code sans conversion, envoyé quand même sous son code OPERA (constaté sur les business events de tarifs) Retirer la conversion ne suffit pas à filtrer : ignorer le code dans Bridg_
RESULT FAILED — UNSUPPORTED_* Granularité non supportée (classe, hôtel, bloc, RAVR) Voir Limites connues ; émettre par tarif
400 MALFORMED_GZIP Corps annoncé gzip mais illisible (rare) Repasser zipData à N pour isoler
Erreur Oracle (ORA-…) au Save de l'interface Problème de base OPERA côté serveur, hors périmètre interface Escalader au DBA / à l'hébergeur OPERA