diff --git a/cmd/root.go b/cmd/root.go
index 813bd9c41932a4c0a59b9f742c12fe071027f6d5..443f7042bb7b763192fdc0f84f0a3cd4d8d51aeb 100644
--- a/cmd/root.go
+++ b/cmd/root.go
@@ -682,7 +682,6 @@ func initE2e() *xxdk.E2e {
 
 	// load the client
 	baseClient, err := xxdk.LoadCmix(storeDir, pass, params)
-
 	if err != nil {
 		jww.FATAL.Panicf("%+v", err)
 	}
@@ -690,9 +689,18 @@ func initE2e() *xxdk.E2e {
 	authCbs = makeAuthCallbacks(
 		viper.GetBool("unsafe-channel-creation"))
 
-	client, err := xxdk.Login(baseClient, authCbs, receptionIdentity)
-	if err != nil {
-		jww.FATAL.Panicf("%+v", err)
+	// Force LoginLegacy for precanned senderID
+	var client *xxdk.E2e
+	if isPrecanned := viper.GetUint("sendid") != 0; isPrecanned {
+		client, err = xxdk.LoginLegacy(baseClient, authCbs)
+		if err != nil {
+			jww.FATAL.Panicf("%+v", err)
+		}
+	} else {
+		client, err = xxdk.Login(baseClient, authCbs, receptionIdentity)
+		if err != nil {
+			jww.FATAL.Panicf("%+v", err)
+		}
 	}
 
 	if protoUser := viper.GetString("protoUserOut"); protoUser != "" {
diff --git a/xxdk/identity.go b/xxdk/identity.go
index 566ed4f19c2d2ba0c26676c2abcd42d81ff3fd49..46caef778129618a8a07a2ebc5ba036fc5500718 100644
--- a/xxdk/identity.go
+++ b/xxdk/identity.go
@@ -141,11 +141,15 @@ func (r ReceptionIdentity) DeepCopy() ReceptionIdentity {
 
 	dhKeyCopy := make([]byte, len(r.DHKeyPrivate))
 	copy(dhKeyCopy, r.DHKeyPrivate)
+
+	grpCopy := make([]byte, len(r.E2eGrp))
+	copy(grpCopy, r.E2eGrp)
 	return ReceptionIdentity{
 		ID:            r.ID.DeepCopy(),
 		RSAPrivatePem: r.RSAPrivatePem,
 		Salt:          saltCopy,
 		DHKeyPrivate:  dhKeyCopy,
+		E2eGrp:        grpCopy,
 	}
 }