Uploaded image for project: 'Jira Service Management Data Center'
  1. Jira Service Management Data Center
  2. JSDSERVER-12010

After running some Insight imports, some objects have duplicated or more attribute values on object attribute that should only allow exactly 1 value (maximum cardinality = 1)

      Issue Summary

      After running some Insight imports, some objects have duplicated or more attribute values on object attribute that should only allow exactly 1 value (maximum cardinality = 1)

      This is reproducible on Data Center: yes

      Steps to Reproduce

      N/A. This issue couldn't be reproduced on the UI, it usually happens after some Insight imports

      Expected Results

      All attributes that have maximum cardinality = 1 have only 1 value

      Actual Results

      There are 2 or more values on the attributes that have maximum cardinality = 1

      Workaround

      1. Follow the steps in Duplicated attribute values in Insight Objects with cardinality maximum 1
      2. Run the SQL queries below to identify duplicated attribute and attribute values. If the SELECT statement returns something, run the DELETE statement. After that, run the same SELECT statement again (and DELETE if anything returns again) until it returns nothing.
        select * from "AO_8542F1_IFJ_OBJ_ATTR_VAL" where "OBJECT_ATTRIBUTE_ID" in (
        SELECT min(OA2."ID") AS TO_DELETE
        FROM "AO_8542F1_IFJ_OBJ_ATTR" OA2
                 RIGHT JOIN (
            SELECT OTA."ID" as OTA_ID, OTA."NAME", OA."OBJECT_ID" as OA_OID, count(*)
            FROM "AO_8542F1_IFJ_OBJ_TYPE_ATTR" OTA
                     LEFT JOIN "AO_8542F1_IFJ_OBJ_ATTR" OA ON OTA."ID" = OA."OBJECT_TYPE_ATTRIBUTE_ID"
            GROUP BY OTA."ID", OTA."NAME", OA."OBJECT_ID"
            HAVING count(*) > 1) AS SUBQ ON OA2."OBJECT_TYPE_ATTRIBUTE_ID" = SUBQ.OTA_ID AND OA2."OBJECT_ID" = SUBQ.OA_OID
        GROUP BY OA2."OBJECT_ID", OA2."OBJECT_TYPE_ATTRIBUTE_ID");
        
        DELETE from "AO_8542F1_IFJ_OBJ_ATTR_VAL" where "OBJECT_ATTRIBUTE_ID" in (
        SELECT min(OA2."ID") AS TO_DELETE
        FROM "AO_8542F1_IFJ_OBJ_ATTR" OA2
                 RIGHT JOIN (
            SELECT OTA."ID" as OTA_ID, OTA."NAME", OA."OBJECT_ID" as OA_OID, count(*)
            FROM "AO_8542F1_IFJ_OBJ_TYPE_ATTR" OTA
                     LEFT JOIN "AO_8542F1_IFJ_OBJ_ATTR" OA ON OTA."ID" = OA."OBJECT_TYPE_ATTRIBUTE_ID"
            GROUP BY OTA."ID", OTA."NAME", OA."OBJECT_ID"
            HAVING count(*) > 1) AS SUBQ ON OA2."OBJECT_TYPE_ATTRIBUTE_ID" = SUBQ.OTA_ID AND OA2."OBJECT_ID" = SUBQ.OA_OID
        GROUP BY OA2."OBJECT_ID", OA2."OBJECT_TYPE_ATTRIBUTE_ID");
        
        select * FROM "AO_8542F1_IFJ_OBJ_ATTR"
        where "ID" in (
        SELECT min(OA2."ID") AS TO_DELETE
        FROM "AO_8542F1_IFJ_OBJ_ATTR" OA2
                 RIGHT JOIN (
            SELECT OTA."ID" as OTA_ID, OTA."NAME", OA."OBJECT_ID" as OA_OID, count(*)
            FROM "AO_8542F1_IFJ_OBJ_TYPE_ATTR" OTA
                     LEFT JOIN "AO_8542F1_IFJ_OBJ_ATTR" OA ON OTA."ID" = OA."OBJECT_TYPE_ATTRIBUTE_ID"
            GROUP BY OTA."ID", OTA."NAME", OA."OBJECT_ID"
            HAVING count(*) > 1) AS SUBQ ON OA2."OBJECT_TYPE_ATTRIBUTE_ID" = SUBQ.OTA_ID AND OA2."OBJECT_ID" = SUBQ.OA_OID
        GROUP BY OA2."OBJECT_ID", OA2."OBJECT_TYPE_ATTRIBUTE_ID");
        
        DELETE FROM "AO_8542F1_IFJ_OBJ_ATTR"
        where "ID" in (
        SELECT min(OA2."ID") AS TO_DELETE
        FROM "AO_8542F1_IFJ_OBJ_ATTR" OA2
                 RIGHT JOIN (
            SELECT OTA."ID" as OTA_ID, OTA."NAME", OA."OBJECT_ID" as OA_OID, count(*)
            FROM "AO_8542F1_IFJ_OBJ_TYPE_ATTR" OTA
                     LEFT JOIN "AO_8542F1_IFJ_OBJ_ATTR" OA ON OTA."ID" = OA."OBJECT_TYPE_ATTRIBUTE_ID"
            GROUP BY OTA."ID", OTA."NAME", OA."OBJECT_ID"
            HAVING count(*) > 1) AS SUBQ ON OA2."OBJECT_TYPE_ATTRIBUTE_ID" = SUBQ.OTA_ID AND OA2."OBJECT_ID" = SUBQ.OA_OID
        GROUP BY OA2."OBJECT_ID", OA2."OBJECT_TYPE_ATTRIBUTE_ID");
        
      3. When both SELECT statements above return nothing anymore, run an Insight reindex to keep the index updated.

          Form Name

            [JSDSERVER-12010] After running some Insight imports, some objects have duplicated or more attribute values on object attribute that should only allow exactly 1 value (maximum cardinality = 1)

            Marc Dacanay made changes -
            Labels Original: architectural ltsr New: architectural
            Thomas Connally made changes -
            Description Original: h3. Issue Summary
            After running some Insight imports, some objects have duplicated or more attribute values on object attribute that should only allow exactly 1 value (maximum cardinality = 1)

            This is reproducible on Data Center: yes

            h3. Steps to Reproduce
            N/A. This issue couldn't be reproduced on the UI, it usually happens after some Insight imports

            h3. Expected Results
            All attributes that have maximum cardinality = 1 have only 1 value

            h3. Actual Results
            There are 2 or more values on the attributes that have maximum cardinality = 1

            h3. Workaround
            # Follow the steps in [Duplicated attribute values in Insight Objects with cardinality maximum 1|https://confluence.atlassian.com/jirakb/duplicated-attribute-values-in-insight-objects-with-cardinality-maximum-1-1114816155.html]
            # Run the SQL queries below to identify duplicated attribute and attribute values. (i) If the SELECT statement returns something, run the DELETE statement. After that, run the same SELECT statement again (and DELETE if anything returns again) until it returns nothing.
            {code:sql}
            select * from "AO_8542F1_IFJ_OBJ_ATTR_VAL" where "OBJECT_ATTRIBUTE_ID" in (
            SELECT min(OA2."ID") AS TO_DELETE
            FROM "AO_8542F1_IFJ_OBJ_ATTR" OA2
                     RIGHT JOIN (
                SELECT OTA."ID" as OTA_ID, OTA."NAME", OA."OBJECT_ID" as OA_OID, count(*)
                FROM "AO_8542F1_IFJ_OBJ_TYPE_ATTR" OTA
                         LEFT JOIN "AO_8542F1_IFJ_OBJ_ATTR" OA ON OTA."ID" = OA."OBJECT_TYPE_ATTRIBUTE_ID"
                GROUP BY OTA."ID", OTA."NAME", OA."OBJECT_ID"
                HAVING count(*) > 1) AS SUBQ ON OA2."OBJECT_TYPE_ATTRIBUTE_ID" = SUBQ.OTA_ID AND OA2."OBJECT_ID" = SUBQ.OA_OID
            GROUP BY OA2."OBJECT_ID", OA2."OBJECT_TYPE_ATTRIBUTE_ID");

            DELETE from "AO_8542F1_IFJ_OBJ_ATTR_VAL" where "OBJECT_ATTRIBUTE_ID" in (
            SELECT min(OA2."ID") AS TO_DELETE
            FROM "AO_8542F1_IFJ_OBJ_ATTR" OA2
                     RIGHT JOIN (
                SELECT OTA."ID" as OTA_ID, OTA."NAME", OA."OBJECT_ID" as OA_OID, count(*)
                FROM "AO_8542F1_IFJ_OBJ_TYPE_ATTR" OTA
                         LEFT JOIN "AO_8542F1_IFJ_OBJ_ATTR" OA ON OTA."ID" = OA."OBJECT_TYPE_ATTRIBUTE_ID"
                GROUP BY OTA."ID", OTA."NAME", OA."OBJECT_ID"
                HAVING count(*) > 1) AS SUBQ ON OA2."OBJECT_TYPE_ATTRIBUTE_ID" = SUBQ.OTA_ID AND OA2."OBJECT_ID" = SUBQ.OA_OID
            GROUP BY OA2."OBJECT_ID", OA2."OBJECT_TYPE_ATTRIBUTE_ID");
            {code}
            {code:SQL}
            select * FROM "AO_8542F1_IFJ_OBJ_ATTR"
            where "ID" in (
            SELECT min(OA2."ID") AS TO_DELETE
            FROM "AO_8542F1_IFJ_OBJ_ATTR" OA2
                     RIGHT JOIN (
                SELECT OTA."ID" as OTA_ID, OTA."NAME", OA."OBJECT_ID" as OA_OID, count(*)
                FROM "AO_8542F1_IFJ_OBJ_TYPE_ATTR" OTA
                         LEFT JOIN "AO_8542F1_IFJ_OBJ_ATTR" OA ON OTA."ID" = OA."OBJECT_TYPE_ATTRIBUTE_ID"
                GROUP BY OTA."ID", OTA."NAME", OA."OBJECT_ID"
                HAVING count(*) > 1) AS SUBQ ON OA2."OBJECT_TYPE_ATTRIBUTE_ID" = SUBQ.OTA_ID AND OA2."OBJECT_ID" = SUBQ.OA_OID
            GROUP BY OA2."OBJECT_ID", OA2."OBJECT_TYPE_ATTRIBUTE_ID");

            DELETE FROM "AO_8542F1_IFJ_OBJ_ATTR"
            where "ID" in (
            SELECT min(OA2."ID") AS TO_DELETE
            FROM "AO_8542F1_IFJ_OBJ_ATTR" OA2
                     RIGHT JOIN (
                SELECT OTA."ID" as OTA_ID, OTA."NAME", OA."OBJECT_ID" as OA_OID, count(*)
                FROM "AO_8542F1_IFJ_OBJ_TYPE_ATTR" OTA
                         LEFT JOIN "AO_8542F1_IFJ_OBJ_ATTR" OA ON OTA."ID" = OA."OBJECT_TYPE_ATTRIBUTE_ID"
                GROUP BY OTA."ID", OTA."NAME", OA."OBJECT_ID"
                HAVING count(*) > 1) AS SUBQ ON OA2."OBJECT_TYPE_ATTRIBUTE_ID" = SUBQ.OTA_ID AND OA2."OBJECT_ID" = SUBQ.OA_OID
            GROUP BY OA2."OBJECT_ID", OA2."OBJECT_TYPE_ATTRIBUTE_ID");
            {code}
            # When both SELECT statements above return nothing anymore, run an Insight reindex to keep the index updated.
            New: h3. Issue Summary
            After running some Insight imports, some objects have duplicated or more attribute values on object attribute that should only allow exactly 1 value (maximum cardinality = 1)

            This is reproducible on Data Center: yes

            h3. Steps to Reproduce
            N/A. This issue couldn't be reproduced on the UI, it usually happens after some Insight imports

            h3. Expected Results
            All attributes that have maximum cardinality = 1 have only 1 value

            h3. Actual Results
            There are 2 or more values on the attributes that have maximum cardinality = 1

            h3. Workaround
            # Follow the steps in [Duplicated attribute values in Insight Objects with cardinality maximum 1|https://confluence.atlassian.com/jirakb/duplicated-attribute-values-in-insight-objects-with-cardinality-maximum-1-1114816155.html]
            # Run the SQL queries below to identify duplicated attribute and attribute values. (i) If the SELECT statement returns something, run the DELETE statement. After that, run the same SELECT statement again (and DELETE if anything returns again) until it returns nothing.
            {code:sql}
            select * from "AO_8542F1_IFJ_OBJ_ATTR_VAL" where "OBJECT_ATTRIBUTE_ID" in (
            SELECT min(OA2."ID") AS TO_DELETE
            FROM "AO_8542F1_IFJ_OBJ_ATTR" OA2
                     RIGHT JOIN (
                SELECT OTA."ID" as OTA_ID, OTA."NAME", OA."OBJECT_ID" as OA_OID, count(*)
                FROM "AO_8542F1_IFJ_OBJ_TYPE_ATTR" OTA
                         LEFT JOIN "AO_8542F1_IFJ_OBJ_ATTR" OA ON OTA."ID" = OA."OBJECT_TYPE_ATTRIBUTE_ID"
                GROUP BY OTA."ID", OTA."NAME", OA."OBJECT_ID"
                HAVING count(*) > 1) AS SUBQ ON OA2."OBJECT_TYPE_ATTRIBUTE_ID" = SUBQ.OTA_ID AND OA2."OBJECT_ID" = SUBQ.OA_OID
            GROUP BY OA2."OBJECT_ID", OA2."OBJECT_TYPE_ATTRIBUTE_ID");
            {code}
            {code:SQL}
            DELETE from "AO_8542F1_IFJ_OBJ_ATTR_VAL" where "OBJECT_ATTRIBUTE_ID" in (
            SELECT min(OA2."ID") AS TO_DELETE
            FROM "AO_8542F1_IFJ_OBJ_ATTR" OA2
                     RIGHT JOIN (
                SELECT OTA."ID" as OTA_ID, OTA."NAME", OA."OBJECT_ID" as OA_OID, count(*)
                FROM "AO_8542F1_IFJ_OBJ_TYPE_ATTR" OTA
                         LEFT JOIN "AO_8542F1_IFJ_OBJ_ATTR" OA ON OTA."ID" = OA."OBJECT_TYPE_ATTRIBUTE_ID"
                GROUP BY OTA."ID", OTA."NAME", OA."OBJECT_ID"
                HAVING count(*) > 1) AS SUBQ ON OA2."OBJECT_TYPE_ATTRIBUTE_ID" = SUBQ.OTA_ID AND OA2."OBJECT_ID" = SUBQ.OA_OID
            GROUP BY OA2."OBJECT_ID", OA2."OBJECT_TYPE_ATTRIBUTE_ID");
            {code}
            {code:SQL}
            select * FROM "AO_8542F1_IFJ_OBJ_ATTR"
            where "ID" in (
            SELECT min(OA2."ID") AS TO_DELETE
            FROM "AO_8542F1_IFJ_OBJ_ATTR" OA2
                     RIGHT JOIN (
                SELECT OTA."ID" as OTA_ID, OTA."NAME", OA."OBJECT_ID" as OA_OID, count(*)
                FROM "AO_8542F1_IFJ_OBJ_TYPE_ATTR" OTA
                         LEFT JOIN "AO_8542F1_IFJ_OBJ_ATTR" OA ON OTA."ID" = OA."OBJECT_TYPE_ATTRIBUTE_ID"
                GROUP BY OTA."ID", OTA."NAME", OA."OBJECT_ID"
                HAVING count(*) > 1) AS SUBQ ON OA2."OBJECT_TYPE_ATTRIBUTE_ID" = SUBQ.OTA_ID AND OA2."OBJECT_ID" = SUBQ.OA_OID
            GROUP BY OA2."OBJECT_ID", OA2."OBJECT_TYPE_ATTRIBUTE_ID");
            {code}
            {code:SQL}
            DELETE FROM "AO_8542F1_IFJ_OBJ_ATTR"
            where "ID" in (
            SELECT min(OA2."ID") AS TO_DELETE
            FROM "AO_8542F1_IFJ_OBJ_ATTR" OA2
                     RIGHT JOIN (
                SELECT OTA."ID" as OTA_ID, OTA."NAME", OA."OBJECT_ID" as OA_OID, count(*)
                FROM "AO_8542F1_IFJ_OBJ_TYPE_ATTR" OTA
                         LEFT JOIN "AO_8542F1_IFJ_OBJ_ATTR" OA ON OTA."ID" = OA."OBJECT_TYPE_ATTRIBUTE_ID"
                GROUP BY OTA."ID", OTA."NAME", OA."OBJECT_ID"
                HAVING count(*) > 1) AS SUBQ ON OA2."OBJECT_TYPE_ATTRIBUTE_ID" = SUBQ.OTA_ID AND OA2."OBJECT_ID" = SUBQ.OA_OID
            GROUP BY OA2."OBJECT_ID", OA2."OBJECT_TYPE_ATTRIBUTE_ID");
            {code}
            # When both SELECT statements above return nothing anymore, run an Insight reindex to keep the index updated.
            Marc Dacanay made changes -
            Labels Original: architectural New: architectural ltsr
            Alex [Atlassian,PSE] made changes -
            Remote Link Original: This issue links to "Page (Confluence)" [ 864925 ]
            Alex [Atlassian,PSE] made changes -
            Remote Link New: This issue links to "Page (Confluence)" [ 925298 ]
            SET Analytics Bot made changes -
            UIS Original: 247 New: 260
            Satej Mirpagar made changes -
            Resolution New: Fixed [ 1 ]
            Status Original: Waiting for Release [ 12075 ] New: Closed [ 6 ]
            SET Analytics Bot made changes -
            Support reference count Original: 31 New: 32
            SET Analytics Bot made changes -
            UIS Original: 232 New: 247
            SET Analytics Bot made changes -
            Support reference count Original: 30 New: 31

              aba1389a0947 Josh Cameron
              michin Michelle Chin
              Affected customers:
              39 This affects my team
              Watchers:
              42 Start watching this issue

                Created:
                Updated:
                Resolved: