diff --git a/src/toolbox_scs/constants.py b/src/toolbox_scs/constants.py
index 72eee76545de975d59b7eeaa2c704c5b51f93a46..5ef8560a642057c793fb8582c98d57342b1b92a4 100644
--- a/src/toolbox_scs/constants.py
+++ b/src/toolbox_scs/constants.py
@@ -15,19 +15,24 @@ mnemonics = {
     "bunchpattern": {'source': 'SCS_RR_UTC/TSYS/TIMESERVER',
                      'key': 'readBunchPatternTable.value',
                      'dim': None},
-    "bunchPatternTable": {'source': 'SCS_RR_UTC/TSYS/TIMESERVER',
-                          'key': 'bunchPatternTable.value',
-                          'dim': ['pulse_slot']},
+    "bunchPatternTable": {
+        'source': 'SCS_RR_UTC/TSYS/TIMESERVER:outputBunchPattern',
+        'key': 'data.bunchPatternTable',
+        'dim': ['pulse_slot']},
+    "bunchPatternTable_old": {
+        'source': 'SCS_RR_UTC/TSYS/TIMESERVER',
+        'key': 'bunchPatternTable.value',
+        'dim': ['pulse_slot']},
+    "bunchPatternTable_SA3": {
+        'source': 'SA3_BR_UTC/TSYS/TIMESERVER:outputBunchPattern',
+        'key': 'data.bunchPatternTable',
+        'dim': ['pulse_slot']},
     "npulses_sase3": {'source': 'SCS_RR_UTC/MDL/BUNCH_DECODER',
                       'key': 'sase3.nPulses.value',
                       'dim': None},
     "npulses_sase1": {'source': 'SCS_RR_UTC/MDL/BUNCH_DECODER',
                       'key': 'sase1.nPulses.value',
                       'dim': None},
-    "bunchPatternTable_SA3": {
-        'source': 'SA3_BR_UTC/TSYS/TIMESERVER:outputBunchPattern',
-        'key': 'data.bunchPatternTable',
-        'dim': ['pulse_slot']},
 
     # Bunch Arrival Monitors
     "BAM414": {'source': 'SCS_ILH_LAS/DOOCS/BAM_414_B2:output',
diff --git a/src/toolbox_scs/detectors/digitizers.py b/src/toolbox_scs/detectors/digitizers.py
index 946f53d5777643978df7ca61ff98109facd38569..a679f690fd159d571902937192aede4bed85a380 100644
--- a/src/toolbox_scs/detectors/digitizers.py
+++ b/src/toolbox_scs/detectors/digitizers.py
@@ -232,6 +232,9 @@ def get_peaks(run,
     elif _mnemonics['bunchPatternTable']['source'] in run.all_sources:
         bpt = run.get_array(*_mnemonics['bunchPatternTable'].values())
         pattern = bunchPattern
+    elif _mnemonics['bunchPatternTable_old']['source'] in run.all_sources:
+        bpt = run.get_array(*_mnemonics['bunchPatternTable_old'].values())
+        pattern = bunchPattern
     if bunchPattern == 'None':
         bpt = None
 
@@ -633,11 +636,16 @@ def check_peak_params(run, key, raw_trace=None, ntrains=200, params=None,
     if not plot:
         return params
     min_distance = 24 if "FastADC" in key else 440
-    if _mnemonics['bunchPatternTable']['source'] in sel.all_sources \
-            and bunchPattern != 'None':
+    if bunchPattern != 'None':
+        bp_params = None
+    else:
+        if _mnemonics['bunchPatternTable']['source'] in run.all_sources:
+            bp_mnemo = 'bunchPatternTable'
+        else:
+            bp_mnemo = 'bunchPatternTable_old'
         sel = run.select_trains(np.s_[:ntrains])
         bp_params = {}
-        bpt = sel.get_array(*_mnemonics['bunchPatternTable'].values())
+        bpt = sel.get_array(*_mnemonics[bp_mnemo].values())
         mask = is_pulse_at(bpt, bunchPattern)
         pid = np.sort(np.unique(np.where(mask)[1]))
         bp_params['npulses'] = len(pid)
@@ -647,8 +655,6 @@ def check_peak_params(run, key, raw_trace=None, ntrains=200, params=None,
             bp_params['period'] = np.diff(pid)[0] * min_distance
         print(f'bunch pattern {bunchPattern}: {bp_params["npulses"]} pulses,' +
               f' {bp_params["period"]} samples between two pulses')
-    else:
-        bp_params = None
     print(f'{title}: {params["npulses"]} pulses, {params["period"]}' +
           ' samples between two pulses')
     fig, ax = plotPeakIntegrationWindow(raw_trace, params, bp_params, show_all)
diff --git a/src/toolbox_scs/detectors/xgm.py b/src/toolbox_scs/detectors/xgm.py
index b57f21b58339c37400c1fd25c937d53facf19477..da0d1f164a917b2dfe0988c36443143d33775a62 100644
--- a/src/toolbox_scs/detectors/xgm.py
+++ b/src/toolbox_scs/detectors/xgm.py
@@ -60,11 +60,16 @@ def get_xgm(run, key=None, merge_with=None, keepAllSase=False,
     # check if bunch pattern table exists
     if bool(merge_with) and 'bunchPatternTable' in merge_with:
         bpt = merge_with['bunchPatternTable']
-        log.debug('Using bpt from merge_with dataset.')
+        log.debug('Using bunchPatternTable merge_with dataset.')
     elif _mnemonics['bunchPatternTable']['source'] in run.all_sources:
         bpt = run.get_array(*_mnemonics['bunchPatternTable'].values())
-        log.debug('Loaded bpt from extra_data run.')
+        log.debug(f'Loaded bpt from {_mnemonics["bunchPatternTable"]["source"]}.')
+    elif _mnemonics['bunchPatternTable_old']['source'] in run.all_sources:
+        bpt = run.get_array(*_mnemonics['bunchPatternTable_old'].values())
+        log.debug('Loaded bpt from ' +
+                  f'{_mnemonics["bunchPatternTable_old"]["source"]}.')
     else:
+        log.debug('Could not find bunchPatternTable in run.')
         bpt = None
 
     if key is None:
diff --git a/src/toolbox_scs/load.py b/src/toolbox_scs/load.py
index 61fd8151273d5f662901c08413558d184bd3281a..44d8d26871ff6ce6b84ee6edea7ad929813ffd15 100644
--- a/src/toolbox_scs/load.py
+++ b/src/toolbox_scs/load.py
@@ -92,17 +92,25 @@ def load(proposalNB=None, runNB=None,
     # load pulse pattern info
     if _mnemonics['bunchPatternTable']['source'] in run.all_sources:
         bpt = run.get_array(*_mnemonics['bunchPatternTable'].values())
+        log.info('Loading bunch pattern table from ' +
+                 f'{_mnemonics["bunchPatternTable"]["source"]}')
+        keys.append("bunchPatternTable")
+        vals.append(bpt)
+    elif _mnemonics['bunchPatternTable_old']['source'] in run.all_sources:
+        bpt = run.get_array(*_mnemonics['bunchPatternTable_old'].values())
+        log.info('Loading bunch pattern table from ' +
+                 f'{_mnemonics["bunchPatternTable_old"]["source"]}')
         keys.append("bunchPatternTable")
         vals.append(bpt)
     elif _mnemonics['bunchPatternTable_SA3']['source'] in run.all_sources:
-        log.info('Did not find SCS bunch pattern table but found the SA3 one.')
         bpt = run.get_array(*_mnemonics['bunchPatternTable_SA3'].values())
+        log.info('Loading bunch pattern table from ' +
+                 f'{_mnemonics["bunchPatternTable_SA3"]["source"]}')
         keys.append("bunchPatternTable")
         vals.append(bpt)
     else:
-        log.warning('Source {} and {} not found in run. Skipping!'.format(
-                            _mnemonics['bunchPatternTable']['source'],
-                            _mnemonics['bunchPatternTable_SA3']['source'],))
+        log.warning('Could not find bunch pattern table in run ' +
+                    f'{runNB}. Skipping!')
     for f in fields:
         if type(f) == dict:
             # extracting mnemomic defined on the spot