# Delegation Connector

**In short:** A delegation connector passes a component's external port inward to an internal part that does the real work. Outsiders see one contract, and the internal structure stays hidden.

## Explanation

A component can hide smaller parts inside it. Its outside face is a port, a connection point that decouples the internals from outside entities (see the article "Port"). A delegation connector links that port to a port or interface on an internal part. The internal part does the actual processing.

A delegation connector crosses a component boundary. That sets it apart from an assembly connector. An assembly connector ties one component's provided interface to another component's required interface, the familiar ball-and-socket. A delegation connector instead shows internal realization: the outer component hands work to its sub-components.

Delegation has one compatibility rule. UML says a delegation connector may only join interfaces or ports of the same kind.

Delegation also supports hierarchical decomposition. In arc42, a whitebox is a more detailed view of a blackbox. It shows several building blocks and their relationships. The building block view is a hierarchy of blackboxes and whiteboxes. Level 1 is the whitebox of the whole system. Delegation connectors can show how a blackbox's external ports map to the blocks inside its whitebox.

arc42 gives no template for interface specification, because interfaces vary too much. You choose how to describe the contract that the port exposes.

## Example

A WebStore component offers a search interface on its boundary. Inside, a SearchEngine part does the searching. A delegation connector links WebStore's search port to SearchEngine's search interface. Callers talk only to WebStore. If the team later swaps SearchEngine for another part, the outside contract stays the same. Only the internal connector changes.

## Trade-offs

The facts show one clear benefit: outsiders depend on the port, not on the internals. The cost is a more detailed diagram. You must also make sure the two joined ends are of the same kind. Without an interface template in arc42, you must decide yourself how to specify the interface.

WebStore delegates its search port to an internal SearchEngine.

```plantuml
@startuml
component WebStore {
  portin "search" as p
  component SearchEngine as se
  p --> se : delegate
}
interface ISearch
ISearch -- p
@enduml
```

## Checks

- Each delegation connector joins a boundary port or interface to an internal one of the same kind.
- Connectors between sibling components are drawn as assembly connectors, and delegation is used only for crossing a component boundary.
- A whitebox shows the building blocks inside a blackbox and their relationships.

## Related

- [Component Connector (Assembly and Delegation)](https://arc.fuet.ch/concepts/modeling-uml/component-connector-assembly-and-delegation.md)
- [Port](https://arc.fuet.ch/concepts/modeling-uml/component-port.md)
- [UML Component Diagram](https://arc.fuet.ch/concepts/modeling-uml/uml-component-diagram.md)
- [Provided and Required Interface](https://arc.fuet.ch/concepts/modeling-uml/provided-and-required-interface.md)
- [Nested Components and Subsystems](https://arc.fuet.ch/concepts/modeling-uml/nested-components-and-subsystems.md)
- [UML Interface](https://arc.fuet.ch/concepts/modeling-uml/uml-interface.md)
- [Information Hiding](https://arc.fuet.ch/concepts/principles/information-hiding.md)
- [Component View Refinement Levels](https://arc.fuet.ch/concepts/documentation/component-view-refinement-levels.md)

## Sources

- [The component diagram](https://developer.ibm.com/articles/the-component-diagram/) — developer.ibm.com, accessed 2026-11-09
- [Question B-9: What is a whitebox? | arc42 FAQ](https://faq.arc42.org/questions/B-9/) — faq.arc42.org, accessed 2026-11-09
- [5 - Building block view | arc42 Documentation](https://docs.arc42.org/section-5/) — docs.arc42.org, accessed 2026-11-09
- [Component Diagrams - Visual Paradigm Guides](https://guides.visual-paradigm.com/docs/mastering-uml-2-5-a-use-case-driven-approach-to-agile-modeling/module-3-the-skeleton-the-7-structural-uml-diagrams/component-diagrams/) — guides.visual-paradigm.com, accessed 2026-11-09
- [Unified Modeling Language 2.5 (UML) FTF — Open Issues - OMG Issue Tracker](https://issues.omg.org/issues/UML25-566) — issues.omg.org, accessed 2026-11-09
