Architecture
This section documents the technical architecture of the CNF Odoo implementation, including system design, integrations, and technical decisions.
System Overview
The CNF Odoo system is built on Odoo 13.0 Community Edition with custom modules and integrations to support CNF's specific business requirements.
Core Components
- Odoo Server
- Python-based application server
- PostgreSQL database backend
-
Multi-tenant architecture support
-
Custom Modules
- CNF-specific business logic
- Extended functionality for existing modules
-
Integration connectors
-
External Integrations
- GrocerKey e-commerce platform
- CRS (Customer Relationship System)
- PRATS inventory system
- SFTP document exchange
Architecture Principles
Modularity
- Separate concerns into distinct modules
- Minimize inter-module dependencies
- Use Odoo's inheritance mechanisms appropriately
Scalability
- Horizontal scaling through load balancing
- Database optimization and indexing
- Caching strategies for performance
Maintainability
- Follow Odoo development guidelines
- Comprehensive documentation
- Automated testing where possible
- Version control for all customizations
Module Architecture
Standard Modules Used
purchase- Purchase order managementstock- Inventory and warehouse managementaccount- Financial accountingproduct- Product catalog management
Custom Modules
cnf_purchase_extended- Purchase workflow customizationscnf_warehouse_ops- Warehouse operation enhancementscnf_integrations- External system connectorscnf_reports- Custom reporting functionality
Integration Architecture
API Layer
Data Flow Patterns
- Synchronous Operations
- Real-time API calls
- Immediate response required
-
Used for critical operations
-
Asynchronous Operations
- Job queue processing
- Batch operations
- Background synchronization
Security Architecture
Authentication
- Odoo native authentication
- API key management for integrations
- Role-based access control (RBAC)
Data Security
- SSL/TLS for all communications
- Database encryption at rest
- Audit logging for sensitive operations
Infrastructure
Production Environment
- Load-balanced web servers
- Dedicated database server
- Redis for caching and job queue
- NGINX reverse proxy
Development/Staging
- Containerized environments
- Automated deployment pipelines
- Snapshot-based data refresh
Technical Decisions
Decision Records
Use of Job Queue for Integrations
Context: Need to handle long-running integration tasks without blocking user operations Decision: Implement Odoo Connector job queue Consequences: Better user experience, complex error handling
Custom Module Naming Convention
Context: Need consistent naming for custom modules
Decision: Prefix all custom modules with cnf_
Consequences: Clear distinction between standard and custom code