North Star Architecture and Platform Capability Map
Learn Enterprise CPQ and Order Management Platform - Part 004
North-star architecture and capability map for enterprise-grade CPQ/OMS platforms, covering bounded contexts, capability layers, integration boundaries, and platform invariants.
Part 004 — North Star Architecture and Platform Capability Map
1. Tujuan Part Ini
Part ini menyusun peta arsitektur target untuk CPQ/OMS enterprise.
Kita belum memilih vendor, framework, database, workflow engine, message broker, atau cloud platform. Kita sedang membangun north-star architecture: gambaran capability, boundary, data ownership, dan flow yang cukup stabil untuk memandu desain lebih detail di part berikutnya.
Target part ini:
- Menentukan capability map CPQ/OMS end-to-end.
- Membedakan capability komersial, operasional, dan platform foundation.
- Membentuk bounded context awal.
- Menentukan integration boundary dengan CRM, catalog, pricing, billing, ERP, fulfillment, dan data platform.
- Menentukan artifact arsitektur yang harus bisa dibuat oleh engineer level staff/principal.
Dalam framework Kaufman, ini adalah tahap define target performance + decompose the skill into trainable sub-skills. Kita membuat peta agar latihan berikutnya tidak acak.
2. North-Star Mental Model
CPQ/OMS enterprise sebaiknya dilihat sebagai layered decision-to-execution platform.
Interpretasi:
- CPQ bukan hanya UI sales.
- OMS bukan hanya order table.
- Catalog bukan hanya daftar produk.
- Pricing bukan hanya formula.
- Approval bukan hanya workflow.
- Fulfillment bukan hanya downstream call.
- Audit bukan hanya log.
Semua layer harus mempertahankan makna bisnis dari awal sampai akhir.
3. Architecture Principles
Sebelum capability map, tetapkan prinsip.
3.1 Separate Decision from Execution
CPQ membuat keputusan komersial:
Produk apa yang boleh dijual,
kepada siapa,
dengan konfigurasi apa,
dengan harga apa,
dengan syarat apa,
dan approval apa.
OMS mengeksekusi komitmen:
Apa yang sudah disetujui/dibeli,
bagaimana dipecah menjadi pekerjaan,
apa status fulfillment,
apa yang gagal,
dan bagaimana dipulihkan.
Jangan membuat CPQ melakukan fulfillment detail. Jangan membuat OMS menghitung ulang semua pricing tanpa alasan yang jelas.
3.2 Snapshot Commitments
Keputusan komersial harus dibekukan pada titik tertentu.
Snapshot minimal:
- product configuration,
- catalog version,
- price result,
- discount decision,
- approval result,
- proposal document version,
- terms summary,
- customer acceptance timestamp.
3.3 Version Everything That Can Change
Objek yang harus versioned:
- product offering,
- product specification,
- bundle structure,
- compatibility rule,
- price book,
- promotion,
- discount policy,
- approval policy,
- document template,
- decomposition rule,
- fulfillment process,
- contract clause.
3.4 Make Failure First-Class
Platform enterprise harus mengasumsikan failure.
Failure bukan edge case. Failure adalah normal state.
Contoh:
- pricing service unavailable,
- quote approved then edited,
- catalog retired after quote created,
- order submitted twice,
- downstream times out after success,
- billing account missing,
- fulfillment line partially completed,
- customer cancels during provisioning.
3.5 Make Explanation a Product Feature
CPQ/OMS harus bisa menjawab:
- Mengapa produk ini eligible?
- Mengapa produk ini tidak bisa dipilih?
- Mengapa harga ini muncul?
- Mengapa quote perlu approval?
- Siapa yang approve?
- Mengapa order stuck?
- Apa dampak cancellation?
- Kenapa billing belum mulai?
Explanation bukan hanya nice-to-have. Ia adalah bagian dari operability dan defensibility.
3.6 Optimize for Controlled Change
Enterprise CPQ/OMS berubah terus:
- produk baru,
- harga baru,
- promo baru,
- channel baru,
- negara baru,
- legal clause baru,
- integration baru,
- fulfillment partner baru.
Architecture yang baik membuat perubahan ini terkontrol, bukan membuat engineer harus patch production logic setiap minggu.
4. End-to-End Capability Map
Capability map adalah cara melihat platform tanpa terjebak pada aplikasi/vendor tertentu.
Capability map ini akan menjadi backbone seri.
5. Capability Group 1: Product and Catalog
5.1 Responsibilities
Product and Catalog capability bertanggung jawab atas:
- product offering,
- product specification,
- commercial bundle,
- options and add-ons,
- characteristics,
- compatibility rules,
- lifecycle status,
- market/channel visibility,
- effective dating,
- publish and rollback.
5.2 What It Should Not Own
Catalog tidak seharusnya menjadi pemilik:
- customer-specific entitlement,
- negotiated contract price,
- quote approval decision,
- order state,
- fulfillment task state,
- billing invoice status.
5.3 Key Artifact
Catalog Release Package
- catalog version
- effective date
- product offerings changed
- pricing dependency
- eligibility dependency
- downstream mapping changes
- migration notes
- rollback instruction
5.4 Critical Invariants
- Quote must know which catalog version it used.
- Retired products must not silently disappear from active quotes/assets.
- Catalog publication must be atomic from consumer perspective.
- Product code mapping to downstream systems must be versioned.
6. Capability Group 2: Configuration
6.1 Responsibilities
Configuration capability handles:
- bundle selection,
- option selection,
- characteristic values,
- cardinality,
- dependency,
- compatibility,
- invalid combination detection,
- explanation of why a configuration is invalid.
6.2 Configuration Flow
6.3 Design Warning
Configurator should not become a dumping ground for every business rule.
Separate:
| Rule Type | Better Owner |
|---|---|
| Product compatibility | Configurator/catalog |
| Customer eligibility | Eligibility service |
| Discount authorization | Pricing/policy/approval |
| Legal clause selection | Document/legal policy |
| Fulfillment feasibility | OMS/feasibility capability |
7. Capability Group 3: Eligibility and Qualification
7.1 Responsibilities
Eligibility answers:
Can this product/offering be sold to this customer, in this context, at this time?
Qualification answers:
Can this customer/order proceed given operational, financial, regulatory, or technical checks?
Examples:
- region eligibility,
- customer segment eligibility,
- channel eligibility,
- partner eligibility,
- credit qualification,
- address/serviceability qualification,
- regulatory qualification,
- installed-base entitlement.
7.2 Eligibility Result Model
Avoid boolean-only response.
Use richer result:
EligibilityResult
- decision: ELIGIBLE | NOT_ELIGIBLE | CONDITIONALLY_ELIGIBLE | UNKNOWN
- reasons[]
- requiredActions[]
- evidence[]
- ruleVersion
- evaluatedAt
7.3 Critical Invariant
A product that is configurable is not necessarily orderable.
A valid configuration can still fail because customer is not eligible, address is not serviceable, credit check fails, or channel is not authorized.
8. Capability Group 4: Pricing, Discount, and Promotion
8.1 Responsibilities
Pricing capability handles:
- list price,
- recurring charge,
- one-time charge,
- usage charge,
- tiered pricing,
- volume pricing,
- contract pricing,
- currency,
- proration,
- promotion,
- discount,
- rounding,
- explanation.
8.2 Pricing Pipeline
8.3 Pricing Output
Pricing should produce more than total.
PricingResult
- linePrices[]
- subtotal
- discountTotal
- recurringTotal
- oneTimeTotal
- usageEstimate
- currency
- roundingPolicy
- appliedRules[]
- warnings[]
- approvalTriggers[]
- priceVersion
8.4 Critical Invariant
Pricing must be deterministic for the same input and same versioned rule set.
This is the basis for golden-master tests, audit replay, and dispute resolution.
9. Capability Group 5: Quote Management
9.1 Responsibilities
Quote management owns:
- quote header,
- quote lines,
- configuration snapshot,
- price snapshot,
- quote revision,
- validity period,
- approval state,
- proposal generation trigger,
- customer acceptance,
- quote-to-order readiness.
9.2 Quote Lifecycle
9.3 Quote Revision Principle
Mutable draft is acceptable before approval. After approval/presentation/acceptance, changes should create revision.
Quote Q-100 v1 approved
Quote Q-100 v1 presented
Sales changes discount
=> Quote Q-100 v2 draft/reapproval required
10. Capability Group 6: Approval and Policy
10.1 Responsibilities
Approval capability handles:
- approval trigger detection,
- approval route calculation,
- approver assignment,
- delegation,
- escalation,
- approve/reject/request-change,
- approval invalidation,
- approval evidence.
10.2 Policy as Data
Approval rules should be controlled as policy, not hidden in UI code.
Example policy dimensions:
IF discountPercent > thresholdByRole
AND productFamily = "Enterprise Security"
AND region = "EU"
THEN require Sales Director + Finance
10.3 Approval Binding
Approval must bind to a quote snapshot.
ApprovalDecision
- quoteId
- quoteRevision
- quoteSnapshotHash
- approver
- decision
- reason
- policyVersion
- decidedAt
Critical invariant:
Approval is not valid if the quote snapshot changes in a way that affects approval criteria.
11. Capability Group 7: Proposal, Document, and Contract Boundary
11.1 Responsibilities
Proposal/document capability handles:
- quote document generation,
- template selection,
- legal clause inclusion,
- localized terms,
- product terms,
- customer-specific terms,
- document version,
- e-signature handoff,
- customer acceptance evidence.
11.2 Contract Boundary
CPQ usually does not own full contract lifecycle in mature enterprise architecture. CLM may own contract authoring, negotiation, redline, signature, and repository.
The boundary should be explicit:
| Concern | Possible Owner |
|---|---|
| Commercial quote | CPQ |
| Proposal document | CPQ/document service |
| Legal contract negotiation | CLM |
| E-signature ceremony | e-sign provider |
| Signed contract repository | CLM/document management |
| Contracted price reference | CPQ/pricing/contract repository |
11.3 Critical Invariant
The accepted proposal/contract must be traceable to quote revision, price result, product configuration, and approval evidence.
12. Capability Group 8: Order Capture
12.1 Responsibilities
Order capture owns:
- submitted order,
- order source,
- quote reference,
- customer/account roles,
- requested dates,
- delivery information,
- billing references,
- order line action,
- order validation state,
- order submission evidence.
12.2 Order Source Types
Orders may come from:
- accepted quote,
- self-service checkout,
- partner marketplace,
- API integration,
- internal migration,
- bulk import,
- renewal automation,
- support-driven change order.
12.3 Order Model Principle
Order must represent a commitment to execute, not just a copy of cart.
Important fields:
Order
- orderId
- sourceType
- sourceReference
- relatedParties[]
- orderLines[]
- requestedCompletionDate
- billingAccountRef
- deliveryRefs[]
- commercialSnapshotRef
- validationState
- orchestrationState
13. Capability Group 9: Order Validation and Decomposition
13.1 Responsibilities
Order validation checks whether the order can proceed.
Decomposition converts commercial order lines into executable fulfillment plan.
13.2 Validation Types
| Validation | Example |
|---|---|
| Data completeness | missing bill-to account |
| Commercial consistency | quote expired before order submission |
| Catalog consistency | product no longer orderable |
| Technical feasibility | address not serviceable |
| Financial readiness | credit hold |
| Contract readiness | signature missing |
| Billing readiness | billing account invalid |
| Fulfillment readiness | required mapping missing |
13.3 Decomposition Example
13.4 Critical Invariant
If an order cannot be decomposed, it should not be accepted into fulfillment as if it were executable.
14. Capability Group 10: Orchestration and Fulfillment
14.1 Responsibilities
Orchestration owns:
- fulfillment plan,
- task dependency,
- milestone,
- state transition,
- retry,
- timeout,
- compensation,
- manual task,
- fallout,
- customer-visible status.
14.2 Orchestration Flow
14.3 Fulfillment Boundary
OMS may not perform all fulfillment itself. It coordinates.
Downstream systems may include:
- provisioning,
- inventory,
- shipping,
- field service,
- identity/entitlement,
- billing,
- ERP,
- external partner.
14.4 Critical Invariant
Every external side effect must have idempotency key, correlation ID, status tracking, and reconciliation path.
15. Capability Group 11: Installed Base and Asset Lifecycle
15.1 Responsibilities
Installed base capability owns or coordinates:
- active product instance,
- asset relationship,
- subscription term,
- service status,
- entitlement reference,
- billing linkage,
- renewal baseline,
- amendment baseline,
- cancellation state.
15.2 Asset Lifecycle
15.3 Asset Relationship
Enterprise assets are often hierarchical.
15.4 Critical Invariant
Amendment must be based on known current state and produce explicit desired state delta.
16. Capability Group 12: Billing, Revenue, and ERP Handoff
16.1 Responsibilities
CPQ/OMS usually does not own full billing or accounting. But it must produce clean handoff.
Handoff data includes:
- customer/account references,
- billing account,
- charge lines,
- recurring schedule,
- one-time charges,
- usage charge setup,
- tax-relevant data,
- contract reference,
- service activation date,
- cancellation effective date,
- credit/rebill events.
16.2 Billing Start Problem
One of the most common defects:
Billing starts from order submission date,
but service starts later after fulfillment.
Better design:
Order Submitted Date != Service Activation Date != Billing Start Date
16.3 Critical Invariant
Billing should start from an explicit billing trigger derived from commercial terms and fulfillment state, not from accidental technical event timing.
17. Capability Group 13: Integration and Events
17.1 Integration Styles
CPQ/OMS uses multiple integration styles.
| Style | Use When |
|---|---|
| Synchronous API | user needs immediate answer, e.g., pricing preview |
| Async command | long-running execution, e.g., submit fulfillment task |
| Domain event | notify state changes, e.g., quote approved |
| Batch | migration, reconciliation, large sync |
| File/document integration | proposal, contract, invoice attachment |
17.2 Example Events
QuoteCreated
QuotePriced
QuoteSubmittedForApproval
QuoteApproved
QuoteRejected
QuotePresented
QuoteAccepted
OrderCreated
OrderValidated
OrderRejected
OrderDecomposed
FulfillmentStarted
FulfillmentTaskCompleted
OrderFalloutRaised
OrderCompleted
AssetActivated
BillingReady
17.3 Event Design Rule
Events should express business facts, not UI actions.
Prefer:
QuoteApproved
OrderFalloutRaised
AssetActivated
Avoid:
ButtonClicked
PageSubmitted
StatusChanged
17.4 Critical Invariant
Events are facts that already happened. Commands are requests to do something. Do not mix them.
18. Capability Group 14: Search, Read Models, and Reporting
18.1 Responsibilities
Operational users need fast read models.
Examples:
- quote search,
- order search,
- approval queue,
- fallout queue,
- stuck order dashboard,
- customer asset view,
- revenue pipeline,
- billing readiness report,
- audit evidence view.
18.2 Read Model Principle
Do not force every screen/report to query transactional domain models directly.
Use read models optimized for:
- search,
- filtering,
- aggregation,
- operational queue,
- timeline display,
- audit view.
18.3 Critical Invariant
Reporting must distinguish draft, quoted, approved, accepted, ordered, fulfilled, billed, active, cancelled, and terminated states.
Mixing these produces misleading revenue and operational metrics.
19. Capability Group 15: Audit, Security, and Governance
19.1 Audit Responsibilities
Audit capability captures:
- who did what,
- when,
- from where,
- using which version,
- with what reason,
- based on what policy,
- with what before/after state.
19.2 Security Responsibilities
Security includes:
- quote visibility,
- price confidentiality,
- discount authority,
- approval separation,
- customer data protection,
- partner access boundary,
- support access boundary,
- admin override control.
19.3 Governance Responsibilities
Governance includes:
- catalog release approval,
- price change approval,
- policy change approval,
- template change approval,
- emergency rollback,
- manual correction approval,
- production data fix control.
19.4 Critical Invariant
Every financially or legally meaningful override must have identity, authority, reason, timestamp, and evidence.
20. Bounded Context Map
A mature architecture separates bounded contexts by meaning, ownership, and lifecycle.
20.1 Why Not One Context?
Because each concept changes for different reasons.
| Context | Changes Because |
|---|---|
| Catalog | product team changes offerings |
| Pricing | finance/revenue changes price policy |
| Quote | sales process changes |
| Approval | governance changes |
| Order | execution model changes |
| Orchestration | fulfillment dependency changes |
| Asset | lifecycle/subscription model changes |
| Billing | invoice/revenue model changes |
If all are implemented as one object model, every change becomes risky.
21. System Context Diagram
A simplified system context:
The key is not the boxes. The key is the boundary contracts.
22. Data Ownership Map
Use this as a starting point, not universal truth.
| Data Object | Likely Owner | Important Consumers |
|---|---|---|
| Lead/opportunity | CRM | CPQ, analytics |
| Product offering | Catalog | CPQ, pricing, OMS |
| Product specification | Catalog/product | Configurator, OMS |
| Price book | Pricing/finance | CPQ, quote, billing |
| Promotion | Pricing/marketing | CPQ, approval |
| Discount policy | Pricing/policy | CPQ, approval |
| Quote | CPQ | CRM, CLM, OMS, analytics |
| Approval decision | Approval/policy | CPQ, audit, analytics |
| Proposal document | Document/CLM | CPQ, customer, legal |
| Product order | OMS | fulfillment, billing, support |
| Fulfillment task | Fulfillment/OMS | OMS, support |
| Asset/subscription | Installed base/subscription | CPQ, billing, support |
| Invoice | Billing | ERP, support, analytics |
| Customer master | CRM/MDM | CPQ, OMS, billing |
Important rule:
Consumer cache is not ownership.
A system may store a copy for performance or audit, but it must not silently become an alternative source of truth.
23. Key Platform APIs
This is conceptual, not vendor-specific.
23.1 Catalog APIs
GET /catalogs/{catalogId}/offerings
GET /offerings/{offeringId}?version=...
GET /offerings/{offeringId}/configuration-model
GET /offerings/{offeringId}/downstream-mappings
23.2 Configuration APIs
POST /configurations
POST /configurations/{id}/validate
POST /configurations/{id}/explain-invalidity
23.3 Pricing APIs
POST /pricing/preview
POST /pricing/calculate
GET /pricing-results/{id}/explanation
23.4 Quote APIs
POST /quotes
POST /quotes/{id}/lines
POST /quotes/{id}/validate
POST /quotes/{id}/price
POST /quotes/{id}/submit-approval
POST /quotes/{id}/present
POST /quotes/{id}/accept
POST /quotes/{id}/convert-to-order
23.5 Order APIs
POST /orders
POST /orders/{id}/validate
POST /orders/{id}/decompose
POST /orders/{id}/submit-fulfillment
POST /orders/{id}/cancel
GET /orders/{id}/timeline
23.6 Asset APIs
GET /customers/{id}/assets
POST /assets/{id}/amendment-preview
GET /assets/{id}/lifecycle
API design details will be covered later. Here we only establish capability boundaries.
24. Key Domain Events
A north-star architecture should define canonical event vocabulary early.
24.1 Quote Events
QuoteCreated
QuoteLineAdded
QuoteConfigurationChanged
QuotePriced
QuoteValidationFailed
QuoteSubmittedForApproval
QuoteApprovalRequested
QuoteApproved
QuoteRejected
QuoteRevised
QuotePresented
QuoteAccepted
QuoteExpired
QuoteCancelled
QuoteConvertedToOrder
24.2 Order Events
OrderCreated
OrderValidationStarted
OrderValidationFailed
OrderValidated
OrderDecompositionStarted
OrderDecomposed
OrderSubmittedToFulfillment
OrderLineFulfillmentStarted
OrderLineFulfilled
OrderFalloutRaised
OrderFalloutRepaired
OrderPartiallyFulfilled
OrderCompleted
OrderCancelled
24.3 Asset Events
AssetPendingActivation
AssetActivated
AssetChanged
AssetSuspended
AssetResumed
AssetPendingTermination
AssetTerminated
24.4 Financial Handoff Events
BillingReady
BillingHoldRaised
BillingHoldReleased
ChargeScheduleCreated
CreditRequested
InvoiceCorrectionRequired
25. Platform Non-Functional Capability Map
Enterprise-grade means non-functional requirements are part of the design.
| Capability | Why It Matters |
|---|---|
| Idempotency | Prevent duplicate quote/order/fulfillment side effects |
| Versioning | Support catalog/price/policy evolution |
| Audit trail | Support dispute, compliance, and investigation |
| Replay | Recalculate/explain historical pricing/order decisions |
| Reconciliation | Detect mismatch across CPQ/OMS/billing/fulfillment |
| Observability | Diagnose stuck order and integration failure |
| Access control | Protect price, customer, and deal data |
| Data retention | Meet legal/regulatory requirements |
| Migration tooling | Support catalog/product/customer migrations |
| Bulk processing | Support enterprise quotes/orders/imports |
| Feature flags | Control rollout by channel/region/product |
| Rate limiting | Protect pricing/catalog/order APIs |
| Backpressure | Avoid downstream overload |
| Disaster recovery | Preserve commercial and operational state |
26. Reference Architecture: Logical View
This is a logical view, not a deployment prescription. Some capabilities may run in one application, some as services, some as vendor modules. The important thing is that boundaries remain explicit.
27. Reference Architecture: Decision Flow
28. Reference Architecture: Execution Flow
29. Design Decision Records Needed
A real CPQ/OMS initiative should maintain design decision records.
Minimum ADR set:
- CPQ/OMS boundary decision.
- Catalog ownership decision.
- Pricing ownership decision.
- Quote snapshot strategy.
- Approval invalidation strategy.
- Quote-to-order conversion strategy.
- Order state model.
- Decomposition ownership decision.
- Fulfillment orchestration strategy.
- Installed base ownership decision.
- Billing trigger strategy.
- Integration/event strategy.
- Audit/evidence strategy.
- Search/read model strategy.
- Reconciliation strategy.
Each ADR should answer:
Context:
Decision:
Alternatives considered:
Consequences:
Invariants protected:
Failure modes addressed:
Operational ownership:
30. North-Star Artifact Set
By the end of this series, you should be able to produce these artifacts.
30.1 Capability Map
Shows:
- domain capabilities,
- platform capabilities,
- external dependencies,
- business ownership.
30.2 Context Map
Shows:
- bounded contexts,
- ownership,
- upstream/downstream relation,
- data contracts,
- anti-corruption boundaries.
30.3 Lifecycle State Machines
For:
- quote,
- approval,
- order,
- fulfillment task,
- asset/subscription,
- cancellation/change order.
30.4 Event Map
Shows:
- domain events,
- event producers,
- consumers,
- schema version,
- replay/reconciliation use.
30.5 Data Ownership Matrix
Shows:
- system of record,
- consumers,
- cache/snapshot copy,
- synchronization strategy,
- conflict resolution.
30.6 Failure Model
Shows:
- failure scenarios,
- detection mechanism,
- recovery owner,
- retry/compensation,
- customer impact,
- evidence required.
31. Evaluation Rubric
Use this rubric to evaluate a CPQ/OMS architecture.
| Dimension | Weak Design | Strong Design |
|---|---|---|
| Boundary | CPQ/OMS/CRM/billing mixed | Clear ownership and contracts |
| Catalog | Static product table | Versioned product offering model |
| Pricing | Ad hoc formula | Deterministic pricing engine with trace |
| Quote | Mutable cart | Revisioned commercial artifact |
| Approval | Generic workflow | Policy-based, snapshot-bound approval |
| Order | Header status only | Line-level lifecycle and orchestration |
| Fulfillment | Fire-and-forget API calls | Tracked tasks, retry, fallout, reconciliation |
| Asset | Inferred from billing | Explicit installed base lifecycle |
| Audit | Application logs | Business evidence trail |
| Integration | Point-to-point hidden coupling | Versioned APIs/events and ownership matrix |
| Operations | Manual SQL fixes | Runbooks, queues, repair actions |
| Reporting | Revenue/status ambiguity | State-aware read models |
32. Common Architecture Smells
32.1 CRM Owns Everything
CRM becomes owner of quote, catalog, pricing, order, asset, and billing state.
Why it fails:
- sales object model cannot express fulfillment complexity,
- operational state pollutes sales process,
- quote/order/billing lifecycle become coupled,
- governance becomes fragile.
32.2 OMS Reprices the Order Differently
OMS recalculates price using current price rules instead of accepted quote snapshot.
Why it fails:
- customer commitment changes,
- invoice mismatch,
- audit dispute,
- revenue leakage.
32.3 Catalog Directly Drives Fulfillment Without Mapping
Commercial product is assumed to equal technical fulfillment item.
Why it fails:
- bundle cannot decompose correctly,
- downstream product codes leak into sales model,
- product launch requires too many coordinated changes,
- technical migration breaks sales behavior.
32.4 Approval Is Detached from Quote Version
Approval records say “approved” but not what was approved.
Why it fails:
- quote can change after approval,
- evidence is weak,
- policy audit fails,
- approver responsibility unclear.
32.5 Events Are Just Database Status Changes
Event names like QuoteUpdated or StatusChanged dominate.
Why it fails:
- consumers do not know business meaning,
- replay is hard,
- audit timeline is weak,
- integration becomes implicit.
33. Practice: Draw Your Own Capability Map
Choose one business scenario:
- B2B SaaS enterprise subscription,
- telecom connectivity order,
- manufacturing configured product,
- insurance policy quote/order,
- logistics contract service,
- cloud marketplace private offer.
Then create:
1. Commercial capabilities needed
2. Order capabilities needed
3. Lifecycle capabilities needed
4. External systems involved
5. Data owners
6. Events
7. Failure modes
8. Audit evidence required
Use this skeleton:
Then challenge it:
- What changes after approval?
- What changes after acceptance?
- What can fail downstream?
- What must be immutable?
- What must be versioned?
- What must be reconciled?
34. Staff-Level Review Checklist
Before approving a CPQ/OMS architecture, ask:
- Is CPQ/OMS boundary explicit?
- Is catalog ownership explicit?
- Is pricing deterministic and explainable?
- Are quote revisions modeled?
- Is approval bound to quote snapshot?
- Is customer acceptance captured as evidence?
- Is quote-to-order conversion deterministic?
- Is order validation separate from quote validation?
- Is decomposition explicit?
- Are fulfillment tasks tracked?
- Are partial fulfillment and fallout modeled?
- Are retries idempotent?
- Is installed base a first-class concept?
- Are amendment and renewal based on current asset state?
- Is billing triggered by explicit business event?
- Are events named as business facts?
- Is source of truth clear for each entity?
- Is audit trail business-meaningful?
- Are read models designed for operations?
- Is there a reconciliation strategy?
35. Summary
North-star architecture CPQ/OMS bukan sekadar diagram aplikasi.
Ia harus menjawab:
- capability apa yang dibutuhkan,
- siapa pemilik data,
- apa boundary antar context,
- apa yang immutable,
- apa yang versioned,
- apa yang bisa gagal,
- bagaimana recovery dilakukan,
- bagaimana audit membuktikan keputusan,
- bagaimana order berubah menjadi pekerjaan nyata,
- bagaimana lifecycle asset/subscription tetap konsisten.
Poin terpenting:
- CPQ/OMS harus dipisahkan antara decision layer dan execution layer.
- Catalog, pricing, quote, approval, order, orchestration, asset, billing, and audit punya lifecycle berbeda.
- Snapshot dan versioning adalah fondasi commercial correctness.
- Orchestration dan fallout adalah fondasi operational correctness.
- Events, read models, and reconciliation adalah fondasi enterprise operability.
- Capability map lebih penting daripada vendor/product diagram.
Part berikutnya akan masuk ke Product Modeling for CPQ and Order Management, yaitu fondasi untuk memahami product offering, specification, bundle, option, characteristic, commercial product, technical product, and versioning.
36. Referensi
- Salesforce, “What Is CPQ, or Configure, Price, Quote?” — https://www.salesforce.com/sales/cpq/what-is-cpq/
- Salesforce Help, “Guided Selling in Salesforce CPQ” — https://help.salesforce.com/s/articleView?id=sales.cpq_guided_selling.htm&type=5
- TM Forum, “TMF620 Product Catalog Management API v5.0” — https://www.tmforum.org/open-digital-architecture/open-apis/product-catalog-management-api-TMF620/v5.0
- TM Forum, “TMF622 Product Ordering Management API v5.0” — https://www.tmforum.org/open-digital-architecture/open-apis/product-ordering-management-api-TMF622/v5.0
- Oracle Documentation, “Set Up Orchestration Processes” — https://docs.oracle.com/en/cloud/saas/supply-chain-and-manufacturing/25c/faiom/set-up-orchestration-processes.html
- Oracle Documentation, “Overview of Using Business Rules With Order Management” — https://docs.oracle.com/en/cloud/saas/supply-chain-and-manufacturing/25d/faiom/overview-of-using-business-rules-with-order-management.html
You just completed lesson 04 in start here. Use the series map if you want to review the broader track, or continue directly into the next lesson while the context is still warm.
Keep the momentum while the lesson is still fresh. Move backward for review or continue forward into the next concept.