diff --git a/modules/net/dap_chain_node_client.c b/modules/net/dap_chain_node_client.c
index fadccfe53697b5ff48d867299c1c51717c43c5b9..eac80ec86b27bd2f7ef3182264e0eaaf13ec123c 100644
--- a/modules/net/dap_chain_node_client.c
+++ b/modules/net/dap_chain_node_client.c
@@ -268,8 +268,17 @@ static void s_stage_connected_callback(dap_client_t *a_client, void *a_arg)
             l_node_client->callbacks.connected(l_node_client, l_node_client->callbacks_arg);
         dap_stream_ch_chain_net_pkt_hdr_t l_announce = { .version = DAP_STREAM_CH_CHAIN_NET_PKT_VERSION,
                                                          .net_id  = l_node_client->net->pub.id };
+        // Announce net on downlink
         dap_client_write_unsafe(a_client, 'N', DAP_STREAM_CH_CHAIN_NET_PKT_TYPE_ANNOUNCE,
                                          &l_announce, sizeof(l_announce));
+        // Add uplink to clusters
+        dap_stream_node_addr_t *l_uplink_addr = &l_node_client->info->hdr.address;
+        dap_global_db_cluster_t *it;
+        DL_FOREACH(dap_global_db_instance_get_default()->clusters, it)
+            if (dap_cluster_member_find_unsafe(it->role_cluster, l_uplink_addr))
+                dap_cluster_member_add(it->links_cluster, l_uplink_addr, 0, NULL);
+        dap_chain_net_add_cluster_link(l_node_client->net, l_uplink_addr);
+
         pthread_mutex_lock(&l_node_client->wait_mutex);
         l_node_client->state = NODE_CLIENT_STATE_ESTABLISHED;
         if (s_stream_ch_chain_debug_more)