diff --git a/Control/DataModelTest/DataModelRunTests/CMakeLists.txt b/Control/DataModelTest/DataModelRunTests/CMakeLists.txt
index 1d60c31652fec9e389b22cb7235af74b9489c97e..8f628110e18973e25b436560f0934f864994a03c 100644
--- a/Control/DataModelTest/DataModelRunTests/CMakeLists.txt
+++ b/Control/DataModelTest/DataModelRunTests/CMakeLists.txt
@@ -34,7 +34,7 @@ function (datamodel_run_test testName)
   atlas_add_test( ${testName}
                   SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/datamodel_${testName}.sh
                   PROPERTIES TIMEOUT 300
-                  ENVIRONMENT "ATLAS_REFERENCE_TAG=DataModelRunTests/DataModelRunTestsReference-01-00-00"
+                  ENVIRONMENT "ATLAS_REFERENCE_TAG=DataModelRunTests/DataModelRunTestsReference-01-00-01"
                   POST_EXEC_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/test/post.sh ${testName}"
                    )
   if( ARG_DEPENDS )
@@ -87,3 +87,11 @@ datamodel_run_test (xAODTestSymlinks2MT
                     COMMAND "athena.py --thread=1"
                     DEPENDS xAODTestWrite)
 
+datamodel_run_test (xAODTestDecorHandle1)
+datamodel_run_test (xAODTestDecorHandle1MT
+                    COMMAND "athena.py --thread=1")
+
+datamodel_run_test (xAODTestDecorHandle2)
+datamodel_run_test (xAODTestDecorHandle2MT
+                    COMMAND "athena.py --thread=1"
+                    DEPENDS xAODTestWrite)
diff --git a/Control/DataModelTest/DataModelRunTests/share/ByteStreamTestWrite_jo.py b/Control/DataModelTest/DataModelRunTests/share/ByteStreamTestWrite_jo.py
index 3129f989dafc73bb826ef89acf2ccf041a6a78c4..d3ba242f92b4084196eb67382a92cc7cd8448e71 100755
--- a/Control/DataModelTest/DataModelRunTests/share/ByteStreamTestWrite_jo.py
+++ b/Control/DataModelTest/DataModelRunTests/share/ByteStreamTestWrite_jo.py
@@ -39,6 +39,8 @@ bswrite = ['DMTest::CVec#cvec.-dVar2',
            ]
 
 from TrigNavigation.TrigNavigationConf import HLT__Navigation
+from DataModelTestDataCommon.DataModelTestDataCommonConf import \
+     DMTest__xAODTestDecor
 from DataModelTestDataWrite.DataModelTestDataWriteConf import \
      DMTest__xAODTestWriteCVec, \
      DMTest__xAODTestWriteHVec, \
@@ -52,6 +54,10 @@ topSequence += DMTest__xAODTestWriteCView ("xAODTestWriteCView",
 topSequence += DMTest__xAODTestWriteHVec ("xAODTestWriteHVec",
                                           HVecKey = 'HLT_DMTest__HVec_hvec',
                                           HViewKey = 'HLT_DMTest__HView_hview')
+topSequence += DMTest__xAODTestDecor ("xAODTestDecor",
+                                      ReadPrefix = 'HLT_DMTest__CVec_',
+                                      DoCInfo = False,
+                                      DoCTrig = False)
 
 # Making sure that no dyn vars are selected by default.
 topSequence += DMTest__xAODTestWriteCVec ("xAODTestWriteCVec2",
diff --git a/Control/DataModelTest/DataModelRunTests/share/xAODTestDecorHandle1.ref b/Control/DataModelTest/DataModelRunTests/share/xAODTestDecorHandle1.ref
new file mode 100644
index 0000000000000000000000000000000000000000..65f351bd33f2497a99aef48314bde86e1980f1f1
--- /dev/null
+++ b/Control/DataModelTest/DataModelRunTests/share/xAODTestDecorHandle1.ref
@@ -0,0 +1,135 @@
+Tue Apr 18 23:47:47 CEST 2017
+Preloading tcmalloc_minimal.so
+Py:Athena            INFO including file "AthenaCommon/Preparation.py"
+Py:Athena            INFO using release [AthenaWorkDir-22.0.0] [x86_64-slc6-gcc62-dbg] [mt-sss/f56767d765] -- built on [2017-04-18T2153]
+Py:Athena            INFO including file "AthenaCommon/Bootstrap.py"
+Py:Athena            INFO including file "AthenaCommon/Atlas.UnixStandardJob.py"
+Py:Athena            INFO executing ROOT6Setup
+[?1034hPy:Athena            INFO including file "AthenaCommon/Execution.py"
+Py:Athena            INFO including file "DataModelRunTests/xAODTestDecorHandle1_jo.py"
+Py:ConfigurableDb    INFO Read module info for 5299 configurables from 28 genConfDb files
+Py:ConfigurableDb WARNING Found 1 duplicates among the 28 genConfDb files :
+Py:ConfigurableDb WARNING --------------------------------------------------
+Py:ConfigurableDb WARNING   -<component name>: <module> - [ <duplicates> ]
+Py:ConfigurableDb WARNING --------------------------------------------------
+Py:ConfigurableDb WARNING   -DMTest__xAODTestDecor: DataModelTestDataCommon.DataModelTestDataCommonConf - ['DataModelTestDataRead.DataModelTestDataReadConf']
+Py:ConfigurableDb WARNING Fix your cmt/requirements file !!
+Py:Athena            INFO including file "AthenaCommon/runbatch.py"
+ApplicationMgr       INFO Updating Gaudi::PluginService::SetDebug(level) to level= 'PluginDebugLevel':0
+ApplicationMgr    SUCCESS 
+====================================================================================================================================
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v28r1)
+                                          running on lxplus064.cern.ch on Tue Apr 18 23:48:11 2017
+====================================================================================================================================
+ApplicationMgr       INFO Successfully loaded modules : AthenaServices
+ApplicationMgr       INFO Application Manager Configured successfully
+ApplicationMgr       INFO Updating Gaudi::PluginService::SetDebug(level) to level= 'PluginDebugLevel':0
+StatusCodeSvc        INFO initialize
+AthDictLoaderSvc     INFO in initialize...
+AthDictLoaderSvc     INFO acquired Dso-registry
+ClassIDSvc           INFO  getRegistryEntries: read 2307 CLIDRegistry entries for module ALL
+ChronoStatSvc        INFO  Number of skipped events for MemStat-1
+CoreDumpSvc          INFO install f-a-t-a-l handler... (flag = -1)
+CoreDumpSvc          INFO Handling signals: 11(Segmentation fault) 7(Bus error) 4(Illegal instruction) 8(Floating point exception) 
+AthenaEventLoopMgr   INFO Initializing AthenaEventLoopMgr - package version AthenaServices-00-00-00
+ClassIDSvc           INFO  getRegistryEntries: read 5965 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 56 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 359 CLIDRegistry entries for module ALL
+HistogramPersis...WARNING Histograms saving not required.
+EventSelector        INFO  Enter McEventSelector Initialization 
+AthenaEventLoopMgr   INFO Setup EventSelector service EventSelector
+ApplicationMgr       INFO Application Manager Initialized successfully
+ApplicationMgr       INFO Application Manager Started successfully
+EventPersistenc...   INFO Added successfully Conversion service:McCnvSvc
+AthenaEventLoopMgr   INFO   ===>>>  start of run 0    <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #0, run #0 0 events processed so far  <<<===
+ClassIDSvc           INFO  getRegistryEntries: read 104 CLIDRegistry entries for module ALL
+xAODTestReadDecor    INFO cvec.dInt1: 401 402 403 404 405 406 407 408 409 410
+xAODTestReadDecor    INFO cinfo.dInt1: 3000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #0, run #0 1 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #1, run #0 1 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 801 802 803 804 805 806 807 808 809 810
+xAODTestReadDecor    INFO cinfo.dInt1: 6000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #1, run #0 2 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #2, run #0 2 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210
+xAODTestReadDecor    INFO cinfo.dInt1: 9000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #2, run #0 3 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #3, run #0 3 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610
+xAODTestReadDecor    INFO cinfo.dInt1: 12000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #3, run #0 4 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #4, run #0 4 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010
+xAODTestReadDecor    INFO cinfo.dInt1: 15000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #4, run #0 5 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #5, run #0 5 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410
+xAODTestReadDecor    INFO cinfo.dInt1: 18000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #5, run #0 6 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #6, run #0 6 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810
+xAODTestReadDecor    INFO cinfo.dInt1: 21000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #6, run #0 7 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #7, run #0 7 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210
+xAODTestReadDecor    INFO cinfo.dInt1: 24000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #7, run #0 8 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #8, run #0 8 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610
+xAODTestReadDecor    INFO cinfo.dInt1: 27000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #8, run #0 9 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #9, run #0 9 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 4001 4002 4003 4004 4005 4006 4007 4008 4009 4010
+xAODTestReadDecor    INFO cinfo.dInt1: 30000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #9, run #0 10 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #10, run #0 10 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 4401 4402 4403 4404 4405 4406 4407 4408 4409 4410
+xAODTestReadDecor    INFO cinfo.dInt1: 33000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #10, run #0 11 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #11, run #0 11 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 4801 4802 4803 4804 4805 4806 4807 4808 4809 4810
+xAODTestReadDecor    INFO cinfo.dInt1: 36000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #11, run #0 12 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #12, run #0 12 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 5201 5202 5203 5204 5205 5206 5207 5208 5209 5210
+xAODTestReadDecor    INFO cinfo.dInt1: 39000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #12, run #0 13 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #13, run #0 13 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 5601 5602 5603 5604 5605 5606 5607 5608 5609 5610
+xAODTestReadDecor    INFO cinfo.dInt1: 42000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #13, run #0 14 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #14, run #0 14 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 6001 6002 6003 6004 6005 6006 6007 6008 6009 6010
+xAODTestReadDecor    INFO cinfo.dInt1: 45000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #14, run #0 15 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #15, run #0 15 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 6401 6402 6403 6404 6405 6406 6407 6408 6409 6410
+xAODTestReadDecor    INFO cinfo.dInt1: 48000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #15, run #0 16 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #16, run #0 16 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 6801 6802 6803 6804 6805 6806 6807 6808 6809 6810
+xAODTestReadDecor    INFO cinfo.dInt1: 51000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #16, run #0 17 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #17, run #0 17 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 7201 7202 7203 7204 7205 7206 7207 7208 7209 7210
+xAODTestReadDecor    INFO cinfo.dInt1: 54000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #17, run #0 18 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #18, run #0 18 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 7601 7602 7603 7604 7605 7606 7607 7608 7609 7610
+xAODTestReadDecor    INFO cinfo.dInt1: 57000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #18, run #0 19 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #19, run #0 19 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 8001 8002 8003 8004 8005 8006 8007 8008 8009 8010
+xAODTestReadDecor    INFO cinfo.dInt1: 60000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #19, run #0 20 events processed so far  <<<===
+ApplicationMgr       INFO Application Manager Stopped successfully
+IncidentProcAlg1     INFO Finalize
+IncidentProcAlg2     INFO Finalize
+EventSelector        INFO finalize
+AthDictLoaderSvc     INFO in finalize...
+ToolSvc              INFO Removing all tools created by ToolSvc
+ChronoStatSvc.f...   INFO  Service finalized successfully 
+ApplicationMgr       INFO Application Manager Finalized successfully
+ApplicationMgr       INFO Application Manager Terminated successfully
+Py:Athena            INFO leaving with code 0: "successful run"
diff --git a/Control/DataModelTest/DataModelRunTests/share/xAODTestDecorHandle1MT.ref b/Control/DataModelTest/DataModelRunTests/share/xAODTestDecorHandle1MT.ref
new file mode 100644
index 0000000000000000000000000000000000000000..b59d8a3bdb5c205d67e92e337f7d29efa05ea59b
--- /dev/null
+++ b/Control/DataModelTest/DataModelRunTests/share/xAODTestDecorHandle1MT.ref
@@ -0,0 +1,193 @@
+Fri Apr 28 17:54:06 CEST 2017
+Preloading tcmalloc_minimal.so
+Py:Athena            INFO including file "AthenaCommon/Preparation.py"
+Py:Athena            INFO using release [WorkDir-22.0.0] [x86_64-slc6-gcc62-dbg] [mt-sss/1ba2d7dfb1] -- built on [2017-04-28T1627]
+Py:Athena            INFO including file "AthenaCommon/Bootstrap.py"
+Py:Athena            INFO including file "AthenaCommon/Atlas.UnixStandardJob.py"
+Py:Athena            INFO executing ROOT6Setup
+[?1034hPy:Athena            INFO configuring AthenaHive with [1] concurrent threads
+Py:AlgScheduler      INFO setting up AvalancheSchedulerSvc/AvalancheSchedulerSvc with 1 threads
+Py:Athena            INFO including file "AthenaCommon/Execution.py"
+Py:Athena            INFO including file "DataModelRunTests/xAODTestDecorHandle1MT_jo.py"
+Py:Athena            INFO including file "DataModelRunTests/xAODTestDecorHandle1_jo.py"
+Py:ConfigurableDb    INFO Read module info for 5295 configurables from 12 genConfDb files
+Py:ConfigurableDb WARNING Found 1 duplicates among the 12 genConfDb files :
+Py:ConfigurableDb WARNING --------------------------------------------------
+Py:ConfigurableDb WARNING   -<component name>: <module> - [ <duplicates> ]
+Py:ConfigurableDb WARNING --------------------------------------------------
+Py:ConfigurableDb WARNING   -DMTest__xAODTestDecor: DataModelTestDataCommon.DataModelTestDataCommonConf - ['DataModelTestDataRead.DataModelTestDataReadConf']
+Py:ConfigurableDb WARNING Fix your cmt/requirements file !!
+Py:Athena            INFO including file "AthenaCommon/runbatch.py"
+ApplicationMgr       INFO Updating Gaudi::PluginService::SetDebug(level) to level= 'PluginDebugLevel':0
+MessageSvc           INFO Activating in a separate thread
+ApplicationMgr    SUCCESS 
+====================================================================================================================================
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v28r2)
+                                          running on lxplus036.cern.ch on Fri Apr 28 17:54:39 2017
+====================================================================================================================================
+ApplicationMgr       INFO Successfully loaded modules : AthenaServices
+ApplicationMgr       INFO Application Manager Configured successfully
+ApplicationMgr                                     INFO Updating Gaudi::PluginService::SetDebug(level) to level= 'PluginDebugLevel':0
+AthDictLoaderSvc                                   INFO in initialize...
+AthDictLoaderSvc                                   INFO acquired Dso-registry
+ClassIDSvc                                         INFO  getRegistryEntries: read 2745 CLIDRegistry entries for module ALL
+ChronoStatSvc                                      INFO  Number of skipped events for MemStat-1
+CoreDumpSvc                                        INFO install f-a-t-a-l handler... (flag = -1)
+CoreDumpSvc                                        INFO Handling signals: 11(Segmentation fault) 7(Bus error) 4(Illegal instruction) 8(Floating point exception) 
+AthenaHiveEventLoopMgr                             INFO Initializing AthenaHiveEventLoopMgr - package version AthenaServices-00-00-00
+ClassIDSvc                                         INFO  getRegistryEntries: read 6402 CLIDRegistry entries for module ALL
+ClassIDSvc                                         INFO  getRegistryEntries: read 57 CLIDRegistry entries for module ALL
+SGInputLoader                                      INFO Will preload the following DataObjects:
+ThreadPoolSvc                                      INFO no thread init tools attached
+AvalancheSchedulerSvc                              INFO Activating scheduler in a separate thread
+AvalancheSchedulerSvc                              INFO Waiting for AvalancheSchedulerSvc to activate
+AvalancheSchedulerSvc                              INFO Start checking the actionsQueue
+AvalancheSchedulerSvc                              INFO Found 10 algorithms
+AvalancheSchedulerSvc                              INFO Data Dependencies for Algorithms:
+  BeginIncFiringAlg
+      none
+  IncidentProcAlg1
+      none
+  SGInputLoader
+      none
+  xAODTestWriteCVec
+    o INPUT  ('EventInfo','McEventInfo')
+    o OUTPUT ('DMTest::CVec','cvec')
+  xAODTestWriteCInfo
+    o INPUT  ('EventInfo','McEventInfo')
+    o INPUT  ('DMTest::CVec','cvec')
+    o OUTPUT ('SG::AuxElement','cinfo')
+    o OUTPUT ('DMTest::C','cinfo')
+  xAODTestWrite
+      none
+  xAODTestDecor
+    o INPUT  ('DMTest::CVec','cvec')
+    o INPUT  ('EventInfo','McEventInfo')
+    o INPUT  ('DMTest::C','cinfo')
+    o INPUT  ('DMTest::CVec','ctrig')
+    o OUTPUT ('DMTest::C','cinfo.dInt1')
+    o OUTPUT ('SG::AuxElement','cinfo.dInt1')
+    o OUTPUT ('DMTest::CVec','cvec.dInt1')
+    o OUTPUT ('DMTest::CVec','ctrig.dInt1')
+  xAODTestReadDecor
+    o INPUT  ('DMTest::CVec','cvec.dInt1')
+    o INPUT  ('DMTest::C','cinfo.dInt1')
+  EndIncFiringAlg
+      none
+  IncidentProcAlg2
+      none
+AvalancheSchedulerSvc                              INFO Will attribute the following unmet INPUT dependencies to "SGInputLoader/SGInputLoader" Algorithm
+   o ('DMTest::CVec','ctrig')    required by Algorithm: 
+       * xAODTestDecor
+   o ('EventInfo','McEventInfo')    required by Algorithm: 
+       * xAODTestWriteCVec
+       * xAODTestWriteCInfo
+       * xAODTestDecor
+AvalancheSchedulerSvc                              INFO Concurrency level information:
+AvalancheSchedulerSvc                              INFO  o Number of events in flight: 1
+AvalancheSchedulerSvc                              INFO  o TBB thread pool size:  'ThreadPoolSize':1
+HistogramPersistencySvc                         WARNING Histograms saving not required.
+EventSelector                                      INFO  Enter McEventSelector Initialization 
+AthenaHiveEventLoopMgr                             INFO Setup EventSelector service EventSelector
+ApplicationMgr                                     INFO Application Manager Initialized successfully
+ApplicationMgr                                     INFO Application Manager Started successfully
+AthenaHiveEventLoopMgr                             INFO Starting loop on events
+EventPersistencySvc                                INFO Added successfully Conversion service:McCnvSvc
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start of run 0    <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #0, run #0 on slot 0,  0 events processed so far  <<<===
+ClassIDSvc                              0   0      INFO  getRegistryEntries: read 104 CLIDRegistry entries for module ALL
+xAODTestReadDecor                       0   0      INFO cvec.dInt1: 401 402 403 404 405 406 407 408 409 410
+xAODTestReadDecor                       0   0      INFO cinfo.dInt1: 3000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #0, run #0 on slot 0,  1 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #1, run #0 on slot 0,  1 events processed so far  <<<===
+xAODTestReadDecor                       1   0      INFO cvec.dInt1: 801 802 803 804 805 806 807 808 809 810
+xAODTestReadDecor                       1   0      INFO cinfo.dInt1: 6000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #1, run #0 on slot 0,  2 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #2, run #0 on slot 0,  2 events processed so far  <<<===
+xAODTestReadDecor                       2   0      INFO cvec.dInt1: 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210
+xAODTestReadDecor                       2   0      INFO cinfo.dInt1: 9000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #2, run #0 on slot 0,  3 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #3, run #0 on slot 0,  3 events processed so far  <<<===
+xAODTestReadDecor                       3   0      INFO cvec.dInt1: 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610
+xAODTestReadDecor                       3   0      INFO cinfo.dInt1: 12000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #3, run #0 on slot 0,  4 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #4, run #0 on slot 0,  4 events processed so far  <<<===
+xAODTestReadDecor                       4   0      INFO cvec.dInt1: 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010
+xAODTestReadDecor                       4   0      INFO cinfo.dInt1: 15000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #4, run #0 on slot 0,  5 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #5, run #0 on slot 0,  5 events processed so far  <<<===
+xAODTestReadDecor                       5   0      INFO cvec.dInt1: 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410
+xAODTestReadDecor                       5   0      INFO cinfo.dInt1: 18000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #5, run #0 on slot 0,  6 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #6, run #0 on slot 0,  6 events processed so far  <<<===
+xAODTestReadDecor                       6   0      INFO cvec.dInt1: 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810
+xAODTestReadDecor                       6   0      INFO cinfo.dInt1: 21000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #6, run #0 on slot 0,  7 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #7, run #0 on slot 0,  7 events processed so far  <<<===
+xAODTestReadDecor                       7   0      INFO cvec.dInt1: 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210
+xAODTestReadDecor                       7   0      INFO cinfo.dInt1: 24000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #7, run #0 on slot 0,  8 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #8, run #0 on slot 0,  8 events processed so far  <<<===
+xAODTestReadDecor                       8   0      INFO cvec.dInt1: 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610
+xAODTestReadDecor                       8   0      INFO cinfo.dInt1: 27000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #8, run #0 on slot 0,  9 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #9, run #0 on slot 0,  9 events processed so far  <<<===
+xAODTestReadDecor                       9   0      INFO cvec.dInt1: 4001 4002 4003 4004 4005 4006 4007 4008 4009 4010
+xAODTestReadDecor                       9   0      INFO cinfo.dInt1: 30000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #9, run #0 on slot 0,  10 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #10, run #0 on slot 0,  10 events processed so far  <<<===
+xAODTestReadDecor                       10  0      INFO cvec.dInt1: 4401 4402 4403 4404 4405 4406 4407 4408 4409 4410
+xAODTestReadDecor                       10  0      INFO cinfo.dInt1: 33000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #10, run #0 on slot 0,  11 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #11, run #0 on slot 0,  11 events processed so far  <<<===
+xAODTestReadDecor                       11  0      INFO cvec.dInt1: 4801 4802 4803 4804 4805 4806 4807 4808 4809 4810
+xAODTestReadDecor                       11  0      INFO cinfo.dInt1: 36000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #11, run #0 on slot 0,  12 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #12, run #0 on slot 0,  12 events processed so far  <<<===
+xAODTestReadDecor                       12  0      INFO cvec.dInt1: 5201 5202 5203 5204 5205 5206 5207 5208 5209 5210
+xAODTestReadDecor                       12  0      INFO cinfo.dInt1: 39000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #12, run #0 on slot 0,  13 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #13, run #0 on slot 0,  13 events processed so far  <<<===
+xAODTestReadDecor                       13  0      INFO cvec.dInt1: 5601 5602 5603 5604 5605 5606 5607 5608 5609 5610
+xAODTestReadDecor                       13  0      INFO cinfo.dInt1: 42000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #13, run #0 on slot 0,  14 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #14, run #0 on slot 0,  14 events processed so far  <<<===
+xAODTestReadDecor                       14  0      INFO cvec.dInt1: 6001 6002 6003 6004 6005 6006 6007 6008 6009 6010
+xAODTestReadDecor                       14  0      INFO cinfo.dInt1: 45000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #14, run #0 on slot 0,  15 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #15, run #0 on slot 0,  15 events processed so far  <<<===
+xAODTestReadDecor                       15  0      INFO cvec.dInt1: 6401 6402 6403 6404 6405 6406 6407 6408 6409 6410
+xAODTestReadDecor                       15  0      INFO cinfo.dInt1: 48000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #15, run #0 on slot 0,  16 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #16, run #0 on slot 0,  16 events processed so far  <<<===
+xAODTestReadDecor                       16  0      INFO cvec.dInt1: 6801 6802 6803 6804 6805 6806 6807 6808 6809 6810
+xAODTestReadDecor                       16  0      INFO cinfo.dInt1: 51000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #16, run #0 on slot 0,  17 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #17, run #0 on slot 0,  17 events processed so far  <<<===
+xAODTestReadDecor                       17  0      INFO cvec.dInt1: 7201 7202 7203 7204 7205 7206 7207 7208 7209 7210
+xAODTestReadDecor                       17  0      INFO cinfo.dInt1: 54000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #17, run #0 on slot 0,  18 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #18, run #0 on slot 0,  18 events processed so far  <<<===
+xAODTestReadDecor                       18  0      INFO cvec.dInt1: 7601 7602 7603 7604 7605 7606 7607 7608 7609 7610
+xAODTestReadDecor                       18  0      INFO cinfo.dInt1: 57000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #18, run #0 on slot 0,  19 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #19, run #0 on slot 0,  19 events processed so far  <<<===
+xAODTestReadDecor                       19  0      INFO cvec.dInt1: 8001 8002 8003 8004 8005 8006 8007 8008 8009 8010
+xAODTestReadDecor                       19  0      INFO cinfo.dInt1: 60000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #19, run #0 on slot 0,  20 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO ---> Loop Finished (seconds): 0.459618
+ApplicationMgr                                     INFO Application Manager Stopped successfully
+IncidentProcAlg1                                   INFO Finalize
+SGInputLoader                                      INFO Finalizing SGInputLoader...
+IncidentProcAlg2                                   INFO Finalize
+EventSelector                                      INFO finalize
+AvalancheSchedulerSvc                              INFO Joining Scheduler thread
+AvalancheSchedulerSvc                   19  0      INFO Terminating thread-pool resources
+TimelineSvc                                        INFO Outputting timeline with 200 entries to file  'TimelineFile':timeline.csv
+EventDataSvc                                       INFO Finalizing EventDataSvc - package version StoreGate-00-00-00
+AthDictLoaderSvc                                   INFO in finalize...
+ToolSvc                                            INFO Removing all tools created by ToolSvc
+ChronoStatSvc.finalize()                           INFO  Service finalized successfully 
+ApplicationMgr                                     INFO Application Manager Finalized successfully
+ApplicationMgr                                     INFO Application Manager Terminated successfully
+Py:Athena            INFO leaving with code 0: "successful run"
diff --git a/Control/DataModelTest/DataModelRunTests/share/xAODTestDecorHandle1MT_jo.py b/Control/DataModelTest/DataModelRunTests/share/xAODTestDecorHandle1MT_jo.py
new file mode 100644
index 0000000000000000000000000000000000000000..03b067979b005cc28c9c174af8a013c9db02ed8b
--- /dev/null
+++ b/Control/DataModelTest/DataModelRunTests/share/xAODTestDecorHandle1MT_jo.py
@@ -0,0 +1,10 @@
+#
+# $Id$
+#
+# File: DataModelRunTests/share/xAODTestDecorHandle1MT_jo.py
+# Author: snyder@bnl.gov
+# Date: Apr 2017
+# Purpose: Test decoration handles and hive.
+#
+
+include ('DataModelRunTests/xAODTestDecorHandle1_jo.py')
diff --git a/Control/DataModelTest/DataModelRunTests/share/xAODTestDecorHandle1_jo.py b/Control/DataModelTest/DataModelRunTests/share/xAODTestDecorHandle1_jo.py
new file mode 100644
index 0000000000000000000000000000000000000000..7a1eb5d24bda599c03fed0410b25c3ce7ed96082
--- /dev/null
+++ b/Control/DataModelTest/DataModelRunTests/share/xAODTestDecorHandle1_jo.py
@@ -0,0 +1,70 @@
+#
+# $Id$
+#
+# File: DataModelRunTests/share/xAODTestDecorHandle1_jo.py
+# Author: snyder@bnl.gov
+# Date: Apr 2017
+# Purpose: Test decoration handles and hive.
+#
+
+## basic job configuration (for generator)
+import AthenaCommon.AtlasUnixGeneratorJob
+
+## get a handle to the default top-level algorithm sequence
+from AthenaCommon.AlgSequence import AlgSequence
+topSequence = AlgSequence()
+
+## get a handle to the ServiceManager
+from AthenaCommon.AppMgr import ServiceMgr as svcMgr
+
+## get a handle to the ApplicationManager
+from AthenaCommon.AppMgr import theApp
+
+#--------------------------------------------------------------
+# Event related parameters
+#--------------------------------------------------------------
+theApp.EvtMax = 20
+
+
+#--------------------------------------------------------------
+# Set up the algorithm.
+#--------------------------------------------------------------
+
+from AthenaCommon.ConcurrencyFlags import jobproperties as jp
+nThreads = jp.ConcurrencyFlags.NumThreads()
+if nThreads >= 1:
+  from AthenaCommon.AlgScheduler import AlgScheduler
+  AlgScheduler.ShowDataDependencies (True)
+  AlgScheduler.setDataLoaderAlg ('SGInputLoader')
+
+  from SGComps.SGCompsConf import SGInputLoader
+  topSequence += SGInputLoader( OutputLevel=INFO, ShowEventDump=False )
+
+
+from DataModelTestDataCommon.DataModelTestDataCommonConf import \
+     DMTest__xAODTestDecor, \
+     DMTest__xAODTestReadDecor
+from DataModelTestDataWrite.DataModelTestDataWriteConf import \
+     DMTest__xAODTestWriteCVec, \
+     DMTest__xAODTestWriteCInfo, \
+     DMTest__xAODTestWrite
+topSequence += DMTest__xAODTestWriteCVec ("xAODTestWriteCVec")
+topSequence += DMTest__xAODTestWriteCInfo ("xAODTestWriteCInfo")
+topSequence += DMTest__xAODTestWrite ("xAODTestWrite")
+topSequence += DMTest__xAODTestDecor ("xAODTestDecor")
+topSequence += DMTest__xAODTestReadDecor ("xAODTestReadDecor")
+
+
+#--------------------------------------------------------------
+# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL )
+#--------------------------------------------------------------
+svcMgr.MessageSvc.OutputLevel = 3
+svcMgr.MessageSvc.debugLimit  = 100000
+svcMgr.ClassIDSvc.OutputLevel = 3
+
+# No stats printout
+ChronoStatSvc = Service( "ChronoStatSvc" )
+ChronoStatSvc.ChronoPrintOutTable = FALSE
+ChronoStatSvc.PrintUserTime       = FALSE
+ChronoStatSvc.StatPrintOutTable   = FALSE
+
diff --git a/Control/DataModelTest/DataModelRunTests/share/xAODTestDecorHandle2.ref b/Control/DataModelTest/DataModelRunTests/share/xAODTestDecorHandle2.ref
new file mode 100644
index 0000000000000000000000000000000000000000..94cc2291e2e88d42d6eaa88624f9ae69975353cb
--- /dev/null
+++ b/Control/DataModelTest/DataModelRunTests/share/xAODTestDecorHandle2.ref
@@ -0,0 +1,180 @@
+Tue Apr 18 22:15:12 CEST 2017
+Preloading tcmalloc_minimal.so
+Py:Athena            INFO including file "AthenaCommon/Preparation.py"
+Py:Athena            INFO using release [AthenaWorkDir-22.0.0] [x86_64-slc6-gcc62-dbg] [mt-sss/f56767d765] -- built on [2017-04-18T2153]
+Py:Athena            INFO including file "AthenaCommon/Bootstrap.py"
+Py:Athena            INFO including file "AthenaCommon/Atlas.UnixStandardJob.py"
+Py:Athena            INFO executing ROOT6Setup
+[?1034hPy:Athena            INFO including file "AthenaCommon/Execution.py"
+Py:Athena            INFO including file "DataModelRunTests/xAODTestDecorHandle2_jo.py"
+Py:ConfigurableDb    INFO Read module info for 5299 configurables from 28 genConfDb files
+Py:ConfigurableDb WARNING Found 1 duplicates among the 28 genConfDb files :
+Py:ConfigurableDb WARNING --------------------------------------------------
+Py:ConfigurableDb WARNING   -<component name>: <module> - [ <duplicates> ]
+Py:ConfigurableDb WARNING --------------------------------------------------
+Py:ConfigurableDb WARNING   -DMTest__xAODTestDecor: DataModelTestDataCommon.DataModelTestDataCommonConf - ['DataModelTestDataRead.DataModelTestDataReadConf']
+Py:ConfigurableDb WARNING Fix your cmt/requirements file !!
+Py:Athena            INFO including file "AthenaCommon/runbatch.py"
+ApplicationMgr       INFO Updating Gaudi::PluginService::SetDebug(level) to level= 'PluginDebugLevel':0
+ApplicationMgr    SUCCESS 
+====================================================================================================================================
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v28r1)
+                                          running on lxplus064.cern.ch on Tue Apr 18 22:15:41 2017
+====================================================================================================================================
+ApplicationMgr       INFO Successfully loaded modules : AthenaServices
+ApplicationMgr       INFO Application Manager Configured successfully
+ApplicationMgr       INFO Updating Gaudi::PluginService::SetDebug(level) to level= 'PluginDebugLevel':0
+StatusCodeSvc        INFO initialize
+AthDictLoaderSvc     INFO in initialize...
+AthDictLoaderSvc     INFO acquired Dso-registry
+ClassIDSvc           INFO  getRegistryEntries: read 8922 CLIDRegistry entries for module ALL
+ChronoStatSvc        INFO  Number of skipped events for MemStat-1
+CoreDumpSvc          INFO install f-a-t-a-l handler... (flag = -1)
+CoreDumpSvc          INFO Handling signals: 11(Segmentation fault) 7(Bus error) 4(Illegal instruction) 8(Floating point exception) 
+AthenaEventLoopMgr   INFO Initializing AthenaEventLoopMgr - package version AthenaServices-00-00-00
+ClassIDSvc           INFO  getRegistryEntries: read 362 CLIDRegistry entries for module ALL
+MetaDataSvc          INFO Initializing MetaDataSvc - package version AthenaServices-00-00-00
+AthenaPoolCnvSvc     INFO Initializing AthenaPoolCnvSvc - package version AthenaPoolCnvSvc-00-00-00
+PoolSvc              INFO io_register[PoolSvc](xmlcatalog_file:PoolFileCatalog.xml) [ok]
+PoolSvc              INFO Set connectionsvc retry/timeout/IDLE timeout to  'ConnectionRetrialPeriod':300/ 'ConnectionRetrialTimeOut':3600/ 'ConnectionTimeOut':5 seconds with connection cleanup disabled
+PoolSvc              INFO Frontier compression level set to 5
+DBReplicaSvc         INFO Frontier server at (serverurl=http://atlasfrontier-ai.cern.ch:8000/atlr)(serverurl=http://aiatlas036.cern.ch:8000/atlr)(serverurl=http://aiatlas034.cern.ch:8000/atlr)(serverurl=http://ccfrontier.in2p3.fr:23128/ccin2p3-AtlasFrontier)(serverurl=http://ccfrontier01.in2p3.fr:23128/ccin2p3-AtlasFrontier)(serverurl=http://ccfrontier05.in2p3.fr:23128/ccin2p3-AtlasFrontier)(proxyurl=http://ca-proxy.cern.ch:3128)(proxyurl=http://ca20.cern.ch:3128)(proxyurl=http://ca17.cern.ch:3128)(proxyurl=http://atlast0fsquid.cern.ch:3128)(proxyurl=http://atlassquid1.cern.ch:3128)(proxyurl=http://atlassquid2.cern.ch:3128)(proxyurl=http://atlassquid4.cern.ch:3128) will be considered for COOL data
+DBReplicaSvc         INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2017-04-16T2225/Athena/22.0.0/InstallArea/x86_64-slc6-gcc62-dbg/share/dbreplica.config
+DBReplicaSvc         INFO Total of 10 servers found for host lxplus064.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ]
+PoolSvc              INFO Successfully setup replica sorting algorithm
+PoolSvc              INFO Setting up APR FileCatalog and Streams
+PoolSvc              INFO POOL WriteCatalog is xmlcatalog_file:PoolFileCatalog.xml
+DbSession Info     Open     DbSession    
+Domain[ROOT_All] Info >   Access   DbDomain     READ      [ROOT_All] 
+PoolSvc              INFO Re-initializing PoolSvc
+EventSelector        INFO reinitialization...
+EventSelector        INFO EventSelection with query 
+RootCollection Info Opening Collection File xaoddata.root in mode: READ
+RootCollection Info File xaoddata.root opened
+Domain[ROOT_All] Info ->  Access   DbDatabase   READ      [ROOT_All] 34D69590-F6F3-E14D-8BD0-F8F2BEB9506F
+Domain[ROOT_All] Info                           xaoddata.root
+RootDatabase.open Info xaoddata.root File version:60802
+ImplicitCollection Info Opened the implicit collection with connection string "PFN:xaoddata.root"
+ImplicitCollection Info and a name "POOLContainer(DataHeader)"
+EventPersistenc...   INFO Added successfully Conversion service:AthenaPoolCnvSvc
+EventSelector        INFO Initializing EventSelector - package version EventSelectorAthenaPool-00-00-00
+EventSelector        INFO reinitialization...
+EventSelector        INFO EventSelection with query 
+RootCollection Info Opening Collection File xaoddata.root in mode: READ
+RootCollection Info File xaoddata.root opened
+ImplicitCollection Info Opened the implicit collection with connection string "PFN:xaoddata.root"
+ImplicitCollection Info and a name "POOLContainer(DataHeader)"
+AthenaPoolAddre...   INFO Initializing AthenaPoolAddressProviderSvc - package version EventSelectorAthenaPool-00-00-00
+HistogramPersis...WARNING Histograms saving not required.
+AthenaEventLoopMgr   INFO Setup EventSelector service EventSelector
+ApplicationMgr       INFO Application Manager Initialized successfully
+xaoddata.root Info Database being retired...
+Domain[ROOT_All] Info ->  Deaccess DbDatabase   READ      [ROOT_All] 34D69590-F6F3-E14D-8BD0-F8F2BEB9506F
+RootCollection Info Opening Collection File xaoddata.root in mode: READ
+RootCollection Info File xaoddata.root opened
+DbSession Info     Open     DbSession    
+Domain[ROOT_All] Info >   Access   DbDomain     READ      [ROOT_All] 
+Domain[ROOT_All] Info ->  Access   DbDatabase   READ      [ROOT_All] 34D69590-F6F3-E14D-8BD0-F8F2BEB9506F
+Domain[ROOT_All] Info                           xaoddata.root
+RootDatabase.open Info xaoddata.root File version:60802
+ImplicitCollection Info Opened the implicit collection with connection string "PFN:xaoddata.root"
+ImplicitCollection Info and a name "POOLContainer(DataHeader)"
+ApplicationMgr       INFO Application Manager Started successfully
+ClassIDSvc           INFO  getRegistryEntries: read 1067 CLIDRegistry entries for module ALL
+AthenaPoolConve...   INFO massageEventInfo: unable to get OverrideRunNumberFromInput property from EventSelector 
+AthenaEventLoopMgr   INFO   ===>>>  start of run 0    <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #0, run #0 0 events processed so far  <<<===
+ClassIDSvc           INFO  getRegistryEntries: read 11 CLIDRegistry entries for module ALL
+xAODTestReadDecor    INFO cvec.dInt1: 401 402 403 404 405 406 407 408 409 410
+xAODTestReadDecor    INFO cinfo.dInt1: 3000
+ClassIDSvc           INFO  getRegistryEntries: read 50 CLIDRegistry entries for module ALL
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #0, run #0 1 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #1, run #0 1 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 801 802 803 804 805 806 807 808 809 810
+xAODTestReadDecor    INFO cinfo.dInt1: 6000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #1, run #0 2 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #2, run #0 2 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210
+xAODTestReadDecor    INFO cinfo.dInt1: 9000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #2, run #0 3 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #3, run #0 3 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610
+xAODTestReadDecor    INFO cinfo.dInt1: 12000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #3, run #0 4 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #4, run #0 4 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010
+xAODTestReadDecor    INFO cinfo.dInt1: 15000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #4, run #0 5 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #5, run #0 5 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410
+xAODTestReadDecor    INFO cinfo.dInt1: 18000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #5, run #0 6 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #6, run #0 6 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810
+xAODTestReadDecor    INFO cinfo.dInt1: 21000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #6, run #0 7 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #7, run #0 7 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210
+xAODTestReadDecor    INFO cinfo.dInt1: 24000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #7, run #0 8 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #8, run #0 8 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610
+xAODTestReadDecor    INFO cinfo.dInt1: 27000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #8, run #0 9 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #9, run #0 9 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 4001 4002 4003 4004 4005 4006 4007 4008 4009 4010
+xAODTestReadDecor    INFO cinfo.dInt1: 30000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #9, run #0 10 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #10, run #0 10 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 4401 4402 4403 4404 4405 4406 4407 4408 4409 4410
+xAODTestReadDecor    INFO cinfo.dInt1: 33000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #10, run #0 11 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #11, run #0 11 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 4801 4802 4803 4804 4805 4806 4807 4808 4809 4810
+xAODTestReadDecor    INFO cinfo.dInt1: 36000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #11, run #0 12 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #12, run #0 12 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 5201 5202 5203 5204 5205 5206 5207 5208 5209 5210
+xAODTestReadDecor    INFO cinfo.dInt1: 39000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #12, run #0 13 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #13, run #0 13 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 5601 5602 5603 5604 5605 5606 5607 5608 5609 5610
+xAODTestReadDecor    INFO cinfo.dInt1: 42000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #13, run #0 14 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #14, run #0 14 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 6001 6002 6003 6004 6005 6006 6007 6008 6009 6010
+xAODTestReadDecor    INFO cinfo.dInt1: 45000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #14, run #0 15 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #15, run #0 15 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 6401 6402 6403 6404 6405 6406 6407 6408 6409 6410
+xAODTestReadDecor    INFO cinfo.dInt1: 48000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #15, run #0 16 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #16, run #0 16 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 6801 6802 6803 6804 6805 6806 6807 6808 6809 6810
+xAODTestReadDecor    INFO cinfo.dInt1: 51000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #16, run #0 17 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #17, run #0 17 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 7201 7202 7203 7204 7205 7206 7207 7208 7209 7210
+xAODTestReadDecor    INFO cinfo.dInt1: 54000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #17, run #0 18 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #18, run #0 18 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 7601 7602 7603 7604 7605 7606 7607 7608 7609 7610
+xAODTestReadDecor    INFO cinfo.dInt1: 57000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #18, run #0 19 events processed so far  <<<===
+AthenaEventLoopMgr   INFO   ===>>>  start processing event #19, run #0 19 events processed so far  <<<===
+xAODTestReadDecor    INFO cvec.dInt1: 8001 8002 8003 8004 8005 8006 8007 8008 8009 8010
+xAODTestReadDecor    INFO cinfo.dInt1: 60000
+AthenaEventLoopMgr   INFO   ===>>>  done processing event #19, run #0 20 events processed so far  <<<===
+xaoddata.root Info Database being retired...
+Domain[ROOT_All] Info ->  Deaccess DbDatabase   READ      [ROOT_All] 34D69590-F6F3-E14D-8BD0-F8F2BEB9506F
+ApplicationMgr       INFO Application Manager Stopped successfully
+IncidentProcAlg1     INFO Finalize
+IncidentProcAlg2     INFO Finalize
+Domain[ROOT_All] Info >   Deaccess DbDomain     READ      [ROOT_All] 
+AthDictLoaderSvc     INFO in finalize...
+ToolSvc              INFO Removing all tools created by ToolSvc
+ChronoStatSvc.f...   INFO  Service finalized successfully 
+ApplicationMgr       INFO Application Manager Finalized successfully
+ApplicationMgr       INFO Application Manager Terminated successfully
+Py:Athena            INFO leaving with code 0: "successful run"
+CORAL/Services/ConnectionService Info Deleting the ConnectionPool
diff --git a/Control/DataModelTest/DataModelRunTests/share/xAODTestDecorHandle2MT.ref b/Control/DataModelTest/DataModelRunTests/share/xAODTestDecorHandle2MT.ref
new file mode 100644
index 0000000000000000000000000000000000000000..50ab50c30d880c02f0f03386cac666430aa49a9e
--- /dev/null
+++ b/Control/DataModelTest/DataModelRunTests/share/xAODTestDecorHandle2MT.ref
@@ -0,0 +1,217 @@
+Fri Apr 28 18:56:18 CEST 2017
+Preloading tcmalloc_minimal.so
+Py:Athena            INFO including file "AthenaCommon/Preparation.py"
+Py:Athena            INFO using release [WorkDir-22.0.0] [x86_64-slc6-gcc62-dbg] [mt-sss/1ba2d7dfb1] -- built on [2017-04-28T1627]
+Py:Athena            INFO including file "AthenaCommon/Bootstrap.py"
+Py:Athena            INFO including file "AthenaCommon/Atlas.UnixStandardJob.py"
+Py:Athena            INFO executing ROOT6Setup
+[?1034hPy:Athena            INFO configuring AthenaHive with [1] concurrent threads
+Py:AlgScheduler      INFO setting up AvalancheSchedulerSvc/AvalancheSchedulerSvc with 1 threads
+Py:Athena            INFO including file "AthenaCommon/Execution.py"
+Py:Athena            INFO including file "DataModelRunTests/xAODTestDecorHandle2MT_jo.py"
+Py:Athena            INFO including file "DataModelRunTests/xAODTestDecorHandle2_jo.py"
+Py:ConfigurableDb    INFO Read module info for 5295 configurables from 12 genConfDb files
+Py:ConfigurableDb WARNING Found 1 duplicates among the 12 genConfDb files :
+Py:ConfigurableDb WARNING --------------------------------------------------
+Py:ConfigurableDb WARNING   -<component name>: <module> - [ <duplicates> ]
+Py:ConfigurableDb WARNING --------------------------------------------------
+Py:ConfigurableDb WARNING   -DMTest__xAODTestDecor: DataModelTestDataCommon.DataModelTestDataCommonConf - ['DataModelTestDataRead.DataModelTestDataReadConf']
+Py:ConfigurableDb WARNING Fix your cmt/requirements file !!
+Py:Athena            INFO including file "AthenaCommon/runbatch.py"
+ApplicationMgr       INFO Updating Gaudi::PluginService::SetDebug(level) to level= 'PluginDebugLevel':0
+MessageSvc           INFO Activating in a separate thread
+ApplicationMgr    SUCCESS 
+====================================================================================================================================
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v28r2)
+                                          running on lxplus036.cern.ch on Fri Apr 28 18:56:39 2017
+====================================================================================================================================
+ApplicationMgr       INFO Successfully loaded modules : AthenaServices
+ApplicationMgr       INFO Application Manager Configured successfully
+ApplicationMgr                                     INFO Updating Gaudi::PluginService::SetDebug(level) to level= 'PluginDebugLevel':0
+AthDictLoaderSvc                                   INFO in initialize...
+AthDictLoaderSvc                                   INFO acquired Dso-registry
+ClassIDSvc                                         INFO  getRegistryEntries: read 9530 CLIDRegistry entries for module ALL
+ChronoStatSvc                                      INFO  Number of skipped events for MemStat-1
+CoreDumpSvc                                        INFO install f-a-t-a-l handler... (flag = -1)
+CoreDumpSvc                                        INFO Handling signals: 11(Segmentation fault) 7(Bus error) 4(Illegal instruction) 8(Floating point exception) 
+AthenaHiveEventLoopMgr                             INFO Initializing AthenaHiveEventLoopMgr - package version AthenaServices-00-00-00
+MetaDataSvc                                        INFO Initializing MetaDataSvc - package version AthenaServices-00-00-00
+AthenaPoolCnvSvc                                   INFO Initializing AthenaPoolCnvSvc - package version AthenaPoolCnvSvc-00-00-00
+PoolSvc                                            INFO io_register[PoolSvc](xmlcatalog_file:PoolFileCatalog.xml) [ok]
+PoolSvc                                            INFO Set connectionsvc retry/timeout/IDLE timeout to  'ConnectionRetrialPeriod':300/ 'ConnectionRetrialTimeOut':3600/ 'ConnectionTimeOut':5 seconds with connection cleanup disabled
+PoolSvc                                            INFO Frontier compression level set to 5
+DBReplicaSvc                                       INFO Frontier server at (serverurl=http://atlasfrontier-local.cern.ch:8000/atlr)(serverurl=http://atlasfrontier-ai.cern.ch:8000/atlr)(serverurl=http://lcgft-atlas.gridpp.rl.ac.uk:3128/frontierATLAS)(serverurl=http://ccfrontier.in2p3.fr:23128/ccin2p3-AtlasFrontier)(proxyurl=http://ca-proxy.cern.ch:3128)(proxyurl=http://ca-proxy-meyrin.cern.ch:3128)(proxyurl=http://ca-proxy-wigner.cern.ch:3128) will be considered for COOL data
+DBReplicaSvc                                       INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2017-04-27T2225/Athena/22.0.0/InstallArea/x86_64-slc6-gcc62-dbg/share/dbreplica.config
+DBReplicaSvc                                       INFO Total of 10 servers found for host lxplus036.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ]
+PoolSvc                                            INFO Successfully setup replica sorting algorithm
+PoolSvc                                            INFO Setting up APR FileCatalog and Streams
+PoolSvc                                            INFO POOL WriteCatalog is xmlcatalog_file:PoolFileCatalog.xml
+DbSession Info     Open     DbSession    
+Domain[ROOT_All] Info >   Access   DbDomain     READ      [ROOT_All] 
+PoolSvc                                            INFO Re-initializing PoolSvc
+EventSelector                                      INFO reinitialization...
+EventSelector                                      INFO EventSelection with query 
+RootCollection Info Opening Collection File xaoddata.root in mode: READ
+RootCollection Info File xaoddata.root opened
+Domain[ROOT_All] Info ->  Access   DbDatabase   READ      [ROOT_All] 364F1848-B367-0F46-A13C-CB82CCF4829B
+Domain[ROOT_All] Info                           xaoddata.root
+RootDatabase.open Info xaoddata.root File version:60806
+ImplicitCollection Info Opened the implicit collection with connection string "PFN:xaoddata.root"
+ImplicitCollection Info and a name "POOLContainer(DataHeader)"
+EventPersistencySvc                                INFO Added successfully Conversion service:AthenaPoolCnvSvc
+EventSelector                                      INFO Initializing EventSelector - package version EventSelectorAthenaPool-00-00-00
+EventSelector                                      INFO reinitialization...
+EventSelector                                      INFO EventSelection with query 
+RootCollection Info Opening Collection File xaoddata.root in mode: READ
+RootCollection Info File xaoddata.root opened
+ImplicitCollection Info Opened the implicit collection with connection string "PFN:xaoddata.root"
+ImplicitCollection Info and a name "POOLContainer(DataHeader)"
+AthenaPoolAddressProviderSvc                       INFO Initializing AthenaPoolAddressProviderSvc - package version EventSelectorAthenaPool-00-00-00
+ClassIDSvc                                         INFO  getRegistryEntries: read 1437 CLIDRegistry entries for module ALL
+SGInputLoader                                      INFO Will preload the following DataObjects:
+ThreadPoolSvc                                      INFO no thread init tools attached
+AvalancheSchedulerSvc                              INFO Activating scheduler in a separate thread
+AvalancheSchedulerSvc                              INFO Waiting for AvalancheSchedulerSvc to activate
+AvalancheSchedulerSvc                              INFO Start checking the actionsQueue
+AvalancheSchedulerSvc                              INFO Found 6 algorithms
+AvalancheSchedulerSvc                              INFO Data Dependencies for Algorithms:
+  BeginIncFiringAlg
+      none
+  IncidentProcAlg1
+      none
+  SGInputLoader
+      none
+  xAODTestReadDecor
+    o INPUT  ('DMTest::CVec','cvec.dInt1')
+    o INPUT  ('DMTest::C','cinfo.dInt1')
+  EndIncFiringAlg
+      none
+  IncidentProcAlg2
+      none
+AvalancheSchedulerSvc                              INFO Will attribute the following unmet INPUT dependencies to "SGInputLoader/SGInputLoader" Algorithm
+   o ('DMTest::CVec','cvec.dInt1')    required by Algorithm: 
+       * xAODTestReadDecor
+   o ('DMTest::C','cinfo.dInt1')    required by Algorithm: 
+       * xAODTestReadDecor
+AvalancheSchedulerSvc                              INFO Concurrency level information:
+AvalancheSchedulerSvc                              INFO  o Number of events in flight: 1
+AvalancheSchedulerSvc                              INFO  o TBB thread pool size:  'ThreadPoolSize':1
+HistogramPersistencySvc                         WARNING Histograms saving not required.
+AthenaHiveEventLoopMgr                             INFO Setup EventSelector service EventSelector
+ApplicationMgr                                     INFO Application Manager Initialized successfully
+xaoddata.root Info Database being retired...
+Domain[ROOT_All] Info ->  Deaccess DbDatabase   READ      [ROOT_All] 364F1848-B367-0F46-A13C-CB82CCF4829B
+RootCollection Info Opening Collection File xaoddata.root in mode: READ
+RootCollection Info File xaoddata.root opened
+DbSession Info     Open     DbSession    
+Domain[ROOT_All] Info >   Access   DbDomain     READ      [ROOT_All] 
+Domain[ROOT_All] Info ->  Access   DbDatabase   READ      [ROOT_All] 364F1848-B367-0F46-A13C-CB82CCF4829B
+Domain[ROOT_All] Info                           xaoddata.root
+RootDatabase.open Info xaoddata.root File version:60806
+ImplicitCollection Info Opened the implicit collection with connection string "PFN:xaoddata.root"
+ImplicitCollection Info and a name "POOLContainer(DataHeader)"
+ApplicationMgr                                     INFO Application Manager Started successfully
+AthenaHiveEventLoopMgr                             INFO Starting loop on events
+AthenaPoolConverter                                INFO massageEventInfo: unable to get OverrideRunNumberFromInput property from EventSelector 
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start of run 0    <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #0, run #0 on slot 0,  0 events processed so far  <<<===
+ClassIDSvc                              0   0      INFO  getRegistryEntries: read 11 CLIDRegistry entries for module ALL
+xAODTestReadDecor                       0   0      INFO cvec.dInt1: 401 402 403 404 405 406 407 408 409 410
+xAODTestReadDecor                       0   0      INFO cinfo.dInt1: 3000
+ClassIDSvc                              0   0      INFO  getRegistryEntries: read 50 CLIDRegistry entries for module ALL
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #0, run #0 on slot 0,  1 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #1, run #0 on slot 0,  1 events processed so far  <<<===
+xAODTestReadDecor                       1   0      INFO cvec.dInt1: 801 802 803 804 805 806 807 808 809 810
+xAODTestReadDecor                       1   0      INFO cinfo.dInt1: 6000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #1, run #0 on slot 0,  2 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #2, run #0 on slot 0,  2 events processed so far  <<<===
+xAODTestReadDecor                       2   0      INFO cvec.dInt1: 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210
+xAODTestReadDecor                       2   0      INFO cinfo.dInt1: 9000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #2, run #0 on slot 0,  3 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #3, run #0 on slot 0,  3 events processed so far  <<<===
+xAODTestReadDecor                       3   0      INFO cvec.dInt1: 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610
+xAODTestReadDecor                       3   0      INFO cinfo.dInt1: 12000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #3, run #0 on slot 0,  4 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #4, run #0 on slot 0,  4 events processed so far  <<<===
+xAODTestReadDecor                       4   0      INFO cvec.dInt1: 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010
+xAODTestReadDecor                       4   0      INFO cinfo.dInt1: 15000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #4, run #0 on slot 0,  5 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #5, run #0 on slot 0,  5 events processed so far  <<<===
+xAODTestReadDecor                       5   0      INFO cvec.dInt1: 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410
+xAODTestReadDecor                       5   0      INFO cinfo.dInt1: 18000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #5, run #0 on slot 0,  6 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #6, run #0 on slot 0,  6 events processed so far  <<<===
+xAODTestReadDecor                       6   0      INFO cvec.dInt1: 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810
+xAODTestReadDecor                       6   0      INFO cinfo.dInt1: 21000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #6, run #0 on slot 0,  7 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #7, run #0 on slot 0,  7 events processed so far  <<<===
+xAODTestReadDecor                       7   0      INFO cvec.dInt1: 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210
+xAODTestReadDecor                       7   0      INFO cinfo.dInt1: 24000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #7, run #0 on slot 0,  8 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #8, run #0 on slot 0,  8 events processed so far  <<<===
+xAODTestReadDecor                       8   0      INFO cvec.dInt1: 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610
+xAODTestReadDecor                       8   0      INFO cinfo.dInt1: 27000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #8, run #0 on slot 0,  9 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #9, run #0 on slot 0,  9 events processed so far  <<<===
+xAODTestReadDecor                       9   0      INFO cvec.dInt1: 4001 4002 4003 4004 4005 4006 4007 4008 4009 4010
+xAODTestReadDecor                       9   0      INFO cinfo.dInt1: 30000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #9, run #0 on slot 0,  10 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #10, run #0 on slot 0,  10 events processed so far  <<<===
+xAODTestReadDecor                       10  0      INFO cvec.dInt1: 4401 4402 4403 4404 4405 4406 4407 4408 4409 4410
+xAODTestReadDecor                       10  0      INFO cinfo.dInt1: 33000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #10, run #0 on slot 0,  11 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #11, run #0 on slot 0,  11 events processed so far  <<<===
+xAODTestReadDecor                       11  0      INFO cvec.dInt1: 4801 4802 4803 4804 4805 4806 4807 4808 4809 4810
+xAODTestReadDecor                       11  0      INFO cinfo.dInt1: 36000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #11, run #0 on slot 0,  12 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #12, run #0 on slot 0,  12 events processed so far  <<<===
+xAODTestReadDecor                       12  0      INFO cvec.dInt1: 5201 5202 5203 5204 5205 5206 5207 5208 5209 5210
+xAODTestReadDecor                       12  0      INFO cinfo.dInt1: 39000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #12, run #0 on slot 0,  13 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #13, run #0 on slot 0,  13 events processed so far  <<<===
+xAODTestReadDecor                       13  0      INFO cvec.dInt1: 5601 5602 5603 5604 5605 5606 5607 5608 5609 5610
+xAODTestReadDecor                       13  0      INFO cinfo.dInt1: 42000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #13, run #0 on slot 0,  14 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #14, run #0 on slot 0,  14 events processed so far  <<<===
+xAODTestReadDecor                       14  0      INFO cvec.dInt1: 6001 6002 6003 6004 6005 6006 6007 6008 6009 6010
+xAODTestReadDecor                       14  0      INFO cinfo.dInt1: 45000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #14, run #0 on slot 0,  15 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #15, run #0 on slot 0,  15 events processed so far  <<<===
+xAODTestReadDecor                       15  0      INFO cvec.dInt1: 6401 6402 6403 6404 6405 6406 6407 6408 6409 6410
+xAODTestReadDecor                       15  0      INFO cinfo.dInt1: 48000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #15, run #0 on slot 0,  16 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #16, run #0 on slot 0,  16 events processed so far  <<<===
+xAODTestReadDecor                       16  0      INFO cvec.dInt1: 6801 6802 6803 6804 6805 6806 6807 6808 6809 6810
+xAODTestReadDecor                       16  0      INFO cinfo.dInt1: 51000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #16, run #0 on slot 0,  17 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #17, run #0 on slot 0,  17 events processed so far  <<<===
+xAODTestReadDecor                       17  0      INFO cvec.dInt1: 7201 7202 7203 7204 7205 7206 7207 7208 7209 7210
+xAODTestReadDecor                       17  0      INFO cinfo.dInt1: 54000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #17, run #0 on slot 0,  18 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #18, run #0 on slot 0,  18 events processed so far  <<<===
+xAODTestReadDecor                       18  0      INFO cvec.dInt1: 7601 7602 7603 7604 7605 7606 7607 7608 7609 7610
+xAODTestReadDecor                       18  0      INFO cinfo.dInt1: 57000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #18, run #0 on slot 0,  19 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO   ===>>>  start processing event #19, run #0 on slot 0,  19 events processed so far  <<<===
+xAODTestReadDecor                       19  0      INFO cvec.dInt1: 8001 8002 8003 8004 8005 8006 8007 8008 8009 8010
+xAODTestReadDecor                       19  0      INFO cinfo.dInt1: 60000
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #19, run #0 on slot 0,  20 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO ---> Loop Finished (seconds): 0.818389
+xaoddata.root Info Database being retired...
+Domain[ROOT_All] Info ->  Deaccess DbDatabase   READ      [ROOT_All] 364F1848-B367-0F46-A13C-CB82CCF4829B
+ApplicationMgr                                     INFO Application Manager Stopped successfully
+IncidentProcAlg1                                   INFO Finalize
+SGInputLoader                                      INFO Finalizing SGInputLoader...
+IncidentProcAlg2                                   INFO Finalize
+AvalancheSchedulerSvc                              INFO Joining Scheduler thread
+AvalancheSchedulerSvc                   19  0      INFO Terminating thread-pool resources
+TimelineSvc                                        INFO Outputting timeline with 120 entries to file  'TimelineFile':timeline.csv
+EventDataSvc                                       INFO Finalizing EventDataSvc - package version StoreGate-00-00-00
+Domain[ROOT_All] Info >   Deaccess DbDomain     READ      [ROOT_All] 
+AthDictLoaderSvc                                   INFO in finalize...
+ToolSvc                                            INFO Removing all tools created by ToolSvc
+ChronoStatSvc.finalize()                           INFO  Service finalized successfully 
+ApplicationMgr                                     INFO Application Manager Finalized successfully
+ApplicationMgr                                     INFO Application Manager Terminated successfully
+Py:Athena            INFO leaving with code 0: "successful run"
+CORAL/Services/ConnectionService Info Deleting the ConnectionPool
diff --git a/Control/DataModelTest/DataModelRunTests/share/xAODTestDecorHandle2MT_jo.py b/Control/DataModelTest/DataModelRunTests/share/xAODTestDecorHandle2MT_jo.py
new file mode 100644
index 0000000000000000000000000000000000000000..70897bcc4c46f17ba64fc789d2eee25616e8d095
--- /dev/null
+++ b/Control/DataModelTest/DataModelRunTests/share/xAODTestDecorHandle2MT_jo.py
@@ -0,0 +1,10 @@
+#
+# $Id$
+#
+# File: DataModelRunTests/share/xAODTestDecorHandle2MT_jo.py
+# Author: snyder@bnl.gov
+# Date: Apr 2017
+# Purpose: Test decoration handles and hive.
+#
+
+include ('DataModelRunTests/xAODTestDecorHandle2_jo.py')
diff --git a/Control/DataModelTest/DataModelRunTests/share/xAODTestDecorHandle2_jo.py b/Control/DataModelTest/DataModelRunTests/share/xAODTestDecorHandle2_jo.py
new file mode 100644
index 0000000000000000000000000000000000000000..3152e55cf84ad40dba886fef18c02f6e274c5dd6
--- /dev/null
+++ b/Control/DataModelTest/DataModelRunTests/share/xAODTestDecorHandle2_jo.py
@@ -0,0 +1,82 @@
+#
+# $Id$
+#
+# File: DataModelRunTests/share/xAODTestDecorHandle2_jo.py
+# Author: snyder@bnl.gov
+# Date: Apr 2017
+# Purpose: Test decoration handles and hive.
+#
+
+## basic job configuration (for generator)
+import AthenaCommon.AtlasUnixStandardJob
+
+## get a handle to the default top-level algorithm sequence
+from AthenaCommon.AlgSequence import AlgSequence
+topSequence = AlgSequence()
+
+## get a handle to the ServiceManager
+from AthenaCommon.AppMgr import ServiceMgr as svcMgr
+
+## get a handle to the ApplicationManager
+from AthenaCommon.AppMgr import theApp
+
+#--------------------------------------------------------------
+# Load POOL support
+#--------------------------------------------------------------
+import AthenaPoolCnvSvc.ReadAthenaPool
+
+
+#--------------------------------------------------------------
+# Define input
+#--------------------------------------------------------------
+svcMgr.EventSelector.InputCollections        = [ "xaoddata.root" ]
+
+
+#--------------------------------------------------------------
+# Event related parameters
+#--------------------------------------------------------------
+theApp.EvtMax = 20
+
+
+#--------------------------------------------------------------
+# Set up the algorithm.
+#--------------------------------------------------------------
+
+from AthenaCommon.ConcurrencyFlags import jobproperties as jp
+nThreads = jp.ConcurrencyFlags.NumThreads()
+if nThreads >= 1:
+  from AthenaCommon.AlgScheduler import AlgScheduler
+  AlgScheduler.ShowDataDependencies (True)
+  AlgScheduler.setDataLoaderAlg ('SGInputLoader')
+
+  from SGComps.SGCompsConf import SGInputLoader
+  topSequence += SGInputLoader( OutputLevel=INFO, ShowEventDump=False )
+
+
+from DataModelTestDataCommon.DataModelTestDataCommonConf import \
+     DMTest__xAODTestReadDecor
+topSequence += DMTest__xAODTestReadDecor ("xAODTestReadDecor", DecorName="dInt1")
+
+
+# Note: can't autoload these.
+import ROOT
+import cppyy
+cppyy.loadDictionary("libDataModelTestDataCommonDict")
+cppyy.loadDictionary("libDataModelTestDataReadDict")
+ROOT.DMTest.B
+ROOT.DMTest.setConverterLibrary ('libDataModelTestDataReadCnvPoolCnv.so')
+
+
+#--------------------------------------------------------------
+# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL )
+#--------------------------------------------------------------
+svcMgr.MessageSvc.OutputLevel = 3
+svcMgr.MessageSvc.debugLimit  = 100000
+svcMgr.ClassIDSvc.OutputLevel = 3
+
+# No stats printout
+ChronoStatSvc = Service( "ChronoStatSvc" )
+ChronoStatSvc.ChronoPrintOutTable = FALSE
+ChronoStatSvc.PrintUserTime       = FALSE
+ChronoStatSvc.StatPrintOutTable   = FALSE
+
diff --git a/Control/DataModelTest/DataModelRunTests/share/xAODTestRead_jo.py b/Control/DataModelTest/DataModelRunTests/share/xAODTestRead_jo.py
index 1edfc016e5a776d66c723c516cee3a81f229a593..a02b520d21f23cde3d3fb10084ecd7942bf20c4a 100755
--- a/Control/DataModelTest/DataModelRunTests/share/xAODTestRead_jo.py
+++ b/Control/DataModelTest/DataModelRunTests/share/xAODTestRead_jo.py
@@ -101,12 +101,13 @@ theApp.EvtMax = 20
 # Application:
 #--------------------------------------------------------------
 
+from DataModelTestDataCommon.DataModelTestDataCommonConf import \
+     DMTest__xAODTestDecor
 from DataModelTestDataRead.DataModelTestDataReadConf import \
      DMTest__xAODTestReadCVec, \
      DMTest__xAODTestRead, \
      DMTest__xAODTestReadCView, \
      DMTest__xAODTestReadHVec, \
-     DMTest__xAODTestDecor, \
      DMTest__xAODTestClearDecor, \
      DMTest__xAODTestShallowCopy
 
diff --git a/Control/DataModelTest/DataModelRunTests/share/xAODTestWrite_jo.py b/Control/DataModelTest/DataModelRunTests/share/xAODTestWrite_jo.py
index edcb0eb62a5bc32136dc7d6f056e8ea21d2246f7..7dbe5acf7398164324846dbd641265b800f907ad 100755
--- a/Control/DataModelTest/DataModelRunTests/share/xAODTestWrite_jo.py
+++ b/Control/DataModelTest/DataModelRunTests/share/xAODTestWrite_jo.py
@@ -37,6 +37,8 @@ theApp.EvtMax = 20
 # Set up the algorithm.
 #--------------------------------------------------------------
 
+from DataModelTestDataCommon.DataModelTestDataCommonConf import \
+     DMTest__xAODTestDecor
 from DataModelTestDataWrite.DataModelTestDataWriteConf import \
      DMTest__xAODTestWriteCVec, \
      DMTest__xAODTestWriteHVec, \
@@ -51,6 +53,7 @@ topSequence += DMTest__xAODTestWriteCView ("xAODTestWriteCView")
 topSequence += DMTest__xAODTestWriteCInfo ("xAODTestWriteCInfo")
 topSequence += DMTest__xAODTestWrite ("xAODTestWrite")
 topSequence += DMTest__xAODTestWriteCVecConst ("xAODTestWriteCVecConst")
+topSequence += DMTest__xAODTestDecor ("xAODTestDecor")
 topSequence += DMTest__xAODTestWriteSymlinks ("xAODTestWriteSymlinks")
 
 
diff --git a/Control/DataModelTest/DataModelTestDataCommon/CMakeLists.txt b/Control/DataModelTest/DataModelTestDataCommon/CMakeLists.txt
index 1f65b503480dde4d7adf0812703cfc10d6a5fd80..774aaae820efe0931e70639094f178e16d2498e0 100644
--- a/Control/DataModelTest/DataModelTestDataCommon/CMakeLists.txt
+++ b/Control/DataModelTest/DataModelTestDataCommon/CMakeLists.txt
@@ -14,6 +14,7 @@ atlas_depends_on_subdirs( PUBLIC
                           Event/xAOD/xAODTrigger
                           GaudiKernel
                           PRIVATE
+                          Event/EventInfo
                           Control/AthLinks
                           Control/StoreGate
                           Control/AthenaBaseComps
@@ -27,7 +28,7 @@ atlas_add_library( DataModelTestDataCommonLib
                    src/*.cxx
                    PUBLIC_HEADERS DataModelTestDataCommon
                    PRIVATE_INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
-                   LINK_LIBRARIES AthContainers SGTools xAODCore xAODTrigger GaudiKernel
+                   LINK_LIBRARIES AthContainers SGTools xAODCore xAODTrigger EventInfo GaudiKernel
                    PRIVATE_LINK_LIBRARIES ${ROOT_LIBRARIES} AthLinks StoreGateLib AthenaBaseComps )
 
 atlas_add_component( DataModelTestDataCommon
diff --git a/Control/DataModelTest/DataModelTestDataCommon/src/components/DataModelTestDataCommon_entries.cxx b/Control/DataModelTest/DataModelTestDataCommon/src/components/DataModelTestDataCommon_entries.cxx
index aa3c7ed559fb0532de2b3c4663f3feb9df2e252c..56082de98fac8ca677405407bf0398d014d60cf8 100644
--- a/Control/DataModelTest/DataModelTestDataCommon/src/components/DataModelTestDataCommon_entries.cxx
+++ b/Control/DataModelTest/DataModelTestDataCommon/src/components/DataModelTestDataCommon_entries.cxx
@@ -11,6 +11,11 @@
  */
 
 #include "GaudiKernel/DeclareFactoryEntries.h"
+
 #include "../xAODTestReadSymlink.h"
+#include "../xAODTestReadDecor.h"
+#include "../xAODTestDecor.h"
 
 DECLARE_NAMESPACE_ALGORITHM_FACTORY(DMTest, xAODTestReadSymlink)
+DECLARE_NAMESPACE_ALGORITHM_FACTORY(DMTest, xAODTestReadDecor)
+DECLARE_NAMESPACE_ALGORITHM_FACTORY(DMTest, xAODTestDecor)
diff --git a/Control/DataModelTest/DataModelTestDataCommon/src/xAODTestDecor.cxx b/Control/DataModelTest/DataModelTestDataCommon/src/xAODTestDecor.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..bc88a0c0b4e95232d53ad795e73ca5f4d8f563a8
--- /dev/null
+++ b/Control/DataModelTest/DataModelTestDataCommon/src/xAODTestDecor.cxx
@@ -0,0 +1,107 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+// $Id$
+/**
+ * @file DataModelTestDataCommon/src/AuxDataTestDecor.cxx
+ * @author snyder@bnl.gov
+ * @date May 2014
+ * @brief Algorithm to test adding decorations to xAOD data.
+ */
+
+
+#include "xAODTestDecor.h"
+#include "DataModelTestDataCommon/C.h"
+#include "DataModelTestDataCommon/CVec.h"
+#include "EventInfo/EventID.h"
+#include "StoreGate/WriteDecorHandle.h"
+#include "AthenaKernel/errorcheck.h"
+
+
+namespace DMTest {
+
+
+/**
+ * @brief Constructor.
+ * @param name The algorithm name.
+ * @param svc The service locator.
+ */
+xAODTestDecor::xAODTestDecor (const std::string &name,
+                              ISvcLocator *pSvcLocator)
+  : AthReentrantAlgorithm (name, pSvcLocator)
+{
+  declareProperty ("ReadPrefix",  m_readPrefix);
+  declareProperty ("DecorName",   m_decorName = "dInt1");
+  declareProperty ("Offset",      m_offset = 0);
+
+  declareProperty ("EventInfoKey", m_eventInfoKey = "McEventInfo");
+  declareProperty ("CVecDecorKey",  m_cvecDecorKey);
+  declareProperty ("CInfoDecorKey", m_cinfoDecorKey);
+  declareProperty ("CTrigDecorKey", m_ctrigDecorKey);
+
+  declareProperty ("DoCVec",      m_doCVec = true);
+  declareProperty ("DoCInfo",     m_doCInfo = true);
+  declareProperty ("DoCTrig",     m_doCTrig = true);
+}
+  
+
+/**
+ * @brief Algorithm initialization; called at the beginning of the job.
+ */
+StatusCode xAODTestDecor::initialize()
+{
+  m_cvecDecorKey  = m_readPrefix + "cvec."  + m_decorName;
+  m_cinfoDecorKey = m_readPrefix + "cinfo." + m_decorName;
+  m_ctrigDecorKey = m_readPrefix + "ctrig." + m_decorName;
+
+  ATH_CHECK( m_eventInfoKey.initialize() );
+  ATH_CHECK( m_cvecDecorKey.initialize  (m_doCVec) );
+  ATH_CHECK( m_cinfoDecorKey.initialize (m_doCInfo) );
+  ATH_CHECK( m_ctrigDecorKey.initialize (m_doCTrig) );
+  return StatusCode::SUCCESS;
+}
+
+
+/**
+ * @brief Algorithm event processing.
+ */
+StatusCode xAODTestDecor::execute_r (const EventContext& ctx) const
+{
+  SG::ReadHandle<EventInfo> eventInfo (m_eventInfoKey, ctx);
+  unsigned int count = eventInfo->event_ID()->event_number() + 1;
+
+  if (m_doCInfo) {
+    SG::WriteDecorHandle<C, int> cinfoDecor (m_cinfoDecorKey, ctx);
+    cinfoDecor(0) = cinfoDecor->anInt() + (m_offset ? 400 + m_offset : count * 2000);
+  }
+
+  if (m_doCVec) {
+    SG::WriteDecorHandle<CVec, int> cvecDecor (m_cvecDecorKey, ctx);
+    for (const C* celt : *cvecDecor) {
+      cvecDecor(*celt) = celt->anInt() + (m_offset ? m_offset : count*300);
+    }
+  }
+
+  if (m_doCTrig) {
+    SG::WriteDecorHandle<CVec, int> ctrigDecor (m_ctrigDecorKey, ctx);
+    for (const C* celt : *ctrigDecor) {
+      ctrigDecor(*celt) = celt->anInt() + (m_offset ? 600 + m_offset : -count*20);
+    }
+  }
+
+  return StatusCode::SUCCESS;
+}
+
+
+/**
+ * @brief Algorithm finalization; called at the end of the job.
+ */
+StatusCode xAODTestDecor::finalize()
+{
+  return StatusCode::SUCCESS;
+}
+
+
+} // namespace DMTest
+
diff --git a/Control/DataModelTest/DataModelTestDataRead/src/xAODTestDecor.h b/Control/DataModelTest/DataModelTestDataCommon/src/xAODTestDecor.h
similarity index 53%
rename from Control/DataModelTest/DataModelTestDataRead/src/xAODTestDecor.h
rename to Control/DataModelTest/DataModelTestDataCommon/src/xAODTestDecor.h
index afea6afe07d4d276601b2865373b76fd905533d1..2cf34c32fc805ee6fa5f7f8588c628097057ed82 100644
--- a/Control/DataModelTest/DataModelTestDataRead/src/xAODTestDecor.h
+++ b/Control/DataModelTest/DataModelTestDataCommon/src/xAODTestDecor.h
@@ -6,18 +6,23 @@
 
 // $Id$
 /**
- * @file src/xAODTestDecor.h
+ * @file DataModelTestDataCommon/src/xAODTestDecor.h
  * @author scott snyder <snyder@bnl.gov>
  * @date May, 2014
  * @brief Algorithm to test adding decorations to xAOD types.
  */
 
 
-#ifndef DATAMODELTESTDATAREAD_XAODTESTDECOR_H
-#define DATAMODELTESTDATAREAD_XAODTESTDECOR_H
+#ifndef DATAMODELTESTDATACOMMON_XAODTESTDECOR_H
+#define DATAMODELTESTDATACOMMON_XAODTESTDECOR_H
 
 
-#include "AthenaBaseComps/AthAlgorithm.h"
+#include "DataModelTestDataCommon/C.h"
+#include "DataModelTestDataCommon/CVec.h"
+#include "EventInfo/EventInfo.h"
+#include "AthenaBaseComps/AthReentrantAlgorithm.h"
+#include "StoreGate/WriteDecorHandleKey.h"
+#include "StoreGate/ReadHandleKey.h"
 
 
 namespace DMTest {
@@ -27,7 +32,7 @@ namespace DMTest {
  * @brief Algorithm to test adding decorations to xAOD data.
  */
 class xAODTestDecor
-  : public AthAlgorithm
+  : public AthReentrantAlgorithm
 {
 public:
   /**
@@ -41,19 +46,19 @@ public:
   /**
    * @brief Algorithm initialization; called at the beginning of the job.
    */
-  virtual StatusCode initialize();
+  virtual StatusCode initialize() override;
 
 
   /**
    * @brief Algorithm event processing.
    */
-  virtual StatusCode execute(); 
+  virtual StatusCode execute_r (const EventContext& ctx) const override; 
 
 
   /**
    * @brief Algorithm finalization; called at the end of the job.
    */
-  virtual StatusCode finalize();
+  virtual StatusCode finalize() override;
 
 
 private:
@@ -65,10 +70,21 @@ private:
 
   /// Parameter: Offset to be applied to decoration.
   int m_offset;
+
+  /// Flags.
+  bool m_doCVec;
+  bool m_doCInfo;
+  bool m_doCTrig;
+
+  /// Handles for writing decorations.
+  SG::ReadHandleKey<EventInfo> m_eventInfoKey;
+  SG::WriteDecorHandleKey<CVec> m_cvecDecorKey;
+  SG::WriteDecorHandleKey<C>    m_cinfoDecorKey;
+  SG::WriteDecorHandleKey<CVec> m_ctrigDecorKey;
 };
 
 
 } // namespace DMTest
 
 
-#endif // not DATAMODELTESTDATAREAD_XAODTESTDECOR_H
+#endif // not DATAMODELTESTDATACOMMON_XAODTESTDECOR_H
diff --git a/Control/DataModelTest/DataModelTestDataCommon/src/xAODTestReadDecor.cxx b/Control/DataModelTest/DataModelTestDataCommon/src/xAODTestReadDecor.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..50de9d446bc752550795a9a312f819d7c51ec395
--- /dev/null
+++ b/Control/DataModelTest/DataModelTestDataCommon/src/xAODTestReadDecor.cxx
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration.
+ */
+// $Id$
+/**
+ * @file DataModelTestDataCommon/src/AuxDataTestDecor.cxx
+ * @author snyder@bnl.gov
+ * @date Apr 2017
+ * @brief Algorithm to test reading decorations using handles.
+ */
+
+
+#include "xAODTestReadDecor.h"
+#include "DataModelTestDataCommon/C.h"
+#include "DataModelTestDataCommon/CVec.h"
+#include "StoreGate/ReadDecorHandle.h"
+#include "AthenaKernel/errorcheck.h"
+
+
+namespace DMTest {
+
+
+/**
+ * @brief Constructor.
+ * @param name The algorithm name.
+ * @param svc The service locator.
+ */
+xAODTestReadDecor::xAODTestReadDecor (const std::string &name,
+                                      ISvcLocator *pSvcLocator)
+  : AthReentrantAlgorithm (name, pSvcLocator)
+{
+  declareProperty ("ReadPrefix",  m_readPrefix);
+  declareProperty ("DecorName",   m_decorName = "dInt1");
+
+  declareProperty ("CVecDecorKey",  m_cvecDecorKey);
+  declareProperty ("CInfoDecorKey", m_cinfoDecorKey);
+}
+  
+
+/**
+ * @brief Algorithm initialization; called at the beginning of the job.
+ */
+StatusCode xAODTestReadDecor::initialize()
+{
+  m_cvecDecorKey  = m_readPrefix + "cvec."  + m_decorName;
+  m_cinfoDecorKey = m_readPrefix + "cinfo." + m_decorName;
+
+  ATH_CHECK( m_cvecDecorKey.initialize() );
+  ATH_CHECK( m_cinfoDecorKey.initialize() );
+  return StatusCode::SUCCESS;
+}
+
+
+/**
+ * @brief Algorithm event processing.
+ */
+StatusCode xAODTestReadDecor::execute_r (const EventContext& ctx) const
+{
+  {
+    std::ostringstream ss;
+    SG::ReadDecorHandle<CVec, int> cvecDecor (m_cvecDecorKey, ctx);
+    for (const C* celt : *cvecDecor) {
+      ss << " " << cvecDecor(*celt);
+    }
+    ATH_MSG_INFO (m_cvecDecorKey.key() << ":" << ss.str());
+  }
+
+  {
+    SG::ReadDecorHandle<C, int> cinfoDecor (m_cinfoDecorKey, ctx);
+    ATH_MSG_INFO (m_cinfoDecorKey.key() << ": " << cinfoDecor(0));
+  }
+
+  return StatusCode::SUCCESS;
+}
+
+
+/**
+ * @brief Algorithm finalization; called at the end of the job.
+ */
+StatusCode xAODTestReadDecor::finalize()
+{
+  return StatusCode::SUCCESS;
+}
+
+
+} // namespace DMTest
+
diff --git a/Control/DataModelTest/DataModelTestDataCommon/src/xAODTestReadDecor.h b/Control/DataModelTest/DataModelTestDataCommon/src/xAODTestReadDecor.h
new file mode 100644
index 0000000000000000000000000000000000000000..b87ccb70b50e17901290033c92db22a48a420c23
--- /dev/null
+++ b/Control/DataModelTest/DataModelTestDataCommon/src/xAODTestReadDecor.h
@@ -0,0 +1,76 @@
+// This file's extension implies that it's C, but it's really -*- C++ -*-.
+/*
+ * Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration.
+ */
+// $Id$
+/**
+ * @file DataModelTestDataCommon/src/xAODTestReadDecor.h
+ * @author scott snyder <snyder@bnl.gov>
+ * @date Apr, 2017
+ * @brief Algorithm to test reading decorations using handles.
+ */
+
+
+#ifndef DATAMODELTESTDATACOMMON_XAODTESTREADDECOR_H
+#define DATAMODELTESTDATACOMMON_XAODTESTREADDECOR_H
+
+
+#include "DataModelTestDataCommon/C.h"
+#include "DataModelTestDataCommon/CVec.h"
+#include "AthenaBaseComps/AthReentrantAlgorithm.h"
+#include "StoreGate/ReadDecorHandleKey.h"
+
+
+namespace DMTest {
+
+
+/**
+ * @brief Algorithm to test reading decorations using handles.
+ */
+class xAODTestReadDecor
+  : public AthReentrantAlgorithm
+{
+public:
+  /**
+   * @brief Constructor.
+   * @param name The algorithm name.
+   * @param svc The service locator.
+   */
+  xAODTestReadDecor (const std::string &name, ISvcLocator *pSvcLocator);
+  
+
+  /**
+   * @brief Algorithm initialization; called at the beginning of the job.
+   */
+  virtual StatusCode initialize() override;
+
+
+  /**
+   * @brief Algorithm event processing.
+   */
+  virtual StatusCode execute_r (const EventContext& ctx) const override; 
+
+
+  /**
+   * @brief Algorithm finalization; called at the end of the job.
+   */
+  virtual StatusCode finalize() override;
+
+
+private:
+  /// Parameter: Prefix for names read from SG.
+  std::string m_readPrefix;
+
+  /// Parameter: Name of the decoration.
+  std::string m_decorName;
+
+  /// Handles for reading decorations.
+  SG::ReadDecorHandleKey<CVec> m_cvecDecorKey;
+  SG::ReadDecorHandleKey<C>    m_cinfoDecorKey;
+};
+
+
+} // namespace DMTest
+
+
+#endif // not DATAMODELTESTDATACOMMON_XAODTESTREADDECOR_H
diff --git a/Control/DataModelTest/DataModelTestDataRead/src/components/DataModelTestDataRead_entries.cxx b/Control/DataModelTest/DataModelTestDataRead/src/components/DataModelTestDataRead_entries.cxx
index ac5158d54b626b8fb690c18ca9290de838e191da..79d31b54a2b752a17166139ddee7f06d985eb0b7 100644
--- a/Control/DataModelTest/DataModelTestDataRead/src/components/DataModelTestDataRead_entries.cxx
+++ b/Control/DataModelTest/DataModelTestDataRead/src/components/DataModelTestDataRead_entries.cxx
@@ -17,7 +17,6 @@
 #include "../xAODTestReadCView.h"
 #include "../xAODTestReadHVec.h"
 #include "../xAODTestFilterCVec.h"
-#include "../xAODTestDecor.h"
 #include "../xAODTestClearDecor.h"
 #include "../xAODTestTypelessRead.h"
 #include "../xAODTestShallowCopy.h"
@@ -33,7 +32,6 @@ DECLARE_NAMESPACE_ALGORITHM_FACTORY(DMTest, xAODTestReadCVec)
 DECLARE_NAMESPACE_ALGORITHM_FACTORY(DMTest, xAODTestReadCView)
 DECLARE_NAMESPACE_ALGORITHM_FACTORY(DMTest, xAODTestReadHVec)
 DECLARE_NAMESPACE_ALGORITHM_FACTORY(DMTest, xAODTestFilterCVec)
-DECLARE_NAMESPACE_ALGORITHM_FACTORY(DMTest, xAODTestDecor)
 DECLARE_NAMESPACE_ALGORITHM_FACTORY(DMTest, xAODTestClearDecor)
 DECLARE_NAMESPACE_ALGORITHM_FACTORY(DMTest, xAODTestTypelessRead)
 DECLARE_NAMESPACE_ALGORITHM_FACTORY(DMTest, xAODTestShallowCopy)
diff --git a/Control/DataModelTest/DataModelTestDataRead/src/xAODTestDecor.cxx b/Control/DataModelTest/DataModelTestDataRead/src/xAODTestDecor.cxx
deleted file mode 100644
index a37082354c811da174509c11eb2d5f8a5102aadc..0000000000000000000000000000000000000000
--- a/Control/DataModelTest/DataModelTestDataRead/src/xAODTestDecor.cxx
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-// $Id$
-/**
- * @file  src/AuxDataTestDecor.cxx
- * @author snyder@bnl.gov
- * @date May 2014
- * @brief Algorithm to test adding decorations to xAOD data.
- */
-
-
-#include "xAODTestDecor.h"
-#include "DataModelTestDataCommon/C.h"
-#include "DataModelTestDataCommon/CVec.h"
-#include "AthenaKernel/errorcheck.h"
-
-
-namespace DMTest {
-
-
-/**
- * @brief Constructor.
- * @param name The algorithm name.
- * @param svc The service locator.
- */
-xAODTestDecor::xAODTestDecor (const std::string &name,
-                              ISvcLocator *pSvcLocator)
-  : AthAlgorithm (name, pSvcLocator)
-{
-  declareProperty ("ReadPrefix",  m_readPrefix);
-  declareProperty ("DecorName",   m_decorName = "dInt1");
-  declareProperty ("Offset",      m_offset = 100);
-}
-  
-
-/**
- * @brief Algorithm initialization; called at the beginning of the job.
- */
-StatusCode xAODTestDecor::initialize()
-{
-  return StatusCode::SUCCESS;
-}
-
-
-/**
- * @brief Algorithm event processing.
- */
-StatusCode xAODTestDecor::execute()
-{
-  C::Decorator<int> dInt1 (m_decorName);
-
-  const CVec* vec = 0;
-  CHECK( evtStore()->retrieve (vec, m_readPrefix + "cvec") );
-  for (const C* celt : *vec)
-    dInt1(*celt) = m_offset + celt->anInt();
-
-  const C* c = 0;
-  CHECK( evtStore()->retrieve (c, m_readPrefix + "cinfo") );
-  dInt1(*c) = 400 + m_offset + c->anInt();
-
-  const CVec* ctrig = 0;
-  CHECK( evtStore()->retrieve (ctrig, m_readPrefix + "ctrig") );
-  for (const C* celt : *ctrig)
-    dInt1(*celt) = 600 + m_offset + celt->anInt();
-
-  return StatusCode::SUCCESS;
-}
-
-
-/**
- * @brief Algorithm finalization; called at the end of the job.
- */
-StatusCode xAODTestDecor::finalize()
-{
-  return StatusCode::SUCCESS;
-}
-
-
-} // namespace DMTest
-
diff --git a/Control/DataModelTest/DataModelTestDataWrite/src/xAODTestWrite.cxx b/Control/DataModelTest/DataModelTestDataWrite/src/xAODTestWrite.cxx
index eeb097540e82ed885bb4a5d2d35d0372a373bbe6..c71d854aee176214f8abbb721b698129d264da65 100644
--- a/Control/DataModelTest/DataModelTestDataWrite/src/xAODTestWrite.cxx
+++ b/Control/DataModelTest/DataModelTestDataWrite/src/xAODTestWrite.cxx
@@ -82,7 +82,6 @@ StatusCode xAODTestWrite::execute()
   trig_coll->setStore (trig_store);
 
   static C::Accessor<int> anInt2 ("anInt2");
-  static C::Decorator<int> dInt1 ("dInt1");
   static C::Accessor<ElementLink<DMTest::CVec> > cEL ("cEL");
 
   //static C::Decorator<SG::PackedElement<unsigned int> > dpInt1 ("dpInt1");
@@ -97,7 +96,6 @@ StatusCode xAODTestWrite::execute()
     c.setAFloat (m_count * 600 + (float)i*0.1);
 
     anInt2(c) = m_count*700 + i+1;
-    dInt1(c) = m_count*480 + i+1;
   }
 
   CHECK( evtStore()->record (trig_coll, "ctrig") );
diff --git a/Control/DataModelTest/DataModelTestDataWrite/src/xAODTestWriteCInfo.cxx b/Control/DataModelTest/DataModelTestDataWrite/src/xAODTestWriteCInfo.cxx
index 4d4f4283dc831c2ee057dbd950f87f6b93d34dfa..add263f0e5e3a0cfbbfc0b158701e5a677712fee 100644
--- a/Control/DataModelTest/DataModelTestDataWrite/src/xAODTestWriteCInfo.cxx
+++ b/Control/DataModelTest/DataModelTestDataWrite/src/xAODTestWriteCInfo.cxx
@@ -68,13 +68,11 @@ StatusCode xAODTestWriteCInfo::execute_r (const EventContext& ctx) const
   cinfo->setStore (info_store.get());
 
   static C::Accessor<int> anInt2 ("anInt2");
-  static C::Decorator<int> dInt1 ("dInt1");
   static C::Accessor<ElementLink<DMTest::CVec> > cEL ("cEL");
 
   cinfo->setAnInt (count * 1000);
   cinfo->setAFloat ((float)count * 0.1);
   anInt2(*cinfo) = count * 2000;
-  dInt1(*cinfo) = count * 3000;
 
   cEL(*cinfo).toIndexedElement (*cvec, count % cvec->size());
 
diff --git a/Control/DataModelTest/DataModelTestDataWrite/src/xAODTestWriteCVec.cxx b/Control/DataModelTest/DataModelTestDataWrite/src/xAODTestWriteCVec.cxx
index b05585c5a7f2d0a4855aa792a40f2ca7b58444cb..ca8db13501538c6101f67e724a227098109e65cb 100644
--- a/Control/DataModelTest/DataModelTestDataWrite/src/xAODTestWriteCVec.cxx
+++ b/Control/DataModelTest/DataModelTestDataWrite/src/xAODTestWriteCVec.cxx
@@ -76,7 +76,6 @@ StatusCode xAODTestWriteCVec::execute_r (const EventContext& ctx) const
   coll->setStore (store.get());
 
   const static C::Accessor<int> anInt2 ("anInt2");
-  const static C::Decorator<int> dInt1 ("dInt1");
   const static C::Decorator<int> dVar1 ("dVar1");
   const static C::Decorator<int> dVar2 ("dVar2");
   const static C::Accessor<ElementLink<DMTest::CVec> > cEL ("cEL");
@@ -103,7 +102,6 @@ StatusCode xAODTestWriteCVec::execute_r (const EventContext& ctx) const
     c.setPVFloat (std::move (pvf));
 
     anInt2(c) = count*300 + i+1;
-    dInt1(c) = count*400 + i+1;
     dVar1(c) = count*450 + i+1;
     dVar2(c) = count*750 + i+1;
     dpInt1(c) = count*50 + i+1;