From d962c9a04ad2a252a0b62e9402a942013e7c3054 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=BCbeyde=20Civelek?= Date: Fri, 14 Aug 2026 13:47:42 +0200 Subject: [PATCH] fix(base): keep DOIs in pids even it's reference --- .../rdm/records/transform/xml_processing/rules/base.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cds_migrator_kit/rdm/records/transform/xml_processing/rules/base.py b/cds_migrator_kit/rdm/records/transform/xml_processing/rules/base.py index 8d9b47f4..e2e4b511 100644 --- a/cds_migrator_kit/rdm/records/transform/xml_processing/rules/base.py +++ b/cds_migrator_kit/rdm/records/transform/xml_processing/rules/base.py @@ -483,6 +483,7 @@ def _pids(self, key, value): # if we have a qualifier for one of these two, we know it references # an external resource (checked in DB and individually on records) # if qualifier == ebook, it references itself, so qualifier is not needed + # if it's a doi, we should also need to keep it as external doi if qualifier == "thesis": qualifier = "publication-thesis" related_works = self.get("related_identifiers", []) @@ -502,6 +503,9 @@ def _pids(self, key, value): if new_id not in related_works: related_works.append(new_id) self["related_identifiers"] = related_works + if is_doi_id or scheme == "doi": + pid_dict["doi"] = {"identifier": identifier} + self["_pids"] = pid_dict raise IgnoreKey("_pids") if scheme.upper() in PID_SCHEMES_TO_STORE_IN_IDENTIFIERS: @@ -870,7 +874,7 @@ def related_identifiers_787(self, key, value): "resource_type": {"id": "publication-periodicalarticle"}, }, "report": { - "relation_type": {"id": "isderivedfrom"}, + "relation_type": {"id": "references"}, "resource_type": {"id": "publication-report"}, }, "preprint": {