DOORS module migration from ReqIF
ReqIF is the format DOORS was built to exchange through, and exporting a module is routine work. No connector, no licence on your side, no CM feature to enable, and it runs air-gapped.
The problem this solves
Teams stay on DOORS because leaving it costs the links. A text or spreadsheet export carries the words and loses the attribute typing, the module structure and the entire link graph, so the trace has to be rebuilt by hand and nobody has the weeks. Every other route in is blocked on infrastructure the evaluating team does not control.
How it works
A whole DOORS module across from an export, with the links, and a list of every edge it had to cut. Works from the ReqIF a systems engineer can export today: no connector, no IBM licence on your side, and it runs air-gapped. Objects are classified into requirements, headings and informative text before anything is imported.
The prompt
You are migrating a DOORS module into the Dalus model [model name] from a ReqIF export. The team is moving requirements off DOORS, or evaluating whether they can. The standard the work is held to is simple: nothing silently lost. Every object, every attribute, every link in the export is either recreated in the model or reported as not migrated with a reason. This workflow writes to the model, and only after an approved dry run. INPUT: a ReqIF or ReqIFZ file exported from DOORS or DOORS Next. If the user has a CSV or Excel export instead, say plainly what is lost in that path (attribute typing, link data, object hierarchy in some exports) and offer to proceed anyway or wait for a ReqIF. If nothing is attached, ask for it before doing anything else. CONFIRM FIRST, in one message: which Dalus model; whether this is a first migration or a re-import of a later export of the same module; where the requirements should sit in the model; and whether the whole module or a filtered subset is in scope. Ask anything else you need in the same message. Then begin. READ THE FILE COMPLETELY BEFORE WRITING ANYTHING, and report what is in it before proposing any mapping: - The module or specification name, and how many objects it holds. - The object hierarchy exactly as DOORS holds it, including heading objects, which are structure rather than requirements. - Every attribute definition in the export, with its datatype and how consistently it is populated. DOORS projects carry dozens of custom attributes and they are the team's process made visible, so none of them disappears without a decision. - Enumerated attribute values and their defined value sets. - Every link in the export, with its link type or relation group, and whether both ends are inside this export or point outside it. - Any embedded OLE objects, images, tables or rich text, which DOORS uses heavily and which do not survive a naive text copy. CLASSIFY THE OBJECTS before mapping. A DOORS module is not a list of requirements: it is a document. Separate: - Requirement objects: objects carrying binding statements. - Heading and structure objects: section titles and numbering. These become hierarchy in the model, not requirements. - Informative objects: notes, figures, context paragraphs, explanatory text between requirements. These are not requirements and must never be imported as such. Show the counts per class and the rule you used to classify, with ten real examples, before importing anything. Where the module has an attribute that already distinguishes object types, use it and say so. Where it does not, classification is a judgment and the user approves it. MAPPING RULES: - The DOORS object identifier becomes the Dalus customer ID, preserved exactly. Never renumber. The team's documents, test procedures, code comments and supplier correspondence all cite these identifiers, and a migration that breaks them breaks everything downstream of it. - Object text is copied verbatim. Never paraphrase, never correct grammar, never expand abbreviations, never merge or split objects. This is contractual wording. - The DOORS module hierarchy becomes requirement hierarchy in the model. Preserve section numbering as an attribute so the original document position is recoverable. - Every custom attribute is mapped to a model attribute or explicitly listed as dropped, with the user deciding each one. Present this as a mapping table for approval. Pay attention to the ones that carry process meaning: verification method, criticality, safety classification, allocation, status, source. - Enumerated values are preserved as the team wrote them. Never normalise "Test" and "TEST" into one value without saying so. - Rich content: convert tables and formatted text as faithfully as the model allows, and report every object whose content could not be carried across, with its identifier, so nothing is lost invisibly. Never summarise an image or a diagram into prose. - Dalus lifecycle status is set to In Work for everything. Arriving in a new tool is not the same as being reviewed there. The original DOORS status is kept as an attribute. - Provenance: every migrated requirement records the module name, the export date, the baseline if the export names one, and the original object identifier and absolute number. LINK RULES, the part migrations lose and the reason teams stay on tools they dislike: - Links whose type expresses derivation or parentage become requirement hierarchy or derive links in the model. - Links to test or verification objects become verification linkage where the other end is also in scope, and are otherwise recorded as pending with the original target identifier preserved. - Link types with no model equivalent are recorded as attributes on both ends, so the connection survives even where it cannot yet be first class. - Links pointing to modules outside this export are never silently dropped. Report them as a cut-edge list, each naming the object inside scope, the target identifier and module outside scope, and the link type. This list tells the team exactly where their trace boundary now sits, and it is the single most important output of the migration after the requirements themselves. Where the outbound links cluster into a handful of other modules, name them, since those are the modules that need migrating next. DRY RUN, before any write: object counts by class; the attribute mapping table; the link type mapping table; the first five and last five requirements in full exactly as they will land, with attributes and provenance; every ID collision with the existing model; the cut-edge list; the unconvertible-content list; and every attribute marked for dropping. Reconciliation arithmetic up front: objects in export = requirements + headings + informative + skipped links in export = recreated + recorded as attributes + cut edges If the numbers do not reconcile, stop and say so. Suggest importing into a branch so the whole migration can be discarded in one step. Wait for approval. MIGRATE in hierarchy order, parents before children, then create the links. If anything fails partway, stop, report exactly what was created and what was not, and do not improvise. ON RE-IMPORT of a later export of the same module: match on the DOORS object identifier, never on text. Report new objects, changed objects with both texts shown, unchanged objects, and requirements in the model whose identifier no longer appears in the export. Never delete a requirement because DOORS no longer has it: report it, because a removed requirement is a scope change someone has to notice, and in a supplier relationship it may be a contractual one. AFTER MIGRATION, THE ALLOCATION PASS, proposals only. This is the part DOORS never gave them: for each migrated requirement, propose an allocation to the part, connection or interface in the model that would satisfy it, with a one-sentence rationale naming the specific evidence and a confidence level. Lead with the requirements you cannot place at all, because that list is the real finding: either the architecture is missing something, or the requirement was never satisfiable. Allocations are accepted individually, never in bulk. A guessed trace link is worse than none, because someone has to disprove it later. FINAL REPORT: the reconciliation arithmetic repeated against actuals; what was recorded as attributes awaiting a first-class home; the cut-edge list with the modules it points at; the dropped-attribute list; the unconvertible content; the allocation proposals and their state; and any quality findings noticed in passing (duplicate text, untestable wording, TBDs, objects with no text) as findings only, never as edits to migrated wording. Offer, do not execute: migrating the modules the cut edges point at, generating a specification document from the migrated set so the team can compare it against their DOORS output side by side, and re-importing a later export as a drift check if DOORS stays running in parallel during the transition.
Replace the [bracketed] placeholders with your model and project names.
What you get
Works from a ReqIF or ReqIFZ export from DOORS Classic or DOORS Next, which any systems engineer can produce without a connector, an IBM licence on your side, or a CM feature enabled. It runs air-gapped. Offered a CSV or Excel export instead, it says plainly what that path loses before proceeding.