login Register forgot password or username?
Search:         
Cradle from 3SL, the complete Model Based Systems Engineering Toolsuite, specialising in requirements management, requirements capture, model based systems engineering and for systems engineering software, support and consultancy, the logical choice: Cradle from 3SL.

January 2010 [Cradle 6.1]

Migrating Data from DOORS

There are several approaches to migrating data from IBM Rational® DOORS®, into Cradle:

  • Word documents
  • AP233 files
  • CSV files

Other possibilities will appear when the Cradle Gateway module is released.

Each approach has its advantages and disadvantages:

  1. Word documents allow all types of information to be moved from DOORS into Cradle but involve the most work:
    • Devising a suitable output document format that includes the information to be moved (for example, user and system requirements) and also the cross references between these pieces of information (ideally done as individual tables)
    • Creating the output document format in DOORS
    • Using Cradle Document Loader to load both the requirement information and the cross reference information
  2. AP233 format only supports text based requirements, as originally defined for the AP233 application protocol within STEP (ISO 10303). This does include the cross references within a hierarchy of information of the same type (such as the hierarchy of user requirements) but does not include a full set of attributes and does not include cross references between different types of information
  3. CSV files do not allow binary data (such as figures or pictures) to be moved, but can support all other types of data and can also support all of the cross references between pieces of information. It is a little time consuming to set up.

When migrating data from DOORS into Cradle, it is important to understand that the basic unit of data in DOORS is the module, and that there are two types of modules relevant to data migration:

  • Object modules that contain the pieces of information, which DOORS calls objects
  • Link modules that contain some of the cross references

It is also important to understand that there are two types of cross references in DOORS:

  • Internal cross references between objects in an object module
  • External cross references between objects in one object module and objects in another object module, these external cross references are held in an individual link module

So to migrate one set of information from DOORS to Cradle, we need to migrate:

  • The objects from the object module
  • The internal cross references from the same object module

As an example, for a set of user requirements, the information could be:

and we would load these two sets of data into Cradle:

  • The objects would become items of a user-defined item type (a system note)
  • The cross references would become cross references in Cradle between these system notes to create the hierarchical links

And to migrate two related sets of information from DOORS to Cradle, we need to migrate:

  • The objects from the first object module
  • The objects from the second object module
  • The internal cross references from the first object module
  • The internal cross references from the second object module
  • The external cross references from the link module between the two object modules

As an example, for a set of user requirements in one module linked to a set of system requirements in a second module, the information could be:

Thankfully, everything is much simpler in Cradle:

  • The objects would become items of two user-defined item types (system notes)
  • The three different sets of cross references would become cross references in Cradle, since Cradle does not need to distinguish between internal links (to create hierarchies) and external links (between types of information)

Migrating Object Modules

Construct a view that shows the attributes of the objects that you want to export and select File → Export → Spreadsheet… and in the Export Spreadsheet – DOORS dialog, select Displayed columns and All objects and Include attribute names/column titles in first row:

You can also select the attributes to export from an attribute list.

Select Export and DOORS creates a CSV file containing all of the objects in the module (or all of the objects that you chose to display). There will be one record in the CSV file for DOORS each object, that is, one CSV record for each piece of information that will become an item in Cradle.

In the above example, you would do this step twice, once from the user requirements module and once for the system requirements module.

When you create each export, be sure to export the requirements’ IDs. In DOORS, this is the Object ID attribute, which DOORS guarantees to be unique. This is the value that will be used to create cross references in Cradle.

The typical mappings between DOORS and Cradle attributes is:

  • The object module name will typically become the system note Type attribute in Cradle
  • The Object ID in DOORS will become the Number attribute in Cradle
  • The Object Number in DOORS stores a hierarchical number, this will become the Key attribute in Cradle
  • The Object Name in DOORS stores the names of non-bottom-level requirements (section and subsection headings in a requirements document). This will become the Name attribute in Cradle.
  • The Object Text in DOORS stores the requirement statement. This will become the TEXT frame in Cradle.

The CSV files produced by this process can be imported directly into Cradle.

Migrating Internal Links

To export the internal cross references for each module, you need a view that lists each object that has a parent in the module, and that parent. Since DOORS does not allow an object to have multiple parents inside a module (DOORS does not allow many-to-many linking inside a module, which is a disadvantage of DOORS that is helpful in this context!), an object can have at most one parent.

You display these objects in a view with two columns:

  • In the first column, you display the Object ID of the object found by the filter, this will become the to end of the cross reference when it is imported into Cradle
  • In the second column, you display the Object ID of the parent object, this will become the from end of the cross reference when it is imported into Cradle

You repeat this process for each module to be migrated.

Migrating External Links

The external cross links between items in separate object modules are held inside link modules. You cannot export the link module directly, but you can create a view that uses the link module to display the linked items from the two modules.

You need to run a filter that lists only those objects in the first module that are linked to objects in the second module, and then display these objects in a view with two columns:

  • In the first column, you display the Object ID of the object found by the filter, this will become the from end of the cross reference when it is imported into Cradle
  • In the second column, you display the Object ID of the linked object in the other module, this will become the to end of the cross reference when imported into Cradle

You repeat this process for each link module to be migrated.

Preparing the Cross Reference CSV Files

When you have produced CSV files with each set of internal and external links, you must add some extra columns to allow them to be imported into Cradle. This is because Cradle needs more than a pair of IDs to import cross references.

To import a cross reference from a CSV file, Cradle needs:

  • The Baseline, which will be empty as you will import into the current cross reference set
  • The Xref Type, which will be NOTE_NOTE as you will be importing cross references between system notes
  • The From Model Namespace, which is not needed as it only applies to models
  • The From Type, which will be the system note type name for the from end of the cross references, typically based on the name of the source object module in DOORS
  • The From Number, which will have been exported from DOORS
  • The Link Type, which can be empty if you want the cross references to have an empty link type, or it can be one of the link types defined in your project schema, which may be based on the DOORS link module name
  • The To Model Namespace, which is not needed as it only applies to models
  • The To Type, which will be the system note type name for the to end of the cross references, typically based on the name of the linked object module in DOORS
  • The To Number, which will have been exported from DOORS

As an example, starting with the set of external links from the previous example, the export from DOORS would produce a CSV file which, when opened in Excel, would be:

Rename the columns to be From Number and To Number so that it is easier to import:

Add the other columns needed to import cross references:

  • Baseline
  • Type
  • From Model Namespace
  • From Type
  • Link Type
  • To Model Namespace
  • To Type

The order does not matter:

Add the values for the new columns:

  • Baseline - no value, leave it empty
  • Type – set to NOTE_NOTE to create cross references between system notes
  • From Model Namespace - use the value MH_IGNOREMODEL
  • From Type – the type of the source system notes, in this case UR
  • Link Type – specify the link type, in this example, leave it empty
  • To Model Namespace - use value MH_IGNOREMODEL
  • To Type – the type of the linked system notes, in this case SR

The data in the resulting CSV file would be:

,NOTE_NOTE,MH_IGNOREMODEL,UR,UR4,,MH_IGNOREMODEL,SR,SR4
,NOTE_NOTE,MH_IGNOREMODEL,UR,UR7,,MH_IGNOREMODEL,SR,SR2
,NOTE_NOTE,MH_IGNOREMODEL,UR,UR8,,MH_IGNOREMODEL,SR,SR8
,NOTE_NOTE,MH_IGNOREMODEL,UR,UR8,,MH_IGNOREMODEL,SR,SR14

When this CSV file is opened in Cradle, the fields are automatically assigned:

The cross references will be imported when you select OK:

You can verify the cross references that have been imported by selecting Log… to display the import log:

You would use this process for all cross reference exports from DOORS, both the internal links and the external links.