diff --git a/Control/IOVSvc/src/CondInputLoader.cxx b/Control/IOVSvc/src/CondInputLoader.cxx
index dc20a9fdb0f75a525f4f90d416944591912255e5..23b5f5f93ccb15d287326d90935c8895bda632c3 100644
--- a/Control/IOVSvc/src/CondInputLoader.cxx
+++ b/Control/IOVSvc/src/CondInputLoader.cxx
@@ -27,6 +27,25 @@
 
 #include "TClass.h"
 
+
+namespace
+{
+  struct DataObjIDSorter {
+    bool operator()( const DataObjID* a, const DataObjID* b ) { return a->fullKey() < b->fullKey(); }
+  };
+
+  // Sort a DataObjIDColl in a well-defined, reproducible manner.
+  // Used for making debugging dumps.
+  std::vector<const DataObjID*> sortedDataObjIDColl( const DataObjIDColl& coll )
+  {
+    std::vector<const DataObjID*> v;
+    v.reserve( coll.size() );
+    for ( const DataObjID& id : coll ) v.push_back( &id );
+    std::sort( v.begin(), v.end(), DataObjIDSorter() );
+    return v;
+  }
+}
+
 /////////////////////////////////////////////////////////////////// 
 // Public methods: 
 /////////////////////////////////////////////////////////////////// 
@@ -184,13 +203,13 @@ CondInputLoader::initialize()
   StatusCode sc(StatusCode::SUCCESS);
   std::ostringstream str;
   str << "Will create WriteCondHandle dependencies for the following DataObjects:";
-  for (auto &e : m_load) {
-    str << "\n    + " << e;
-    if (e.key() == "") {
+  for (auto &e : sortedDataObjIDColl(m_load)) {
+    str << "\n    + " << *e;
+    if (e->key() == "") {
       sc = StatusCode::FAILURE;
       str << "   ERROR: empty key is not allowed!";
     } else {
-      SG::VarHandleKey vhk(e.clid(),e.key(),Gaudi::DataHandle::Writer,
+      SG::VarHandleKey vhk(e->clid(),e->key(),Gaudi::DataHandle::Writer,
                            StoreID::storeName(StoreID::CONDITION_STORE));
       if (m_condSvc->regHandle(this, vhk).isFailure()) {
         ATH_MSG_ERROR("Unable to register WriteCondHandle " << vhk.fullKey());