diff --git a/pallets/duniter-wot/src/mock.rs b/pallets/duniter-wot/src/mock.rs
index c1080613d08afbf0c604e347b0c4afb0d35afc1b..8534b70dca5e165551a0aae896e8282fafe7edf7 100644
--- a/pallets/duniter-wot/src/mock.rs
+++ b/pallets/duniter-wot/src/mock.rs
@@ -176,18 +176,15 @@ pub fn new_test_ext(initial_identities_len: usize) -> sp_io::TestExternalities {
         system: SystemConfig::default(),
         identity: IdentityConfig {
             identities: (1..=initial_identities_len)
-                .map(|i| {
-                    (
-                        i as u64,
-                        (
-                            pallet_identity::IdtyName::from(NAMES[i - 1]),
-                            pallet_identity::IdtyValue {
-                                next_creatable_identity_on: 0,
-                                removable_on: 0,
-                                status: pallet_identity::IdtyStatus::Validated,
-                            },
-                        ),
-                    )
+                .map(|i| pallet_identity::GenesisIdty {
+                    index: i as u32,
+                    owner_key: i as u64,
+                    name: pallet_identity::IdtyName::from(NAMES[i - 1]),
+                    value: pallet_identity::IdtyValue {
+                        next_creatable_identity_on: 0,
+                        removable_on: 0,
+                        status: pallet_identity::IdtyStatus::Validated,
+                    },
                 })
                 .collect(),
         },
diff --git a/pallets/identity/src/lib.rs b/pallets/identity/src/lib.rs
index 7f38b9bb14cf740893c5047a79752c085c4d78ac..34e80c90c745cf76c8990d28e0a111aa36971cac 100644
--- a/pallets/identity/src/lib.rs
+++ b/pallets/identity/src/lib.rs
@@ -93,12 +93,18 @@ pub mod pallet {
 
     // GENESIS STUFFĂ‚ //
 
+    #[cfg_attr(feature = "std", derive(serde::Deserialize, serde::Serialize))]
+    #[derive(Encode, Decode, Clone, PartialEq, Eq)]
+    pub struct GenesisIdty<T: Config> {
+        pub index: T::IdtyIndex,
+        pub owner_key: T::AccountId,
+        pub name: IdtyName,
+        pub value: IdtyValue<T::BlockNumber>,
+    }
+
     #[pallet::genesis_config]
     pub struct GenesisConfig<T: Config> {
-        pub identities: sp_std::collections::btree_map::BTreeMap<
-            T::AccountId,
-            (IdtyName, IdtyValue<T::BlockNumber>),
-        >,
+        pub identities: Vec<GenesisIdty<T>>,
     }
 
     #[cfg(feature = "std")]
@@ -114,28 +120,31 @@ pub mod pallet {
     impl<T: Config> GenesisBuild<T> for GenesisConfig<T> {
         fn build(&self) {
             let mut names = sp_std::collections::btree_set::BTreeSet::new();
-            for (idty_name, idty_value) in self.identities.values() {
+            for idty in &self.identities {
                 assert!(
-                    !names.contains(&idty_name),
+                    !names.contains(&idty.name),
                     "Idty name {:?} is present twice",
-                    &idty_name
+                    &idty.name
                 );
-                assert!(idty_value.removable_on == T::BlockNumber::zero());
-                names.insert(idty_name);
+                assert!(idty.value.removable_on == T::BlockNumber::zero());
+                names.insert(idty.name.clone());
             }
 
-            <IdentitiesCount<T>>::put(self.identities.len() as u64);
-            for (owner_key, (idty_name, idty_value)) in &self.identities {
+            let mut identities = self.identities.clone();
+            identities.sort_unstable_by(|a, b| a.index.cmp(&b.index));
+
+            <IdentitiesCount<T>>::put(identities.len() as u64);
+            for idty in identities.into_iter() {
                 let idty_index = Pallet::<T>::get_next_idty_index();
-                if idty_value.removable_on > T::BlockNumber::zero() {
+                if idty.value.removable_on > T::BlockNumber::zero() {
                     <IdentitiesRemovableOn<T>>::append(
-                        idty_value.removable_on,
-                        (idty_index, idty_value.status),
+                        idty.value.removable_on,
+                        (idty_index, idty.value.status),
                     )
                 }
-                <Identities<T>>::insert(idty_index, idty_value);
-                IdentitiesNames::<T>::insert(idty_name, ());
-                IdentityIndexOf::<T>::insert(owner_key, idty_index);
+                <Identities<T>>::insert(idty_index, idty.value.clone());
+                IdentitiesNames::<T>::insert(idty.name.clone(), ());
+                IdentityIndexOf::<T>::insert(idty.owner_key, idty_index);
             }
         }
     }
diff --git a/pallets/identity/src/tests.rs b/pallets/identity/src/tests.rs
index f29ed18441f5b491f85bdd14e2d7fa40058549d4..b63345b56aadcb7f24f4d19ec8092c7ed6bb5e5f 100644
--- a/pallets/identity/src/tests.rs
+++ b/pallets/identity/src/tests.rs
@@ -15,30 +15,30 @@
 // along with Substrate-Libre-Currency. If not, see <https://www.gnu.org/licenses/>.
 
 use crate::mock::*;
-use crate::{Error, IdtyName, IdtyValue};
+use crate::{Error, GenesisIdty, IdtyName, IdtyValue};
 //use frame_support::assert_err;
 use frame_support::assert_ok;
 use frame_system::{EventRecord, Phase};
-use maplit::btreemap;
-use std::collections::BTreeMap;
 
 type IdtyVal = IdtyValue<u64>;
 
-fn alice() -> (IdtyName, IdtyVal) {
-    (
-        IdtyName::from("Alice"),
-        IdtyVal {
+fn alice() -> GenesisIdty<Test> {
+    GenesisIdty {
+        index: 1,
+        owner_key: 1,
+        name: IdtyName::from("Alice"),
+        value: IdtyVal {
             next_creatable_identity_on: 0,
             removable_on: 0,
             status: crate::IdtyStatus::Validated,
         },
-    )
+    }
 }
 
 #[test]
 fn test_no_identity() {
     new_test_ext(IdentityConfig {
-        identities: BTreeMap::new(),
+        identities: Vec::new(),
     })
     .execute_with(|| {
         assert_eq!(Identity::identities_count(), 0);
@@ -48,7 +48,7 @@ fn test_no_identity() {
 #[test]
 fn test_create_identity_ok() {
     new_test_ext(IdentityConfig {
-        identities: btreemap![1 => alice()],
+        identities: vec![alice()],
     })
     .execute_with(|| {
         // We need to initialize at least one block before any call
@@ -72,7 +72,7 @@ fn test_create_identity_ok() {
 #[test]
 fn test_idty_creation_period() {
     new_test_ext(IdentityConfig {
-        identities: btreemap![1 => alice()],
+        identities: vec![alice()],
     })
     .execute_with(|| {
         // We need to initialize at least one block before any call
diff --git a/runtime/common/src/entities.rs b/runtime/common/src/entities.rs
index 73b279d3be32620b6c608422ffd39e22d30650d1..107b42589c2f8e110c172046eff07fefb11e286d 100644
--- a/runtime/common/src/entities.rs
+++ b/runtime/common/src/entities.rs
@@ -14,8 +14,6 @@
 // You should have received a copy of the GNU Affero General Public License
 // along with Substrate-Libre-Currency. If not, see <https://www.gnu.org/licenses/>.
 
-pub use pallet_identity::IdtyName;
-
 use super::AccountId;
 use frame_support::pallet_prelude::*;
 use scale_info::TypeInfo;
diff --git a/runtime/common/src/lib.rs b/runtime/common/src/lib.rs
index 50912a0c44f0b870c5aa261945dc0012d2ca74ca..63917b98fd54d6877a3d1cd711336a6ba80a8b0c 100644
--- a/runtime/common/src/lib.rs
+++ b/runtime/common/src/lib.rs
@@ -24,6 +24,7 @@ pub mod handlers;
 mod pallets_config;
 pub mod providers;
 
+pub use pallet_identity::{GenesisIdty, IdtyName, IdtyStatus, IdtyValue};
 pub use sp_runtime::OpaqueExtrinsic as UncheckedExtrinsic;
 
 /// Some way of identifying an account on the chain. We intentionally make it equivalent
diff --git a/runtime/gdev/src/lib.rs b/runtime/gdev/src/lib.rs
index 9bbdb25939b6e0e02608a34550f8a8bc42fa3d73..9532d549f71d11a4f1d528d8c54610f1bb935461 100644
--- a/runtime/gdev/src/lib.rs
+++ b/runtime/gdev/src/lib.rs
@@ -31,7 +31,6 @@ pub use common_runtime::{
 };
 pub use pallet_balances::Call as BalancesCall;
 pub use pallet_duniter_test_parameters::Parameters as GenesisParameters;
-pub use pallet_identity::{IdtyStatus, IdtyValue};
 pub use pallet_im_online::sr25519::AuthorityId as ImOnlineId;
 use pallet_session::historical as session_historical;
 pub use pallet_timestamp::Call as TimestampCall;