diff --git a/external/.gitignore b/external/.gitignore
index 8a58b186acde9dba307089f00e6e106710fee232..3ac2b17b841ebfe86a453bfd505850570c4ff4f6 100644
--- a/external/.gitignore
+++ b/external/.gitignore
@@ -5,7 +5,7 @@ NicaFemto
 Vc
 cppzmq
 flib_dpb/flib_dpb
-fles/flesnet
+flesnet/
 jsroot
 googletest
 yaml-cpp/
diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt
index 5d9190078b379c5c551e86715d77fd9be5959778..7d4679e3cbc5a20403034b11b1d1293fad8bc896 100644
--- a/external/CMakeLists.txt
+++ b/external/CMakeLists.txt
@@ -16,11 +16,10 @@ if(DOWNLOAD_EXTERNALS)
   # Install header files
   install(FILES cppzmq/zmq.hpp DESTINATION include)
 
+  Include(InstallFlesnet.cmake)
+  Set(FLES_IPC_INCLUDE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/flesnet/lib/fles_ipc PARENT_SCOPE)
+  Set(FLES_LOGGING_INCLUDE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/flesnet/lib/logging PARENT_SCOPE)
 
-  Set(IPC_INCLUDE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/fles/flesnet/lib/fles_ipc PARENT_SCOPE)
-  Set(IPCLOG_INCLUDE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/fles/flesnet/lib/logging PARENT_SCOPE)
-
-  Add_Subdirectory(fles)
   Add_Subdirectory(flib_dpb)
 
   find_package(Vc 1.4.1)
@@ -45,7 +44,6 @@ if(DOWNLOAD_EXTERNALS)
   )
   Add_Subdirectory(xpu)
 
-
   Include(InstallKFParticle.cmake)
   Include(InstallNicaFemto.cmake)
   Include(InstallAnalysisTree.cmake)
diff --git a/external/InstallFlesnet.cmake b/external/InstallFlesnet.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..e02ca7ef8fb5a37806298204261f118cdb18de4a
--- /dev/null
+++ b/external/InstallFlesnet.cmake
@@ -0,0 +1,56 @@
+# Build parts of the flesnet software, which is maintained in the flesnet repository on github
+#
+# The included libraries provide the interface to the experiment data in timeslices
+# both online and in timeslice archive (.tsa) files.
+
+set(FLESNET_VERSION b1b8c37d6db9a66122ee375bea608c6c6e848665) # 2022-02-24
+
+set(FLESNET_SRC_URL "https://github.com/cbm-fles/flesnet")
+set(FLESNET_DESTDIR "${PROJECT_BINARY_DIR}/external/flesnet-prefix")
+
+download_project_if_needed(
+  PROJECT         flesnet
+  GIT_REPOSITORY  ${FLESNET_SRC_URL}
+  GIT_TAG         ${FLESNET_VERSION}
+  GIT_STASH       TRUE
+  SOURCE_DIR      ${CMAKE_CURRENT_SOURCE_DIR}/flesnet
+  TEST_FILE       CMakeLists.txt
+)
+
+If(ProjectUpdated)
+  File(REMOVE_RECURSE ${FLESNET_DESTDIR})
+  Message("flesnet source directory was changed so build directory was deleted")
+EndIf()
+
+ExternalProject_Add(
+  flesnet
+  SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/flesnet
+  CMAKE_CACHE_ARGS -DINCLUDE_ZMQ:BOOL=TRUE -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON
+  BUILD_IN_SOURCE 0
+  LOG_DOWNLOAD 1 LOG_CONFIGURE 1 LOG_BUILD 1 LOG_INSTALL 1
+  BUILD_COMMAND ${CMAKE_COMMAND} --build . --target logging fles_ipc
+  BUILD_BYPRODUCTS ${FLESNET_DESTDIR}/src/flesnet-build/lib/fles_ipc/${CMAKE_STATIC_LIBRARY_PREFIX}fles_ipc${CMAKE_STATIC_LIBRARY_SUFFIX}
+  INSTALL_COMMAND ""
+)
+
+add_library(external::fles_logging STATIC IMPORTED GLOBAL)
+add_dependencies(external::fles_logging flesnet)
+set_target_properties(external::fles_logging PROPERTIES
+  IMPORTED_LOCATION ${FLESNET_DESTDIR}/src/flesnet-build/lib/logging/${CMAKE_STATIC_LIBRARY_PREFIX}logging${CMAKE_STATIC_LIBRARY_SUFFIX}
+)
+target_include_directories(external::fles_logging INTERFACE
+  ${CMAKE_CURRENT_SOURCE_DIR}/flesnet/lib/logging
+  ${Boost_INCLUDE_DIRS}
+)
+target_compile_definitions(external::fles_logging
+  INTERFACE BOOST_LOG_DYN_LINK
+  INTERFACE BOOST_LOG_USE_NATIVE_SYSLOG
+  INTERFACE BOOST_ERROR_CODE_HEADER_ONLY
+)
+
+add_library(external::fles_ipc STATIC IMPORTED GLOBAL)
+add_dependencies(external::fles_ipc flesnet external::fles_logging)
+set_target_properties(external::fles_ipc PROPERTIES
+  IMPORTED_LOCATION ${FLESNET_DESTDIR}/src/flesnet-build/lib/fles_ipc/${CMAKE_STATIC_LIBRARY_PREFIX}fles_ipc${CMAKE_STATIC_LIBRARY_SUFFIX}
+  INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/flesnet/lib/fles_ipc
+)
diff --git a/external/fles/CMakeLists.txt b/external/fles/CMakeLists.txt
deleted file mode 100644
index 23a86ac14bdba02891e9bb1849a7ba55cd9d5d27..0000000000000000000000000000000000000000
--- a/external/fles/CMakeLists.txt
+++ /dev/null
@@ -1,88 +0,0 @@
-# Build the fles_ipc library which is maintained in the flesnet repository on github
-#
-# This library provides the interface to the experiment data in timeslices
-# both online as delivered by flesnet and to timeslice archive (.tsa) files.
-
-download_project_if_needed(PROJECT         flesnet
-                           GIT_REPOSITORY  "https://github.com/cbm-fles/flesnet"
-                           GIT_TAG         "301000b321eb7bc3a47a79b2ceadf2aa844327fe"
-                           GIT_STASH       TRUE
-                           SOURCE_DIR      ${CMAKE_CURRENT_SOURCE_DIR}/flesnet
-                           TEST_FILE       CMakeLists.txt
-                           )
-
-# Create the logging library
-add_library(fles_logging SHARED flesnet/lib/logging/log.cpp flesnet/lib/logging/log.hpp)
-
-target_compile_definitions(fles_logging
-  PUBLIC BOOST_LOG_DYN_LINK
-  PUBLIC BOOST_LOG_USE_NATIVE_SYSLOG
-  PUBLIC BOOST_ERROR_CODE_HEADER_ONLY
-)
-
-target_include_directories(fles_logging PUBLIC flesnet/lib/logging/)
-
-target_include_directories(fles_logging SYSTEM PUBLIC ${Boost_INCLUDE_DIRS})
-
-target_link_directories(fles_logging PUBLIC ${Boost_LIBRARY_DIRS})
-
-target_link_libraries(fles_logging boost_log)
-
-Install(TARGETS fles_logging DESTINATION lib)
-
-Set(INCLUDE_DIRECTORIES
-)
-
-Set(SYSTEM_INCLUDE_DIRECTORIES
-  ${Boost_INCLUDE_DIR}
-  ${ZMQ_INCLUDE_DIR}
-  ${CMAKE_SOURCE_DIR}/external/cppzmq
-  ${CMAKE_SOURCE_DIR}/external/fles/flesnet
-  ${CMAKE_SOURCE_DIR}/external/fles/flesnet/lib/logging
-)
-
-Include_Directories( ${INCLUDE_DIRECTORIES})
-
-Include_Directories(SYSTEM ${SYSTEM_INCLUDE_DIRECTORIES})
-
-
-Set(LINK_DIRECTORIES
-  ${Boost_LIBRARY_DIRS}
-  ${ZMQ_LIBRARY_DIRS}
-)
-
-Link_Directories( ${LINK_DIRECTORIES})
-
-Set(SRCS
-flesnet/lib/fles_ipc/Microslice.cpp
-flesnet/lib/fles_ipc/MicrosliceView.cpp
-flesnet/lib/fles_ipc/StorableMicroslice.cpp
-flesnet/lib/fles_ipc/StorableTimeslice.cpp
-flesnet/lib/fles_ipc/System.cpp
-flesnet/lib/fles_ipc/Timeslice.cpp
-flesnet/lib/fles_ipc/TimeslicePublisher.cpp
-flesnet/lib/fles_ipc/TimesliceReceiver.cpp
-flesnet/lib/fles_ipc/TimesliceSubscriber.cpp
-flesnet/lib/fles_ipc/TimesliceView.cpp
-flesnet/lib/fles_ipc/TimesliceMultiInputArchive.cpp
-flesnet/lib/fles_ipc/TimesliceMultiSubscriber.cpp
-flesnet/lib/fles_ipc/TimesliceAutoSource.cpp
-)
-
-
-Set_Source_Files_Properties(${SRCS} COMPILE_FLAGS "-std=c++14 -O3 -ggdb -msse4.2 -Wall -Wpedantic -Wextra -Winit-self -Wundef -Wold-style-cast -Woverloaded-virtual -Wwrite-strings -Wnon-virtual-dtor -fno-omit-frame-pointer")
-
-Set(LIBRARY_NAME fles_ipc)
-If(UNIX AND NOT APPLE)
-  Set(DEPENDENCIES boost_thread boost_system boost_serialization boost_log boost_regex fles_logging zmq rt)
-Else()
-  Set(DEPENDENCIES boost_thread boost_system boost_serialization boost_log boost_regex fles_logging zmq)
-EndIf()
-
-
-GENERATE_LIBRARY()
-
-# Install header files
-install(FILES flesnet/lib/logging/log.hpp DESTINATION include)
-file(GLOB_RECURSE IPC_HEADERS flesnet/lib/fles_ipc/*.hpp)
-install(FILES ${IPC_HEADERS} DESTINATION include)