diff --git a/notebooks/DynamicFF/Characterize_DynamicFF_NBC.ipynb b/notebooks/DynamicFF/Characterize_DynamicFF_NBC.ipynb
index dc41c2ed4b6ea603d0f89d33d34b5a24b7a1662f..60b07daeb644a80e6427440b6ffcf981c209ce66 100644
--- a/notebooks/DynamicFF/Characterize_DynamicFF_NBC.ipynb
+++ b/notebooks/DynamicFF/Characterize_DynamicFF_NBC.ipynb
@@ -22,15 +22,16 @@
     "metadata_folder = \"\"  # Directory containing calibration_metadata.yml when run by xfel-calibrate\n",
     "run_high = 1 # run number in which dark data was recorded, required\n",
     "run_low = 2 # run number in which flat-field data was recorded, required\n",
-    "operation_mode = \"TI_DynamicFF\"  # Detector operation mode, optional (defaults to \"TI_DynamicFF\")\n",
+    "operation_mode = \"PCA_DynamicFF\"  # Detector operation mode, optional (defaults to \"PCA_DynamicFF\")\n",
     "\n",
     "# Data files parameters.\n",
     "karabo_da = ['-1'] # data aggregators\n",
     "karabo_id = \"SPB_MIC_HPVX2\" # karabo prefix of Shimadzu HPV-X2 devices\n",
     "\n",
     "# Database access parameters.\n",
-    "cal_db_interface = \"tcp://max-exfl-cal001:8021\"  # calibration DB interface to use\n",
-    "db_output = True # if True, the notebook sends dark constants to the calibration database\n",
+    "cal_db_interface = \"tcp://max-exfl-cal001:8021\"  # Unused, calibration DB interface to use\n",
+    "cal_db_timeout = 30000  # Unused, calibration DB timeout\n",
+    "db_output = False # if True, the notebook sends dark constants to the calibration database\n",
     "local_output = True # if True, the notebook saves dark constants locally\n",
     "\n",
     "# Calibration constants parameters\n",
@@ -63,10 +64,7 @@
     "from cal_tools.step_timing import StepTimer\n",
     "from cal_tools.tools import (\n",
     "    get_dir_creation_date,\n",
-    "    get_random_db_interface,\n",
-    "    get_report,\n",
-    "    save_dict_to_hdf5,\n",
-    "    run_prop_seq_from_path,\n",
+    "    save_dict_to_hdf5\n",
     ")\n",
     "from cal_tools.restful_config import calibration_client\n",
     "from cal_tools.shimadzu import ShimadzuHPVX2\n",
@@ -81,16 +79,12 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "cal_db_interface = get_random_db_interface(cal_db_interface)\n",
-    "print(f'Calibration database interface: {cal_db_interface}')\n",
-    "print()\n",
-    "\n",
     "cc = calibration_client()\n",
     "pdus = cc.get_all_phy_det_units_from_detector(\n",
-    "    {\"detector_identifier\": karabo_id})\n",
+    "    {\"detector_identifier\": karabo_id})  # TODO: Use creation_time for snapshot_at\n",
     "\n",
     "if not pdus[\"success\"]:\n",
-    "    raise ValueException(\"Failed to retrieve PDUs\")\n",
+    "    raise ValueError(\"Failed to retrieve PDUs\")\n",
     "\n",
     "detector_info = pdus['data'][0]['detector']\n",
     "detector = ShimadzuHPVX2(detector_info[\"source_name_pattern\"])\n",
@@ -117,6 +111,7 @@
     "    )\n",
     "\n",
     "constants = {}\n",
+    "\n",
     "step_timer = StepTimer()"
    ]
   },
@@ -165,7 +160,7 @@
     "\n",
     "    # process\n",
     "    step_timer.start()\n",
-    "    dark = dffc.process_dark(images_dark)\n",
+    "    dark = dffc.process_dark(images_dark)  # Amounts to a per-pixel mean right now.\n",
     "\n",
     "    # put results in the dict\n",
     "    module_constants = constants.setdefault(meta[\"db_module\"], {})\n",
@@ -224,8 +219,8 @@
     "    dark_conditions = constants[meta[\"db_module\"]][\"Offset\"][\"conditions\"]\n",
     "\n",
     "    if conditions != dark_conditions:\n",
-    "        ValueError(\"The conditions for flat-field run does not match \"\n",
-    "                   \"the dark run conditions. Skip flat-field characterization.\")\n",
+    "        raise ValueError(f\"The conditions for flat-field run {conditions}) do not match \"\n",
+    "                         f\"the dark run conditions ({dark_conditions}). Skip flat-field characterization.\")\n",
     "\n",
     "    key_data = flat_dc[source_name][image_key]\n",
     "    images_flat = key_data.ndarray()\n",
diff --git a/notebooks/DynamicFF/Correct_DynamicFF_NBC.ipynb b/notebooks/DynamicFF/Correct_DynamicFF_NBC.ipynb
index c3a875eca5afdc2126b061d9fd67d037fd42b2b1..e570cdf6df7df2e833c7685db7e46f21a0a4d114 100644
--- a/notebooks/DynamicFF/Correct_DynamicFF_NBC.ipynb
+++ b/notebooks/DynamicFF/Correct_DynamicFF_NBC.ipynb
@@ -27,7 +27,8 @@
     "karabo_id = \"SPB_MIC_HPVX2\"  # karabo prefix of Shimadzu HPV-X2 devices\n",
     "\n",
     "# Database access parameters.\n",
-    "cal_db_interface = \"tcp://max-exfl-cal001:8021\"  # calibration DB interface to use\n",
+    "cal_db_interface = \"tcp://max-exfl-cal001:8021\"  # Unused, calibration DB interface to use\n",
+    "cal_db_timeout = 30000  # Unused, calibration DB timeout\n",
     "\n",
     "# Correction parameters\n",
     "n_components = 20  # number of principal components of flat-field to use in correction\n",
@@ -83,10 +84,10 @@
     "\n",
     "cc = calibration_client()\n",
     "pdus = cc.get_all_phy_det_units_from_detector(\n",
-    "    {\"detector_identifier\": karabo_id})\n",
+    "    {\"detector_identifier\": karabo_id})  # TODO: Use creation_time for snapshot_at\n",
     "\n",
     "if not pdus[\"success\"]:\n",
-    "    raise ValueException(\"Failed to retrieve PDUs\")\n",
+    "    raise ValueError(\"Failed to retrieve PDUs\")\n",
     "\n",
     "detector_info = pdus['data'][0]['detector']\n",
     "detector = ShimadzuHPVX2(detector_info[\"source_name_pattern\"])\n",
@@ -218,7 +219,7 @@
     "    # correct and write sequence files\n",
     "    for seq_id, train_mask in sequence_trains(train_ids, 200):\n",
     "        step_timer.start()\n",
-    "        print('* sequience', seq_id)\n",
+    "        print('* sequence', seq_id)\n",
     "        seq_train_ids = train_ids[train_mask]\n",
     "        seq_timestamps = ts[train_mask]\n",
     "        dc_seq = dc.select_trains(by_id[seq_train_ids])\n",
@@ -238,8 +239,8 @@
     "        for da in process_modules:\n",
     "            instrument_source = modules[da][\"raw_source_name\"]\n",
     "            keydata = dc_seq[instrument_source][image_key].drop_empty_trains()\n",
-    "            count = keydata.data_counts()\n",
-    "            i = np.flatnonzero(count.values)\n",
+    "            count = keydata.data_counts(labelled=False)\n",
+    "            i = np.flatnonzero(count)\n",
     "            raw_images = keydata.select_trains(np.s_[i]).ndarray()\n",
     "\n",
     "            # not pulse resolved\n",