Lost requirement - looked in database - issoftdeleted = 1
ENV: Jazz 3.0.1.2, RHEL, Oracle DB, WAS, IHS reverse-proxy
We have a requirements collection that is missing one of its requirements.
If I look in the db
We have a requirements collection that is missing one of its requirements.
If I look in the db
- it is in the RIODS.requirements table, but issoftdeleted = 1
- it is in riods.requicol_requirment_lookup table, still belonging to the old collection.
I have a few questions:
- what causes a requirement to be soft deleted - there are a bunch that are?
- if I set issoftdeleted to 0, will everything come back, or do I have to fix other tables?
-
why is it that when I create a requirement is doesn't always turn up in riods.requirement?
- What are the conditions/trigger?
- is there a log table I can check to see the event that caused it to be deleted?
- The collection history simply shows it being added (note as the url, not the title like the other ones)
Thanks!
Joseph
Accepted answer
Hi Joseph,
Requirements are marked as soft deleted in the Data Warehouse when the application API returns TRUE that the artifact has been deleted. In the case of Requirements Composer, the publishing/reporting API uses a flag called "IsDeleted", which returns true for requirements that have been deleted. To answer your questions:
1) See above
2) Setting issoftdeleted=0 in the data warehouse will not make data re-appear in RRC. RRC does not rely on data in the data warehouse for application data
3) When you create a requirement in RRC, you must execute the Requirements ETL in order for it to be loaded in to the data warehouse
4) You can tell who deleted the resource by getting the latest revision of the artifact and looking at the most recent change. It should say something like "Bob changed: "Resource removed". Here's how you can do that...
a) Get the URI of the artifact. If you've already found the record in the operational data store -> Requirement table, it's the "External Key 2" field (ie - https://clmweb.ibm.com:9443/resources/_lQbhMOfSEeGL5YOIvjHU3g)
b) In your browser, enter a query to get the revisions of the artifact:
https://clmweb.ibm.com:9443/rm/revisions?private=true&accept=*&url=https://clmweb.ibm.com:9443/rm/resources/_lQbhMOfSEeGL5YOIvjHU3g
c) The query should return a feed showing all the revisions, from most recent to the initial creation.
d) Click on the link for the most recent revision. It should be the first one listed at the top of the page. This will bring you in to the artifact history viewer where you can hover over the blue box to the far left (most recent revision) and click "Show More" to see who deleted the artifact.
Hope it helps,
Requirements are marked as soft deleted in the Data Warehouse when the application API returns TRUE that the artifact has been deleted. In the case of Requirements Composer, the publishing/reporting API uses a flag called "IsDeleted", which returns true for requirements that have been deleted. To answer your questions:
1) See above
2) Setting issoftdeleted=0 in the data warehouse will not make data re-appear in RRC. RRC does not rely on data in the data warehouse for application data
3) When you create a requirement in RRC, you must execute the Requirements ETL in order for it to be loaded in to the data warehouse
4) You can tell who deleted the resource by getting the latest revision of the artifact and looking at the most recent change. It should say something like "Bob changed: "Resource removed". Here's how you can do that...
a) Get the URI of the artifact. If you've already found the record in the operational data store -> Requirement table, it's the "External Key 2" field (ie - https://clmweb.ibm.com:9443/resources/_lQbhMOfSEeGL5YOIvjHU3g)
b) In your browser, enter a query to get the revisions of the artifact:
https://clmweb.ibm.com:9443/rm/revisions?private=true&accept=*&url=https://clmweb.ibm.com:9443/rm/resources/_lQbhMOfSEeGL5YOIvjHU3g
c) The query should return a feed showing all the revisions, from most recent to the initial creation.
d) Click on the link for the most recent revision. It should be the first one listed at the top of the page. This will bring you in to the artifact history viewer where you can hover over the blue box to the far left (most recent revision) and click "Show More" to see who deleted the artifact.
Hope it helps,
2 other answers
Hi Joseph,
The only way I have found to restore a deleted artifact is if you have a snapshot or baseline that contains that artifact, is to open the artifact from the snapshot and then from the artifact history restore the latest found version, by copying and pasting to a new artifact.
Now if you want to control which role can delete artifacts. In V3.0.1.1 this feature was added
https://jazz.net/downloads/rational-requirements-composer/releases/3.0.1.1?p=news#artifactdeletions
This determines which users can delete artifacts based on defined roles. This can be used as added process to ensure that only authorized users can delete artifacts.
The only way I have found to restore a deleted artifact is if you have a snapshot or baseline that contains that artifact, is to open the artifact from the snapshot and then from the artifact history restore the latest found version, by copying and pasting to a new artifact.
Now if you want to control which role can delete artifacts. In V3.0.1.1 this feature was added
https://jazz.net/downloads/rational-requirements-composer/releases/3.0.1.1?p=news#artifactdeletions
This determines which users can delete artifacts based on defined roles. This can be used as added process to ensure that only authorized users can delete artifacts.
Comments
Robin, Just discovered that users can still delete uploaded images.
They can also delete folders as long as there are no artifacts in them.
Note that they can delete folders with non-artifacts in them, e.g. other folders or uploaded images.
Anyway to batten down the hatches a bit more?
Thanks!
This surprises me. It sounds like a defect as my expectation is that it should not be able to delete folders, but I am not sure how it was designed.
The tables are much more complicated for the application, so it's not as simple as flipping a bit in the back end like you saw for the data warehouse. Is it not possible to re-create the artifact based on the latest revision you're able to see from the steps above? You should have access to all the content/attributes/links etc through the steps above. You could even create a snapshot and specify the exact date/time you want to visualize if you wanted to see other deleted artifacts without going through the exercise above. Hope it helps,