Description
DNG stores the mapping between DNG elements (e.g. modules, artefacts, attributes) and ReqIF IDs in the "DNG ReqIF Mapping Table". There are currently no ways to edit this mapping table, either via the DNG API or the GUI.
The DNG API shall provide the following functionalities for entries in the DNG ReqIF Mapping Table:
-Read / Get (i.e. read a specific entry or set of entries based on various search criteria (criteria similar to SQL or XPath queries (depending how the ReqIF Mapping table is implemented within DNG)))
-Create (i.e. create a new entry, e.g. "Module 12345 is mapped to ReqIF ID abc")
-Modify (i.e. modify a specific existing entry, e.g. "Module 12345 was previously mapped to ReqIF ID ghj, now it is mapped to ReqIF ID abc")
-Delete (i.e. delete a specific existing entry)
All of the functionalities that change the DNG ReqIF Mapping Table (i.e. Create, Modify, Delete) shall have checks that ensure that the changes to the DNG ReqIF Mapping Table do not cause any inconsistencies. Examples:
-We try to create an entry for module 123, but there already is an existing entry for module 123 => error (A DNG element cannot have more than one ReqIF ID.)
-We try to change the ReqIF ID of module 123 to abc, but another DNG element already has ReqIF ID abc => error (A ReqIF ID cannot be assigned to more than one DNG element.)
-We try to use an invalid ReqIF ID (invalid because we use invalid characters in the ReqIF ID) => error
We are aware that editing the DNG ReqIF Mapping Table is potentially very dangerous / can have a large negative impact on DNG if it is done incorrectly. Because of this we also want to request an additional feature:
-A history for all changes to the DNG ReqIF Mapping Table (e.g. "On 2023.09.09, user XYZ did the following change to entry with internal ID 890: ReqIF for Module 12345 was changed from ReqIF ID ghj to abc")
-The history shall include the following information for each change to an entry:
*Time and date of change
*User that did change
*Internal ID of entry (or whatever unique ID DNG uses for entries in DNG ReqIF Mapping Table)
*Type of change (Create, Modify, Delete)
*For Create / Delete: Full data for entry, i.e. all fields and their value for entry
*For Modify: Which field / column changed? What was the old value? What is the new value?
-The history shall also exist for entries that no longer exist in the table / were deleted; i.e. if an entry is deleted, the History for this entry should not be deleted and shall remain in the History
DNG shall provide the following API for the DNG ReqIF Mapping Table History
-Get / read parts of the history based on various search criteria (similar to SQL or XPath queries (depending how the ReqIF Mapping table is implemented within DNG) , e.g. GET history for a specific DNG element, for a specific ReqIF ID, for a specific time frame, etc.)
-It shall be possible to Read the former value of an entry; It shall be possible to then Write that former value back into the DNG ReqIF Mapping Table (i.e. format of value we read from History is the same format of value we can write to DNG ReqIF Mapping Table)
The intention is that it should be possible to restore / undo unintended changes to the DNG ReqIF Mapping Table by going through the History, then restoring the entry (either via Create or Modify) with the DNG API for the DNG ReqIF Mapping Table.
Alternatively, DNG could also provide DNG API "Restore" / "Undo" functionality for the History, which would directly "restore" an entry of the DNG ReqIF Mapping Table based on a History entry.
This is meant to mitigate the risks of directly changing such a fundamental table as the DNG ReqIF Mapping Table, by enabling uns to undo such changes.
DNG shall also make this available via the DNG Public API. The corresponding DNG API shall be public and documented.
Additional note regarding implementation:
If, due to the technical implementation in DNG, it is only possible to Read / Get the entire ReqIF Mapping Table as well as only Write / Put the entire ReqIF Mapping Tbale (instead of just reading / writing single or some entries of the table), then implementing the above functionality for reading and then writing the entire table would also be acceptable.
However, we would prefer DNG API that works on single entries / a subset of entries from the entire ReqIF Mapping Table, as this would likely be better for performance and easier for implementation.
Motivation / Reason
DNG API to edit the DNG ReqIF Mapping Table would enable users / developers to better support a variety of Use cases.
Some examples:
Migration from DOORS Classic to DOORS Next; User has ongoing ReqIF exchange in DOORS Classic
-Normally, when we migrate data from DOORS Classic to DOORS Next, all elements get new ReqIF Ids in DOORS Next / DNG no longer "knows" the ReqIF ID that were in use in DOORS Classic
-This causes a disrpotion / break of the exchange as the ReqIF IDs are entirely new
-If our side is the OEM / Customer / Original author of the modules: The other side has to import our exports from DNG as new modules (as the Req IFs are new)
-If our side is the Supplier / not the original author of the modules: We have to import the export from the other side as new modules (as DNG does not "know" the Req IFs that were in use in DOORS Classic)
-In both cases, this causes considerable effort; which often makes users hesitant to migrate from DOORS Classic to DOORS Next
-DNG API to edit the DNG ReqIF Mapping Table would enable users / developers to "transfer" the ReqIF IDs that were in use in DOORS Classic into DNG (e.g. if DOORS Classic Module "123" had ReqIF ID "abc" in DOORS Classic, matching migrated module in DOORS Next "456" shall also have ReqIF ID "abc" in DOORS Next)
Correction of ReqIF IDs in general
-Possibility to correct ReqIF IDs if tool that was exporting to DNG accidentally / incorrectly exported wrong or changed ReqIF IDs
-Possibility to correct ReqIF IDs if ReqIF IDs accidentally / incorrectly changed in DNG due to DNG technical issue
DNG API to edit the DNG ReqIF Mapping Table would enable developers to provide better custom tools for DOORS Next related to DNG ReqIF Import / Export
DNG ReqIF Mapping Table History would enable better analysis of DNG ReqIF Issues
-In the past, there were various issues with DNG ReqIF Import where even IBM Support was unsure why / when / how a ReqIF ID had changed
-The DNG ReqIF Mapping Table History would enable both IBM and non-IBM support to better analyse such issues
Example: DNG ReqIF IDs changed, but IBM Support stated they did not have sufficient information to find out how / why exactly the ReqIF Ids changed (TS012231691); a History for the DNG ReqIF Mapping Table would make analysis easier
More possibility for developers to provide additional functionalities / tools related to DNG ReqIF Export / Import