BREAKING CHANGE: Legacy API key system (sync.api.key) completely removed
Major Features:
- Complete bidirectional synchronization system between Odoo instances
- Legacy API key system removal and migration to built-in Odoo API keys
- Full protocol support: XML-RPC, JSON-RPC, and OdooRPC with API token authentication
- Bidirectional project sync with assign/receive wizard system
- Auto-sync wizard for intelligent field selection
- Comprehensive test suite for sync workflows
Detailed Changes:
odoo_to_odoo_sync (base module):
- Removed legacy sync.api.key and sync.api.key.log models entirely
- Added sync_project and sync_project_config_wizard models
- Enhanced sync_instance with proper Odoo 18 API key format support
- Added protocol selection (XML-RPC, JSON-RPC, OdooRPC) with API token auth
- Implemented comprehensive authentication with debug logging
- Added test_sync_workflow.py for complete workflow testing
- Updated security access rules for new models
- Enhanced error handling and state management
odoo_to_odoo_bemade (server module):
- Created OdooToBemadeInstance model for enhanced instance management
- Added assign project wizard for server-side project distribution
- Implemented project key and API token generation system
- Added automatic sync model creation for projects and tasks
- Enhanced sync_instance with bidirectional sync capabilities
- Updated views and security access for new functionality
- Removed legacy API key references and views
odoo_to_odoo_bemade_customer (client module):
- Added project model with Bemade sync flags (is_bemade_project, bemade_project_key)
- Created receive project wizard for client-side project acquisition
- Implemented multi-protocol support (XML-RPC, JSON-RPC, OdooRPC)
- Added project sync validation and configuration system
- Enhanced security access rules for client operations
- Updated views for project management interface
Authentication & Protocol Support:
- Fixed Odoo 18 API key format: {'scope': 'rpc', 'key': api_token}
- Added comprehensive debug logging for authentication flow
- Enhanced error handling with detailed state management
- Maintained backward compatibility with fallback attempts
- Updated all protocol implementations (XML-RPC, JSON-RPC, OdooRPC)
Testing & Validation:
- Added complete test suite for bidirectional sync workflow
- Implemented comprehensive authentication testing
- Added protocol-specific test cases
- Enhanced error state validation
UI/UX Improvements:
- Added intuitive wizards for project assign/receive operations
- Implemented auto-sync wizard with field selection modes (Full, Required, Balanced)
- Enhanced form views with radio button selections
- Added descriptive text and user guidance
Security:
- Updated security access rules for all new models
- Enhanced authentication token handling
- Added proper model access controls
Migration Notes:
- Legacy API key system completely removed - no migration path needed
- Uses built-in Odoo API key functionality
- All existing configurations remain compatible
Files Added/Modified:
- Multiple new model files for project sync functionality
- Wizard implementations for user workflows
- Enhanced test coverage
- Updated security rules and access controls
- New view definitions for UI components
|
||
|---|---|---|
| .. | ||
| data | ||
| models | ||
| security | ||
| static/description | ||
| views | ||
| wizards | ||
| __init__.py | ||
| __manifest__.py | ||
| README.md | ||
Odoo to Odoo Bemade Customer
Overview
Complete bidirectional synchronization system for Bemade customers to securely sync with Odoo.bemade.org. Features wizards for project assignment/reception, multi-protocol support (XML-RPC, JSON-RPC, OdooRPC), and automated configuration.
Features
✅ Bidirectional Sync Wizards
- Receive Project Wizard:
odoo.to.bemade.customer.receive.wizard - Assign Project Wizard:
odoo.to.bemade.assign.project.wizard(server-side) - One-click setup: Automated configuration with generated keys
- Protocol selection: Choose XML-RPC, JSON-RPC, or OdooRPC
✅ Multi-Protocol Support
- XML-RPC: Traditional XML-RPC with API key authentication
- JSON-RPC: JSON-based protocol with Odoo 18 API format
- OdooRPC: Native OdooRPC library with encrypted credentials
✅ Secure Authentication
- Encrypted API keys: AES encryption for secure storage
- Project keys: Unique identifiers for each sync project
- Token generation: Automatic API token creation and sharing
✅ Project Management
- Project assignment: Server assigns projects to clients
- Project reception: Client receives and configures projects
- Key management: Automatic key/token generation and validation
Installation
Prerequisites
- Odoo 17+ or 18+
odoo_to_odoo_syncmodule (base framework)- Network access to Odoo.bemade.org
Installation Steps
-
Install base dependencies:
pip install odoorpc # For OdooRPC protocol -
Install in Odoo:
- Go to Apps → Search "odoo_to_odoo_bemade_customer"
- Click Install
Configuration
Server Side (Bemade)
- Install
odoo_to_odoo_bemademodule - Navigate to Project → Bemade Sync → Assign to Client
- Select project and configure sync settings
- Generate project key and API token
- Share credentials with customer
Client Side (Customer)
- Install
odoo_to_odoo_bemade_customermodule - Navigate to Project → Bemade Sync → Receive from Bemade
- Enter provided credentials:
- Bemade server URL (default: https://odoo.bemade.org)
- Database name
- Username
- API Key
- Project Key
- Select protocol (XML-RPC/JSON-RPC/OdooRPC)
- Test connection and receive project
Usage
Using the Receive Project Wizard
- Open Wizard: Project → Bemade Sync → Receive from Bemade
- Enter Connection Details:
- Server URL: https://odoo.bemade.org (or custom)
- Database: Target database name
- Username: Your Bemade username
- API Key: Generated from user preferences
- Project Key: Provided by Bemade
- Select Protocol: XML-RPC, JSON-RPC, or OdooRPC
- Test Connection: Validate settings before proceeding
- Receive Project: Import project data and tasks
Protocol Configuration
- XML-RPC: Traditional XML-RPC protocol
- JSON-RPC: JSON-based with Odoo 18 format:
{'scope': 'rpc', 'key': 'api_key'} - OdooRPC: Native library with automatic connection handling
Field Mapping
- Automatic: Pre-configured field mappings for common models
- Manual: Override mappings via sync model configuration
- Transformations: Support for field value transformations
Bidirectional Sync Workflow
1. Server Assignment
Bemade Server → Assign Project Wizard → Generate Keys → Share with Client
2. Client Reception
Client → Receive Project Wizard → Enter Credentials → Import Project → Configure Sync
3. Ongoing Synchronization
- Automatic: Real-time sync based on triggers
- Manual: Force sync via project actions
- Scheduled: Cron-based regular synchronization
API Authentication Format
Odoo 18 API Key Format
# XML-RPC
{'scope': 'rpc', 'key': 'your_api_key_here'}
# JSON-RPC
{
"jsonrpc": "2.0",
"method": "call",
"params": {
"service": "common",
"method": "login",
"args": ["database", "username", {"scope": "rpc", "key": "api_key"}]
}
}
# OdooRPC
odoo.login(database, username, api_key)
Troubleshooting
Common Issues
- Connection Failed: Check URL, credentials, and network access
- Authentication Error: Verify API key format (Odoo 18 requires scope parameter)
- Project Not Found: Ensure project key is correct and project exists
- Protocol Error: Try different protocol (XML-RPC/JSON-RPC/OdooRPC)
Debug Commands
# Enable debug logging
import logging
logging.getLogger('odoo.sync').setLevel(logging.DEBUG)
# Test connection programmatically
sync_instance = env['odoo.sync.instance'].search([('name', '=', 'bemade')])
sync_instance.test_connection()
Project Configuration
Project Fields Added
- is_bemade_project: Boolean flag for Bemade projects
- bemade_project_key: Unique project identifier
- bemade_sync_enabled: Enable/disable synchronization
Security Access
- User Groups: Bemade Sync User, Bemade Sync Manager
- Permissions: Read, Create, Write, Delete based on role
Development
Extending Functionality
- Custom Wizards: Inherit from base wizard classes
- Protocol Handlers: Add new protocol support
- Field Transformers: Custom field value transformations
- Conflict Resolvers: Custom conflict resolution strategies
Testing
# Run module tests
./odoo-bin -d your_database -u odoo_to_odoo_bemade_customer --test-enable
# Test specific wizard
env['odoo.to.bemade.customer.receive.wizard'].create({...}).action_receive_project()
Support
Getting Help
- Logs: Check Odoo logs and sync logs
- Connection Test: Use built-in connection validation
- Support: Contact Bemade support with sync logs
Log Locations
- Odoo Logs:
/var/log/odoo/odoo.log - Sync Logs: Settings → Technical → Odoo Sync → Logs
- Debug Mode: Enable debug logging for detailed information
Last Updated: 2025-08-16 Compatible with Odoo 17+ and 18+