diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 03f5ebed40d437918f01fdcfcfb3edea047d628d..bf7355aa6e19f1c29ab020d8524ff204ffc9e7cc 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -389,7 +389,7 @@ uploadQC:
       done
       echo all old mRNA QC RIDs deleted
     fi
-      rid=$(singularity run 'docker://gudmaprbk/deriva1.4:1.0.0' python3 ./workflow/scripts/upload_qc.py -r 17-BTFJ -e 17-BVDJ -p "Single Read" -s forward -l 35 -w 5 -f 1 -n "This is a test mRNA QC" -o staging.gudmap.org -c ${cookie} -u F)
+      rid=$(singularity run 'docker://gudmaprbk/deriva1.4:1.0.0' python3 ./workflow/scripts/upload_qc.py -r 17-BTFJ -e 17-BVDJ -p "Single Read" -s forward -l 35 -w 5 -f 1 -t 1 -n "This is a test mRNA QC" -o staging.gudmap.org -c ${cookie} -u F)
       echo ${rid} test mRNA QC created
 
 uploadProcessedFile:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f1e3982fd8d158687f1604980ac7eea9790fc882..206089b5618d4bbfc5396115e4cca79d7005aca6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,7 @@
 # v1.0.0 (in development)
 **User Facing**
 * Add link to reference builder script
+* Output median TIN to mRNA_QC table
 
 **Background**
 * Change consistency test to check if +/- 1% of standard
diff --git a/workflow/rna-seq.nf b/workflow/rna-seq.nf
index 8c247c2508b426992237fa5cfe5fb496e0f99579..21a2ace4d5ac68832c9f80bd3bf38c9e9cc96256 100644
--- a/workflow/rna-seq.nf
+++ b/workflow/rna-seq.nf
@@ -1734,6 +1734,12 @@ tinMedInfer_fl.splitCsv(sep: ",", header: false).separate(
   tinMedInfer
 )
 
+// Replicate inferred median TIN for multiple process inputs
+tinMedInfer.into {
+  tinMedInfer_aggrQC
+  tinMedInfer_uploadQC
+}
+
 /*
  *aggrQC: aggregate QC from processes as well as metadata and run MultiQC
 */
@@ -1769,7 +1775,7 @@ process aggrQC {
     val readLengthI from readLengthInfer_aggrQC
     val rawReadsI from rawReadsInfer_aggrQC
     val assignedReadsI from assignedReadsInfer_aggrQC
-    val tinMedI from tinMedInfer
+    val tinMedI from tinMedInfer_aggrQC
     val studyRID from studyRID_aggrQC
     val expRID from expRID_aggrQC
     val fastqCountError_aggrQC
@@ -1869,6 +1875,7 @@ process uploadQC {
     val length from readLengthInfer_uploadQC
     val rawCount from rawReadsInfer_uploadQC
     val finalCount from assignedReadsInfer_uploadQC
+    val tinMed from tinMedInfer_uploadQC
     val fastqCountError_uploadQC
     val fastqReadError_uploadQC
     val speciesError_uploadQC
@@ -1912,7 +1919,7 @@ process uploadQC {
     echo LOG: all old mRNA QC RIDs deleted >> ${repRID}.uploadQC.log
   fi
 
-  qc_rid=\$(python3 ${script_uploadQC} -r ${repRID} -e ${executionRunRID} -p "\${end}" -s ${stranded} -l ${length} -w ${rawCount} -f ${finalCount} -o ${source} -c \${cookie} -u F)
+  qc_rid=\$(python3 ${script_uploadQC} -r ${repRID} -e ${executionRunRID} -p "\${end}" -s ${stranded} -l ${length} -w ${rawCount} -f ${finalCount} -t ${tinMed} -o ${source} -c \${cookie} -u F)
   echo LOG: mRNA QC RID uploaded - \${qc_rid} >> ${repRID}.uploadQC.log
 
   echo "\${qc_rid}" > qcRID.csv
diff --git a/workflow/scripts/upload_qc.py b/workflow/scripts/upload_qc.py
index 930896d3abce8882aca7985a4ad304904f6b3a44..b842a7a36cc47fa4f599ab086a5c1b3dbece437a 100644
--- a/workflow/scripts/upload_qc.py
+++ b/workflow/scripts/upload_qc.py
@@ -12,6 +12,7 @@ def get_args():
     parser.add_argument('-l', '--length', help="median read length", required=True)
     parser.add_argument('-w', '--rawCount', help="raw count", required=True)
     parser.add_argument('-f', '--assignedCount', help="final assigned count", required=True)
+    parser.add_argument('-t', '--tin', help="median TIN", required=True)
     parser.add_argument('-n', '--notes', help="notes", default="", required=False)
     parser.add_argument('-o', '--host', help="datahub host", required=True)
     parser.add_argument('-c', '--cookie', help="cookie token", required=True)
@@ -33,6 +34,7 @@ def main(hostname, catalog_number, credential):
             "Median_Read_Length": args.length,
             "Raw_Count": args.rawCount,
             "Final_Count": args.assignedCount,
+            "Median_TIN": args.tin,
             "Notes": args.notes
         }
         entities = run_table.insert([run_data])
@@ -47,6 +49,7 @@ def main(hostname, catalog_number, credential):
             "Median_Read_Length": args.length,
             "Raw_Count": args.rawCount,
             "Final_Count": args.assignedCount,
+            "Median_TIN": args.tin,
             "Notes": args.notes
         }
         entities = run_table.update([run_data])