Features/MCP Workflows/Excel/Excel requirements import

Excel requirements import

Most teams keep requirements in a spreadsheet. This moves them into a live model without losing your IDs, your structure, or whatever your team put in column K three years ago.

ExcelWrites to model

The problem this solves

Migration is the real switching cost. Most tool trials die at import: IDs get renumbered, hierarchy flattens, custom columns disappear, and nobody trusts the result enough to drop the spreadsheet. So the spreadsheet stays.

How it works

Import every row of your spreadsheet as a requirement, with your IDs kept exactly.

01
Read the sheet
It reads your xlsx or csv, including merged headers and multi-sheet workbooks, and shows you the columns it found.
02
Agree the mapping
You name which columns become the statement, the ID, the status, the parent, and which become custom attributes.
03
Create requirements
Every row becomes a requirement with your ID kept exactly, so references in your other documents still work.
04
Report what didn't fit
Unmapped columns, broken rows, and duplicate IDs are listed, never dropped quietly.

The prompt

You are importing requirements from a spreadsheet into the Dalus model
[model name]. The user's IDs, hierarchy and custom columns survive the
import intact. You write to the model only after the user approves the
mapping and the dry run.

INPUT: an uploaded .xlsx, .xlsm, .csv or .tsv. If none is present,
stop and ask for it. If the workbook has several sheets, list them
with row counts and a one-line description of what each appears to
hold, and ask which to import; never assume the first sheet.

INSPECT THE SHEET before anything else, and never assume a clean
table:
- Find the real header row. It is often not row 1: skip title blocks,
  logos, revision tables and blank rows above it.
- Detect merged cells, multi-row headers, frozen panes, filters and
  hidden rows or columns. Hidden rows are imported unless the user
  says otherwise, and are reported as hidden.
- Detect the ID column and its format, including zero-padded numbers,
  prefixes, and any separator implying hierarchy (REQ-1.2.3, 3.4.1).
- Detect the hierarchy mechanism: an outline-numbered ID, a parent-ID
  column, indentation in the text column, Excel grouping levels, or
  heading rows with no statement. Say which one you found.
- Detect a status, priority, verification, allocation or rationale
  column by content rather than by header wording alone.
- Detect rows that are section headings rather than requirements, and
  rows that continue the row above (wrapped text split across rows).
- Detect duplicate IDs, blank IDs, blank statements, and statements
  that look truncated.

MAPPING PROPOSAL, always, before writing anything. Report:
- the header row and column letters you will use;
- for every column in the sheet: the Dalus target it maps to, or
  "keep as attribute [name]", or "not imported" with the reason. Every
  column is accounted for explicitly. Never drop a column silently:
  anything you cannot map to a native field is preserved as a named
  attribute on the requirement, including whatever is in column K.
- the ID strategy: IDs are preserved exactly as written, including
  prefixes and padding. If Dalus assigns its own identifiers, the
  original is preserved as an attribute so the sheet and the model
  can always be reconciled.
- the hierarchy you inferred, shown as an indented tree of the first
  20 rows so the user can see it is right;
- row counts reconciled: total rows = requirements to create +
  heading rows + continuation rows + blank/skipped rows. State the
  arithmetic.
- data problems found: duplicate IDs, blank statements, suspected
  truncation, inconsistent ID formats, orphan parent references,
  units or values embedded in text that will not be parsed.
- a DRY RUN: the exact first five and last five requirements as they
  will be created, with every field populated, so the user can see
  the real result before committing.
Then ask exactly ONE question combining: is the mapping correct, and
should existing requirements with matching IDs be updated, skipped,
or duplicated. If the user replies "fast", proceed with the mapping
as proposed and skip existing IDs.

IMPORT RULES:
- Statements are imported verbatim. Never reword, expand, split, or
  clean up a requirement, even one that is badly written.
- Never invent an ID, a parent, a status or a value. A blank cell
  stays blank.
- Preserve the sheet's order within each hierarchy level.
- Heading rows become the structure they represent, not requirements
  with no statement.
- Continuation rows are joined to the requirement they belong to, and
  every join is reported.
- Attributes carry the source column name so the user recognizes
  them.
- If the sheet has a verification column, map its values to
  verification entries where they clearly correspond to a method;
  where they do not, keep the original text as an attribute rather
  than guessing a method.
- Import in batches, reporting progress. If a batch fails, stop,
  report what was created and what was not, and do not retry blindly.

AFTER THE IMPORT, report:
- created, updated, skipped and failed counts, reconciled against the
  source row count;
- the hierarchy as built, top two levels;
- every requirement whose import was lossy or ambiguous, with what
  was lost;
- a quality read on what was imported: statements that are not
  verifiable, compound requirements, missing tolerances, vague terms.
  Report these as findings only. Never fix them as part of an import,
  and offer (do not execute) a follow-up pass to clean them up.
- what is now missing to make this a usable model: allocation,
  verification, parent traceability, interfaces.

ROLLBACK: before writing, tell the user how to undo the import. If
the model supports branching or version control, propose importing on
a branch so the main model is untouched until they accept it. If it
does not, say plainly that the import cannot be automatically undone
and confirm before proceeding.

SAFETY: this workflow writes to the model. Nothing is created before
the mapping proposal and dry run are approved. If at any point the
sheet is too irregular to map with confidence, say so and ask rather
than guessing your way through 400 rows.

Replace the [bracketed] placeholders with your model and project names.

What you get

Requirements created in the model
Column mapping record
Exception report of unmapped and malformed rows
Dalus + Excel

Upload the workbook directly. Excel and CSV both work, as do exports from Jama, Valispace, DOORS, and Polarion when you export to a tabular format first.

Common questions

Will our requirement IDs change?
No. Preserving your IDs exactly is the point, and the prompt states it explicitly. Legacy IDs can also be kept as an attribute if you renumber later.
What about hierarchy and parent-child links?
If your sheet encodes hierarchy in an ID scheme or a parent column, the agent rebuilds it. Say which column carries it during the mapping step.
Can we do a dry run first?
Ask for the mapping and a preview of the first twenty rows before writing. That is the recommended way to import a large sheet.