Beta . Ortha CMS is in public beta. Every plan is free until it ends.
Get started
Menu

Delivery · 19 / 23

Export and import

Export records with one hop of what they reference, and import them back through a check that shows every change first.

Export 3 records Exports the selected records plus one hop of what they reference. Their own references are kept as links, not copied.
Format
JSONJSON LinesZIP archive (with files)CSV (flat)
Include
Related records One hop out — the records these ones link to.
Files Only a ZIP can carry the actual files.
All languages Every translation of the selected records.
Languages of related records Off by default — this multiplies the size.

3 records, 4 related, 2 files · 5.1 MB

Cancel
Exported 3 records to newsroom-export.zip.
Import records Nothing is written until you’ve seen what will change.
newsroom-export.zip
If a record is already here
Leave it alone
Check the file to see what would change. Checking…

1 to add · 1 to update · 2 skipped · 0 problems

RecordTypeWhat happens
Oslo’s seed library turns ten en article Create Nothing here matches it yet
Why libraries lend seeds now en article Update Matches an existing record
Mara Lind author Skip Already here — left untouched
Culture category Skip Already here — left untouched
Import

How it works

  1. 01

    Select records and pick JSON, JSON Lines, ZIP or CSV.

  2. 02

    Related records and files one hop away come along.

  3. 03

    Import checks the file first and shows what will change.

Formats
JSON, JSON Lines, ZIP, CSV
Graph
One hop of relations and files
Import
Nothing written until checked

In depth · For whoever moves content between systems

Move content between installations

Hand a translator a spreadsheet, move a section between installations or seed staging from production — with every import checked before it writes.

Exactly one hop

An export takes the records you selected, their languages, and every record one relation away. Records two hops out stay as references, so one article never drags in the whole library. The dialog shows the counts before you download.

Under the hood

Four toggles decide what comes along: related records, file bytes, the selected records’ other languages, and the related records’ other languages.

Four formats

Format What it carries
JSON One lossless document, any number of types.
JSON Lines One record per line; lossless and streams.
ZIP Records plus asset bytes; the only format with files.
CSV A flat table per type; lossy, and says so.

Every write goes through the same writer

An import writes through the service the editor and the delivery API use, with the same validation, workspace scope and revisions. It re-checks your own permissions on every record, so an import can never do more than you could by hand.

Under the hood

Dry run and apply are one pipeline, so the Create, Update, Skip and Problem verdicts describe what the apply will do. The apply runs in one transaction.

Two import files arriving at one check, the entry writer, which enforces validation, workspace scope, relation targets and the caller’s permissions before anything reaches the workspace.

An import passes the same checks as an editor’s save.

Matched on natural keys

Re-run safely
Records match on the fields that identify them, so importing a file twice updates instead of duplicating.
Language is part of the key
The English and German versions of an article travel as two records and stay apart.
Related records link by default
A related record that already exists is linked, not duplicated or overwritten.

Questions

Can I export the whole library?

Not in one request: exports stop at five thousand records by default. For a backup use your database tooling; this is for moving content.

Can an untrusted file hurt the server?

Archive sizes, entry counts and compression ratios are checked before anything is inflated, and paths that climb out are rejected.

Who may do it?

Export and import are their own permission keys, granted to contributors and administrators.

Full reference in the docs