> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ferrufino-tech-solutions.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Import legacy data

> How to move existing failure reports into FTS. CSV import does not exist yet — this page describes the planned shape and the manual route that works today.

<Warning>
  **CSV import does not exist yet.** There is no **Tools** entry in the sidebar,
  no import screen and no import endpoint — everything on this page describes
  planned behaviour, not current behaviour. To move existing records in today,
  create the cases by hand, or write to
  [support@ferrufino-tech-solutions.com](/en/contact) and we will discuss a
  one-off migration. This page is kept because the CSV shape below is the one we
  would build against.
</Warning>

Already have a spreadsheet of past incidents or failure reports? This page
describes how a CSV import would work.

## Preparing your CSV

Create a CSV file with the following columns (all optional except **title**):

| Column            | Type     | Example                          | Notes                                                                 |
| ----------------- | -------- | -------------------------------- | --------------------------------------------------------------------- |
| `title`           | String   | Connector burn failure           | Required; max 200 characters                                          |
| `observation`     | String   | Detailed incident description    | Required; max 10000 characters                                        |
| `root_cause`      | String   | Contact surface worn through     | Optional; max 10000 characters                                        |
| `resolution`      | String   | Connector replaced and retorqued | Optional; max 10000 characters                                        |
| `tags`            | String   | `connector,hardware,batch`       | Comma-separated; no spaces                                            |
| `created_at`      | ISO 8601 | `2025-12-15T10:30:00Z`           | Optional; defaults to import date                                     |
| `status`          | String   | `DRAFT`                          | Optional: `DRAFT`, `IN_REVIEW`, `VERIFIED`, `PUBLISHED`, `DEPRECATED` |
| `severity`        | String   | `high`                           | Optional: `critical`, `high`, `medium`, `low`                         |
| `attachment_urls` | URL      | `https://example.com/photo.jpg`  | Optional; one URL per row                                             |

<Note>
  These column names and values are the ones a case actually has. A case has
  three text fields — **Observation / Symptoms**, **Root Cause** and
  **Resolution / Steps Taken** — not one free-text body, and its status is one of
  the five values above. An earlier version of this table promised a `body`
  column with a five-thousand-character limit, a numeric `severity` scale and the
  statuses `open` / `resolved` / `in-progress`. None of those exist: the field
  limits come from `createCaseSchema`, the statuses from `enum CaseStatus` and
  the severity values from the organisation's taxonomy, which is a list of words
  and not a scale. (Until 06.08.2026, this said "workspace taxonomy"; the taxonomy
  is keyed by organisation, not by workspace.)
</Note>

<Tip>
  Keep file size under 50 MB. If you have more data, split into multiple CSV files and import separately.
</Tip>

## CSV import process

<Warning>
  **Everything from here to the end of the page is the design, not a procedure.**
  The steps below are written in the imperative because that is how the screens
  would read once they exist. None of the controls they name — **Tools**,
  **Import Data**, **Choose File**, **Apply Mapping**, **Import**,
  **Resolve Issues** — is in the product today; every one of them is recorded as
  missing in `docs/D64-FEATURE-CLAIMS.md` against the same open decision (#87)
  that the box at the top of this page describes. Do not follow these steps
  expecting to find the screens.
</Warning>

<Steps>
  <Step title="Prepare your CSV file">
    Follow the format above. Save as `.csv` (UTF-8 encoding recommended).
  </Step>

  <Step title="Go to Import">
    In your workspace, click **Tools** (bottom of sidebar) → **Import Data**. You'll see the import dialog.
  </Step>

  <Step title="Upload your CSV">
    Click **Choose File** and select your CSV. FTS will preview the first 5 rows to validate format.

    <Warning>
      If column names don't match exactly, FTS will ask you to map them manually before proceeding.
    </Warning>
  </Step>

  <Step title="Validate & map fields">
    Review the preview. If columns are misaligned:

    * Click each column header
    * Select the corresponding FTS field (or "Skip")
    * Click **Apply Mapping**
  </Step>

  <Step title="Confirm import">
    FTS shows a summary: "Ready to import 247 cases." Click **Import** to begin.

    During import, FTS validates each row:

    * Duplicate titles are flagged (same title + same tags)
    * Missing required fields are reported
    * Attachment URLs are checked for accessibility

    Click **Resolve Issues** if errors appear, or skip flagged rows.
  </Step>

  <Step title="Review imported cases">
    After import completes, all cases appear in your **Cases** list. They arrive in
    the **Draft** status like any other new case, and each one still has to be
    submitted for review and verified before it is published. There is no
    "imported" badge and no separate marking — an earlier version of this page
    promised one, and the case list has no such badge.
  </Step>
</Steps>

## Handling duplicates

If FTS detects a duplicate (same title + tags already in workspace):

* **Merge**: Combine the two cases (new data overwrites old)
* **Rename**: Append a suffix (e.g., "Connector failure v2") and import as new
* **Skip**: Don't import this row

Choose per-row in the **Resolve Issues** view.

<Note>
  The import is transactional—if critical errors occur, no cases are added and you can re-upload after fixing your CSV.
</Note>

## Bulk attachment import

For files (photos, logs, PDFs):

1. Create a folder on your web server (e.g., `https://example.com/fts-imports/`)
2. Upload all attachments there
3. In your CSV, add URLs: `https://example.com/fts-imports/photo_batch_2847.jpg`

FTS fetches each URL during import. Large files (>100 MB) may time out—split into smaller chunks.

<Warning>
  This is a data-protection fact, not a feature note. On the **Team** plan and
  above, FTS reads uploaded images and PDFs with text recognition shortly after
  upload, and **the file itself is sent to Anthropic in the United States** for
  that step. In a legacy migration that applies to **every** photo and PDF you
  attach. Your database and your files are stored in the EU; this one step is
  not. If a document must never leave the EU, do not attach it as evidence. The
  detail is on [Evidence](/en/features/evidence).
</Warning>

## Post-import cleanup

After import, spend 15–30 minutes reviewing:

* Add missing tags for discoverability
* Fix formatting inconsistencies
* Update statuses to reflect current state
* Invite team members to review and comment

## Related pages

<CardGroup>
  <Card title="Create your first case" href="/en/guides/first-case" />

  <Card title="Data export" href="/en/account/data-export" />

  <Card title="Integrations" href="/en/guides/integrations" />
</CardGroup>
