diff --git a/Makefile_rpath.make b/Makefile_rpath.make
index ad5c74a1aff1d053742e01745d115633c2464ef8..c3f4203198fa69dd78bb7eeffea1cc2c66cb10f6 100644
--- a/Makefile_rpath.make
+++ b/Makefile_rpath.make
@@ -10,6 +10,10 @@ OBJDIR = $(DOOCSROOT)/target/$(DOOCSARCH)/obj/server/$(SERVER_NAME)
 
 SRCDIR = $(DOOCSROOT)/source/server/lbsync/$(SERVER_NAME)
 
+#CSA doocs locations applications
+SRCDIR_SERVER =  ./src
+INCLDIR_SERVER = ./include
+
 # to define the arch dependend things
 include $(DOOCSROOT)/target/$(DOOCSARCH)/CONFIG
 
@@ -20,10 +24,10 @@ include $(DOOCSROOT)/target/$(DOOCSARCH)/CONFIG
 ## DIFFERENT PATH FOR Consatt LIBRARY
 #CPPFLAGS += $(shell Consatt-config --cppflags)
 #LDLIBS +=   $(shell Consatt-config --ldflags)
-#CPPFLAGS += $(shell /home/tkozak/doocs.git/install/Ubuntu-16.04-x86_64/library/libConsatt/00.05.00/bin/Consatt-config --cppflags)
-#LDLIBS +=   $(shell /home/tkozak/doocs.git/install/Ubuntu-16.04-x86_64/library/libConsatt/00.05.00/bin/Consatt-config --ldflags)
-CPPFLAGS += $(shell /home/tkozak/LIB_STABLE/20180312_1350_4Radek/Ubuntu-16.04-x86_64/library/libConsatt/00.05.00/bin/Consatt-config --cppflags)
-LDLIBS +=   $(shell /home/tkozak/LIB_STABLE/20180312_1350_4Radek/Ubuntu-16.04-x86_64/library/libConsatt/00.05.00/bin/Consatt-config --ldflags)
+CPPFLAGS += $(shell /home/tkozak/doocs.git/install/Ubuntu-16.04-x86_64/library/libConsatt/00.05.00/bin/Consatt-config --cppflags)
+LDLIBS +=   $(shell /home/tkozak/doocs.git/install/Ubuntu-16.04-x86_64/library/libConsatt/00.05.00/bin/Consatt-config --ldflags)
+#CPPFLAGS += $(shell /home/tkozak/LIB_STABLE/20180312_1350_4Radek/Ubuntu-16.04-x86_64/library/libConsatt/00.05.00/bin/Consatt-config --cppflags)
+#LDLIBS +=   $(shell /home/tkozak/LIB_STABLE/20180312_1350_4Radek/Ubuntu-16.04-x86_64/library/libConsatt/00.05.00/bin/Consatt-config --ldflags)
 ## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 ## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
@@ -32,10 +36,10 @@ LDLIBS +=   $(shell /home/tkozak/LIB_STABLE/20180312_1350_4Radek/Ubuntu-16.04-x8
 ## DIFFERENT PATH FOR Consatt-Doocs LIBRARY
 #CPPFLAGS += $(shell Consatt-doocs-config --cppflags)
 #LDLIBS += $(shell Consatt-doocs-config --ldflags)
-#CPPFLAGS += $(shell /home/tkozak/doocs.git/install/Ubuntu-16.04-x86_64/library/libConsatt-Doocs/00.03.00/bin/Consatt-doocs-config --cppflags)
-#LDLIBS += $(shell /home/tkozak/doocs.git/install/Ubuntu-16.04-x86_64/library/libConsatt-Doocs/00.03.00/bin/Consatt-doocs-config --ldflags)
-CPPFLAGS += $(shell /home/tkozak/LIB_STABLE/20180312_1350_4Radek/Ubuntu-16.04-x86_64/library/libConsatt-Doocs/00.03.00/bin/Consatt-doocs-config --cppflags)
-LDLIBS +=   $(shell /home/tkozak/LIB_STABLE/20180312_1350_4Radek/Ubuntu-16.04-x86_64/library/libConsatt-Doocs/00.03.00/bin/Consatt-doocs-config --ldflags)
+CPPFLAGS += $(shell /home/tkozak/doocs.git/install/Ubuntu-16.04-x86_64/library/libConsatt-Doocs/00.03.00/bin/Consatt-doocs-config --cppflags)
+LDLIBS += $(shell /home/tkozak/doocs.git/install/Ubuntu-16.04-x86_64/library/libConsatt-Doocs/00.03.00/bin/Consatt-doocs-config --ldflags)
+#CPPFLAGS += $(shell /home/tkozak/LIB_STABLE/20180312_1350_4Radek/Ubuntu-16.04-x86_64/library/libConsatt-Doocs/00.03.00/bin/Consatt-doocs-config --cppflags)
+#LDLIBS +=   $(shell /home/tkozak/LIB_STABLE/20180312_1350_4Radek/Ubuntu-16.04-x86_64/library/libConsatt-Doocs/00.03.00/bin/Consatt-doocs-config --ldflags)
 ## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 ## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
@@ -44,13 +48,26 @@ LDLIBS +=   $(shell /home/tkozak/LIB_STABLE/20180312_1350_4Radek/Ubuntu-16.04-x8
 ## DIFFERENT PATH FOR Demac LIBRARY
 #CPPFLAGS += $(shell Demac-config --cppflags)
 #LDLIBS += $(shell Demac-config --ldflags)
-#CPPFLAGS += $(shell /home/tkozak/doocs.git/install/Ubuntu-16.04-x86_64/library/libDemac/00.04.00/bin/Demac-config --cppflags)
-#LDLIBS += $(shell /home/tkozak/doocs.git/install/Ubuntu-16.04-x86_64/library/libDemac/00.04.00/bin/Demac-config --ldflags)
-CPPFLAGS += $(shell /home/tkozak/LIB_STABLE/20180312_1350_4Radek/Ubuntu-16.04-x86_64/library/libDemac/00.04.00/bin/Demac-config --cppflags)
-LDLIBS +=   $(shell /home/tkozak/LIB_STABLE/20180312_1350_4Radek/Ubuntu-16.04-x86_64/library/libDemac/00.04.00/bin/Demac-config --ldflags)
+CPPFLAGS += $(shell /home/tkozak/doocs.git/install/Ubuntu-16.04-x86_64/library/libDemac/00.04.00/bin/Demac-config --cppflags)
+LDLIBS += $(shell /home/tkozak/doocs.git/install/Ubuntu-16.04-x86_64/library/libDemac/00.04.00/bin/Demac-config --ldflags)
+#CPPFLAGS += $(shell /home/tkozak/LIB_STABLE/20180312_1350_4Radek/Ubuntu-16.04-x86_64/library/libDemac/00.04.00/bin/Demac-config --cppflags)
+#LDLIBS +=   $(shell /home/tkozak/LIB_STABLE/20180312_1350_4Radek/Ubuntu-16.04-x86_64/library/libDemac/00.04.00/bin/Demac-config --ldflags)
 ## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 ## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
+## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+## DIFFERENT PATH FOR Consatt Applications LIBRARY
+#CPPFLAGS += $(shell ConsattApp-config --cppflags)
+#LDLIBS +=   $(shell ConsattApp-config --ldflags)
+CPPFLAGS += $(shell /home/tkozak/doocs.git/install/Ubuntu-16.04-x86_64/library/libConsattApp/00.01.00/bin/ConsattApp-config --cppflags)
+LDLIBS +=   $(shell /home/tkozak/doocs.git/install/Ubuntu-16.04-x86_64/library/libConsattApp/00.01.00/bin/ConsattApp-config --ldflags)
+#CPPFLAGS += $(shell /home/tkozak/LIB_STABLE/20180309_1400/Ubuntu-16.04-x86_64/libConsattApp/00.01.00/bin/ConsattApp-config --cppflags)
+#LDLIBS +=   $(shell /home/tkozak/LIB_STABLE/20180309_1400/Ubuntu-16.04-x86_64/libConsattApp/00.01.00/bin/ConsattApp-config --ldflags)
+## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+
+
 CPPFLAGS += $(shell mtca4u-deviceaccess-config --cppflags)
 LDLIBS += $(shell mtca4u-deviceaccess-config --ldflags)
 #CPPFLAGS += $(shell /home/tkozak/doocs.git/install/Ubuntu-16.04-x86_64/library/deviceaccess/00.23.01/bin/mtca4u-deviceaccess-config --cppflags)
@@ -72,22 +89,16 @@ LDLIBS += -Wl,-rpath=./
 LDLIBS += -lstdc++fs
 
 #CSA applications
-SRCDIR_CSA_APP =  ../csaApplications/src/linklock
-INCLDIR_CSA_APP = ../csaApplications/include/linklock
-
-SRCDIR_CSA_MISC =  ../csaApplications/src/misc
-INCLDIR_CSA_MISC = ../csaApplications/include/misc
+#SRCDIR_CSA_APP =  ../csaApplications/src/linklock
+#INCLDIR_CSA_APP = ../csaApplications/include/linklock
 
-#CSA doocs locations applications
-SRCDIR_CSA_DOOCS_APP =  ../csaApplications/doocs_src/linklock
-INCLDIR_CSA_DOOCS_APP = ../csaApplications/doocs_include/linklock
+#SRCDIR_CSA_MISC =  ../csaApplications/src/misc
+#INCLDIR_CSA_MISC = ../csaApplications/include/misc
 
-SRCDIR_CSA_DOOCS_MISC =  ../csaApplications/doocs_src/misc
-INCLDIR_CSA_DOOCS_MISC = ../csaApplications/doocs_include/misc
 
 
 # External includes
-CPPFLAGS += -I$(INCLDIR_CSA_APP) -I$(INCLDIR_CSA_MISC) -I$(INCLDIR_CSA_DOOCS_APP) -I$(INCLDIR_CSA_DOOCS_MISC)
+CPPFLAGS += -I$(INCLDIR_SERVER)
 CPPFLAGS += -I/usr/include/c++/4.4/
 
 # Disable some annoying warnings
@@ -107,25 +118,9 @@ SER_VER_STR = '"'$(SER_VER)'"'
           echo ---------- compiling SRCDIR: $(SRCDIR)/$(*F).cc ------------ ; \
           $(CC) $(CPPFLAGS) $(CCFLAGS) -c -o ${OBJDIR}/$(*F).o $(SRCDIR)/$(*F).cc ; \
           chmod g+w ${OBJDIR}/$(*F).o ; \
-         elif [ -f $(SRCDIR_CSA_MISC)/$(*F).cc ] && [ "$(*F)" = "CsaServerInfo" ] ; then \
-          echo ---------- compiling SRCDIR_CSA_MISC: $(SRCDIR_CSA_MISC)/$(*F).cc ------------ ; \
-          $(CC) $(CPPFLAGS) $(CCFLAGS) -c -D SERVER_VERSION=$(SER_VER_STR) -o ${OBJDIR}/$(*F).o $(SRCDIR_CSA_MISC)/$(*F).cc ; \
-          chmod g+w ${OBJDIR}/$(*F).o ; \
-         elif [ -f $(SRCDIR_CSA_MISC)/$(*F).cc ] ; then \
-          echo ---------- compiling SRCDIR_CSA_MISC: $(SRCDIR_CSA_MISC)/$(*F).cc ------------ ; \
-          $(CC) $(CPPFLAGS) $(CCFLAGS) -c -o ${OBJDIR}/$(*F).o $(SRCDIR_CSA_MISC)/$(*F).cc ; \
-          chmod g+w ${OBJDIR}/$(*F).o ; \
-         elif [ -f $(SRCDIR_CSA_APP)/$(*F).cc ] ; then \
-          echo ---------- compiling SRCDIR_CSA_APP: $(SRCDIR_CSA_APP)/$(*F).cc ------------ ; \
-          $(CC) $(CPPFLAGS) $(CCFLAGS) -c -o ${OBJDIR}/$(*F).o $(SRCDIR_CSA_APP)/$(*F).cc ; \
-          chmod g+w ${OBJDIR}/$(*F).o ; \
-         elif [ -f $(SRCDIR_CSA_DOOCS_APP)/$(*F).cc ] ; then \
-          echo ---------- compiling SRCDIR_CSA_DOOCS_APP: $(SRCDIR_CSA_DOOCS_APP)/$(*F).cc ------------ ; \
-          $(CC) $(CPPFLAGS) $(CCFLAGS) -c -o ${OBJDIR}/$(*F).o $(SRCDIR_CSA_DOOCS_APP)/$(*F).cc ; \
-          chmod g+w ${OBJDIR}/$(*F).o ; \
-         elif [ -f $(SRCDIR_CSA_DOOCS_MISC)/$(*F).cc ] ; then \
-          echo ---------- compiling SRCDIR_CSA_DOOCS_MISC: $(SRCDIR_CSA_DOOCS_MISC)/$(*F).cc ------------ ; \
-          $(CC) $(CPPFLAGS) $(CCFLAGS) -c -o ${OBJDIR}/$(*F).o $(SRCDIR_CSA_DOOCS_MISC)/$(*F).cc ; \
+         elif [ -f $(SRCDIR_SERVER)/$(*F).cc ] ; then \
+          echo ---------- compiling SRCDIR_SERVER: $(SRCDIR_SERVER)/$(*F).cc ------------ ; \
+          $(CC) $(CPPFLAGS) $(CCFLAGS) -c -o ${OBJDIR}/$(*F).o $(SRCDIR_SERVER)/$(*F).cc ; \
           chmod g+w ${OBJDIR}/$(*F).o ; \
          else \
             echo ---------- problem with rule for compiling $(SRCDIR)/$(*F) ------------ ; \
@@ -133,31 +128,14 @@ SER_VER_STR = '"'$(SER_VER)'"'
          fi
 
 SOURCEOBJ = \
-        $(OBJDIR)/CsaServerInfo.o \
-        $(OBJDIR)/GenericUtils.o \
         $(OBJDIR)/DoocsHelper.o \
 	$(OBJDIR)/linklock_rpc_server.o	\
 	$(OBJDIR)/LinkLockGlobals.o	\
-	$(OBJDIR)/CsaLinkLock.o \
-	$(OBJDIR)/CsaLSynchFmc20.o \
-	$(OBJDIR)/CsaLllDataHub.o \
-        $(OBJDIR)/CsaLinkLockCtrlChannel.o \
-        $(OBJDIR)/CsaLinkLockCtrlChannelVhdl.o \
-	$(OBJDIR)/CsaLinkLockCtrlChannelRapidX.o \
-        $(OBJDIR)/CsaLinkLockCtrlFMC25.o \
-	$(OBJDIR)/CsaLinkLockCtrlFMC25RapidX.o \
-        $(OBJDIR)/CsaLinkLockCtrlFMC25Vhdl.o \
 	$(OBJDIR)/EqLinkLockServer.o \
 	$(OBJDIR)/EqCsaLSynchFmc20.o \
 	$(OBJDIR)/EqLllDataHubServer.o \
 	$(OBJDIR)/EqLinkLockCtrlFMC25RapidXServer.o \
         $(OBJDIR)/EqLinkLockCtrlFMC25VhdlServer.o \
-        $(OBJDIR)/ExternalStatusValidator.o \
-	$(OBJDIR)/LinkLockStatusValidator.o \
-        $(OBJDIR)/LinkLockUnlockEventDataStoreQueue.o \
-        $(OBJDIR)/LinkLockUnlockEventDataFileWriter.o \
-	$(OBJDIR)/CsaLinkLockStatusValidator.o \
-	$(OBJDIR)/LinkCalibrationAlgorithms.o \
         $(OBJDIR)/EqLinkLockStatusServer.o
 
 
@@ -177,10 +155,7 @@ $(OBJDIR)/.depend:
 		  mkdir -p $(OBJDIR) ; \
 		fi
 		for i in $(SRCDIR)/*.cc ;do $(CCDEP) $$i ;done > $(OBJDIR)/.depend_temp
-		for i in $(SRCDIR_CSA_APP)/*.cc ;do $(CCDEP) $$i ;done > $(OBJDIR)/.depend_temp
-		for i in $(SRCDIR_CSA_MISC)/*.cc ;do $(CCDEP) $$i ;done > $(OBJDIR)/.depend_temp
-		for i in $(SRCDIR_CSA_DOOCS_APP)/*.cc ;do $(CCDEP) $$i ;done > $(OBJDIR)/.depend_temp
-	        for i in $(SRCDIR_CSA_DOOCS_MISC)/*.cc ;do $(CCDEP) $$i ;done > $(OBJDIR)/.depend_temp
+		for i in $(SRCDIR_SERVER)/*.cc ;do $(CCDEP) $$i ;done > $(OBJDIR)/.depend_temp
 		cat $(OBJDIR)/.depend_temp | sed -e "/:/s/^/\$$\(OBJDIR\)\//g" > $(OBJDIR)/.depend
 		chmod g+w $(OBJDIR)/.depend*
 		@echo "---- This is Makefie_rpath.make : $(OBJDIR)/$(SERVER_NAME)_server dependency building done---------------\n"
diff --git a/include/DoocsHelper.h b/include/DoocsHelper.h
new file mode 100644
index 0000000000000000000000000000000000000000..fa5e1ba548c4b8678f53e0b3d3217a7e95f45f4e
--- /dev/null
+++ b/include/DoocsHelper.h
@@ -0,0 +1,67 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+/* 
+ * File:   DoocsHelper.h
+ * Author: tkozak
+ *
+ * Created on 9 grudnia 2016, 11:07
+ */
+
+#ifndef DOOCSHELPER_H
+#define DOOCSHELPER_H
+
+
+#include "eq_fct.h"
+#include "eq_client.h"
+
+class DoocsHelper {
+private:
+    EqFct* _parent;
+
+public:
+    DoocsHelper(EqFct* parent);
+        
+    D_zmqstring interruptAddressZmq;
+    D_string watchdogAddress;
+    D_string x2timerAddress;
+    D_string mchAddress;
+    D_int triggerSource;
+        
+    void update();
+    
+private:
+    D_int _cmd;
+
+    
+     D_text _logFileTail;
+     D_int _logFileTailLineNumber;
+     D_int _logFileTailLineNumberAutoUpdate;
+     int _autoupdateCnt;
+     
+     D_int _logFileFilterStart;
+     D_int _logFileFilterEnd;
+    
+     //truncate file size
+     D_int _logFileMaxSizeKb;
+     D_int _logFileCurrentSize;
+     D_float _logFileTruncateFactor; 
+     void trimLogFile();
+     void trimLogFileCore();
+     
+     int fileSize(const std::string file);
+     int fileLinesNo(const std::string file);
+     
+     time_t getTimeFromMarker(const char* theTime, const char* format = "%Y-%m-%dT%H:%M:%S");
+     
+    void loadLogFileTail();    
+    void loadLogFileWithTimeFilter();    
+    
+    uint32_t _updateCnt;
+};
+
+#endif /* DOOCSHELPER_H */
+
diff --git a/include/EqCsaLSynchFmc20.h b/include/EqCsaLSynchFmc20.h
new file mode 100644
index 0000000000000000000000000000000000000000..19f0392de1084f90a4aa39e37e2b6f5d2ac1c333
--- /dev/null
+++ b/include/EqCsaLSynchFmc20.h
@@ -0,0 +1,57 @@
+/* 
+ * File:   EqCsaLSynchFmc20.h
+ * Author: tsk
+ *
+ * Created on April 17, 2016, 10:42 AM
+ */
+
+#ifndef EQCSALSYNCHFMC20_H
+#define	EQCSALSYNCHFMC20_H
+
+
+#include "eq_fct.h"
+#include "eq_client.h"
+
+#include "DoocsHelper.h"
+#include "ConsattApp/CsaLSynchFmc20.h"
+#include "Consatt-doocs/Doocs_CsaAdapter.h"
+
+
+#define LINKS_AMOUNT 4
+
+#define CODE_CSA_LSYNCH_FMC20_SERVER 5700
+
+#define DMA_TRANSFER_DATA_AMOUNT 262144
+
+void sig_usr1_zmq_cb_for_laser_lock_server(void *, EqData *, dmsg_info_t *);
+
+
+class EqCsaLSynchFmc20 : public EqFct {
+protected: //filds
+
+    //ZMQ communication for X2timer
+    //D_zmqstring sig_usr1_name_zmq;
+    //D_int _triggerSource;
+    
+    DoocsHelper _helper;
+    
+public:
+
+    boost::shared_ptr <Doocs_CsaAppManager> appManager;
+    
+    
+    EqCsaLSynchFmc20();
+    virtual ~EqCsaLSynchFmc20();
+    virtual int fct_code();
+    void update();
+    void init();
+
+    void interrupt_usr1(int sig_no);
+    void interrupt_usr1_core(dmsg_info_t *msginfo);
+    void post_init(void);
+    static int conf_done;
+};
+
+
+#endif	/* EQCSALSYNCHFMC20_H */
+
diff --git a/include/EqLinkLockCtrlFMC25RapidXServer.h b/include/EqLinkLockCtrlFMC25RapidXServer.h
new file mode 100644
index 0000000000000000000000000000000000000000..fe3657b76190697a318dc2c8fe64d80c34a054cb
--- /dev/null
+++ b/include/EqLinkLockCtrlFMC25RapidXServer.h
@@ -0,0 +1,58 @@
+/* 
+ * File:   Dma_read_dummy.h
+ * Author: tsk
+ *
+ * Created on September 25, 2014, 2:34 PM
+ */
+
+#ifndef EQ_LINK_LOCK_CTRL_RAPIDX_FMC25_SERVER
+#define	EQ_LINK_LOCK_CTRL_RAPIDX_FMC25_SERVER
+
+
+
+#include "eq_fct.h"
+#include "eq_client.h"
+
+#include "DoocsHelper.h"
+
+#include "ConsattApp/CsaLinkLockCtrlFMC25RapidX.h"
+#include "Consatt-doocs/Doocs_CsaAdapter.h"
+
+
+#define LINKS_AMOUNT 4
+
+#define CODE_CSA_LINK_LOCK_CTRL_RAPIDX_FMC25_SERVER 5650
+
+
+//void sig_usr1_zmq_cb_for_laser_lock_server(void *, EqData *, dmsg_info_t *);
+
+
+class EqLinkLockCtrlFMC25RapidXServer : public EqFct {
+protected: //filds
+
+    //ZMQ communication for X2timer
+    //D_zmqstring sig_usr1_name_zmq;
+    //D_int _triggerSource;
+    
+    DoocsHelper _helper;
+    
+public:
+
+    boost::shared_ptr <Doocs_CsaAppManager> appManager;
+    
+    
+    EqLinkLockCtrlFMC25RapidXServer();
+    virtual ~EqLinkLockCtrlFMC25RapidXServer();
+    virtual int fct_code();
+    void update();
+    void init();
+
+    void interrupt_usr1(int sig_no);
+    void interrupt_usr1_core(dmsg_info_t *msginfo);
+    void post_init(void);
+    static int conf_done;
+};
+
+
+#endif	/* EQ_LSU_TEST_SERVER */
+
diff --git a/include/EqLinkLockCtrlFMC25VhdlServer.h b/include/EqLinkLockCtrlFMC25VhdlServer.h
new file mode 100644
index 0000000000000000000000000000000000000000..755b2dd28bce3a2c29f45989110afe17df21000b
--- /dev/null
+++ b/include/EqLinkLockCtrlFMC25VhdlServer.h
@@ -0,0 +1,58 @@
+/* 
+ * File:   Dma_read_dummy.h
+ * Author: tsk
+ *
+ * Created on September 25, 2014, 2:34 PM
+ */
+
+#ifndef EQ_LINK_LOCK_CTRL_VHDL_FMC25_SERVER
+#define	EQ_LINK_LOCK_CTRL_VHDL_FMC25_SERVER
+
+
+
+#include "eq_fct.h"
+#include "eq_client.h"
+
+#include "DoocsHelper.h"
+
+
+#include "Consatt-doocs/Doocs_CsaAdapter.h"
+
+
+#define LINKS_AMOUNT 4
+
+#define CODE_CSA_LINK_LOCK_CTRL_VHDL_FMC25_SERVER 5660
+
+
+//void sig_usr1_zmq_cb_for_laser_lock_server(void *, EqData *, dmsg_info_t *);
+
+
+class EqLinkLockCtrlFMC25VhdlServer : public EqFct {
+protected: //filds
+
+    //ZMQ communication for X2timer
+    //D_zmqstring sig_usr1_name_zmq;
+    //D_int _triggerSource;
+    
+    DoocsHelper _helper;
+    
+public:
+
+    boost::shared_ptr <Doocs_CsaAppManager> appManager;
+    
+    
+    EqLinkLockCtrlFMC25VhdlServer();
+    virtual ~EqLinkLockCtrlFMC25VhdlServer();
+    virtual int fct_code();
+    void update();
+    void init();
+
+    void interrupt_usr1(int sig_no);
+    void interrupt_usr1_core(dmsg_info_t *msginfo);
+    void post_init(void);
+    static int conf_done;
+};
+
+
+#endif	/* EQ_LSU_TEST_SERVER */
+
diff --git a/include/EqLinkLockServer.h b/include/EqLinkLockServer.h
new file mode 100644
index 0000000000000000000000000000000000000000..8be55b61ceb37da9808c3a7c88da516249360e6d
--- /dev/null
+++ b/include/EqLinkLockServer.h
@@ -0,0 +1,58 @@
+/* 
+ * File:   Dma_read_dummy.h
+ * Author: tsk
+ *
+ * Created on September 25, 2014, 2:34 PM
+ */
+
+#ifndef EQ_LSU_TEST_SERVER
+#define	EQ_LSU_TEST_SERVER
+
+
+
+#include "eq_fct.h"
+#include "eq_client.h"
+
+
+#include "ConsattApp/CsaLinkLock.h"
+#include "Consatt-doocs/Doocs_CsaAdapter.h"
+#include "DoocsHelper.h"
+
+
+#define LINKS_AMOUNT 4
+
+#define CODE_CSA_LINK_LOCK_SERVER 5600
+
+#define DMA_TRANSFER_DATA_AMOUNT 262144
+
+void sig_usr1_zmq_cb_for_laser_lock_server(void *, EqData *, dmsg_info_t *);
+
+
+class EqLinkLockServer : public EqFct {
+protected: //filds
+
+    //ZMQ communication for X2timer
+    //D_zmqstring sig_usr1_name_zmq;
+    //D_int _triggerSource;
+    DoocsHelper _helper;
+    
+public:
+
+    boost::shared_ptr <Doocs_CsaAppManager> appManager;
+    
+    
+    EqLinkLockServer();
+    virtual ~EqLinkLockServer();
+    virtual int fct_code();
+    void update();
+    void init();
+
+    void interrupt_usr1(int sig_no);
+    void interrupt_usr1_core(dmsg_info_t *msginfo);
+    void post_init(void);
+    static int conf_done;
+};
+
+
+#endif	/* EQ_LSU_TEST_SERVER */
+
diff --git a/include/EqLinkLockStatusServer.h b/include/EqLinkLockStatusServer.h
new file mode 100644
index 0000000000000000000000000000000000000000..e78c8708ca7db586db6390d0315e9eb7a1fbb995
--- /dev/null
+++ b/include/EqLinkLockStatusServer.h
@@ -0,0 +1,57 @@
+/* 
+ * File:   Dma_read_dummy.h
+ * Author: tsk
+ *
+ * Created on September 25, 2014, 2:34 PM
+ */
+
+#ifndef EQ_LASER_LOCK_STATUS_SERVER
+#define	EQ_LASER_LOCK_STATUS_SERVER
+
+
+
+#include "eq_fct.h"
+#include "eq_client.h"
+
+
+#include "ConsattApp/CsaLinkLockStatusValidator.h"
+#include "Consatt-doocs/Doocs_CsaAdapter.h"
+#include "DoocsHelper.h"
+
+
+#define CODE_CSA_LINK_LOCK_STATUS_SERVER 7050
+
+
+
+void sig_usr1_zmq_cb_for_link_lock_status_server(void *, EqData *, dmsg_info_t *);
+
+
+class EqLinkLockStatusServer : public EqFct {
+protected: //filds
+
+    //ZMQ communication for X2timer
+    //D_zmqstring sig_usr1_name_zmq;
+    //D_int _triggerSource;
+    DoocsHelper _helper;
+    uint32_t _locationType;
+    
+public:
+
+    boost::shared_ptr <Doocs_CsaAppManager> appManager;
+    
+    
+    EqLinkLockStatusServer();
+    virtual ~EqLinkLockStatusServer();
+    virtual int fct_code();
+    void update();
+    void init();
+
+    void interrupt_usr1(int sig_no);
+    void interrupt_usr1_core(dmsg_info_t *msginfo);
+    void post_init(void);
+    static int conf_done;
+};
+
+
+#endif	/* EQ_LOCK_STATUS_SERVER */
+
diff --git a/include/EqLllDataHubServer.h b/include/EqLllDataHubServer.h
new file mode 100644
index 0000000000000000000000000000000000000000..9f00eec6d994513366d996dd007c1cb5aac650ac
--- /dev/null
+++ b/include/EqLllDataHubServer.h
@@ -0,0 +1,56 @@
+/* 
+ * File:   Dma_read_dummy.h
+ * Author: tsk
+ *
+ * Created on September 25, 2014, 2:34 PM
+ */
+
+#ifndef EQ_LLL_DATA_HUB_SERVER
+#define	EQ_LLL_DATA_HUB_SERVER
+
+
+
+#include "eq_fct.h"
+#include "eq_client.h"
+
+
+#include "ConsattApp/CsaLllDataHub.h"
+#include "Consatt-doocs/Doocs_CsaAdapter.h"
+
+
+#define LINKS_AMOUNT 4
+
+#define CODE_CSA_LLL_DATA_HUB_SERVER 5800
+
+#define DMA_TRANSFER_DATA_AMOUNT 262144
+
+void sig_usr1_zmq_cb_for_laser_lock_server(void *, EqData *, dmsg_info_t *);
+
+
+class EqLllDataHubServer : public EqFct {
+protected: //filds
+
+    //ZMQ communication for X2timer
+    D_zmqstring sig_usr1_name_zmq;
+    D_int _triggerSource;
+    
+public:
+
+    boost::shared_ptr <Doocs_CsaAppManager> appManager;
+    
+    
+    EqLllDataHubServer();
+    virtual ~EqLllDataHubServer();
+    virtual int fct_code();
+    void update();
+    void init();
+
+    void interrupt_usr1(int sig_no);
+    void interrupt_usr1_core(dmsg_info_t *msginfo);
+    void post_init(void);
+    static int conf_done;
+};
+
+
+#endif	/* EQ_LLL_DATA_HUB_SERVER */
+
diff --git a/linklock_rpc_server.cc b/linklock_rpc_server.cc
index 07f66819ad4520bc51dd8cf1e0b2effec201d81b..c82346e04290db6253c7d239204f65c315f44e2f 100644
--- a/linklock_rpc_server.cc
+++ b/linklock_rpc_server.cc
@@ -3,7 +3,6 @@
 
 #include "EqLinkLockServer.h"
 #include "EqCsaLSynchFmc20.h"
-#include "EqCsaTecController.h"
 #include "EqLllDataHubServer.h"
 #include "EqLinkLockCtrlFMC25RapidXServer.h"
 #include "EqLinkLockCtrlFMC25VhdlServer.h"
diff --git a/src/DoocsHelper.cc b/src/DoocsHelper.cc
new file mode 100644
index 0000000000000000000000000000000000000000..9219c0d94ca47ced496022e9fd8ab31cfa4665e1
--- /dev/null
+++ b/src/DoocsHelper.cc
@@ -0,0 +1,253 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+#include "DoocsHelper.h"
+
+#include <chrono>
+#include <thread>
+
+extern char *__progname;
+
+DoocsHelper::DoocsHelper(EqFct* parent) :
+_parent(parent),
+interruptAddressZmq("ZMQ_SIG_USR1_INT_STRING", parent),
+watchdogAddress("DOOCS_WATCHDOG_ADDRESS", parent),
+x2timerAddress("DOOCS_X2TIMER_ADDRESS", parent),
+mchAddress("DOOCS_MCH_ADDRESS", parent),
+triggerSource("MAIN_LOOP_TRIGGER_SOURCE", parent),
+
+_logFileTail("HELPER.LOG_FILE_TAIL", parent),
+_logFileTailLineNumber("HELPER.LOG_FILE_TAIL_LINES_NO", parent),
+_logFileTailLineNumberAutoUpdate("HELPER.LOG_FILE_TAIL_AUTOUPDATE_ON", parent),
+_logFileFilterStart("HELPER.LOG_FILE_FILT_START_TIME", parent),
+_logFileFilterEnd("HELPER.LOG_FILE_FILT_END_TIME", parent),
+
+_logFileMaxSizeKb("HELPER.LOG_FILE_MAX_SIZE_KB", parent),
+_logFileCurrentSize("HELPER.LOG_FILE_SIZE_KB", parent),
+_logFileTruncateFactor("HELPER.LOG_TRIM_FACTOR", parent),     
+     
+        
+_autoupdateCnt(0),
+
+_cmd("HELPER.CMD", parent){
+}
+
+
+void DoocsHelper::update() {
+    auto cmd = _cmd.value();
+    _cmd.set_value(0);
+    
+    if (cmd == 1) {
+        loadLogFileTail();
+        _autoupdateCnt = 0;
+    }
+
+    if (cmd == 2) {
+        loadLogFileWithTimeFilter();   
+        _autoupdateCnt = 0;
+    }
+    
+    
+    if (_logFileTailLineNumberAutoUpdate.value()) {
+        _autoupdateCnt++;
+        if (_autoupdateCnt == 20) {
+            loadLogFileTail();
+            _autoupdateCnt = 0;
+        }
+    }
+    
+    if (_updateCnt%50==0) {
+        trimLogFile();
+    }
+    
+    _updateCnt++;
+}
+
+int DoocsHelper::fileSize(const std::string file) {
+    //auto time_start = std::chrono::high_resolution_clock::now();
+    std::ifstream logFile;
+    logFile.open(file.c_str(), ios_base::binary);
+    if (logFile.is_open()) {
+        logFile.seekg(0, ios_base::end);
+        int size = logFile.tellg();
+        logFile.close();
+        //std::cout << "DoocsHelper::fileLinesNo::Size measure took[ms]: " << std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::high_resolution_clock::now() - time_start).count() << std::endl;
+        return (size / 1024);
+    }
+    return 0;
+}
+
+int DoocsHelper::fileLinesNo(const std::string file) {
+    //auto time_start = std::chrono::high_resolution_clock::now();
+    std::ifstream logFile(file.c_str());
+    std::string line;
+    if (logFile.is_open()) {
+        int i = 0;
+        for (i = 0; std::getline(logFile, line); ++i);
+        logFile.close();
+        //std::cout << "DoocsHelper::fileLinesNo::Line cnt took[ms]: " << std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::high_resolution_clock::now() - time_start).count() << std::endl;
+        return i;
+    }
+    return 0;
+}
+
+void DoocsHelper::trimLogFile() {
+    //set default
+    if (_logFileMaxSizeKb.value()==0)
+        _logFileMaxSizeKb.set_value(102400); // 100MB (100*1024kB)
+    if (_logFileTruncateFactor.value()==0)
+        _logFileTruncateFactor.set_value(0.7);
+  
+    //check currnet file size and number of lines
+    std::string logFileName = std::string(__progname) + ".log";
+    _logFileCurrentSize.set_value(fileSize(logFileName));
+
+    //if max size is 0 or lower trimming is OFF
+    if (_logFileMaxSizeKb.value() > 0) {
+        //only file biger that 1024 (1MB) can be trimmed
+        if (_logFileMaxSizeKb.value() < 1024)
+            _logFileMaxSizeKb.set_value(1024);
+
+        if (_logFileTruncateFactor.value() > 0.9)
+            _logFileTruncateFactor.set_value(0.9);
+        else if (_logFileTruncateFactor.value() < 0.1)
+            _logFileTruncateFactor.set_value(0.1);
+
+        if (_logFileCurrentSize.value() > _logFileMaxSizeKb.value()) {
+            std::thread t1(std::thread(&DoocsHelper::trimLogFileCore, this));
+            t1.detach();
+        }
+    }
+}
+
+void DoocsHelper::trimLogFileCore() {
+    auto time_start = std::chrono::high_resolution_clock::now();
+    
+
+    std::string logFileName = std::string(__progname) + ".log";
+    std::string tempFileName(logFileName + std::string(".tmp"));
+    std::fstream logFile(logFileName.c_str(), std::fstream::in);
+    std::fstream logFileTemp(tempFileName.c_str(), std::fstream::out | std::fstream::app);
+        
+    
+    int oldSizeKb = _logFileCurrentSize.value();
+    int oldLinesNo = fileLinesNo(logFileName);
+    std::cout << "DoocsHelper::trimLogFileCore: Current size [kB]: " << _logFileCurrentSize.value() << " Max size [kB]: " << _logFileMaxSizeKb.value() << ", trim factor: " << _logFileTruncateFactor.value() << std::endl;
+
+    int newLinesNo = oldLinesNo * _logFileTruncateFactor.value();
+    int newLinesNoCnt = 0;
+
+    std::string line;
+    if (logFile.is_open() && logFileTemp.is_open()) {
+        for (int i = 0; std::getline(logFile, line); ++i) {
+            if (i > (oldLinesNo - newLinesNo)) {
+                newLinesNoCnt++;
+                logFileTemp << line << std::endl;
+            }
+        }
+
+      
+        //close both files
+        logFile.close();
+        logFileTemp.close();
+        //reopen files in different mode
+        std::fstream logFile(logFileName.c_str(), std::fstream::out | std::fstream::trunc);
+        std::fstream logFileTemp(tempFileName.c_str(), std::fstream::in );
+
+        //rewrite temporary file to log file
+        if (logFile.is_open() && logFileTemp.is_open())
+            while (std::getline(logFileTemp, line))
+                logFile << line << std::endl;
+        //close them again
+        logFile.close();
+        logFileTemp.close();        
+        //remove temp file
+        if (remove(tempFileName.c_str()) != 0)
+            std::cout << "DoocsHelper::trimLogFileCore: Error deleting temporary file: " << tempFileName << std::endl;
+        
+        std::cout << "DoocsHelper::trimLogFileCore: Old log file size[kb]: " << oldSizeKb << " , new file size[kb]: " << fileSize(logFileName) << std::endl;
+        std::cout << "DoocsHelper::trimLogFileCore: Old log file lines: " << oldLinesNo << " , new file lines: " << newLinesNoCnt << std::endl;
+        std::cout << "DoocsHelper::trimLogFileCore: Truncation took[ms]: " << std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::high_resolution_clock::now() - time_start).count() << std::endl << std::endl;
+
+    }
+}
+
+
+void DoocsHelper::loadLogFileTail() {
+    auto time_start = std::chrono::high_resolution_clock::now();
+    std::ostringstream ss;
+    if (_logFileTailLineNumber.value() > 4000)
+        _logFileTailLineNumber.set_value(4000);
+    else if (_logFileTailLineNumber.value() < 50)
+        _logFileTailLineNumber.set_value(50);
+
+    
+    ss << _logFileTailLineNumber.value();
+    
+    std::string command = "tail -" + ss.str() + " " + std::string(__progname) + ".log > temp.log.txt";
+    auto result = std::system(command.c_str());
+    if (result == 0) {        
+        //std::cout << "Command is: " << command << ", command result: " << result << std::endl;             
+        ss.str("");
+        ss << std::ifstream("temp.log.txt").rdbuf();
+        _logFileTail.set_value(ss.str());      
+        std::system("rm -f ./temp.log.txt");
+    } else {
+        std::cout << "Command: " << command << " failed, command result: " << result << std::endl;
+    }
+    
+    auto readTimeMs = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::high_resolution_clock::now() - time_start).count();
+    if (readTimeMs > 20)
+        std::cout << "DoocsHelper::loadLogFileTail: Warning. Loading " << _logFileTailLineNumber.value() << " lines took[ms]: " << readTimeMs << std::endl;
+    
+}
+
+void DoocsHelper::loadLogFileWithTimeFilter() {
+    std::ifstream file;
+    std::string filePath = std::string(__progname) + ".log";
+    file.open(filePath.c_str(), std::ios::in);
+
+    if (file.is_open()) {
+        time_t startTime = _logFileFilterStart.value();
+        time_t stopTime  = _logFileFilterEnd.value();
+        
+        std::string currentLine("");
+        std::string logNewText("");
+        int matchedLineCnt = 0;
+        int maxLines = _logFileTailLineNumber.value();
+        if (maxLines == 0 || maxLines > 5000) {
+            maxLines = 5000;
+        }
+        int lineCnt = 0;
+        int lineCnt1 = 0;
+        std::cout << "startTime: " << startTime << " , endTime: " << stopTime << std::endl;
+        
+        while (matchedLineCnt < _logFileTailLineNumber.value() && std::getline(file, currentLine)) {
+            if (currentLine.length() > 20) {
+                time_t currentMarkerTime = getTimeFromMarker(currentLine.substr(0, 19).c_str());
+                if (currentMarkerTime >= startTime && currentMarkerTime <= stopTime) {
+                    logNewText += (currentLine + "\n");
+                    matchedLineCnt++;
+                }
+                lineCnt1++;
+            }
+            lineCnt++;
+        }
+        _logFileTail.set_value(logNewText);      
+        file.close();
+        
+        
+        std::cout << "Logfile line cnt: " << lineCnt << " ,  longer than 20 chars: " << lineCnt1 << " , matched lines" << matchedLineCnt <<"\n";
+    }
+
+}
+
+time_t DoocsHelper::getTimeFromMarker(const char* theTime, const char* format) {
+      std::tm tmTime;
+      memset(&tmTime, 0, sizeof(tmTime));
+      strptime(theTime, format, &tmTime);
+      return mktime(&tmTime);
+}
\ No newline at end of file
diff --git a/src/EqCsaLSynchFmc20.cc b/src/EqCsaLSynchFmc20.cc
new file mode 100644
index 0000000000000000000000000000000000000000..8a20f2db589d9be5ebcbaa7eabf34418a43202b0
--- /dev/null
+++ b/src/EqCsaLSynchFmc20.cc
@@ -0,0 +1,86 @@
+
+#include "EqCsaLSynchFmc20.h"
+#include <chrono>
+
+int EqCsaLSynchFmc20::fct_code() {
+    return CODE_CSA_LSYNCH_FMC20_SERVER;
+}
+
+
+EqCsaLSynchFmc20::EqCsaLSynchFmc20() :
+EqFct("NAME = location"),
+_helper(this)
+//sig_usr1_name_zmq("ZMQ_SIG_USR1_INT_STRING", this),
+//_triggerSource("MAIN_LOOP_TRIGGER_SOURCE", this) 
+{
+    printftostderr("EqCsaLSynchFmc20::EqCsaLSynchFmc20()", "Location: %s, Start of DOOCS server constructor.", EqFct::name().c_str());
+    Doocs_CsaAdapter::getInstance().setParent(this);
+    appManager = Doocs_CsaAdapter::getInstance().createApplicationManager( new CsaLSynchFmc20(std::string(EqFct::name())) ); 
+    appManager->create();
+    printftostderr("EqCsaLSynchFmc20::EqCsaLSynchFmc20()", "Location: %s, End of DOOCS server constructor.", EqFct::name().c_str());
+}
+
+
+
+void EqCsaLSynchFmc20::init() {
+    appManager->init();
+    online();
+}
+
+void EqCsaLSynchFmc20::update() {
+    if (_helper.triggerSource.value() != 0) {        
+        Doocs_CsaAdapter::getInstance().setCurrentTimeStampStructure();
+        appManager->execute();
+        _helper.update();
+    }
+    g_sts_.error(0);
+
+    g_sts_.newerror(0);
+    g_sts_.online(1);
+
+}
+
+void EqCsaLSynchFmc20::interrupt_usr1_core(dmsg_info_t *msginfo) {
+    if (_helper.triggerSource.value() == 0) {
+        Doocs_CsaAdapter::getInstance().setCurrentTimeStampStructure(msginfo);
+        appManager->execute();
+        _helper.update();
+    }
+}
+
+
+EqCsaLSynchFmc20::~EqCsaLSynchFmc20() {
+}
+
+
+void EqCsaLSynchFmc20::interrupt_usr1(int sig_no) {
+
+}
+
+
+int EqCsaLSynchFmc20::conf_done = 0;
+
+
+
+void sig_usr1_zmq_cb_for_lbsynch_fmc20_server(void *pp, EqData *dp, dmsg_info_t *ip) {
+   
+    EqCsaLSynchFmc20* location = (EqCsaLSynchFmc20*) pp;
+    if (location) {
+        location->interrupt_usr1_core(ip);
+    }
+    
+}
+
+void EqCsaLSynchFmc20::post_init(void) {
+    printftostderr("EqCsaLSynchFmc20::post_init()", "Location: %s.", name_.value());
+    printftostderr("EqCsaLSynchFmc20::post_init()", "Location: %s, Attach to ZMQ system for x2timer.", name_.value());
+    _helper.interruptAddressZmq.attach(sig_usr1_zmq_cb_for_lbsynch_fmc20_server);
+    
+    std::ostringstream doocsParrentUniqueId;
+    doocsParrentUniqueId << this;
+    Doocs_CsaAdapter::getInstance().applyExposePolicy(doocsParrentUniqueId.str());
+}
+
+
+
+
diff --git a/src/EqLinkLockCtrlFMC25RapidXServer.cc b/src/EqLinkLockCtrlFMC25RapidXServer.cc
new file mode 100644
index 0000000000000000000000000000000000000000..2bd4ff1a152afbf923cfbb7f02da1c3e6bff5860
--- /dev/null
+++ b/src/EqLinkLockCtrlFMC25RapidXServer.cc
@@ -0,0 +1,93 @@
+
+#include "EqLinkLockCtrlFMC25RapidXServer.h"
+#include <chrono>
+
+int EqLinkLockCtrlFMC25RapidXServer::fct_code() {
+    return CODE_CSA_LINK_LOCK_CTRL_RAPIDX_FMC25_SERVER;
+}
+
+
+EqLinkLockCtrlFMC25RapidXServer::EqLinkLockCtrlFMC25RapidXServer() :
+EqFct("NAME = location"),
+_helper(this)
+//sig_usr1_name_zmq("ZMQ_SIG_USR1_INT_STRING", this),
+//_triggerSource("MAIN_LOOP_TRIGGER_SOURCE", this)
+{
+    printftostderr("EqLinkLockCtrlFMC25RapidXServer::EqLinkLockCtrlFMC25RapidXServer()", "Location: %s, Start of DOOCS server constructor.", EqFct::name().c_str());
+    Doocs_CsaAdapter::getInstance().setParent(this);
+    appManager = Doocs_CsaAdapter::getInstance().createApplicationManager( new CsaLinkLockCtrlFMC25RapidX(std::string(EqFct::name())) ); 
+    appManager->create();
+   printftostderr("EqLinkLockCtrlFMC25RapidXServer::EqLinkLockCtrlFMC25RapidXServer()", "Location: %s, End of DOOCS server constructor.", EqFct::name().c_str());
+}
+
+
+
+void EqLinkLockCtrlFMC25RapidXServer::init() {
+    appManager->init();
+    online();
+}
+
+void EqLinkLockCtrlFMC25RapidXServer::update() {
+    //std::cout << "EqLinkLockCtrlFMC25RapidXServer::update(): Return from update" << std::endl;
+    //return;
+    
+    if (_helper.triggerSource.value() != 0) {        
+        Doocs_CsaAdapter::getInstance().setCurrentTimeStampStructure();
+        appManager->execute();
+        _helper.update();
+    }
+    
+    
+    g_sts_.error(0);
+
+    g_sts_.newerror(0);
+    g_sts_.online(1);
+
+}
+
+void EqLinkLockCtrlFMC25RapidXServer::interrupt_usr1_core(dmsg_info_t *msginfo) {
+    //std::cout << "EqLinkLockCtrlFMC25RapidXServer::interrupt_usr1_core(): Return from interupt" << std::endl;
+    //return;
+    
+    if (_helper.triggerSource.value() == 0) {
+        Doocs_CsaAdapter::getInstance().setCurrentTimeStampStructure(msginfo);
+        appManager->execute();
+        _helper.update();
+    }
+}
+
+
+EqLinkLockCtrlFMC25RapidXServer::~EqLinkLockCtrlFMC25RapidXServer() {
+}
+
+
+void EqLinkLockCtrlFMC25RapidXServer::interrupt_usr1(int sig_no) {
+
+}
+
+
+int EqLinkLockCtrlFMC25RapidXServer::conf_done = 0;
+
+
+
+void sig_usr1_zmq_cb_for_link_lock_ctrl_rapidx_fmc25_server(void *pp, EqData *dp, dmsg_info_t *ip) {
+
+    EqLinkLockCtrlFMC25RapidXServer* location = (EqLinkLockCtrlFMC25RapidXServer*) pp;
+    if (location) {
+        location->interrupt_usr1_core(ip);
+    }
+}
+
+void EqLinkLockCtrlFMC25RapidXServer::post_init(void) {
+    printftostderr("EqLinkLockCtrlFMC25RapidXServer::post_init()", "Location: %s.", name_.value());    
+    printftostderr("EqLinkLockCtrlFMC25RapidXServer::post_init()", "Location: %s, Attach to ZMQ system for x2timer.", name_.value());
+    //sig_usr1_name_zmq.attach(sig_usr1_zmq_cb_for_link_lock_ctrl_rapidx_fmc25_server);
+    _helper.interruptAddressZmq.attach(sig_usr1_zmq_cb_for_link_lock_ctrl_rapidx_fmc25_server);
+    
+    std::ostringstream doocsParrentUniqueId;
+    doocsParrentUniqueId << this;
+    Doocs_CsaAdapter::getInstance().applyExposePolicy(doocsParrentUniqueId.str());
+}
+
+
+
diff --git a/src/EqLinkLockCtrlFMC25VhdlServer.cc b/src/EqLinkLockCtrlFMC25VhdlServer.cc
new file mode 100644
index 0000000000000000000000000000000000000000..9c869117342020282e97cdff44f023ed1e5fc7b5
--- /dev/null
+++ b/src/EqLinkLockCtrlFMC25VhdlServer.cc
@@ -0,0 +1,93 @@
+
+#include "EqLinkLockCtrlFMC25VhdlServer.h"
+#include "ConsattApp/CsaLinkLockCtrlFMC25Vhdl.h"
+#include <chrono>
+
+int EqLinkLockCtrlFMC25VhdlServer::fct_code() {
+    return CODE_CSA_LINK_LOCK_CTRL_VHDL_FMC25_SERVER;
+}
+
+EqLinkLockCtrlFMC25VhdlServer::EqLinkLockCtrlFMC25VhdlServer() :
+EqFct("NAME = location"),
+_helper(this)
+//sig_usr1_name_zmq("ZMQ_SIG_USR1_INT_STRING", this),
+//_triggerSource("MAIN_LOOP_TRIGGER_SOURCE", this)
+{
+    printftostderr("EqLinkLockCtrlFMC25VhdlServer::EqLinkLockCtrlFMC25VhdlServer()", "Location: %s, Start of DOOCS server constructor.", EqFct::name().c_str());
+    Doocs_CsaAdapter::getInstance().setParent(this);
+    appManager = Doocs_CsaAdapter::getInstance().createApplicationManager(new CsaLinkLockCtrlFMC25Vhdl(std::string(EqFct::name())));
+    appManager->create();
+    printftostderr("EqLinkLockCtrlFMC25VhdlServer::EqLinkLockCtrlFMC25VhdlServer()", "Location: %s, End of DOOCS server constructor.", EqFct::name().c_str());
+}
+
+
+
+void EqLinkLockCtrlFMC25VhdlServer::init() {
+    appManager->init();
+    online();
+}
+
+void EqLinkLockCtrlFMC25VhdlServer::update() {
+    //std::cout << "EqLinkLockCtrlFMC25VhdlServer::update(): Return from update" << std::endl;
+    //return;
+    
+    if (_helper.triggerSource.value() != 0) {        
+        Doocs_CsaAdapter::getInstance().setCurrentTimeStampStructure();
+        appManager->execute();
+        _helper.update();
+    }
+    
+    
+    g_sts_.error(0);
+
+    g_sts_.newerror(0);
+    g_sts_.online(1);
+
+}
+
+void EqLinkLockCtrlFMC25VhdlServer::interrupt_usr1_core(dmsg_info_t *msginfo) {
+    //std::cout << "EqLinkLockCtrlFMC25VhdlServer::interrupt_usr1_core(): Return from interupt" << std::endl;
+    //return;
+    
+    if (_helper.triggerSource.value() == 0) {
+        Doocs_CsaAdapter::getInstance().setCurrentTimeStampStructure(msginfo);
+        appManager->execute();
+        _helper.update();
+    }
+}
+
+
+EqLinkLockCtrlFMC25VhdlServer::~EqLinkLockCtrlFMC25VhdlServer() {
+}
+
+
+void EqLinkLockCtrlFMC25VhdlServer::interrupt_usr1(int sig_no) {
+
+}
+
+
+int EqLinkLockCtrlFMC25VhdlServer::conf_done = 0;
+
+
+
+void sig_usr1_zmq_cb_for_link_lock_ctrl_vhdl_fmc25_server(void *pp, EqData *dp, dmsg_info_t *ip) {
+
+    EqLinkLockCtrlFMC25VhdlServer* location = (EqLinkLockCtrlFMC25VhdlServer*) pp;
+    if (location) {
+        location->interrupt_usr1_core(ip);
+    }
+}
+
+void EqLinkLockCtrlFMC25VhdlServer::post_init(void) {
+    printftostderr("EqLinkLockCtrlFMC25VhdlServer::post_init()", "Location: %s.", name_.value());    
+    printftostderr("EqLinkLockCtrlFMC25VhdlServer::post_init()", "Location: %s, Attach to ZMQ system for x2timer.", name_.value());
+    //sig_usr1_name_zmq.attach(sig_usr1_zmq_cb_for_link_lock_ctrl_rapidx_fmc25_server);
+    _helper.interruptAddressZmq.attach(sig_usr1_zmq_cb_for_link_lock_ctrl_vhdl_fmc25_server);
+    
+    std::ostringstream doocsParrentUniqueId;
+    doocsParrentUniqueId << this;
+    Doocs_CsaAdapter::getInstance().applyExposePolicy(doocsParrentUniqueId.str());
+}
+
+
+
diff --git a/src/EqLinkLockServer.cc b/src/EqLinkLockServer.cc
new file mode 100644
index 0000000000000000000000000000000000000000..34464627794fbd78ea6e07c0cf507db0b4073a64
--- /dev/null
+++ b/src/EqLinkLockServer.cc
@@ -0,0 +1,91 @@
+
+#include "EqLinkLockServer.h"
+#include <chrono>
+
+int EqLinkLockServer::fct_code() {
+    return CODE_CSA_LINK_LOCK_SERVER;
+}
+
+EqLinkLockServer::EqLinkLockServer() :
+EqFct("NAME = location"),
+_helper(this)
+//sig_usr1_name_zmq("ZMQ_SIG_USR1_INT_STRING", this),
+//_triggerSource("MAIN_LOOP_TRIGGER_SOURCE", this) 
+{
+    printftostderr("EqLinkLockServer::EqLinkLockServer()", "Location: %s, Start of DOOCS server constructor.", EqFct::name().c_str());
+    Doocs_CsaAdapter::getInstance().setParent(this);
+    appManager = Doocs_CsaAdapter::getInstance().createApplicationManager(new CsaLinkLock(std::string(EqFct::name())));
+    appManager->create();
+    printftostderr("EqLinkLockServer::EqLinkLockServer()", "Location: %s, End of DOOCS server constructor.", EqFct::name().c_str());
+}
+
+
+
+void EqLinkLockServer::init() {
+    appManager->init();
+    online();
+}
+
+void EqLinkLockServer::update() {
+    //std::cout << "EqLinkLockServer::update(): Return from update" << std::endl;
+    //return;
+    
+    if (_helper.triggerSource.value() != 0) {        
+        Doocs_CsaAdapter::getInstance().setCurrentTimeStampStructure();
+        appManager->execute();
+        _helper.update();
+    }
+    
+    
+    g_sts_.error(0);
+
+    g_sts_.newerror(0);
+    g_sts_.online(1);
+
+}
+
+void EqLinkLockServer::interrupt_usr1_core(dmsg_info_t *msginfo) {
+    //std::cout << "EqLinkLockServer::interrupt_usr1_core(): Return from interupt" << std::endl;
+    //return;
+    
+    if (_helper.triggerSource.value() == 0) {
+        Doocs_CsaAdapter::getInstance().setCurrentTimeStampStructure(msginfo);
+        appManager->execute();
+        _helper.update();
+    }
+}
+
+
+EqLinkLockServer::~EqLinkLockServer() {
+}
+
+
+void EqLinkLockServer::interrupt_usr1(int sig_no) {
+
+}
+
+
+int EqLinkLockServer::conf_done = 0;
+
+
+
+void sig_usr1_zmq_cb_for_link_lock_server(void *pp, EqData *dp, dmsg_info_t *ip) {
+
+    EqLinkLockServer* location = (EqLinkLockServer*) pp;
+    if (location) {
+        location->interrupt_usr1_core(ip);
+    }
+}
+
+void EqLinkLockServer::post_init(void) {
+    printftostderr("EqLinkLockServer::post_init()", "Location: %s.", name_.value());    
+    printftostderr("EqLinkLockServer::post_init()", "Location: %s, Attach to ZMQ system for x2timer.", name_.value());
+    _helper.interruptAddressZmq.attach(sig_usr1_zmq_cb_for_link_lock_server);
+    
+    std::ostringstream doocsParrentUniqueId;
+    doocsParrentUniqueId << this;
+    Doocs_CsaAdapter::getInstance().applyExposePolicy(doocsParrentUniqueId.str());
+}
+
+
+
diff --git a/src/EqLinkLockStatusServer.cc b/src/EqLinkLockStatusServer.cc
new file mode 100644
index 0000000000000000000000000000000000000000..4abd2031b2eb6bfda9582b442c496f428250dffe
--- /dev/null
+++ b/src/EqLinkLockStatusServer.cc
@@ -0,0 +1,89 @@
+
+#include "EqLinkLockStatusServer.h"
+#include <chrono>
+
+int EqLinkLockStatusServer::fct_code() {
+        return CODE_CSA_LINK_LOCK_STATUS_SERVER;   
+}
+
+EqLinkLockStatusServer::EqLinkLockStatusServer() :
+EqFct("NAME = location"),
+_helper(this)
+{
+    printftostderr("EqLinkLockStatusServer::EqLinkLockStatusServer()", "Location: %s, Start of DOOCS server constructor.", EqFct::name().c_str());
+    Doocs_CsaAdapter::getInstance().setParent(this);
+    appManager = Doocs_CsaAdapter::getInstance().createApplicationManager(new CsaLinkLockStatusValidator(std::string(EqFct::name())));
+    appManager->create();
+    printftostderr("EqLinkLockStatusServer::EqLinkLockStatusServer()", "Location: %s, End of DOOCS server constructor.", EqFct::name().c_str());
+}
+
+
+
+void EqLinkLockStatusServer::init() {
+    appManager->init();
+    online();
+}
+
+void EqLinkLockStatusServer::update() {
+    //std::cout << "EqLinkLockStatusServer::update(): Return from update" << std::endl;
+    //return;
+    
+    if (_helper.triggerSource.value() != 0) {        
+        Doocs_CsaAdapter::getInstance().setCurrentTimeStampStructure();
+        appManager->execute();
+        _helper.update();
+    }
+    
+    
+    g_sts_.error(0);
+
+    g_sts_.newerror(0);
+    g_sts_.online(1);
+
+}
+
+void EqLinkLockStatusServer::interrupt_usr1_core(dmsg_info_t *msginfo) {
+    //std::cout << "EqLinkLockStatusServer::interrupt_usr1_core(): Return from interupt" << std::endl;
+    //return;
+    
+    if (_helper.triggerSource.value() == 0) {
+        Doocs_CsaAdapter::getInstance().setCurrentTimeStampStructure(msginfo);
+        appManager->execute();
+        _helper.update();
+    }
+}
+
+
+EqLinkLockStatusServer::~EqLinkLockStatusServer() {
+}
+
+
+void EqLinkLockStatusServer::interrupt_usr1(int sig_no) {
+
+}
+
+
+int EqLinkLockStatusServer::conf_done = 0;
+
+
+
+void sig_usr1_zmq_cb_for_link_lock_status_server(void *pp, EqData *dp, dmsg_info_t *ip) {
+
+    EqLinkLockStatusServer* location = (EqLinkLockStatusServer*) pp;
+    if (location) {
+        location->interrupt_usr1_core(ip);
+    }
+}
+
+void EqLinkLockStatusServer::post_init(void) {
+    printftostderr("EqLinkLockStatusServer::post_init()", "Location: %s.", name_.value());    
+    printftostderr("EqLinkLockStatusServer::post_init()", "Location: %s, Attach to ZMQ system for x2timer.", name_.value());
+    _helper.interruptAddressZmq.attach(sig_usr1_zmq_cb_for_link_lock_status_server);
+    
+    std::ostringstream doocsParrentUniqueId;
+    doocsParrentUniqueId << this;
+    Doocs_CsaAdapter::getInstance().applyExposePolicy(doocsParrentUniqueId.str());
+}
+
+
+
diff --git a/src/EqLllDataHubServer.cc b/src/EqLllDataHubServer.cc
new file mode 100644
index 0000000000000000000000000000000000000000..957c1335ff912d23c528e9b9fb79e894245089c0
--- /dev/null
+++ b/src/EqLllDataHubServer.cc
@@ -0,0 +1,88 @@
+
+#include "EqLllDataHubServer.h"
+#include <chrono>
+
+int EqLllDataHubServer::fct_code() {
+    return CODE_CSA_LLL_DATA_HUB_SERVER;
+}
+
+
+EqLllDataHubServer::EqLllDataHubServer() :
+EqFct("NAME = location"),
+sig_usr1_name_zmq("ZMQ_SIG_USR1_INT_STRING", this),
+_triggerSource("MAIN_LOOP_TRIGGER_SOURCE", this) {
+    printftostderr("EqLllDataHubServer::EqLllDataHubServer()", "Location: %s, Start of DOOCS server constructor.", EqFct::name().c_str());
+    Doocs_CsaAdapter::getInstance().setParent(this);
+    appManager = Doocs_CsaAdapter::getInstance().createApplicationManager( new CsaLllDataHub(std::string(EqFct::name())) ); 
+    appManager->create();
+   printftostderr("EqLllDataHubServer::EqLllDataHubServer()", "Location: %s, End of DOOCS server constructor.", EqFct::name().c_str());
+}
+
+
+
+void EqLllDataHubServer::init() {
+    appManager->init();
+    online();
+}
+
+void EqLllDataHubServer::update() {
+    //std::cout << "EqLllDataHubServer::update(): Return from update" << std::endl;
+    //return;
+    
+    if (_triggerSource.value() != 0) {        
+        Doocs_CsaAdapter::getInstance().setCurrentTimeStampStructure();
+        appManager->execute();
+    }
+    
+    
+    g_sts_.error(0);
+
+    g_sts_.newerror(0);
+    g_sts_.online(1);
+
+}
+
+void EqLllDataHubServer::interrupt_usr1_core(dmsg_info_t *msginfo) {
+    //std::cout << "EqLllDataHubServer::interrupt_usr1_core(): Return from interupt" << std::endl;
+    //return;
+    
+    if (_triggerSource.value() == 0) {
+        Doocs_CsaAdapter::getInstance().setCurrentTimeStampStructure(msginfo);
+        appManager->execute();
+    }
+}
+
+
+EqLllDataHubServer::~EqLllDataHubServer() {
+}
+
+
+void EqLllDataHubServer::interrupt_usr1(int sig_no) {
+
+}
+
+
+int EqLllDataHubServer::conf_done = 0;
+
+
+
+void sig_usr1_zmq_cb_for_lll_data_hub_server(void *pp, EqData *dp, dmsg_info_t *ip) {
+
+    EqLllDataHubServer* location = (EqLllDataHubServer*) pp;
+    if (location) {
+        location->interrupt_usr1_core(ip);
+    }
+}
+
+void EqLllDataHubServer::post_init(void) {
+    printftostderr("EqLllDataHubServer::post_init()", "Location: %s.", name_.value());    
+    printftostderr("EqLllDataHubServer::post_init()", "Location: %s, Attach to ZMQ system for x2timer.", name_.value());
+    sig_usr1_name_zmq.attach(sig_usr1_zmq_cb_for_lll_data_hub_server);
+    
+    std::ostringstream doocsParrentUniqueId;
+    doocsParrentUniqueId << this;
+    Doocs_CsaAdapter::getInstance().applyExposePolicy(doocsParrentUniqueId.str());
+}
+
+
+