Jama baseline migration
Migrations are judged on one thing: what went missing. This holds itself to that standard. Every item, every field and every trace link is either recreated in the model or listed as not migrated with a reason.
The problem this solves
Tool migrations lose the links. Items come across and the relationships between them do not, or they do until the boundary of what you selected, where every edge pointing outward is quietly cut. Nobody notices until an audit asks for the trace, by which point the old tool has been switched off.
How it works
A whole baseline across, with the trace links, and a list of every edge it had to cut. Items, hierarchy, custom fields and relationships recreated with the Jama IDs preserved, behind a dry run that reconciles item and link counts before anything is written.
The prompt
You are migrating a baseline from Jama into the Dalus model [model name]. This is the workflow a team runs when it is moving its requirements off Jama, so the standard it is held to is simple: nothing silently lost. Every item, every attribute, every trace link in the baseline 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. CONFIRM FIRST, in one message: which Dalus model, which Jama project, and which baseline (name or ID, and whether the current working version or a fixed baseline snapshot). Also ask: should the whole baseline come across or a filtered set (an item type, a component, a release), and is there an existing requirement set in the model this should merge into or is it landing clean. Ask anything else you need in the same message. Then begin. READ JAMA FIRST, completely, before writing anything: - Every item in the baseline with its ID, name, description, item type, status, and all custom fields. List the custom fields you found and what you will do with each one. - The hierarchy: parent-child structure exactly as Jama holds it. - The relationships: every upstream and downstream link between items in scope, with the relationship type Jama records (derives from, verified by, related to, or the project's custom types). Also record links that point OUTSIDE the baseline scope, since those are the ones migrations silently cut. - Verification method and any verification-related fields. - Which Jama baseline and revision each item came from. READ THE MODEL: existing requirements and their customer IDs (to detect collisions), existing parts and connections (for the allocation pass later), and the attribute conventions already in use so imported attributes match rather than inventing a parallel scheme. MAPPING RULES: - Jama ID becomes the Dalus customer ID, preserved exactly, including prefix and separators. Never renumber. - Statement text is copied verbatim. Never paraphrase, never fix grammar, never expand abbreviations. The requirement wording is contractual material. - Hierarchy in Jama becomes requirement hierarchy in the model. - Verification method maps to the model's verification method field. Where Jama's vocabulary differs from the model's, show the mapping table and get it approved rather than guessing. - Jama status is recorded as an attribute; the Dalus lifecycle status is set to In Work for everything, because arrival in a new tool is not the same as being reviewed there. - Every custom field is either mapped to a model attribute or explicitly listed as dropped, with the user deciding. No field disappears without a decision. - Provenance: every migrated requirement records the Jama project, baseline, item ID and revision it came from. TRACE LINK RULES, the part migrations get wrong: - Parent-child and derives-from relationships become requirement hierarchy or derive links in the model. - Verified-by relationships to test items become verification linkage where the test side is also being migrated, and are otherwise reported as pending. - Relationship types with no model equivalent are recorded as attributes on both ends so the connection survives even if it cannot yet be first-class. - Links pointing outside the migrated scope are never silently dropped: report them as a list of cut edges, each naming the item inside scope, the item outside scope, and the relationship type, so the team knows exactly where the trace boundary now is. DRY RUN, before any write: report item counts by type, the field mapping table, the relationship mapping table, the first five and last five items in full as they will land, every ID collision with the existing model and what you propose for each, every cut edge, and every field marked for dropping. Reconciliation arithmetic up front: items in baseline = items to migrate + items excluded, links in baseline = links recreated + links recorded as attributes + cut edges. If the numbers do not reconcile, stop and say so. Suggest the user run this into a branch so the whole migration can be discarded in one step if the result is wrong. 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. AFTER MIGRATION, THE ALLOCATION PASS, proposals only: for each migrated requirement, propose an allocation to the part or connection that would satisfy it, with a one-sentence rationale and a confidence level. Lead with the requirements you cannot place at all, because the unplaceable list is the real finding: it is either missing architecture or requirements that were never satisfiable. Allocations are accepted individually by the user, never applied in bulk. A guessed trace link is worse than none, because someone has to disprove it later. FINAL REPORT: what was migrated with the reconciliation arithmetic repeated against actuals, what was recorded as attributes awaiting a first-class home, the cut-edge list, the dropped-field list, the allocation proposals and their acceptance state, and any quality findings noticed in passing (duplicate statements, untestable wording, TBDs) — as findings only, never as silent edits to the migrated text. Offer, do not execute, a follow-up drift check against Jama in a few weeks if the team keeps Jama running in parallel during the transition.
Replace the [bracketed] placeholders with your model and project names.
What you get
Reads a named baseline or the current working versions, with the relationship graph and version provenance intact. Every migrated requirement records the Jama project, baseline, item ID and revision it came from, so the two can still be reconciled afterwards. Running the migration onto a branch is suggested so the whole thing can be discarded in one step.