Tridion Docs 15: Find Topics not being referenced (orphan) using Web Services API

We need to create a report of all Topics that are not referenced in any other DocumentObject.

Is there a DocumentObject's metadata field that keeps track of references to itself?

Is there a way to use API25.Search.PerformSearch to query for such metadata field?

Thanks for your assistance.

emoji
Parents
  • Hi Efrén and anybody else that might read this.

    The system is build up on "logical linking" which most of you see through the LogicalId - typically a GUID. An xml file - which is attached to some LogicalId, Version and Language hierarchy - contains link statements to the LogicalId level of other objects.

    When you submit/save/checkin an xml file, the language level will have some system metadata updated to identity to which other objects this xml file links. You can find them under Xml Settings > IWrite Plugin configuration. The important link fields for you are

    • FISHLINKS is trully about incorporating content. So if an OASIS DITA Map holds <topicref href="GUID-A"> then this metadata field will hold GUID-A. Where GUID-A is typically about Maps, Topics, Library Topics or Other/Template type
    • FISHIMAGELINKS is simiar but this one holds GUIDs of Image object types.

    So to answer your question, per logical identifier (like GUID-A) you need to query if it exists in any FISHLINKS or FISHIMAGELINKS entries. If that returns nothing, than it is an orphan.

    If you want more object type and field type information, please try ISHRemote cmdlet: Get-IshTypeFieldDefinition | Out-GridView ... what you can also derive here under header CRUST (Create-Read-Update-Search-Tagging) is that all LINK fields are not part of Search, so they are not part of the FullTextIndex and can hence not be queried under API25.Search. So you'll have to go over API25.DocumentObj.Find (or ISHRemote Find-ISHDocumentObj)
    Screenshot of Trados Studio's Get-IshTypeFieldDefinition Out-GridView showing a list of LINKS with fields such as ISHType, Level, Name, DataType, DataSource, and CRUST with descriptions for each.

    Hope this gets you going,
    Dave

    emoji


    Generated Image Alt-Text
    [edited by: Trados AI at 6:53 AM (GMT 0) on 5 Mar 2024]
  • Hey Dave, thanks for your answer. For each topic, we want to know if it is used by any other object in the repository. Does the FISHLINKS Field give us the GUIDs of objects that reference the topic?

    If not, is there a metadata field that contains the backreferences of a given Topic? I want something like the "Where used > Used by" menu in Organized Space.

    emoji
  • Every object has system metadata (FISHLINKS...) on who it references. There is no reverse arrow where every object knows where it is being referenced. Hence why I wrote the below, and why the WhereUsed report works per-object (for a selected GUID you see who uses it).

    So to answer your question, per logical identifier (like GUID-A) you need to query if it exists in any FISHLINKS or FISHIMAGELINKS entries. If that returns nothing, than it is an orphan.

    emoji
Reply Children
No Data