Bulk Import (CSV and JSON)¶
This app follows Nautobot standard import workflows:
- CSV import via the built-in Import Objects system Job.
- JSON ingestion via Nautobot REST API automation.
Why this approach¶
Nautobot core standardizes UI-based data import through the Import Objects Job. This keeps validation, permissions, and serializer behavior consistent with the rest of Nautobot.
CSV Import (recommended UI workflow)¶
- Go to Jobs.
- Run System Jobs -> Import Objects.
- Select a content type from this app, for example:
- Frequency Management -> Frequency
- Frequency Management -> Mission Frequency Set
- Frequency Management -> Satellite
- Upload a CSV file.
- Enable rollback on error when you want all-or-nothing behavior.
CSV templates¶
Example templates are included in this repository:
- docs/media/import_templates/frequencies.csv
- docs/media/import_templates/frequency_sets.csv
CSV field guidance¶
- Use exact field names from the model/serializer.
- For choice fields, use internal values, not display labels.
- transport_type values: circuit, satcom, cellular, los, manet, other
- SATCOM-only fields should use values such as fdma/tdma/ofdm and qpsk/16qam/64qam.
- For foreign-key fields, use stable identifiers consistently (for example name where unique, or UUID where required by serializer behavior).
JSON Import (automation workflow)¶
Nautobot's built-in Import Objects Job is CSV-based. For JSON, use the REST API in automation pipelines.
Example JSON templates are included in this repository:
- docs/media/import_templates/frequencies.json
- docs/media/import_templates/frequency_sets.json
Recommended pattern¶
- Validate/transform JSON in your pipeline.
- POST records to API endpoints with token authentication.
- Use idempotent logic in your tooling (for example, check before create or use update semantics where available).
Example endpoints:
- /api/plugins/frequency-management/frequencies/
- /api/plugins/frequency-management/frequency-sets/
- /api/plugins/frequency-management/satellites/
Example JSON payload (frequency set)¶
{
"mission_number": "FS-1001",
"transport_type": "satcom",
"transport_subtype": "",
"band": "<band-uuid-or-serializer-accepted-reference>",
"tx_frequency_mhz": "14000.125",
"rx_frequency_mhz": "11700.875",
"status": "<status-uuid>",
"tenant": "<tenant-uuid>",
"access_method": "fdma",
"modulation": "qpsk",
"polarization": "rhcp",
"notes": "Imported by pipeline"
}
Validation expectations¶
Frequency Set validation is enforced on import the same as UI/API create:
- TX/RX must be within selected band.
- SATCOM transport_type requires access_method, modulation, and polarization.
- transport_type=other requires transport_subtype.
Operational best practices¶
- Start with small files and test in non-production.
- Keep rollback enabled for initial imports.
- Normalize references (Status/Tenant/Provider/Band/Satellite) before import.
- Track source file checksum and import run logs for auditability.