> For the complete documentation index, see [llms.txt](https://docs.solutioo.de/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.solutioo.de/datanorm-item-import/datanorm_en_us/importing-datanorm-files/import-process.md).

# Import Process

Every import runs through the same four phases, whether you upload the file manually or have it collected via SFTP.

## The four phases

{% stepper %}
{% step %}

#### Read

The app reads the file line by line, detects the DATANORM version from the header record and assigns each line to its record type. An **import session** is created that holds the whole operation together.
{% endstep %}

{% step %}

#### Stage

The recognised data lands in intermediate tables: articles in **Article Staging**, prices in **Price Staging**, sets in **Part Lists**, plus texts, product groups and discount groups. At this point the item master is untouched.
{% endstep %}

{% step %}

#### Review and approve

The app flags possible duplicates and errors. You decide which records are applied. See [Reviewing and Approving Staging](/datanorm-item-import/datanorm_en_us/importing-datanorm-files/review-staging.md).
{% endstep %}

{% step %}

#### Synchronise

Approved records become items, purchase price list lines and assembly BOMs.
{% endstep %}
{% endstepper %}

{% hint style="info" %}
Staging is the reason a faulty supplier export cannot damage your item master: you see the data before it takes effect.
{% endhint %}

## Import session status

<table><thead><tr><th width="260">Status</th><th>Meaning</th></tr></thead><tbody><tr><td><strong>Pending</strong></td><td>The session exists, processing has not started.</td></tr><tr><td><strong>Processing</strong></td><td>The file is being read.</td></tr><tr><td><strong>Completed</strong></td><td>All lines were processed without error.</td></tr><tr><td><strong>Completed with Errors</strong></td><td>The file was processed, but individual lines could not be read.</td></tr><tr><td><strong>Error</strong></td><td>Processing was aborted, for example because the file is unreadable.</td></tr><tr><td><strong>Cancelled</strong></td><td>The session was cancelled manually.</td></tr></tbody></table>

## Staging record status

<table><thead><tr><th width="260">Status</th><th>Meaning</th></tr></thead><tbody><tr><td><strong>New</strong></td><td>Imported, not yet assessed.</td></tr><tr><td><strong>Review</strong></td><td>Waiting for your decision, usually because of a possible duplicate.</td></tr><tr><td><strong>Approved</strong></td><td>Cleared to be applied.</td></tr><tr><td><strong>Rejected</strong></td><td>Will not be applied.</td></tr><tr><td><strong>Synced</strong></td><td>Transferred to the item master.</td></tr><tr><td><strong>Error</strong></td><td>Applying it failed; the cause is on the record.</td></tr><tr><td><strong>Skipped</strong></td><td>Deliberately not processed, for example a set line with no matching item.</td></tr></tbody></table>

## Large files

Above the line count in **Background Threshold** – shipped as 1,000 – the app processes the file in a background session. You can carry on working and follow progress on the import session. **Batch Size** determines how many lines are processed per block.

## Order of multiple files

A delivery often consists of several files. This order has proven itself:

{% stepper %}
{% step %}

#### Groups first

`.WRG` (product groups) and `.RAB` (discount groups), so that articles and prices find the groups already in place.
{% endstep %}

{% step %}

#### Then the articles

`DATANORM.001` and, where applicable, the follow-up files `.002`, `.003` in ascending order.
{% endstep %}

{% step %}

#### Price changes last

`DATPREIS.001`. This file assumes the articles already exist.
{% endstep %}
{% endstepper %}

{% hint style="warning" %}
Reading a price change file before the articles produces price records with no matching article. They stay in staging without effect.
{% endhint %}

## Next

<table><thead><tr><th width="330">Topic</th><th>Page</th></tr></thead><tbody><tr><td>Upload a file manually, pick the vendor</td><td><a href="/pages/qHrAckmrOtSyaBrwHObM">Manual Import and Vendor Assignment</a></td></tr><tr><td>Collect files automatically</td><td><a href="/pages/rlwBxNkLKCG3C02YPAqo">Automated SFTP Import</a></td></tr><tr><td>Assess and approve staging</td><td><a href="/pages/rNned8le9TNHho0BgrAw">Reviewing and Approving Staging</a></td></tr><tr><td>Understand duplicates</td><td><a href="/pages/PPZh0TyWjWyB3FBvQ1D0">Duplicates and Validation</a></td></tr><tr><td>A complete walkthrough with sample files</td><td><a href="/pages/k64ItFlEzPii4c9KHH7G">Example Import</a></td></tr></tbody></table>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.solutioo.de/datanorm-item-import/datanorm_en_us/importing-datanorm-files/import-process.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
