diff --git a/app/lib/dal/fileDAL.ts b/app/lib/dal/fileDAL.ts
index 6002261231996b2e8b4b2538b8d8349109ef127f..d3f3338cf28e368f3ede714f5d6eba7001c2cdd8 100644
--- a/app/lib/dal/fileDAL.ts
+++ b/app/lib/dal/fileDAL.ts
@@ -16,6 +16,7 @@ import {DBMembership} from "./sqliteDAL/MembershipDAL"
 import {MerkleDTO} from "../dto/MerkleDTO"
 import {CommonConstants} from "../common-libs/constants"
 import { ProxiesConf } from '../proxy';
+import { getOfficialRevocation } from '../common-libs/rawer';
 
 const fs      = require('fs')
 const path    = require('path')
@@ -367,6 +368,10 @@ export class FileDAL {
     return this.iindexDAL.getToBeKickedPubkeys()
   }
 
+  getRevokedPubkeys() {
+    return this.mindexDAL.getRevokedPubkeys()
+  }
+
   async searchJustIdentities(search:string) {
     const pendings = await this.idtyDAL.searchThoseMatching(search);
     const writtens = await this.iindexDAL.searchThoseMatching(search);
diff --git a/app/lib/dal/sqliteDAL/MembershipDAL.ts b/app/lib/dal/sqliteDAL/MembershipDAL.ts
index 61ce346e9f9580716d482edd346caf0e7bd3f864..95719936901f2a06d6057626fd3eeea107adee02 100644
--- a/app/lib/dal/sqliteDAL/MembershipDAL.ts
+++ b/app/lib/dal/sqliteDAL/MembershipDAL.ts
@@ -1,6 +1,7 @@
 import {SQLiteDriver} from "../drivers/SQLiteDriver";
 import {AbstractSQLite} from "./AbstractSQLite";
 import {SandBox} from "./SandBox";
+import { Indexer } from '../../indexer';
 const _ = require('underscore');
 const constants = require('../../constants');
 
diff --git a/app/lib/dal/sqliteDAL/index/MIndexDAL.ts b/app/lib/dal/sqliteDAL/index/MIndexDAL.ts
index 7f3e151a9147a08e8a7f0b82bc433a6f36473c0b..69e24abf901dfab22bd045e07819629a904656ce 100644
--- a/app/lib/dal/sqliteDAL/index/MIndexDAL.ts
+++ b/app/lib/dal/sqliteDAL/index/MIndexDAL.ts
@@ -2,6 +2,8 @@ import {SQLiteDriver} from "../../drivers/SQLiteDriver";
 import {AbstractIndex} from "../AbstractIndex";
 import {Indexer, MindexEntry} from "../../../indexer";
 
+const _ = require('underscore');
+
 export class MIndexDAL extends AbstractIndex<MindexEntry> {
 
   constructor(driver:SQLiteDriver) {
@@ -70,4 +72,12 @@ export class MIndexDAL extends AbstractIndex<MindexEntry> {
   async removeBlock(blockstamp:string) {
     return this.exec('DELETE FROM ' + this.table + ' WHERE written_on = \'' + blockstamp + '\'')
   }
+
+  async getRevokedPubkeys() {
+    // All those who has been revoked. Make one result per pubkey.
+    const revovedMemberships = await this.sqlFind({ revoked_on: { $null: false} });
+
+    // Filter on those to be revoked, return their pubkey
+    return revovedMemberships.map((entry:MindexEntry) => entry.pub);
+  }
 }
diff --git a/app/modules/prover/lib/blockGenerator.ts b/app/modules/prover/lib/blockGenerator.ts
index 93e0d0726d5f29501b0ad3deffb22d582a00cfca..a941bbaeb7fd0325e07f772a48b0eed2f2df1ae8 100644
--- a/app/modules/prover/lib/blockGenerator.ts
+++ b/app/modules/prover/lib/blockGenerator.ts
@@ -62,6 +62,7 @@ export class BlockGenerator {
     const current = await this.dal.getCurrentBlockOrNull();
     const revocations = await this.dal.getRevocatingMembers();
     const exclusions = await this.dal.getToBeKickedPubkeys();
+    const wereExcludeds = await this.dal.getRevokedPubkeys();
     const newCertsFromWoT = await generator.findNewCertsFromWoT(current);
     const newcomersLeavers = await this.findNewcomersAndLeavers(current, (joinersData:any) => generator.filterJoiners(joinersData));
     const transactions = await this.findTransactions(current);
@@ -88,7 +89,7 @@ export class BlockGenerator {
     });
     // Revocations
     // Create the block
-    return this.createBlock(current, joinData, leaveData, newCertsFromWoT, revocations, exclusions, transactions, manualValues);
+    return this.createBlock(current, joinData, leaveData, newCertsFromWoT, revocations, exclusions, wereExcludeds, transactions, manualValues);
   }
 
   private async findNewcomersAndLeavers(current:DBBlock, filteringFunc: (joinData: { [pub:string]: any }) => Promise<{ [pub:string]: any }>) {
@@ -419,7 +420,7 @@ export class BlockGenerator {
     };
   }
 
-  private async createBlock(current:DBBlock, joinData:any, leaveData:any, updates:any, revocations:any, exclusions:any, transactions:any, manualValues:any) {
+  private async createBlock(current:DBBlock, joinData:any, leaveData:any, updates:any, revocations:any, exclusions:any, wereExcluded:any, transactions:any, manualValues:any) {
 
     if (manualValues && manualValues.excluded) {
       exclusions = manualValues.excluded;
@@ -434,13 +435,20 @@ export class BlockGenerator {
     let blockLen = 0;
     // Revocations have an impact on exclusions
     revocations.forEach((idty:any) => exclusions.push(idty.pubkey));
-    // Prevent writing joins/updates for excluded members
+    // Prevent writing joins/updates for members who will be excluded
     exclusions = _.uniq(exclusions);
     exclusions.forEach((excluded:any) => {
       delete updates[excluded];
       delete joinData[excluded];
       delete leaveData[excluded];
     });
+    // Prevent writing joins/updates for excluded members
+    wereExcluded = _.uniq(wereExcluded);
+    wereExcluded.forEach((excluded:any) => {
+      delete updates[excluded];
+      delete joinData[excluded];
+      delete leaveData[excluded];
+    });
     _(leaveData).keys().forEach((leaver:any) => {
       delete updates[leaver];
       delete joinData[leaver];