> 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/overview/supported-datanorm-versions.md).

# Supported DATANORM Versions

## Overview

<table><thead><tr><th width="200">Version</th><th width="150">Import</th><th width="150">Export</th><th>Note</th></tr></thead><tbody><tr><td><strong>DATANORM 4.0</strong></td><td>yes</td><td>yes</td><td>Article data is split across an A and a B record that belong together.</td></tr><tr><td><strong>DATANORM 5.0</strong></td><td>yes</td><td>yes</td><td>All article details sit in the A record. Recommended version.</td></tr></tbody></table>

## Automatic detection

The version is determined from the **header record** (V record) as the file is read, so you never have to specify it.

The app recognises the version from the **shape** of the first line that starts with `V`:

<table><thead><tr><th width="200">Version</th><th>Detection</th></tr></thead><tbody><tr><td><strong>DATANORM 4</strong></td><td>The V record contains <strong>no</strong> semicolon. It is a fixed 128-character line.</td></tr><tr><td><strong>DATANORM 5</strong></td><td>The V record is semicolon-separated and starts with <code>V;050;</code>.</td></tr></tbody></table>

{% hint style="info" %}
The **Default DATANORM Version** setting only applies to **export**. For import, the value in the file always wins.
{% endhint %}

## The header record (V record)

The first data line of a valid file must be a V record. If it is missing, the app treats the file as DATANORM 5 and warns that the result may be wrong for a V4 file.

### DATANORM 4 — fixed 128 characters, no semicolon

The V4 header is **not** a semicolon-separated line. Fields sit at fixed positions. That is how export writes the line, and how import reads the date and currency.

<table><thead><tr><th width="140">Position</th><th width="90">Length</th><th>Contents</th></tr></thead><tbody><tr><td>1</td><td>1</td><td><code>V</code></td></tr><tr><td>2</td><td>1</td><td>Space</td></tr><tr><td>3–8</td><td>6</td><td>Creation date <code>DDMMYY</code></td></tr><tr><td>9–48</td><td>40</td><td>Info 1, usually supplier or file name</td></tr><tr><td>49–88</td><td>40</td><td>Info 2</td></tr><tr><td>89–123</td><td>35</td><td>Info 3 / reserved</td></tr><tr><td>124–125</td><td>2</td><td>Version number <code>04</code></td></tr><tr><td>126–128</td><td>3</td><td>Currency, for example <code>EUR</code></td></tr></tbody></table>

Exact header from the sample delivery (128 characters, ending in `04EUR`):

```
V 290126Wannentechnik                                                                                                      04EUR
```

A file with A records appends the article lines **after** this header. In DATANORM 4 the A and B record belong together; the article lines themselves are semicolon-separated:

```
V 290126Wannentechnik                                                                                                      04EUR
A;A;0020001000002;40;Raumsparwanne Nevada links 170x75x43 cm; pergamon   ;1;0;ST;67700;001;001;T1;
B;A;0020001000002;Nevada-l-pe;;;0;;;4250879415061;;Badewannen;;1;;;
```

This is the first line of the sample delivery (Wannentechnik catalogue).

{% hint style="warning" %}
If the V record contains a semicolon — for example because the line is built like a V5 header — the app detects **DATANORM 5**. A V4 header must not contain `;`.
{% endhint %}

### DATANORM 5 — semicolon-separated

For comparison, the V5 header from the same demo delivery:

```
V;050;;20260724;EUR;Solutioo Demo Lieferant;;;;;
```

Fields: record type, version number `050`, data mark, date `YYYYMMDD`, currency, description.

## The key difference

In DATANORM 4 an article is described across two lines: the A record carries description, price and unit, the B record carries additional details such as EAN, match code, catalogue page or copper weight. Both belong to the same article number.

The app merges the A and B record into **one** staging record. A file with 4,637 articles therefore produces 4,637 staging rows, not 9,274.

In DATANORM 5 those details are already in the A record; there is no B record.

The full comparison is under Differences Between DATANORM 4 and 5.

## Files and naming conventions

A DATANORM delivery usually consists of several files with meaningful extensions:

<table><thead><tr><th width="260">File</th><th>Contents</th></tr></thead><tbody><tr><td><code>DATANORM.001</code>, <code>DATANORM.002</code> …</td><td>Article data. Numbered sequentially for large catalogues.</td></tr><tr><td><code>DATPREIS.001</code></td><td>Price change only, for articles already delivered.</td></tr><tr><td><code>*.RAB</code></td><td>Discount groups.</td></tr><tr><td><code>*.WRG</code></td><td>Product groups.</td></tr></tbody></table>

{% hint style="warning" %}
Only read a price change file **after** the matching articles have been imported. Otherwise the price records have no article to attach to.
{% endhint %}

## Character set

DATANORM files are traditionally DOS-encoded (code page 437/850). The app reads them accordingly so that umlauts in article descriptions arrive intact. Do not open and save a file as UTF-8 in a text editor before importing it – that loses the umlauts.


---

# 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/overview/supported-datanorm-versions.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.
