Big Data, Distributed Accountability

How a Web-Based POS Glitch Resulted in a Customer Experience Nightmare


This is the third article in a series on distributed computing written for technology managers and systems designers.

Previous articles in this series

For additional information about big data and distributed computing, see this For additional information about big data and distributed computing, see this series’ other articles:


This article illustrates how trying to buy a discounted airline ticket processed by multiple organizations — each using distributed systems that didn’t communicate properly — produced a circle of irresponsibility.

Strange Charges on my Statement

FIG 1: Two online banking charges that I didn’t authorize

I saw an unfamiliar charge from Vueling Airlines on my online bank transaction history. So I contacted my bank to initiate a dispute.

Disputing the Charges

To my surprise my bank ruled in favor of Vueling Airlines and gave them my money. I appealed that decision and once more my bank ruled against me. So I appealed for a third time, then started making phone calls and writing.

So Who Is Responsible?

FIG 2: Illustration of ownership of airline companies and related ticketing agencies

When a customer tries to get a refund, the number of business entities involved — the customer, the bank, the agents, and even the airlines themselves — can’t readily determine who is responsible.

After I spent several days investigating the unauthorized charge, I eventually learned that although Vueling Airlines was the name on my bank statement they weren’t ultimately responsible for the problem.

Vueling was just a link in the chain of distributed systems. Because each business entity in the chain was working with their own set of data, it was difficult to identify the business entity responsible for reversing the charges.

Here are the companies in the order which I contacted them to resolve my unauthorized charges:

  1. Level Air: Level Air is an International Airlines Group (IAG) subsidiary or “virtual airline” for low-cost airlines. I had tried to buy a ticket with Level Air previously, so it was the first company I contacted. Level Air verified that it had processed a ticket, and gave me the associated Vueling Airlines ticket booking number. The Level Air agent added that the transaction had been originated by Air Integration at Fareportal.
  2. Fareportal: When I tried to contact Fareportal, its phone number redirected me to its subsidiary, CheapoAir.
  3. CheapoAir: CheapoAir’s agent found no transactions for my name, email, phone number, or debit card. That was because the Vueling Airlines booking number I had was useless: Vueling and CheapoAir use different booking codes. So I contacted Vueling.
  4. Vueling Airlines: Vueling’s customer service representative told me that because Vueling doesn’t fly to the United States, my ticket was an impossibility. He then said that if what I said happened had happened, then there was a security breach and I should call the police. Then he hung up.
  5. CheapoAir: I called CheapoAir back. They promised to call Vueling, then call me back. That didn’t happen. Follow-up emails produced no results, then stalled out. So I asked to speak to a CheapoAir manager. The manager read the now-lengthy email thread, then sent me back to Vueling.
  6. Vueling Airlines: I called Vueling for a second time. I asked to speak to a manager. He said he would call Level Air for me because he believed that Level Air, not Vueling, needed to issue a refund. The Vueling agent also gave me flight details, including the airline, Iberia Airlines.
  7. Level Air: I called Level Air for a second time. The representative told me that because Fareportal had emailed them the booking, Fareportal was responsible. Level provided me with a Fareportal transaction number.
  8. CheapoAir: I contacted CheapoAir for the third time This time the agent told me the Fareportal transaction number was actually a Fareportal travel agency identifier. Which took me back to Step 1, above.

And Finally…

After completing the preceding circle with no one taking responsibility, I contacted the Better Business Bureau (BBB). A representative from Fareportal contacted me and proceeded to investigate. I presented my research to my bank. This time they approved my third claim and refunded the Vueling Airlines charge.

Overview of the Passenger Service System

In order to understand why it was so difficult to resolve my issue, it’s necessary to understand the multiple distributed systems the airlines use to sell tickets and reserve seats.

The monolithic systems and providers combine to form a system called the Passenger Service System (PSS). The following diagram shows the relationships of the PSS’s primary components.

FIG 3: Overview of Passenger Service System components

The core of the PSS is the Airlines Reservation System ( ARS) [3], used by each airline internally. Each airline publishes ticket information to the Global Distribution System ( GDS) [4] accessed by all other airlines [2b], virtual airlines [2a], and travel agencies [2c].

One Possible Explanation

As best I can tell, what seems to have happened is as follows.

Fareportal rejected my attempt to buy a ticket because at the same time I was trying to make my purchase, someone else bought the same ticket. ( See my previous article).

The Global Distribution System (Figure 3) then reported the same seat was still available. Perhaps this was because the other buyer didn’t complete the purchase. Because the system’s data reported that seats were still available, Fareportal transmitted the booking to Level Air.


Processes need synchronization for both simultaneous and sequential tasks. Transactions must be able to do roll-back (cancel) if there is some failure, and commit (complete) after the transaction is validated. This diagram of process synchronization shows how processes must acquire critical resources so they can’t be modified by other processes during a transaction.

FIG 4: Process Synchronization (Wikipedia Commons Attribution: M.usman.14 — Own work, CCBY-SA 4.0)

For additional information see:

A Systems Audit

My incorrect charges originated from the airlines’ practices of Yield Management and Dynamic Pricing. Airlines try to maximize profits by dynamically changing the price of tickets in response to current inventory and other airlines’ prices.

Doing that properly requires real-time inventory reporting and synchronization of transactions. As we have seen, when any part of the combined systems do not have the most current data, or if transactions are not properly synchronized, it becomes extremely difficult to identify which part of the system was responsible for a given problem.

The airlines industry needs auditing of the consistency and timeliness of data presented to consumers, focusing on inventory system reliability, and finally looking at stakeholder accountability. This account illustrates how poorly designed and implemented distributed software systems can produce a poor customer experience and make it difficult or impossible for users of those systems to isolate and correct problems.

More about Yield Management and Dynamic Pricing:

Originally published at on July 10, 2019.



Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Blake Rogers

Blake Rogers

Writing about technology, people, and complex systems.