diff --git a/src/dird/backup.c b/src/dird/backup.c
index 2da5ea5..c7f1637 100644
--- a/src/dird/backup.c
+++ b/src/dird/backup.c
@@ -691,7 +691,6 @@ void native_backup_cleanup(JCR *jcr, int TermCode)
    const char *term_msg;
    char term_code[100];
    int msg_type = M_INFO;
-   MEDIA_DBR mr;
    CLIENT_DBR cr;
 
    Dmsg2(100, "Enter backup_cleanup %d %c\n", TermCode, TermCode);
@@ -723,13 +722,6 @@ void native_backup_cleanup(JCR *jcr, int TermCode)
          db_strerror(jcr->db));
    }
 
-   bstrncpy(mr.VolumeName, jcr->VolumeName, sizeof(mr.VolumeName));
-   if (!db_get_media_record(jcr, jcr->db, &mr)) {
-      Jmsg(jcr, M_WARNING, 0, _("Error getting Media record for Volume \"%s\": ERR=%s"),
-         mr.VolumeName, db_strerror(jcr->db));
-      jcr->setJobStatus(JS_ErrorTerminated);
-   }
-
    update_bootstrap_file(jcr);
 
    switch (jcr->JobStatus) {
@@ -772,7 +764,7 @@ void native_backup_cleanup(JCR *jcr, int TermCode)
          break;
    }
 
-   generate_backup_summary(jcr, &mr, &cr, msg_type, term_msg);
+   generate_backup_summary(jcr, &cr, msg_type, term_msg);
 
    Dmsg0(100, "Leave backup_cleanup()\n");
 }
@@ -855,8 +847,7 @@ void update_bootstrap_file(JCR *jcr)
  *    - native_vbackup_cleanup e.g. virtual backups
  *    - ndmp_backup_cleanup e.g. NDMP backups
  */
-void generate_backup_summary(JCR *jcr, MEDIA_DBR *mr, CLIENT_DBR *cr,
-                             int msg_type, const char *term_msg)
+void generate_backup_summary(JCR *jcr, CLIENT_DBR *cr, int msg_type, const char *term_msg)
 {
    char sdt[50], edt[50], schedt[50], gdt[50];
    char ec1[30], ec2[30], ec3[30], ec4[30], ec5[30], compress[50];
@@ -864,6 +855,7 @@ void generate_backup_summary(JCR *jcr, MEDIA_DBR *mr, CLIENT_DBR *cr,
    char fd_term_msg[100], sd_term_msg[100];
    double kbps, compression;
    utime_t RunTime;
+   MEDIA_DBR mr;
    POOL_MEM level_info,
             statistics,
             quota_info,
@@ -899,6 +891,23 @@ void generate_backup_summary(JCR *jcr, MEDIA_DBR *mr, CLIENT_DBR *cr,
       jcr->VolumeName[0] = 0;         /* none */
    }
 
+   if (jcr->VolumeName[0]) {
+      /*
+       * Find last volume name. Multiple vols are separated by |
+       */
+      char *p = strrchr(jcr->VolumeName, '|');
+      if (p) {
+         p++;                         /* skip | */
+      } else {
+         p = jcr->VolumeName;     /* no |, take full name */
+      }
+      bstrncpy(mr.VolumeName, p, sizeof(mr.VolumeName));
+      if (!db_get_media_record(jcr, jcr->db, &mr)) {
+         Jmsg(jcr, M_WARNING, 0, _("Error getting Media record for Volume \"%s\": ERR=%s"),
+              mr.VolumeName, db_strerror(jcr->db));
+      }
+   }
+
    if (jcr->ReadBytes == 0) {
       bstrncpy(compress, "None", sizeof(compress));
    } else {
@@ -1085,8 +1094,8 @@ void generate_backup_summary(JCR *jcr, MEDIA_DBR *mr, CLIENT_DBR *cr,
         jcr->VolumeName,
         jcr->VolSessionId,
         jcr->VolSessionTime,
-        edit_uint64_with_commas(mr->VolBytes, ec7),
-        edit_uint64_with_suffix(mr->VolBytes, ec8),
+        edit_uint64_with_commas(mr.VolBytes, ec7),
+        edit_uint64_with_suffix(mr.VolBytes, ec8),
         daemon_status.c_str(),
         term_msg);
 }
diff --git a/src/dird/ndmp_dma.c b/src/dird/ndmp_dma.c
index f516c6c..29cc14f 100644
--- a/src/dird/ndmp_dma.c
+++ b/src/dird/ndmp_dma.c
@@ -2019,7 +2019,6 @@ void ndmp_backup_cleanup(JCR *jcr, int TermCode)
    const char *term_msg;
    char term_code[100];
    int msg_type = M_INFO;
-   MEDIA_DBR mr;
    CLIENT_DBR cr;
 
    Dmsg2(100, "Enter ndmp_backup_cleanup %d %c\n", TermCode, TermCode);
@@ -2051,13 +2050,6 @@ void ndmp_backup_cleanup(JCR *jcr, int TermCode)
          db_strerror(jcr->db));
    }
 
-   bstrncpy(mr.VolumeName, jcr->VolumeName, sizeof(mr.VolumeName));
-   if (!db_get_media_record(jcr, jcr->db, &mr)) {
-      Jmsg(jcr, M_WARNING, 0, _("Error getting Media record for Volume \"%s\": ERR=%s"),
-         mr.VolumeName, db_strerror(jcr->db));
-      jcr->setJobStatus(JS_ErrorTerminated);
-   }
-
    update_bootstrap_file(jcr);
 
    switch (jcr->JobStatus) {
@@ -2097,7 +2089,7 @@ void ndmp_backup_cleanup(JCR *jcr, int TermCode)
          break;
    }
 
-   generate_backup_summary(jcr, &mr, &cr, msg_type, term_msg);
+   generate_backup_summary(jcr, &cr, msg_type, term_msg);
 
    Dmsg0(100, "Leave ndmp_backup_cleanup\n");
 }
diff --git a/src/dird/protos.h b/src/dird/protos.h
index 19f3438..3051848 100644
--- a/src/dird/protos.h
+++ b/src/dird/protos.h
@@ -53,8 +53,8 @@ bool do_native_backup(JCR *jcr);
 void native_backup_cleanup(JCR *jcr, int TermCode);
 void update_bootstrap_file(JCR *jcr);
 bool send_accurate_current_files(JCR *jcr);
-void generate_backup_summary(JCR *jcr, MEDIA_DBR *mr, CLIENT_DBR *cr,
-                             int msg_type, const char *term_msg);
+void generate_backup_summary(JCR *jcr, CLIENT_DBR *cr, int msg_type,
+                             const char *term_msg);
 
 /* vbackup.c */
 bool do_native_vbackup_init(JCR *jcr);
diff --git a/src/dird/vbackup.c b/src/dird/vbackup.c
index d3f41d9..9657ce4 100644
--- a/src/dird/vbackup.c
+++ b/src/dird/vbackup.c
@@ -294,7 +294,6 @@ void native_vbackup_cleanup(JCR *jcr, int TermCode)
    char term_code[100];
    const char *term_msg;
    int msg_type = M_INFO;
-   MEDIA_DBR mr;
    CLIENT_DBR cr;
    POOL_MEM query(PM_MESSAGE);
 
@@ -328,13 +327,6 @@ void native_vbackup_cleanup(JCR *jcr, int TermCode)
          db_strerror(jcr->db));
    }
 
-   bstrncpy(mr.VolumeName, jcr->VolumeName, sizeof(mr.VolumeName));
-   if (!db_get_media_record(jcr, jcr->db, &mr)) {
-      Jmsg(jcr, M_WARNING, 0, _("Error getting Media record for Volume \"%s\": ERR=%s"),
-         mr.VolumeName, db_strerror(jcr->db));
-      jcr->setJobStatus(JS_ErrorTerminated);
-   }
-
    update_bootstrap_file(jcr);
 
    switch (jcr->JobStatus) {
@@ -371,7 +363,7 @@ void native_vbackup_cleanup(JCR *jcr, int TermCode)
          break;
    }
 
-   generate_backup_summary(jcr, &mr, &cr, msg_type, term_msg);
+   generate_backup_summary(jcr, &cr, msg_type, term_msg);
 
    Dmsg0(100, "Leave vbackup_cleanup()\n");
 }
