It's all about the answers!

Ask a question

RDNG5 | .CSV import - Duplicate artifacts created

Rohit M (134) | asked Dec 14 '15, 5:07 a.m.
edited Dec 14 '15, 8:31 a.m.
Product - Rational DOORS Next Gen 5

I was trying to upload smartphoneTablet.csv to DOORS NG 5 as described in
with one minor edit - since the primary texts "Power Consumption", "Resolution" and "Heat Dissipation" are exactly the same, I do not want separate artifacts to be created for them, instead I want the same artifact to be linked to both modules Smart Phone and Tablet.  So I edited the artifact ids to be the same in the sample smartPhoneTablet.csv and then uploaded the .csv - however, system still created separate artifacts for all 3 of them under the modules folders. Now (in reference to one of the projects we're working on) I see this as a major concern due to 2 reasons:

Reason 1: Our base requirement is creating (approximately) 1000 modules with 2000 artifacts - all variations within these 1000 modules will be module specific artifacts (which, understandably, will be separate artifacts). 

Know that these 2000 artifacts are meant to be shared ones - each artifact is meant to be linked to a subset of the 1000 modules. So if RDNG5 does not create separate artifacts we are talking total artifact counts in the range of just 2000. 

Now if, there is no way to prevent dupes, we're talking total artifact count to be ~ 1000 modules * 2000 artifacts (multiple physical versions of the very same logical artifact) - that translates to ~ 2 million physical artifacts (should have been 2000 instead)

Reason 2: Since I am saying artifact is a shared one and meant to be linked to multiple modules, the dupes problem also means if I have to update the artifact (with say some minor edits), I have to edit all the duplicated copies as well (in my case, several hundred duplicated artifacts) - this defeats "reusability" for shared artifacts.

Question: During .csv uploads, is there any way (settings or otherwise) that I can link an artifact meant to be shared to multiple modules without creating dupes.

An early response with any workaround (either .csv upload or programmatic (OSLC or client extensions) that prevents the duplicates will be highly appreciated.

Rohit M commented Dec 14 '15, 12:02 p.m. | edited Jan 18 '16, 6:34 p.m.

Essentially I am looking for is something along the lines of "Duplicate module with reuse artifact option" (this shows up when we click on the edit pen and that creates a separate module (with same shared artifacts)

Would that be possible programmatically - e.g. does OLSC (or Eclipse LYO) support insertion of an existing artifact to multiple modules (and the artifact should not be duplicated - that's the key point)? I read that modules are read only in OLSC, so am wondering is there any workaround available? 

How about client side extensions (javascript) that supposedly has more advanced capabilities than OLSC. The closest I could get to in the references is createArtifact() method  - do we have something along the lines of "insert artifact to module" so I can set up a loop around the list of modules to associate with the given artifact say, set RM.Data.Attribute.IDENTIFIER = <ID of the shared artifact> with createArtifact()?

One answer

permanent link
Keith Collyer (456411) | answered Dec 14 '15, 10:56 a.m.
The .CSV import is working as defined in the reference you gave. The identifier column is only used to define parent-child relationships.
The way to achieve what you want would be to create a module with the common requirements and reuse those requirements into the appropriate modules. I realise that this will be quite tedious, as you will need to identify all the common requirements from your existing data and remove them from the current module-specific information, then reuse them into the modules once imported. It may be possible to do this programmatically, for example by comparing a module with the "common" requirements and replacing the matching artifacts with reused copies.

Rohit M commented Dec 14 '15, 12:02 p.m.
Thanks Keith. 

I went over your inputs, however, that would be just too tedious for our use case. In the example I have given (simplified to - 1000 modules with 2000 artifacts), we will not have the case wherein ALL 1000 modules need to include ALL 2000 artifacts. In fact, it would go something along the lines of "Shared artifact 1 should be linked to 546 modules", "Shared artifact 2 linked to 897 modules" and so on  based on the identified artifacts - as you can see that is non trivial. 

We have defined a process for identification of the modules that should be associated with an artifact (e.g. we will have that mapping ready before we load the artifact - post artifact is loaded to Doors NG, now comes the difficult part to insert this artifact to the 546 identified modules  (in my example) - repeat this process a few thousand times and you can gauge the complexity.

Your answer

Register or to post your answer.