diff --git a/docs/development/how_to_write_xfel_calibrate_notebook_NBC.ipynb b/docs/development/how_to_write_xfel_calibrate_notebook_NBC.ipynb
index 62ae6c8ed5d5f3a307f295b163ff0cf57f01a0e6..608689c65f74eb2d0e20b649db712062552bafbf 100644
--- a/docs/development/how_to_write_xfel_calibrate_notebook_NBC.ipynb
+++ b/docs/development/how_to_write_xfel_calibrate_notebook_NBC.ipynb
@@ -19,7 +19,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 18,
+   "execution_count": 1,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -56,7 +56,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 19,
+   "execution_count": 2,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -106,14 +106,14 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 20,
+   "execution_count": 3,
    "metadata": {},
    "outputs": [
     {
      "name": "stdout",
      "output_type": "stream",
      "text": [
-      "The available source to correct for HED_IA1_EPX100-1 are ['HED_IA1_EPX100-1/DET/RECEIVER', 'HED_IA1_EPX100-1/DET/RECEIVER:daqOutput', 'HED_IA1_EPX100-1/DET/CONTROL']\n"
+      "The available source to correct for HED_IA1_EPX100-1 are ['HED_IA1_EPX100-1/DET/CONTROL', 'HED_IA1_EPX100-1/DET/RECEIVER', 'HED_IA1_EPX100-1/DET/RECEIVER:daqOutput']\n"
      ]
     }
    ],
@@ -153,7 +153,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 21,
+   "execution_count": 4,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -188,7 +188,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 22,
+   "execution_count": 5,
    "metadata": {},
    "outputs": [
     {
@@ -232,7 +232,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 23,
+   "execution_count": 6,
    "metadata": {},
    "outputs": [
     {
@@ -240,7 +240,7 @@
      "output_type": "stream",
      "text": [
       "Number of trains to correct is 1000\n",
-      "Correcting data: 1.0 s\n"
+      "Correcting data: 0.4 s\n"
      ]
     }
    ],
@@ -275,14 +275,14 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 24,
+   "execution_count": 7,
    "metadata": {},
    "outputs": [
     {
      "name": "stdout",
      "output_type": "stream",
      "text": [
-      "Writing corrected data: 1.2 s\n"
+      "Writing corrected data: 0.5 s\n"
      ]
     }
    ],
@@ -294,15 +294,15 @@
     "image_counts = run_dc[instrument_source, \"data.image.pixels\"].data_counts(labelled=False)\n",
     "\n",
     "step_timer.start()\n",
-    "\n",
+    "raw_file = run_dc.files[0]  # FileAccess object\n",
     "with DataFile(out_file, \"w\") as ofile:\n",
     "    # Create INDEX datasets.\n",
-    "    ofile.create_index(run_dc.train_ids, from_file=run_dc.files[0])\n",
+    "    ofile.create_index(run_dc.train_ids, from_file=raw_file)\n",
     "\n",
     "    # Create METDATA datasets\n",
     "    ofile.create_metadata(\n",
     "        like=run_dc,\n",
-    "        sequence=run_dc.run_metadata()[\"sequenceNumber\"],\n",
+    "        sequence=raw_file.sequence,\n",
     "        instrument_channels=(f\"{instrument_source}/data\",)\n",
     "    )\n",
     "    # Create Instrument section to later add corrected datasets.\n",
@@ -327,7 +327,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 25,
+   "execution_count": 8,
    "metadata": {},
    "outputs": [
     {
@@ -374,7 +374,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.7.6"
+   "version": "3.8.11"
   },
   "orig_nbformat": 4,
   "vscode": {
diff --git a/docs/development/how_to_write_xfel_calibrate_notebook_NBC.md b/docs/development/how_to_write_xfel_calibrate_notebook_NBC.md
index dd050d28cec558eea556468264d54a946912fcd5..f4e2c1f60418e28a3c85e13e4bb7852febe2da49 100644
--- a/docs/development/how_to_write_xfel_calibrate_notebook_NBC.md
+++ b/docs/development/how_to_write_xfel_calibrate_notebook_NBC.md
@@ -100,7 +100,7 @@ print(f"The available source to correct for {karabo_id} are {list(run_dc.all_sou
 step_timer = StepTimer()
 ```
 
-    The available source to correct for HED_IA1_EPX100-1 are ['HED_IA1_EPX100-1/DET/RECEIVER', 'HED_IA1_EPX100-1/DET/RECEIVER:daqOutput', 'HED_IA1_EPX100-1/DET/CONTROL']
+    The available source to correct for HED_IA1_EPX100-1 are ['HED_IA1_EPX100-1/DET/CONTROL', 'HED_IA1_EPX100-1/DET/RECEIVER', 'HED_IA1_EPX100-1/DET/RECEIVER:daqOutput']
 
 
 ## Read operating conditions from RAW data.
@@ -191,7 +191,7 @@ step_timer.done_step('Correcting data')
 ```
 
     Number of trains to correct is 1000
-    Correcting data: 1.0 s
+    Correcting data: 0.4 s
 
 
 ## Writing corrected data
@@ -205,15 +205,15 @@ instrument_source = "HED_IA1_EPX100-1/DET/RECEIVER:daqOutput"
 image_counts = run_dc[instrument_source, "data.image.pixels"].data_counts(labelled=False)
 
 step_timer.start()
-
+raw_file = run_dc.files[0]  # FileAccess object
 with DataFile(out_file, "w") as ofile:
     # Create INDEX datasets.
-    ofile.create_index(run_dc.train_ids, from_file=run_dc.files[0])
+    ofile.create_index(run_dc.train_ids, from_file=raw_file)
 
     # Create METDATA datasets
     ofile.create_metadata(
         like=run_dc,
-        sequence=run_dc.run_metadata()["sequenceNumber"],
+        sequence=raw_file.sequence,
         instrument_channels=(f"{instrument_source}/data",)
     )
     # Create Instrument section to later add corrected datasets.
@@ -228,7 +228,7 @@ with DataFile(out_file, "w") as ofile:
 step_timer.done_step('Writing corrected data')
 ```
 
-    Writing corrected data: 1.2 s
+    Writing corrected data: 0.5 s
 
 
 # Plotting results
@@ -249,7 +249,5 @@ plt.show()
 ```
 
 
-    
 ![png](how_to_write_xfel_calibrate_notebook_NBC_files/how_to_write_xfel_calibrate_notebook_NBC_14_0.png)
-    
 
diff --git a/notebooks/Gotthard2/Correction_Gotthard2_NBC.ipynb b/notebooks/Gotthard2/Correction_Gotthard2_NBC.ipynb
index ec806125d14ad6c1eb0171c5d4d862491c9ab7ee..b7424cb07c6e32c83bb24a08b42d7bcb48073174 100644
--- a/notebooks/Gotthard2/Correction_Gotthard2_NBC.ipynb
+++ b/notebooks/Gotthard2/Correction_Gotthard2_NBC.ipynb
@@ -122,8 +122,8 @@
     "from cal_tools.step_timing import StepTimer\n",
     "from cal_tools.tools import (\n",
     "    calcat_creation_time,\n",
-    "    write_constants_fragment,\n",
     "    map_seq_files,\n",
+    "    write_constants_fragment,\n",
     ")\n",
     "from XFELDetAna.plotting.heatmap import heatmapPlot\n",
     "\n",
@@ -486,12 +486,13 @@
     "        else:  # \"50um\"\n",
     "            data_stored, gain_stored, mask_stored = data_corr, gain, mask\n",
     "\n",
+    "    seq_file = dc.files[0]  # FileAccess\n",
     "    with DataFile(out_file, \"w\") as ofile:\n",
     "        # Create INDEX datasets.\n",
-    "        ofile.create_index(dc.train_ids, from_file=dc.files[0])\n",
+    "        ofile.create_index(dc.train_ids, from_file=seq_file)\n",
     "        ofile.create_metadata(\n",
     "            like=dc,\n",
-    "            sequence=dc.run_metadata()[\"sequenceNumber\"],\n",
+    "            sequence=seq_file.sequence,\n",
     "            instrument_channels=(f\"{corr_data_source}/data\",)\n",
     "        )\n",
     "\n",
diff --git a/notebooks/Jungfrau/Jungfrau_Gain_Correct_and_Verify_NBC.ipynb b/notebooks/Jungfrau/Jungfrau_Gain_Correct_and_Verify_NBC.ipynb
index ee81b4a8da982b1a1325f618f9057ed112ae144a..d9d393e879ce49c017c78f88211d1dfe47fdff5c 100644
--- a/notebooks/Jungfrau/Jungfrau_Gain_Correct_and_Verify_NBC.ipynb
+++ b/notebooks/Jungfrau/Jungfrau_Gain_Correct_and_Verify_NBC.ipynb
@@ -686,9 +686,10 @@
     "        # Create CORR files and add corrected data sections.\n",
     "        image_counts = seq_dc[instrument_src_kda, \"data.adc\"].data_counts(labelled=False)\n",
     "\n",
+    "        seq_file = seq_dc.files[0]  # FileAccess\n",
     "        with DataFile(out_file, 'w') as outp_file:\n",
     "            # Create INDEX datasets.\n",
-    "            outp_file.create_index(seq_dc.train_ids, from_file=seq_dc.files[0])\n",
+    "            outp_file.create_index(seq_dc.train_ids, from_file=seq_file)\n",
     "\n",
     "            # Create Instrument section to later add corrected datasets.\n",
     "            outp_source = outp_file.create_instrument_source(instrument_src_kda)\n",
@@ -723,7 +724,7 @@
     "            # Create METDATA datasets\n",
     "            outp_file.create_metadata(\n",
     "                like=seq_dc,\n",
-    "                sequence=seq_dc.run_metadata()[\"sequenceNumber\"],\n",
+    "                sequence=seq_file.sequence,\n",
     "            )\n",
     "\n",
     "        step_timer.done_step(f'Saving data time.')\n",
diff --git a/notebooks/ePix100/Correction_ePix100_NBC.ipynb b/notebooks/ePix100/Correction_ePix100_NBC.ipynb
index bc3a719f39ae39c8a6e2a1228cb51ab48740d75c..8c229d36e30483b2e05c362c977ea11ff1a91ea7 100644
--- a/notebooks/ePix100/Correction_ePix100_NBC.ipynb
+++ b/notebooks/ePix100/Correction_ePix100_NBC.ipynb
@@ -602,13 +602,13 @@
     "    # Write corrected data.\n",
     "    with DataFile(out_file, \"w\") as ofile:\n",
     "        dataset_chunk = ((chunk_size_idim,) + oshape[1:])  # e.g. (1, pixels_x, pixels_y) \n",
-    "\n",
+    "        seq_file = seq_dc.files[0]  # FileAccess\n",
     "        # Create INDEX datasets.\n",
     "        ofile.create_index(seq_dc.train_ids, from_file=seq_dc.files[0])\n",
     "        # Create METDATA datasets\n",
     "        ofile.create_metadata(\n",
     "            like=seq_dc,\n",
-    "            sequence=seq_dc.run_metadata()[\"sequenceNumber\"],\n",
+    "            sequence=seq_file.sequence,\n",
     "            instrument_channels=(f'{instrument_src}/data',)\n",
     "        )\n",
     "        # Create Instrument section to later add corrected datasets.\n",
diff --git a/notebooks/pnCCD/Correct_pnCCD_NBC.ipynb b/notebooks/pnCCD/Correct_pnCCD_NBC.ipynb
index 3306fa388ece967b786ac14afacfafb813553755..ece51d23ea9ae3d9d61985df6040881beb56ebc1 100644
--- a/notebooks/pnCCD/Correct_pnCCD_NBC.ipynb
+++ b/notebooks/pnCCD/Correct_pnCCD_NBC.ipynb
@@ -613,13 +613,13 @@
     "    image_counts = seq_dc[instrument_src, \"data.image\"].data_counts(labelled=False)\n",
     "    dataset_chunk = ((chunk_size_idim,) + corr_arrays[\"pixels\"].shape[1:])  # e.g. (1, pixels_x, pixels_y) \n",
     "    with DataFile(out_file, 'w') as ofile:\n",
-    "\n",
+    "        seq_file = seq_dc.files[0]\n",
     "        # Create INDEX datasets.\n",
-    "        ofile.create_index(seq_dc.train_ids, from_file=seq_dc.files[0])\n",
+    "        ofile.create_index(seq_dc.train_ids, from_file=seq_file)\n",
     "        # Create METDATA datasets\n",
     "        ofile.create_metadata(\n",
     "            like=seq_dc,\n",
-    "            sequence=seq_dc.run_metadata()[\"sequenceNumber\"],\n",
+    "            sequence=seq_file.sequence,\n",
     "            instrument_channels=(f\"{instrument_src}/data\",)\n",
     "        )\n",
     "\n",
diff --git a/src/cal_tools/tools.py b/src/cal_tools/tools.py
index c72a729bb59a2d0ef14b4c99b2785639b016fd08..d9e5e5f9e420a41dfff546b38e95a5fbd81c7bf8 100644
--- a/src/cal_tools/tools.py
+++ b/src/cal_tools/tools.py
@@ -1065,20 +1065,3 @@ def raw_data_location_string(proposal: str, runs: List[int]):
             " a preceding 'p'. Example: 'p900203'")
 
     return f"proposal:{proposal} runs:{' '.join(map(str, runs))}"
-
-
-def extract_sequence_number(f: str):
-    """Extract sequence number from input.
-    Args:
-        f (str):  EXDF data filename.
-            e.g. /gpfs/exfel/exp/CALLAB/202130/p900203/raw/r9046/RAW-R9046-EPIX01-S00000.h5
-    Raises:
-        ValueError: Sxxxxx is missing from input file
-    Returns:
-        int: sequence number.
-    """
-    match = re.search(r'-S(\d+)', f)
-    if match:
-        return int(match.group(1))
-    else:
-        raise ValueError(f"No matching pattern for a sequence in the filename {f}.")
\ No newline at end of file
diff --git a/tests/test_cal_tools.py b/tests/test_cal_tools.py
index 795d9ce97d40970321ec73d018938572d1be7708..577a82a4f57122b6153cd4ef92e5f548a424f1de 100644
--- a/tests/test_cal_tools.py
+++ b/tests/test_cal_tools.py
@@ -13,7 +13,6 @@ from cal_tools.plotting import show_processed_modules
 from cal_tools.tools import (
     creation_date_file_metadata,
     creation_date_train_timestamp,
-    extract_sequence_number,
     get_dir_creation_date,
     get_from_db,
     get_pdu_from_db,
@@ -582,14 +581,3 @@ def test_raise_raw_data_location_string():
 
     with pytest.raises(ValueError):
         raw_data_location_string("900203", [9008, 9009, 9010])
-
-
-def test_extract_sequence_number():
-    seq_num = extract_sequence_number(
-        "/gpfs/exfel/exp/CALLAB/202031/p900113/raw/r9983/RAW-R9983-AGIPD00-S00012.h5")
-    assert seq_num == 12
-
-
-def test_raise_extract_sequence_number():
-    with pytest.raises(ValueError):
-        extract_sequence_number("/gpfs/exfel/exp/CALLAB/202031/p900113/raw/r9983")