diff --git a/ReleaseNotes.md b/ReleaseNotes.md
index 1462528e436b4c650fc7b49953a170f9cf29d845..173f6a8de1c491e51cbbc6121a8856694d631328 100644
--- a/ReleaseNotes.md
+++ b/ReleaseNotes.md
@@ -10,6 +10,7 @@
 - cta/CTA#180 - Allow to submit multiple files for verification
 - cta/CTA#94 - Remove tape session error codes
 - cta/CTA#198 - Add vid existence check and update usage message for cta-verify-file
+- cta/CTA#199 - Add static library ctaCmdlineToolsCommon
 ### Continuous Integration
 - cta/CTA#118 - Add unit tests for OSM label
 - cta/CTA#191 - Block merge until cta_valgrind success
diff --git a/cmdline/standalone_cli_tools/CMakeLists.txt b/cmdline/standalone_cli_tools/CMakeLists.txt
index 930aa0f403585a84684ad450968684d9c65f9d2e..f8213717779bccbaf0eba8f404dcb1c77663b694 100644
--- a/cmdline/standalone_cli_tools/CMakeLists.txt
+++ b/cmdline/standalone_cli_tools/CMakeLists.txt
@@ -15,9 +15,6 @@
 
 cmake_minimum_required (VERSION 3.17)
 
-add_subdirectory (change_storage_class)
-add_subdirectory (restore_files)
-
 find_package(xrootdclient REQUIRED)
 find_package(Protobuf3 REQUIRED)
 
@@ -30,12 +27,27 @@ include_directories(${XRD_SSI_PB_DIR}/include ${XRD_SSI_PB_DIR}/eos_cta/include)
 # Compiled protocol buffers
 include_directories(${CMAKE_BINARY_DIR}/eos_cta ${PROTOBUF3_INCLUDE_DIRS})
 
+set(CMD_LINE_TOOLS_COMMON_LIB_SRC_FILES
+  common/CatalogueFetch.cpp
+  common/CmdLineArgs.cpp
+  common/CmdLineTool.cpp
+  common/ConnectionConfiguration.cpp
+)
+
+add_library (ctaCmdlineToolsCommon STATIC
+  ${CMD_LINE_TOOLS_COMMON_LIB_SRC_FILES})
+
+target_link_libraries(ctaCmdlineToolsCommon ctacommon XrdSsiPbEosCta XrdSsiLib XrdUtils EosCtaGrpc EosGrpcClient)
+
+set_property(TARGET ctaCmdlineToolsCommon PROPERTY SOVERSION "${CTA_SOVERSION}")
+set_property(TARGET ctaCmdlineToolsCommon PROPERTY   VERSION "${CTA_LIBVERSION}")
+
 #
 # cta-send-event CLOSEW|PREPARE|ABORT_PREPARE
 # injects a workflow event into the CTA Frontend
 #
 add_executable(cta-send-event CtaSendEvent.cpp common/CmdLineArgs.cpp)
-target_link_libraries(cta-send-event ctacommon XrdSsiPbEosCta XrdSsiLib XrdUtils)
+target_link_libraries(cta-send-event ctaCmdlineToolsCommon)
 set_property(TARGET cta-send-event APPEND PROPERTY INSTALL_RPATH ${PROTOBUF3_RPATH})
 
 #
@@ -47,4 +59,7 @@ target_link_libraries(cta-verify-file ctacommon XrdSsiPbEosCta XrdSsiLib XrdUtil
 set_property (TARGET cta-verify-file APPEND PROPERTY INSTALL_RPATH ${PROTOBUF3_RPATH})
 
 install(TARGETS cta-send-event DESTINATION usr/bin)
-install(TARGETS cta-verify-file DESTINATION usr/bin)
\ No newline at end of file
+install(TARGETS cta-verify-file DESTINATION usr/bin)
+
+add_subdirectory (change_storage_class)
+add_subdirectory (restore_files)
diff --git a/cmdline/standalone_cli_tools/change_storage_class/CMakeLists.txt b/cmdline/standalone_cli_tools/change_storage_class/CMakeLists.txt
index 6d88dd90e6d8b12fa7ef02be182302c7360d2a8a..01a0aea21ca68756e68d0778e29e15ac024a9c51 100644
--- a/cmdline/standalone_cli_tools/change_storage_class/CMakeLists.txt
+++ b/cmdline/standalone_cli_tools/change_storage_class/CMakeLists.txt
@@ -27,10 +27,9 @@ include_directories(${XRD_SSI_PB_DIR}/include ${XRD_SSI_PB_DIR}/eos_cta/include)
 # Compiled protocol buffers
 include_directories(${CMAKE_BINARY_DIR}/eos_cta ${PROTOBUF3_INCLUDE_DIRS})
 
-add_executable(cta-change-storage-class ChangeStorageClass.cpp ChangeStorageClassMain.cpp ../common/CmdLineTool.cpp ../common/CmdLineArgs.cpp ../../CtaAdminCmdParse.cpp ../common/ConnectionConfiguration.cpp ../common/CatalogueFetch.cpp)
-target_link_libraries(cta-change-storage-class XrdSsiLib XrdUtils ctacommon EosCtaGrpc EosGrpcClient stdc++fs)
+add_executable(cta-change-storage-class ChangeStorageClass.cpp ChangeStorageClassMain.cpp ../../CtaAdminCmdParse.cpp)
+target_link_libraries(cta-change-storage-class XrdSsiLib XrdUtils ctacommon EosCtaGrpc EosGrpcClient stdc++fs ctaCmdlineToolsCommon)
 set_property (TARGET cta-change-storage-class APPEND PROPERTY INSTALL_RPATH ${PROTOBUF3_RPATH})
 
-
 install(TARGETS cta-change-storage-class DESTINATION usr/bin)
 install(FILES cta-change-storage-class.1cta DESTINATION usr/share/man/man1)
\ No newline at end of file
diff --git a/cmdline/standalone_cli_tools/restore_files/CMakeLists.txt b/cmdline/standalone_cli_tools/restore_files/CMakeLists.txt
index 20a0246972114a3ba86378f0b17acb2bf1185693..4f41da31ae43f8fd5702fe87637b813810d94ec7 100644
--- a/cmdline/standalone_cli_tools/restore_files/CMakeLists.txt
+++ b/cmdline/standalone_cli_tools/restore_files/CMakeLists.txt
@@ -27,8 +27,8 @@ include_directories(${XRD_SSI_PB_DIR}/include ${XRD_SSI_PB_DIR}/eos_cta/include)
 # Compiled protocol buffers
 include_directories(${CMAKE_BINARY_DIR}/eos_cta ${PROTOBUF3_INCLUDE_DIRS})
 
-add_executable(cta-restore-deleted-files RestoreFilesCmdMain.cpp ../common/CmdLineTool.cpp ../common/CmdLineArgs.cpp RestoreFilesCmd.cpp ../../CtaAdminCmdParse.cpp)
-target_link_libraries(cta-restore-deleted-files ${PROTOBUF3_LIBRARIES} ${GRPC_LIBRARY} ${GRPC_GRPC++_LIBRARY} XrdSsiPbEosCta XrdSsiLib XrdUtils ctacommon EosCtaGrpc EosGrpcClient)
+add_executable(cta-restore-deleted-files RestoreFilesCmdMain.cpp RestoreFilesCmd.cpp ../../CtaAdminCmdParse.cpp)
+target_link_libraries(cta-restore-deleted-files ${PROTOBUF3_LIBRARIES} ${GRPC_LIBRARY} ${GRPC_GRPC++_LIBRARY} XrdSsiPbEosCta XrdSsiLib XrdUtils ctacommon EosCtaGrpc EosGrpcClient ctaCmdlineToolsCommon)
 set_property (TARGET cta-restore-deleted-files APPEND PROPERTY INSTALL_RPATH ${PROTOBUF3_RPATH})