diff --git a/Framework/DataHandling/src/UpdateInstrumentFromFile.cpp b/Framework/DataHandling/src/UpdateInstrumentFromFile.cpp
index 1a160d0f626c744d00179179dcc18bf25f7a5ee4..d978320d63df2ee84087813b4af4894795511f4c 100644
--- a/Framework/DataHandling/src/UpdateInstrumentFromFile.cpp
+++ b/Framework/DataHandling/src/UpdateInstrumentFromFile.cpp
@@ -99,11 +99,16 @@ void UpdateInstrumentFromFile::exec() {
   if (NexusDescriptor::isReadable(filename)) {
     LoadISISNexus2 isisNexus;
     LoadEventNexus eventNexus;
-    boost::scoped_ptr<Kernel::NexusDescriptor> descriptor(
-        new Kernel::NexusDescriptor(filename));
+
+    // we open and close the HDF5 file.
+    // there is an issue with how HDF5 files are opened (only one at a time)
+    // swap the order of descriptors
     boost::scoped_ptr<Kernel::NexusHDF5Descriptor> descriptorNexusHDF5(
         new Kernel::NexusHDF5Descriptor(filename));
 
+    boost::scoped_ptr<Kernel::NexusDescriptor> descriptor(
+        new Kernel::NexusDescriptor(filename));
+
     if (isisNexus.confidence(*descriptor) > 0 ||
         eventNexus.confidence(*descriptorNexusHDF5) > 0) {
       auto &nxFile = descriptor->data();