Troubleshooting Duplicate IDs
Issue: It has been observed that bundle loading fails during the Publish to Preview/Runtime task due to the duplicate persistent IDs.
Root Cause: In PTC Arbortext Content Delivery, all the data is allocated with a unique ID based on attributes such as URI, NUMBER, ORGNAME, and AUTHORING_LANG. In some cases where the user does not follow the correct publishing process, it has been observed that objects come up with same NUMBER and ORGNAME but different URI or some other identity values. This leads to the duplicate persistent ID Issue.
Following table shows the examples of a few object types and their respective identity attributes:
Object Type
Identity Attributes
PRODUCT
NUMBER
PRODUCT INSTANCE
NUMBER, MODEL
PARTS, PARTSLIST
URI, NUMBER, ORGNAME
DYNAMIC DOC (IEXML, PDFM)
URI, PTC_DD_LANGUAGE, SIM.authoringLanguage, NUMBER, ORGNAME
GRAPHICS
URI, PTC_DD_LANGUAGE, SIM.authoringLanguage, CADNAME, ORGNAME
To understand why this issue occurred, you must investigate around the following points:
Why we have this discrepancy—It will indicate what exactly has changed.
You must look into the SCIDENTITY table under the E3C schema and observe the identity attributes and the SCIDENTITY columns to understand the discrepancy.
Why the identities are changed—It will indicate what is wrong in your publishing strategy.
When you identify the reason behind the change in the identities, you must fix that issue and republish the bundle. It ensures that the issue has been resolved.
Observations about Parts data type show that the duplicate IDs get created due to any of the following reasons:
Deleting an object in SIM (but never published it) and created another object with the same number and ORGNAME
Due to the rehost
If you are unable to fix the issue as identified above, you can follow any of the following approaches.
Clean-up the entire environment.
Delete the relevant collections and its associated objects from the SHARED segment.
Clean up the PTC Arbortext Content Delivery repository to get rid of the old data. (Manual Process)
The details about fixing the duplicate IDs issue for Parts type are explained in the following steps.
1. Run the database query to find the duplicate IDs as follows:
SELECT OLD.SCIDENTITY, OLD.uri FROM
(SELECT DISTINCT a.objnumber,
A.URI,
A.SCIDENTITY,
B.PUBLISHTIME
FROM SC_IDENTITY A,
SC_REGISTRY B
WHERE A.SCIDENTITY = B.SCIDENTITY
AND A.TYPE = 'PARTS'
) OLD,
(SELECT DISTINCT C.objnumber,
C.URI,
C.SCIDENTITY,
D.PUBLISHTIME
FROM SC_IDENTITY C,
SC_REGISTRY D
WHERE C.SCIDENTITY = D.SCIDENTITY
AND C.TYPE = 'PARTS'
) NEW
WHERE OLD.OBJNUMBER = NEW.OBJNUMBER
AND OLD.scidentity != NEW.scidentity ;
2. Extract "SCIDENTITY","URI","OBJNUMBER"
3. Create the Parts_Parts.fed file to remove the parts with duplicate IDs:
4. Run the Parts_Parts.fed file from DCTM_Output to remove the parts having the duplicate IDs.
5. Run the bundle on test load again. Publish to Preview for Parts now loads successfully.
6. After the load is successful, perform all the above steps on the production environment.
Was this helpful?