diff --git a/crates/configuration/src/network.rs b/crates/configuration/src/network.rs
index e8efb0890df4c6307a1cb8987df7409332895794..7bc4cc7a6bf859ad6c36317cc3af09bd8b6c067f 100644
--- a/crates/configuration/src/network.rs
+++ b/crates/configuration/src/network.rs
@@ -1184,11 +1184,10 @@ mod tests {
                     expected_parachain.chain_spec_path(),
                     loaded_parachain.chain_spec_path()
                 );
-                // TODO (nikos): Test this
-                // assert_eq!(
-                //     expected_parachain.registration_strategy(),
-                //     loaded_parachain.registration_strategy()
-                // );
+                assert_eq!(
+                    expected_parachain.registration_strategy(),
+                    loaded_parachain.registration_strategy()
+                );
                 assert_eq!(
                     expected_parachain.onboard_as_parachain(),
                     loaded_parachain.onboard_as_parachain()
@@ -1343,11 +1342,10 @@ mod tests {
                     expected_parachain.chain_spec_path(),
                     loaded_parachain.chain_spec_path()
                 );
-                // TODO (nikos): Test this
-                // assert_eq!(
-                //     expected_parachain.registration_strategy(),
-                //     loaded_parachain.registration_strategy()
-                // );
+                assert_eq!(
+                    expected_parachain.registration_strategy(),
+                    loaded_parachain.registration_strategy()
+                );
                 assert_eq!(
                     expected_parachain.onboard_as_parachain(),
                     loaded_parachain.onboard_as_parachain()
diff --git a/crates/configuration/src/parachain.rs b/crates/configuration/src/parachain.rs
index e7d667643f008a6dbce722cde2eede771a97fe08..7762360d8748f08864949871d46831878516f4f4 100644
--- a/crates/configuration/src/parachain.rs
+++ b/crates/configuration/src/parachain.rs
@@ -1,16 +1,10 @@
-use std::{
-    cell::RefCell,
-    error::Error,
-    fmt::{self, Display},
-    marker::PhantomData,
-    rc::Rc,
-};
+use std::{cell::RefCell, error::Error, fmt::Display, marker::PhantomData, rc::Rc};
 
 use multiaddr::Multiaddr;
 use serde::{
-    de::{self, MapAccess, Visitor},
+    de::{self, Visitor},
     ser::SerializeStruct,
-    Deserialize, Deserializer, Serialize,
+    Deserialize, Serialize,
 };
 
 use crate::{
@@ -54,52 +48,48 @@ struct RegistrationStrategyVisitor;
 impl<'de> Visitor<'de> for RegistrationStrategyVisitor {
     type Value = RegistrationStrategy;
 
-    fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
+    fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
         formatter.write_str("struct RegistrationStrategy")
     }
 
-    fn visit_map<V>(self, mut map: V) -> Result<RegistrationStrategy, V::Error>
+    fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error>
     where
-        V: MapAccess<'de>,
+        A: serde::de::MapAccess<'de>,
     {
         let mut add_to_genesis = false;
         let mut register_para = false;
 
-        println!("It arrives here");
-
-        while let Some(key) = map.next_key()? {
-            match key {
-                "add_to_genesis" => {
-                    add_to_genesis = map.next_value()?;
-                },
-                "register_para" => {
-                    register_para = map.next_value()?;
-                },
+        while let Some(key) = map.next_key::<String>()? {
+            match key.as_str() {
+                "add_to_genesis" => add_to_genesis = map.next_value()?,
+                "register_para" => register_para = map.next_value()?,
                 _ => {
-                    println!("Never arrrives here");
+                    return Err(de::Error::unknown_field(
+                        &key,
+                        &["add_to_genesis", "register_para"],
+                    ))
                 },
             }
         }
 
-        println!("Or here");
-        if add_to_genesis {
-            Ok(RegistrationStrategy::InGenesis)
-        } else if register_para {
-            Ok(RegistrationStrategy::UsingExtrinsic)
-        } else {
-            Err(de::Error::custom("unknown registration strategy"))
+        match (add_to_genesis, register_para) {
+            (true, false) => Ok(RegistrationStrategy::InGenesis),
+            (false, true) => Ok(RegistrationStrategy::UsingExtrinsic),
+            _ => Err(de::Error::missing_field("add_to_genesis or register_para")),
         }
     }
-
 }
 
 impl<'de> Deserialize<'de> for RegistrationStrategy {
     fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
     where
-        D: Deserializer<'de>,
+        D: serde::Deserializer<'de>,
     {
-        const FIELDS: &[&str] = &["add_to_genesis", "register_para"];
-        deserializer.deserialize_struct("RegistrationStrategy", FIELDS, RegistrationStrategyVisitor)
+        deserializer.deserialize_struct(
+            "RegistrationStrategy",
+            &["add_to_genesis", "register_para"],
+            RegistrationStrategyVisitor,
+        )
     }
 }
 
@@ -744,6 +734,7 @@ mod tests {
         assert_eq!(collator2.command().unwrap().as_str(), "command2");
         assert!(collator2.is_validator());
         assert_eq!(parachain_config.chain().unwrap().as_str(), "mychainname");
+
         assert_eq!(
             parachain_config.registration_strategy().unwrap(),
             &RegistrationStrategy::UsingExtrinsic
@@ -1081,16 +1072,25 @@ mod tests {
             if parachain.id() == 1000 {
                 assert_eq!(
                     parachain.registration_strategy(),
-                    Some(&RegistrationStrategy::InGenesis)
+                    Some(&RegistrationStrategy::UsingExtrinsic)
                 );
             }
             if parachain.id() == 2000 {
                 assert_eq!(
                     parachain.registration_strategy(),
-                    Some(&RegistrationStrategy::UsingExtrinsic)
+                    Some(&RegistrationStrategy::InGenesis)
                 );
             }
         }
+
+        let load_from_toml_small = NetworkConfig::load_from_toml(
+            "./testing/snapshots/0003-small-network_w_parachain.toml",
+        )
+        .unwrap();
+
+        let parachain = load_from_toml_small.parachains()[0];
+
+        assert_eq!(parachain.registration_strategy(), None);
     }
 
     #[test]
diff --git a/crates/configuration/testing/snapshots/0003-small-network_w_parachain.toml b/crates/configuration/testing/snapshots/0003-small-network_w_parachain.toml
new file mode 100644
index 0000000000000000000000000000000000000000..b998a14c05d576c4119c1fd7c734599a7093ebd1
--- /dev/null
+++ b/crates/configuration/testing/snapshots/0003-small-network_w_parachain.toml
@@ -0,0 +1,40 @@
+[settings]
+timeout = 1000
+node_spawn_timeout = 300
+
+[relaychain]
+chain = "rococo-local"
+default_command = "polkadot"
+default_image = "docker.io/parity/polkadot:latest"
+default_args = ["-lparachain=debug"]
+
+[[relaychain.nodes]]
+name = "alice"
+validator = true
+invulnerable = true
+bootnode = false
+balance = 2000000000000
+
+[[relaychain.nodes]]
+name = "bob"
+args = ["--database=paritydb-experimental"]
+validator = true
+invulnerable = false
+bootnode = true
+balance = 2000000000000
+
+[[parachains]]
+id = 1000
+chain = "myparachain"
+onboard_as_parachain = false
+balance = 2000000000000
+default_db_snapshot = "https://storage.com/path/to/db_snapshot.tgz"
+chain_spec_path = "/path/to/my/chain/spec.json"
+cumulus_based = true
+
+[[parachains.collators]]
+name = "john"
+validator = true
+invulnerable = true
+bootnode = true
+balance = 5000000000