SAPI Lodging Workspace
Ops Review

SLDG Shield · Sep 29 → Oct 6

Renê CardozoJessica Sagen

Week overview

Alerting standardization and the move to incident.io

Problem
Monitors paged on raw counts in every environment, through two paging tools.
Action
Search alerts moved to error rates with volume gates, and paging moved to incident.io only SLDG-3109.
Effect
Production pings / week72 → 18dev + staging 23 → 20Paging tools2 → 1incident.ioProduction pings still non-actionable7 of 18details
Production pings per Shield week
Tuesday to Tuesday handoffs
#sapi-lodging-alerts ↗
Follow-ups (3)
engine-search#1459SLDG-3152 Container restarts monitor standard · merged Oct 6, after the handoff[SLDG-3108] Omni FA dependency monitor on an error rate · PR closed unmerged; threshold only raised in Datadog, Terraform still says 100Keep dev smoke tests out of the no-offer P1 monitor · no ticket · fired 9× this week
Details and evidence

SLDG monitors paged on raw counts across dev, stg and prd, and through two paging tools (OpsGenie and incident.io). Production pinged Shield 31, 64, 147, 143, 72 times in the weeks before this one.

Search monitors unified on service_group with error rates and volume gates ([SLDG-3105] Unify lodging alerts for the Navan ramp, [SLDG-3029] Alert on the no-offer rate). Booking INTERNAL counts removed ([SLDG-3106] Remove booking INTERNAL count alerts). Paging via incident.io only ([SLDG-3109] incident.io-only paging), with the schedule managing @sapi-lodging-shield. Integrations monitors handed to SPI ([SLDG-3149] Integrations monitors to SPI).

  • How pings are counted: Bot posts whose title starts with Triggered, Re-Triggered, Warn, No data, Alert or P1–P3 (not Recovered, not [SPI), duplicate Datadog posts within 2 minutes counted once; dev/staging split by the SLDG-dev/SLDG-stg, phase or instance markers.

CCA & Sertifi

Sertifi was on for far more hotels than use it; see Sertifi auto-enable.

Effect
Sertifi-enabled hotels11,3337,183 at V2 launch; rest auto-enabledForms processed by hotels25.7%31.7% opened · Jul 28 → Sep 30Sertifi auto-enableon → offunused properties disabled + ADMIN-locked
Details and evidence

Details in Sertifi auto-enable. Other CCA asks this week: [BUGS-132] send error, Primecap Sertifi transactions (DM), CCA signals contract, Canary CVC, [DPLAT-2557] CCA events in Snowflake.

Supplier logs follow one naming scheme across repos

Problem
Each supplier repo named its payload logs differently, so failures were hard to find.
Action
One naming scheme, <supplier>.<engineOp>.<step>.<supplierCall>.<request|response|error>, now used across he-relay, the shared libraries and the Amadeus REST, DerbySoft and Nuitee repos.
Effect
Supplier code bases on the scheme1 (partial) → 4 + shared libsFailures in 2xx bodies.response → .errorCard data in payload logsmasked
Details and evidence

Supplier payload logs were named differently in each repo. he-relay mostly followed a scheme but had hops without a step, invented error steps, and 2xx failures logged only as .response (audit in [SLDG-3062] Hop business errors under the hop step). The Amadeus REST, DerbySoft and Nuitee repos didn't follow it.

One scheme, <supplier>.<engineOp>.<step>.<supplierCall>.<request|response|error>, across he-relay, the shared lodging libraries and the Amadeus REST, DerbySoft and Nuitee repos:
• he-relay: [SLDG-3062] Hop business errors under the hop step · [SLDG-3066] WebBeds and Priceline errors under the calling hop
• Shared libraries: [SLDG-3026] Shared gRPC payload log names · [SLDG-3059] captureSupplierCall through the shared resolver · [SLDG-3056] Envelope log names like he-relay
• Supplier repos: [SLDG-3005] Amadeus REST payload log names · [SLDG-3006] DerbySoft payload log names · [SLDG-3007] Nuitee payload log names
• Card masking: [SPI-346] Mask card data in payload logs

Tickets: [SLDG-3027] Modification type in hop log names · [SLDG-3061] Shared supplier payload resolver. Naming rule: he-relay docs/agents/TypeScript.md.

Issues & resolutions

Hotelbeds: RECHECK rates confirmed without checkRate

Omni degradation · pulled from Navan Sep 29Sep 29 → Oct 5SLDG SearchSPIcross-teamthread
Problem
Omni traffic skipped checkRate, so stale RECHECK prices failed at confirm.
Action
Omni traffic only gets BOOKABLE rates SLDG-3134, live .
Effect
Omni confirm failures25.6% → 0.9%Hotelbeds rates offered to Navan−81%only 19% are BOOKABLEMembers with checkRate (reference)3–9%
Hotelbeds confirm failure rate: Omni (no checkRate) vs Members (checkRate)
6h buckets · buckets with <20 confirms hidden
Datadog ↗
Follow-ups (1)
Re-shop at confirm (Hotelbeds/WebBeds) · stalled: WebBeds attempt rolled back Oct 2, Hotelbeds attempt closed
Details and evidence

Hotelbeds returns BOOKABLE rates (price guaranteed) and RECHECK rates (price must be re-checked with checkRate). Members calls checkRate; Omni skipped it because Hotelbeds caps checkRate and won't raise the limit. Stale RECHECK prices then failed at confirm.

Search sends an Amplitude-controlled header and the gateway drops RECHECK rates for Omni traffic ([SLDG-3134] Search flag to drop Hotelbeds RECHECK rates, [SPI-469] Gateway drops Hotelbeds RECHECK rates), live .

WebBeds: room blocking failed at confirm

Omni degradation · pulled from Navan Sep 29Sep 29 → Oct 5SPI
Problem
Room blocks failed at confirm when WebBeds changed or renumbered the rate.
Action
Block with the offer-token allocation SPI-409, live ; back for Navan with a win-rate penalty.
Effect
Omni confirm errors22.8% → 8.8%Members confirm errors11.4% → 4.0%n=281 → 878
WebBeds confirm error rate: Omni vs Members
6h buckets · buckets with <20 confirms hidden
Datadog ↗
Follow-ups (1)
Re-shop at confirm (Hotelbeds/WebBeds) · stalled: WebBeds attempt rolled back Oct 2, Hotelbeds attempt closed
Details and evidence

WebBeds confirm means blocking the room. Blocks failed with 120003 No rooms found or 151–153 (rate or policy changed), and we couldn't match the blocked rate when WebBeds renumbered it ([SPI-401] Match the WebBeds blocked rate when runno changes).

Block with the allocation carried in the offer token ([SPI-409] Block WebBeds with the offer-token allocation, live ). A confirm re-shop was tried and removed ([SLDG-3126] WebBeds confirmRate re-shop → [SLDG-3126] Remove the WebBeds re-shop). Back for Navan with a win-rate penalty.

Omni search timeouts and the Amadeus blip

Omni degradationSep 29 · Oct 2SLDG SearchSPI
Problem
Omni FBO hit the 6s supplier timeout and fired 7 alerts on Sep 29.
Action
Supplier timeout raised to 10s for Members and Omni.
Effect
Omni FBO integrations errors10–17% → 1–3%Hourly spikes after the fix15–19%Sep 30, Oct 1, Oct 2, Oct 5Oct 2 Amadeus blip839 errors / 5 min~10 min, self-recovered
Search: Omni findBestOffers requests hitting an integrations error (%, hourly)
integrations_client_find_best_offers_error ÷ request_count · service_group:partner · prd
Datadog ↗
Details and evidence

Omni FBO hit the 6s supplier timeout: Amadeus Omni p90 was 6.5s on 4x the Members volume, plus Sabre 429s. That fired 7 alerts on Sep 29.

Raised the supplier timeout from 6s to 10s for Members and Omni.

Sabre re-enable: Omni findBestOffers error spike

Omni degradation · self-recovered → SPI
Problem
Sabre FBO errors spiked when its traffic returned, pushing Omni FBO errors to 15.6%.
Action
None needed; it recovered on its own.
Effect
Sabre Omni FBO errors~90/h → 923/hpeak Recovery<100/h from · ~0–10/h from
Omni findBestOffers errors by supplier, Oct 5–6 (per hour)
Gateway findBestOffers_error.count · service-group:partner
Datadog ↗
Follow-ups (1)
he-relay#2293SPI-485 Sabre 10% commission default · approved, not merged
Details and evidence

When Sabre traffic returned, Sabre FBO errors spiked and pushed Search Omni FBO errors to 15.6%. SPI's Sabre alerts fired at and .

None needed; it recovered on its own. A related Sabre commission default ([SPI-485] Default Sabre commission to 10%) is still waiting on a decision.

Sertifi auto-enabled on ~11k hotels: unused properties disabled and locked

Cost / operationsOct 1 → Oct 3SLDG BookingClient OpsProduct
Problem
Sertifi was auto-enabled on 11,333 hotels, but hotels processed only 25.7% of forms.
Effect
Sertifi auto-enableon → offUnused Sertifi propertiesdisabled + lockedcount pendingBaseline payment CI on Sertifi bookings2.31%Hyatt 3.14% · Marriott 2.94%
Follow-ups (2)
Details and evidence

CCA provider write-through enabled Sertifi on every property matched in Sertifi's portal, so 11,333 hotels were on Sertifi, 7,183 of them bulk-loaded at V2 launch. Hotels processed only 25.7% of forms, and Product flagged the cost ahead of the Sertifi renewal.

Properties that never opened or processed a form were disabled and ADMIN-locked off, and the config was synced to Salesforce. Auto-enable is now behind a per-provider flag ([SLDG-3147] Gate provider auto-enable per provider, [SLDG-3147] Sertifi auto-enable flag): off for Sertifi, on for Canary.

Minor items (4) · fixed, handed off, or untriaged
Sandbox CCA reseed dead letters (Booking)4 dead letters → fixed: blank stored totals treated as missing[SLDG-3130] Blank stored amounts on the CCA path · alert
Hotelbeds Omni getBooking 53% failuresNavan sent invalid booking references; handed to SPI along with the monitoralert · [SLDG-3149] Integrations monitors to SPI
Stg search pod CrashLoopBackOffSingle pod; self-recovered after ~36h, no root cause foundalert · [SLDG-3152] Container restarts monitor standard
Cache-warmer Key Sync "no data" (sabre-platform-v5)Untriaged; monitor showed No Data on Oct 5alert · monitor

Needs attention

Item
SLDG follow-ups7
Hotelbeds reconciliation after a Nexus cancel
unassigned
SLDGSLDG-3120
Omni FA dependency monitor on an error rate
PR closed unmerged; threshold only raised in Datadog, Terraform still says 100
SLDGSLDG-3108
Re-shop at confirm (Hotelbeds/WebBeds)
stalled: WebBeds attempt rolled back Oct 2, Hotelbeds attempt closed
SLDG · SPIlink
FX backfill for existing Omni bookings in Salesforce
asked twice by Finance; SLDG-3154 only covers future changes
SLDGlink
Keep dev smoke tests out of the no-offer P1 monitor
fired 9× this week
SLDGlink
Reply to the RNPL refundability question
unanswered since Oct 1; reply, no ticket needed
SLDGlink
Canary: send the CVC with the VCC on CCA creationSLDG Bookinglink
Waiting on other teams6
Sabre 10% commission default
approved, not merged
SPIhe-relay#2293SPI-485
Nuitee: backfill missing resort fees from the tax-schema endpoint
promised for Oct 5, no PR yet
SPISPI-474
CCA delivery events in Snowflake (backfill)
accepted by Data Oct 1
Data Platform · SLDGDPLAT-2557
AVH tax fallback at confirm
waiting on Pricing's estimate
Pricinglink
“Air Conditioning” mapped to OmitContentwaiting
Nomad async cancels with no SAPI visibilityOmniwaiting

Shield load

Pings in #sapi-lodging-alerts72 → 18vs last weekincident.io pages~15estimated from monitor routing: FA dep 7 · FBO dep 7 · latency 1Non-actionable7 of 18Real issues behind the pings10+1 untriaged
Production pings per day
One bar per UTC day, Sep 29 → Oct 6 handoff
#sapi-lodging-alerts ↗
Omni FA dependency errorsChronic DerbySoft–Wyndham baseline on a raw count6
Booking latency >1sOne slow call (Nexus CCA job)1
Total7

Smoke-test traffic: ~19k logs · 0 errors · 0 alerts · find_availability no-offer rate: 1.45%

Requests by team · 17 requests: 5 open · 1 unanswered · 2 handed off · 9 done
Ask and outcome
SPI1
AVH bookings fail on child occupancy
Convert children to adults for AVH · [SLDG-2689] AVH child occupancy at Book, PR today
SPIdone
Omni3
booking_modified refund fields swappedOmnidone
Refunded Nomad booking, Amadeus cancel timed out
Nomad cancels async with no SAPI visibility · open with Omni
Omniopen
Does a Hotelbeds checkRate rate limit filter the offer?
Yes, and it breaks unrelated confirms → test dropped
Omnidone
Omni / Business stats1
FX rates missing in Salesforce (DM) (INR read as USD)
FX on booking events + Rocket mapping ([SLDG-3136] et al.); backfill ask open
Omni / Business statsopen
Members Checkout1
Nuitee create-cart errors
Nuitee turned off; became the resort-fee incident
Members Checkoutdone
Members Search2
FBO otherAmenities always empty
Content mapping gap ("Air Conditioning" → Omit) · Content
Members Searchhanded off
RNPL refundability differs PDP vs checkout
No reply
Members Searchunanswered
Client Ops / Product1
Sertifi auto-enabled on ~11k hotels
Unused properties disabled; auto-sync behind a flag ([SLDG-3147] Sertifi auto-enable flag)
Client Ops / Productdone
Client Ops1
[BUGS-132] CCA send error · Sertifi transactions for 4 cases (DM)
Invalid hotel email · data returned for 3 of 4
Client Opsdone
GTM / Product1
CCA signals PRD / SF contractGTM / Productdone
Product1
Deposit-rates spike re-scope (DM)
PRD changed after [SLDG-3104] Deposit-rates spike; requirements moved to SPI
Producthanded off
OBT1
Do phone cancellations reach SIG? (DM) · Contract DTD ownership
Only if the supplier updates · tech leads own DTDs
OBTdone
SLDG Booking1
Hotelbeds booking stuck in NEEDS_REVIEW
Needs reconciliation · [SLDG-3120] unassigned
SLDG Bookingopen
Payments / GTM1
Canary wants the CVC sent with the VCC
Open · no ticket
Payments / GTMopen
Data Platform1
[DPLAT-2557] Land CCA delivery events in Snowflake
Needs a SAPI backfill owner
Data Platformopen
Others1
[CON-1035] Microservices codeowner review · public vs Omni monitors · Sertifi count · incident.io handle mapping
Merged · kept separate · explained · mapping fix requested
Othersdone
Follow-ups · 11 open of 19
CCA reseed dead lettersSLDGSLDG-3130
Book-time exchange rates on eventsSLDGSLDG-3136
Sertifi auto-enable flagSLDGSLDG-3147
AVH child ages on Hotel_Sell
merged Oct 6, after the handoff
SLDGhe-relay#2296SLDG-2689
Container restarts monitor standard
merged Oct 6, after the handoff
SLDGengine-search#1459SLDG-3152
Navan Sabre code-12 audit: 102 of 854 bookings, $10,016SPI · Client OpsSPI-483
Navan resort-fee commsClient Opslink
Monitor routing fixes (booking and search)SLDGengine-booking-api#3946
Hotelbeds reconciliation after a Nexus cancel
unassigned
SLDGSLDG-3120
Omni FA dependency monitor on an error rate
PR closed unmerged; threshold only raised in Datadog, Terraform still says 100
SLDGSLDG-3108
Sabre 10% commission default
approved, not merged
SPIhe-relay#2293SPI-485
Nuitee: backfill missing resort fees from the tax-schema endpoint
promised for Oct 5, no PR yet
SPISPI-474
CCA delivery events in Snowflake (backfill)
accepted by Data Oct 1
Data Platform · SLDGDPLAT-2557
Re-shop at confirm (Hotelbeds/WebBeds)
stalled: WebBeds attempt rolled back Oct 2, Hotelbeds attempt closed
SLDG · SPIlink
AVH tax fallback at confirm
waiting on Pricing's estimate
Pricinglink
FX backfill for existing Omni bookings in Salesforce
asked twice by Finance; SLDG-3154 only covers future changes
SLDGlink
Keep dev smoke tests out of the no-offer P1 monitor
fired 9× this week
SLDGlink
Reply to the RNPL refundability question
unanswered since Oct 1; reply, no ticket needed
SLDGlink
Canary: send the CVC with the VCC on CCA creationSLDG Bookinglink
Done this week · 8 follow-ups closed, 25 tickets / PRs
CCA reseed dead lettersSLDGSLDG-3130
Book-time exchange rates on eventsSLDGSLDG-3136
Sertifi auto-enable flagSLDGSLDG-3147
AVH child ages on Hotel_Sell
merged Oct 6, after the handoff
SLDGhe-relay#2296SLDG-2689
Container restarts monitor standard
merged Oct 6, after the handoff
SLDGengine-search#1459SLDG-3152
Navan Sabre code-12 audit: 102 of 854 bookings, $10,016SPI · Client OpsSPI-483
Navan resort-fee commsClient Opslink
Monitor routing fixes (booking and search)SLDGengine-booking-api#3946
Query shortcuts
All production confirmRate errorsLogsenv:prd-use1-default service:engine-integrations-lodging-gateway @io-htleng-operation:confirmRate status:error
Amadeus confirmRate and book errorsLogs… @io-htleng-supplier-name:amadeus @io-htleng-operation:(confirmRate OR book) status:error
Omni confirm error rate by supplierMetricsconfirmRate_error ÷ confirmRate_response by {supplier}
Every SLDG alert transitionEventssource:alert status:(error OR warn) team:sapi-lodging -@monitor_id:(282839073 OR 305966076) -"[SPI"
Production Search errorsLogsenv:prd-use1-default service:(supply-api-search-lodging OR supply-api-search-partner-lodging) status:error
Production Booking errorsLogsenv:prd-use1-default service:(engine-booking-lodging-service OR engine-booking-lodging-jobs) status:error
Dead-lettered tasks by envMetricsmax:engine_booking_tasks_dead_letter_count{…} by {env} · dev 42 · stg 6 · prd sandbox 4 · prd 0
No-offer rate by phase (smoke-test check)Metricsno_offers_sent ÷ request_count by {phase}
Production pings#sapi-lodging-alertsMessages starting with [SLDG-prd]
Dev / staging pings#sapi-lodging-alerts-secondary[SLDG-dev], [SLDG-stg]
Smoke-test traffic in productionLogs@io-htleng-smoke-test:true env:prd-use1-default · add status:error to confirm 0 errors
All SLDG monitorsMonitors[SLDG- in the name