Changelog for v12.0.0 (v11.0.2 → v12.0.0)
Release Date: November 18, 2025
🎉 Major Changes
NetBox v4 Compatibility
- Updated to NetBox v4 API: Migrated from Django's deprecated
ContentTypeto NetBox'sObjectTypeAPI- All asset assignments continue to work seamlessly (Device, Site, Location, Rack, Module)
- All API endpoints remain fully compatible
- No data migration required - automatic compatibility layer
- Database schema unchanged
Multi-Currency Support
- Global Currency Configuration: New plugin-level currency settings with configurable currency codes, display names, and symbols
- Default currencies: CZK (Czech Koruna), EUR (Euro), USD (US Dollar), GBP (British Pound), JPY (Japanese Yen)
- Configurable default currency (EUR by default)
- Custom currency symbols support
- Currency Fields Added:
Asset.currency- Required when price is setContract.currency- Required when price is setInvoice.currency- Required when price is setAssetService.service_currency- Required when service_price is set
- Price-Currency Validation: Enforced relationship where currency is required if price is set (including 0), and vice versa
- UI Enhancements: New
CurrencyColumnfor tables displaying price with currency symbols
🆕 New Features
Description Fields
- Added
descriptionfield to multiple models for better context and documentation:Asset.descriptionAssetType.descriptionContractor.descriptionContract.descriptionInvoice.descriptionAssetService.description
- Descriptions automatically displayed in form dropdowns for easier selection
Enhanced String Representations
- Human-Readable Display: All models now have optimized
__str__methods for better readability- No primary key prefixes for cleaner searching
- Contextual information in parentheses and brackets
- Hierarchical relationships clearly shown
- Examples:
- Asset:
PROD-123 [SN12345] (Dell) - Contract:
Main Contract (MC-001) via ACME Corp - Invoice:
Invoice-Q1 (Main Contract) [PRJ-001] 5000.00 EUR - RMA:
RMA#12345 PROD-123 [SN12345] [Approved]
- Asset:
External Inventory Enhancements
- Deletion Protection: Cannot delete external inventory items with associated assets
- Improved String Representation: Shows inventory number, name, serial number, and responsible person
- Renamed Fields:
abra_id→external_idfor better clarity - Better Filtering: Enhanced search across all fields
Form Improvements
- Currency Support: All financial forms now include currency dropdowns with blank options for bulk editing
- Inline Fields: Price and currency displayed together in forms using
InlineFields - Specialized Assignment Form:
AssetExternalInventoryAssignmentFormfor managing external inventory relationships without triggering full model validation - Dynamic Help Text: External inventory status field shows available codes from configuration
🔧 Improvements
Performance Optimizations
- Asset Probe Data Annotations: New
Asset.annotate_with_probe_data()method prevents N+1 queries- Uses efficient database joins for probe time and recent probe status
- Annotated fields:
annotated_last_probe_time,annotated_is_recently_probed
- Query Optimizations: Added
select_related()andprefetch_related()across all views- AssetListView: Optimized type, order_contract, assigned_object_type, external_inventory_items
- ProbeListView: Optimized device, site, location relationships
- ContractListView: Optimized contractor, parent relationships
- All other views similarly optimized
Database Changes
- Unique Constraints: Added unique constraint for
ExternalInventory.external_id(allows NULL) - Field Type Updates:
Asset.price: DecimalField (max_digits=19, nullable)Contract.price: DecimalField (max_digits=19, nullable)Invoice.price: DecimalField (max_digits=19, nullable)AssetService.service_price: DecimalField (max_digits=12, nullable)
- Default Values Removed: Price fields no longer default to 0, allowing proper NULL handling
Tags Field Updates
- Fixed Reverse Accessor Conflicts: All models now use unique
related_namefor tags to prevent conflicts with other plugins- Prevents Django's
fields.E304errors when multiple inventory plugins are installed
- Prevents Django's
GraphQL API
- Currency Fields Added: All GraphQL types now include currency fields
- Enhanced Filtering: Currency filters available in all relevant GraphQL queries
Validation Enhancements
- Asset Deletion Protection: Cannot delete assets with
order_contractor external inventory items - Contract Hierarchy: Subcontracts can have different contractors than parent (allows complex procurement)
- Date Validation: Improved invoicing date range validation across Contract and Invoice models
🗑️ Breaking Changes
None - This version maintains full backward compatibility with existing data and APIs.
📋 Configuration Changes
New Plugin Settings
PLUGINS_CONFIG = {
"inventory_monitor": {
# Currency Settings (NEW)
"currencies": [
("CZK", "Czech Koruna", "Kč"),
("EUR", "Euro", "€"),
("USD", "US Dollar", "$"),
("GBP", "British Pound", "£"),
("JPY", "Japanese Yen", "¥"),
],
"default_currency": "EUR",
# Existing settings...
"probe_recent_days": 7,
"external_inventory_status_config": {...},
}
}🐛 Bug Fixes
- Fixed template content caching issues for hierarchical asset views
- Resolved probe filtering issues with latest-only queries
- Fixed RMA serial number handling (NULL values now supported for draft RMAs)
- Corrected bulk edit form currency choices initialization
📚 Documentation Updates
- README.md: Complete rewrite with enhanced data model diagrams, string representations guide, and multi-currency documentation
- New RMA Workflow Documentation (
docs/rma-workflow.md): Comprehensive guide for RMA processes - Upgrade Guide: Added section for v12.0.0 migration (no manual steps required)
- Configuration Examples: Enhanced currency settings and field choice customization examples
🔄 Migrations
Applied Migrations
0002_alter_asset_options_alter_assetservice_options_and_more- Currency fields and ordering0003_assetservice_description_contract_description_and_more- Description fields0004_alter_asset_tags_alter_assetservice_tags_and_more- Tags field updates
🙏 Acknowledgments
This release brings NetBox v4 compatibility, multi-currency support, and significant performance improvements to the Inventory Monitor plugin. Special thanks to the NetBox community for the v4 migration guidance.
Full Changelog: v11.0.2...v12.0.0