diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/InitNewPageRecord.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/InitNewPageRecord.java
index 9ed7f35..5c20167 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/InitNewPageRecord.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/InitNewPageRecord.java
@@ -18,12 +18,14 @@
 package org.apache.ignite.internal.pagemem.wal.record.delta;
 
 import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.IgniteLogger;
 import org.apache.ignite.internal.pagemem.PageIdUtils;
 import org.apache.ignite.internal.pagemem.PageMemory;
 import org.apache.ignite.internal.processors.cache.persistence.tree.io.PageIO;
 import org.apache.ignite.internal.util.tostring.GridToStringExclude;
 import org.apache.ignite.internal.util.typedef.internal.S;
 import org.apache.ignite.internal.util.typedef.internal.U;
+import org.jetbrains.annotations.Nullable;
 
 /**
  * Initializes new page by calling {@link PageIO#initNewPage(long, long, int)}.
@@ -47,6 +49,18 @@
      * @param newPageId New page ID.
      */
     public InitNewPageRecord(int grpId, long pageId, int ioType, int ioVer, long newPageId) {
+        this(grpId, pageId, ioType, ioVer, newPageId, null);
+    }
+
+    /**
+     * @param grpId Cache group ID.
+     * @param pageId  Page ID.
+     * @param ioType IO type.
+     * @param ioVer IO version.
+     * @param newPageId New page ID.
+     * @param log Logger for case data is invalid. Can be {@code null}, but is needed when processing existing storage.
+     */
+    public InitNewPageRecord(int grpId, long pageId, int ioType, int ioVer, long newPageId, @Nullable IgniteLogger log) {
         super(grpId, pageId);
 
         this.ioType = ioType;
@@ -56,10 +70,19 @@
         int newPartId = PageIdUtils.partId(newPageId);
         int partId = PageIdUtils.partId(pageId);
 
-        if (newPartId != partId) {
-            throw new AssertionError("Partition consistency failure: " +
-                "newPageId=" + Long.toHexString(newPageId) + " (newPartId: " + newPartId + ") " +
+        if (newPartId == 0 && newPartId != partId) {
+            U.warn(log, "Partition consistency warning: " +
+                "newPageId=" + Long.toHexString(newPageId) + " (newPartId: 0) " +
                 "pageId=" + Long.toHexString(pageId) + " (partId: " + partId + ")");
+
+            // Partition consistency failure came from https://issues.apache.org/jira/browse/IGNITE-11030
+            // This invalid record can come from persistent stores, version < 2.7.5 where this bug was not fixed.
+            newPartId = partId; // Just hack new page ID to make this record to be correctly applied.
+
+            this.newPageId = PageIdUtils.pageId(
+                newPartId,
+                PageIdUtils.flag(newPageId),
+                PageIdUtils.pageIndex(newPageId));
         }
     }
 
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageInitRecord.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageInitRecord.java
index 7b3f3a9..d683a5a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageInitRecord.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageInitRecord.java
@@ -18,10 +18,12 @@
 package org.apache.ignite.internal.pagemem.wal.record.delta;
 
 import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.IgniteLogger;
 import org.apache.ignite.internal.pagemem.PageMemory;
 import org.apache.ignite.internal.processors.cache.persistence.tree.io.PageIO;
 import org.apache.ignite.internal.processors.cache.persistence.tree.io.PageMetaIO;
 import org.apache.ignite.internal.util.typedef.internal.S;
+import org.jetbrains.annotations.Nullable;
 
 /**
  *
@@ -40,11 +42,26 @@
      * @param grpId Cache group ID.
      * @param pageId Page ID.
      * @param ioType IO type.
+     * @param ioVer Io version.
      * @param treeRoot Tree root.
      * @param reuseListRoot Reuse list root.
      */
     public MetaPageInitRecord(int grpId, long pageId, int ioType, int ioVer, long treeRoot, long reuseListRoot) {
-        super(grpId, pageId, ioType, ioVer, pageId);
+        this(grpId, pageId, ioType, ioVer, treeRoot, reuseListRoot, null);
+    }
+
+    /**
+     * @param grpId Cache group ID.
+     * @param pageId Page ID.
+     * @param ioType IO type.
+     * @param ioVer Io version.
+     * @param treeRoot Tree root.
+     * @param reuseListRoot Reuse list root.
+     * @param log Logger for case data is invalid. Can be {@code null}, but is needed when processing existing storage.
+     */
+    public MetaPageInitRecord(int grpId, long pageId, int ioType, int ioVer, long treeRoot, long reuseListRoot,
+        @Nullable IgniteLogger log) {
+        super(grpId, pageId, ioType, ioVer, pageId, log);
 
         assert ioType == PageIO.T_META || ioType == PageIO.T_PART_META;
 
@@ -53,6 +70,7 @@
         this.ioType = ioType;
     }
 
+
     /**
      * @return Tree root.
      */
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PagesListInitNewPageRecord.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PagesListInitNewPageRecord.java
index 53c23b1..456314a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PagesListInitNewPageRecord.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PagesListInitNewPageRecord.java
@@ -18,12 +18,14 @@
 package org.apache.ignite.internal.pagemem.wal.record.delta;
 
 import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.IgniteLogger;
 import org.apache.ignite.internal.pagemem.PageMemory;
 import org.apache.ignite.internal.processors.cache.persistence.freelist.io.PagesListNodeIO;
 import org.apache.ignite.internal.processors.cache.persistence.tree.io.PageIO;
 import org.apache.ignite.internal.util.tostring.GridToStringExclude;
 import org.apache.ignite.internal.util.typedef.internal.S;
 import org.apache.ignite.internal.util.typedef.internal.U;
+import org.jetbrains.annotations.Nullable;
 
 /**
  *
@@ -40,6 +42,9 @@
     /**
      * @param grpId Cache group ID.
      * @param pageId Page ID.
+     * @param ioType IO type.
+     * @param ioVer IO version.
+     * @param newPageId New page ID.
      * @param prevPageId Previous page ID.
      * @param addDataPageId Optional page ID to add.
      */
@@ -52,7 +57,30 @@
         long prevPageId,
         long addDataPageId
     ) {
-        super(grpId, pageId, ioType, ioVer, newPageId);
+        this(grpId, pageId, ioType, ioVer, newPageId, prevPageId, addDataPageId, null);
+    }
+
+    /**
+     * @param grpId Cache group ID.
+     * @param pageId Page ID.
+     * @param ioType IO type.
+     * @param ioVer IO version.
+     * @param newPageId New page ID.
+     * @param prevPageId Previous page ID.
+     * @param addDataPageId Optional page ID to add.
+     * @param log Logger for case data is invalid. Can be {@code null}, but is needed when processing existing storage.
+     */
+    public PagesListInitNewPageRecord(
+        int grpId,
+        long pageId,
+        int ioType,
+        int ioVer,
+        long newPageId,
+        long prevPageId,
+        long addDataPageId,
+        @Nullable IgniteLogger log
+    ) {
+        super(grpId, pageId, ioType, ioVer, newPageId, log);
 
         this.prevPageId = prevPageId;
         this.addDataPageId = addDataPageId;
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/serializer/RecordDataV1Serializer.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/serializer/RecordDataV1Serializer.java
index 69316a2..e08e442 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/serializer/RecordDataV1Serializer.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/serializer/RecordDataV1Serializer.java
@@ -29,6 +29,7 @@
 import java.util.Map;
 import java.util.UUID;
 import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.IgniteLogger;
 import org.apache.ignite.internal.managers.encryption.GridEncryptionManager;
 import org.apache.ignite.internal.pagemem.FullPageId;
 import org.apache.ignite.internal.pagemem.wal.record.CacheState;
@@ -136,6 +137,9 @@
     /** Cache object processor to reading {@link DataEntry DataEntries}. */
     protected final IgniteCacheObjectProcessor co;
 
+    /** Logger. */
+    private final IgniteLogger log;
+
     /** Serializer of {@link TxRecord} records. */
     private TxRecordSerializer txRecordSerializer;
 
@@ -172,6 +176,8 @@
             this.realPageSize = CU.encryptedPageSize(pageSize, encSpi);
         else
             this.realPageSize = pageSize;
+
+        log = cctx.logger(getClass());
     }
 
     /** {@inheritDoc} */
@@ -583,7 +589,7 @@
                 long treeRoot = in.readLong();
                 long reuseListRoot = in.readLong();
 
-                res = new MetaPageInitRecord(cacheId, pageId, ioType, ioVer, treeRoot, reuseListRoot);
+                res = new MetaPageInitRecord(cacheId, pageId, ioType, ioVer, treeRoot, reuseListRoot, log);
 
                 break;
 
@@ -793,7 +799,7 @@
                 ioVer = in.readUnsignedShort();
                 long virtualPageId = in.readLong();
 
-                res = new InitNewPageRecord(cacheId, pageId, ioType, ioVer, virtualPageId);
+                res = new InitNewPageRecord(cacheId, pageId, ioType, ioVer, virtualPageId, log);
 
                 break;
 
@@ -1023,7 +1029,7 @@
                 prevPageId = in.readLong();
                 long addDataPageId = in.readLong();
 
-                res = new PagesListInitNewPageRecord(cacheId, pageId, ioType, ioVer, newPageId, prevPageId, addDataPageId);
+                res = new PagesListInitNewPageRecord(cacheId, pageId, ioType, ioVer, newPageId, prevPageId, addDataPageId, log);
 
                 break;
 
