ADR-012: Business Operations Platform — Odoo
Status: Accepted Date: 2026-03-16
Context
PowerSeller needs CRM, billing, subscriptions, customer support, a public website, and a customer portal. Building these capabilities from scratch in the SaaS App would divert engineering resources from the core product (secondary marketing business logic). Odoo v18 Enterprise is already live and serving as the platform for MBS Access (B2B subscriptions, SAML IdP, eSign, customer portal).
Decision
Odoo v18 Enterprise is the commercial layer for all PowerSeller products. The SaaS App does not build its own billing, CRM, customer management, or subscription handling.
Responsibility split:
- Odoo manages: Customer onboarding, subscription lifecycle, invoicing, CRM, support tickets, customer portal, public website
- SaaS App delivers: The product experience (pipeline, pricing, trading, pooling, risk)
- Integration: Odoo provisions tenants and manages subscriptions; SaaS App receives provisioning signals (via API or webhook) that communicate "tenant X is active, with these users, at this tier"
Consequences
Positive:
- Focus on core product: Engineering effort goes to secondary marketing logic, not reinventing billing and CRM
- Proven platform: Odoo is battle-tested for business operations — accounting, CRM, helpdesk, HR
- Consistent customer experience: All PowerSeller products (SaaS, PowerSeller X, MBS Access) share a single customer-facing business layer
- Identity consolidation opportunity: Odoo is already the SAML IdP for MBS Access — could extend to all products
Negative:
- External dependency: SaaS App depends on Odoo for tenant provisioning — Odoo downtime could block new tenant onboarding
- Integration complexity: Odoo's API (XML-RPC, JSON-RPC, REST) requires integration work
- Identity question: If Odoo is the IdP for all products, it becomes a critical single point of authentication (see ADR-013)
- Odoo.sh hosting: Odoo runs on Odoo.sh (vendor-managed SaaS), not on PowerSeller's Azure infrastructure