diff --git a/.docker/Dockerfile b/.docker/Dockerfile
index ac68b939670a6da58cfa4f093380ee94abe21144..fae9c39282daf891a787bb3228d40bf5b7740554 100644
--- a/.docker/Dockerfile
+++ b/.docker/Dockerfile
@@ -8,38 +8,13 @@ RUN apt-get install -y doxygen
 RUN apt-get install -y clang-format-11 clang-tidy-11
 RUN apt-get install -y python3-pip
 RUN apt-get install -y git
-
-COPY doc/requirements.txt requirements.txt
-RUN pip3 install -r requirements.txt
-
-RUN apt-get install -y build-essential autoconf libtool pkg-config
-RUN git clone --recurse-submodules -b v1.38.1 https://github.com/grpc/grpc
-
-WORKDIR /grpc
-RUN mkdir -p cmake/build
-WORKDIR cmake/build
-RUN cmake -DgRPC_INSTALL=ON \
-      -DgRPC_BUILD_CSHARP_EXT=OFF \
-      -DgRPC_BUILD_GRPC_CSHARP_PLUGIN=OFF \
-      -DgRPC_BUILD_GRPC_PYTHON_PLUGIN=OFF \
-      -DgRPC_BUILD_GRPC_RUBY_PLUGIN=OFF \
-      -DgRPC_BUILD_GRPC_PHP_PLUGIN=OFF \
-      -DgRPC_BUILD_GRPC_OBJECTIVE_C_PLUGIN=OFF \
-      -DgRPC_BUILD_GRPC_NODE_PLUGIN=OFF \
-      -DgRPC_BUILD_TESTS=OFF \
-      ../..
-RUN make -j
-RUN make install
-WORKDIR /grpc
-RUN mkdir -p third_party/abseil-cpp/cmake/build
-WORKDIR third_party/abseil-cpp/cmake/build
-RUN cmake -DCMAKE_POSITION_INDEPENDENT_CODE=TRUE \
-      ../..
-RUN make -j
-RUN make install
-
 RUN apt-get install -y curl
 
+COPY doc/requirements.txt doc-requirements.txt
+RUN pip3 install -r doc-requirements.txt
+COPY requirements.txt build-requirements.txt
+RUN pip3 install -r build-requirements.txt
+
 COPY . /libcaosdb/
 WORKDIR /libcaosdb
 RUN rm -rf .git
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 2dab0843547efef8918e7a5a691e03dd73552e8c..3557063ce32b6b793495e9f2e8ccc6b7b75e095d 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -62,7 +62,7 @@ build-testenv:
     - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
       # use here general latest or specific branch latest...
     - docker pull $CPPLIB_REGISTRY_IMAGE|| true
-    - docker build 
+    - docker build
       --file .docker/Dockerfile
       --pull
       --cache-from $CPPLIB_REGISTRY_IMAGE
@@ -84,7 +84,8 @@ test:
   script:
     - mkdir build
     - cd build
-    - cmake -DGRPC_FETCHCONTENT=OFF -DCMAKE_BUILD_TYPE=Debug ..
+    - conan install ..
+    - cmake -DCMAKE_BUILD_TYPE=Debug ..
     - cmake --build .
     - cmake --build . --target unit_test_coverage
 
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1da9e3af2977714d54b37dc8380c43f78bcb8e29..6827cdf89c6cce7001a78a1524629fd05bd5e50c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -34,6 +34,11 @@ set(CMAKE_CXX_STANDARD 17)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
+
+# dependency management with conan
+include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
+conan_basic_setup()
+
 set(PROJECT_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/include")
 
 find_program(iwyu NAMES include-what-you-use iwyu PATHS ${CMAKE_SOURCE_DIR}/tools/include-what-you-use/${iwyu_os}/bin)
@@ -68,7 +73,7 @@ set_target_properties(caosdbcli PROPERTIES
     CXX_CLANG_TIDY "${_CMAKE_CXX_CLANG_TIDY}"
     CXX_INCLUDE_WHAT_YOU_USE "${_CMAKE_CXX_INCLUDE_WHAT_YOU_USE}"
     )
-target_link_libraries(caosdbcli caosdb)
+target_link_libraries(caosdbcli caosdb ${CONAN_LIBS})
 
 if("${CMAKE_BUILD_TYPE}" MATCHES "Debug")
     # supress warnings during build of gtest
@@ -83,8 +88,8 @@ endif()
 
 
 ## CODE GENERATION
-option(GRPC_FETCHCONTENT "Fetch and build GRPC from the sources" OFF)
-include(FetchGRPC)
+#option(GRPC_FETCHCONTENT "Fetch and build GRPC from the sources" OFF)
+#include(FetchGRPC)
 
 #
 # Protobuf/Grpc source files
@@ -103,11 +108,11 @@ set(hw_grpc_srcs "${CMAKE_CURRENT_BINARY_DIR}/include/caosdb/info/v1alpha1/main.
 set(hw_grpc_hdrs "${CMAKE_CURRENT_BINARY_DIR}/include/${hw_hdrs_path}/main.grpc.pb.h")
 add_custom_command(
       OUTPUT "${hw_proto_srcs}" "${hw_proto_hdrs}" "${hw_grpc_srcs}" "${hw_grpc_hdrs}"
-      COMMAND ${_PROTOBUF_PROTOC}
+      COMMAND ${CMAKE_BINARY_DIR}/build_tools/protoc
       ARGS --grpc_out "${CMAKE_CURRENT_BINARY_DIR}/include"
         --cpp_out "${CMAKE_CURRENT_BINARY_DIR}/include"
         -I "${PROTO_PATH}"
-        --plugin=protoc-gen-grpc="${_GRPC_CPP_PLUGIN_EXECUTABLE}"
+        --plugin=protoc-gen-grpc="${CMAKE_BINARY_DIR}/build_tools/grpc_cpp_plugin"
         "${PROTO_FILES}"
       DEPENDS "${PROTO_FILES}")
 
@@ -120,9 +125,7 @@ add_library(caosdb_info_v1alpha1
   ${hw_proto_srcs}
   ${hw_proto_hdrs})
 target_link_libraries(caosdb_info_v1alpha1
-  ${_REFLECTION}
-  ${_GRPC_GRPCPP}
-  ${_PROTOBUF_LIBPROTOBUF})
+  ${CONAN_LIBS})
 target_include_directories(caosdb_info_v1alpha1 PUBLIC
    # headers to include when building from source
    $<BUILD_INTERFACE:${libcaosdb_SOURCE_DIR}/include>
@@ -131,10 +134,8 @@ target_include_directories(caosdb_info_v1alpha1 PUBLIC
    )
 
 target_link_libraries(caosdb
-caosdb_info_v1alpha1
-${_REFLECTION}
-${_GRPC_GRPCPP}
-${_PROTOBUF_LIBPROTOBUF})
+  caosdb_info_v1alpha1
+  ${CONAN_LIBS})
 
 
 ###############################################
@@ -196,7 +197,7 @@ install(
     TARGETS
         caosdb
         caosdb_info_v1alpha1
-        ${_GRPC_DEPS}
+        #${CONAN_LIBS_GRPC}
     # name of the CMake "export group" containing the targets we want to install
     EXPORT caosdbTargets
     # Dynamic, static library and include destination locations after running
diff --git a/conanfile.txt b/conanfile.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b5d9a09828a19470c33b7220d0bb340535405e4f
--- /dev/null
+++ b/conanfile.txt
@@ -0,0 +1,10 @@
+[requires]
+boost/1.76.0
+grpc/1.38.0
+
+[generators]
+cmake
+
+[imports]
+bin, protoc* -> ./build_tools
+bin, grpc_cpp_plugin* -> ./build_tools
diff --git a/src/caosdb/connection.cpp b/src/caosdb/connection.cpp
index 071714b79fc39f44ffb74a85e6724189750684a6..635c8bd5f2ca472b32c67f2323eee296cbdb976a 100644
--- a/src/caosdb/connection.cpp
+++ b/src/caosdb/connection.cpp
@@ -20,9 +20,6 @@
  *
  */
 
-#include "caosdb/connection.h"
-#include "caosdb/utils.h"
-#include "caosdb/authentication.h"
 #include <grpcpp/create_channel.h>
 #include <grpcpp/impl/codegen/client_context.h>
 #include <grpcpp/impl/codegen/status.h>
@@ -33,6 +30,9 @@
 #include "caosdb/info/v1alpha1/main.grpc.pb.h"
 #include "caosdb/info/v1alpha1/main.pb.h"
 #include "caosdb/exceptions.h"
+#include "caosdb/connection.h"
+#include "caosdb/utils.h"
+#include "caosdb/authentication.h"
 
 namespace caosdb::connection {
 using caosdb::authentication::Authenticator;