diff --git a/dap-sdk/net/core/dap_timerfd.c b/dap-sdk/net/core/dap_timerfd.c
index cdda7e26de2c1581684415b72b617c03bae17466..61131a04b4a55b06b5228e12e7360d700c880f14 100644
--- a/dap-sdk/net/core/dap_timerfd.c
+++ b/dap-sdk/net/core/dap_timerfd.c
@@ -328,6 +328,9 @@ void dap_timerfd_reset(dap_timerfd_t *a_timerfd)
  */
 void dap_timerfd_delete(dap_timerfd_t *a_timerfd)
 {
+    #ifdef _WIN32
+        DeleteTimerQueueTimer(hTimerQueue, (HANDLE)a_timerfd->th, NULL);
+    #endif
     if (a_timerfd->events_socket->worker)
         dap_events_socket_remove_and_delete_mt(a_timerfd->events_socket->worker, a_timerfd->esocket_uuid);
 }
diff --git a/modules/channel/chain/dap_stream_ch_chain.c b/modules/channel/chain/dap_stream_ch_chain.c
index 821db99af59892057dd8b0e26bd833ae1fe37e83..325d3ac2bf2b6bcc00c3e92f6d082b666c791c69 100644
--- a/modules/channel/chain/dap_stream_ch_chain.c
+++ b/modules/channel/chain/dap_stream_ch_chain.c
@@ -639,6 +639,39 @@ static void s_gdb_sync_tsd_worker_callback(dap_worker_t *a_worker, void *a_arg)
     DAP_DELETE(l_sync_request);
 }
 
+/**
+ * @brief 
+ * 
+ * @param net_id 
+ * @param group_name 
+ * @return dap_chain_t* 
+ */
+dap_chain_t *s_chain_get_chain_from_group_name(dap_chain_net_id_t net_id, char *group_name)
+{
+    dap_chain_t *l_chain;
+
+    if (!group_name)
+    {
+        log_it(L_ERROR, "s_chain_get_chain_id_from_group. GDB group name is NULL");
+        return NULL;
+    }
+    
+    dap_chain_net_t *l_net = dap_chain_net_by_id(net_id); 
+
+    if (!l_net)
+        return false;
+
+    DL_FOREACH(l_net->pub.chains, l_chain) 
+    {
+        char *s_chain_group_name = dap_chain_net_get_gdb_group_from_chain(l_chain);    
+
+        if (!strcmp(group_name,s_chain_group_name))
+            return l_chain;
+    }    
+    
+    return NULL;
+}
+
 /**
  * @brief s_gdb_in_pkt_callback
  * @param a_thread
@@ -738,11 +771,18 @@ static bool s_gdb_in_pkt_proc_callback(dap_proc_thread_t *a_thread, void *a_arg)
 
             // apply received transaction
             dap_chain_t *l_chain = dap_chain_find_by_id(l_sync_request->request_hdr.net_id, l_sync_request->request_hdr.chain_id);
+
+            //
+            // if chain is zero, it can be on of GDB group
+            // 
+            if (!l_chain)
+                 l_chain = s_chain_get_chain_from_group_name(l_sync_request->request_hdr.net_id, l_obj->group);
+
             if(l_chain) {
                 if(l_chain->callback_add_datums_with_group){
                     const void * restrict l_store_obj_value = l_store_obj[i].value;
                     l_chain->callback_add_datums_with_group(l_chain,
-                            (dap_chain_datum_t** restrict) l_store_obj_value, 1,
+                            (dap_chain_datum_t** restrict) &l_store_obj_value, 1,
                             l_store_obj[i].group);
                 }
             }
diff --git a/modules/net/dap_chain_node_client.c b/modules/net/dap_chain_node_client.c
index f080e754f8dc28ff61461c44873fae1c0dcb11ad..b15bf29deb0ae6b92239eb2c4edf12a135b3223d 100644
--- a/modules/net/dap_chain_node_client.c
+++ b/modules/net/dap_chain_node_client.c
@@ -501,13 +501,17 @@ static void s_ch_chain_callback_notify_packet_in(dap_stream_ch_chain_t* a_ch_cha
                 if (dap_chain_net_get_target_state(l_net) == NET_STATE_ONLINE) {
                     dap_timerfd_reset(l_node_client->sync_timer);
                     dap_chain_net_set_state(l_net, NET_STATE_ONLINE);
-                } else if (!l_have_waiting)
+                } 
+                else if (!l_have_waiting)
+                {
+                    #ifndef _WIN32
+                        pthread_cond_broadcast(&l_node_client->wait_cond);
+                    #else
+                        SetEvent( l_node_client->wait_cond );
+                    #endif
+                    // l_node_client object is not presented after dap_chain_net_state_go_to with NET_STATE_OFFLINE
                     dap_chain_net_state_go_to(l_net, NET_STATE_OFFLINE);
-#ifndef _WIN32
-                pthread_cond_broadcast(&l_node_client->wait_cond);
-#else
-                SetEvent( l_node_client->wait_cond );
-#endif
+                }
             }
         } break;
         default: break;
@@ -790,6 +794,10 @@ void dap_chain_node_client_close(dap_chain_node_client_t *a_client)
     dap_chain_node_client_handle_t * l_client_found = NULL;
     HASH_FIND(hh,s_clients,&a_client->uuid,sizeof(a_client->uuid),l_client_found);
     if (l_client_found) {
+
+        if (l_client_found->client->sync_timer)
+            dap_timerfd_delete(l_client_found->client->sync_timer);
+
         HASH_DEL(s_clients,l_client_found);
         DAP_DELETE(l_client_found);
         if (a_client->callbacks.delete)
diff --git a/modules/net/include/dap_chain_net.h b/modules/net/include/dap_chain_net.h
index a9701a173791a6313f2c3404764e50bf1fd6aa2f..07468926d7e8cd60abed197cd5e2b1d6ac173af0 100644
--- a/modules/net/include/dap_chain_net.h
+++ b/modules/net/include/dap_chain_net.h
@@ -169,6 +169,15 @@ DAP_STATIC_INLINE char * dap_chain_net_get_gdb_group_mempool(dap_chain_t * l_cha
     return NULL;
 }
 
+DAP_STATIC_INLINE char * dap_chain_net_get_gdb_group_from_chain(dap_chain_t * l_chain)
+{
+    dap_chain_net_t * l_net = l_chain ? dap_chain_net_by_id(l_chain->net_id) : NULL;
+    if ( l_net )
+		return dap_strdup_printf( "chain-gdb.%s.chain-%016llX",l_net->pub.name, l_chain->id.uint64);
+
+    return NULL;
+}
+
 dap_chain_t * dap_chain_net_get_chain_by_chain_type(dap_chain_net_t * l_net, dap_chain_type_t a_datum_type);
 char * dap_chain_net_get_gdb_group_mempool_by_chain_type(dap_chain_net_t * l_net, dap_chain_type_t a_datum_type);
 dap_chain_net_t **dap_chain_net_list(uint16_t *a_size);