A shared capability is a business or technical function used by more than one product, service, or market. It becomes worth considering when teams need similar rules, calculations, data, or supporting services and building them separately would be expensive. The opportunity often appears as a company develops new products or adapts a product for new markets. section 3.2.1 section 3.2.3
Sharing is not automatically the cheaper choice. Extracting a capability from a system built for one product can take substantial work. Its domain model and interfaces must serve multiple consumers without becoming too specific or too generic. A shared capability can also become a bottleneck if its team cannot meet consumers’ needs or make it easy to use. The expected level of reuse may never materialize. section 3.2.1 section 6.1.4
Fulfillment across products
As Uber expanded beyond one product, it extracted fulfillment into an enterprise-wide platform rather than building a separate fulfillment capability for every new service. This is a domain platform: it centralizes a capability relevant to the business. An internal development platform instead shares capabilities that help teams build and support their products. section 6.1.4
To assess a candidate for sharing:
- Map the current workflows and user journeys together, for example with EventStorming. Identify steps that are genuinely common and steps that differ by market. section 3.2.3
- Ask which products need the capability, what reuse would avoid, and whether extraction from an existing product is feasible. section 3.2.1
- Test whether the proposed interfaces can serve those consumers without making the shared team a bottleneck. Revisit the boundary as needs become clearer. section 3.2.1 section 6.1.4
