Monday, February 07, 2005

Straight-Through Processing

In an SOA context, straight-through processing means passing some input services onto your customers, with zero intermediation. This only works if the input and output services are in the same domain.
  • Insurance. You buy insurance through a broker. You may pay either the broker or the insurer. (If you pay the insurer direct, then there is presumably some commission paid back to the broker.) You may claim through a service that is actually provided by a separate claims process, under the insurers’ brand.
  • Travel. You buy through a travel agent. The services are delivered by the airline and hotel. (You are given a reference number to pick up your tickets and check into the hotel.)
  • Logistics. You buy something on eBay, pay via PayPal, and the item is delivered by courier. (You are given a reference number so that you can liaise directly with the courier company.)
These supply chains are more or less transparent, until something goes wrong. If there are problems with the service, you may start by complaining direct to the ultimate service provider, but if you cannot sort things out you have to go back to the person/organization you have the contractual relationship with. There is a contractual chain which may not coincide with the operational information supply chain. However, there has to be a management control chain (higher level information supply) that supports the contractual chain.

In some of these sectors there is a serious risk of disintermediation. For example, many people have stopped using travel agents, and book their airline tickets directly with the airline over the internet. This is possible because the airline domain is just as accessible to the travelling public as to travel agents - in some cases more so. (Sometimes the agents don't have access to all the microservices. And sometimes even the airline employees don't have access to all the microservices. See this example.)

What about the next step? Can you disintermediate the airline by chartering your own plane? This is possible but it's a lot more difficult for two reasons. Firstly because it takes you to a different level of granularity - you have to charter the whole plane, not just one seat. Secondly, the aeroplane-chartering domain introduces (makes visible) a lot of new complications. (One way of putting this is that if you want to charter a plane, you have to learn a different Domain Specific Language.)

In many (perhaps most) business sectors, the input DSL is different to the output DSL. So the information supply chain involves considerable processing (transformation).

Let's consider the pharmaceutical industry as a much more typical example of a complex supply chain. A drug company produces a drug, together with lots of information relating to the drug. There are several different categories of information user: the patient who takes the drug, the medical practitioner who prescribes and/or dispenses the drug, the health service or insurer that pays for the drug, and the regulator who monitors the safety of the drug. The translations and transformations between these information domains calls for careful negotiation, not just mechanical mapping.

Many of the SOA champions are over-simplifying the picture by using examples where there is a single domain. The trouble with this is that the examples aren't very interesting, and moreover invite disintermediation. To find sustainable business benefits from SOA, we need to look at more complex ecosystems. Like pharma.

(Anyone with good examples, or interesting problem domains, please contact me.)

No comments: