diff --git a/Framework/Kernel/test/CatalogInfoTest.h b/Framework/Kernel/test/CatalogInfoTest.h
index 436a65425dfe3e4db5bd55e03a4203476e4f749a..d3435ba8e14e370d4541209b1beaf794ed70c4e1 100644
--- a/Framework/Kernel/test/CatalogInfoTest.h
+++ b/Framework/Kernel/test/CatalogInfoTest.h
@@ -42,7 +42,7 @@ public:
         "</facility>"
         "</facilities>";
 
-    CatalogInfo *catalogInfo = nullptr;
+    std::unique_ptr<CatalogInfo> catalogInfo = nullptr;
     TS_ASSERT_THROWS_NOTHING(catalogInfo = getCatalogFromXML(facilitiesXml));
 
     TS_ASSERT_EQUALS(catalogInfo->catalogName(), "ICat3Catalog");
@@ -55,8 +55,6 @@ public:
     TS_ASSERT_EQUALS(catalogInfo->windowsPrefix(), "");
     TS_ASSERT_EQUALS(catalogInfo->macPrefix(), "/archive");
     TS_ASSERT_EQUALS(catalogInfo->linuxPrefix(), "/archive");
-
-    delete catalogInfo;
   }
 
   /// Test transformation of possible combinations of archive paths.
@@ -85,7 +83,7 @@ public:
         "</facility>"
         "</facilities>";
 
-    CatalogInfo *catalogInfo = nullptr;
+    std::unique_ptr<CatalogInfo> catalogInfo = nullptr;
     TS_ASSERT_THROWS_NOTHING(catalogInfo = getCatalogFromXML(facilitiesXml));
 
     // Set the paths to test against.
@@ -120,12 +118,11 @@ public:
     TS_ASSERT_EQUALS(winPrefixPath, transformMac);
     TS_ASSERT_EQUALS(winPrefixPath, transformLin);
 #endif
-
-    delete catalogInfo;
   }
 
   /// Parse the XML string and create a catalog Object.
-  CatalogInfo *getCatalogFromXML(const std::string &xmlStr) const {
+  std::unique_ptr<CatalogInfo>
+  getCatalogFromXML(const std::string &xmlStr) const {
     Poco::XML::DOMParser parser;
     Poco::AutoPtr<Poco::XML::Document> documentParser =
         parser.parseString(xmlStr);
@@ -140,7 +137,7 @@ public:
         dynamic_cast<Poco::XML::Element *>(elementTag->item(0));
     TS_ASSERT(element);
 
-    return (new CatalogInfo(element));
+    return (std::make_unique<CatalogInfo>(element));
   }
 
   void testCopyConstructor() {
diff --git a/Framework/Kernel/test/DiskBufferISaveableTest.h b/Framework/Kernel/test/DiskBufferISaveableTest.h
index 1be0833f6ac68b4db2921376e3277015e21d100d..08692eb062ab40494b3e2087a388a213a61960b7 100644
--- a/Framework/Kernel/test/DiskBufferISaveableTest.h
+++ b/Framework/Kernel/test/DiskBufferISaveableTest.h
@@ -76,9 +76,9 @@ std::mutex ISaveableTester::streamMutex;
 //====================================================================================
 class DiskBufferISaveableTest : public CxxTest::TestSuite {
 public:
-  std::vector<ISaveableTester *> data;
+  std::vector<std::unique_ptr<ISaveableTester>> data;
   size_t num;
-  std::vector<ISaveableTester *> bigData;
+  std::vector<std::unique_ptr<ISaveableTester>> bigData;
   long BIG_NUM;
 
   void setUp() override {
@@ -87,22 +87,17 @@ public:
     num = 10;
     data.clear();
     for (size_t i = 0; i < num; i++)
-      data.push_back(new ISaveableTester(i));
+      data.push_back(std::make_unique<ISaveableTester>(i));
     BIG_NUM = 1000;
     bigData.clear();
     bigData.reserve(BIG_NUM);
     for (long i = 0; i < BIG_NUM; i++)
-      bigData.push_back(new ISaveableTester(i));
+      bigData.push_back(std::make_unique<ISaveableTester>(i));
   }
 
   void tearDown() override {
-    for (auto &item : data) {
-      delete item;
-    }
-
-    for (auto &bigItem : bigData) {
-      delete bigItem;
-    }
+    data.clear();
+    bigData.clear();
 
     ISaveableTester::fakeFile = "";
   }
@@ -143,11 +138,11 @@ public:
     // Nothing in cache
     TS_ASSERT_EQUALS(dbuf.getWriteBufferUsed(), 0);
 
-    dbuf.toWrite(data[0]);
+    dbuf.toWrite(data[0].get());
     TS_ASSERT_EQUALS(dbuf.getWriteBufferUsed(), 1);
-    dbuf.toWrite(data[1]);
+    dbuf.toWrite(data[1].get());
     TS_ASSERT_EQUALS(dbuf.getWriteBufferUsed(), 2);
-    dbuf.toWrite(data[2]);
+    dbuf.toWrite(data[2].get());
     // Write buffer now got flushed out
     TS_ASSERT_EQUALS(dbuf.getWriteBufferUsed(), 0);
 
@@ -157,9 +152,9 @@ public:
 
     // If you add the same one multiple times, it only is tracked once in the
     // to-write buffer.
-    dbuf.toWrite(data[4]);
-    dbuf.toWrite(data[4]);
-    dbuf.toWrite(data[4]);
+    dbuf.toWrite(data[4].get());
+    dbuf.toWrite(data[4].get());
+    dbuf.toWrite(data[4].get());
     TS_ASSERT_EQUALS(dbuf.getWriteBufferUsed(), 1);
   }
   //--------------------------------------------------------------------------------
@@ -171,16 +166,16 @@ public:
     // Nothing in cache
     TS_ASSERT_EQUALS(dbuf.getWriteBufferUsed(), 0);
 
-    dbuf.toWrite(data[0]);
+    dbuf.toWrite(data[0].get());
     TS_ASSERT_EQUALS(ISaveableTester::fakeFile, "0,");
-    dbuf.toWrite(data[1]);
+    dbuf.toWrite(data[1].get());
     TS_ASSERT_EQUALS(ISaveableTester::fakeFile, "0,1,");
     TS_ASSERT_EQUALS(dbuf.getWriteBufferUsed(), 0);
-    dbuf.toWrite(data[2]);
+    dbuf.toWrite(data[2].get());
     TS_ASSERT_EQUALS(ISaveableTester::fakeFile, "0,1,2,");
-    dbuf.toWrite(data[3]);
+    dbuf.toWrite(data[3].get());
     TS_ASSERT_EQUALS(ISaveableTester::fakeFile, "0,1,2,3,");
-    dbuf.toWrite(data[4]);
+    dbuf.toWrite(data[4].get());
     // Everything get written immidiately;
     TS_ASSERT_EQUALS(ISaveableTester::fakeFile, "0,1,2,3,4,");
     ISaveableTester::fakeFile = "";
@@ -191,7 +186,7 @@ public:
   void test_flushCache() {
     DiskBuffer dbuf(10);
     for (size_t i = 0; i < 6; i++)
-      dbuf.toWrite(data[i]);
+      dbuf.toWrite(data[i].get());
     TS_ASSERT_EQUALS(dbuf.getWriteBufferUsed(), 6);
     // Nothing written out yet
     TS_ASSERT_EQUALS(ISaveableTester::fakeFile, "");
@@ -208,16 +203,16 @@ public:
     // Room for 3 in the to-write cache
     DiskBuffer dbuf(3);
     // These 3 will get written out
-    dbuf.toWrite(data[5]);
+    dbuf.toWrite(data[5].get());
     TSM_ASSERT_EQUALS("Not yet written to file",
                       std::numeric_limits<uint64_t>::max(),
                       data[5]->getFilePosition());
 
-    dbuf.toWrite(data[1]);
+    dbuf.toWrite(data[1].get());
     TSM_ASSERT_EQUALS("Not yet written to file",
                       std::numeric_limits<uint64_t>::max(),
                       data[1]->getFilePosition());
-    dbuf.toWrite(data[9]);
+    dbuf.toWrite(data[9].get());
     TSM_ASSERT_EQUALS("Not yet written to file",
                       std::numeric_limits<uint64_t>::max(),
                       data[9]->getFilePosition());
@@ -227,15 +222,15 @@ public:
     TSM_ASSERT_EQUALS("Is written to file at ", 1, data[1]->getFilePosition());
     TSM_ASSERT_EQUALS("Is written to file at ", 2, data[5]->getFilePosition());
     // These 4 at the end will be in the cache
-    dbuf.toWrite(data[2]);
+    dbuf.toWrite(data[2].get());
     TSM_ASSERT_EQUALS("Not yet written to file",
                       std::numeric_limits<uint64_t>::max(),
                       data[2]->getFilePosition());
-    dbuf.toWrite(data[3]);
+    dbuf.toWrite(data[3].get());
     TSM_ASSERT_EQUALS("Not yet written to file",
                       std::numeric_limits<uint64_t>::max(),
                       data[3]->getFilePosition());
-    dbuf.toWrite(data[4]);
+    dbuf.toWrite(data[4].get());
     TSM_ASSERT_EQUALS("Not yet written to file",
                       std::numeric_limits<uint64_t>::max(),
                       data[4]->getFilePosition());
@@ -245,7 +240,7 @@ public:
     TSM_ASSERT_EQUALS("Is written to file at ", 4, data[3]->getFilePosition());
     TSM_ASSERT_EQUALS("Is written to file at ", 5, data[2]->getFilePosition());
 
-    dbuf.toWrite(data[6]);
+    dbuf.toWrite(data[6].get());
     TSM_ASSERT_EQUALS("Not yet written to file",
                       std::numeric_limits<uint64_t>::max(),
                       data[6]->getFilePosition());
@@ -261,7 +256,7 @@ public:
     DiskBuffer dbuf(4);
     for (size_t i = 0; i < 9; i++) {
       data[i]->setBusy(true);
-      dbuf.toWrite(data[i]);
+      dbuf.toWrite(data[i].get());
     }
     // We ended up with too much in the buffer since nothing could be written.
     TS_ASSERT_EQUALS(dbuf.getWriteBufferUsed(), 9);
@@ -269,7 +264,7 @@ public:
     for (size_t i = 0; i < 9; i++)
       data[i]->setBusy(false);
     // Trigger a write
-    dbuf.toWrite(data[8]);
+    dbuf.toWrite(data[8].get());
     TS_ASSERT_EQUALS(dbuf.getWriteBufferUsed(), 0);
     // And all of these get written out at once
     TS_ASSERT_EQUALS(ISaveableTester::fakeFile, "8,7,6,5,4,3,2,1,0,");
@@ -282,12 +277,12 @@ public:
     DiskBuffer dbuf(6);
     // Fill the buffer
     for (size_t i = 0; i < 5; i++)
-      dbuf.toWrite(data[i]);
+      dbuf.toWrite(data[i].get());
     TS_ASSERT_EQUALS(dbuf.getWriteBufferUsed(), 5);
 
     // First let's get rid of something in to to-write buffer
 
-    dbuf.objectDeleted(data[1]);
+    dbuf.objectDeleted(data[1].get());
     TS_ASSERT_EQUALS(dbuf.getWriteBufferUsed(), 4);
     TSM_ASSERT_EQUALS("The data have never been written",
                       dbuf.getFreeSpaceMap().size(), 0);
@@ -301,10 +296,10 @@ public:
   /** Any ISaveable that says it can't be written remains in the cache */
   void test_skips_dataBusy_Blocks() {
     DiskBuffer dbuf(3);
-    dbuf.toWrite(data[0]);
-    dbuf.toWrite(data[1]);
+    dbuf.toWrite(data[0].get());
+    dbuf.toWrite(data[1].get());
     data[1]->setBusy(true); // Won't get written out
-    dbuf.toWrite(data[2]);
+    dbuf.toWrite(data[2].get());
     dbuf.flushCache();
 
     // Item #1 was skipped and is still in the buffer!
@@ -329,7 +324,7 @@ public:
 
     PARALLEL_FOR_NO_WSP_CHECK()
     for (long i = 0; i < int(BIG_NUM); i++) {
-      dbuf.toWrite(bigData[i]);
+      dbuf.toWrite(bigData[i].get());
     }
     // std::cout << ISaveableTester::fakeFile << '\n';
   }
@@ -351,16 +346,16 @@ public:
     DiskBuffer dbuf(size_t(BIG_NUM + DATA_SIZE));
     Kernel::Timer clock;
     for (long i = 0; i < BIG_NUM; i++) {
-      dbuf.toWrite(bigData[i]);
+      dbuf.toWrite(bigData[i].get());
     }
     std::cout << "\nFinished DiskBuffer insertion performance test, inserted "
               << BIG_NUM << " objects on 1 thread in " << clock.elapsed()
               << " sec\n";
 
     for (long i = 0; i < DATA_SIZE; i++) {
-      dbuf.objectDeleted(bigData[indexToRemove[i]]);
+      dbuf.objectDeleted(bigData[indexToRemove[i]].get());
       dbuf.toWrite(objToAdd[i]);
-      dbuf.toWrite(bigData[indexToRemove[i]]);
+      dbuf.toWrite(bigData[indexToRemove[i]].get());
     }
     std::cout << "Finished DiskBuffer inserting/deleting performance test, 1 "
                  "thread in "
@@ -391,7 +386,7 @@ public:
     Kernel::Timer clock;
     PARALLEL_FOR_NO_WSP_CHECK()
     for (long i = 0; i < BIG_NUM; i++) {
-      dbuf.toWrite(bigData[i]);
+      dbuf.toWrite(bigData[i].get());
     }
     std::cout << "\nFinished DiskBuffer insertion performance test, inserted "
               << BIG_NUM << " objects on multithread in " << clock.elapsed()
@@ -399,9 +394,9 @@ public:
 
     PARALLEL_FOR_NO_WSP_CHECK()
     for (long i = 0; i < DATA_SIZE; i++) {
-      dbuf.objectDeleted(bigData[indexToRemove[i]]);
+      dbuf.objectDeleted(bigData[indexToRemove[i]].get());
       dbuf.toWrite(objToAdd[i]);
-      dbuf.toWrite(bigData[indexToRemove[i]]);
+      dbuf.toWrite(bigData[indexToRemove[i]].get());
     }
     std::cout << "Finished DiskBuffer inserting/deleting performance test, "
                  "multithread in "