diff --git a/dspace/config/entities/relationship-types.xml b/dspace/config/entities/relationship-types.xml
index a188f527348..153ccf4eea8 100644
--- a/dspace/config/entities/relationship-types.xml
+++ b/dspace/config/entities/relationship-types.xml
@@ -148,5 +148,33 @@
true
+
+ Dataset
+ ResearchProject
+ isProjectThatProducedDataset
+ isDatasetProducedByProject
+
+ 0
+ 1
+
+
+ 0
+
+ true
+
+
+ ResearchProject
+ PDAC
+ isPDACForProject
+ isProjectAssignedtoPDAC
+
+ 0
+ 1
+
+
+ 0
+
+ true
+
diff --git a/dspace/config/local.cfg.RDC b/dspace/config/local.cfg.RDC
new file mode 100644
index 00000000000..2afac8a7e6f
--- /dev/null
+++ b/dspace/config/local.cfg.RDC
@@ -0,0 +1,21 @@
+##### Hide Item Metadata Fields #####
+##### TAMU Customization - Hidden metadata fields #####
+# Fields named here are hidden in the following places UNLESS the
+# logged-in user is an Administrator:
+# 1. REST API (and therefore UI)
+# 2. RDF (every where as there is currently no possibility to authenticate)
+# 3. OAI (every where as there is currently no possibility to authenticate)
+# Attention: You need to rebuild the OAI SOLR index after every change of
+# this property. Run [dspace-install]/bin/dspace oai import -c to do so.
+#
+# To designate a field as hidden, add a property here in the form:
+# metadata.hide.SCHEMA.ELEMENT.QUALIFIER = true
+#
+# This default configuration hides the dc.description.provenance field,
+# since that usually contains email addresses which ought to be kept
+# private and is mainly of interest to administrators:
+metadata.hide.dc.creator.UIN = true
+metadata.hide.dc.identifier.UIN = true
+metadata.hide.dc.description.findingAid = true
+
+# END TAMU Customization - hidden metadata fields
\ No newline at end of file
diff --git a/dspace/config/registries/dublin-core-types.xml b/dspace/config/registries/dublin-core-types.xml
index 1e46e85325c..79a1943a577 100644
--- a/dspace/config/registries/dublin-core-types.xml
+++ b/dspace/config/registries/dublin-core-types.xml
@@ -86,6 +86,68 @@
A person, organization, or service responsible for the content of the resource. Catch-all for unspecified contributors.
+
+
+ dc
+ contributor
+ member
+ Use for name of TAMU department or institute that is home to the research project
+
+
+
+
+
+ dc
+ creator
+ UIN
+ TAMU identifier of PI of a research project
+
+
+
+
+
+ dc
+ creator
+ pi
+ Name of Principal Investigator on research project
+
+
+
+
+
+ dc
+ creator
+ copi
+ Name of Co-Principal Investigator on research project
+
+
+
+
+
+ dc
+ description
+ role
+ Describes the role of the PI on the research project
+
+
+
+
+
+ dc
+ identifier
+ UIN
+ TAMU identifier of a PDAC
+
+
+
+
+
+ dc
+ description
+ findingAid
+ A single-level description of extent, scope, and content of the research data associated with a research project. For more details on archival practices, refer to the following resources: Extent https://saa-ts-dacs.github.io/dacs/06_part_I/03_chapter_02/05_extent.html, and Scope-and-Content https://saa-ts-dacs.github.io/dacs/06_part_I/04_chapter_03/01_scope_and_content.html
+
+
diff --git a/dspace/config/registries/local-types.xml b/dspace/config/registries/local-types.xml
index 564fd235a57..7771da382b0 100644
--- a/dspace/config/registries/local-types.xml
+++ b/dspace/config/registries/local-types.xml
@@ -69,4 +69,40 @@
Email of the Project Data Access Contact
+
+
+
+ local
+ awardNumber
+
+ Number identifying the individual grant that the sponsor awarded for the research project
+
+
+
+
+
+ local
+ projectStatus
+
+ Status of research project in Maestro
+
+
+
+
+
+ local
+ contact
+ email
+ Email address of a PDAC
+
+
+
+
+
+ local
+ contact
+ phone
+ Telephone number of a PDAC
+
+
diff --git a/dspace/config/spring/api/virtual-metadata.xml b/dspace/config/spring/api/virtual-metadata.xml
index 640b66fa040..918c95a5647 100644
--- a/dspace/config/spring/api/virtual-metadata.xml
+++ b/dspace/config/spring/api/virtual-metadata.xml
@@ -25,6 +25,8 @@
+
+
@@ -40,6 +42,7 @@
+
@@ -82,6 +85,33 @@
+
+
+
+
+
+
+
+ local.pdac.name
+
+
+
+ ,
+
+
+
+
+
+
+
+ dc.identifier.uri
+
+
+
+
+
+
+
diff --git a/dspace/modules/additions/src/main/java/org/dspace/content/RelationshipServiceImpl.java b/dspace/modules/additions/src/main/java/org/dspace/content/RelationshipServiceImpl.java
index fae76133afb..f564aef5440 100644
--- a/dspace/modules/additions/src/main/java/org/dspace/content/RelationshipServiceImpl.java
+++ b/dspace/modules/additions/src/main/java/org/dspace/content/RelationshipServiceImpl.java
@@ -9,6 +9,7 @@
import java.sql.SQLException;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
@@ -129,7 +130,6 @@ public Relationship create(Context context, Relationship relationship) throws SQ
Relationship relationshipToReturn = relationshipDAO.create(context, relationship);
updatePlaceInRelationship(context, relationshipToReturn, null, null, true, true);
update(context, relationshipToReturn);
-
//TAMU Customization - Track PDAC chain of custody for RDS
updatePdacChainOfCustody(PdacActionType.ADD, relationship, context);
//End TAMU Customization - Track PDAC chain of custody for RDS
@@ -1135,15 +1135,16 @@ public int countByItemRelationshipTypeAndRelatedList(Context context, UUID focus
// TAMU Customization - Track changes to PDAC custody via metadata
protected void updatePdacChainOfCustody(PdacActionType pdacActionType, Relationship relationship, Context context) {
- final String validLeftType = "isPDACForDataset";
- final String validRightType = "isDatasetAssignedToPDAC";
+ final List validLeftTypes = Arrays.asList("isPDACForDataset", "isPDACForProject");
+ final List validRightTypes = Arrays.asList("isDatasetAssignedToPDAC","isProjectAssignedtoPDAC");
final String mdSchema = MetadataSchemaEnum.DC.getName();
final String mdElement = "description";
final String mdQualifier = "chainOfCustody";
// verify that this is a pdac relationship
- if (relationship.getRelationshipType().getLeftwardType().equals(validLeftType)
- && relationship.getRelationshipType().getRightwardType().equals(validRightType)) {
+ if (validLeftTypes.contains(relationship.getRelationshipType().getLeftwardType())
+ && validRightTypes.contains(relationship.getRelationshipType().getRightwardType())) {
+
final String mdLanguage = "en";
final String timeOfAction = java.time.format.DateTimeFormatter.ISO_DATE_TIME
.format(java.time.LocalDateTime.now());