| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Lines of code | 1019 |
| Technical Name |
oe_s3_attachment_storage |
| License | OPL-1 |
| Website | https://odooengineering.com |
| Versions | 16.0 17.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Lines of code | 1019 |
| Technical Name |
oe_s3_attachment_storage |
| License | OPL-1 |
| Website | https://odooengineering.com |
| Versions | 16.0 17.0 19.0 |
OE S3 Attachment Storage
Transparently store Odoo attachments in any S3-compatible storage (AWS S3, DigitalOcean Spaces, MinIO, Backblaze B2, Wasabi) with zero schema changes, automatic local fallback, and a powerful two-phase migration dashboard.
Enhanced Features in This Version
Professional Capabilities for Your Business
Transparent ir.attachment override - _file_read/write/delete routes through S3 automatically
S3-compatible providers - AWS, DO Spaces, MinIO, B2, Wasabi, any S3 API
Settings UI - all configuration in Settings -> General Settings with Test Connection button
Automatic local fallback - if S3 is unreachable, writes go to local filesystem silently
Retry with exponential backoff + jitter - boto3 adaptive retry mode (3 attempts)
Production-only mode - staging/dev builds read from S3 but write locally
Two-phase migration cron - Phase 1 uploads, Phase 2 verifies + cleans up local copies
S3 garbage collection cron - daily, removes orphaned S3 objects with double-check safety
Repair action - weekly, rehydrates local copies of excluded-model attachments from S3
Excluded models and mimetypes - web assets stay local, fully configurable
Migration progress dashboard - smart button showing total/uploaded/pending/failed counts
Encryption support - SSE-S3 (default) and SSE-KMS options
Health check endpoint - JSON endpoint showing S3 connection status
CLI verification tool - standalone script to test S3 connectivity outside Odoo
Uninstall safety - S3 objects remain intact on uninstall
Before & After OE S3 Attachment Storage
Before
|
After
|
What's Included
Core Features
|
Additional Components
|
Global Language Support (20+)
Available in 20+ languages: es_ES, fr_FR, it_IT, pt_BR, nl_NL, da_DK, de_DE, pl_PL, ar_001, zh_CN, ru_RU, ja_JP, tr_TR, id_ID, th_TH, vi_VN, ko_KR, pt_PT, sv_SE, cs_CZ.
How to Use This Module
Step-by-Step Instructions to Get Started
Installation & Setup
- Install the module: Go to Apps -> Search for "oe_s3_attachment_storage" -> Click Install
- Install the boto3 Python package: pip install boto3
- Configure permissions: Navigate to Settings -> Technical -> S3 Attachment Storage to grant access to administrators who will manage S3 configuration
Basic Usage
- Configure S3: Go to Settings -> General Settings -> S3 Attachment Storage section and enter your bucket name, access key ID, and secret access key
- Test connection: Click "Test Connection" to verify your S3 credentials and bucket access
- Run migration: Open the S3 Migration Dashboard and click "Run Phase 1" to upload existing attachments in batches
- Verify and clean: After Phase 1 completes, click "Run Phase 2" to verify uploads and clean up local copies
Tips & Best Practices
- Start with dry-run mode to preview what migration and GC crons will do before running them live
- Use production-only mode in staging environments to read from S3 without writing to it
- Configure excluded models and mimetypes to keep web assets (CSS, JS, icons) on local disk for performance
- Set a path prefix for multi-environment buckets to keep production, staging, and dev data separate
Important Notes
The boto3 Python package is required. Install it via pip before using the module. For production deployments, configure IAM roles or restricted access keys with minimal S3 permissions. S3 objects remain intact on uninstall - no data loss. Always test with dry-run mode first before running live migration or GC operations.
Frequently Asked Questions
Q: Which S3-compatible storage providers are supported?
A: ``oe_s3_attachment_storage`` works with any S3-compatible provider including AWS S3, DigitalOcean Spaces, MinIO, Backblaze B2, Wasabi, and any other service that implements the S3 API. Configure the endpoint URL in Settings for non-AWS providers.
Q: Does this module require changes to existing Odoo code or database schema?
A: No. The module overrides ir.attachment internal methods transparently. No schema changes, no model modifications, and no code changes are needed. Existing attachments are migrated via the two-phase migration cron.
Q: What happens if S3 is temporarily unreachable?
A: The module automatically falls back to local filesystem storage with exponential backoff and jitter (3 retry attempts). Writes succeed locally, and no errors are raised. Once S3 is available again, the GC cron can clean up any local-only files.
Q: Is this module safe for production use on Odoo.sh?
A: Yes. The module auto-detects Odoo.sh environments and includes production-only mode. Staging and development builds read from S3 but write locally, preventing accidental data contamination. The two-phase migration ensures data integrity.
Launch Demo Instance
Explore OE S3 Attachment Storage in a live environment
Try It NowProudly American-Owned & Operated
Built for American Businesses First
At Odoo Engineering, we understand the unique needs of American businesses. Our modules are designed with clear, English-first terminology and workflows that align with US business practices, while maintaining universal accessibility for companies worldwide.
Why Choose Odoo Engineering
| Professional Excellence Enterprise-grade modules built to the highest standards | 90-Day Warranty Full support and bug fixes guaranteed | Clear Documentation English-first terminology that everyone understands |
| US Business Hours Support when American businesses need it most | Clean Code Well-documented, easily extensible modules | Expert Team Dedicated professionals focused on your success |
Quality Odoo modules that are easily extended at reasonable prices â that's the Odoo Engineering promise.
Complete AI Business Intelligence Suite
Powered by our open-sourced oe_ai_job_base framework - Build or Buy AI Extensions
This module is part of our AI Business Intelligence ecosystem. Purchase individual modules or contact us for custom AI solutions built on this proven framework.
Data CleanerAuto-fixes addresses, names, phones with smart AI rules |
Message AnalysisSentiment, urgency, and topic extraction for partners |
Advanced SearchNatural language queries across your database |
QuickBooks BridgeAI-guided sync with QuickBooks Online |
Want something custom? We build AI integrations tailored to your business.
Support & Services
Get HelpNeed assistance? Our support team is here to help with installation, configuration, and troubleshooting. Contact Support |
Custom DevelopmentLooking for custom features or integrations? We offer professional Odoo development services. Request Quote |
Ready to Get Started?
Install OE S3 Attachment Storage today and experience the difference quality makes.
Launch Demo Get in Touch© 2025 Odoo Engineering. All rights reserved.
Professional Odoo modules built with excellence in the USA.
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module