Their data model appears to have been akin to having a single accumulator sum up things rather than to use something like double-entry bookkeeping or an account graph so that the source of errors could be traced.
It’s less “a bug” and more a coincidence that the application worked when it did.
- Confusing and buggy UI causing clerks to duplicate or mis-enter transactions
- Inventory getting “stuck” in branches after the product was discontinued; the attempt to remove it hid the inventory but caused its value to reappear on the books again each accounting period
- Failing touch screens entering spurious purchases overnight
- Incomplete rollback of distributed transactions
- Byzantine failures during hardware replacement causing multiple transactions to be assigned the same ID and overwrite each other
- Fujitsu employees with unaudited write access to the production database making one-off modifications
- The point of sale system simply telling the clerk to give too much change back to the customer
There’s no “one bug” here; the main failure was that those responsible continued to dismiss any problems as users being either in error or outright malicious, despite massive amounts of evidence that the system had technical flaws. Better quality software would have reduced the problems, but no system is bug-free and in many cases very little effort was made to identify the root causes of problems, much less to prevent similar ones from happening again.
[1] https://www.judiciary.uk/wp-content/uploads/2019/12/bates-v-...