diff --git a/FofbTool/Operation.py b/FofbTool/Operation.py
index 3893fa6e18f10c90c5368c3a010a1cc492e0ead6..883daeb5610dc5dd02b733ad31bd5828de79470d 100644
--- a/FofbTool/Operation.py
+++ b/FofbTool/Operation.py
@@ -194,3 +194,204 @@ def ack_combpm(cellnodename):
     time.sleep(1)
     prx["combpm_reset_error"] = False
 
+###################################################################################################
+#    OPERATIONS ON BPM ELECTRONICS
+###################################################################################################
+
+# Some local constants
+ADDR_CCCFG=0        # Register address of Libera Electron
+ADDR_FAICFG=0x2000  # Register address of Libera Electron
+
+def electron_init_fa(bpmlist):
+    """
+    Configure FA register of Libera Electron
+
+    PARAMETERS
+    ----------
+    bpmlist: list of (bpmid, bpmpath)
+        ID to apply and path of BPM tango device
+
+    RETURNS
+    -------
+    success: boolean
+        True on success
+    """
+    # Init BPMs, put for each the ID number
+    # Cannot do that with group
+    logger.info("Initialize BPMs")
+    for bpmid, bpmpath in bpmlist:
+        logger.debug("Initialize BPM {}".format(bpmpath))
+        pbpm = tango.DeviceProxy(bpmpath)
+        try:
+            pbpm.ping()
+        except tango.ConnectionFailed:
+            logger.error("Failed to connect to {}".format(bpmpath))
+            return False
+
+
+        # Configure : bpmid, tframe, mgtpower, mgtlb, bfrclr
+        pbpm.command_inout("WriteFAData", [ADDR_CCCFG, 4, 5, bpmid, 6000, 0, 0, 6000])
+        # Ack rise
+        pbpm.command_inout("WriteFAData", [ADDR_FAICFG, 4, 1, 9])
+        # Ack fall
+        pbpm.command_inout("WriteFAData", [ADDR_FAICFG, 4, 1, 8])
+
+    return True
+
+
+
+def electron_start_next_trigger(bpmlist):
+    """
+    Prepare Libera Electron to start on next trigger
+
+    PARAMETERS
+    ----------
+    bpmlist: list of str
+        List of Tango paths to Libera devices
+
+    RETURNS
+    -------
+    success: boolean
+        True on success
+    """
+    logger.info("Prepare Libera Electron to start at next trigger")
+
+    bpms = tango.Group('bpms')
+    bpms.add(bpmlist)
+
+    r=bpms.command_inout("settimeonnexttrigger")
+    for _r in r:
+        if _r.has_failed():
+            logger.error("Failed to apply command SetTimeOnNextTrigger on bpm {}".format(_r.dev_name()))
+            return False
+
+    # Write start, tframelim=zero, no debug data
+    r=bpms.command_inout("WriteFAData", [ADDR_FAICFG, 4, 1, 8])
+    for _r in r:
+        if _r.has_failed():
+            logger.error("Failed to apply command WriteFAData on bpm {}".format(_r.dev_name()))
+            return False
+
+    # Write Enable ITech FAI
+    r=bpms.command_inout("WriteFAData", [ADDR_FAICFG+4, 4, 1,1])
+    for _r in r:
+        if _r.has_failed():
+            logger.error("Failed to apply command WriteFAData on bpm {}".format(_r.dev_name()))
+            return False
+
+    return True
+
+def electron_stop_com(bpmlist):
+    """
+    Stop Libera Electron FA communication
+
+    PARAMETERS
+    ----------
+    bpmlist: list of str
+        List of Tango paths to Libera devices
+
+    RETURNS
+    -------
+    success: boolean
+        True on success
+    """
+    logger.info("Stop Libera Electron FA communication")
+
+    bpms = tango.Group('bpms')
+    bpms.add(bpmlist)
+
+    # Write Disable ITech FAI
+    r=bpms.command_inout("WriteFAData", [ADDR_FAICFG+4, 4, 1, 0])
+    for _r in r:
+        if _r.has_failed():
+            logger.error("Failed to apply command WriteFAData on bpm {}".format(_r.dev_name()))
+            return False
+
+    # Soft stop
+    r=bpms.command_inout("WriteFAData", [ADDR_FAICFG+8, 4, 1, 0])
+    for _r in r:
+        if _r.has_failed():
+            logger.error("Failed to apply command WriteFAData on bpm {}".format(_r.dev_name()))
+            return False
+
+    # Reset User FAI
+    r=bpms.command_inout("WriteFAData", [ADDR_FAICFG, 4, 1, 0])
+    for _r in r:
+        if _r.has_failed():
+            logger.error("Failed to apply command WriteFAData on bpm {}".format(_r.dev_name()))
+            return False
+
+    return True
+
+
+def sync_all_bpm():
+    """
+    Synchronize all BPM electronics, Electron and Brillance Plus.
+    This will use the timing system (central and local board).
+
+    """
+    EVN=66 # Event number
+
+    # Get FofbManager proxy, only for its properties
+    p = tango.DeviceProxy(FofbTool.Configuration.config["tangopath"]["fofb-manager"])
+
+    bpmlist = [n.split(':')[2] for n in p.get_property("bpmlist")['bpmlist']]
+    bpmidlist = [(int(n.split(':')[0]), n.split(':')[2]) for n in p.get_property("bpmlist")['bpmlist']]
+
+    tlocal = tango.Group('tlocal')
+    tlocal.add([n.split(':')[2] for n in p.get_property('TimingBoardList')['TimingBoardList'] if "LOCAL" in n])
+
+    # Set a group of Libera Brillance Plus EVRX board, from FofbTool configuration
+    lbpevrx = tango.Group('lbpevrx')
+    lbpevrx.add(FofbTool.Configuration.config["tangopath"]["lbpevrx"])
+
+    tcentral = tango.DeviceProxy(FofbTool.Configuration.config["tangopath"]["timing-central"])
+
+    # ---------------------------------------------------------------------------------------------------------------
+    # Init BPMs, stop first and put for each the ID number
+
+    electron_stop_com(bpmlist)
+    electron_init_fa(bpmidlist)
+
+    # ---------------------------------------------------------------------------------------------------------------
+    # Write event number
+
+    logger.info("Set Event Number on local timing board, BpmTriggerEvent")
+    r=tlocal.write_attribute("bpm.trigEvent", EVN)
+    for _r in r:
+        if _r.has_failed():
+            logger.error("Failed to set Event Number on local timing board {}, bpm.trigEvent".format(_r.dev_name()))
+            return
+
+    # ---------------------------------------------------------------------------------------------------------------
+    # Prepare bpm for trigger reception
+
+    electron_start_next_trigger(bpmlist)
+
+    logger.info("Prepare Libera Brillance Plus to start on next trigger")
+    r=lbpevrx.write_attribute("synchronize", 0)
+    for _r in r:
+        if _r.has_failed():
+            logger.error("Failed to write synchronize on LBP EVRX {}".format(_r.dev_name()))
+            return
+
+    # ---------------------------------------------------------------------------------------------------------------
+    # Wait 2 seconds and Fire the soft event
+
+    time.sleep(2)
+    logger.info("Fire the trigger")
+
+    tcentral.write_attribute("softEventAdress", EVN)
+    tcentral.firesoftevent()
+
+    # ---------------------------------------------------------------------------------------------------------------
+    # Write event number back to 3
+
+    logger.info("Set Event Number back to 3 on local timing board, BpmTriggerEvent")
+    r=tlocal.write_attribute("bpm.trigEvent", 3)
+    for _r in r:
+        if _r.has_failed():
+            logger.error("Failed to set Event Number on local timing board {}, bpm.trigEvent".format(_r.dev_name()))
+            return
+
+
diff --git a/FofbTool/default.cfg b/FofbTool/default.cfg
index 3c5243ad38bbab5e3232278973689179e23df060..6cf4e0af636eca23977339b9c0ecdf73fff24fc7 100644
--- a/FofbTool/default.cfg
+++ b/FofbTool/default.cfg
@@ -96,6 +96,9 @@ fofb-watcher=ans/dg/fofb-watcher
 fofb-command=ans/dg/fofb-command
 fofb-manager=ans/dg/fofb-manager
 bpm-manager=ans/dg/bpm-manager
+lbpevrx=test/dg/lbp1
+        test/fg/lbp2
+timing-central=ans/sy/central
 
 [tangopath.fofbnodes]
 centralnode=ans/dg/fofb-centralnode