diff --git a/CMakeLists.txt b/CMakeLists.txt
index e22be7b351336734d7e3e2fd507e7c1e65544672..42cb11e407d0e516b12461fb0d8acf82c21cc911 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -8,7 +8,7 @@ set(CMAKE_C_STANDARD 11)
 SET( CPACK_PACKAGE_NAME  "${PROJECT_NAME}")
 SET( CPACK_PACKAGE_VERSION_MAJOR 3)
 SET( CPACK_PACKAGE_VERSION_MINOR 5)
-SET( CPACK_PACKAGE_VERSION_PATCH 3)
+SET( CPACK_PACKAGE_VERSION_PATCH 9)
 
 # init CellFrame SDK
 add_definitions("-DDAP_VERSION=\"${CPACK_PACKAGE_VERSION_MAJOR}\"")
@@ -16,9 +16,9 @@ set(SUBMODULES_NO_BUILD ON)
 set(SUPPORT_PYTHON_PLUGINS ON)
 
 if (NOT WIN32)
-    set(CELLFRAME_MODULES "core chains mining network srv cs-dag-poa cs-dag-pos cs-none srv-app srv-app-db srv-datum srv-xchange srv-stake srv-vpn")
+    set(CELLFRAME_MODULES "core chains mining network srv cs-dag-poa cs-dag-pos cs-none srv-app srv-app-db srv-datum srv-xchange srv-stake modules-dynamic srv-vpn")
 else()
-    set(CELLFRAME_MODULES "core chains mining network srv cs-dag-poa cs-dag-pos cs-none srv-app srv-app-db srv-datum srv-xchange srv-stake")
+    set(CELLFRAME_MODULES "core chains mining network srv cs-dag-poa cs-dag-pos cs-none srv-app srv-app-db srv-datum srv-xchange srv-stake modules-dynamic")
 endif()
 
 include (cellframe-sdk/cmake/OS_Detection.cmake)
diff --git a/cellframe-sdk b/cellframe-sdk
index 1ceb8c139980da85fbd17f9a95abcbba9c7aa9ec..45967b7fa82676fb220060ff7e18195d813eff84 160000
--- a/cellframe-sdk
+++ b/cellframe-sdk
@@ -1 +1 @@
-Subproject commit 1ceb8c139980da85fbd17f9a95abcbba9c7aa9ec
+Subproject commit 45967b7fa82676fb220060ff7e18195d813eff84
diff --git a/dist/share/configs/network/kelvin-testnet.cfg.tpl b/dist/share/configs/network/kelvin-testnet.cfg.tpl
index aa25832b6681408fccb0286f2df866827d29bb69..99bd0f9dd34a2c5a9933036fbeffc8d0b54a5446 100644
--- a/dist/share/configs/network/kelvin-testnet.cfg.tpl
+++ b/dist/share/configs/network/kelvin-testnet.cfg.tpl
@@ -1,22 +1,30 @@
-# Kelvin Testnet
-# General section
-[general]
-id=0x0000000000000001
-name=kelvin-testnet
-# Possible values: light, full, archive, master, root
-node-role={NODE_TYPE}
-
-seed_nodes_hostnames=[0.root.testnet.klvn.io,1.root.testnet.klvn.io,2.root.testnet.klvn.io,3.root.testnet.klvn.io,4.root.testnet.klvn.io]
-seed_nodes_aliases=[kelvin.testnet.root.0,kelvin.testnet.root.1,kelvin.testnet.root.2,kelvin.testnet.root.3,kelvin.testnet.root.4]
-seed_nodes_addrs=[ffff::0000::0000::0001,ffff::0000::0000::0002,ffff::0000::0000::0003,ffff::0000::0000::0004,ffff::0000::0000::0005]
-seed_nodes_port=[8079,8079,8079,8079,8079]
-
-#[role-master]
-#proc_chains=[0x00000001]
-
-#[dag-poa]
-#events-sign-cert=mycert
-
-#[dag-pos]
-#events-sign-wallet=mywallet
-
+# Kelvin Testnet
+# General section
+[general]
+id=0x0000000000000001
+name=kelvin-testnet
+# Possible values: light, full, archive, master, root
+node-role={NODE_TYPE}
+
+seed_nodes_hostnames=[0.root.testnet.klvn.io,1.root.testnet.klvn.io,2.root.testnet.klvn.io,3.root.testnet.klvn.io,4.root.testnet.klvn.io]
+seed_nodes_aliases=[kelvin.testnet.root.0,kelvin.testnet.root.1,kelvin.testnet.root.2,kelvin.testnet.root.3,kelvin.testnet.root.4]
+seed_nodes_addrs=[ffff::0000::0000::0001,ffff::0000::0000::0002,ffff::0000::0000::0003,ffff::0000::0000::0004,ffff::0000::0000::0005]
+seed_nodes_port=[8079,8079,8079,8079,8079]
+
+private=false
+
+#[auth]
+#type=ca
+#acl_accept_ca_list=[]
+#acl_accept_ca_gdb=
+#acl_accept_ca_chains=all
+
+#[role-master]
+#proc_chains=[0x00000001]
+
+#[dag-poa]
+#events-sign-cert=mycert
+
+#[dag-pos]
+#events-sign-wallet=mywallet
+
diff --git a/prod_build/linux/debian/conf/dependencies b/prod_build/linux/debian/conf/dependencies
index 115dad27d858640f1d619067e40834e87de625b3..710b2f25342a25ce8a8f26ef4414ec5a3c0d05b5 100644
--- a/prod_build/linux/debian/conf/dependencies
+++ b/prod_build/linux/debian/conf/dependencies
@@ -1 +1 @@
-PKG_DEPS="libjson-c-dev libsqlite3-dev libmemcached-dev libev-dev libmagic-dev libcurl4-gnutls-dev libldb-dev libtalloc-dev libtevent-dev traceroute libpython3-dev"
+PKG_DEPS="cmake libjson-c-dev libsqlite3-dev libmemcached-dev libev-dev libmagic-dev libcurl4-gnutls-dev libldb-dev libtalloc-dev libtevent-dev traceroute libpython3-dev"
diff --git a/sources/main.c b/sources/main.c
index d3c3e58862e0ca00c3154e9b3d0c90b3c701313f..2fe6e2113436b4ab28ffa609a64b2d80dc4b1a4a 100755
--- a/sources/main.c
+++ b/sources/main.c
@@ -59,6 +59,7 @@
 #include "dap_http.h"
 #include "dap_http_folder.h"
 #include "dap_dns_server.h"
+#include "dap_modules_dynamic_cdb.h"
 
 
 #include "dap_events.h"
@@ -79,8 +80,6 @@
 #include "dap_chain_net_srv_app.h"
 #include "dap_chain_net_srv_app_db.h"
 #include "dap_chain_net_srv_datum.h"
-#include "dap_chain_net_bugreport.h"
-#include "dap_chain_net_news.h"
 #include "dap_chain_net_srv_geoip.h"
 
 #ifdef DAP_OS_LINUX
@@ -164,6 +163,7 @@ int main( int argc, const char **argv )
 #elif DAP_OS_UNIX
     g_sys_dir_path = dap_strdup_printf("/opt/%s", dap_get_appname());
 #endif
+
     {
         char l_log_path[MAX_PATH] = {'\0'};
         int l_pos = dap_sprintf(l_log_path, "%s/var/log", g_sys_dir_path);
@@ -410,6 +410,15 @@ int main( int argc, const char **argv )
             // Init HTTP-specific values
             dap_http_new( l_server, dap_get_appname() );
 
+            if( dap_config_get_item_bool_default(g_config,"cdb","enabled",false) ) {
+                if(dap_modules_dynamic_load_cdb(DAP_HTTP( l_server ))){
+                    log_it(L_CRITICAL,"Can't init CDB module");
+                    return -3;
+                }else{
+                    log_it(L_NOTICE, "Central DataBase (CDB) is initialized");
+                }
+            }
+
 	        // Handshake URL
 	        enc_http_add_proc( DAP_HTTP(l_server), ENC_HTTP_URL );
 
@@ -417,18 +426,6 @@ int main( int argc, const char **argv )
 	        dap_stream_add_proc_http( DAP_HTTP(l_server), STREAM_URL );
 	        dap_stream_ctl_add_proc( DAP_HTTP(l_server), STREAM_CTL_URL );
 
-            // BugReport URLs
-            bool l_bugreport_url_enabled = dap_config_get_item_bool_default(g_config, "server", "bugreport_url_enabled", false);
-            if(l_bugreport_url_enabled) {
-                dap_chain_net_bugreport_add_proc(DAP_HTTP(l_server));
-            }
-
-            // News URLs
-            bool l_news_url_enabled = dap_config_get_item_bool_default(g_config, "server", "news_url_enabled", false);
-            if(l_news_url_enabled) {
-                dap_chain_net_news_add_proc(DAP_HTTP(l_server));
-            }
-
 	        const char *str_start_mempool = dap_config_get_item_str( g_config, "mempool", "accept" );
 	        if ( str_start_mempool && !strcmp(str_start_mempool, "true")) {
 	                dap_chain_mempool_add_proc(DAP_HTTP(l_server), MEMPOOL_URL);
@@ -474,19 +471,7 @@ int main( int argc, const char **argv )
 
     //dap_chain_net_load_all();
 
-#ifdef DAP_OS_LINUX
-#ifndef __ANDROID__
-    // If CDB module switched on
-    if( dap_config_get_item_bool_default(g_config,"cdb","enabled",false) ) {
-        if ( (rc=dap_chain_net_srv_vpn_cdb_init(DAP_HTTP( l_server ))) != 0 ){
-            log_it(L_CRITICAL,"Can't init CDB module, return code %d",rc);
-            return -3;
 
-        }
-        log_it(L_NOTICE, "Central DataBase (CDB) is initialized");
-    }
-#endif
-#endif
 
     //Init python plugins
     #ifdef DAP_SUPPORT_PYTHON_PLUGINS