diff --git a/notebooks/LPD/LPDChar_Darks_NBC.ipynb b/notebooks/LPD/LPDChar_Darks_NBC.ipynb
index d6ff625f12155701a5c84355fdc2530560a828c3..e4050bcba36a963a2cc1bdbb788f4955c68a04af 100644
--- a/notebooks/LPD/LPDChar_Darks_NBC.ipynb
+++ b/notebooks/LPD/LPDChar_Darks_NBC.ipynb
@@ -386,8 +386,11 @@
     "detinst = getattr(Detectors, dinstance)\n",
     "print('Retrieve pre-existing constants for comparison.')\n",
     "for cap in capacitor_settings:\n",
+    "    old_const[cap] = {}\n",
+    "    old_mdata[cap] = {}\n",
     "    for qm in offset_g[cap].keys():\n",
-    "\n",
+    "        old_const[cap][qm] = {}\n",
+    "        old_mdata[cap][qm] = {}\n",
     "        qm_db = qm_dict[qm]\n",
     "        karabo_da = qm_db[\"karabo_da\"]\n",
     "\n",
@@ -411,22 +414,34 @@
     "                                      creation_time=creation_time,\n",
     "                                      verbosity=2, timeout=cal_db_timeout)\n",
     "\n",
-    "            old_const[const] = data\n",
-    "\n",
-    "            # TODO: Save old constant file paths (meta_only)\n",
-    "            # instead of retrieving the whole data\n",
-    "            if mdata is not None and data is not None:\n",
-    "                time = mdata.calibration_constant_version.begin_at\n",
-    "                old_mdata[const] = time.isoformat()\n",
-    "                os.makedirs('{}/old/'.format(out_folder), exist_ok=True)\n",
-    "                save_const_to_h5(qm_db[\"db_module\"], karabo_id,\n",
-    "                                 constant, condition, data,\n",
-    "                                 file_loc, report, creation_time,\n",
-    "                                 f'{out_folder}/old/')\n",
+    "            old_const[cap][qm][const] = data\n",
+    "\n",
+    "            if mdata is None or data is None:\n",
+    "                old_mdata[cap][qm][const] = {\n",
+    "                    \"timestamp\": \"Not found\",\n",
+    "                    \"filepath\": None,\n",
+    "                    \"h5path\": None\n",
+    "                }\n",
     "            else:\n",
-    "                old_mdata[const] = \"Not found\"\n",
-    "    with open(f\"{out_folder}/module_mapping_{qm}.yml\",\"w\") as fd:\n",
-    "        yaml.safe_dump({\"module_mapping\": {qm: qm_db[\"db_module\"]}}, fd)"
+    "                timestamp = mdata.calibration_constant_version.begin_at.isoformat()\n",
+    "                filepath = os.path.join(\n",
+    "                    mdata.calibration_constant_version.hdf5path,\n",
+    "                    mdata.calibration_constant_version.filename\n",
+    "                )\n",
+    "                h5path = mdata.calibration_constant_version.h5path\n",
+    "                old_mdata[cap][qm][const] = {\n",
+    "                    \"timestamp\": timestamp,\n",
+    "                    \"filepath\": filepath,\n",
+    "                    \"h5path\": h5path\n",
+    "                }\n",
+    "\n",
+    "        with open(f\"{out_folder}/module_metadata_{qm}.yml\",\"w\") as fd:\n",
+    "            yaml.safe_dump(\n",
+    "                {\n",
+    "                    \"module\": qm,\n",
+    "                    \"pdu\": qm_db[\"db_module\"],\n",
+    "                    \"old-constants\": old_mdata[cap][qm]\n",
+    "                }, fd)"
    ]
   },
   {
@@ -836,9 +851,14 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "display(Markdown('The following pre-existing constants are used for comparison: \\n'))\n",
-    "for key in old_mdata:\n",
-    "    display(Markdown('**{}** at {}'.format(key, old_mdata[key])))"
+    "time_summary = []\n",
+    "for cap, cap_data in old_mdata.items():\n",
+    "    time_summary.append(f\"The following pre-existing constants are used for comparison for capacitor setting **{cap}**:\")\n",
+    "    for qm, qm_data in cap_data.items():\n",
+    "        time_summary.append(f\"- Module {qm}\")\n",
+    "        for const, const_data in qm_data.items():\n",
+    "            time_summary.append(f\"    - {const} created at {const_data['timestamp']}\")\n",
+    "display(Markdown(\"\\n\".join(time_summary)))"
    ]
   },
   {
@@ -884,16 +904,16 @@
     "                                x_ticklabels=np.arange(16)+1,\n",
     "                                x_ticks=np.arange(16)+0.5)\n",
     "\n",
-    "                if old_const[const] is not None:\n",
+    "                if old_const[cap][qm][const] is not None:\n",
     "                    ax = fig.add_subplot(122)\n",
     "\n",
-    "                    dataold = np.copy(old_const[const][:, :, :, gain])\n",
+    "                    dataold = np.copy(old_const[cap][qm][const][:, :, :, gain])\n",
     "                    \n",
     "                    label = '$\\Delta$ {}'.format(label)\n",
     "\n",
     "                    if const != 'BadPixelsDark':\n",
-    "                        if old_const['BadPixelsDark'] is not None:\n",
-    "                            dataold[old_const['BadPixelsDark'][:, :, :, gain] > 0] = np.nan\n",
+    "                        if old_const[cap][qm]['BadPixelsDark'] is not None:\n",
+    "                            dataold[old_const[cap][qm]['BadPixelsDark'][:, :, :, gain] > 0] = np.nan\n",
     "                        else:\n",
     "                            dataold[:] = np.nan\n",
     "                    else:\n",
@@ -1135,12 +1155,12 @@
     "            for bit in bits:\n",
     "                l_data.append(np.count_nonzero(badpix_g[cap][qm][:,:,:,gain].astype(np.uint32) & bit.value))\n",
     "            \n",
-    "            if old_const['BadPixelsDark'] is not None:\n",
-    "                dataold = np.copy(old_const['BadPixelsDark'][:, :, :, gain])\n",
+    "            if old_const[cap][qm]['BadPixelsDark'] is not None:\n",
+    "                dataold = np.copy(old_const[cap][qm]['BadPixelsDark'][:, :, :, gain])\n",
     "                datau32old = dataold.astype(np.uint32)\n",
     "                l_data_old.append(len(datau32old[datau32old>0].flatten()))\n",
     "                for bit in bits:\n",
-    "                    l_data_old.append(np.count_nonzero(old_const['BadPixelsDark'][:, :, :, gain].astype(np.uint32) & bit.value))\n",
+    "                    l_data_old.append(np.count_nonzero(old_const[cap][qm]['BadPixelsDark'][:, :, :, gain].astype(np.uint32) & bit.value))\n",
     "\n",
     "            l_data_name = ['All bad pixels', 'NOISE_OUT_OF_THRESHOLD', \n",
     "                           'OFFSET_OUT_OF_THRESHOLD', 'OFFSET_NOISE_EVAL_ERROR']\n",
@@ -1151,7 +1171,7 @@
     "            for i in range(len(l_data)):\n",
     "                line = [f'{l_data_name[i]}, gain {gain_names[gain]}', l_threshold[i], l_data[i]]\n",
     "            \n",
-    "                if old_const['BadPixelsDark'] is not None:\n",
+    "                if old_const[cap][qm]['BadPixelsDark'] is not None:\n",
     "                    line += [l_data_old[i]]\n",
     "                else:\n",
     "                    line += ['-']\n",
@@ -1191,9 +1211,9 @@
     "            data = np.copy(res[cap][qm][const])\n",
     "            data[res[cap][qm]['BadPixelsDark']>0] = np.nan\n",
     "            \n",
-    "            if old_const[const] is not None and old_const['BadPixelsDark'] is not None :\n",
-    "                dataold = np.copy(old_const[const])\n",
-    "                dataold[old_const['BadPixelsDark']>0] = np.nan\n",
+    "            if old_const[cap][qm][const] is not None and old_const[cap][qm]['BadPixelsDark'] is not None :\n",
+    "                dataold = np.copy(old_const[cap][qm][const])\n",
+    "                dataold[old_const[cap][qm]['BadPixelsDark']>0] = np.nan\n",
     "\n",
     "            f_list = [np.nanmedian, np.nanmean, np.nanstd, np.nanmin, np.nanmax]\n",
     "            n_list = ['Median', 'Mean', 'Std', 'Min', 'Max']\n",
@@ -1202,7 +1222,7 @@
     "                line = [n_list[i]]\n",
     "                for gain in range(3):\n",
     "                    line.append('{:6.1f}'.format(f(data[...,gain])))\n",
-    "                    if old_const[const] is not None and old_const['BadPixelsDark'] is not None:\n",
+    "                    if old_const[cap][qm][const] is not None and old_const[cap][qm]['BadPixelsDark'] is not None:\n",
     "                        line.append('{:6.1f}'.format(f(dataold[...,gain])))\n",
     "                    else:\n",
     "                        line.append('-')\n",