diff --git a/e2e/manager.go b/e2e/manager.go
index 6196a5dfb7bff333b1d879b0d8e61d0c58cbd993..00630b7467ad57d1eb21a653b6a3315061f79c24 100644
--- a/e2e/manager.go
+++ b/e2e/manager.go
@@ -2,10 +2,10 @@ package e2e
 
 import (
 	"encoding/json"
-	jww "github.com/spf13/jwalterweatherman"
-	"strings"
 	"time"
 
+	jww "github.com/spf13/jwalterweatherman"
+
 	"gitlab.com/xx_network/primitives/netTime"
 
 	"github.com/pkg/errors"
@@ -39,6 +39,7 @@ type manager struct {
 	kv          *versioned.KV
 }
 
+const legacyE2EKey = "legacyE2ESystem"
 const e2eRekeyParamsKey = "e2eRekeyParams"
 const e2eRekeyParamsVer = 0
 
@@ -102,9 +103,12 @@ func LoadLegacy(kv *versioned.KV, net cmix.Client, myID *id.ID,
 	// Check if values are already written. If they exist on disk/memory already,
 	// this would be a case where LoadLegacy is most likely not the correct
 	// code-path the caller should be following.
-	if _, err := kv.Get(e2eRekeyParamsKey, e2eRekeyParamsVer); err != nil && !strings.Contains(err.Error(), "object not found") {
-		return nil, errors.New("E2E rekey params are already on disk, " +
-			"LoadLegacy should not be called")
+	if _, err := kv.Get(e2eRekeyParamsKey, e2eRekeyParamsVer); err == nil {
+		if _, err = kv.Get(legacyE2EKey, e2eRekeyParamsVer); err != nil {
+			return nil, errors.New("E2E rekey params" +
+				" are already on disk, " +
+				"LoadLegacy should not be called")
+		}
 	}
 
 	// Store the rekey params to disk/memory
@@ -113,6 +117,17 @@ func LoadLegacy(kv *versioned.KV, net cmix.Client, myID *id.ID,
 		Timestamp: netTime.Now(),
 		Data:      rekeyParamsData,
 	})
+	if err != nil {
+		return nil, err
+	}
+	err = kv.Set(legacyE2EKey, e2eRekeyParamsVer, &versioned.Object{
+		Version:   e2eRekeyParamsVer,
+		Timestamp: netTime.Now(),
+		Data:      []byte{1},
+	})
+	if err != nil {
+		return nil, err
+	}
 
 	// Load the legacy data
 	return loadE2E(kv, net, myID, grp, rng, events)