diff --git a/app/modules/crawler/lib/sandbox.ts b/app/modules/crawler/lib/sandbox.ts
index 438ac2713a3caff30eef229577da9586a680f25c..c72abc8f23925a930ba690aad02ec1133162d1d1 100644
--- a/app/modules/crawler/lib/sandbox.ts
+++ b/app/modules/crawler/lib/sandbox.ts
@@ -47,6 +47,12 @@ export const pullSandboxToLocalServer = async (currency:string, fromHost:any, to
       await submitIdentityToServer(idty, toServer, notify, logger)
     }
 
+    for (let i = 0; i < docs.revocations.length; i++) {
+      const idty = docs.revocations[i];
+      watcher && watcher.writeStatus('Revocation ' + (i+1) + '/' + docs.revocations.length)
+      await submitRevocationToServer(idty, toServer, notify, logger)
+    }
+
     for (let i = 0; i < docs.certifications.length; i++) {
       const cert = docs.certifications[i];
       watcher && watcher.writeStatus('Certification ' + (i+1) + '/' + docs.certifications.length)
@@ -65,7 +71,8 @@ function getDocumentsTree(currency:string, res:any) {
   const documents:any = {
     identities: [],
     certifications: [],
-    memberships: []
+    memberships: [],
+    revocations: []
   }
   for(const idty of res.identities) {
     const identity = rawer.getOfficialIdentity({
@@ -75,6 +82,17 @@ function getDocumentsTree(currency:string, res:any) {
       buid:     idty.meta.timestamp,
       sig:      idty.sig
     })
+    if (idty.revocation_sig) {
+      const revocation = rawer.getOfficialRevocation({
+        currency,
+        uid:      idty.uid,
+        issuer:   idty.pubkey,
+        buid:     idty.meta.timestamp,
+        sig:      idty.sig,
+        revocation: idty.revocation_sig
+      })
+      documents.revocations.push(revocation)
+    }
     documents.identities.push(identity)
     for (const cert of idty.pendingCerts) {
       const certification = rawer.getOfficialCertification({
@@ -136,7 +154,17 @@ async function submitIdentityToServer(idty:any, toServer:any, notify:boolean, lo
   try {
     const obj = parsers.parseIdentity.syncWrite(idty)
     await toServer.writeIdentity(obj, notify)
-    logger && logger.trace('Sandbox pulling: success with identity \'%s\'', idty.uid)
+    logger && logger.trace('Sandbox pulling: success with identity \'%s\'', obj.uid)
+  } catch (e) {
+    // Silent error
+  }
+}
+
+async function submitRevocationToServer(revocation:any, toServer:any, notify:boolean, logger:any) {
+  try {
+    const obj = parsers.parseRevocation.syncWrite(revocation)
+    await toServer.writeRevocation(obj, notify)
+    logger && logger.trace('Sandbox pulling: success with revocation \'%s\'', obj.uid)
   } catch (e) {
     // Silent error
   }
diff --git a/test/integration/identity-pulling.js b/test/integration/identity-pulling.js
index 544b45d0cc4205f1a0ce3a6656cd844f6d490583..6cfffb2fbcfda85eeecd793ecc419a5d2c688749 100644
--- a/test/integration/identity-pulling.js
+++ b/test/integration/identity-pulling.js
@@ -64,6 +64,9 @@ describe("Identity pulling", function() {
     // 1 certs for tic
     yield cat1.cert(tic2, s2, s2);
     // 0 certs for tuc
+
+    // tic2 also revokes its pending identity
+    yield tic2.revoke()
   }));
 
   it('toc should not be known of s1', () => co(function*() {
@@ -118,21 +121,25 @@ describe("Identity pulling", function() {
 
       assert.equal(json.identities[3].pubkey, 'HgTTJLAQ5sqfknMq7yLPZbehtuLSsKj9CxWN7k8QvYJd')
       assert.equal(json.identities[3].uid, 'cat')
+      assert.equal(json.identities[3].revocation_sig, null)
       assert.equal(json.identities[3].pendingCerts.length, 1)
       assert.equal(json.identities[3].pendingMemberships.length, 1)
 
       assert.equal(json.identities[0].pubkey, '2LvDg21dVXvetTD9GdkPLURavLYEqP3whauvPWX4c2qc')
       assert.equal(json.identities[0].uid, 'tac')
+      assert.equal(json.identities[0].revocation_sig, null)
       assert.equal(json.identities[0].pendingCerts.length, 1)
       assert.equal(json.identities[0].pendingMemberships.length, 1)
 
       assert.equal(json.identities[2].pubkey, 'DNann1Lh55eZMEDXeYt59bzHbA3NJR46DeQYCS2qQdLV')
       assert.equal(json.identities[2].uid, 'tic')
+      assert.equal(json.identities[2].revocation_sig, 'AAFSisqkMb/2L4/YmZXQWoKYxnz/PW1c2wbux+ZRe8Iw8dxthPR4Iw+g+/JKA5nPE+C/lkX2YFrIikgUpZdlAA==')
       assert.equal(json.identities[2].pendingCerts.length, 1)
       assert.equal(json.identities[2].pendingMemberships.length, 1)
 
       assert.equal(json.identities[1].pubkey, 'DKpQPUL4ckzXYdnDRvCRKAm1gNvSdmAXnTrJZ7LvM5Qo')
       assert.equal(json.identities[1].uid, 'toc')
+      assert.equal(json.identities[1].revocation_sig, null)
       assert.equal(json.identities[1].pendingCerts.length, 2)
       assert.equal(json.identities[1].pendingMemberships.length, 1)
     })