diff --git a/Cargo.toml b/Cargo.toml
index 3571a05043ad8e7fd69ce50c8ad12efabcd13153..99bab16850d970418af414b3a88e9c1eb8ebd893 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -43,10 +43,10 @@ pest_derive = "2.7"
 rand = "0.8"
 sha2 = { version = "0.10.2", default-features = false }
 hex = "0.4"
-sp-core = "22.0.0"
+sp-core = "31.0.0"
 libp2p = { version = "0.52" }
-subxt = "0.33.0"
-subxt-signer = { version = "0.33.0", features = ["subxt"] }
+subxt = { version = "0.35.3", features = ["substrate-compat"] }
+subxt-signer = { version = "0.35.3", features = ["subxt"] }
 tracing = "0.1.35"
 pjs-rs = "0.1.2"
 kube = "0.87.1"
diff --git a/crates/configuration/src/network.rs b/crates/configuration/src/network.rs
index 31b2ff6c01c3351959b9ad693b00e307689d2974..1b133018b5a2fca88fa6f99e76fd6da258dd9f96 100644
--- a/crates/configuration/src/network.rs
+++ b/crates/configuration/src/network.rs
@@ -126,16 +126,16 @@ impl NetworkConfig {
             if relaychain_default_command.is_some() {
                 // we modify only nodes which don't already have a command
                 if node.command.is_none() {
-                    node.command = relaychain_default_command.clone();
+                    node.command.clone_from(&relaychain_default_command);
                 }
             }
 
             if relaychain_default_image.is_some() && node.image.is_none() {
-                node.image = relaychain_default_image.clone();
+                node.image.clone_from(&relaychain_default_image);
             }
 
             if relaychain_default_db_snapshot.is_some() && node.db_snapshot.is_none() {
-                node.db_snapshot = relaychain_default_db_snapshot.clone();
+                node.db_snapshot.clone_from(&relaychain_default_db_snapshot);
             }
 
             if !default_args.is_empty() && node.args().is_empty() {
@@ -160,16 +160,18 @@ impl NetworkConfig {
                 if parachain_default_command.is_some() {
                     // we modify only nodes which don't already have a command
                     if collator.command.is_none() {
-                        collator.command = parachain_default_command.clone();
+                        collator.command.clone_from(&parachain_default_command);
                     }
                 }
 
                 if parachain_default_image.is_some() && collator.image.is_none() {
-                    collator.image = parachain_default_image.clone();
+                    collator.image.clone_from(&parachain_default_image);
                 }
 
                 if parachain_default_db_snapshot.is_some() && collator.db_snapshot.is_none() {
-                    collator.db_snapshot = parachain_default_db_snapshot.clone();
+                    collator
+                        .db_snapshot
+                        .clone_from(&parachain_default_db_snapshot);
                 }
 
                 if !default_args.is_empty() && collator.args().is_empty() {
diff --git a/crates/orchestrator/src/generators/chain_spec.rs b/crates/orchestrator/src/generators/chain_spec.rs
index 5d44e47fe052ec32c52b5c6de925814819cee44f..777bd650dbadaf0c114af1d58a93ec36cbdc01e7 100644
--- a/crates/orchestrator/src/generators/chain_spec.rs
+++ b/crates/orchestrator/src/generators/chain_spec.rs
@@ -147,7 +147,7 @@ impl ChainSpec {
             let mut replacement_value = String::default();
             if let Some(chain_name) = self.chain_name.as_ref() {
                 if !chain_name.is_empty() {
-                    replacement_value = chain_name.clone();
+                    replacement_value.clone_from(chain_name);
                 }
             };
 
diff --git a/crates/orchestrator/src/lib.rs b/crates/orchestrator/src/lib.rs
index c7cab90eb7b73e2b9e65294683adb50624b3fcb7..deebc4da910f7f33234509e1487427bafdd86e5a 100644
--- a/crates/orchestrator/src/lib.rs
+++ b/crates/orchestrator/src/lib.rs
@@ -258,7 +258,7 @@ where
 
             // Is used in the register_para_options (We need to get this from the relay and not the collators)
             if node_ws_url.is_empty() {
-                node_ws_url = node.ws_uri.clone()
+                node_ws_url.clone_from(&node.ws_uri)
             }
 
             // Add the node to the `Network` instance
diff --git a/crates/orchestrator/src/network/node.rs b/crates/orchestrator/src/network/node.rs
index bc3bee8b9509ed7c71a699dbd39e236ca091177b..caa60b0b2664c9eb24f8f02fbd69180566bfcc49 100644
--- a/crates/orchestrator/src/network/node.rs
+++ b/crates/orchestrator/src/network/node.rs
@@ -66,7 +66,11 @@ impl NetworkNode {
     pub async fn client<Config: subxt::Config>(
         &self,
     ) -> Result<OnlineClient<Config>, subxt::Error> {
-        OnlineClient::from_url(&self.ws_uri).await
+        if subxt::utils::url_is_secure(&self.ws_uri)? {
+            OnlineClient::from_url(&self.ws_uri).await
+        } else {
+            OnlineClient::from_insecure_url(&self.ws_uri).await
+        }
     }
 
     /// Execute js/ts code inside [pjs_rs] custom runtime.
diff --git a/crates/provider/src/docker/client.rs b/crates/provider/src/docker/client.rs
index 2335a37976defed3fe4bece5f3d4f3184ced20a5..5fdc2713a94153209e9cf4524f43f022d71fa428 100644
--- a/crates/provider/src/docker/client.rs
+++ b/crates/provider/src/docker/client.rs
@@ -160,7 +160,7 @@ impl ContainerRunOptions {
     }
 
     pub fn port_mapping(mut self, port_mapping: &HashMap<Port, Port>) -> Self {
-        self.port_mapping = port_mapping.clone();
+        self.port_mapping.clone_from(port_mapping);
         self
     }