Why would whole-enterprise architecture matter to an organisation? And what’s the difference between whole-enterprise architecture and other forms of enterprise-architecture? Well, here’s a first-hand case-study that illustrates both those questions…
There are four main players in this overall scenario:
- myself, as customer or client
- an airline
- a hotel
- a bank, also acting as credit-card processor
(A bunch of other players, too, as we’ll see from time to time, though they’re less central to the story.)
So here’s the background
— On LinkedIn I spot an urgent request from some colleagues for a substitute presenter for a conference, as their scheduled presenter has fallen ill. I reply; we talk it through; we agree to go ahead. It’s just six days before the conference starts: I’ll have to move fast to get flights and hotel, especially as it’s peak-season in that city.
Step #1 – Book the flight and hotel
— I hunt around for flights. Most are insanely expensive, or would take too long with multiple stops. I finally discover a direct flight from a less-obvious airport that’s from a well-known budget airline and that’s within my very limited budget.
— I go to that airline’s website, set up the flight details, and since time is of the essence here, search for a hotel there too, as part of the same booking. Between the cheap backpacker places (at my age I don’t think I’m up to dormitory-style living any more…) and the ‘luxury hotels’ (way outside my price-range, especially as no-one’s paying me for the gig), there’s just one hotel that’s feasible. I manage to set up for one of the few remaining rooms, then complete the overall booking. The website shows me a complete price for the whole booking; I enter my credit-card details, and a success-page that tells me the booking is complete. For safety, I keep the success-page open on my browser until I see the first confirmation-messages appear in my email-stream, and then delete it. The latter turns out to be a mistake…
— The two confirmation-emails both confirm the flight – but only the flight, with no mention of the hotel-booking. No problem, wait awhile, no doubt it’ll turn up.
Step #2 – Re-enquire about the hotel-booking
— Two hours after the flight-confirmations, there’s still no confirmation-message about the hotel-booking, and I’m getting worried. After much searching on the airline’s website, I find a live-chat option. I click on that, enter the booking-code, and wait. The dialog tells me I’m number 47 in the queue, but it’s only a few minutes before someone comes online: pretty good.
— I explain the problem; they tell me there’s nothing showing as yet for the hotel, but “you’ve got to allow at least 24 hours for the confirmation to come through”. Fair enough: we end the chat.
— I sit back to wait for the seemingly-only-slow hotel-confirmation. A full day later, though, still no confirmation-message, and I’m definitely worried…
Step #3 – Urgent search to resolve missing confirmation of hotel-booking
— I chase up the chat-line again. All they’ll tell me is that they don’t have a record of the hotel-booking, “it’s booked through their own mini-site on our website, it’s not our responsibility”. In other words, I have no confirmation that the booking ever took place – even though the charge for it did show up on that now long lost initial success-page – and there’s seemingly no way to find out whether or not it did, or whether a non-booking has been charged to my credit-card.
— I need to talk to a real person about this – real-time voice, not text. A much longer search of the airline’s website eventually turns up a help-line phone-number – but it’s just shut down for the night. I’m starting to panic about this…
Step #4 – Check with the hotel
— First thing next morning, I call the help-line – which is no help at all. Again they tell me they have no record of the hotel-booking, they can’t do anything about it, and that in essence it’s my problem, not theirs. Call the hotel, they say. And, of course, they can’t tell me which hotel to call, because there’s no record of it…
— A frantic search of my emails shows that I did – very fortunately – tell the conference-organisers the name of the hotel. Armed with this, I eventually identify which of their three sites in the city the hotel would be, and call up their bookings line. No record of any booking from the airline, they tell me, and it’s too late anyway, they’re now full for the dates I need. So now I have no hotel-booking – I’m stranded. Great… And I still don’t know whether the now non-existent booking had been charged to my credit-card.
Step #5 – Find alternate accommodation
— I search the usual web-providers for any available hotels: nothing that I could use, other than a very few places in ‘luxury hotels’ that are several times more than my budget. Definitely stranded…
— In desperation, I turn to AirBnB, with whom I’ve had no success at all in any of my previous tries. The first attempt at a booking again fails – happy to help where he can, but he has family staying in part of that week. By this point, I’m down to barely three days before my flight, with nowhere to stay, and it’s not just panic any more: to use the Australian phrase, I’m full-on ropeable.
— By now, the AirBnB site is showing that less than 5% of of hosts are still available anywhere in the city, and dropping fast. But I at last hit some real success: a room that’s actually within my budget, for which the booking does go through, and which, it turns out, is actually within walking-distance of the conference site. Relief indeed. Yet I still don’t know what’s happened about airline’s charges to the credit-card…
Step #6 – enquire about the credit-card
— Later that day I trek into town to talk with the bank that acts as my credit-card provider. I print out the most current transaction-record for that credit-card from their statements-machine, which doesn’t show anything more recent than a couple of weeks ago – the airline’s transaction doesn’t show. The only way to resolve this one is going to be by talking with a real person rather than a machine.
— Here, I’m number 4 in a literal queue, but again, the queue clears fast, and we get talking. We go to a staff-only terminal, but even there he can’t see any more than is already printed on the statement: yes, it’s the same bank, but credit-cards are a different division, and he’s not allowed to see it. (Yeah, we’ve been here before with this bank…) I could find out via phone-banking, he says, but that means changing all of my access-codes because I’ve long since forgotten them, and right now it’s too much of a hassle and stress to go through all of that palaver too. Which means that I still don’t know whether the credit-card has been charged for the non-existent hotel-booking…
— What’s worrying me still is that I won’t be able to sort this mess before I go – which means that the airline or whoever could still claim for the hotel-booking, because I hadn’t explicitly cancelled it before the due-date. The only way out of that, that either I or the bank-guy can see, is for him to write a formal note that the bank had been notified about this prior to the flight. Yet it seems the bank doesn’t even have a way to do that: we settle for a scrawled note on his own business-card with the bank – “seen on [date] could not help with transaction could not see credit-card transaction”. He duly signs it, and we accept that that’s probably the best we can do until I get back.
In other words, the situation with the hotel-booking is still not resolved – or, apparently, resolvable. But I’ve run right out of time on this, in every sense, so best leave it at that for now, I guess?
Implications for enterprise-architecture
Yeah, it’s a mess. An all-too-typical mess these days, unfortunately. For all too many people.
In effect, what’s happened here is that the airline, the bank and others have dumped all of the direct costs of failed whole-of-systems architecture – not just financial costs, but emotional and more – onto the would-be client. The costs are all too visible to the client, yet are all but invisible to the organisations themselves – and hence, to those organisations, seem not to exist. But the indirect costs to the organisations can be huge, in terms of lost sales, lost revenue, loss of overall effectiveness and more; and it also creates all manner of hidden and/or kurtosis-risks that could damage or destroy each or any of the organisations, or even the entire shared-enterprise. Not trivial, then…
To me, there are two key themes that drive this kind of mess:
- Organisation-centric architectures, in turn underpinned by failure to grasp the fundamental differences between ‘organisation’ and ‘enterprise’
- Inadequate closure of connection-loops, in turn underpinned by failure to manage boundary-of-identity versus boundary-of-control
On organisation versus enterprise, the crucial distinction is between ‘inside-out and ‘outside-in’:
Even when the organisation is capable of thinking of ‘the enterprise’ as anything broader than itself, it would usually place itself as the sole centre of the shared-enterprise:
Yet the reality is that Chris Potts‘ dictum always applies:
Customers do not appear in our processes – we appear in their experiences.
And from the customers’ perspective, the shared-enterprise looks more like this:
Which, since just about every darn provider in the shared-enterprise thinks that they alone are the centre of everything, usually leaves the customers to have to play enterprise-architect on their own behalf, and find some way to link everything together. Given that Conway’s Law usually applies – that the information-systems of each organisation will tend to reflect the internal structure of that respective organisation – then it’s no surprise that finding our way through the maze of mismatched systems, to get anything done within the overall shared-enterprise, is often a navigation-nightmare…
In this particular airline’s case, though, they’ve in principle made this much easier for customers by providing a ‘one-stop shop’, that should allow those customers to do, in one go, all of the search and booking that they need within the context-space of this shared-enterprise. That indicates that the airline is thinking broader than itself alone, in terms of enterprise. That’s a huge advantage to the customer, a real experienced-value. And the business-advantage to the airline, of course, is that it not only encourages customer-prospects to come to the website because it’s a ‘one-stop shop’, but it also collects referral-fees from every one of those other players whenever a linked booking is made – which means that the extra cost and complexity of the website should more than pay for itself. If it works – and that’s the catch, as we’ve seen in the example above.
From one of the comments on the airline’s chat-line, it seems that each of the ‘add-on’ elements in that ‘one-stop shop’ is actually a mini-site in its own right – and there’s nothing that actually links them together, apart from messages that pass between the various providers. It looks like a unified site and service – as on the displayed success-message. But it actually isn’t: and we can see that, because the nominal ‘itinerary’ from the airline is solely about the services of the airline – with no reference to any services from other supposedly-linked providers. Likewise each service-provider is expected to send its own confirmation-emails and suchlike. Which is sort-of okay, even from the customers’ perspective, despite the flurry of separate emails arriving from what are actually different providers.
But if and when any inter-provider message is lost – as in this example above – then there’s no means to do a cross-check, or a database-like rollback, because the messages needed to do so have been lost, or perhaps never existed in the first place. Which might seem unimportant to each individual provider: as far as they’re concerned, it’s a booking that never happened. But that kind of gap-in-the-system ‘glitch’ can sometimes turn out to be surprisingly expensive, even from the providers’ perspective – and for those customers who’ve found themselves suddenly stranded by a supposedly-complete booking that actually isn’t, it doesn’t feel like ‘just a minor glitch’ at all…
In short, if we want to link between providers and systems, across the shared-enterprise, we have to do it properly – or not at all.
Which brings us to the second theme, about failure to close connection-loops between providers.
I have no access to the airline’s systems, of course, but the way I read the failure in the example above is that inter-system messaging is run ‘stateless’, or ‘open-loop‘ – once a message is sent, it’s deemed to have been received. That way, the airline can build a billing from local information about hotels (in this case), but leave the full confirmation until later. The result is that it looks like a complete transaction, and one that has been completed rapidly; but there’s actually no guarantee that the full transaction has been completed, and no means to do a proper rollback if it hasn’t, because the information to do that rollback no longer exists – or maybe never did.
From the airline’s perspective, this might seem no real problem – at worst, it’s merely an abandoned booking, with the only loss being a foregone booking-fee. But from the customer’s perspective, this is extremely risky: if the overall booking is incomplete, it’s safer not to do the booking at all, but restart the whole thing all over again – perhaps in separate pieces, or via some other website. Again, as enterprise-architects, we need to be able to see this from both sides…
In effect, it’s actually a power-problem, offloading responsibility onto the Other – in this case, the hotel and/or the customer – without their engagement or consent. In terms of the SEMPER power-diagnostic, we would describe this as passive-dysfunction or ‘power-under‘ – which, in a human context, would otherwise be known as abuse. Not A Good Idea…?
Another way to describe this is as an attempt to make whole-of-context closure into Somebody Else’s Problem. But again, at a whole-of-enterprise level, there is no such thing as Somebody Else’s Problem: if the enterprise is to work, somehow or somewhere it has to be someone’s problem – and as enterprise-architects, we need to know who that ‘someone’ is, and provide them with the support that they need.
Although we can’t know from outside how the systems are structured, there are several options to make it work better from a user’s perspective. Whilst it depends on the actual structures, of course, one example would be to be much more explicit about what has or hasn’t been confirmed – such as the ‘success-page’ modified to show the current status for each partner-booking, and update that success-page as messages come back in, accessible via the ‘Manage My Booking’ or equivalent functionality on the airline’s web-page. Another option would be to auto-trigger email-alerts after a time-out period, to warn the customer that expected confirmation-messages have not been received. Even with current technologies, none of this should be hard to architect, design and implement.
Yet to make any of this work, we need a whole-enterprise view of the architecture – an organisation-centric view alone will not be enough, as should be clear from everything described above. (Classic IT-centric ‘enterprise’-architectures such as TOGAF would be even less useful – not least because of all the human elements in the overall picture.)
Perhaps the hardest challenges, though, are those that arise from Conway’s Law – much as we saw with the bank, where the information-systems were carved up on divisional lines, making any form of single-view-of-customer all but impossible. So-called ‘digital-transformation’ can be enormously helpful in this, but only if we realise that digital-transformation can only succeed when we use it to run Conway’s Law in reverse – when we use the desired changes in information-systems and suchlike to change the internal communication and structure of the organisation itself. Not as simple as it sounds – yet very necessary. But that’s a topic for a separate post, perhaps?
Leave it at that for now, anyway: over to you for comments, if you wish?