External API responses normally cross the KBP integration boundary through typed transport
contracts. These contracts are derived from a provider-owned OpenAPI specification or another stable
contract. The MXO CustomerProfile_v1_4 has no such contract. MXO owns a dynamic schema, and COMtrol
needs the complete profile for its sales-condition and test-profile editors.
KBP also needs a few profile fields for its own business decisions: contract ID, estimated HT/NT consumption, consumption type, electricity-meter category, portal and app activity timestamps, and the master-data-overlay flag. Neither MXO nor another owning team provides typed endpoints for these use cases.
How should KBP handle a profile it must forward completely but whose schema it does not control?
Chosen option: 2, untyped pass-through with a typed projection. It is the only option that meets
all drivers today. KBP retrieves the live profile as an untyped dictionary and converts it to a JSON
object. It enriches the object with request data and forwards the complete result to COMtrol. Only
the fields listed above are mapped to a typed projection (MxoCustomerProfile) before they reach
business logic.
Option 1 would drop unknown fields and need a KBP release for every MXO schema change. Option 3 is the preferred integration pattern, but no owning team provides the endpoints yet.
This is an exception, not a pattern for new integrations. It ends when an owning team provides typed use-case endpoints that replace KBP’s interpretation of the profile. KBP then supersedes this record.