diff --git a/node/src/chain_spec/gdev.rs b/node/src/chain_spec/gdev.rs
index 421e4047f3e2df70f85315a40cec1c67a196ad34..1ea45a67a1962775303d820b718ed37a9447ba34 100644
--- a/node/src/chain_spec/gdev.rs
+++ b/node/src/chain_spec/gdev.rs
@@ -338,6 +338,7 @@ fn genesis_data_to_gdev_genesis_conf(
                          name,
                          owner_key,
                          status,
+                         expires_on,
                          revokes_on,
                      }| GenesisIdty {
                         index: idty_index,
@@ -351,7 +352,8 @@ fn genesis_data_to_gdev_genesis_conf(
                                 IdtyStatus::Unconfirmed | IdtyStatus::Unvalidated => {
                                     panic!("Unconfirmed or Unvalidated identity in genesis")
                                 }
-                                IdtyStatus::Member | IdtyStatus::Revoked => 0,
+                                IdtyStatus::Member => expires_on.expect("must have expires_on set"),
+                                IdtyStatus::Revoked => 0,
                                 IdtyStatus::NotMember => {
                                     revokes_on.expect("must have revokes_on set")
                                 }
diff --git a/node/src/chain_spec/gen_genesis_data.rs b/node/src/chain_spec/gen_genesis_data.rs
index cd2caf6c3ec73eb357d9e42e8c514ae8ceeaba5f..c0d547519a8b2a1fb51e4ff07aa6aa501e4cd09b 100644
--- a/node/src/chain_spec/gen_genesis_data.rs
+++ b/node/src/chain_spec/gen_genesis_data.rs
@@ -93,6 +93,7 @@ pub struct GenesisIdentity {
     pub name: String,
     pub owner_key: AccountId,
     pub status: IdtyStatus,
+    pub expires_on: Option<u32>,
     pub revokes_on: Option<u32>,
 }
 
@@ -1473,6 +1474,11 @@ fn feed_identities(
             owner_key: identity.owner_key.clone(),
             // but expired identities will just have their pseudonym reserved in the storage
             status,
+            expires_on: if status == IdtyStatus::Member {
+                Some(identity.membership_expire_on)
+            } else {
+                None
+            },
             revokes_on: if status == IdtyStatus::NotMember {
                 Some(identity.membership_revokes_on)
             } else {
@@ -1727,6 +1733,7 @@ where
             name: String::from_utf8(name.0.clone()).unwrap(),
             owner_key: owner_key.clone(),
             status: IdtyStatus::Member,
+            expires_on: Some(common_parameters.membership_membership_period),
             revokes_on: None,
         })
         .collect();
diff --git a/node/src/chain_spec/gtest.rs b/node/src/chain_spec/gtest.rs
index 84e96fb18f70930094dd5c87f904f49ee1a87c65..2b0ff5c78eca108fa2b762ddf721a616595f273a 100644
--- a/node/src/chain_spec/gtest.rs
+++ b/node/src/chain_spec/gtest.rs
@@ -286,6 +286,7 @@ fn genesis_data_to_gtest_genesis_conf(
                          name,
                          owner_key,
                          status,
+                         expires_on,
                          revokes_on,
                      }| GenesisIdty {
                         index: idty_index,
@@ -299,7 +300,8 @@ fn genesis_data_to_gtest_genesis_conf(
                                 IdtyStatus::Unconfirmed | IdtyStatus::Unvalidated => {
                                     panic!("Unconfirmed or Unvalidated identity in genesis")
                                 }
-                                IdtyStatus::Member | IdtyStatus::Revoked => 0,
+                                IdtyStatus::Member => expires_on.expect("must have expires_on set"),
+                                IdtyStatus::Revoked => 0,
                                 IdtyStatus::NotMember => {
                                     revokes_on.expect("must have revokes_on set")
                                 }