diff --git a/cmake/Modules/FindDOOCS.cmake b/cmake/Modules/FindDOOCS.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..f346382402de8f520c596877a566c8506f6a08fd
--- /dev/null
+++ b/cmake/Modules/FindDOOCS.cmake
@@ -0,0 +1,51 @@
+#
+# cmake module for finding DOOCS
+#
+# By default, only the client API is included. If the component "server" is specified, also the
+# server library will be used.
+#
+# returns:
+#   DOOCS_FOUND        : true or false, depending on whether the package was found
+#   DOOCS_VERSION      : the package version
+#   DOOCS_INCLUDE_DIRS : path to the include directory
+#   DOOCS_LIBRARY_DIRS : path to the library directory
+#   DOOCS_LIBRARIES    : list of libraries to link against
+#   DOOCS_CXX_FLAGS    : Flags needed to be passed to the c++ compiler
+#   DOOCS_LINK_FLAGS   : Flags needed to be passed to the linker
+#
+# @author Martin Hierholzer, DESY
+#
+
+SET(DOOCS_FOUND 0)
+
+if("${DOOCS_FIND_COMPONENTS}" STREQUAL "server")
+  FIND_PATH(DOOCS_DIR libEqServer.so
+    ${CMAKE_CURRENT_LIST_DIR}
+    /export/doocs/lib
+  )
+  set(DOOCS_LIBRARIES EqServer DOOCSapi nsl dl pthread m rt ldap)
+else()
+  FIND_PATH(DOOCS_DIR libDOOCSapi.so
+    ${CMAKE_CURRENT_LIST_DIR}
+    /export/doocs/lib
+  )
+  set(DOOCS_LIBRARIES DOOCSapi nsl dl pthread m rt ldap)
+endif()
+
+# now set the required variables based on the determined DOOCS_DIR
+set(DOOCS_INCLUDE_DIRS ${DOOCS_DIR}/include)
+set(DOOCS_LIBRARY_DIRS ${DOOCS_DIR}/)
+
+set(DOOCS_CXX_FLAGS "-Wall -fPIC -D_REENTRANT -DLINUX -D__LINUX__ -DDMSG")
+set(DOOCS_LINK_FLAGS "-Wl,--no-as-needed")
+
+# extract DOOCS version from librar so symlink. Note: This is platform dependent and only works
+# if DOOCS was installed from the Debian pagackes. Find a better version detection scheme!
+execute_process(COMMAND bash -c "readlink ${DOOCS_DIR}/libDOOCSapi.so | sed -e 's/^.*libDOOCSapi.so.//' -e 's/-.*$//'" OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE DOOCS_VERSION)
+
+# use a macro provided by CMake to check if all the listed arguments are valid and set DOOCS_FOUND accordingly
+include(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(DOOCS
+        REQUIRED_VARS DOOCS_DIR
+	    VERSION_VAR DOOCS_VERSION )
+
diff --git a/cmake/create_cmake_config_files.cmake b/cmake/create_cmake_config_files.cmake
index 45f52be7e5ba8ccb399d8b94b36d14f83a1ccf57..1ee11a177bcee10ce18509c60b380d95a0dc8809 100644
--- a/cmake/create_cmake_config_files.cmake
+++ b/cmake/create_cmake_config_files.cmake
@@ -34,15 +34,6 @@ foreach(LIBRARY ${LIST})
   set(${PROJECT_NAME}_LINKER_FLAGS_MAKEFILE "${${PROJECT_NAME}_LINKER_FLAGS_MAKEFILE} -l${LIBRARY}")
 endforeach()
 
-# force the lists to be space separated (may be sometimes semicolon separated)
-string(REPLACE ";" " " ${PROJECT_NAME}_SOVERSION ${${PROJECT_NAME}_SOVERSION})
-string(REPLACE ";" " " ${PROJECT_NAME}_INCLUDE_DIRS ${${PROJECT_NAME}_INCLUDE_DIRS})
-string(REPLACE ";" " " ${PROJECT_NAME}_LIBRARY_DIRS ${${PROJECT_NAME}_LIBRARY_DIRS})
-string(REPLACE ";" " " ${PROJECT_NAME}_LIBRARIES ${${PROJECT_NAME}_LIBRARIES})
-string(REPLACE ";" " " ${PROJECT_NAME}_CXX_FLAGS ${${PROJECT_NAME}_CXX_FLAGS})
-string(REPLACE ";" " " ${PROJECT_NAME}_LINKER_FLAGS ${${PROJECT_NAME}_LINKER_FLAGS})
-string(REPLACE ";" " " ${PROJECT_NAME}_MEXFLAGS ${${PROJECT_NAME}_MEXFLAGS})
-
 # we have nested @-statements, so we have to parse twice:
 
 # create the cmake Find package script