diff --git a/app/lib/dal/indexDAL/leveldb/LevelDBCindex.ts b/app/lib/dal/indexDAL/leveldb/LevelDBCindex.ts
index 98862713598b3257526e408248ec6ec41c6eeeb9..b776a4ea7155ea9f803bb6f56cadc0b5fa699dbb 100644
--- a/app/lib/dal/indexDAL/leveldb/LevelDBCindex.ts
+++ b/app/lib/dal/indexDAL/leveldb/LevelDBCindex.ts
@@ -1,5 +1,5 @@
 import {MonitorExecutionTime} from "../../../debug/MonitorExecutionTime"
-import {CindexEntry, FullCindexEntry, Indexer, reduceBy} from "../../../indexer"
+import {CindexEntry, FullCindexEntry, Indexer, reduce, reduceBy} from "../../../indexer"
 import {LevelUp} from 'levelup'
 import {LevelDBTable} from "./LevelDBTable"
 import {Underscore} from "../../../common-libs/underscore"
@@ -147,11 +147,18 @@ export class LevelDBCindex extends LevelDBTable<LevelDBCindexEntry> implements C
     }
     // Remove the "received" arrays
     for (const e of toRemove) {
-      const entry = await this.get(e.receiver)
-      // Remove the certification
-      entry.received = entry.received.filter(issuer => issuer !== e.issuer)
-      // Persist
-      await this.put(e.receiver, entry)
+      const receiver = await this.get(e.receiver)
+      const issuer = await this.get(e.issuer)
+      const certification = reduce(issuer.issued.filter(i => i.receiver === e.receiver))
+      // We remove ONLY IF no valid link still exist, i.e. we remove if the link **has expired** (we may be here because
+      // of a certification replay before term that is being reverted ==> in such case, even after the revert, the link
+      // between issuer and receiver is still valid. So don't remove it.
+      if (certification.expired_on) {
+        // Remove the certification
+        receiver.received = receiver.received.filter(issuer => issuer !== e.issuer)
+        // Persist
+        await this.put(e.receiver, receiver)
+      }
     }
     // Remove the expires_on index entries
     const expires = Underscore.uniq(toRemove.filter(e => e.expires_on).map(e => e.expires_on))
diff --git a/test/integration/fork-resolution/block-with-comebacker-revert.ts b/test/integration/fork-resolution/block-with-comebacker-revert.ts
index 05cb8574764f269648d4d18c3e930abdd9c4611d..d88d1613068db92a98b0560a1f86f9b6bc6939b7 100644
--- a/test/integration/fork-resolution/block-with-comebacker-revert.ts
+++ b/test/integration/fork-resolution/block-with-comebacker-revert.ts
@@ -12,7 +12,6 @@
 // GNU Affero General Public License for more details.
 
 import {assertEqual, writeBasicTestWithConfAnd2Users} from "../tools/test-framework"
-import {assertThrows} from "../../unit-tools"
 import {CommonConstants} from "../../../app/lib/common-libs/constants"
 
 const currentVersion = CommonConstants.BLOCK_GENERATED_VERSION
@@ -105,10 +104,10 @@ describe('Block revert with a comebacker in it', () => writeBasicTestWithConfAnd
   })
 
   test('(t = 12 #3) resolution should work', async (s1) => {
-    await assertThrows(s1.resolve(), 'BLOCK_WASNT_COMMITTED')
+    await s1.resolve()
     const b = await s1.dal.getBlockCurrent()
-    assertEqual(b.membersCount, 2)
-    assertEqual(b.number, 21)
+    assertEqual(b.membersCount, 3)
+    assertEqual(b.number, 22)
   })
 
   after(() => {