diff --git a/services/tunnelbroker/CMakeLists.txt b/services/tunnelbroker/CMakeLists.txt
--- a/services/tunnelbroker/CMakeLists.txt
+++ b/services/tunnelbroker/CMakeLists.txt
@@ -26,7 +26,7 @@
 # Find Libuv installation
 pkg_check_modules(LIBUV REQUIRED libuv>=1.43)
 
-if(${CMAKE_CURRENT_SOURCE_DIR} STREQUAL "/transferred")
+if(${CMAKE_CURRENT_SOURCE_DIR} STREQUAL "/transferred/tunnelbroker")
   # Inside the docker build contex
   set(_proto_path "grpc")
 else()
@@ -40,6 +40,12 @@
   EXCLUDE_FROM_ALL
 )
 
+# Shared services code
+add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../lib/src
+  ${CMAKE_CURRENT_BINARY_DIR}/common
+  EXCLUDE_FROM_ALL
+)
+
 set(BUILD_TESTING OFF CACHE BOOL "Turn off tests" FORCE)
 set(WITH_GFLAGS OFF CACHE BOOL "Turn off gflags" FORCE)
 
@@ -58,7 +64,6 @@
 set(RUST_LIBS "rust-notifications")
 
 file(GLOB_RECURSE SOURCE_CODE "./src/*.cpp")
-file(GLOB COMMON_CODE "${CMAKE_CURRENT_SOURCE_DIR}/../lib/src/*.cpp")
 
 set(
   SOURCE_CODE
@@ -66,13 +71,14 @@
   ${DOUBLE_CONVERSION_SOURCES}
   ${GENERATED_CODE}
   ${SOURCE_CODE}
-  ${COMMON_CODE}
 )
 
 set(
   LIBS
 
+  comm-services-common
   comm-tunnelbroker-grpc
+
   gRPC::grpc++_reflection
   gRPC::grpc++
   ${AWSSDK_LINK_LIBRARIES}
@@ -104,8 +110,6 @@
   ${CMAKE_CURRENT_SOURCE_DIR}/src/Service
   ${CMAKE_CURRENT_SOURCE_DIR}/src/Tools
   ${CMAKE_CURRENT_SOURCE_DIR}/src/Amqp
-
-  ${CMAKE_CURRENT_SOURCE_DIR}/../lib/src
 )
 
 target_link_libraries(
diff --git a/services/tunnelbroker/Dockerfile b/services/tunnelbroker/Dockerfile
--- a/services/tunnelbroker/Dockerfile
+++ b/services/tunnelbroker/Dockerfile
@@ -31,12 +31,15 @@
 
 WORKDIR /transferred
 
+COPY services/lib/src/ lib/src/
+
+WORKDIR /transferred/tunnelbroker
+
 ADD native/cpp/CommonCpp/grpc grpc
 COPY services/lib/cmake-components cmake-components
 COPY services/lib/docker/ scripts/
 COPY services/tunnelbroker/docker/* docker/
 COPY services/tunnelbroker/ .
-COPY services/lib/src/* src/
 
 RUN scripts/build_service.sh