diff --git a/AtlasTest/ControlTest/share/StoreGateSvcClient_test.ref b/AtlasTest/ControlTest/share/StoreGateSvcClient_test.ref
index e03744dc20780df313c5941d13d751f3e88bf5bb..fe3f98945df0a962eddae077f2108bf43dcdd962 100644
--- a/AtlasTest/ControlTest/share/StoreGateSvcClient_test.ref
+++ b/AtlasTest/ControlTest/share/StoreGateSvcClient_test.ref
@@ -1,7 +1,7 @@
 
 
 Initializing Gaudi ApplicationMgr using job opts ../share/StoreGateSvcClient_test.txt
-JobOptionsSvc        INFO # =======> /home/sss/atlas/dvtest/build/joboptions/ControlTest/StoreGateTestCommon.txt
+JobOptionsSvc        INFO # =======> /afs/cern.ch/work/s/ssnyder/builds/atlas-work7/build-x86_64-slc6-gcc62-dbg/x86_64-slc6-gcc62-dbg/jobOptions/ControlTest/StoreGateTestCommon.txt
 JobOptionsSvc        INFO # (5,1): ApplicationMgr.ExtSvc += ["StoreGateSvc/DetectorStore", "StoreGateSvc/HistoryStore", "StoreGateSvc/ConditionsStore"]
 JobOptionsSvc        INFO # (6,1): AuditorSvc.Auditors += ["AlgContextAuditor"]
 JobOptionsSvc        INFO # (7,1): StoreGateSvc.OutputLevel = 1
@@ -11,11 +11,11 @@ JobOptionsSvc        INFO # (10,1): MessageSvc.useColors = 1
 JobOptionsSvc        INFO Job options successfully read in from ../share/StoreGateSvcClient_test.txt
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
-                                                   Welcome to ApplicationMgr (GaudiCoreSvc v27r1p99)
-                                          running on karma on Tue Dec 13 22:18:59 2016
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v28r1)
+                                          running on lxplus042.cern.ch on Fri Apr  7 05:56:41 2017
 ====================================================================================================================================
 ApplicationMgr       INFO Application Manager Configured successfully
-ClassIDSvc           INFO  getRegistryEntries: read 1216 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 270 CLIDRegistry entries for module ALL
 EventLoopMgr      WARNING Unable to locate service "EventSelector" 
 EventLoopMgr      WARNING No events will be processed from external input.
 HistogramPersis...WARNING Histograms saving not required.
@@ -23,103 +23,108 @@ ApplicationMgr       INFO Application Manager Initialized successfully
 ApplicationMgr Ready
 StoreGateSvc        DEBUG Property update for OutputLevel : new value = 1
 StoreGateSvc        DEBUG Service base class initialized successfully
-StoreGateSvc      VERBOSE ServiceLocatorHelper::service: found service EventPersistencySvc
-StoreGateSvc      VERBOSE ServiceLocatorHelper::service: found service ClassIDSvc
+StoreGateSvc      VERBOSE Initializing StoreGateSvc - package version StoreGate-00-00-00
+StoreGateSvc        DEBUG trying to create store SGImplSvc/StoreGateSvc_Impl
+StoreGateSvc_Impl   DEBUG Property update for OutputLevel : new value = 1
+StoreGateSvc_Impl VERBOSE Initializing StoreGateSvc_Impl - package version StoreGate-00-00-00
+StoreGateSvc_Impl   DEBUG Service base class initialized successfully
+StoreGateSvc_Impl VERBOSE ServiceLocatorHelper::service: found service EventPersistencySvc
+StoreGateSvc_Impl VERBOSE ServiceLocatorHelper::service: found service ClassIDSvc
 *** StoreGateSvcClient_test record BEGINS ***
-StoreGateSvc        DEBUG Recorded object @0x1121730 with key pFoo1 of type Foo(CLID 8101)
- in DataObject @0x11245b0
+ClassIDSvc           INFO  getRegistryEntries: read 867 CLIDRegistry entries for module ALL
+StoreGateSvc_Impl   DEBUG Recorded object @0x1875630 with key pFoo1 of type Foo(CLID 8101)
+ in DataObject @0x1875930
  object modifiable when retrieved
 Now we expect to see an error message:
 ----Error Message Starts--->>
-StoreGateSvc      WARNING  setupProxy:: error setting up proxy for key pFoo1 and clid 8101
- Pre-existing valid DataProxy @0x11244e0 found in Store for key pFoo1 with clid 8101
-ClassIDSvc           INFO  getRegistryEntries: read 357 CLIDRegistry entries for module ALL
-StoreGateSvc      WARNING record_impl: Problem setting up the proxy for object @0x1124a30
- recorded with key pFoo1 of type Foo (CLID 8101) in DataObject @0x1124690
+StoreGateSvc_Impl WARNING  setupProxy:: error setting up proxy for key pFoo1 and clid 8101
+ Pre-existing valid DataProxy @0x1875ce0 found in Store for key pFoo1 with clid 8101
+StoreGateSvc_Impl WARNING record_impl: Problem setting up the proxy for object @0x17f28f0
+ recorded with key pFoo1 of type Foo (CLID 8101) in DataObject @0x1875f60
 <<---Error Message Ends-------
 Now we expect to see an error message:
 ----Error Message Starts--->>
-StoreGateSvc      WARNING record_impl: failed for key=pFoo2, type Foo (CLID 8101)
- object @0x1121730 already in store with key=pFoo1. Will not record a duplicate! 
+StoreGateSvc_Impl WARNING record_impl: failed for key=pFoo2, type Foo (CLID 8101)
+ object @0x1875630 already in store with key=pFoo1. Will not record a duplicate! 
 <<---Error Message Ends-------
-StoreGateSvc        DEBUG Recorded object @0x10dfb70 with key pFoo2 of type Foo(CLID 8101)
- in DataObject @0x10f0b50
+StoreGateSvc_Impl   DEBUG Recorded object @0x1865df0 with key pFoo2 of type Foo(CLID 8101)
+ in DataObject @0x17ec190
  object modifiable when retrieved
-StoreGateSvc        DEBUG Recorded object @0x10eee50 with key cpFoo of type Foo(CLID 8101)
- in DataObject @0x10e6650
+StoreGateSvc_Impl   DEBUG Recorded object @0x1875e20 with key cpFoo of type Foo(CLID 8101)
+ in DataObject @0x18761e0
  object not modifiable when retrieved
-StoreGateSvc        DEBUG Recorded object @0x10ca3b0 with key silly of type Foo(CLID 8101)
- in DataObject @0x1125980
+StoreGateSvc_Impl   DEBUG Recorded object @0x1875bb0 with key silly of type Foo(CLID 8101)
+ in DataObject @0x1876920
  object modifiable when retrieved
 Now we expect to see an error message:
 ----Error Message Starts--->>
-StoreGateSvc      WARNING  setupProxy:: error setting up proxy for key silly and clid 8101
- Pre-existing valid DataProxy @0x10eb590 found in Store for key silly with clid 8101
-StoreGateSvc      WARNING record_impl: Problem setting up the proxy for object @0x10e6d50
- recorded with key silly of type Foo (CLID 8101) in DataObject @0x10e6da0
+StoreGateSvc_Impl WARNING  setupProxy:: error setting up proxy for key silly and clid 8101
+ Pre-existing valid DataProxy @0x1876ab0 found in Store for key silly with clid 8101
+StoreGateSvc_Impl WARNING record_impl: Problem setting up the proxy for object @0x1866350
+ recorded with key silly of type Foo (CLID 8101) in DataObject @0x1876c20
 <<---Error Message Ends-------
 Now we expect to see an error message:
 ----Error Message Starts--->>
-StoreGateSvc      WARNING  setupProxy:: error setting up proxy for key silly and clid 8101
- Pre-existing valid DataProxy @0x10eb590 found in Store for key silly with clid 8101
-StoreGateSvc      WARNING record_impl: Problem setting up the proxy for object @0x1124c30
- recorded with key silly of type Foo (CLID 8101) in DataObject @0x10e6200
+StoreGateSvc_Impl WARNING  setupProxy:: error setting up proxy for key silly and clid 8101
+ Pre-existing valid DataProxy @0x1876ab0 found in Store for key silly with clid 8101
+StoreGateSvc_Impl WARNING record_impl: Problem setting up the proxy for object @0x1876da0
+ recorded with key silly of type Foo (CLID 8101) in DataObject @0x1876d00
 <<---Error Message Ends-------
 Now we expect to see an error message:
 ----Error Message Starts--->>
-StoreGateSvc      WARNING  setupProxy:: error setting up proxy for key silly and clid 8101
- Pre-existing valid DataProxy @0x10eb590 found in Store for key silly with clid 8101
-StoreGateSvc      WARNING record_impl: Problem setting up the proxy for object @0x10e6250
- recorded with key silly of type Foo (CLID 8101) in DataObject @0x1124d80
+StoreGateSvc_Impl WARNING  setupProxy:: error setting up proxy for key silly and clid 8101
+ Pre-existing valid DataProxy @0x1876ab0 found in Store for key silly with clid 8101
+StoreGateSvc_Impl WARNING record_impl: Problem setting up the proxy for object @0x1876250
+ recorded with key silly of type Foo (CLID 8101) in DataObject @0x1876d50
 <<---Error Message Ends-------
-StoreGateSvc        DEBUG Recorded object @0x10e6290 with key UnLocked of type Foo(CLID 8101)
- in DataObject @0x1124e50
+StoreGateSvc_Impl   DEBUG Recorded object @0x1876c90 with key UnLocked of type Foo(CLID 8101)
+ in DataObject @0x1876df0
  object modifiable when retrieved
-StoreGateSvc        DEBUG Recorded object @0x1125310 with key Locked of type Foo(CLID 8101)
- in DataObject @0x102d780
+StoreGateSvc_Impl   DEBUG Recorded object @0x1876430 with key Locked of type Foo(CLID 8101)
+ in DataObject @0x18771d0
  object not modifiable when retrieved
-StoreGateSvc        DEBUG Recorded object @0x1125d10 with key LockedReset of type Foo(CLID 8101)
- in DataObject @0x1125c80
+StoreGateSvc_Impl   DEBUG Recorded object @0x1865c70 with key LockedReset of type Foo(CLID 8101)
+ in DataObject @0x1877520
  object not modifiable when retrieved
-StoreGateSvc        DEBUG Recorded object @0x11261d0 with key UnLockedReset of type Foo(CLID 8101)
- in DataObject @0x10ee2b0
+StoreGateSvc_Impl   DEBUG Recorded object @0x1877260 with key UnLockedReset of type Foo(CLID 8101)
+ in DataObject @0x18778d0
  object modifiable when retrieved
-StoreGateSvc        DEBUG Recorded object @0x1126430 with key LockedDelete of type Foo(CLID 8101)
- in DataObject @0x1126380
+StoreGateSvc_Impl   DEBUG Recorded object @0x18775b0 with key LockedDelete of type Foo(CLID 8101)
+ in DataObject @0x1877c80
  object not modifiable when retrieved
-StoreGateSvc        DEBUG Recorded object @0x1126730 with key UnLockedDelete of type Foo(CLID 8101)
- in DataObject @0x1126680
+StoreGateSvc_Impl   DEBUG Recorded object @0x1877960 with key UnLockedDelete of type Foo(CLID 8101)
+ in DataObject @0x1878030
  object modifiable when retrieved
-StoreGateSvc        DEBUG Recorded object @0x1126a30 with key Const of type Foo(CLID 8101)
- in DataObject @0x1126980
+StoreGateSvc_Impl   DEBUG Recorded object @0x1877d10 with key Const of type Foo(CLID 8101)
+ in DataObject @0x18783e0
  object not modifiable when retrieved
-StoreGateSvc        DEBUG Recorded object @0x1126d30 with key Const2 of type Foo(CLID 8101)
- in DataObject @0x1126c80
+StoreGateSvc_Impl   DEBUG Recorded object @0x18780c0 with key Const2 of type Foo(CLID 8101)
+ in DataObject @0x1878a90
  object not modifiable when retrieved
 Now we expect to see an error message:
 ----Error Message Starts--->>
-StoreGateSvc      WARNING  setupProxy:: error setting up proxy for key Const and clid 8101
- Pre-existing valid DataProxy @0x1126b60 found in Store for key Const with clid 8101
-StoreGateSvc      WARNING record_impl: Problem setting up the proxy for object @0x1127030
- recorded with key Const of type Foo (CLID 8101) in DataObject @0x1126f80
+StoreGateSvc_Impl WARNING  setupProxy:: error setting up proxy for key Const and clid 8101
+ Pre-existing valid DataProxy @0x18786e0 found in Store for key Const with clid 8101
+StoreGateSvc_Impl WARNING record_impl: Problem setting up the proxy for object @0x1878470
+ recorded with key Const of type Foo (CLID 8101) in DataObject @0x1878e40
 <<---Error Message Ends-------
-StoreGateSvc        DEBUG Recorded object @0x1127110 with key ow of type Foo(CLID 8101)
- in DataObject @0x1127050
+StoreGateSvc_Impl   DEBUG Recorded object @0x1878fe0 with key ow of type Foo(CLID 8101)
+ in DataObject @0x1878f40
  object modifiable when retrieved
-StoreGateSvc        DEBUG overwrite: Recorded object @0x11273f0 with key ow of type Foo(CLID 8101)
- in DataObject @0x1127340
+StoreGateSvc_Impl   DEBUG overwrite: Recorded object @0x1878b20 with key ow of type Foo(CLID 8101)
+ in DataObject @0x1879290
  object modifiable when retrieved
-StoreGateSvc        DEBUG overwrite: Recorded object @0x1127550 with key ow of type Foo(CLID 8101)
- in DataObject @0x1127050
+StoreGateSvc_Impl   DEBUG overwrite: Recorded object @0x1878fe0 with key ow of type Foo(CLID 8101)
+ in DataObject @0x1878f40
  object modifiable when retrieved
-StoreGateSvc        DEBUG Recorded object @0x11273f0 with key ow2 of type Foo(CLID 8101)
- in DataObject @0x11274d0
+StoreGateSvc_Impl   DEBUG Recorded object @0x1878b20 with key ow2 of type Foo(CLID 8101)
+ in DataObject @0x1879290
  object not modifiable when retrieved
-StoreGateSvc        DEBUG overwrite: Recorded object @0x1127720 with key ow2 of type Foo(CLID 8101)
- in DataObject @0x1127670
+StoreGateSvc_Impl   DEBUG overwrite: Recorded object @0x1879320 with key ow2 of type Foo(CLID 8101)
+ in DataObject @0x1879660
  object not modifiable when retrieved
-StoreGateSvc        DEBUG overwrite: Recorded object @0x11273f0 with key ow2 of type Foo(CLID 8101)
- in DataObject @0x1127570
+StoreGateSvc_Impl   DEBUG overwrite: Recorded object @0x1878b20 with key ow2 of type Foo(CLID 8101)
+ in DataObject @0x1879290
  object not modifiable when retrieved
 *** StoreGateSvcClient_test records OK ***
 
@@ -131,473 +136,542 @@ StoreGateSvc        DEBUG overwrite: Recorded object @0x11273f0 with key ow2 of
 *** StoreGateSvcClient_test retrieve BEGINS ***
 Now we expect to see an error message:
 ----Error Message Starts--->>
-StoreGateSvc      WARNING retrieve(default): No valid proxy for default object 
+StoreGateSvc_Impl WARNING retrieve(default): No valid proxy for default object 
  of type Foo(CLID 8101)
 <<---Error Message Ends-------
 Now we expect to see an error message:
 ----Error Message Starts--->>
-StoreGateSvc      WARNING retrieve(default): No valid proxy for default object 
+StoreGateSvc_Impl WARNING retrieve(default): No valid proxy for default object 
  of type NotThere(CLID 8103)
 <<---Error Message Ends-------
 Now we expect to see an error message:
 ----Error Message Starts--->>
-StoreGateSvc      WARNING retrieve(default): No valid proxy for default object  of type Foo(CLID 8101)
+StoreGateSvc_Impl WARNING retrieve(default): No valid proxy for default object  of type Foo(CLID 8101)
  Try to use a const DataHandle 
 <<---Error Message Ends-------
 Now we expect to see an error message:
 ----Error Message Starts--->>
-StoreGateSvc      WARNING retrieve(default): No valid proxy for default object 
+StoreGateSvc_Impl WARNING retrieve(default): No valid proxy for default object 
  of type Foo(CLID 8101)
 <<---Error Message Ends-------
-StoreGateSvc        DEBUG Retrieved const handle to object UnLocked  of type Foo(CLID 8101)
-StoreGateSvc        DEBUG Retrieved const handle to object UnLocked  of type Foo(CLID 8101)
+StoreGateSvc_Impl   DEBUG Retrieved const handle to object UnLocked  of type Foo(CLID 8101)
+StoreGateSvc_Impl   DEBUG Retrieved const handle to object UnLocked  of type Foo(CLID 8101)
 Now we expect to see an error message:
 ----Error Message Starts--->>
-StoreGateSvc      WARNING retrieve(const): No valid proxy for object UnLockedxxx  of type Foo(CLID 8101)
+StoreGateSvc_Impl WARNING retrieve(const): No valid proxy for object UnLockedxxx  of type Foo(CLID 8101)
 <<---Error Message Ends-------
-StoreGateSvc        DEBUG retrieve(range): no object found  of type NotThere(CLID 8103)
-StoreGateSvc        DEBUG retrieve(range): Can't set DataHandle for object range  of type NotThere(CLID 8103)
+StoreGateSvc_Impl   DEBUG retrieve(range): no object found  of type NotThere(CLID 8103)
+StoreGateSvc_Impl   DEBUG retrieve(range): Can't set DataHandle for object range  of type NotThere(CLID 8103)
 *** StoreGateSvcClient_test retrieve OK ***
 
 
 *** StoreGateSvcClient_test tryRetrieve BEGINS ***
 we should see no WARNING message for failed retrieves
-StoreGateSvc        DEBUG Retrieved const handle to object UnLocked  of type Foo(CLID 8101)
-StoreGateSvc        DEBUG Retrieved const handle to object UnLocked  of type Foo(CLID 8101)
+StoreGateSvc_Impl   DEBUG Retrieved const handle to object UnLocked  of type Foo(CLID 8101)
+StoreGateSvc_Impl   DEBUG Retrieved const handle to object UnLocked  of type Foo(CLID 8101)
 *** StoreGateSvcClient_test tryRetrieve OK ***
 
 
 *** StoreGateSvcClient_test symlinks BEGINS ***
 Now we expect to see an error message:
 ----Error Message Starts--->>
-StoreGateSvc      WARNING retrieve(default): No valid proxy for default object 
+StoreGateSvc_Impl WARNING retrieve(default): No valid proxy for default object 
  of type Foo(CLID 8101)
 <<---Error Message Ends-------
 Now we expect to see an error message:
 ----Error Message Starts--->>
-StoreGateSvc      WARNING addSymLink: no target DataProxy found. Sorry, can't link to a non-existing data object
+StoreGateSvc_Impl WARNING addSymLink: no target DataProxy found. Sorry, can't link to a non-existing data object
 <<---Error Message Ends-------
 Now we expect to see an error message:
 ----Error Message Starts--->>
-StoreGateSvc      WARNING addSymLink: no target DataProxy found. Sorry, can't link to a non-existing data object
+StoreGateSvc_Impl WARNING addSymLink: no target DataProxy found. Sorry, can't link to a non-existing data object
 <<---Error Message Ends-------
-StoreGateSvc        DEBUG Retrieved non-const handle to object UnLocked  of type Base(CLID 8100)
+StoreGateSvc_Impl   DEBUG Retrieved non-const handle to object UnLocked  of type Base(CLID 8100)
 Now we expect to see an error message:
 ----Error Message Starts--->>
-StoreGateSvc      WARNING addSymLink: no target DataProxy found. Sorry, can't link to a non-existing data object
+StoreGateSvc_Impl WARNING addSymLink: no target DataProxy found. Sorry, can't link to a non-existing data object
 <<---Error Message Ends-------
-StoreGateSvc        DEBUG retrieve(default): Retrieved const handle to default object 
+StoreGateSvc_Impl   DEBUG retrieve(default): Retrieved const handle to default object 
  of type Base(CLID 8100)
-StoreGateSvc        DEBUG Retrieved const handle to object UnLocked  of type Base(CLID 8100)
+StoreGateSvc_Impl   DEBUG Retrieved const handle to object UnLocked  of type Base(CLID 8100)
 Now we expect to see an error message:
 ----Error Message Starts--->>
-StoreGateSvc      WARNING retrieve(const): No valid proxy for object modSully  of type Base(CLID 8100)
+StoreGateSvc_Impl WARNING retrieve(const): No valid proxy for object modSully  of type Base(CLID 8100)
 <<---Error Message Ends-------
 *** StoreGateSvcClient_test symlinks OK ***
 
 
 *** StoreGateSvcClient_test readPrivateCopy BEGINS ***
-StoreGateSvc        DEBUG Retrieved const handle to object silly  of type Foo(CLID 8101)
-StoreGateSvc      WARNING SGImplSvc::typeless_readPrivateCopy: did not find object of type Foo with key silly
+StoreGateSvc_Impl   DEBUG Retrieved const handle to object silly  of type Foo(CLID 8101)
+StoreGateSvc_Impl WARNING SGImplSvc::typeless_readPrivateCopy: did not find object of type Foo with key silly
 SG::fromStorable  WARNING null input pointer 
-StoreGateSvc        DEBUG Retrieved const handle to object silly  of type Foo(CLID 8101)
+StoreGateSvc_Impl   DEBUG Retrieved const handle to object silly  of type Foo(CLID 8101)
 *** StoreGateSvcClient_test readPrivateCopy OK ***
 *** StoreGateSvcClient_test retrievePrivateCopy BEGINS ***
-StoreGateSvc        DEBUG Retrieved const handle to object silly  of type Foo(CLID 8101)
-StoreGateSvc        DEBUG Retrieved const handle to object silly  of type Foo(CLID 8101)
+StoreGateSvc_Impl   DEBUG Retrieved const handle to object silly  of type Foo(CLID 8101)
+StoreGateSvc_Impl   DEBUG Retrieved const handle to object silly  of type Foo(CLID 8101)
 Now we expect to see an error message:
 ----Error Message Starts--->>
-StoreGateSvc      WARNING retrieve(const): No valid proxy for object silly  of type Foo(CLID 8101)
+StoreGateSvc_Impl WARNING retrieve(const): No valid proxy for object silly  of type Foo(CLID 8101)
 <<---Error Message Ends-------
 *** StoreGateSvcClient_test retrievePrivateCopy OK ***
 *** StoreGateSvcClient_test remove BEGINS ***
 Now we expect to see an error message:
 ----Error Message Starts--->>
-StoreGateSvc      WARNING retrieve(default): No valid proxy for default object  of type Foo(CLID 8101)
+StoreGateSvc_Impl WARNING retrieve(default): No valid proxy for default object  of type Foo(CLID 8101)
  Try to use a const DataHandle 
 <<---Error Message Ends-------
 Now we expect to see an error message:
 ----Error Message Starts--->>
-StoreGateSvc      WARNING retrieve(non-const): No valid proxy for object   of type Foo(CLID 8101) 
+StoreGateSvc_Impl WARNING retrieve(non-const): No valid proxy for object   of type Foo(CLID 8101) 
  Try to use a const DataHandle
 <<---Error Message Ends-------
-StoreGateSvc        DEBUG Recorded object @0x1127370 with key pFooKey of type Foo(CLID 8101)
- in DataObject @0x1127aa0
+StoreGateSvc_Impl   DEBUG Recorded object @0x1875bb0 with key pFooKey of type Foo(CLID 8101)
+ in DataObject @0x1876920
  object modifiable when retrieved
  Now we expect to see an error for invalid proxy >>> 
-StoreGateSvc      WARNING retrieve(non-const): No valid proxy for object pFooKey  of type Foo(CLID 8101) 
+StoreGateSvc_Impl WARNING retrieve(non-const): No valid proxy for object pFooKey  of type Foo(CLID 8101) 
  Try to use a const DataHandle
  end of error >>>>>>>>>>>>> 
-StoreGateSvc        DEBUG Recorded object @0x10ca3b0 with key pFooKey of type Foo(CLID 8101)
- in DataObject @0x1127aa0
+StoreGateSvc_Impl   DEBUG Recorded object @0x1875bb0 with key pFooKey of type Foo(CLID 8101)
+ in DataObject @0x1876920
  object modifiable when retrieved
-StoreGateSvc        DEBUG Recorded object @0x10ca3b0 with key pFooKey of type Foo(CLID 8101)
- in DataObject @0x1127aa0
+StoreGateSvc_Impl   DEBUG Recorded object @0x1875bb0 with key pFooKey of type Foo(CLID 8101)
+ in DataObject @0x1876920
  object modifiable when retrieved
 *** StoreGateSvcClient_test removes OK ***
 
 
 
 *** StoreGateSvcClient_test testCreate BEGINS ***
-StoreGateSvc        DEBUG Recorded object @0x1127370 with key pCreateFooDefault of type Foo(CLID 8101)
- in DataObject @0x1127aa0
+StoreGateSvc_Impl   DEBUG Recorded object @0x1875bb0 with key pCreateFooDefault of type Foo(CLID 8101)
+ in DataObject @0x1876920
  object modifiable when retrieved
-StoreGateSvc        DEBUG Recorded object @0x10ca3b0 with key pCreateFoo1 of type Foo(CLID 8101)
- in DataObject @0x1127dc0
+StoreGateSvc_Impl   DEBUG Recorded object @0x1879320 with key pCreateFoo1 of type Foo(CLID 8101)
+ in DataObject @0x1879fb0
  object modifiable when retrieved
 Now we expect to see an error message:
 ----Error Message Starts--->>
-StoreGateSvc      WARNING  setupProxy:: error setting up proxy for key pCreateFoo1 and clid 8101
- Pre-existing valid DataProxy @0x1127fc0 found in Store for key pCreateFoo1 with clid 8101
-StoreGateSvc      WARNING record_impl: Problem setting up the proxy for object @0x1127d70
- recorded with key pCreateFoo1 of type Foo (CLID 8101) in DataObject @0x1126000
-StoreGateSvc        ERROR create: problem recording created object @0x1127d70 using key pCreateFoo1
+StoreGateSvc_Impl WARNING  setupProxy:: error setting up proxy for key pCreateFoo1 and clid 8101
+ Pre-existing valid DataProxy @0x1879950 found in Store for key pCreateFoo1 with clid 8101
+StoreGateSvc_Impl WARNING record_impl: Problem setting up the proxy for object @0x187a050
+ recorded with key pCreateFoo1 of type Foo (CLID 8101) in DataObject @0x187a280
+StoreGateSvc        ERROR create: problem recording created object @0x187a050 using key pCreateFoo1
 <<---Error Message Ends-------
-StoreGateSvc        DEBUG Retrieved non-const handle to object pCreateFoo1  of type Foo(CLID 8101)
+StoreGateSvc_Impl   DEBUG Retrieved non-const handle to object pCreateFoo1  of type Foo(CLID 8101)
 *** StoreGateSvcClient_test testCreate OK ***
 
 
 *** StoreGateSvcClient_test bind BEGINS ***
-StoreGateSvc        DEBUG Recorded object @0x1127e40 with key fooKey of type Foo(CLID 8101)
- in DataObject @0x11283b0
+StoreGateSvc_Impl   DEBUG Recorded object @0x1878ed0 with key fooKey of type Foo(CLID 8101)
+ in DataObject @0x187a460
  object modifiable when retrieved
-StoreGateSvc        DEBUG  Bound handle 0x7ffdb61b13a0 to proxy 0x1128540
+StoreGateSvc_Impl   DEBUG  Bound handle 0x7ffeb61928a0 to proxy 0x187a5f0
 *** StoreGateSvcClient_test bind OK ***
 
 
 Testing dump: 
  -------->>
 <<<<<<<<<<<<<<<<< Data Store Dump >>>>>>>>>>>>>>> 
-SGImplSvc(StoreGateSvc)::dump():
+SGImplSvc(StoreGateSvc_Impl)::dump():
 Found 1 proxy for ClassID 8100 (Base): 
- flags: (  valid, UNLOCKED,  reset) --- data:  0x1124e50 --- key: UnLocked
+ flags: (  valid, UNLOCKED,  reset) --- data:  0x1876df0 --- key: UnLocked
 Found 17 proxies for ClassID 8101 (Foo): 
- flags: (  valid,   locked,  reset) --- data:  0x1126980 --- key: Const
- flags: (  valid,   locked,  reset) --- data:  0x1126c80 --- key: Const2
- flags: (  valid,   locked,  reset) --- data:  0x102d780 --- key: Locked
- flags: (  valid,   locked, DELETE) --- data:  0x1126380 --- key: LockedDelete
- flags: (  valid,   locked,  reset) --- data:  0x1125c80 --- key: LockedReset
- flags: (  valid, UNLOCKED,  reset) --- data:  0x1124e50 --- key: UnLocked
- flags: (  valid, UNLOCKED, DELETE) --- data:  0x1126680 --- key: UnLockedDelete
- flags: (  valid, UNLOCKED,  reset) --- data:  0x10ee2b0 --- key: UnLockedReset
- flags: (  valid,   locked,  reset) --- data:  0x10e6650 --- key: cpFoo
- flags: (  valid, UNLOCKED,  reset) --- data:  0x11283b0 --- key: fooKey
- flags: (  valid, UNLOCKED, DELETE) --- data:  0x1127050 --- key: ow
- flags: (  valid,   locked, DELETE) --- data:  0x1127570 --- key: ow2
- flags: (  valid, UNLOCKED,  reset) --- data:  0x1127dc0 --- key: pCreateFoo1
- flags: (  valid, UNLOCKED,  reset) --- data:  0x1127aa0 --- key: pCreateFooDefault
- flags: (  valid, UNLOCKED,  reset) --- data:  0x11245b0 --- key: pFoo1
- flags: (  valid, UNLOCKED,  reset) --- data:  0x10f0b50 --- key: pFoo2
+ flags: (  valid,   locked,  reset) --- data:  0x18783e0 --- key: Const
+ flags: (  valid,   locked,  reset) --- data:  0x1878a90 --- key: Const2
+ flags: (  valid,   locked,  reset) --- data:  0x18771d0 --- key: Locked
+ flags: (  valid,   locked, DELETE) --- data:  0x1877c80 --- key: LockedDelete
+ flags: (  valid,   locked,  reset) --- data:  0x1877520 --- key: LockedReset
+ flags: (  valid, UNLOCKED,  reset) --- data:  0x1876df0 --- key: UnLocked
+ flags: (  valid, UNLOCKED, DELETE) --- data:  0x1878030 --- key: UnLockedDelete
+ flags: (  valid, UNLOCKED,  reset) --- data:  0x18778d0 --- key: UnLockedReset
+ flags: (  valid,   locked,  reset) --- data:  0x18761e0 --- key: cpFoo
+ flags: (  valid, UNLOCKED,  reset) --- data:  0x187a460 --- key: fooKey
+ flags: (  valid, UNLOCKED, DELETE) --- data:  0x1878f40 --- key: ow
+ flags: (  valid,   locked, DELETE) --- data:  0x1879290 --- key: ow2
+ flags: (  valid, UNLOCKED,  reset) --- data:  0x1879fb0 --- key: pCreateFoo1
+ flags: (  valid, UNLOCKED,  reset) --- data:  0x1876920 --- key: pCreateFooDefault
+ flags: (  valid, UNLOCKED,  reset) --- data:  0x1875930 --- key: pFoo1
+ flags: (  valid, UNLOCKED,  reset) --- data:  0x17ec190 --- key: pFoo2
  flags: (INVALID, UNLOCKED,  reset) --- data:          0 --- key: silly
 <<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>> 
 
 <<--------
-StoreGateSvc        DEBUG Clearing store with forceRemove=1
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1125180, recorded with key=UnLocked, CLID=8101, containing data object @0x1124e50  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1126b60, recorded with key=Const, CLID=8101, containing data object @0x1126980  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1126e60, recorded with key=Const2, CLID=8101, containing data object @0x1126c80  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1125280, recorded with key=Locked, CLID=8101, containing data object @0x102d780  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1126560, recorded with key=LockedDelete, CLID=8101, containing data object @0x1126380  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1125f00, recorded with key=LockedReset, CLID=8101, containing data object @0x1125c80  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1125180, recorded with key=UnLocked, CLID=8101, containing data object @0x1124e50  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1126860, recorded with key=UnLockedDelete, CLID=8101, containing data object @0x1126680  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x11262b0, recorded with key=UnLockedReset, CLID=8101, containing data object @0x10ee2b0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x10e4e70, recorded with key=cpFoo, CLID=8101, containing data object @0x10e6650  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1128540, recorded with key=fooKey, CLID=8101, containing data object @0x11283b0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1127220, recorded with key=ow, CLID=8101, containing data object @0x1127050  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x11272f0, recorded with key=ow2, CLID=8101, containing data object @0x1127570  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1127fc0, recorded with key=pCreateFoo1, CLID=8101, containing data object @0x1127dc0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1127be0, recorded with key=pCreateFooDefault, CLID=8101, containing data object @0x1127aa0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x11244e0, recorded with key=pFoo1, CLID=8101, containing data object @0x11245b0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1124a50, recorded with key=pFoo2, CLID=8101, containing data object @0x10f0b50  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x10eb590, recorded with key=silly, CLID=8101, containing data object @0  ... -> DONE
-StoreGateSvc        DEBUG Recorded object @0x1125c50 with key d1 of type D1(CLID 8112)
- in DataObject @0x10f23f0
- object modifiable when retrieved
-StoreGateSvc        DEBUG Retrieved non-const handle to object d1  of type B1(CLID 8111)
-0x1122cb0
-0x1122aa0StoreGateSvc
-StoreGateSvc        DEBUG Retrieved non-const handle to object d1Alias  of type D1(CLID 8112)
-StoreGateSvc        DEBUG Retrieved non-const handle to object d1AnotherAlias  of type D1(CLID 8112)
-StoreGateSvc        DEBUG Recorded object @0x1128610 with key d2 of type D1(CLID 8112)
- in DataObject @0x11272a0
- object modifiable when retrieved
-StoreGateSvc        DEBUG Retrieved non-const handle to object d2  of type D1(CLID 8112)
-StoreGateSvc        DEBUG Retrieved non-const handle to object d1Alias  of type D1(CLID 8112)
+StoreGateSvc_Impl   DEBUG Clearing store with forceRemove=1
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1876fd0, recorded with key=UnLocked, CLID=8101, containing data object @0x1876df0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x18786e0, recorded with key=Const, CLID=8101, containing data object @0x18783e0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1878cd0, recorded with key=Const2, CLID=8101, containing data object @0x1878a90  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x18773b0, recorded with key=Locked, CLID=8101, containing data object @0x18771d0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1877ec0, recorded with key=LockedDelete, CLID=8101, containing data object @0x1877c80  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1877760, recorded with key=LockedReset, CLID=8101, containing data object @0x1877520  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1876fd0, recorded with key=UnLocked, CLID=8101, containing data object @0x1876df0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1878270, recorded with key=UnLockedDelete, CLID=8101, containing data object @0x1878030  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1877b10, recorded with key=UnLockedReset, CLID=8101, containing data object @0x18778d0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x17b88c0, recorded with key=cpFoo, CLID=8101, containing data object @0x18761e0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x187a5f0, recorded with key=fooKey, CLID=8101, containing data object @0x187a460  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1879120, recorded with key=ow, CLID=8101, containing data object @0x1878f40  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1879430, recorded with key=ow2, CLID=8101, containing data object @0x1879290  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1879950, recorded with key=pCreateFoo1, CLID=8101, containing data object @0x1879fb0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1879800, recorded with key=pCreateFooDefault, CLID=8101, containing data object @0x1876920  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1875ce0, recorded with key=pFoo1, CLID=8101, containing data object @0x1875930  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x18760a0, recorded with key=pFoo2, CLID=8101, containing data object @0x17ec190  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1876ab0, recorded with key=silly, CLID=8101, containing data object @0  ... -> DONE
+StoreGateSvc_Impl   DEBUG Recorded object @0x1878340 with key d1 of type D1(CLID 8112)
+ in DataObject @0x1876b30
+ object modifiable when retrieved
+StoreGateSvc_Impl   DEBUG Retrieved non-const handle to object d1  of type B1(CLID 8111)
+0x18747e0
+0x1418150StoreGateSvc
+StoreGateSvc_Impl   DEBUG Retrieved non-const handle to object d1Alias  of type D1(CLID 8112)
+StoreGateSvc_Impl   DEBUG Retrieved non-const handle to object d1AnotherAlias  of type D1(CLID 8112)
+StoreGateSvc_Impl   DEBUG Recorded object @0x1878da0 with key d2 of type D1(CLID 8112)
+ in DataObject @0x18791a0
+ object modifiable when retrieved
+StoreGateSvc_Impl   DEBUG Retrieved non-const handle to object d2  of type D1(CLID 8112)
+StoreGateSvc_Impl   DEBUG Retrieved non-const handle to object d1Alias  of type D1(CLID 8112)
 Found key = d1Alias for object D1 in StoreGate 
 Found key = d2 for object D1 in StoreGate 
-StoreGateSvc        DEBUG Retrieved non-const handle to object dd  of type D1(CLID 8112)
-StoreGateSvc        DEBUG Retrieved non-const handle to object dd  of type B1(CLID 8111)
-StoreGateSvc        DEBUG Clearing store with forceRemove=0
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1126f80, recorded with key=d2, CLID=8112, containing data object @0x11272a0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x11244e0, recorded with key=dd, CLID=8112, containing data object @0x11275f0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1126f80, recorded with key=d2, CLID=8112, containing data object @0x11272a0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1126f80, recorded with key=d2, CLID=8112, containing data object @0x11272a0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1124a50, recorded with key=dd, CLID=8112, containing data object @0x10f0b50  ... -> DONE
-StoreGateSvc        DEBUG Retrieved non-const handle to object dd  of type D1(CLID 8112)
-StoreGateSvc        DEBUG Retrieved non-const handle to object dd  of type B1(CLID 8111)
-StoreGateSvc        DEBUG Clearing store with forceRemove=1
+StoreGateSvc_Impl   DEBUG Retrieved non-const handle to object dd  of type D1(CLID 8112)
+StoreGateSvc_Impl   DEBUG Retrieved non-const handle to object dd  of type B1(CLID 8111)
+StoreGateSvc_Impl   DEBUG Clearing store with forceRemove=0
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1875ce0, recorded with key=d2, CLID=8112, containing data object @0x18791a0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879800, recorded with key=dd, CLID=8112, containing data object @0x18795a0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1875ce0, recorded with key=d2, CLID=8112, containing data object @0x18791a0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1875ce0, recorded with key=d2, CLID=8112, containing data object @0x18791a0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x18760a0, recorded with key=dd, CLID=8112, containing data object @0x17ec190  ... -> DONE
+StoreGateSvc_Impl   DEBUG Retrieved non-const handle to object dd  of type D1(CLID 8112)
+StoreGateSvc_Impl   DEBUG Retrieved non-const handle to object dd  of type B1(CLID 8111)
+StoreGateSvc_Impl   DEBUG Clearing store with forceRemove=1
 
 *** StoreGateSvcClient_test transientSwap BEGINS ***
-StoreGateSvc        DEBUG Recorded object @0x10dfb70 with key pSwapFoo1 of type Foo(CLID 8101)
- in DataObject @0x10e27d0
+StoreGateSvc_Impl   DEBUG Recorded object @0x1875bb0 with key pSwapFoo1 of type Foo(CLID 8101)
+ in DataObject @0x187a670
  object modifiable when retrieved
-StoreGateSvc        DEBUG Recorded object @0x1127550 with key pSwapFoo2 of type Foo(CLID 8101)
- in DataObject @0x10f0b50
+StoreGateSvc_Impl   DEBUG Recorded object @0x1865df0 with key pSwapFoo2 of type Foo(CLID 8101)
+ in DataObject @0x1879fb0
  object modifiable when retrieved
-StoreGateSvc        DEBUG Retrieved non-const handle to object pSwapFoo1  of type Foo(CLID 8101)
-StoreGateSvc        DEBUG Retrieved non-const handle to object pSwapFoo2  of type Foo(CLID 8101)
+StoreGateSvc_Impl   DEBUG Retrieved non-const handle to object pSwapFoo1  of type Foo(CLID 8101)
+StoreGateSvc_Impl   DEBUG Retrieved non-const handle to object pSwapFoo2  of type Foo(CLID 8101)
 *** StoreGateSvcClient_test transientSwap OK ***
 
 
 
 *** StoreGateSvcClient_test VersionedKey BEGINS ***
-StoreGateSvc        DEBUG Recorded object @0x1127460 with key aVersObj of type Foo(CLID 8101)
- in DataObject @0x1128250
+StoreGateSvc_Impl   DEBUG Recorded object @0x1879ea0 with key aVersObj of type Foo(CLID 8101)
+ in DataObject @0x1876920
  object modifiable when retrieved
-StoreGateSvc        DEBUG Retrieved non-const handle to object aVersObj  of type Foo(CLID 8101)
-StoreGateSvc        DEBUG Recorded object @0x104d070 with key ;77;aVersObj of type Foo(CLID 8101)
- in DataObject @0x11275c0
+StoreGateSvc_Impl   DEBUG Retrieved non-const handle to object aVersObj  of type Foo(CLID 8101)
+StoreGateSvc_Impl   DEBUG Recorded object @0x1875de0 with key ;77;aVersObj of type Foo(CLID 8101)
+ in DataObject @0x1877b90
  object modifiable when retrieved
-StoreGateSvc        DEBUG Retrieved non-const handle to object ;77;aVersObj  of type Foo(CLID 8101)
-StoreGateSvc        DEBUG Retrieved non-const handle to object aVersObj  of type Foo(CLID 8101)
-StoreGateSvc        DEBUG Retrieved non-const handle to object ;00;aVersObj  of type Foo(CLID 8101)
-StoreGateSvc        DEBUG Recorded object @0x11282a0 with key ;88;aVersObj of type Foo(CLID 8101)
- in DataObject @0x1127000
+StoreGateSvc_Impl   DEBUG Retrieved non-const handle to object ;77;aVersObj  of type Foo(CLID 8101)
+StoreGateSvc_Impl   DEBUG Retrieved non-const handle to object aVersObj  of type Foo(CLID 8101)
+StoreGateSvc_Impl   DEBUG Retrieved non-const handle to object ;00;aVersObj  of type Foo(CLID 8101)
+StoreGateSvc_Impl   DEBUG Recorded object @0x1879b10 with key ;88;aVersObj of type Foo(CLID 8101)
+ in DataObject @0x1877520
  object modifiable when retrieved
-StoreGateSvc        DEBUG Retrieved non-const handle to object ;88;aVersObj  of type Foo(CLID 8101)
+StoreGateSvc_Impl   DEBUG Retrieved non-const handle to object ;88;aVersObj  of type Foo(CLID 8101)
 Now we expect to see an error message:
 ----Error Message Starts--->>
-StoreGateSvc      WARNING  setupProxy:: error setting up proxy for key ;88;aVersObj and clid 8101
- Pre-existing valid DataProxy @0x11279f0 found in Store for key ;88;aVersObj with clid 8101
-StoreGateSvc      WARNING record_impl: Problem setting up the proxy for object @0x1125640
- recorded with key ;88;aVersObj of type Foo (CLID 8101) in DataObject @0x11255b0
+StoreGateSvc_Impl WARNING  setupProxy:: error setting up proxy for key ;88;aVersObj and clid 8101
+ Pre-existing valid DataProxy @0x1879430 found in Store for key ;88;aVersObj with clid 8101
+StoreGateSvc_Impl WARNING record_impl: Problem setting up the proxy for object @0x18796f0
+ recorded with key ;88;aVersObj of type Foo (CLID 8101) in DataObject @0x1877430
 <<---Error Message Ends-------
-StoreGateSvc        DEBUG Recorded object @0x10ca3b0 with key ;66;aVersObj of type Foo(CLID 8101)
- in DataObject @0x1127fd0
+StoreGateSvc_Impl   DEBUG Recorded object @0x1877220 with key ;66;aVersObj of type Foo(CLID 8101)
+ in DataObject @0x18771d0
  object modifiable when retrieved
-StoreGateSvc        DEBUG Retrieved non-const handle to object aVersObj  of type Foo(CLID 8101)
+StoreGateSvc_Impl   DEBUG Retrieved non-const handle to object aVersObj  of type Foo(CLID 8101)
 *** StoreGateSvcClient_test VersionedKey OK ***
 
 
-StoreGateSvc        DEBUG Clearing store with forceRemove=1
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1127be0, recorded with key=aVersObj, CLID=8101, containing data object @0x1128250  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1126e90, recorded with key=;66;aVersObj, CLID=8101, containing data object @0x1127fd0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1124980, recorded with key=;77;aVersObj, CLID=8101, containing data object @0x11275c0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x11279f0, recorded with key=;88;aVersObj, CLID=8101, containing data object @0x1127000  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1126e90, recorded with key=;66;aVersObj, CLID=8101, containing data object @0x1127fd0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x11244e0, recorded with key=pSwapFoo1, CLID=8101, containing data object @0x10f0b50  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1124a50, recorded with key=pSwapFoo2, CLID=8101, containing data object @0x10e27d0  ... -> DONE
+StoreGateSvc_Impl   DEBUG Clearing store with forceRemove=1
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1875ce0, recorded with key=aVersObj, CLID=8101, containing data object @0x1876920  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1879120, recorded with key=;66;aVersObj, CLID=8101, containing data object @0x18771d0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1879950, recorded with key=;77;aVersObj, CLID=8101, containing data object @0x1877b90  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1879430, recorded with key=;88;aVersObj, CLID=8101, containing data object @0x1877520  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1879120, recorded with key=;66;aVersObj, CLID=8101, containing data object @0x18771d0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1879800, recorded with key=pSwapFoo1, CLID=8101, containing data object @0x1879fb0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x18760a0, recorded with key=pSwapFoo2, CLID=8101, containing data object @0x187a670  ... -> DONE
 *** test_DVL_conversions
-StoreGateSvc        DEBUG Recorded object @0x1125d80 with key contd of type CV(CLID 82734625)
- in DataObject @0x1124a50
- object modifiable when retrieved
-StoreGateSvc        DEBUG Retrieved non-const handle to object contd  of type DataVector<C>(CLID 82734623)
-StoreGateSvc        DEBUG Retrieved non-const handle to object contd  of type DataVector<B>(CLID 82734621)
-StoreGateSvc        DEBUG Retrieved non-const handle to object contd  of type DataVector<A>(CLID 82734619)
-StoreGateSvc        DEBUG Retrieved non-const handle to object contd  of type DataVector<A>(CLID 82734619)
-StoreGateSvc        DEBUG Recorded object @0x1126050 with key contd of type CL(CLID 82734626)
- in DataObject @0x1126e90
- object modifiable when retrieved
-StoreGateSvc        DEBUG Retrieved non-const handle to object contd  of type DataList<C>(CLID 82734624)
-StoreGateSvc        DEBUG Retrieved non-const handle to object contd  of type DataList<B>(CLID 82734622)
-StoreGateSvc        DEBUG Retrieved non-const handle to object contd  of type DataList<A>(CLID 82734620)
-StoreGateSvc        DEBUG Retrieved non-const handle to object contd  of type DataList<A>(CLID 82734620)
+StoreGateSvc_Impl   DEBUG Recorded object @0x187acb0 with key contd of type CV(CLID 82734625)
+ in DataObject @0x18760a0
+ object modifiable when retrieved
+StoreGateSvc_Impl   DEBUG Retrieved non-const handle to object contd  of type DataVector<C>(CLID 82734623)
+StoreGateSvc_Impl   DEBUG Retrieved non-const handle to object contd  of type DataVector<B>(CLID 82734621)
+StoreGateSvc_Impl   DEBUG Retrieved non-const handle to object contd  of type DataVector<A>(CLID 82734619)
+StoreGateSvc_Impl   DEBUG Retrieved non-const handle to object contd  of type DataVector<A>(CLID 82734619)
+StoreGateSvc_Impl   DEBUG Recorded object @0x1878ae0 with key contd of type CL(CLID 82734626)
+ in DataObject @0x1879120
+ object modifiable when retrieved
+StoreGateSvc_Impl   DEBUG Retrieved non-const handle to object contd  of type DataList<C>(CLID 82734624)
+StoreGateSvc_Impl   DEBUG Retrieved non-const handle to object contd  of type DataList<B>(CLID 82734622)
+StoreGateSvc_Impl   DEBUG Retrieved non-const handle to object contd  of type DataList<A>(CLID 82734620)
+StoreGateSvc_Impl   DEBUG Retrieved non-const handle to object contd  of type DataList<A>(CLID 82734620)
 *** test_const_DVL
-StoreGateSvc        DEBUG Recorded object @0x1125090 with key dvl of type CV(CLID 82734625)
- in DataObject @0x1124980
+StoreGateSvc_Impl   DEBUG Recorded object @0x187b580 with key dvl of type CV(CLID 82734625)
+ in DataObject @0x1879950
  object not modifiable when retrieved
-StoreGateSvc      WARNING retrieve(non-const): No valid proxy for object dvl  of type CV(CLID 82734625) 
+StoreGateSvc_Impl WARNING retrieve(non-const): No valid proxy for object dvl  of type CV(CLID 82734625) 
  Try to use a const DataHandle
-StoreGateSvc        DEBUG Retrieved const handle to object dvl  of type CV(CLID 82734625)
-StoreGateSvc        DEBUG Recorded object @0x1128690 with key dvl2 of type CV(CLID 82734625)
- in DataObject @0x1128590
+StoreGateSvc_Impl   DEBUG Retrieved const handle to object dvl  of type CV(CLID 82734625)
+StoreGateSvc_Impl   DEBUG Recorded object @0x187bbb0 with key dvl2 of type CV(CLID 82734625)
+ in DataObject @0x187a5f0
  object not modifiable when retrieved
-StoreGateSvc        DEBUG Retrieved const handle to object dvl2  of type CV(CLID 82734625)
-StoreGateSvc        DEBUG Recorded object @0x1128a20 with key dvl of type CL(CLID 82734626)
- in DataObject @0x1128e60
+StoreGateSvc_Impl   DEBUG Retrieved const handle to object dvl2  of type CV(CLID 82734625)
+StoreGateSvc_Impl   DEBUG Recorded object @0x1878430 with key dvl of type CL(CLID 82734626)
+ in DataObject @0x1877b10
  object not modifiable when retrieved
-StoreGateSvc      WARNING retrieve(non-const): No valid proxy for object dvl  of type CL(CLID 82734626) 
+StoreGateSvc_Impl WARNING retrieve(non-const): No valid proxy for object dvl  of type CL(CLID 82734626) 
  Try to use a const DataHandle
-StoreGateSvc        DEBUG Retrieved const handle to object dvl  of type CL(CLID 82734626)
-StoreGateSvc        DEBUG Recorded object @0x1129350 with key dvl2 of type CL(CLID 82734626)
- in DataObject @0x11293d0
+StoreGateSvc_Impl   DEBUG Retrieved const handle to object dvl  of type CL(CLID 82734626)
+StoreGateSvc_Impl   DEBUG Recorded object @0x180f230 with key dvl2 of type CL(CLID 82734626)
+ in DataObject @0x1876fd0
  object not modifiable when retrieved
-StoreGateSvc        DEBUG Retrieved const handle to object dvl2  of type CL(CLID 82734626)
+StoreGateSvc_Impl   DEBUG Retrieved const handle to object dvl2  of type CL(CLID 82734626)
 *** test_copy_conversions
-StoreGateSvc        DEBUG Recorded object @0x11299f0 with key x of type Athena_test::X(CLID 82734627)
- in DataObject @0x1129960
+StoreGateSvc_Impl   DEBUG Recorded object @0x187cb60 with key x of type Athena_test::X(CLID 82734627)
+ in DataObject @0x187cb10
  object modifiable when retrieved
-StoreGateSvc        DEBUG Retrieved non-const handle to object x  of type Athena_test::Y(CLID 82734628)
+StoreGateSvc_Impl   DEBUG Retrieved non-const handle to object x  of type Athena_test::Y(CLID 82734628)
 SG::DataProxy_castWARNING Request for a non-const object via copying conversion; requested CLID = 82734628, proxy primary ID is 82734627
-StoreGateSvc        DEBUG Retrieved const handle to object x  of type Athena_test::Y(CLID 82734628)
-StoreGateSvc      WARNING retrieve(const): No valid proxy for object x  of type Athena_test::A(CLID 82734609)
+StoreGateSvc_Impl   DEBUG Retrieved const handle to object x  of type Athena_test::Y(CLID 82734628)
+StoreGateSvc_Impl WARNING retrieve(const): No valid proxy for object x  of type Athena_test::A(CLID 82734609)
 
 *** StoreGateSvcClient_test Keys BEGINS ***
-StoreGateSvc        DEBUG Clearing store with forceRemove=0
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x11244e0, recorded with key=contd, CLID=82734625, containing data object @0x1124a50  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x11279f0, recorded with key=contd, CLID=82734626, containing data object @0x1126e90  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x11244e0, recorded with key=contd, CLID=82734625, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1127be0, recorded with key=dvl, CLID=82734625, containing data object @0x1124980  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1128610, recorded with key=dvl2, CLID=82734625, containing data object @0x1128590  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x11279f0, recorded with key=contd, CLID=82734626, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1129000, recorded with key=dvl, CLID=82734626, containing data object @0x1128e60  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1129590, recorded with key=dvl2, CLID=82734626, containing data object @0x11293d0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x11244e0, recorded with key=contd, CLID=82734625, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1127be0, recorded with key=dvl, CLID=82734625, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1128610, recorded with key=dvl2, CLID=82734625, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x11279f0, recorded with key=contd, CLID=82734626, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1129000, recorded with key=dvl, CLID=82734626, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1129590, recorded with key=dvl2, CLID=82734626, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x11244e0, recorded with key=contd, CLID=82734625, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1127be0, recorded with key=dvl, CLID=82734625, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1128610, recorded with key=dvl2, CLID=82734625, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x11279f0, recorded with key=contd, CLID=82734626, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1129000, recorded with key=dvl, CLID=82734626, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1129590, recorded with key=dvl2, CLID=82734626, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1129b50, recorded with key=x, CLID=82734627, containing data object @0x1129960  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1129b50, recorded with key=x, CLID=82734627, containing data object @0  ... -> DONE
-StoreGateSvc        DEBUG Recorded object @0x11299f0 with key LockReset of type Foo(CLID 8101)
- in DataObject @0x1129960
+StoreGateSvc_Impl   DEBUG Clearing store with forceRemove=0
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879800, recorded with key=contd, CLID=82734625, containing data object @0x18760a0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879430, recorded with key=contd, CLID=82734626, containing data object @0x1879120  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879800, recorded with key=contd, CLID=82734625, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1875ce0, recorded with key=dvl, CLID=82734625, containing data object @0x1879950  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x17b88c0, recorded with key=dvl2, CLID=82734625, containing data object @0x187a5f0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879430, recorded with key=contd, CLID=82734626, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1878270, recorded with key=dvl, CLID=82734626, containing data object @0x1877b10  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1877760, recorded with key=dvl2, CLID=82734626, containing data object @0x1876fd0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879800, recorded with key=contd, CLID=82734625, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1875ce0, recorded with key=dvl, CLID=82734625, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x17b88c0, recorded with key=dvl2, CLID=82734625, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879430, recorded with key=contd, CLID=82734626, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1878270, recorded with key=dvl, CLID=82734626, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1877760, recorded with key=dvl2, CLID=82734626, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879800, recorded with key=contd, CLID=82734625, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1875ce0, recorded with key=dvl, CLID=82734625, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x17b88c0, recorded with key=dvl2, CLID=82734625, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879430, recorded with key=contd, CLID=82734626, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1878270, recorded with key=dvl, CLID=82734626, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1877760, recorded with key=dvl2, CLID=82734626, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1877ec0, recorded with key=x, CLID=82734627, containing data object @0x187cb10  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1877ec0, recorded with key=x, CLID=82734627, containing data object @0  ... -> DONE
+StoreGateSvc_Impl   DEBUG Recorded object @0x187cfb0 with key LockReset of type Foo(CLID 8101)
+ in DataObject @0x187cb10
  object not modifiable when retrieved
-StoreGateSvc        DEBUG Recorded object @0x1129940 with key UnLockReset of type Foo(CLID 8101)
- in DataObject @0x1128a80
+StoreGateSvc_Impl   DEBUG Recorded object @0x187caf0 with key UnLockReset of type Foo(CLID 8101)
+ in DataObject @0x187bec0
  object modifiable when retrieved
-StoreGateSvc        DEBUG Recorded object @0x1129870 with key LockDelete of type Foo(CLID 8101)
- in DataObject @0x1126af0
+StoreGateSvc_Impl   DEBUG Recorded object @0x187cb60 with key LockDelete of type Foo(CLID 8101)
+ in DataObject @0x187ae50
  object not modifiable when retrieved
-StoreGateSvc        DEBUG Recorded object @0x1129830 with key UnLockDelete of type Foo(CLID 8101)
- in DataObject @0x112a020
- object modifiable when retrieved
-StoreGateSvc        DEBUG Clearing store with forceRemove=0
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1128590, recorded with key=LockDelete, CLID=8101, containing data object @0x1126af0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x11293d0, recorded with key=LockReset, CLID=8101, containing data object @0x1129960  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1124980, recorded with key=UnLockDelete, CLID=8101, containing data object @0x112a020  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1128e60, recorded with key=UnLockReset, CLID=8101, containing data object @0x1128a80  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1124980, recorded with key=UnLockDelete, CLID=8101, containing data object @0x112a020  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x11244e0, recorded with key=contd, CLID=82734625, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x11279f0, recorded with key=contd, CLID=82734626, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x11244e0, recorded with key=contd, CLID=82734625, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1127be0, recorded with key=dvl, CLID=82734625, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1128610, recorded with key=dvl2, CLID=82734625, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x11279f0, recorded with key=contd, CLID=82734626, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1129000, recorded with key=dvl, CLID=82734626, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1129590, recorded with key=dvl2, CLID=82734626, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x11244e0, recorded with key=contd, CLID=82734625, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1127be0, recorded with key=dvl, CLID=82734625, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1128610, recorded with key=dvl2, CLID=82734625, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x11279f0, recorded with key=contd, CLID=82734626, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1129000, recorded with key=dvl, CLID=82734626, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1129590, recorded with key=dvl2, CLID=82734626, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x11244e0, recorded with key=contd, CLID=82734625, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1127be0, recorded with key=dvl, CLID=82734625, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1128610, recorded with key=dvl2, CLID=82734625, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x11279f0, recorded with key=contd, CLID=82734626, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1129000, recorded with key=dvl, CLID=82734626, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1129590, recorded with key=dvl2, CLID=82734626, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1129b50, recorded with key=x, CLID=82734627, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1129b50, recorded with key=x, CLID=82734627, containing data object @0  ... -> DONE
-StoreGateSvc        DEBUG Clearing store with forceRemove=1
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x11293d0, recorded with key=LockReset, CLID=8101, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1128e60, recorded with key=UnLockReset, CLID=8101, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x11244e0, recorded with key=contd, CLID=82734625, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x11279f0, recorded with key=contd, CLID=82734626, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x11244e0, recorded with key=contd, CLID=82734625, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1127be0, recorded with key=dvl, CLID=82734625, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1128610, recorded with key=dvl2, CLID=82734625, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x11279f0, recorded with key=contd, CLID=82734626, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1129000, recorded with key=dvl, CLID=82734626, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1129590, recorded with key=dvl2, CLID=82734626, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x11244e0, recorded with key=contd, CLID=82734625, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1127be0, recorded with key=dvl, CLID=82734625, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1128610, recorded with key=dvl2, CLID=82734625, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x11279f0, recorded with key=contd, CLID=82734626, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1129000, recorded with key=dvl, CLID=82734626, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1129590, recorded with key=dvl2, CLID=82734626, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x11244e0, recorded with key=contd, CLID=82734625, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1127be0, recorded with key=dvl, CLID=82734625, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1128610, recorded with key=dvl2, CLID=82734625, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x11279f0, recorded with key=contd, CLID=82734626, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1129000, recorded with key=dvl, CLID=82734626, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1129590, recorded with key=dvl2, CLID=82734626, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1129b50, recorded with key=x, CLID=82734627, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1129b50, recorded with key=x, CLID=82734627, containing data object @0  ... -> DONE
-StoreGateSvc        DEBUG Recorded object @0x11299d0 with key LockReset of type Foo(CLID 8101)
- in DataObject @0x1129df0
+StoreGateSvc_Impl   DEBUG Recorded object @0x187ca00 with key UnLockDelete of type Foo(CLID 8101)
+ in DataObject @0x187acb0
+ object modifiable when retrieved
+StoreGateSvc_Impl   DEBUG Clearing store with forceRemove=0
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x187a5f0, recorded with key=LockDelete, CLID=8101, containing data object @0x187ae50  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1876fd0, recorded with key=LockReset, CLID=8101, containing data object @0x187cb10  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879950, recorded with key=UnLockDelete, CLID=8101, containing data object @0x187acb0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1877b10, recorded with key=UnLockReset, CLID=8101, containing data object @0x187bec0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879950, recorded with key=UnLockDelete, CLID=8101, containing data object @0x187acb0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879800, recorded with key=contd, CLID=82734625, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879430, recorded with key=contd, CLID=82734626, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879800, recorded with key=contd, CLID=82734625, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1875ce0, recorded with key=dvl, CLID=82734625, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x17b88c0, recorded with key=dvl2, CLID=82734625, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879430, recorded with key=contd, CLID=82734626, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1878270, recorded with key=dvl, CLID=82734626, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1877760, recorded with key=dvl2, CLID=82734626, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879800, recorded with key=contd, CLID=82734625, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1875ce0, recorded with key=dvl, CLID=82734625, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x17b88c0, recorded with key=dvl2, CLID=82734625, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879430, recorded with key=contd, CLID=82734626, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1878270, recorded with key=dvl, CLID=82734626, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1877760, recorded with key=dvl2, CLID=82734626, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879800, recorded with key=contd, CLID=82734625, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1875ce0, recorded with key=dvl, CLID=82734625, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x17b88c0, recorded with key=dvl2, CLID=82734625, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879430, recorded with key=contd, CLID=82734626, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1878270, recorded with key=dvl, CLID=82734626, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1877760, recorded with key=dvl2, CLID=82734626, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1877ec0, recorded with key=x, CLID=82734627, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1877ec0, recorded with key=x, CLID=82734627, containing data object @0  ... -> DONE
+StoreGateSvc_Impl   DEBUG Clearing store with forceRemove=1
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1876fd0, recorded with key=LockReset, CLID=8101, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1877b10, recorded with key=UnLockReset, CLID=8101, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1879800, recorded with key=contd, CLID=82734625, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1879430, recorded with key=contd, CLID=82734626, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1879800, recorded with key=contd, CLID=82734625, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1875ce0, recorded with key=dvl, CLID=82734625, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x17b88c0, recorded with key=dvl2, CLID=82734625, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1879430, recorded with key=contd, CLID=82734626, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1878270, recorded with key=dvl, CLID=82734626, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1877760, recorded with key=dvl2, CLID=82734626, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1879800, recorded with key=contd, CLID=82734625, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1875ce0, recorded with key=dvl, CLID=82734625, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x17b88c0, recorded with key=dvl2, CLID=82734625, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1879430, recorded with key=contd, CLID=82734626, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1878270, recorded with key=dvl, CLID=82734626, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1877760, recorded with key=dvl2, CLID=82734626, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1879800, recorded with key=contd, CLID=82734625, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1875ce0, recorded with key=dvl, CLID=82734625, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x17b88c0, recorded with key=dvl2, CLID=82734625, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1879430, recorded with key=contd, CLID=82734626, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1878270, recorded with key=dvl, CLID=82734626, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1877760, recorded with key=dvl2, CLID=82734626, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1877ec0, recorded with key=x, CLID=82734627, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1877ec0, recorded with key=x, CLID=82734627, containing data object @0  ... -> DONE
+StoreGateSvc_Impl   DEBUG Recorded object @0x187ce10 with key LockReset of type Foo(CLID 8101)
+ in DataObject @0x187ced0
  object not modifiable when retrieved
-StoreGateSvc        DEBUG Recorded object @0x1125640 with key UnLockReset of type Foo(CLID 8101)
- in DataObject @0x1129450
+StoreGateSvc_Impl   DEBUG Recorded object @0x187cb80 with key UnLockReset of type Foo(CLID 8101)
+ in DataObject @0x18793e0
  object modifiable when retrieved
-StoreGateSvc        DEBUG Recorded object @0x11251f0 with key LockDelete of type Foo(CLID 8101)
- in DataObject @0x11275c0
+StoreGateSvc_Impl   DEBUG Recorded object @0x1877cd0 with key LockDelete of type Foo(CLID 8101)
+ in DataObject @0x1876df0
  object not modifiable when retrieved
-StoreGateSvc        DEBUG Recorded object @0x11293b0 with key UnLockDelete of type Foo(CLID 8101)
- in DataObject @0x10e27d0
+StoreGateSvc_Impl   DEBUG Recorded object @0x1407290 with key UnLockDelete of type Foo(CLID 8101)
+ in DataObject @0x18783e0
  object modifiable when retrieved
-StoreGateSvc        DEBUG Clearing store with forceRemove=0
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1129000, recorded with key=LockDelete, CLID=8101, containing data object @0x11275c0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1129b50, recorded with key=LockReset, CLID=8101, containing data object @0x1129df0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x11279f0, recorded with key=UnLockDelete, CLID=8101, containing data object @0x10e27d0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1129590, recorded with key=UnLockReset, CLID=8101, containing data object @0x1129450  ... -> DONE
-StoreGateSvc        DEBUG Clearing store with forceRemove=1
+StoreGateSvc_Impl   DEBUG Clearing store with forceRemove=0
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1878270, recorded with key=LockDelete, CLID=8101, containing data object @0x1876df0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1877ec0, recorded with key=LockReset, CLID=8101, containing data object @0x187ced0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879430, recorded with key=UnLockDelete, CLID=8101, containing data object @0x18783e0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1877760, recorded with key=UnLockReset, CLID=8101, containing data object @0x18793e0  ... -> DONE
+StoreGateSvc_Impl   DEBUG Clearing store with forceRemove=1
 
 *** StoreGateSvcClient_test Keys ENDS ***
 
 *** StoreGateSvcClient_test retrieveAux BEGINS ***
-StoreGateSvc        DEBUG Recorded object @0x1129710 with key BVec of type TestVector<BX>(CLID 82735621)
- in DataObject @0x1128b10
+StoreGateSvc_Impl   DEBUG Recorded object @0x187c800 with key BVec of type TestVector<BX>(CLID 82735621)
+ in DataObject @0x187a110
  object modifiable when retrieved
-StoreGateSvc        DEBUG Recorded object @0x1129e40 with key BVecAux. of type TestAuxStore(CLID 125030194)
- in DataObject @0x10e27d0
+StoreGateSvc_Impl   DEBUG Recorded object @0x187d020 with key BVecAux. of type TestAuxStore(CLID 125030194)
+ in DataObject @0x18783e0
  object modifiable when retrieved
-StoreGateSvc        DEBUG Recorded object @0x1124480 with key CVec of type TestVector<BX>(CLID 82735621)
- in DataObject @0x11272d0
+StoreGateSvc_Impl   DEBUG Recorded object @0x18775f0 with key CVec of type TestVector<BX>(CLID 82735621)
+ in DataObject @0x1876c20
  object not modifiable when retrieved
-StoreGateSvc        DEBUG Recorded object @0x1125f10 with key CVecAux. of type TestAuxStore(CLID 125030194)
- in DataObject @0x1126000
+StoreGateSvc_Impl   DEBUG Recorded object @0x187a800 with key CVecAux. of type TestAuxStore(CLID 125030194)
+ in DataObject @0x1876830
  object not modifiable when retrieved
-StoreGateSvc        DEBUG Recorded object @0x11284f0 with key ErrorVec of type TestVector<BX>(CLID 82735621)
- in DataObject @0x10f0b50
- object modifiable when retrieved
-StoreGateSvc        DEBUG Recorded object @0x1127ac0 with key BBVec of type TestVector<BBX>(CLID 125040193)
- in DataObject @0x11255b0
- object modifiable when retrieved
-StoreGateSvc        DEBUG Recorded object @0x1127240 with key BBVecAux. of type TestAuxStore(CLID 125030194)
- in DataObject @0x1126fb0
- object modifiable when retrieved
-StoreGateSvc      VERBOSE called associateAux_impl non const for key BVec
-StoreGateSvc        DEBUG Retrieved non-const handle to object BVec  of type TestVector<BX>(CLID 82735621)
-StoreGateSvc      VERBOSE called associateAux_impl non const for key BVec
-StoreGateSvc        DEBUG Retrieved non-const handle to object BVec  of type TestVector<BX>(CLID 82735621)
-StoreGateSvc      VERBOSE called associateAux_impl const for key CVec
-StoreGateSvc        DEBUG Retrieved const handle to object CVec  of type TestVector<BX>(CLID 82735621)
-StoreGateSvc      VERBOSE called associateAux_impl const for key ErrorVec
-StoreGateSvc        DEBUG Retrieved const handle to object ErrorVec  of type TestVector<BX>(CLID 82735621)
+StoreGateSvc_Impl   DEBUG Recorded object @0x187b960 with key ErrorVec of type TestVector<BX>(CLID 82735621)
+ in DataObject @0x187a280
+ object modifiable when retrieved
+StoreGateSvc_Impl   DEBUG Recorded object @0x1878680 with key BBVec of type TestVector<BBX>(CLID 125040193)
+ in DataObject @0x1866600
+ object modifiable when retrieved
+StoreGateSvc_Impl   DEBUG Recorded object @0x187d740 with key BBVecAux. of type TestAuxStore(CLID 125030194)
+ in DataObject @0x1876d50
+ object modifiable when retrieved
+StoreGateSvc_Impl VERBOSE called associateAux_impl non const for key BVec
+StoreGateSvc_Impl   DEBUG Retrieved non-const handle to object BVec  of type TestVector<BX>(CLID 82735621)
+StoreGateSvc_Impl VERBOSE called associateAux_impl non const for key BVec
+StoreGateSvc_Impl   DEBUG Retrieved non-const handle to object BVec  of type TestVector<BX>(CLID 82735621)
+StoreGateSvc_Impl VERBOSE called associateAux_impl const for key CVec
+StoreGateSvc_Impl   DEBUG Retrieved const handle to object CVec  of type TestVector<BX>(CLID 82735621)
+StoreGateSvc_Impl VERBOSE called associateAux_impl const for key ErrorVec
+StoreGateSvc_Impl   DEBUG Retrieved const handle to object ErrorVec  of type TestVector<BX>(CLID 82735621)
 Now we expect to see an error message:
 ----Error Message Starts--->>
-StoreGateSvc      VERBOSE called associateAux_impl const for key ErrorVec
-StoreGateSvc        DEBUG Retrieved const handle to object ErrorVec  of type TestVector<BX>(CLID 82735621)
-StoreGateSvc      VERBOSE called associateAux_impl const for key ErrorVec
-StoreGateSvc      WARNING associateAux const: Could not associate AuxStore of type SG::IConstAuxStore
+StoreGateSvc_Impl VERBOSE called associateAux_impl const for key ErrorVec
+StoreGateSvc_Impl   DEBUG Retrieved const handle to object ErrorVec  of type TestVector<BX>(CLID 82735621)
+StoreGateSvc_Impl VERBOSE called associateAux_impl const for key ErrorVec
+StoreGateSvc_Impl WARNING associateAux const: Could not associate AuxStore of type SG::IConstAuxStore
  to object of type TestVector<BX>(CLID 82735621) with key ErrorVec
-StoreGateSvc      WARNING 
+StoreGateSvc_Impl WARNING 
 <<---Error Message Ends-------
-StoreGateSvc        DEBUG Recorded object @0x1124620 with key BStand of type BX(CLID 82835621)
- in DataObject @0x11292b0
+StoreGateSvc_Impl   DEBUG Recorded object @0x1879e80 with key BStand of type BX(CLID 82835621)
+ in DataObject @0x187d280
  object modifiable when retrieved
-StoreGateSvc        DEBUG Recorded object @0x1129350 with key BStandAux. of type TestAuxStore(CLID 125030194)
- in DataObject @0x112a020
+StoreGateSvc_Impl   DEBUG Recorded object @0x187d930 with key BStandAux. of type TestAuxStore(CLID 125030194)
+ in DataObject @0x187bec0
  object modifiable when retrieved
-StoreGateSvc      VERBOSE called associateAux_impl non const for key BStand
-StoreGateSvc        DEBUG Retrieved non-const handle to object BStand  of type BX(CLID 82835621)
+StoreGateSvc_Impl VERBOSE called associateAux_impl non const for key BStand
+StoreGateSvc_Impl   DEBUG Retrieved non-const handle to object BStand  of type BX(CLID 82835621)
 *** StoreGateSvcClient_test retrieveAux OK ***
 
 
 
 *** StoreGateSvcClient_test testBoundReset BEGINS ***
-StoreGateSvc        DEBUG overwrite: Recorded object @0x104d070 with key testBoundReset of type int(CLID 244260744)
- in DataObject @0x11267a0
- object modifiable when retrieved
+StoreGateSvc_Impl VERBOSE committing dataObj "('TestAuxStore','BBVecAux.')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('TestVector<BBX>','BBVec')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('TestVector<BX>','CVec')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('TestAuxStore','BVecAux.')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('Foo','UnLockDelete')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('Foo','LockDelete')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('Foo','UnLockReset')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('TestAuxStore','BStandAux.')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('Foo','LockReset')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('Athena_test::X','x')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('CL','dvl2')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('DataList<B>','dvl2')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('TestAuxStore','CVecAux.')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('DataList<C>','dvl2')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('CL','dvl')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('B1','d1')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('DataList<C>','dvl')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('Foo','UnLockedDelete')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('Foo','fooKey')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('Foo',';66;aVersObj')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('CV','dvl')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('D1','d1Alias')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('Foo','pFooKey')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('Foo','LockedDelete')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('DataVector<C>','dvl')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('Foo','Const2')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('Foo','pCreateFooDefault')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('TestVector<BX>','ErrorVec')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('DataList<C>','contd')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('Foo','Const')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('DataList<A>','contd')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('Foo','LockedReset')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('Foo','pFoo2')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('D1','d1')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('Foo','cpFoo')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('Foo','Locked')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('Foo','UnLockedReset')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('Foo','pFoo1')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('Foo','silly')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('CV','contd')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('Foo','ow2')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('DataVector<B>','dvl2')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('Foo','UnLocked')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('D1','d1AnotherAlias')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('Foo',';00;aVersObj')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('DataList<B>','dvl')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('D1','d2')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('Foo','pSwapFoo2')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('DataVector<B>','dvl')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('CV','dvl2')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('Foo','pCreateFoo1')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('Foo','aVersObj')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('Foo','pSwapFoo1')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('Base','UnLocked')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('Foo','ow')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('Foo',';77;aVersObj')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('DataVector<A>','contd')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('Foo',';88;aVersObj')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('TestVector<BX>','BVec')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('DataVector<C>','contd')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('DataVector<B>','contd')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('DataList<B>','contd')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('CL','contd')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('BX','BStand')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('Foo','fooAlias')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('B1','d2')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('DataVector<C>','dvl2')"
+StoreGateSvc_Impl VERBOSE committing dataObj "('int','testBoundReset')"
+StoreGateSvc_Impl   DEBUG overwrite: Recorded object @0x187ca00 with key testBoundReset of type int(CLID 244260744)
+ in DataObject @0x187a9b0
+ object modifiable when retrieved
+StoreGateSvc_Impl VERBOSE committing dataObj "('int','testBoundReset')"
 
 *** StoreGateSvcClient_test testBoundReset OK ***
 
@@ -605,42 +679,47 @@ StoreGateSvc        DEBUG overwrite: Recorded object @0x104d070 with key testBou
 
 *** StoreGateSvcClient_test testRecordObject BEGINS ***
 >>> test duplicate record1
-StoreGateSvc      WARNING  setupProxy:: error setting up proxy for key obj101 and clid 8101
- Pre-existing valid DataProxy @0x1128570 found in Store for key obj101 with clid 8101
-StoreGateSvc      WARNING record_impl: Problem setting up the proxy for object @0x10e7f60
- recorded with key obj101 of type Foo (CLID 8101) in DataObject @0x1126c10
+StoreGateSvc_Impl WARNING  setupProxy:: error setting up proxy for key obj101 and clid 8101
+ Pre-existing valid DataProxy @0x1879950 found in Store for key obj101 with clid 8101
+StoreGateSvc_Impl WARNING record_impl: Problem setting up the proxy for object @0x187cad0
+ recorded with key obj101 of type Foo (CLID 8101) in DataObject @0x1880020
 <<< test duplicate record1
 >>> test duplicate record2
-StoreGateSvc      WARNING record_impl: failed for key=obj999, type Foo (CLID 8101)
- object @0x1127460 already in store with key=obj101. Will not record a duplicate! 
+StoreGateSvc_Impl WARNING record_impl: failed for key=obj999, type Foo (CLID 8101)
+ object @0x1879ea0 already in store with key=obj101. Will not record a duplicate! 
 <<< test duplicate record2
-StoreGateSvc        DEBUG Clearing store with forceRemove=0
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1128570, recorded with key=obj101, CLID=8101, containing data object @0x1124980  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1125090, recorded with key=obj102, CLID=8101, containing data object @0x1125dd0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1128570, recorded with key=obj101, CLID=8101, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1129590, recorded with key=BVec, CLID=82735621, containing data object @0x1128b10  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1129b50, recorded with key=CVec, CLID=82735621, containing data object @0x11272d0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1128610, recorded with key=ErrorVec, CLID=82735621, containing data object @0x10f0b50  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1129ea0, recorded with key=BStand, CLID=82835621, containing data object @0x11292b0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x11244e0, recorded with key=BBVecAux., CLID=125030194, containing data object @0x1126fb0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x11293d0, recorded with key=BStandAux., CLID=125030194, containing data object @0x112a020  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x11279f0, recorded with key=BVecAux., CLID=125030194, containing data object @0x10e27d0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1129000, recorded with key=CVecAux., CLID=125030194, containing data object @0x1126000  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1127be0, recorded with key=BBVec, CLID=125040193, containing data object @0x11255b0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1127140, recorded with key=testBoundReset, CLID=244260744, containing data object @0x11267a0  ... -> DONE
-StoreGateSvc        DEBUG Clearing store with forceRemove=0
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1128570, recorded with key=obj101, CLID=8101, containing data object @0x1124980  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1125090, recorded with key=obj102, CLID=8101, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1128570, recorded with key=obj101, CLID=8101, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1129590, recorded with key=BVec, CLID=82735621, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1129b50, recorded with key=CVec, CLID=82735621, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1128610, recorded with key=ErrorVec, CLID=82735621, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1129ea0, recorded with key=BStand, CLID=82835621, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x11244e0, recorded with key=BBVecAux., CLID=125030194, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x11293d0, recorded with key=BStandAux., CLID=125030194, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x11279f0, recorded with key=BVecAux., CLID=125030194, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1129000, recorded with key=CVecAux., CLID=125030194, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1127be0, recorded with key=BBVec, CLID=125040193, containing data object @0  ... -> DONE
+>>> test duplicate error
+StoreGateSvc_Impl   ERROR SGImplSvc::recordObject: existing object found with 8101[Foo] obj101 but neither clid 543543[] nor key obj101xxx match.
+<<< test duplicate error
+StoreGateSvc_Impl   DEBUG Clearing store with forceRemove=0
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879950, recorded with key=obj101, CLID=8101, containing data object @0x187ae50  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879950, recorded with key=obj101, CLID=8101, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879120, recorded with key=obj102, CLID=8101, containing data object @0x18776e0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879950, recorded with key=obj101, CLID=8101, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1877760, recorded with key=BVec, CLID=82735621, containing data object @0x187a110  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1877ec0, recorded with key=CVec, CLID=82735621, containing data object @0x1876c20  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x17b88c0, recorded with key=ErrorVec, CLID=82735621, containing data object @0x187a280  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1877b10, recorded with key=BStand, CLID=82835621, containing data object @0x187d280  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879800, recorded with key=BBVecAux., CLID=125030194, containing data object @0x1876d50  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1876fd0, recorded with key=BStandAux., CLID=125030194, containing data object @0x187bec0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879430, recorded with key=BVecAux., CLID=125030194, containing data object @0x18783e0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1878270, recorded with key=CVecAux., CLID=125030194, containing data object @0x1876830  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1875ce0, recorded with key=BBVec, CLID=125040193, containing data object @0x1866600  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x187a5f0, recorded with key=testBoundReset, CLID=244260744, containing data object @0x187a9b0  ... -> DONE
+StoreGateSvc_Impl   DEBUG Clearing store with forceRemove=0
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879950, recorded with key=obj101, CLID=8101, containing data object @0x187ae50  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879950, recorded with key=obj101, CLID=8101, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879120, recorded with key=obj102, CLID=8101, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879950, recorded with key=obj101, CLID=8101, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1877760, recorded with key=BVec, CLID=82735621, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1877ec0, recorded with key=CVec, CLID=82735621, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x17b88c0, recorded with key=ErrorVec, CLID=82735621, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1877b10, recorded with key=BStand, CLID=82835621, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879800, recorded with key=BBVecAux., CLID=125030194, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1876fd0, recorded with key=BStandAux., CLID=125030194, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879430, recorded with key=BVecAux., CLID=125030194, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1878270, recorded with key=CVecAux., CLID=125030194, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1875ce0, recorded with key=BBVec, CLID=125040193, containing data object @0  ... -> DONE
 
 *** StoreGateSvcClient_test testRecordObject OK ***
 
@@ -648,89 +727,92 @@ StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProx
 
 *** StoreGateSvcClient_test testWriteAux OK ***
 *** test_lock
-StoreGateSvc        DEBUG Recorded object @0x11251a0 with key lockable1 of type Lockable(CLID 82734636)
- in DataObject @0x1126000
- object modifiable when retrieved
-StoreGateSvc        DEBUG Clearing store with forceRemove=0
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1128570, recorded with key=obj101, CLID=8101, containing data object @0x1124980  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1125090, recorded with key=obj102, CLID=8101, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1128570, recorded with key=obj101, CLID=8101, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x11269d0, recorded with key=lockable1, CLID=82734636, containing data object @0x1126000  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1129590, recorded with key=BVec, CLID=82735621, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1129b50, recorded with key=CVec, CLID=82735621, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1128610, recorded with key=ErrorVec, CLID=82735621, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1129ea0, recorded with key=BStand, CLID=82835621, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1127140, recorded with key=testWriteAux, CLID=82835621, containing data object @0x1125dd0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x11244e0, recorded with key=BBVecAux., CLID=125030194, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x11293d0, recorded with key=BStandAux., CLID=125030194, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x11279f0, recorded with key=BVecAux., CLID=125030194, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1129000, recorded with key=CVecAux., CLID=125030194, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1126950, recorded with key=testWriteAuxAux., CLID=125030194, containing data object @0x1125ca0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1127be0, recorded with key=BBVec, CLID=125040193, containing data object @0  ... -> DONE
-StoreGateSvc        DEBUG Recorded object @0x1127460 with key lockable1 of type Lockable(CLID 82734636)
- in DataObject @0x1125ca0
+StoreGateSvc_Impl   DEBUG Recorded object @0x187ca00 with key lockable1 of type Lockable(CLID 82734636)
+ in DataObject @0x1876830
+ object modifiable when retrieved
+StoreGateSvc_Impl   DEBUG Clearing store with forceRemove=0
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879950, recorded with key=obj101, CLID=8101, containing data object @0x187ae50  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879950, recorded with key=obj101, CLID=8101, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879120, recorded with key=obj102, CLID=8101, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879950, recorded with key=obj101, CLID=8101, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x18773b0, recorded with key=lockable1, CLID=82734636, containing data object @0x1876830  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1877760, recorded with key=BVec, CLID=82735621, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1877ec0, recorded with key=CVec, CLID=82735621, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x17b88c0, recorded with key=ErrorVec, CLID=82735621, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1877b10, recorded with key=BStand, CLID=82835621, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x187a5f0, recorded with key=testWriteAux, CLID=82835621, containing data object @0x18776e0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879800, recorded with key=BBVecAux., CLID=125030194, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1876fd0, recorded with key=BStandAux., CLID=125030194, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1879430, recorded with key=BVecAux., CLID=125030194, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1878270, recorded with key=CVecAux., CLID=125030194, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x18760a0, recorded with key=testWriteAuxAux., CLID=125030194, containing data object @0x187c330  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x1875ce0, recorded with key=BBVec, CLID=125040193, containing data object @0  ... -> DONE
+StoreGateSvc_Impl   DEBUG Recorded object @0x187a780 with key lockable1 of type Lockable(CLID 82734636)
+ in DataObject @0x187c330
  object modifiable when retrieved
 StoreGateSvc      VERBOSE Finalizing StoreGateSvc - package version StoreGate-00-00-00
-StoreGateSvc        DEBUG Clearing store with forceRemove=1
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1128570, recorded with key=obj101, CLID=8101, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1125090, recorded with key=obj102, CLID=8101, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1128570, recorded with key=obj101, CLID=8101, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x11269d0, recorded with key=lockable1, CLID=82734636, containing data object @0x1125ca0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1129590, recorded with key=BVec, CLID=82735621, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1129b50, recorded with key=CVec, CLID=82735621, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1128610, recorded with key=ErrorVec, CLID=82735621, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1129ea0, recorded with key=BStand, CLID=82835621, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1127140, recorded with key=testWriteAux, CLID=82835621, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x11244e0, recorded with key=BBVecAux., CLID=125030194, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x11293d0, recorded with key=BStandAux., CLID=125030194, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x11279f0, recorded with key=BVecAux., CLID=125030194, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1129000, recorded with key=CVecAux., CLID=125030194, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1126950, recorded with key=testWriteAuxAux., CLID=125030194, containing data object @0  ... -> DONE
-StoreGateSvc      VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1127be0, recorded with key=BBVec, CLID=125040193, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE Finalizing StoreGateSvc_Impl - package version StoreGate-00-00-00
+StoreGateSvc_Impl   DEBUG Clearing store with forceRemove=1
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1879950, recorded with key=obj101, CLID=8101, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1879950, recorded with key=obj101, CLID=8101, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1879120, recorded with key=obj102, CLID=8101, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1879950, recorded with key=obj101, CLID=8101, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x18773b0, recorded with key=lockable1, CLID=82734636, containing data object @0x187c330  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1877760, recorded with key=BVec, CLID=82735621, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1877ec0, recorded with key=CVec, CLID=82735621, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x17b88c0, recorded with key=ErrorVec, CLID=82735621, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1877b10, recorded with key=BStand, CLID=82835621, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x187a5f0, recorded with key=testWriteAux, CLID=82835621, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1879800, recorded with key=BBVecAux., CLID=125030194, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1876fd0, recorded with key=BStandAux., CLID=125030194, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1879430, recorded with key=BVecAux., CLID=125030194, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1878270, recorded with key=CVecAux., CLID=125030194, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x18760a0, recorded with key=testWriteAuxAux., CLID=125030194, containing data object @0  ... -> DONE
+StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x1875ce0, recorded with key=BBVec, CLID=125040193, containing data object @0  ... -> DONE
 *** StoreGateSvcClient_test record BEGINS ***
 Now we expect to see an error message:
 ----Error Message Starts--->>
-DetectorStore     WARNING  setupProxy:: error setting up proxy for key pFoo1 and clid 8101
- Pre-existing valid DataProxy @0x1127be0 found in Store for key pFoo1 with clid 8101
-DetectorStore     WARNING record_impl: Problem setting up the proxy for object @0x1127790
- recorded with key pFoo1 of type Foo (CLID 8101) in DataObject @0x1127500
+DetectorStore_ImplWARNING  setupProxy:: error setting up proxy for key pFoo1 and clid 8101
+ Pre-existing valid DataProxy @0x1875ce0 found in Store for key pFoo1 with clid 8101
+DetectorStore_ImplWARNING record_impl: Problem setting up the proxy for object @0x1878fe0
+ recorded with key pFoo1 of type Foo (CLID 8101) in DataObject @0x187a000
 <<---Error Message Ends-------
 Now we expect to see an error message:
 ----Error Message Starts--->>
-DetectorStore     WARNING record_impl: failed for key=pFoo2, type Foo (CLID 8101)
- object @0x1125c30 already in store with key=pFoo1. Will not record a duplicate! 
+DetectorStore_ImplWARNING record_impl: failed for key=pFoo2, type Foo (CLID 8101)
+ object @0x1878c50 already in store with key=pFoo1. Will not record a duplicate! 
 <<---Error Message Ends-------
 Now we expect to see an error message:
 ----Error Message Starts--->>
-DetectorStore     WARNING  setupProxy:: error setting up proxy for key silly and clid 8101
- Pre-existing valid DataProxy @0x11279f0 found in Store for key silly with clid 8101
-DetectorStore     WARNING record_impl: Problem setting up the proxy for object @0x11291c0
- recorded with key silly of type Foo (CLID 8101) in DataObject @0x11284a0
+DetectorStore_ImplWARNING  setupProxy:: error setting up proxy for key silly and clid 8101
+ Pre-existing valid DataProxy @0x1879430 found in Store for key silly with clid 8101
+DetectorStore_ImplWARNING record_impl: Problem setting up the proxy for object @0x17dd390
+ recorded with key silly of type Foo (CLID 8101) in DataObject @0x1879ef0
 <<---Error Message Ends-------
 Now we expect to see an error message:
 ----Error Message Starts--->>
-DetectorStore     WARNING  setupProxy:: error setting up proxy for key silly and clid 8101
- Pre-existing valid DataProxy @0x11279f0 found in Store for key silly with clid 8101
-DetectorStore     WARNING record_impl: Problem setting up the proxy for object @0x11282a0
- recorded with key silly of type Foo (CLID 8101) in DataObject @0x1127350
+DetectorStore_ImplWARNING  setupProxy:: error setting up proxy for key silly and clid 8101
+ Pre-existing valid DataProxy @0x1879430 found in Store for key silly with clid 8101
+DetectorStore_ImplWARNING record_impl: Problem setting up the proxy for object @0x187c270
+ recorded with key silly of type Foo (CLID 8101) in DataObject @0x1875930
 <<---Error Message Ends-------
 Now we expect to see an error message:
 ----Error Message Starts--->>
-DetectorStore     WARNING  setupProxy:: error setting up proxy for key silly and clid 8101
- Pre-existing valid DataProxy @0x11279f0 found in Store for key silly with clid 8101
-DetectorStore     WARNING record_impl: Problem setting up the proxy for object @0x1127550
- recorded with key silly of type Foo (CLID 8101) in DataObject @0x1125b90
+DetectorStore_ImplWARNING  setupProxy:: error setting up proxy for key silly and clid 8101
+ Pre-existing valid DataProxy @0x1879430 found in Store for key silly with clid 8101
+DetectorStore_ImplWARNING record_impl: Problem setting up the proxy for object @0x187cfb0
+ recorded with key silly of type Foo (CLID 8101) in DataObject @0x1878f40
 <<---Error Message Ends-------
 Now we expect to see an error message:
 ----Error Message Starts--->>
-DetectorStore     WARNING  setupProxy:: error setting up proxy for key Const and clid 8101
- Pre-existing valid DataProxy @0x1129590 found in Store for key Const with clid 8101
-DetectorStore     WARNING record_impl: Problem setting up the proxy for object @0x1126e80
- recorded with key Const of type Foo (CLID 8101) in DataObject @0x1126a50
+DetectorStore_ImplWARNING  setupProxy:: error setting up proxy for key Const and clid 8101
+ Pre-existing valid DataProxy @0x1877760 found in Store for key Const with clid 8101
+DetectorStore_ImplWARNING record_impl: Problem setting up the proxy for object @0x187bf70
+ recorded with key Const of type Foo (CLID 8101) in DataObject @0x18779d0
 <<---Error Message Ends-------
 IOVSvc               INFO No IOVSvcTool associated with store "StoreGateSvc"
 IOVSvcTool           INFO IOVRanges will be checked at every Event
-ClassIDSvc           INFO  getRegistryEntries: read 256 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 306 CLIDRegistry entries for module ALL
 *** StoreGateSvcClient_test records OK ***
 
 
diff --git a/Control/AthenaKernel/AthenaKernel/IProxyDict.h b/Control/AthenaKernel/AthenaKernel/IProxyDict.h
index f1687792ee61a432b4c95144a7f9369aabfef74b..5054e736be18962b8ca5dce8a22f04b186d09d8b 100644
--- a/Control/AthenaKernel/AthenaKernel/IProxyDict.h
+++ b/Control/AthenaKernel/AthenaKernel/IProxyDict.h
@@ -112,6 +112,8 @@ public:
    * @param returnExisting If true, return proxy if this key already exists.
    *                       If the object has been recorded under a different
    *                       key, then make an alias.
+   *                       If the object has been recorded under a different
+   *                       clid, then make a link.
    *
    * Full-blown record.  @c obj should usually be something
    * deriving from @c SG::DataBucket.
diff --git a/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks1.ref b/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks1.ref
index 3e4b05309430758d54c89937e308cc8681e41632..36fd3d17284a3195c08c6e9cd5f5865478181e05 100644
--- a/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks1.ref
+++ b/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks1.ref
@@ -1,20 +1,25 @@
-Thu Apr 20 20:18:35 CEST 2017
+Mon Apr 24 16:12:01 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-opt] [atlas-work3g/725f3a42d9] -- built on [2017-04-20T1906]
+Py:Athena            INFO using release [WorkDir-22.0.0] [x86_64-slc6-gcc62-dbg] [mt-sss/06ff187fe6] -- built on [2017-04-24T1528]
 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/xAODTestSymlinks1_jo.py"
-Py:ConfigurableDb    INFO Read module info for 5294 configurables from 15 genConfDb files
-Py:ConfigurableDb    INFO No duplicates have been found: that's good !
+Py:ConfigurableDb    INFO Read module info for 5296 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
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
                                                    Welcome to ApplicationMgr (GaudiCoreSvc v28r1)
-                                          running on lxplus005.cern.ch on Thu Apr 20 20:18:47 2017
+                                          running on lxplus068.cern.ch on Mon Apr 24 16:12:24 2017
 ====================================================================================================================================
 ApplicationMgr       INFO Successfully loaded modules : AthenaServices
 ApplicationMgr       INFO Application Manager Configured successfully
@@ -27,23 +32,23 @@ 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 5682 CLIDRegistry entries for module ALL
-ClassIDSvc           INFO  getRegistryEntries: read 52 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 6160 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 57 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-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-18T2225/Athena/22.0.0/InstallArea/x86_64-slc6-gcc62-opt/share/dbreplica.config
-DBReplicaSvc         INFO Total of 10 servers found for host lxplus005.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ]
+DBReplicaSvc         INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2017-04-23T2225/Athena/22.0.0/InstallArea/x86_64-slc6-gcc62-dbg/share/dbreplica.config
+DBReplicaSvc         INFO Total of 10 servers found for host lxplus068.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
-ClassIDSvc           INFO  getRegistryEntries: read 867 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 753 CLIDRegistry entries for module ALL
 HistogramPersis...WARNING Histograms saving not required.
 EventSelector        INFO  Enter McEventSelector Initialization 
 AthenaEventLoopMgr   INFO Setup EventSelector service EventSelector
@@ -53,64 +58,64 @@ 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
-xAODTestReadSym...   INFO C (as AuxElement): 1000
+xAODTestReadSym...   INFO C (as AuxElement): 1000; S 0
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 2000
+xAODTestReadSym...   INFO C (as AuxElement): 2000; S 100
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 3000
+xAODTestReadSym...   INFO C (as AuxElement): 3000; S 200
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 4000
+xAODTestReadSym...   INFO C (as AuxElement): 4000; S 300
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 5000
+xAODTestReadSym...   INFO C (as AuxElement): 5000; S 400
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 6000
+xAODTestReadSym...   INFO C (as AuxElement): 6000; S 500
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 7000
+xAODTestReadSym...   INFO C (as AuxElement): 7000; S 600
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 8000
+xAODTestReadSym...   INFO C (as AuxElement): 8000; S 700
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 9000
+xAODTestReadSym...   INFO C (as AuxElement): 9000; S 800
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 10000
+xAODTestReadSym...   INFO C (as AuxElement): 10000; S 900
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 11000
+xAODTestReadSym...   INFO C (as AuxElement): 11000; S 1000
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 12000
+xAODTestReadSym...   INFO C (as AuxElement): 12000; S 1100
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 13000
+xAODTestReadSym...   INFO C (as AuxElement): 13000; S 1200
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 14000
+xAODTestReadSym...   INFO C (as AuxElement): 14000; S 1300
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 15000
+xAODTestReadSym...   INFO C (as AuxElement): 15000; S 1400
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 16000
+xAODTestReadSym...   INFO C (as AuxElement): 16000; S 1500
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 17000
+xAODTestReadSym...   INFO C (as AuxElement): 17000; S 1600
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 18000
+xAODTestReadSym...   INFO C (as AuxElement): 18000; S 1700
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 19000
+xAODTestReadSym...   INFO C (as AuxElement): 19000; S 1800
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 20000
+xAODTestReadSym...   INFO C (as AuxElement): 20000; S 1900
 AthenaEventLoopMgr   INFO   ===>>>  done processing event #19, run #0 20 events processed so far  <<<===
 Domain[ROOT_All] Info >   Deaccess DbDomain     READ      [ROOT_All] 
 ApplicationMgr       INFO Application Manager Stopped successfully
diff --git a/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks1MT.ref b/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks1MT.ref
index 85e4e24bba881e7a517b8050021f94eeca1b455f..bec36ac663794729050f18db38d79b88d4245ac6 100644
--- a/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks1MT.ref
+++ b/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks1MT.ref
@@ -1,7 +1,7 @@
-Thu Apr 20 20:24:37 CEST 2017
+Mon Apr 24 16:12:05 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-opt] [atlas-work3g/725f3a42d9] -- built on [2017-04-20T1906]
+Py:Athena            INFO using release [WorkDir-22.0.0] [x86_64-slc6-gcc62-dbg] [mt-sss/06ff187fe6] -- built on [2017-04-24T1528]
 Py:Athena            INFO including file "AthenaCommon/Bootstrap.py"
 Py:Athena            INFO including file "AthenaCommon/Atlas.UnixStandardJob.py"
 Py:Athena            INFO executing ROOT6Setup
@@ -9,15 +9,20 @@ Py:Athena            INFO executing ROOT6Setup
 Py:Athena            INFO including file "AthenaCommon/Execution.py"
 Py:Athena            INFO including file "DataModelRunTests/xAODTestSymlinks1MT_jo.py"
 Py:Athena            INFO including file "DataModelRunTests/xAODTestSymlinks1_jo.py"
-Py:ConfigurableDb    INFO Read module info for 5294 configurables from 15 genConfDb files
-Py:ConfigurableDb    INFO No duplicates have been found: that's good !
+Py:ConfigurableDb    INFO Read module info for 5296 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 v28r1)
-                                          running on lxplus005.cern.ch on Thu Apr 20 20:24:50 2017
+                                          running on lxplus068.cern.ch on Mon Apr 24 16:12:35 2017
 ====================================================================================================================================
 ApplicationMgr       INFO Successfully loaded modules : AthenaServices
 ApplicationMgr       INFO Application Manager Configured successfully
@@ -35,27 +40,30 @@ PoolSvc                                            INFO io_register[PoolSvc](xml
 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-18T2225/Athena/22.0.0/InstallArea/x86_64-slc6-gcc62-opt/share/dbreplica.config
-DBReplicaSvc                                       INFO Total of 10 servers found for host lxplus005.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ]
+DBReplicaSvc                                       INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master/2017-04-23T2225/Athena/22.0.0/InstallArea/x86_64-slc6-gcc62-dbg/share/dbreplica.config
+DBReplicaSvc                                       INFO Total of 10 servers found for host lxplus068.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
-ClassIDSvc                                         INFO  getRegistryEntries: read 6549 CLIDRegistry entries for module ALL
-ClassIDSvc                                         INFO  getRegistryEntries: read 52 CLIDRegistry entries for module ALL
+ClassIDSvc                                         INFO  getRegistryEntries: read 6913 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
 ForwardSchedulerSvc                                INFO Activating scheduler in a separate thread
 ForwardSchedulerSvc                                INFO Waiting for ForwardSchedulerSvc to activate
 ForwardSchedulerSvc                                INFO Start checking the actionsQueue
 ForwardSchedulerSvc                             WARNING Property MaxEventsInFlight was set. This works but it's deprecated. Please migrate your code options files.
-ForwardSchedulerSvc                                INFO Found 8 algorithms
+ForwardSchedulerSvc                                INFO Found 9 algorithms
 ForwardSchedulerSvc                                INFO outputs:
-('DMTest::C','cinfo')
-('SG::AuxElement','cinfo')
 ('DMTest::CVec','cvec')
+('SG::AuxElement','cinfo')
+('DMTest::S2','S2alias')
+('DMTest::S1','S2')
+('DMTest::C','cinfo')
+('DMTest::S2','S2')
 
 ForwardSchedulerSvc                                INFO Data Dependencies for Algorithms:
   BeginIncFiringAlg
@@ -72,8 +80,16 @@ ForwardSchedulerSvc                                INFO Data Dependencies for Al
     o INPUT  ('DMTest::CVec','cvec')
     o OUTPUT ('SG::AuxElement','cinfo')
     o OUTPUT ('DMTest::C','cinfo')
+  xAODTestWriteSymlinks
+    o INPUT  ('EventInfo','McEventInfo')
+    o OUTPUT ('DMTest::S2','S2')
+    o OUTPUT ('DMTest::S1','S2')
+    o OUTPUT ('DMTest::S2','S2alias')
   xAODTestReadSymlink
     o INPUT  ('SG::AuxElement','cinfo')
+    o INPUT  ('DMTest::S1','S2')
+    o INPUT  ('DMTest::S2','S2')
+    o INPUT  ('DMTest::S2','S2alias')
   EndIncFiringAlg
       none
   IncidentProcAlg2
@@ -82,6 +98,7 @@ ForwardSchedulerSvc                                INFO Will attribute the follo
    o ('EventInfo','McEventInfo')    required by Algorithm: 
        * xAODTestWriteCVec
        * xAODTestWriteCInfo
+       * xAODTestWriteSymlinks
 ForwardSchedulerSvc                                INFO Concurrency level information:
 ForwardSchedulerSvc                                INFO  o Number of events in flight:  'MaxEventsInFlight':1
 ForwardSchedulerSvc                                INFO  o Number of algorithms in flight:  'MaxAlgosInFlight':1
@@ -96,66 +113,66 @@ EventPersistencySvc                                INFO Added successfully Conve
 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
-xAODTestReadSymlink                     0   0      INFO C (as AuxElement): 1000
+xAODTestReadSymlink                     0   0      INFO C (as AuxElement): 1000; S 0
 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  <<<===
-xAODTestReadSymlink                     1   0      INFO C (as AuxElement): 2000
+xAODTestReadSymlink                     1   0      INFO C (as AuxElement): 2000; S 100
 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  <<<===
-xAODTestReadSymlink                     2   0      INFO C (as AuxElement): 3000
+xAODTestReadSymlink                     2   0      INFO C (as AuxElement): 3000; S 200
 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  <<<===
-xAODTestReadSymlink                     3   0      INFO C (as AuxElement): 4000
+xAODTestReadSymlink                     3   0      INFO C (as AuxElement): 4000; S 300
 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  <<<===
-xAODTestReadSymlink                     4   0      INFO C (as AuxElement): 5000
+xAODTestReadSymlink                     4   0      INFO C (as AuxElement): 5000; S 400
 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  <<<===
-xAODTestReadSymlink                     5   0      INFO C (as AuxElement): 6000
+xAODTestReadSymlink                     5   0      INFO C (as AuxElement): 6000; S 500
 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  <<<===
-xAODTestReadSymlink                     6   0      INFO C (as AuxElement): 7000
+xAODTestReadSymlink                     6   0      INFO C (as AuxElement): 7000; S 600
 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  <<<===
-xAODTestReadSymlink                     7   0      INFO C (as AuxElement): 8000
+xAODTestReadSymlink                     7   0      INFO C (as AuxElement): 8000; S 700
 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  <<<===
-xAODTestReadSymlink                     8   0      INFO C (as AuxElement): 9000
+xAODTestReadSymlink                     8   0      INFO C (as AuxElement): 9000; S 800
 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  <<<===
-xAODTestReadSymlink                     9   0      INFO C (as AuxElement): 10000
+xAODTestReadSymlink                     9   0      INFO C (as AuxElement): 10000; S 900
 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  <<<===
-xAODTestReadSymlink                     10  0      INFO C (as AuxElement): 11000
+xAODTestReadSymlink                     10  0      INFO C (as AuxElement): 11000; S 1000
 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  <<<===
-xAODTestReadSymlink                     11  0      INFO C (as AuxElement): 12000
+xAODTestReadSymlink                     11  0      INFO C (as AuxElement): 12000; S 1100
 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  <<<===
-xAODTestReadSymlink                     12  0      INFO C (as AuxElement): 13000
+xAODTestReadSymlink                     12  0      INFO C (as AuxElement): 13000; S 1200
 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  <<<===
-xAODTestReadSymlink                     13  0      INFO C (as AuxElement): 14000
+xAODTestReadSymlink                     13  0      INFO C (as AuxElement): 14000; S 1300
 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  <<<===
-xAODTestReadSymlink                     14  0      INFO C (as AuxElement): 15000
+xAODTestReadSymlink                     14  0      INFO C (as AuxElement): 15000; S 1400
 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  <<<===
-xAODTestReadSymlink                     15  0      INFO C (as AuxElement): 16000
+xAODTestReadSymlink                     15  0      INFO C (as AuxElement): 16000; S 1500
 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  <<<===
-xAODTestReadSymlink                     16  0      INFO C (as AuxElement): 17000
+xAODTestReadSymlink                     16  0      INFO C (as AuxElement): 17000; S 1600
 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  <<<===
-xAODTestReadSymlink                     17  0      INFO C (as AuxElement): 18000
+xAODTestReadSymlink                     17  0      INFO C (as AuxElement): 18000; S 1700
 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  <<<===
-xAODTestReadSymlink                     18  0      INFO C (as AuxElement): 19000
+xAODTestReadSymlink                     18  0      INFO C (as AuxElement): 19000; S 1800
 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  <<<===
-xAODTestReadSymlink                     19  0      INFO C (as AuxElement): 20000
+xAODTestReadSymlink                     19  0      INFO C (as AuxElement): 20000; S 1900
 AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #19, run #0 on slot 0,  20 events processed so far  <<<===
-AthenaHiveEventLoopMgr                             INFO ---> Loop Finished (seconds): 0.0441599
+AthenaHiveEventLoopMgr                             INFO ---> Loop Finished (seconds): 0.353586
 Domain[ROOT_All] Info >   Deaccess DbDomain     READ      [ROOT_All] 
 ApplicationMgr                                     INFO Application Manager Stopped successfully
 IncidentProcAlg1                                   INFO Finalize
@@ -164,7 +181,7 @@ IncidentProcAlg2                                   INFO Finalize
 EventSelector                                      INFO finalize
 ForwardSchedulerSvc                                INFO Joining Scheduler thread
 ForwardSchedulerSvc                     19  0      INFO Terminating thread-pool resources
-TimelineSvc                                        INFO Outputting timeline with 160 entries to file  'TimelineFile':timeline.csv
+TimelineSvc                                        INFO Outputting timeline with 180 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
diff --git a/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks1_jo.py b/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks1_jo.py
index b2fcac96491ba38127f8edb670e0c08f22b2a5db..e819e9f2c229bb5fc2f31ca4f4208fec3086204d 100644
--- a/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks1_jo.py
+++ b/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks1_jo.py
@@ -51,9 +51,11 @@ from DataModelTestDataCommon.DataModelTestDataCommonConf import \
      DMTest__xAODTestReadSymlink
 from DataModelTestDataWrite.DataModelTestDataWriteConf import \
      DMTest__xAODTestWriteCVec, \
-     DMTest__xAODTestWriteCInfo
+     DMTest__xAODTestWriteCInfo, \
+     DMTest__xAODTestWriteSymlinks
 topSequence += DMTest__xAODTestWriteCVec ("xAODTestWriteCVec")
 topSequence += DMTest__xAODTestWriteCInfo ("xAODTestWriteCInfo")
+topSequence += DMTest__xAODTestWriteSymlinks ("xAODTestWriteSymlinks")
 topSequence += DMTest__xAODTestReadSymlink ("xAODTestReadSymlink", Key='cinfo')
 
 
diff --git a/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks2.ref b/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks2.ref
index 35e97761a0400dc49bee649c58462f849d59c1e7..fcff043e09c3783bc7ce520ddf4b2f239c2caca1 100644
--- a/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks2.ref
+++ b/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks2.ref
@@ -1,20 +1,20 @@
-Fri Apr  7 03:45:19 CEST 2017
+Sat Apr  8 04:35:07 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/4765e91ead] -- built on [2017-04-07T0230]
+Py:Athena            INFO using release [AthenaWorkDir-22.0.0] [x86_64-slc6-gcc62-dbg] [mt-sss/22868139e4] -- built on [2017-04-07T2349]
 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/xAODTestSymlinks2_jo.py"
-Py:ConfigurableDb    INFO Read module info for 5290 configurables from 30 genConfDb files
+Py:ConfigurableDb    INFO Read module info for 5291 configurables from 30 genConfDb files
 Py:ConfigurableDb    INFO No duplicates have been found: that's good !
 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 lxplus042.cern.ch on Fri Apr  7 03:45:41 2017
+                                          running on lxplus068.cern.ch on Sat Apr  8 04:35:29 2017
 ====================================================================================================================================
 ApplicationMgr       INFO Successfully loaded modules : AthenaServices
 ApplicationMgr       INFO Application Manager Configured successfully
@@ -22,12 +22,12 @@ ApplicationMgr       INFO Updating Gaudi::PluginService::SetDebug(level) to leve
 StatusCodeSvc        INFO initialize
 AthDictLoaderSvc     INFO in initialize...
 AthDictLoaderSvc     INFO acquired Dso-registry
-ClassIDSvc           INFO  getRegistryEntries: read 8862 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 8868 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 358 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 360 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 Initializing PoolSvc - package version PoolSvc-00-00-00
@@ -36,7 +36,7 @@ PoolSvc              INFO Set connectionsvc retry/timeout/IDLE timeout to  'Conn
 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-05T2225/Athena/22.0.0/InstallArea/x86_64-slc6-gcc62-dbg/share/dbreplica.config
-DBReplicaSvc         INFO Total of 10 servers found for host lxplus042.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ]
+DBReplicaSvc         INFO Total of 10 servers found for host lxplus068.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
@@ -83,65 +83,65 @@ AthenaPoolConve...   INFO massageEventInfo: unable to get OverrideRunNumberFromI
 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
-xAODTestReadSym...   INFO C (as AuxElement): 1000
-ClassIDSvc           INFO  getRegistryEntries: read 48 CLIDRegistry entries for module ALL
+xAODTestReadSym...   INFO C (as AuxElement): 1000; S 0
+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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 2000
+xAODTestReadSym...   INFO C (as AuxElement): 2000; S 100
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 3000
+xAODTestReadSym...   INFO C (as AuxElement): 3000; S 200
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 4000
+xAODTestReadSym...   INFO C (as AuxElement): 4000; S 300
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 5000
+xAODTestReadSym...   INFO C (as AuxElement): 5000; S 400
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 6000
+xAODTestReadSym...   INFO C (as AuxElement): 6000; S 500
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 7000
+xAODTestReadSym...   INFO C (as AuxElement): 7000; S 600
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 8000
+xAODTestReadSym...   INFO C (as AuxElement): 8000; S 700
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 9000
+xAODTestReadSym...   INFO C (as AuxElement): 9000; S 800
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 10000
+xAODTestReadSym...   INFO C (as AuxElement): 10000; S 900
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 11000
+xAODTestReadSym...   INFO C (as AuxElement): 11000; S 1000
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 12000
+xAODTestReadSym...   INFO C (as AuxElement): 12000; S 1100
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 13000
+xAODTestReadSym...   INFO C (as AuxElement): 13000; S 1200
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 14000
+xAODTestReadSym...   INFO C (as AuxElement): 14000; S 1300
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 15000
+xAODTestReadSym...   INFO C (as AuxElement): 15000; S 1400
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 16000
+xAODTestReadSym...   INFO C (as AuxElement): 16000; S 1500
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 17000
+xAODTestReadSym...   INFO C (as AuxElement): 17000; S 1600
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 18000
+xAODTestReadSym...   INFO C (as AuxElement): 18000; S 1700
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 19000
+xAODTestReadSym...   INFO C (as AuxElement): 19000; S 1800
 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  <<<===
-xAODTestReadSym...   INFO C (as AuxElement): 20000
+xAODTestReadSym...   INFO C (as AuxElement): 20000; S 1900
 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] C99A5126-381F-7F4F-B568-3D70CAC1AC25
diff --git a/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks2MT.ref b/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks2MT.ref
index fd1c6f485f64d22f8b417ea8583361d4ba818fd1..560c67e50c0a10b3ab3d5fba48cd7db322aefaa8 100644
--- a/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks2MT.ref
+++ b/Control/DataModelTest/DataModelRunTests/share/xAODTestSymlinks2MT.ref
@@ -1,7 +1,7 @@
-Fri Apr  7 03:44:23 CEST 2017
+Sat Apr  8 03:23:26 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/4765e91ead] -- built on [2017-04-07T0230]
+Py:Athena            INFO using release [AthenaWorkDir-22.0.0] [x86_64-slc6-gcc62-dbg] [mt-sss/22868139e4] -- built on [2017-04-07T2349]
 Py:Athena            INFO including file "AthenaCommon/Bootstrap.py"
 Py:Athena            INFO including file "AthenaCommon/Atlas.UnixStandardJob.py"
 Py:Athena            INFO executing ROOT6Setup
@@ -9,7 +9,7 @@ Py:Athena            INFO executing ROOT6Setup
 Py:Athena            INFO including file "AthenaCommon/Execution.py"
 Py:Athena            INFO including file "DataModelRunTests/xAODTestSymlinks2MT_jo.py"
 Py:Athena            INFO including file "DataModelRunTests/xAODTestSymlinks2_jo.py"
-Py:ConfigurableDb    INFO Read module info for 5290 configurables from 30 genConfDb files
+Py:ConfigurableDb    INFO Read module info for 5291 configurables from 30 genConfDb files
 Py:ConfigurableDb    INFO No duplicates have been found: that's good !
 Py:Athena            INFO including file "AthenaCommon/runbatch.py"
 ApplicationMgr       INFO Updating Gaudi::PluginService::SetDebug(level) to level= 'PluginDebugLevel':0
@@ -17,14 +17,14 @@ MessageSvc           INFO Activating in a separate thread
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
                                                    Welcome to ApplicationMgr (GaudiCoreSvc v28r1)
-                                          running on lxplus042.cern.ch on Fri Apr  7 03:44:44 2017
+                                          running on lxplus068.cern.ch on Sat Apr  8 03:23:48 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 9237 CLIDRegistry entries for module ALL
+ClassIDSvc                                         INFO  getRegistryEntries: read 9243 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) 
@@ -37,7 +37,7 @@ PoolSvc                                            INFO Set connectionsvc retry/
 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-05T2225/Athena/22.0.0/InstallArea/x86_64-slc6-gcc62-dbg/share/dbreplica.config
-DBReplicaSvc                                       INFO Total of 10 servers found for host lxplus042.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ]
+DBReplicaSvc                                       INFO Total of 10 servers found for host lxplus068.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
@@ -63,7 +63,7 @@ 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 1425 CLIDRegistry entries for module ALL
+ClassIDSvc                                         INFO  getRegistryEntries: read 1427 CLIDRegistry entries for module ALL
 SGInputLoader                                      INFO Will preload the following DataObjects:
 ThreadPoolSvc                                      INFO no thread init tools attached
 ForwardSchedulerSvc                                INFO Activating scheduler in a separate thread
@@ -82,6 +82,9 @@ ForwardSchedulerSvc                                INFO Data Dependencies for Al
       none
   xAODTestReadSymlink
     o INPUT  ('SG::AuxElement','cinfo')
+    o INPUT  ('DMTest::S1','S2')
+    o INPUT  ('DMTest::S2','S2')
+    o INPUT  ('DMTest::S2','S2alias')
   EndIncFiringAlg
       none
   IncidentProcAlg2
@@ -89,6 +92,12 @@ ForwardSchedulerSvc                                INFO Data Dependencies for Al
 ForwardSchedulerSvc                                INFO Will attribute the following unmet INPUT dependencies to "SGInputLoader/SGInputLoader" Algorithm
    o ('SG::AuxElement','cinfo')    required by Algorithm: 
        * xAODTestReadSymlink
+   o ('DMTest::S1','S2')    required by Algorithm: 
+       * xAODTestReadSymlink
+   o ('DMTest::S2','S2')    required by Algorithm: 
+       * xAODTestReadSymlink
+   o ('DMTest::S2','S2alias')    required by Algorithm: 
+       * xAODTestReadSymlink
 ForwardSchedulerSvc                                INFO Concurrency level information:
 ForwardSchedulerSvc                                INFO  o Number of events in flight:  'MaxEventsInFlight':1
 ForwardSchedulerSvc                                INFO  o Number of algorithms in flight:  'MaxAlgosInFlight':1
@@ -114,67 +123,67 @@ AthenaPoolConverter                                INFO massageEventInfo: unable
 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
-xAODTestReadSymlink                     0   0      INFO C (as AuxElement): 1000
-ClassIDSvc                              0   0      INFO  getRegistryEntries: read 48 CLIDRegistry entries for module ALL
+xAODTestReadSymlink                     0   0      INFO C (as AuxElement): 1000; S 0
+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  <<<===
-xAODTestReadSymlink                     1   0      INFO C (as AuxElement): 2000
+xAODTestReadSymlink                     1   0      INFO C (as AuxElement): 2000; S 100
 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  <<<===
-xAODTestReadSymlink                     2   0      INFO C (as AuxElement): 3000
+xAODTestReadSymlink                     2   0      INFO C (as AuxElement): 3000; S 200
 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  <<<===
-xAODTestReadSymlink                     3   0      INFO C (as AuxElement): 4000
+xAODTestReadSymlink                     3   0      INFO C (as AuxElement): 4000; S 300
 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  <<<===
-xAODTestReadSymlink                     4   0      INFO C (as AuxElement): 5000
+xAODTestReadSymlink                     4   0      INFO C (as AuxElement): 5000; S 400
 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  <<<===
-xAODTestReadSymlink                     5   0      INFO C (as AuxElement): 6000
+xAODTestReadSymlink                     5   0      INFO C (as AuxElement): 6000; S 500
 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  <<<===
-xAODTestReadSymlink                     6   0      INFO C (as AuxElement): 7000
+xAODTestReadSymlink                     6   0      INFO C (as AuxElement): 7000; S 600
 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  <<<===
-xAODTestReadSymlink                     7   0      INFO C (as AuxElement): 8000
+xAODTestReadSymlink                     7   0      INFO C (as AuxElement): 8000; S 700
 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  <<<===
-xAODTestReadSymlink                     8   0      INFO C (as AuxElement): 9000
+xAODTestReadSymlink                     8   0      INFO C (as AuxElement): 9000; S 800
 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  <<<===
-xAODTestReadSymlink                     9   0      INFO C (as AuxElement): 10000
+xAODTestReadSymlink                     9   0      INFO C (as AuxElement): 10000; S 900
 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  <<<===
-xAODTestReadSymlink                     10  0      INFO C (as AuxElement): 11000
+xAODTestReadSymlink                     10  0      INFO C (as AuxElement): 11000; S 1000
 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  <<<===
-xAODTestReadSymlink                     11  0      INFO C (as AuxElement): 12000
+xAODTestReadSymlink                     11  0      INFO C (as AuxElement): 12000; S 1100
 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  <<<===
-xAODTestReadSymlink                     12  0      INFO C (as AuxElement): 13000
+xAODTestReadSymlink                     12  0      INFO C (as AuxElement): 13000; S 1200
 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  <<<===
-xAODTestReadSymlink                     13  0      INFO C (as AuxElement): 14000
+xAODTestReadSymlink                     13  0      INFO C (as AuxElement): 14000; S 1300
 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  <<<===
-xAODTestReadSymlink                     14  0      INFO C (as AuxElement): 15000
+xAODTestReadSymlink                     14  0      INFO C (as AuxElement): 15000; S 1400
 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  <<<===
-xAODTestReadSymlink                     15  0      INFO C (as AuxElement): 16000
+xAODTestReadSymlink                     15  0      INFO C (as AuxElement): 16000; S 1500
 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  <<<===
-xAODTestReadSymlink                     16  0      INFO C (as AuxElement): 17000
+xAODTestReadSymlink                     16  0      INFO C (as AuxElement): 17000; S 1600
 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  <<<===
-xAODTestReadSymlink                     17  0      INFO C (as AuxElement): 18000
+xAODTestReadSymlink                     17  0      INFO C (as AuxElement): 18000; S 1700
 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  <<<===
-xAODTestReadSymlink                     18  0      INFO C (as AuxElement): 19000
+xAODTestReadSymlink                     18  0      INFO C (as AuxElement): 19000; S 1800
 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  <<<===
-xAODTestReadSymlink                     19  0      INFO C (as AuxElement): 20000
+xAODTestReadSymlink                     19  0      INFO C (as AuxElement): 20000; S 1900
 AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #19, run #0 on slot 0,  20 events processed so far  <<<===
-AthenaHiveEventLoopMgr                             INFO ---> Loop Finished (seconds): 0.533476
+AthenaHiveEventLoopMgr                             INFO ---> Loop Finished (seconds): 0.438994
 xaoddata.root Info Database being retired...
 Domain[ROOT_All] Info ->  Deaccess DbDatabase   READ      [ROOT_All] C99A5126-381F-7F4F-B568-3D70CAC1AC25
 ApplicationMgr                                     INFO Application Manager Stopped successfully
diff --git a/Control/DataModelTest/DataModelRunTests/share/xAODTestWrite_jo.py b/Control/DataModelTest/DataModelRunTests/share/xAODTestWrite_jo.py
index d42be61fe514c91130f7d54258464e0a8bf7d558..edcb0eb62a5bc32136dc7d6f056e8ea21d2246f7 100755
--- a/Control/DataModelTest/DataModelRunTests/share/xAODTestWrite_jo.py
+++ b/Control/DataModelTest/DataModelRunTests/share/xAODTestWrite_jo.py
@@ -43,13 +43,15 @@ from DataModelTestDataWrite.DataModelTestDataWriteConf import \
      DMTest__xAODTestWriteCView, \
      DMTest__xAODTestWriteCInfo, \
      DMTest__xAODTestWriteCVecConst, \
-     DMTest__xAODTestWrite
+     DMTest__xAODTestWrite, \
+     DMTest__xAODTestWriteSymlinks
 topSequence += DMTest__xAODTestWriteCVec ("xAODTestWriteCVec")
 topSequence += DMTest__xAODTestWriteHVec ("xAODTestWriteHVec")
 topSequence += DMTest__xAODTestWriteCView ("xAODTestWriteCView")
 topSequence += DMTest__xAODTestWriteCInfo ("xAODTestWriteCInfo")
 topSequence += DMTest__xAODTestWrite ("xAODTestWrite")
 topSequence += DMTest__xAODTestWriteCVecConst ("xAODTestWriteCVecConst")
+topSequence += DMTest__xAODTestWriteSymlinks ("xAODTestWriteSymlinks")
 
 
 #--------------------------------------------------------------
@@ -80,6 +82,7 @@ fullItemList+=["DMTest::CInfoAuxContainer#cinfoAux."]
 fullItemList+=["DMTest::HVec#hvec"]
 fullItemList+=["DMTest::HAuxContainer#hvecAux."]
 fullItemList+=["DMTest::HView#hview"]
+fullItemList+=["DMTest::S2#S2"]
 
 from xAODEventFormatCnv.xAODEventFormatCnvConf import xAODMaker__EventFormatSvc
 fmtsvc = xAODMaker__EventFormatSvc (FormatNames = 
diff --git a/Control/DataModelTest/DataModelTestDataCommon/DataModelTestDataCommon/DataModelTestDataCommonDict.h b/Control/DataModelTest/DataModelTestDataCommon/DataModelTestDataCommon/DataModelTestDataCommonDict.h
index 7c19696dd47c7d45bf734a24544d7b187ce796c2..64348ed784a87656a147d6f09938cf862a72c4ea 100755
--- a/Control/DataModelTest/DataModelTestDataCommon/DataModelTestDataCommon/DataModelTestDataCommonDict.h
+++ b/Control/DataModelTest/DataModelTestDataCommon/DataModelTestDataCommon/DataModelTestDataCommonDict.h
@@ -19,6 +19,8 @@
 
 #include "DataModelTestDataCommon/B.h"
 #include "DataModelTestDataCommon/D.h"
+#include "DataModelTestDataCommon/S1.h"
+#include "DataModelTestDataCommon/S2.h"
 #include "DataModelTestDataCommon/BAux.h"
 #include "DataModelTestDataCommon/BAuxStandalone.h"
 #include "DataModelTestDataCommon/BAuxVec.h"
diff --git a/Control/DataModelTest/DataModelTestDataCommon/DataModelTestDataCommon/S1.h b/Control/DataModelTest/DataModelTestDataCommon/DataModelTestDataCommon/S1.h
new file mode 100644
index 0000000000000000000000000000000000000000..55bbb4a80daa14229309cdfbbe75145fa62a6abf
--- /dev/null
+++ b/Control/DataModelTest/DataModelTestDataCommon/DataModelTestDataCommon/S1.h
@@ -0,0 +1,39 @@
+// 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/S1.h
+ * @author scott snyder <snyder@bnl.gov>
+ * @date Apr, 2017
+ * @brief For symlink tests.
+ */
+
+
+#ifndef DATAMODELTESTDATACOMMON_S1_H
+#define DATAMODELTESTDATACOMMON_S1_H
+
+
+#include "SGTools/CLASS_DEF.h"
+
+
+namespace DMTest {
+
+
+class S1
+{
+public:
+  S1 (int x = 0) : m_x (x) {}
+  virtual ~S1() {}
+  int m_x;
+};
+
+
+} // namespace DMTest
+
+
+CLASS_DEF (DMTest::S1, 243020043, 0)
+
+
+#endif // not DATAMODELTESTDATACOMMON_S1_H
diff --git a/Control/DataModelTest/DataModelTestDataCommon/DataModelTestDataCommon/S2.h b/Control/DataModelTest/DataModelTestDataCommon/DataModelTestDataCommon/S2.h
new file mode 100644
index 0000000000000000000000000000000000000000..a6d4771217a292f4fd4977fcc50c7d148d8c5d0e
--- /dev/null
+++ b/Control/DataModelTest/DataModelTestDataCommon/DataModelTestDataCommon/S2.h
@@ -0,0 +1,39 @@
+// 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/S2.h
+ * @author scott snyder <snyder@bnl.gov>
+ * @date Apr, 2017
+ * @brief For symlink tests.
+ */
+
+
+#ifndef DATAMODELTESTDATACOMMON_S2_H
+#define DATAMODELTESTDATACOMMON_S2_H
+
+
+#include "DataModelTestDataCommon/S1.h"
+#include "SGTools/CLASS_DEF.h"
+
+
+namespace DMTest {
+
+
+class S2
+  : public S1
+{
+public:
+  S2 (int x = 0) : S1(x) {}
+};
+
+
+} // namespace DMTest
+
+
+CLASS_DEF (DMTest::S2, 243020042, 0)
+
+
+#endif // not DATAMODELTESTDATACOMMON_S2_H
diff --git a/Control/DataModelTest/DataModelTestDataCommon/DataModelTestDataCommon/selection.xml b/Control/DataModelTest/DataModelTestDataCommon/DataModelTestDataCommon/selection.xml
index 46c8ebbdccb6cc48237405b2bafffbf4edb81287..6f6ac81d83d8ab44210e62f48a23150426296fbe 100755
--- a/Control/DataModelTest/DataModelTestDataCommon/DataModelTestDataCommon/selection.xml
+++ b/Control/DataModelTest/DataModelTestDataCommon/DataModelTestDataCommon/selection.xml
@@ -12,6 +12,8 @@
 
   <class name="DMTest::B"/>
   <class name="DMTest::D"/>
+  <class name="DMTest::S1" id="230C025C-A8BB-4C8A-9C82-04C9C3D92384"/>
+  <class name="DMTest::S2" id="EC2D9BCD-4B99-41EB-A799-82BAF48887FC"/>
   <class name="DMTest::BAux" id="B2751847-F5E8-456A-8C03-BCA9AEEB27DD"/>
   <class name="DMTest::BAuxStandalone" id="6378E4BD-95AD-4D46-9860-B15779893A75" IAuxStore="true"/>
   <class name="DataVector<DMTest::BAux>" id="734BB39F-4E7C-4637-8510-6716160242D4"/>
diff --git a/Control/DataModelTest/DataModelTestDataCommon/src/setConverterLibrary.cxx b/Control/DataModelTest/DataModelTestDataCommon/src/setConverterLibrary.cxx
index 1ba26094914849d6df6fce7f46c38a19549386d8..a7d3d3a75ec5c5fdd33ac824b489afc334f49e25 100644
--- a/Control/DataModelTest/DataModelTestDataCommon/src/setConverterLibrary.cxx
+++ b/Control/DataModelTest/DataModelTestDataCommon/src/setConverterLibrary.cxx
@@ -62,6 +62,8 @@ void setConverterLibrary (const std::string& lib)
   setConverterLibrary (9742, lib); // DMTest::GAuxContainer_v1
   setConverterLibrary (9744, lib); // DMTest::G_v1
   setConverterLibrary (9779, lib); // DMTest::CView_v1
+  setConverterLibrary (243020043, lib); // DMTest::S1
+  setConverterLibrary (243020042, lib); // DMTest::S2
   setPluginLibrary ("_PERS_DMTest::HVec_v1", lib);
   setPluginLibrary ("_PERS_DataVector<DMTest::H_v1>", lib);
 }
diff --git a/Control/DataModelTest/DataModelTestDataCommon/src/xAODTestReadSymlink.cxx b/Control/DataModelTest/DataModelTestDataCommon/src/xAODTestReadSymlink.cxx
index aebed797353b069d9ec58f04de89f5bf1b578776..31e3a94d7d757c774c35263d1d63081d42974145 100644
--- a/Control/DataModelTest/DataModelTestDataCommon/src/xAODTestReadSymlink.cxx
+++ b/Control/DataModelTest/DataModelTestDataCommon/src/xAODTestReadSymlink.cxx
@@ -22,12 +22,18 @@ xAODTestReadSymlink::xAODTestReadSymlink (const std::string &name, ISvcLocator *
   : AthReentrantAlgorithm (name, pSvcLocator)
 {
   declareProperty ("Key", m_objKey);
+  declareProperty ("S1Key", m_s1Key = "S2");
+  declareProperty ("S2Key", m_s2Key = "S2");
+  declareProperty ("AliasKey", m_aliasKey = "S2alias");
 }
 
 
 StatusCode xAODTestReadSymlink::initialize()
 {
   ATH_CHECK( m_objKey.initialize() );
+  ATH_CHECK( m_s1Key.initialize() );
+  ATH_CHECK( m_s2Key.initialize() );
+  ATH_CHECK( m_aliasKey.initialize() );
   return StatusCode::SUCCESS;
 }
 
@@ -35,9 +41,15 @@ StatusCode xAODTestReadSymlink::initialize()
 StatusCode xAODTestReadSymlink::execute_r (const EventContext& ctx) const
 {
   SG::ReadHandle<SG::AuxElement> c (m_objKey, ctx);
+  SG::ReadHandle<DMTest::S1> s1 (m_s1Key, ctx);
+  SG::ReadHandle<DMTest::S2> s2 (m_s2Key, ctx);
+  SG::ReadHandle<DMTest::S2> alias (m_aliasKey, ctx);
 
   static const SG::AuxElement::Accessor<int> anInt ("anInt");
-  ATH_MSG_INFO( "C (as AuxElement): " << anInt (*c) );
+  ATH_MSG_INFO( "C (as AuxElement): " << anInt (*c)
+                << "; S " << s2->m_x );
+  if (s2.cptr() != s1.cptr() || s2.cptr() != alias.cptr())
+    ATH_MSG_ERROR( " S objects mismatch! ");
   return StatusCode::SUCCESS;
 }
 
diff --git a/Control/DataModelTest/DataModelTestDataCommon/src/xAODTestReadSymlink.h b/Control/DataModelTest/DataModelTestDataCommon/src/xAODTestReadSymlink.h
index 9c793a392959be14c1e585d3eb8f28fa434d0e85..55561d6328b62edd0d79c8deb53a0fca83414545 100644
--- a/Control/DataModelTest/DataModelTestDataCommon/src/xAODTestReadSymlink.h
+++ b/Control/DataModelTest/DataModelTestDataCommon/src/xAODTestReadSymlink.h
@@ -17,6 +17,8 @@
 #define DATAMODELTESTDATACOMMON_XAODTESTREADSYMLINK_H
 
 
+#include "DataModelTestDataCommon/S1.h"
+#include "DataModelTestDataCommon/S2.h"
 #include "AthenaBaseComps/AthReentrantAlgorithm.h"
 #include "StoreGate/ReadHandleKey.h"
 #include "AthContainers/AuxElement.h"
@@ -51,6 +53,10 @@ public:
 
 private:
   SG::ReadHandleKey<SG::AuxElement> m_objKey;
+
+  SG::ReadHandleKey<DMTest::S1> m_s1Key;
+  SG::ReadHandleKey<DMTest::S2> m_s2Key;
+  SG::ReadHandleKey<DMTest::S2> m_aliasKey;
 };
 
 
diff --git a/Control/DataModelTest/DataModelTestDataReadCnv/CMakeLists.txt b/Control/DataModelTest/DataModelTestDataReadCnv/CMakeLists.txt
index b47fbba44e92fe469715eaa8fd598d21b5c5e258..a9ade5a93433a6a7fa4a8191fec0c2bcf34b1d26 100644
--- a/Control/DataModelTest/DataModelTestDataReadCnv/CMakeLists.txt
+++ b/Control/DataModelTest/DataModelTestDataReadCnv/CMakeLists.txt
@@ -19,7 +19,7 @@ atlas_depends_on_subdirs( PUBLIC
 # Component(s) in the package:
 atlas_add_poolcnv_library( DataModelTestDataReadCnvPoolCnv
                            src/*.cxx
-                           FILES DataModelTestDataRead/BVec.h DataModelTestDataRead/BDer.h DataModelTestDataRead/DVec.h DataModelTestDataRead/DDer.h DataModelTestDataRead/ELVec.h DataModelTestDataRead/G.h DataModelTestDataRead/GVec.h DataModelTestDataRead/GAuxContainer.h DataModelTestDataRead/H.h DataModelTestDataRead/HVec.h DataModelTestDataRead/HAuxContainer.h DataModelTestDataRead/HView.h DataModelTestDataCommon/BAux.h DataModelTestDataCommon/BAuxVec.h DataModelTestDataCommon/BAuxStandalone.h DataModelTestDataCommon/C.h DataModelTestDataCommon/CVec.h DataModelTestDataCommon/CAuxContainer.h DataModelTestDataCommon/CView.h DataModelTestDataCommon/CVecWithData.h DataModelTestDataCommon/CInfoAuxContainer.h DataModelTestDataCommon/CTrigAuxContainer.h
-                           TYPES_WITH_NAMESPACE DMTest::BVec DMTest::DVec DMTest::DDer DMTest::BDer DMTest::ELVec DMTest::BAux DMTest::BAuxVec DMTest::BAuxStandalone DMTest::C DMTest::CVec DMTest::CAuxContainer DMTest::G DMTest::GVec DMTest::GAuxContainer DMTest::CVecWithData DMTest::CInfoAuxContainer DMTest::CTrigAuxContainer DMTest::CView DMTest::H DMTest::HVec DMTest::HAuxContainer DMTest::HView
+                           FILES DataModelTestDataRead/BVec.h DataModelTestDataRead/BDer.h DataModelTestDataRead/DVec.h DataModelTestDataRead/DDer.h DataModelTestDataRead/ELVec.h DataModelTestDataRead/G.h DataModelTestDataRead/GVec.h DataModelTestDataRead/GAuxContainer.h DataModelTestDataRead/H.h DataModelTestDataRead/HVec.h DataModelTestDataRead/HAuxContainer.h DataModelTestDataRead/HView.h DataModelTestDataCommon/BAux.h DataModelTestDataCommon/BAuxVec.h DataModelTestDataCommon/BAuxStandalone.h DataModelTestDataCommon/C.h DataModelTestDataCommon/CVec.h DataModelTestDataCommon/CAuxContainer.h DataModelTestDataCommon/CView.h DataModelTestDataCommon/CVecWithData.h DataModelTestDataCommon/CInfoAuxContainer.h DataModelTestDataCommon/CTrigAuxContainer.h DataModelTestDataCommon/S1.h DataModelTestDataCommon/S2.h
+                           TYPES_WITH_NAMESPACE DMTest::BVec DMTest::DVec DMTest::DDer DMTest::BDer DMTest::ELVec DMTest::BAux DMTest::BAuxVec DMTest::BAuxStandalone DMTest::C DMTest::CVec DMTest::CAuxContainer DMTest::G DMTest::GVec DMTest::GAuxContainer DMTest::CVecWithData DMTest::CInfoAuxContainer DMTest::CTrigAuxContainer DMTest::CView DMTest::H DMTest::HVec DMTest::HAuxContainer DMTest::HView DMTest::S1 DMTest::S2
                            LINK_LIBRARIES AthenaPoolUtilities AthenaKernel DataModelTestDataCommonLib DataModelTestDataReadLib AthenaPoolCnvSvcLib )
 
diff --git a/Control/DataModelTest/DataModelTestDataWrite/src/components/DataModelTestDataWrite_entries.cxx b/Control/DataModelTest/DataModelTestDataWrite/src/components/DataModelTestDataWrite_entries.cxx
index c85dd40d3ee72e7c8121848988b6e61d432e5592..3e924cc3cf574b88caa23a58ad1e99591893d830 100644
--- a/Control/DataModelTest/DataModelTestDataWrite/src/components/DataModelTestDataWrite_entries.cxx
+++ b/Control/DataModelTest/DataModelTestDataWrite/src/components/DataModelTestDataWrite_entries.cxx
@@ -15,6 +15,7 @@
 #include "../xAODTestWriteCView.h"
 #include "../xAODTestWriteCInfo.h"
 #include "../xAODTestWriteCVecConst.h"
+#include "../xAODTestWriteSymlinks.h"
 #include "../HLTResultWriter.h"
 
 DECLARE_NAMESPACE_ALGORITHM_FACTORY(DMTest, DMTestWrite)
@@ -25,5 +26,6 @@ DECLARE_NAMESPACE_ALGORITHM_FACTORY(DMTest, xAODTestWriteHVec)
 DECLARE_NAMESPACE_ALGORITHM_FACTORY(DMTest, xAODTestWriteCView)
 DECLARE_NAMESPACE_ALGORITHM_FACTORY(DMTest, xAODTestWriteCInfo)
 DECLARE_NAMESPACE_ALGORITHM_FACTORY(DMTest, xAODTestWriteCVecConst)
+DECLARE_NAMESPACE_ALGORITHM_FACTORY(DMTest, xAODTestWriteSymlinks)
 DECLARE_NAMESPACE_ALGORITHM_FACTORY(DMTest, HLTResultWriter)
 
diff --git a/Control/DataModelTest/DataModelTestDataWrite/src/xAODTestWriteSymlinks.cxx b/Control/DataModelTest/DataModelTestDataWrite/src/xAODTestWriteSymlinks.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..549dfef439f0e48f169b5f751e559d0424a34613
--- /dev/null
+++ b/Control/DataModelTest/DataModelTestDataWrite/src/xAODTestWriteSymlinks.cxx
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration.
+ */
+// $Id$
+/**
+ * @file DataModelTestDataWrite/src/xAODTestWriteSymlinks.cxx
+ * @author scott snyder <snyder@bnl.gov>
+ * @date Apr, 2017
+ * @brief Testing making symlinks/aliases through handles.
+ */
+
+
+#include "xAODTestWriteSymlinks.h"
+#include "EventInfo/EventID.h"
+#include "StoreGate/WriteHandle.h"
+#include "StoreGate/ReadHandle.h"
+
+
+namespace DMTest {
+
+
+/**
+ * @brief Constructor.
+ * @param name The algorithm name.
+ * @param svc The service locator.
+ */
+xAODTestWriteSymlinks::xAODTestWriteSymlinks (const std::string &name,
+                                              ISvcLocator *pSvcLocator)
+  : AthReentrantAlgorithm (name, pSvcLocator)
+{
+  declareProperty ("EventInfoKey", m_eventInfoKey = "McEventInfo");
+  declareProperty ("S2Key", m_s2Key = "S2");
+  declareProperty ("S1Key", m_s1Key = "S2");
+  declareProperty ("AliasKey", m_aliasKey = "S2alias");
+}
+
+
+/**
+ * @brief Algorithm initialization; called at the beginning of the job.
+ */
+StatusCode xAODTestWriteSymlinks::initialize()
+{
+  m_s1Key = m_s2Key.key();
+
+  ATH_CHECK( m_eventInfoKey.initialize() );
+  ATH_CHECK( m_s2Key.initialize() );
+  ATH_CHECK( m_s1Key.initialize() );
+  ATH_CHECK( m_aliasKey.initialize() );
+  return StatusCode::SUCCESS;
+}
+
+
+/**
+ * @brief Algorithm event processing.
+ */
+StatusCode xAODTestWriteSymlinks::execute_r (const EventContext& ctx) const
+{
+  SG::ReadHandle<EventInfo> eventInfo (m_eventInfoKey, ctx);
+  SG::WriteHandle<DMTest::S2> s2 (m_s2Key, ctx);
+  unsigned int eventNumber = eventInfo->event_ID()->event_number();
+  ATH_CHECK( s2.record (std::make_unique<DMTest::S2> (eventNumber*100)) );
+  ATH_CHECK( s2.alias (m_aliasKey) );
+  ATH_CHECK( s2.symLink (m_s1Key) );
+  return StatusCode::SUCCESS;
+}
+
+
+} // namespace DMTest
+
diff --git a/Control/DataModelTest/DataModelTestDataWrite/src/xAODTestWriteSymlinks.h b/Control/DataModelTest/DataModelTestDataWrite/src/xAODTestWriteSymlinks.h
new file mode 100644
index 0000000000000000000000000000000000000000..e58707d95c4ca54cfe18ce1c4d5e94e4f4d0de3a
--- /dev/null
+++ b/Control/DataModelTest/DataModelTestDataWrite/src/xAODTestWriteSymlinks.h
@@ -0,0 +1,74 @@
+// 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 DataModelTestDataWrite/src/xAODTestWriteSymlinks.h
+ * @author scott snyder <snyder@bnl.gov>
+ * @date Apr, 2017
+ * @brief Testing making symlinks/aliases through handles.
+ */
+
+
+#ifndef DATAMODELTESTDATAWRITE_XAODTESTWRITESYMLINKS_H
+#define DATAMODELTESTDATAWRITE_XAODTESTWRITESYMLINKS_H
+
+
+#include "DataModelTestDataCommon/S1.h"
+#include "DataModelTestDataCommon/S2.h"
+#include "AthenaBaseComps/AthReentrantAlgorithm.h"
+#include "EventInfo/EventInfo.h"
+#include "StoreGate/ReadHandleKey.h"
+#include "StoreGate/WriteHandleKey.h"
+
+
+namespace DMTest {
+
+
+/**
+ * @brief Algorithm testing making symlinks/aliases through handles.
+ */
+class xAODTestWriteSymlinks
+  : public AthReentrantAlgorithm
+{
+public:
+  /**
+   * @brief Constructor.
+   * @param name The algorithm name.
+   * @param svc The service locator.
+   */
+  xAODTestWriteSymlinks (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; 
+
+
+private:
+  /// EventInfo.
+  SG::ReadHandleKey<EventInfo> m_eventInfoKey;
+
+  /// Main output.
+  SG::WriteHandleKey<DMTest::S2> m_s2Key;
+
+  /// Symlink.
+  SG::WriteHandleKey<DMTest::S1> m_s1Key;
+
+  /// Alias.
+  SG::WriteHandleKey<DMTest::S2> m_aliasKey;
+};
+
+
+} // namespace DMTest
+
+
+#endif // not DATAMODELTESTDATAWRITE_XAODTESTWRITESYMLINKS_H
diff --git a/Control/DataModelTest/DataModelTestDataWriteCnv/CMakeLists.txt b/Control/DataModelTest/DataModelTestDataWriteCnv/CMakeLists.txt
index 104f8b02fb7d053d12288690c411eca91e06e2a1..cc792b6af2ef1a4b03cf2abd65fa9a312d5e3757 100644
--- a/Control/DataModelTest/DataModelTestDataWriteCnv/CMakeLists.txt
+++ b/Control/DataModelTest/DataModelTestDataWriteCnv/CMakeLists.txt
@@ -18,7 +18,7 @@ atlas_depends_on_subdirs( PUBLIC
 # Component(s) in the package:
 atlas_add_poolcnv_library( DataModelTestDataWriteCnvPoolCnv
                            src/*.cxx
-                           FILES DataModelTestDataWrite/BVec.h DataModelTestDataWrite/BDer.h DataModelTestDataWrite/DVec.h DataModelTestDataWrite/DDer.h DataModelTestDataWrite/ELVec.h DataModelTestDataWrite/G.h DataModelTestDataWrite/GVec.h DataModelTestDataWrite/GAuxContainer.h DataModelTestDataWrite/H.h DataModelTestDataWrite/HVec.h DataModelTestDataWrite/HAuxContainer.h DataModelTestDataWrite/HView.h DataModelTestDataCommon/BAux.h DataModelTestDataCommon/BAuxVec.h DataModelTestDataCommon/BAuxStandalone.h DataModelTestDataCommon/C.h DataModelTestDataCommon/CVec.h DataModelTestDataCommon/CAuxContainer.h DataModelTestDataCommon/CView.h DataModelTestDataCommon/CVecWithData.h DataModelTestDataCommon/CInfoAuxContainer.h DataModelTestDataCommon/CTrigAuxContainer.h
-                           TYPES_WITH_NAMESPACE DMTest::BVec DMTest::DVec DMTest::DDer DMTest::BDer DMTest::ELVec DMTest::BAux DMTest::BAuxVec DMTest::BAuxStandalone DMTest::C DMTest::CVec DMTest::CAuxContainer DMTest::G DMTest::GVec DMTest::GAuxContainer DMTest::CVecWithData DMTest::CInfoAuxContainer DMTest::CTrigAuxContainer DMTest::CView DMTest::H DMTest::HVec DMTest::HAuxContainer DMTest::HView
+                           FILES DataModelTestDataWrite/BVec.h DataModelTestDataWrite/BDer.h DataModelTestDataWrite/DVec.h DataModelTestDataWrite/DDer.h DataModelTestDataWrite/ELVec.h DataModelTestDataWrite/G.h DataModelTestDataWrite/GVec.h DataModelTestDataWrite/GAuxContainer.h DataModelTestDataWrite/H.h DataModelTestDataWrite/HVec.h DataModelTestDataWrite/HAuxContainer.h DataModelTestDataWrite/HView.h DataModelTestDataCommon/BAux.h DataModelTestDataCommon/BAuxVec.h DataModelTestDataCommon/BAuxStandalone.h DataModelTestDataCommon/C.h DataModelTestDataCommon/CVec.h DataModelTestDataCommon/CAuxContainer.h DataModelTestDataCommon/CView.h DataModelTestDataCommon/CVecWithData.h DataModelTestDataCommon/CInfoAuxContainer.h DataModelTestDataCommon/CTrigAuxContainer.h DataModelTestDataCommon/S1.h DataModelTestDataCommon/S2.h
+                           TYPES_WITH_NAMESPACE DMTest::BVec DMTest::DVec DMTest::DDer DMTest::BDer DMTest::ELVec DMTest::BAux DMTest::BAuxVec DMTest::BAuxStandalone DMTest::C DMTest::CVec DMTest::CAuxContainer DMTest::G DMTest::GVec DMTest::GAuxContainer DMTest::CVecWithData DMTest::CInfoAuxContainer DMTest::CTrigAuxContainer DMTest::CView DMTest::H DMTest::HVec DMTest::HAuxContainer DMTest::HView DMTest::S1 DMTest::S2
                            LINK_LIBRARIES AthenaPoolUtilities DataModelTestDataCommonLib DataModelTestDataWriteLib AthenaPoolCnvSvcLib )
 
diff --git a/Control/SGTools/SGTools/TestStore.h b/Control/SGTools/SGTools/TestStore.h
index 9b05a69572f4c8b81dfa88e09f8b7b1e3292ff9d..28429583d2ea3cbba37ebf6c447eee8eaa8bde95 100644
--- a/Control/SGTools/SGTools/TestStore.h
+++ b/Control/SGTools/SGTools/TestStore.h
@@ -61,10 +61,6 @@ public:
   virtual void registerKey (sgkey_t /*key*/,
                             const std::string& /*str*/,
                             CLID /*clid*/) override;
-  virtual SG::DataProxy* recordObject (SG::DataObjectSharedPtr<DataObject> obj,
-                                       const std::string& key,
-                                       bool allowMods,
-                                       bool returnExisting) override;
   virtual StatusCode updatedObject (CLID id, const std::string& key) override;
 
   
@@ -81,6 +77,10 @@ public:
   virtual void boundHandle (IResetable* handle) override;
   virtual void unboundHandle (IResetable* handle) override;
 
+  virtual SG::DataProxy* recordObject (SG::DataObjectSharedPtr<DataObject> obj,
+                                       const std::string& key,
+                                       bool allowMods,
+                                       bool returnExisting) override;
   SG::DataProxy* record1 (const void* p, DataObject* obj,
                           CLID clid, const std::string& key);
 
diff --git a/Control/SGTools/src/TestStore.cxx b/Control/SGTools/src/TestStore.cxx
index e3e7a05ed532b288a9dd1aae45c143a731d79032..6c72e1d91231ccb9d66da529d4d01ba08d528efe 100644
--- a/Control/SGTools/src/TestStore.cxx
+++ b/Control/SGTools/src/TestStore.cxx
@@ -12,6 +12,7 @@
 
 
 #include "SGTools/TestStore.h"
+#include "SGTools/DataBucketBase.h"
 #include <iostream>
 
 
@@ -65,6 +66,10 @@ SG::DataProxy* TestStore::recordObject (SG::DataObjectSharedPtr<DataObject> obj,
                                         bool returnExisting)
 {
   const void* raw_ptr = obj.get();
+  if (DataBucketBase* bucket = dynamic_cast<DataBucketBase*> (obj.get())) {
+    raw_ptr = bucket->object();
+  }
+
   CLID clid = obj->clID();
   SG::DataProxy* proxy = this->proxy (clid, key);
   if (proxy) {
@@ -73,6 +78,29 @@ SG::DataProxy* TestStore::recordObject (SG::DataObjectSharedPtr<DataObject> obj,
     else
       return nullptr;
   }
+
+  proxy = this->proxy (raw_ptr);
+  if (proxy) {
+    sgkey_t sgkey = stringToKey (key, obj->clID());
+    if (!returnExisting)
+      return nullptr;
+    if (obj->clID() == proxy->clID()) {
+      // Alias?
+      m_kmap[sgkey] = proxy;
+      proxy->transientAddress()->setAlias (key);
+      return proxy;
+    }
+    if (key == proxy->name()) {
+      // Symlink?
+      m_kmap[sgkey] = proxy;
+      proxy->transientAddress()->setTransientID (obj->clID());
+      return proxy;
+    }
+
+    // Error.
+    return nullptr;
+  }
+  
   proxy = record1 (raw_ptr, obj.get(), clid, key);
   if (!allowMods)
     proxy->setConst();
diff --git a/Control/StoreGate/StoreGate/StoreGateSvc.h b/Control/StoreGate/StoreGate/StoreGateSvc.h
index 06c3c1e37fdbab69f69cc640b1fa69a14fcf8a71..b7ad4149b733a1122f2fbd08d196e245f8c4932b 100644
--- a/Control/StoreGate/StoreGate/StoreGateSvc.h
+++ b/Control/StoreGate/StoreGate/StoreGateSvc.h
@@ -653,6 +653,8 @@ public:
    * @param returnExisting If true, return proxy if this key already exists.
    *                       If the object has been recorded under a different
    *                       key, then make an alias.
+   *                       If the object has been recorded under a different
+   *                       clid, then make a link.
    *
    * Full-blown record.  @c obj should usually be something
    * deriving from @c SG::DataBucket.
diff --git a/Control/StoreGate/StoreGate/VarHandleBase.h b/Control/StoreGate/StoreGate/VarHandleBase.h
index d81b4738d176e3f2657d45359d620f5827d1f690..e684554765939c070b18a40ccfc65c2bd2024acb 100644
--- a/Control/StoreGate/StoreGate/VarHandleBase.h
+++ b/Control/StoreGate/StoreGate/VarHandleBase.h
@@ -404,6 +404,19 @@ namespace SG {
                           bool quiet = defaultQuiet) const;
 
 
+    /**
+     * @brief Make a symlink or alias to the object currently referenced
+     *        by this handle.
+     * @param newClid CLID of link.
+     * @param newKey SG key of link.
+     *
+     * If newClid matches the existing clid, then make an alias.
+     * If newKey matches the existing key, then make a symlink.
+     * If neither match, it's an error.
+     */
+    StatusCode symLink_impl (CLID newClid, const std::string& newKey) const;
+
+
   protected: 
     //*************************************************************************
     // Protected data.
diff --git a/Control/StoreGate/StoreGate/WriteHandle.h b/Control/StoreGate/StoreGate/WriteHandle.h
index 24954bde89503c2a04adfd982ba179c8a16075f4..628b7bf092a788d35bea24c28dd025f5a6e7d687 100644
--- a/Control/StoreGate/StoreGate/WriteHandle.h
+++ b/Control/StoreGate/StoreGate/WriteHandle.h
@@ -377,7 +377,54 @@ public:
   WriteHandle& operator=( std::unique_ptr<T> data );
 
 
+  /**
+   * @brief Make an alias.
+   * @param key Alternate key by which the referenced object should be known.
+   *
+   * The current handle should be valid and referencing an object
+   * (i.e., @c record should have been called on it).
+   *
+   * The object will also be known by the name given in @c key.
+   */
+  StatusCode alias (const WriteHandleKey<T>& key);
+
 
+  /**
+   * @brief Make an explicit link or alias.
+   * @param key Alternate clid/key by which the referenced object
+   *            should be known.
+   *
+   * You should generally not be using this!
+   *
+   * The current handle should be valid and referencing an object
+   * (i.e., @c record should have been called on it).
+   *
+   * If @c U is the same as @c T, then this makes an alias.
+   * The object will also be known by the name given in @c key.
+   *
+   * If the name in @c key is the same as the name for the current handle,
+   * then this makes a symlink: the object will be retrievable
+   * as a different type.
+   * 
+   * Note that if @c T and @c @U are related via @c SG_BASE and/or
+   * @c DATAVECTOR_BASE, then you shouldn't need to explicitly make a symlink;
+   * that should happen automatically.
+   *
+   * If a @c U* is not convertable to a @c T* via C++ rules, then you likely
+   * will be, at best, relying on undefined behavior.  You will probably
+   * get warnings from the undefined behavior sanitizer when if you try
+   * to dereference the @c U*.
+   *
+   * This usage is here mainly to assist in migrating some existing
+   * patterns to MT.  You should think several times before using
+   * in new code.
+   *
+   * If both types and the keys are different, then it is an error.
+   */
+  template <class U>
+  StatusCode symLink (const WriteHandleKey<U>& key);
+
+  
 private:
   /**
    * @brief Return the cached pointer directly.
diff --git a/Control/StoreGate/StoreGate/WriteHandle.icc b/Control/StoreGate/StoreGate/WriteHandle.icc
index 8910ed9307afe3f070a804a9ffd0bb243050710e..22e75f616b523bffaad4aa209a59d1be0bbbe693 100644
--- a/Control/StoreGate/StoreGate/WriteHandle.icc
+++ b/Control/StoreGate/StoreGate/WriteHandle.icc
@@ -495,6 +495,63 @@ WriteHandle<T>::operator= (std::unique_ptr<T> data)
 }
 
 
+/**
+ * @brief Make an alias.
+ * @param key Alternate key by which the referenced object should be known.
+ *
+ * The current handle should be valid and referencing an object
+ * (i.e., @c record should have been called on it).
+ *
+ * The object will also be known by the name given in @c key.
+ */
+template <class T>
+StatusCode WriteHandle<T>::alias (const WriteHandleKey<T>& other)
+{
+  return symLink_impl (this->clid(), other.key());
+}
+
+
+/**
+ * @brief Make an explicit link.
+ * @param key Alternate clid by which the referenced object
+ *            should be known.  The SG key must match the key of the
+ *            current handle.
+ *
+ * You should generally not be using this!
+ *
+ * The current handle should be valid and referencing an object
+ * (i.e., @c record should have been called on it).
+ *
+ * This makes a symlink: the object will be retrievable
+ * as a different type.
+ * 
+ * Note that if @c T and @c @U are related via @c SG_BASE and/or
+ * @c DATAVECTOR_BASE, then you shouldn't need to explicitly make a symlink;
+ * that should happen automatically.
+ *
+ * If a @c U* is not convertable to a @c T* via C++ rules, then you likely
+ * will be, at best, relying on undefined behavior.  You will probably
+ * get warnings from the undefined behavior sanitizer when if you try
+ * to dereference the @c U*.
+ *
+ * This usage is here mainly to assist in migrating some existing
+ * patterns to MT.  You should think several times before using
+ * in new code.
+ */
+template <class T>
+template <class U>
+StatusCode WriteHandle<T>::symLink (const WriteHandleKey<U>& other)
+{
+  if (this->key() != other.key()) {
+    REPORT_ERROR (StatusCode::FAILURE)
+      << "symLink: SG keys do not match: " << other.key() << " vs "
+      << this->key();
+    return StatusCode::FAILURE;
+  }
+  return symLink_impl (other.clid(), other.key());
+}
+
+
 /**
  * @brief Return the cached pointer directly.
  *
diff --git a/Control/StoreGate/StoreGate/tools/SGImplSvc.h b/Control/StoreGate/StoreGate/tools/SGImplSvc.h
index c8ebf0869cb987a2e77a53fda79b4b85f989d5ba..6eb9ed6b73d5c120e0219acd9607ad19cc86fb34 100644
--- a/Control/StoreGate/StoreGate/tools/SGImplSvc.h
+++ b/Control/StoreGate/StoreGate/tools/SGImplSvc.h
@@ -598,6 +598,8 @@ public:
    * @param returnExisting If true, return proxy if this key already exists.
    *                       If the object has been recorded under a different
    *                       key, then make an alias.
+   *                       If the object has been recorded under a different
+   *                       clid, then make a link.
    *
    * Full-blown record.  @c obj should usually be something
    * deriving from @c SG::DataBucket.
diff --git a/Control/StoreGate/share/VarHandleBase_test.ref b/Control/StoreGate/share/VarHandleBase_test.ref
index 3731a00abd3f9c57903f13b693e5ced03e13efd4..1e63014e13a596957deace5cef7462db73721c5c 100644
--- a/Control/StoreGate/share/VarHandleBase_test.ref
+++ b/Control/StoreGate/share/VarHandleBase_test.ref
@@ -1,14 +1,14 @@
 
 
 Initializing Gaudi ApplicationMgr using job opts ../share/VarHandleBase_test.txt
-JobOptionsSvc        INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work3/Control/StoreGate/share/../share/VarHandleBase_test.txt
+JobOptionsSvc        INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work7/Control/StoreGate/share/../share/VarHandleBase_test.txt
 JobOptionsSvc        INFO # (1,1): ApplicationMgr.ExtSvc = ["StoreGateSvc/OtherStore"]
 JobOptionsSvc        INFO # (2,1): OtherStore.ProxyProviderSvc = ""
 JobOptionsSvc        INFO Job options successfully read in from ../share/VarHandleBase_test.txt
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
                                                    Welcome to ApplicationMgr (GaudiCoreSvc v28r1)
-                                          running on lxplus090.cern.ch on Mon Mar 20 16:42:04 2017
+                                          running on lxplus042.cern.ch on Fri Apr  7 05:54:35 2017
 ====================================================================================================================================
 ApplicationMgr       INFO Application Manager Configured successfully
 ClassIDSvc           INFO  getRegistryEntries: read 217 CLIDRegistry entries for module ALL
@@ -41,6 +41,8 @@ VarHandleKey.Se...  ERROR ServiceLocatorHelper::service: can not locate service
                     FATAL FILE:LINE (StatusCode SG::VarHandleKey::initialize(bool)): code 0: m_storeHandle.retrieve()
 VarHandle(FooSv...  FATAL FILE:LINE (StatusCode SG::VarHandleBase::initialize(bool)): code 0: VarHandleKey::initialize()
 VarHandle(FooSv...  FATAL FILE:LINE (StatusCode SG::VarHandleBase::setState()): code 0: initialize()
+VarHandle(FooSv...WARNING FILE:LINE (void*SG::VarHandleBase::typeless_dataPointer_impl(bool)): could not get proxy for key foo
+VarHandle(FooSv...WARNING FILE:LINE (void*SG::VarHandleBase::typeless_dataPointer_impl(bool)):  try using a ReadHandle
 test6
 test7
 ServiceManager      FATAL No Service factory for FooSvc available.
@@ -55,7 +57,7 @@ VarHandle(FooSv...WARNING FILE:LINE (void*SG::VarHandleBase::typeless_dataPointe
 VarHandle(FooSv...WARNING FILE:LINE (void*SG::VarHandleBase::typeless_dataPointer_fromProxy(SG::DataProxy*, bool) const): Proxy  [293847295/foo] is in an invalid state
 VarHandle(FooSv...WARNING FILE:LINE (void*SG::VarHandleBase::typeless_dataPointer_fromProxy(SG::DataProxy*, bool) const): Request for an invalid object; requested CLID = 293847295, proxy primary ID is 293847296
 test9
-VarHandleBase @0x7ffd4a4b1950 store=FooSvc, clid=293847295, key=foo----------- ptr@0, proxy@0
+VarHandleBase @0x7fff26bc2b00 store=FooSvc, clid=293847295, key=foo----------- ptr@0, proxy@0
 test10
 ServiceManager      FATAL No Service factory for FooSvc available.
 VarHandleKey.Se...  ERROR ServiceLocatorHelper::service: can not locate service FooSvc
@@ -67,3 +69,6 @@ VarHandle(FooSv...  ERROR FILE:LINE (const void*SG::VarHandleBase::get_impl(cons
 ServiceManager      FATAL No Service factory for FooSvc available.
 VarHandleKey.Se...  ERROR ServiceLocatorHelper::service: can not locate service FooSvc
 VarHandle(FooSv...  ERROR FILE:LINE (const void*SG::VarHandleBase::get_impl(const EventContext*, bool) const): code 0: Cannot find proxy for 293847295/foo
+test12
+VarHandle(FooSv...  ERROR FILE:LINE (StatusCode SG::VarHandleBase::symLink_impl(unsigned int, const std::string&) const): code 0: symlink: Handle not valid.
+VarHandle(FooSv...  ERROR FILE:LINE (StatusCode SG::VarHandleBase::symLink_impl(unsigned int, const std::string&) const): code 0: symlink: Handle not valid.
diff --git a/Control/StoreGate/share/WriteHandle_test.ref b/Control/StoreGate/share/WriteHandle_test.ref
index 024a84f95540deecf04719d96f934b2e0c028a0f..6497cf8be4e67bad5cd72b3f76fe4a88cb7a993f 100644
--- a/Control/StoreGate/share/WriteHandle_test.ref
+++ b/Control/StoreGate/share/WriteHandle_test.ref
@@ -1,18 +1,17 @@
 
 
 Initializing Gaudi ApplicationMgr using job opts ../share/VarHandleBase_test.txt
-JobOptionsSvc        INFO # =======> /home/sss/nobackup/atlas/build/../tests/../share/VarHandleBase_test.txt
+JobOptionsSvc        INFO # =======> /home/sss/atlas/dvtest/build/../tests/../share/VarHandleBase_test.txt
 JobOptionsSvc        INFO # (1,1): ApplicationMgr.ExtSvc = ["StoreGateSvc/OtherStore"]
 JobOptionsSvc        INFO # (2,1): OtherStore.ProxyProviderSvc = ""
 JobOptionsSvc        INFO Job options successfully read in from ../share/VarHandleBase_test.txt
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
                                                    Welcome to ApplicationMgr (GaudiCoreSvc v27r1p99)
-                                          running on karma on Wed Feb 15 23:12:55 2017
+                                          running on karma on Thu Apr  6 11:03:54 2017
 ====================================================================================================================================
 ApplicationMgr       INFO Application Manager Configured successfully
-ClassIDSvc           INFO  getRegistryEntries: read 281 CLIDRegistry entries for module ALL
-ClassIDSvc          ERROR uncheckedSetTypePackageForID: PyAnalysisExamples-00-00-00 can not set CLID <86839352> for type name MyObj: Known CLID for this name <293847295> It was set by StoreGate-00-00-00
+ClassIDSvc           INFO  getRegistryEntries: read 282 CLIDRegistry entries for module ALL
 EventLoopMgr      WARNING Unable to locate service "EventSelector" 
 EventLoopMgr      WARNING No events will be processed from external input.
 HistogramPersis...WARNING Histograms saving not required.
@@ -50,3 +49,5 @@ VarHandle(Store...  ERROR FILE:LINE (FUNC): code 0: recordObject failed
                     ERROR FILE:LINE (FUNC): code 0: recordObject of aux store failed
 test11
 VarHandle(Store...  ERROR FILE:LINE (FUNC): code 0: recordObject failed
+test12
+                    ERROR FILE:LINE (FUNC): code 0: symLink: SG keys do not match: foo3 vs foo1
diff --git a/Control/StoreGate/src/SGImplSvc.cxx b/Control/StoreGate/src/SGImplSvc.cxx
index 5603a653d1268a2a2a6a18dcf7d8773a3d1dd540..b49517e293a2a705bc307f7050923731bb13ca6c 100644
--- a/Control/StoreGate/src/SGImplSvc.cxx
+++ b/Control/StoreGate/src/SGImplSvc.cxx
@@ -812,6 +812,8 @@ StatusCode SGImplSvc::addToStore (CLID id, SG::DataProxy* proxy)
  * @param returnExisting If true, return proxy if this key already exists.
  *                       If the object has been recorded under a different
  *                       key, then make an alias.
+ *                       If the object has been recorded under a different
+ *                       clid, then make a link.
  *
  * Full-blown record.  @c obj should usually be something
  * deriving from @c SG::DataBucket.
@@ -840,22 +842,61 @@ SG::DataProxy* SGImplSvc::recordObject (SG::DataObjectSharedPtr<DataObject> obj,
     SG::DataProxy* proxy = this->proxy (obj->clID(), key);
     if (proxy && proxy->isValid()) return proxy;
 
-    // Look for the same object recorded under a different key.
+    // Look for the same object recorded under a different key/clid.
     proxy = this->proxy (raw_ptr);
     if (proxy && proxy->isValid()) {
-      // Make an alias.
-      if (addAlias (key, proxy).isFailure()) {
+      if (proxy->transientAddress()->transientID (obj->clID())) {
+        // CLID matches.  Make an alias.
+        if (addAlias (key, proxy).isFailure()) {
+          CLID clid = proxy->clID();
+          std::string clidTypeName; 
+          m_pCLIDSvc->getTypeNameOfID(clid, clidTypeName).ignore();
+          msg() << MSG::WARNING
+                << "SGImplSvc::recordObject: addAlias fails for object "
+                << clid << "[" << clidTypeName << "] " << proxy->name()
+                << " and new key " << key
+                << endmsg;
+          
+          proxy = nullptr;
+        }
+      }
+
+      else if (key == proxy->name() ||
+               proxy->alias().count (key) > 0)
+      {
+        // key matches.  Make a symlink.
+        if (addSymLink (obj->clID(), proxy).isFailure()) {
+          CLID clid = proxy->clID();
+          std::string clidTypeName; 
+          m_pCLIDSvc->getTypeNameOfID(clid, clidTypeName).ignore();
+          CLID newclid = obj->clID();
+          std::string newclidTypeName; 
+          m_pCLIDSvc->getTypeNameOfID(newclid, newclidTypeName).ignore();
+          msg() << MSG::ERROR
+                << "SGImplSvc::recordObject: addSymLink fails for object "
+                << clid << "[" << clidTypeName << "] " << proxy->name()
+                << " and new clid " << newclid << "[" << newclidTypeName << "]"
+                << endmsg;
+          proxy = nullptr;
+        }
+      }
+
+      else {
         CLID clid = proxy->clID();
         std::string clidTypeName; 
         m_pCLIDSvc->getTypeNameOfID(clid, clidTypeName).ignore();
-        msg() << MSG::WARNING
-              << "SGImplSvc::recordObject: addAlias fails for object "
+        CLID newclid = obj->clID();
+        std::string newclidTypeName; 
+        m_pCLIDSvc->getTypeNameOfID(newclid, newclidTypeName).ignore();
+        msg() << MSG::ERROR
+              << "SGImplSvc::recordObject: existing object found with "
               << clid << "[" << clidTypeName << "] " << proxy->name()
-              << " and new key " << key
+              << " but neither clid " << newclid << "[" << newclidTypeName << "]"
+              << " nor key " << key << " match."
               << endmsg;
-
         proxy = nullptr;
       }
+
       return proxy;
     }
   }
diff --git a/Control/StoreGate/src/StoreGateSvc.cxx b/Control/StoreGate/src/StoreGateSvc.cxx
index 4a86b556565b3466b406b50b33a6075d9d865a7f..cd8dcb502a51fea22bec5c748e015302c2a151e3 100644
--- a/Control/StoreGate/src/StoreGateSvc.cxx
+++ b/Control/StoreGate/src/StoreGateSvc.cxx
@@ -309,6 +309,8 @@ StatusCode StoreGateSvc::addToStore (CLID id, SG::DataProxy* proxy)
  * @param returnExisting If true, return proxy if this key already exists.
  *                       If the object has been recorded under a different
  *                       key, then make an alias.
+ *                       If the object has been recorded under a different
+ *                       clid, then make a link.
  *
  * Full-blown record.  @c obj should usually be something
  * deriving from @c SG::DataBucket.
diff --git a/Control/StoreGate/src/VarHandleBase.cxx b/Control/StoreGate/src/VarHandleBase.cxx
index d6eac9e4bcf218ae92c03005c8750772f966161f..23e7d7af3516d1545ba800caaa33be94844f0ece 100644
--- a/Control/StoreGate/src/VarHandleBase.cxx
+++ b/Control/StoreGate/src/VarHandleBase.cxx
@@ -57,6 +57,33 @@ namespace errorcheck {
 namespace SG {
 
 
+  /**
+   * @brief Helper for symLink_impl.
+   *
+   * A simple @c DataBucket that holds an arbitrary pointer/clid.
+   * We stub out everything else that we don't use.
+   */
+  class SymlinkDataObject
+    : public DataBucketBase
+  {
+  public:
+    SymlinkDataObject (CLID clid, void* obj) : m_clid (clid), m_obj (obj) {}
+    virtual const CLID& clID() const override { return m_clid; }
+    virtual void* object() override { return m_obj; }
+    virtual const std::type_info& tinfo() const override { return typeid(void); }
+    virtual void* cast (CLID, SG::IRegisterTransient*, bool) const override { std::abort(); }
+    virtual void* cast (const std::type_info&, SG::IRegisterTransient*, bool) const override { std::abort(); }
+    virtual DataBucketBase* clone() const override { std::abort(); }
+    virtual void relinquish() override { std::abort(); }
+    virtual void lock() override { }
+
+  
+  private:
+    CLID m_clid;
+    void* m_obj;
+  };
+
+
   /**
    * @brief Constructor with default key.
    * @param clid CLID of the referenced class.
@@ -796,6 +823,32 @@ namespace SG {
   }
 
 
+  /**
+   * @brief Make a symlink or alias to the object currently referenced
+   *        by this handle.
+   * @param newClid CLID of link.
+   * @param newKey SG key of link.
+   *
+   * If newClid matches the existing clid, then make an alias.
+   * If newKey matches the existing key, then make a symlink.
+   * If neither match, it's an error.
+   */
+  StatusCode VarHandleBase::symLink_impl (CLID newClid,
+                                          const std::string& newKey) const
+  {
+    if (!m_ptr || !m_store) {
+      REPORT_ERROR (StatusCode::FAILURE) << "symlink: Handle not valid.";
+      return StatusCode::FAILURE;
+    }
+    
+    SG::DataObjectSharedPtr<DataObject> obj (new SymlinkDataObject (newClid, m_ptr));
+    SG::DataProxy* prox = m_store->recordObject (obj, newKey, false, true);
+    if (!prox)
+      return StatusCode::FAILURE;
+    return StatusCode::SUCCESS;
+  }
+
+
   /**
    * @brief Return the store instance to use.
    * @param ctx The current event context, or nullptr.
diff --git a/Control/StoreGate/test/SGtests.cxx b/Control/StoreGate/test/SGtests.cxx
index 1eadac2521ddb6d6f6c89404439e3893ad7f6c8d..39f47fb3f80c2d275eb59b84dd639619fb5819a9 100644
--- a/Control/StoreGate/test/SGtests.cxx
+++ b/Control/StoreGate/test/SGtests.cxx
@@ -158,6 +158,27 @@ private:
 CLASS_DEF( TestAuxStore , 125030194 , 1 )
 
 
+class SymlinkDataObject
+  : public DataBucketBase
+{
+public:
+  SymlinkDataObject (CLID clid, void* obj) : m_clid (clid), m_obj (obj) {}
+  virtual const CLID& clID() const override { return m_clid; }
+  virtual void* object() override { return m_obj; }
+  virtual const std::type_info& tinfo() const override { return typeid(Foo); }
+  virtual void* cast (CLID, SG::IRegisterTransient*, bool) const override { std::abort(); }
+  virtual void* cast (const std::type_info&, SG::IRegisterTransient*, bool) const override { std::abort(); }
+  virtual DataBucketBase* clone() const override { std::abort(); }
+  virtual void relinquish() override { std::abort(); }
+  virtual void lock() override { std::abort(); }
+
+  
+private:
+  CLID m_clid;
+  void* m_obj;
+};
+
+
 #include "AthContainersInterfaces/CLASS_AUXSTORE.h"
 CLASS_AUXSTORE3( TestVector<BBX> , TestAuxStore, TestAuxStore )
 
@@ -1017,8 +1038,10 @@ namespace Athena_test {
     cout << "\n*** StoreGateSvcClient_test testRecordObject BEGINS ***" << endl;
     Foo::dtor_log.clear();
 
-    SG::DataObjectSharedPtr<DataObject> obj101
-      (SG::asStorable (std::make_unique<Foo> (101)));
+    auto obj101_uptr = std::make_unique<Foo> (101);
+    Foo* obj101_ptr = obj101_uptr.get();
+    SG::DataObjectSharedPtr<DataObject> obj101 
+      (SG::asStorable (std::move (obj101_uptr)));
     SG::DataProxy* proxy101 = rSG.recordObject (obj101, "obj101", false, false);
     assert (proxy101->name() == "obj101");
     assert (proxy101->object() == obj101.get());
@@ -1036,6 +1059,7 @@ namespace Athena_test {
 
     assert (Foo::dtor_log.empty());
 
+    // Dup with returnExisting false.
     std::cout << ">>> test duplicate record1\n";
     SG::DataObjectSharedPtr<DataObject> obj103
       (SG::asStorable (std::make_unique<Foo> (103)));
@@ -1044,24 +1068,43 @@ namespace Athena_test {
     assert (obj103->refCount() == 2); // Held by m_trash
     std::cout << "<<< test duplicate record1\n";
 
+    // Dup with returnExisting true.
     SG::DataObjectSharedPtr<DataObject> obj104
       (SG::asStorable (std::make_unique<Foo> (104)));
     SG::DataProxy* proxy104 = rSG.recordObject (obj104, "obj101", false, true);
     assert (proxy104 == proxy101);
     assert (obj104->refCount() == 1);
 
+    // Dup with returnExisting false but different key.
     std::cout << ">>> test duplicate record2\n";
     SG::DataProxy* proxy999 = rSG.recordObject (obj101, "obj999", false, false);
     assert (proxy999 == nullptr);
     assert (obj101->refCount() == 3); // Held by m_trash
     std::cout << "<<< test duplicate record2\n";
 
+    // Making alias.
     assert (proxy101->refCount() == 1);
     proxy999 = rSG.recordObject (obj101, "obj999", false, true);
     assert (proxy999 == proxy101);
     assert (proxy101->refCount() == 2);
     assert (obj101->refCount() == 3);
 
+    // Making symlink.
+    SG::DataObjectSharedPtr<DataObject> obj105
+      (new SymlinkDataObject (ClassID_traits<Base>::ID(), static_cast<Base*>(obj101_ptr)));
+    SG::DataProxy* proxy105 = rSG.recordObject (obj105, "obj101", false, true);
+    assert (proxy105 == proxy101);
+    assert (obj101->refCount() == 3);
+    assert (proxy101->refCount() == 3);
+
+    // Error handling.
+    std::cout << ">>> test duplicate error\n";
+    SG::DataObjectSharedPtr<DataObject> obj106
+      (new SymlinkDataObject (543543, static_cast<Base*>(obj101_ptr)));
+    SG::DataProxy* proxy106 = rSG.recordObject (obj106, "obj101xxx", false, true);
+    assert (proxy106 == nullptr);
+    std::cout << "<<< test duplicate error\n";
+
     rSG.clearStore();
     assert (obj101->refCount() == 1);
     assert (obj102->refCount() == 1);
@@ -1073,7 +1116,7 @@ namespace Athena_test {
     assert (proxy101->name() == "obj101");
     assert (proxy101->object() == obj101.get());
     assert (obj101->refCount() == 2);
-    assert (proxy101->refCount() == 2);
+    assert (proxy101->refCount() == 3);
     assert (proxy101->isConst());
 
     rSG.clearStore();
@@ -1083,7 +1126,7 @@ namespace Athena_test {
     assert (proxy101->name() == "obj101");
     assert (proxy101->object() == obj101.get());
     assert (obj101->refCount() == 2);
-    assert (proxy101->refCount() == 2);
+    assert (proxy101->refCount() == 3);
     assert (proxy101->isConst());
 
     cout << "\n*** StoreGateSvcClient_test testRecordObject OK ***" << endl;
diff --git a/Control/StoreGate/test/VarHandleBase_test.cxx b/Control/StoreGate/test/VarHandleBase_test.cxx
index 245b8805eb2db6f61a0396658e1f5eeae8573b0f..92da6c4d052c67f6916ae947958a4dc32b8d2553 100644
--- a/Control/StoreGate/test/VarHandleBase_test.cxx
+++ b/Control/StoreGate/test/VarHandleBase_test.cxx
@@ -48,6 +48,7 @@ public:
   using SG::VarHandleBase::get_impl;
   using SG::VarHandleBase::record_impl;
   using SG::VarHandleBase::put_impl;
+  using SG::VarHandleBase::symLink_impl;
   using SG::VarHandleBase::m_store;
   using SG::VarHandleBase::m_proxy;
   using SG::VarHandleBase::m_ptr;
@@ -626,6 +627,7 @@ void test10()
                        true, false, store) == nullptr);
 }
 
+
 // get_impl
 void test11()
 {
@@ -666,6 +668,35 @@ void test11()
 }
 
 
+// symLink_impl
+void test12()
+{
+  std::cout << "test12\n";
+
+  SGTest::TestStore testStore;
+  TestHandle h1 (293847295, "foo", Gaudi::DataHandle::Writer, "FooSvc");
+  assert (h1.symLink_impl (293847295, "bar").isFailure()); 
+  assert (h1.setProxyDict (&testStore).isSuccess());
+  assert (h1.symLink_impl (293847295, "bar").isFailure()); 
+
+  auto obj = std::make_unique<MyObj>();
+  MyObj* objptr = obj.get();
+  assert (h1.record_impl (std::unique_ptr<DataObject>(SG::asStorable(std::move(obj))),
+                          objptr,
+                          true, false).isSuccess());
+  SG::DataProxy* prox = testStore.proxy (293847295, "foo");
+  assert (prox != nullptr);
+
+  assert (h1.symLink_impl (293847295, "bar").isSuccess());
+  assert (testStore.proxy (293847295, "bar") == prox);
+
+  assert (h1.symLink_impl (293847294, "foo").isSuccess());
+  assert (testStore.proxy (293847294, "foo") == prox);
+
+  assert (h1.symLink_impl (293847294, "bar").isFailure());
+}
+
+
 int main()
 {
   errorcheck::ReportMessage::hideErrorLocus();
@@ -683,6 +714,7 @@ int main()
   test9();
   test10();
   test11();
+  test12();
   return 0;
 }
 
diff --git a/Control/StoreGate/test/WriteHandle_test.cxx b/Control/StoreGate/test/WriteHandle_test.cxx
index de9f799354f8e40333d9d7fe03ad4518b90bf40a..77799e82acf98535d6d8f24ef2d22c1c34f27841 100644
--- a/Control/StoreGate/test/WriteHandle_test.cxx
+++ b/Control/StoreGate/test/WriteHandle_test.cxx
@@ -66,6 +66,10 @@ CLASS_DEF (MyObj, 293847295, 1)
 static const CLID MyCLID = 293847295;
 
 
+class MyObj2 {};
+CLASS_DEF (MyObj2, 293847395, 1)
+
+
 class MyDObj : public DataObject
 {
 public:
@@ -430,19 +434,22 @@ void test6()
   assert (!h1.isConst());
   assert (h1.ptr() == p1.get());
 
+  SG::DataObjectSharedPtr<MyDObj> p4 (new MyDObj (400));
+  assert (p4->refCount() == 1);
+
   SG::WriteHandle<MyDObj> h4 ("foo4", "FooSvc");
   assert (h4.setProxyDict (&testStore).isSuccess());
-  assert (h4.record (p1).isSuccess());
-  assert (p1->refCount() == 3);
+  assert (h4.record (p4).isSuccess());
+  assert (p4->refCount() == 2);
   assert (h4.isValid());
-  assert (h4->x == 300);
+  assert (h4->x == 400);
   assert (h4.isConst());
-  assert (h4.ptr() == p1.get());
+  assert (h4.ptr() == p4.get());
 
-  SG::WriteHandle<MyDObj> h5 ("foo4", "FooSvc");
+  SG::WriteHandle<MyDObj> h5 ("foo5", "FooSvc");
   assert (h5.setProxyDict (&testStore).isSuccess());
   assert (h5.record (p1).isFailure());
-  assert (p1->refCount() == 3);
+  assert (p1->refCount() == 2);
   assert (!h5.isValid());
 }
 
@@ -608,15 +615,18 @@ void test11()
   assert (h1.put (p1) == p1.get());
   assert (p1->refCount() == 2);
 
+  SG::DataObjectSharedPtr<MyDObj> p4 (new MyDObj (400));
+  assert (p4->refCount() == 1);
+
   SG::WriteHandle<MyDObj> h4 ("foo4", "FooSvc");
   assert (h4.setProxyDict (&testStore).isSuccess());
-  assert (h4.put (p1) == p1.get());
-  assert (p1->refCount() == 3);
+  assert (h4.put (p4) == p4.get());
+  assert (p4->refCount() == 2);
 
-  SG::WriteHandle<MyDObj> h5 ("foo4");
+  SG::WriteHandle<MyDObj> h5 ("foo5");
   assert (h5.setProxyDict (&testStore).isSuccess());
   assert (h5.put (p1) == nullptr);
-  assert (p1->refCount() == 3);
+  assert (p1->refCount() == 2);
 
   // Record to a different context.
   MyObj::deleted.clear();
@@ -627,6 +637,39 @@ void test11()
 }
 
 
+// symlink/alias.
+void test12()
+{
+  std::cout << "test12\n";
+
+  SGTest::TestStore testStore;
+
+  SG::WriteHandle<MyObj> h1 ("foo1", "FooSvc");
+  assert (h1.setProxyDict (&testStore).isSuccess());
+
+  assert (h1.record (std::make_unique<MyObj>(20)).isSuccess());
+  assert (h1.isValid());
+  assert (h1->x == 20);
+  SG::DataProxy* prox1 = testStore.proxy (ClassID_traits<MyObj>::ID(), "foo1");
+
+  // Making alias.
+  SG::WriteHandleKey<MyObj> h2 ("foo3", "FooSvc");
+  assert (h1.alias (h2).isSuccess());
+  assert (testStore.proxy (ClassID_traits<MyObj>::ID(), "foo3") == prox1);
+  assert (prox1->transientAddress()->alias().count ("foo3") == 1);
+
+  // Making symlink.
+  SG::WriteHandleKey<MyObj2> h3 ("foo1", "FooSvc");
+  assert (h1.symLink (h3).isSuccess());
+  assert (testStore.proxy (ClassID_traits<MyObj2>::ID(), "foo1") == prox1);
+  assert (prox1->transientAddress()->transientID (ClassID_traits<MyObj2>::ID()));
+
+  // Should give an error.
+  SG::WriteHandleKey<MyObj2> h4 ("foo3", "FooSvc");
+  assert (h1.symLink (h4).isFailure());
+}
+
+
 int main()
 {
   errorcheck::ReportMessage::hideErrorLocus();
@@ -645,5 +688,6 @@ int main()
   test9();
   test10();
   test11();
+  test12();
   return 0;
 }