Back to QMetry All Products Help Page
Pre-requisites to 8.7 Upgrade
QMetry 8.7 upgrade brings in a lot of new improvements and bugfixes. This upgrade also fixes a few anomalies in the database related to the issue where some users observed duplicate requirements and issues syncing from Jira. With the upgrade to the latest version, QMetry prevents duplicate requirements and issues from getting generated in QMetry, which requires cleaning up the duplicate ones before the upgrade.
To be able to upgrade to the 8.7 version requires following the below mandatory pre-upgrade steps.
QMetry server admins need to provide the database query outputs mentioned on this page in .csv format and share them with QMetry Support.
QMetry Support will share relevant database updates that should be run on the QMetry database.
Upon receiving the confirmation about the updates run by the QMetry server admin, QMetry Support will share the upgrade details.
Note: It is recommended to take assistance from a database administrator or QMetry server admin for these steps.
Provide the following outputs
Login to QMetry DB using any GUI tool (to facilitate extracting data to .csv format). Be sure to remove the limit to the results output (generally 1000 records) so that all query records are returned.
Execute the following 27 queries one by one and capture their outputs in a .csv file.
Share the query outputs with QMetry Support.
-- DUPLICATE REQUIREMENTS
select p.name,rq.dtKey,count(*) as total from requirement rq join project p on rq.projectID = p.projectID and rq.dtKey is not null group by rq.projectID,rq.dtKey having total > 1; -- query1
select p.name,rq.dtKey,group_concat(rq.rqID),count(*) as total from requirement rq join project p on rq.projectID = p.projectID and rq.dtKey is not null group by rq.projectID,rq.dtKey having total > 1; -- query2
select * from requirement where find_in_set(rqid,(select group_concat(rqids) from (select group_concat(rq.rqID) as rqids from requirement rq join project p on rq.projectID = p.projectID and rq.dtKey is not null group by rq.projectID,rq.dtKey having count(*) > 1) as a)); -- query3
select * from rqversiondetail where find_in_set(rqid,(select group_concat(rqids) from (select group_concat(rq.rqID) as rqids from requirement rq join project p on rq.projectID = p.projectID and rq.dtKey is not null group by rq.projectID,rq.dtKey having count(*) > 1) as a)); -- query4
select * from rqtc where find_in_set(rqid,(select group_concat(rqids) from (select group_concat(rq.rqID) as rqids from requirement rq join project p on rq.projectID = p.projectID and rq.dtKey is not null group by rq.projectID,rq.dtKey having count(*) > 1) as a)); -- query5
select * from dfrq where find_in_set(rqid,(select group_concat(rqids) from (select group_concat(rq.rqID) as rqids from requirement rq join project p on rq.projectID = p.projectID and rq.dtKey is not null group by rq.projectID,rq.dtKey having count(*) > 1) as a)); -- query6
select * from commentsrq where find_in_set(rqid,(select group_concat(rqids) from (select group_concat(rq.rqID) as rqids from requirement rq join project p on rq.projectID = p.projectID and rq.dtKey is not null group by rq.projectID,rq.dtKey having count(*) > 1) as a)); -- query7
select * from rqreleasemap where find_in_set(rqid,(select group_concat(rqids) from (select group_concat(rq.rqID) as rqids from requirement rq join project p on rq.projectID = p.projectID and rq.dtKey is not null group by rq.projectID,rq.dtKey having count(*) > 1) as a)); -- query8
select rqChangeHistoryID, rqID, oldVersion, newVersion, changedBy, changedDate, clientID, isEntityLevel from rqchangehistory where find_in_set(rqid,(select group_concat(rqids) from (select group_concat(rq.rqID) as rqids from requirement rq join project p on rq.projectID = p.projectID and rq.dtKey is not null group by rq.projectID,rq.dtKey having count(*) > 1) as a)); -- query
select * from rqwatcher where find_in_set(rqid,(select group_concat(rqids) from (select group_concat(rq.rqID) as rqids from requirement rq join project p on rq.projectID = p.projectID and rq.dtKey is not null group by rq.projectID,rq.dtKey having count(*) > 1) as a)); -- query10
select * from sharedrequirements where find_in_set(requirementid,(select group_concat(rqids) from (select group_concat(rq.rqID) as rqids from requirement rq join project p on rq.projectID = p.projectID and rq.dtKey is not null group by rq.projectID,rq.dtKey having count(*) > 1) as a)); -- query11
select * from rqbdd rb join rqversiondetail rqvd on rb.rqVersionID = rqvd.rqVersionID and find_in_set(rqid,(select group_concat(rqids) from (select group_concat(rq.rqID) as rqids from requirement rq join project p on rq.projectID = p.projectID and rq.dtKey is not null group by rq.projectID,rq.dtKey having count(*) > 1) as a)); -- query12
select * from rqversioncomponent rc join rqversiondetail rqvd on rc.rqVersionID = rqvd.rqVersionID where find_in_set(rqid,(select group_concat(rqids) from (select group_concat(rq.rqID) as rqids from requirement rq join project p on rq.projectID = p.projectID and rq.dtKey is not null group by rq.projectID,rq.dtKey having count(*) > 1) as a)); -- query13
select * from rqversionuserfieldvalue ru join rqversiondetail rqvd on ru.rqVersionID = rqvd.rqVersionID where find_in_set(rqid,(select group_concat(rqids) from (select group_concat(rq.rqID) as rqids from requirement rq join project p on rq.projectID = p.projectID and rq.dtKey is not null group by rq.projectID,rq.dtKey having count(*) > 1) as a)); -- query14
-- DUPLICATE ISSUES
SELECT p.name, df.externalKey, COUNT(*) AS total FROM defect df JOIN project p ON df.projectID = p.projectID AND df.externalKey IS NOT NULL GROUP BY df.projectID , df.externalKey , df.externalId HAVING total > 1; -- query1
SELECT p.name, df.externalKey, GROUP_CONCAT(df.dfID), COUNT(*) AS total FROM defect df JOIN project p ON df.projectID = p.projectID AND df.externalKey IS NOT NULL GROUP BY df.projectID , df.externalKey , df.externalId HAVING total > 1; -- query2
SELECT * FROM defect WHERE FIND_IN_SET(dfID, (SELECT GROUP_CONCAT(dfIDs) FROM (SELECT GROUP_CONCAT(df.dfID) AS dfIDs FROM defect df JOIN project p ON df.projectID = p.projectID AND df.externalKey IS NOT NULL GROUP BY df.projectID , df.externalKey , df.externalId HAVING COUNT(*) > 1) AS a)); -- query3
SELECT * FROM dfrq WHERE FIND_IN_SET(dfID, (SELECT GROUP_CONCAT(dfIDs) FROM (SELECT GROUP_CONCAT(df.dfID) AS dfIDs FROM defect df JOIN project p ON df.projectID = p.projectID AND df.externalKey IS NOT NULL GROUP BY df.projectID , df.externalKey , df.externalId HAVING COUNT(*) > 1) AS a)); -- query4
SELECT * FROM dftcrun WHERE FIND_IN_SET(dfID, (SELECT GROUP_CONCAT(dfIDs) FROM (SELECT GROUP_CONCAT(df.dfID) AS dfIDs FROM defect df JOIN project p ON df.projectID = p.projectID AND df.externalKey IS NOT NULL GROUP BY df.projectID , df.externalKey , df.externalId HAVING COUNT(*) > 1) AS a)) AND tcStepRunID IS NULL; -- query5
SELECT * FROM dftcrun WHERE FIND_IN_SET(dfID, (SELECT GROUP_CONCAT(dfIDs) FROM (SELECT GROUP_CONCAT(df.dfID) AS dfIDs FROM defect df JOIN project p ON df.projectID = p.projectID AND df.externalKey IS NOT NULL GROUP BY df.projectID , df.externalKey , df.externalId HAVING COUNT(*) > 1) AS a)) AND tcStepRunID IS NOT NULL; -- query6
SELECT * FROM dfchangehistory WHERE FIND_IN_SET(dfID, (SELECT GROUP_CONCAT(dfIDs) FROM (SELECT GROUP_CONCAT(df.dfID) AS dfIDs FROM defect df JOIN project p ON df.projectID = p.projectID AND df.externalKey IS NOT NULL GROUP BY df.projectID , df.externalKey , df.externalId HAVING COUNT(*) > 1) AS a)); -- query7
SELECT * FROM voyager_session_defect WHERE FIND_IN_SET(defectID, (SELECT GROUP_CONCAT(dfIDs) FROM (SELECT GROUP_CONCAT(df.dfID) AS dfIDs FROM defect df JOIN project p ON df.projectID = p.projectID AND df.externalKey IS NOT NULL GROUP BY df.projectID , df.externalKey , df.externalId HAVING COUNT(*) > 1) AS a)); -- query8
SELECT * FROM dfuserfieldvalue WHERE FIND_IN_SET(dfID, (SELECT GROUP_CONCAT(dfIDs) FROM (SELECT GROUP_CONCAT(df.dfID) AS dfIDs FROM defect df JOIN project p ON df.projectID = p.projectID AND df.externalKey IS NOT NULL GROUP BY df.projectID , df.externalKey , df.externalId HAVING COUNT(*) > 1) AS a)); -- query9
SELECT * FROM shareddefects WHERE FIND_IN_SET(defectID, (SELECT GROUP_CONCAT(dfIDs) FROM (SELECT GROUP_CONCAT(df.dfID) AS dfIDs FROM defect df JOIN project p ON df.projectID = p.projectID AND df.externalKey IS NOT NULL GROUP BY df.projectID , df.externalKey , df.externalId HAVING COUNT(*) > 1) AS a)); -- query10
SELECT * FROM dfwatcher WHERE FIND_IN_SET(dfID, (SELECT GROUP_CONCAT(dfIDs) FROM (SELECT GROUP_CONCAT(df.dfID) AS dfIDs FROM defect df JOIN project p ON df.projectID = p.projectID AND df.externalKey IS NOT NULL GROUP BY df.projectID , df.externalKey , df.externalId HAVING COUNT(*) > 1) AS a)); -- query11
SELECT * FROM ext_multipleselect WHERE FIND_IN_SET(defectID, (SELECT GROUP_CONCAT(dfIDs) FROM (SELECT GROUP_CONCAT(df.dfID) AS dfIDs FROM defect df JOIN project p ON df.projectID = p.projectID AND df.externalKey IS NOT NULL GROUP BY df.projectID , df.externalKey , df.externalId HAVING COUNT(*) > 1) AS a)); -- query12
SELECT * FROM ext_issue_links WHERE FIND_IN_SET(dfKey, (SELECT GROUP_CONCAT(dfKeys) FROM (SELECT GROUP_CONCAT(df.externalKey) AS dfKeys FROM defect df JOIN project p ON df.projectID = p.projectID AND df.externalKey IS NOT NULL GROUP BY df.projectID , df.externalKey , df.externalId HAVING COUNT(*) > 1) AS a)); -- query13
Back to QMetry All Products Help Page