diff --git a/cmd/frostfs-node/config.go b/cmd/frostfs-node/config.go
index 7bf0077bd..5606ed24c 100644
--- a/cmd/frostfs-node/config.go
+++ b/cmd/frostfs-node/config.go
@@ -1165,6 +1165,18 @@ func (c *cfg) setContractNodeInfo(ni *netmap.NodeInfo) {
 	c.cfgNetmap.state.setNodeInfo(ni)
 }
 
+func (c *cfg) updateContractNodeInfo(epoch uint64) {
+	ni, err := c.netmapLocalNodeState(epoch)
+	if err != nil {
+		c.log.Error(logs.FrostFSNodeCouldNotUpdateNodeStateOnNewEpoch,
+			zap.Uint64("epoch", epoch),
+			zap.String("error", err.Error()))
+		return
+	}
+
+	c.setContractNodeInfo(ni)
+}
+
 // bootstrapWithState calls "addPeer" method of the Sidechain Netmap contract
 // with the binary-encoded information from the current node's configuration.
 // The state is set using the provided setter which MUST NOT be nil.
diff --git a/cmd/frostfs-node/netmap.go b/cmd/frostfs-node/netmap.go
index 683c186fa..56f2ca98f 100644
--- a/cmd/frostfs-node/netmap.go
+++ b/cmd/frostfs-node/netmap.go
@@ -176,7 +176,11 @@ func addNewEpochNotificationHandlers(c *cfg) {
 		c.cfgNetmap.state.setCurrentEpoch(ev.(netmapEvent.NewEpoch).EpochNumber())
 	})
 
-	addNewEpochAsyncNotificationHandler(c, func(_ event.Event) {
+	addNewEpochAsyncNotificationHandler(c, func(ev event.Event) {
+		e := ev.(netmapEvent.NewEpoch).EpochNumber()
+
+		c.updateContractNodeInfo(e)
+
 		if !c.needBootstrap() || c.cfgNetmap.reBoostrapTurnedOff.Load() { // fixes #470
 			return
 		}
@@ -186,22 +190,6 @@ func addNewEpochNotificationHandlers(c *cfg) {
 		}
 	})
 
-	addNewEpochAsyncNotificationHandler(c, func(ev event.Event) {
-		e := ev.(netmapEvent.NewEpoch).EpochNumber()
-
-		ni, err := c.netmapLocalNodeState(e)
-		if err != nil {
-			c.log.Error(logs.FrostFSNodeCouldNotUpdateNodeStateOnNewEpoch,
-				zap.Uint64("epoch", e),
-				zap.String("error", err.Error()),
-			)
-
-			return
-		}
-
-		c.setContractNodeInfo(ni)
-	})
-
 	if c.cfgMorph.notaryEnabled {
 		addNewEpochAsyncNotificationHandler(c, func(_ event.Event) {
 			_, err := makeNotaryDeposit(c)