TM Forum business capabilities → the component that carries each — with a proof suite behind every green dot, a caveat on every amber one, and the gaps in red, named out loud. An integration plan, not a wall.
apps/storefront /shop✅ (suites throughout)apps/mobile (Expo)✅apps/business-console /biz✅apps/csr-console /csr✅SOM dealer module + apps/dealer-console✅ #48/#51campaign (journeys, A/B, holdout lift, caps)✅ #35–39quote service✅loyalty (#34)✅ #69 (earn on settled bills; burn to DATA at the meter, single-use TMF671 vouchers, TIERS as pricing rules; expiry sweep + liability; tier changes trigger campaigns; storefront + app cards)benefit-allowance (#352) + catalog, ordering, SOM partner seam✅ benefit_choices_test.js (grants, picks never oversold or spent twice, swaps that wait for the new benefit, the swap limit as policy, downgrade refused with the remedy, holds as law-as-data, care desk + governed actions with receipts, goodwill only by a human, authoring with no JSON under launch governance, partner cost on the journal, "has unused Choices" audience, partner invoices reconciled and settled, no new picks while in collections (a policy rule), a "can I pick this?" preview that never disagrees with the order, the operator's own priority as a Pick, the mobile app on Expo SDK 58 with Choices; per-account pool and merchant of record are honest gaps — docs/benefit-choices.md)catalog + cart + gateway✅ #64catalog /seo + gateway✅ #68product-catalog✅ CTK zerocatalog + policy + billing✅ #24product-catalog + policy✅ #77/#78 (server-side: both pick bounds, values scoped to the picked option, priced to the pick, policy consulted; agent channel configures → checks → orders with nested items)policy (JSON-logic)✅promotion✅document + per-tenant PIM✅ #23document (per-tenant AssetProvider)✅ #89 (opt-in per tenant: Sanity adapter + generic HTTP connector proven on real self-hosted Strapi; redirect delivery, renditions, HMAC webhook freshness, fail-open placeholder — the built-in DAM stays default)intelligence✅ #25/#53party-account✅user-roles✅party-account fan-out✅ #58trouble-ticket✅party-interaction✅ CTK zero (846/846)communication✅ (email/inbox; ◐ no SMS/push gateway — bring an SMSC/push provider)knowledge✅intelligence✅ (rules + trained LR; ◐ GBM/QoE features future)storefront + intelligence + insight✅ #86 (the next rung of the allowance ladder, never a nag; frequency and full interest profile as rule variables)party-account✅ norway_rails_test (idempotent feed cursor; protected addresses masked everywhere — staff consoles, checkout, every export; pickup-point delivery for shielded parties)party-account✅ norway_rails_test (secret number free and fully suppressed; a reserved entry can never leak into an export; real directory agreements are per-tenant deployment config)intelligence + package✅ #65–66usage✅billing (crash-resumable)✅ #57, #71 (numbered GAPLESS credit notes: unpaid bills reduce, settled refund via PSP, disputes mint their own paper)billing✅billing (BillSituations, pure)✅ bill_situation_test (eight situations with a fixed precedence computed once, read by four channels that each know all eight; a dispute opened on a bill moves the desk and the shop in the same breath and resolving it puts both back; no channel owns a clock — the claims gate refuses one that grows a date comparison; ◐ the arrangement rung is proven only as a unit test — no demo tenant has both a dunning policy and bills; ◐ no dated history, so "was it overdue on the 14th" cannot be asked)admin-console islands + billing + revenue✅ billing_ia_test, bills_desk_test, billing_overview_test, accounting_configuration_test (six role-gated destinations in lifecycle order; bills as the operational centre with one workspace per bill; counts are the service's judged totals, never a page wearing the book's clothes; live chart-of-accounts changes pass draft→validate→approve→activate; ❌ no four-eyes rule, and the finance roles are still one role)payment + payment-method✅ (◐ PSP: mock default, Stripe adapter shaped — certify per deployment)billing + SOM restrict/suspend✅ collections_test (remind→warn→restrict→suspend→cure; the statutory pack refuses an undercutting tenant policy — fee gate, fee cap, reminder cap, notice clock, actionable floor; MRC stops during nonpayment suspension; emergency calls stay reachable under restriction; promise-to-pay / dispute / hardship holds; ❌ external collections-agency handoff)device-commerce + revenue✅ device_commerce_test (operator-book / third-party-loan / BNPL behind one financing port; IMEI trade-in with grading deltas; 14-day withdrawal from parcel delivery; IFRS 15 subsidy subledger — contract asset, unwind, ETF recovery, residual-value guarantee; ◐ billing-driven instalment ticks are a follow-up)base-migration✅ base_migration_test (arm gated on an attached price simulation; statutory 30-day notice enforced as a gate; penalty-free exit on detrimental change, in-binding included; age/promo triggers; snapshot rollback; circuit breaker)usage✅ usage_policy_test (household pools reserve-then-commit; content-services cap with free barring above the statutory floor + minor barring; ≈€50 roaming limit with 80/100% cut-off + audited continue; opt-in auto top-up; travel passes as zone-boosts; ◐ RLAH fair-use monitor is a follow-up; zero-rating deliberately absent in the EEA)billing + rail adapters (mocks in dev)✅ norway_rails_test (e-invoice alias → digital mailbox → print, channel recorded per send; OCR settlement closes bills through the remittance door; real rails are per-tenant config behind the same port)usage + service-orchestration + SigScale OCS (bundled, integrations/sigscale-ocs) / mock-ocs✅ #123 sigscale_ocs_test — a REAL open-source 3GPP OCS behind the seam: rate plans live in the OCS as TMF620 offerings, activation provisions TMF637 product + TMF638 service (MSISDN identity) over its TM Forum APIs, a real Diameter Gy credit-control session debits the balance, TMF654 projects + tops up (CTK-certified 282/282), the OCS's own balance hub fires the running-low journey, plan change / hold / isolation; ◐ 5G Nchf/CHF waits for a production-grade CHF (see docs/ocs-seam.md)revenue (#35)✅ #70 the FEED (balanced double-entry journal from billing/payment events, CoA mapping as data, tax split, dispute credits, priced loyalty liability, period close, SAP/NetSuite-shaped CSV, cent-exact reconciliation tie-out); ❌ the LEDGER itself + the rev-rec engine stay in the ERP — by designintelligence risk engine✅ #82 (transparent additive score from real signals — unpaid bills, credit notes, velocity, tenure, verified session; threshold enforced as a policy rule, reversibly) — plus a country-keyed credit-decision port at checkout: a bureau freeze answers as its own state so the shop offers prepaid; only the decision is stored, never the report (norway_rails_test)service-orchestration✅ thin: mock activation, real state machineprocess (#36)✅ #72 (design intent as data, flows projected from the event stream with their cross-system timeline, STUCK is a state on the bus, operator recovery lever; and failures feed an agent whose MEMORY COMPOUNDS: governed L0 diagnosis to a ticket note, episodic traces w/ mandatory verdicts, runbooks promoted on N recurrences + human approval — the fourth identical failure auto-diagnosed from memory with ZERO model calls, revocation proven as the brake)SOM✅ (◐ real HLR/HSS/OTA behind seams; #76: pools + issued ledger honestly faced)device-entitlement + service-orchestration (+ mock-hss, mock-ts43-device in dev)✅ #124 device_entitlement_test (15 legs) — the plan's spec decides (VoLTE/VoNR, Wi-Fi calling, SMSoIP, data plan, carrier billing, satellite, private Wi-Fi identity, phone number; RCS on the BSS face), the SIM proves itself (RFC 4187 EAP-AKA, forged answers refused, relay sessions in the database), token reuse, JSON and TS.43 XML, the VoWiFi service flow, companion eSIM activation with an SGP.22 code, the orchestrator binds lines on activation and follows plan changes and SIM swaps, a primary eSIM transfer is granted AND completed by the orchestrator, server-initiated refresh reaches the phone through communication (push/SMS), OIDC sign-in for clients without a SIM, per-tenant AUC, eSIM profiles ordered from the SM-DP+ over SGP.22 ES2+ (matching id in the activation code, download notifications back), RCS auto-configuration door (RCC.14, RCC.07 XML), console page, tenant isolation; ◐ OEM certification (Apple/Google) is the operator's calendar; hosted RCS (Jibe/Apple) needs the partner contract; see docs/entitlement-seam.mdontology✅ #125 ontology_test — registry conformance against gateway routes, event sources, realm roles and runtime self-description of the six journey components; ten governed actions (line, order, bill, launch) with receipts, the approval ladder on credits, the outcome sweep, learning contracts on ontology decision points, context resolver, RDF export, MCP, generated SDK and the CSR desk on it; ◐ contracts do not yet gate execution, six components self-describe by source onlyporting✅ (◐ NRDB shaped, not connected)assurance + service-orchestration + intelligence✅ (thin; real FM/PM needs the NMS; #76: diagnose as serviceTest with history, agent memory as standard incidents)qualification✅qualification coverage map✅ #79/#80 (never a bare no — the best available technology proposed on refusal; ordering gates every placed item at create; the cart names technology + speed)appointment✅ per-tenant calendar (timezone, working days, windows, horizon) + technician roster from which window capacity is DERIVED (scheduleConfig, technician, console Installers pane) + the FIELD-SERVICE SEAM: provider: tmf646 delegates search/book/cancel to the operator's Workforce Management (TMFC046) over TMF646, dev stand-in mock-fsm (❌ vendor-native adapters, slot holds, dispatch/routing — see docs/field-service-seam.md)fulfilment (#37)✅ #73 (parcel + visit as resources, warehouse/installer API, machine completion when both gates pass, milestones on the process timeline; customers track deliveries)SOM✅agreement✅assurance + billing✅ #74 (SLA terms as agreement DATA; late-resolved problems mint violations on a capped ledger; billing compensates with the PRE-AGREED credit note — no human decides at breach time)quote✅ (◐ full CPQ: approvals, versioned proposals, e-sign — no)fleet-wide✅ #49SOM✅ (◐ settlement/rev-share no)agreement✅ #83 (kinds as data; typed partnerships validated at signature)geographic-address✅ #84 (site = name + owner + lifecycle + stored TMF673 address, embedded; reused on orders end to end)insight events help◐ insight is a CDP-ish spine, not a DWHevent-hub (#38)✅ #75 (callback + filter, tenant-walled, delivery ledger w/ backoff retries + dead-letter that keeps its error)