diff --git a/Trigger/TrigHypothesis/TrigTauHypo/src/TrigTauCaloHypoAlgMT.cxx b/Trigger/TrigHypothesis/TrigTauHypo/src/TrigTauCaloHypoAlgMT.cxx
index f0ffaca7778837918475632a96fcc17b35ef1934..e03f9bac680661df8d8eea2d74fe26b943e1beae 100644
--- a/Trigger/TrigHypothesis/TrigTauHypo/src/TrigTauCaloHypoAlgMT.cxx
+++ b/Trigger/TrigHypothesis/TrigTauHypo/src/TrigTauCaloHypoAlgMT.cxx
@@ -43,11 +43,9 @@ StatusCode TrigTauCaloHypoAlgMT::execute( const EventContext& context ) const {
   
   ATH_MSG_DEBUG( "Running with "<< previousDecisionsHandle->size() <<" implicit ReadHandles for previous decisions");
 
-
-  // new decisions
-  auto decisions = std::make_unique<DecisionContainer>();
-  auto aux = std::make_unique<DecisionAuxContainer>();
-  decisions->setStore( aux.get() );
+  // new output decisions
+  SG::WriteHandle<DecisionContainer> outputHandle = createAndStore(decisionOutput(), context ); 
+  auto decisions = outputHandle.ptr();
 
   // input for decision
   std::vector<ITrigTauGenericHypoTool::ClusterInfo> toolInput;
@@ -56,32 +54,30 @@ StatusCode TrigTauCaloHypoAlgMT::execute( const EventContext& context ) const {
   size_t counter=0;
   for ( auto previousDecision: *previousDecisionsHandle ) {
     //get RoI
-    auto roiEL = previousDecision->objectLink<TrigRoiDescriptorCollection>( "initialRoI" );
-    ATH_CHECK( roiEL.isValid() );
-    const TrigRoiDescriptor* roi = *roiEL;
+    auto roiELInfo = TrigCompositeUtils::findLink<TrigRoiDescriptorCollection>( previousDecision, "initialRoI" );
+    ATH_CHECK( roiELInfo.isValid() );
+    const TrigRoiDescriptor* roi = *(roiELInfo.link);
 
     // get View
-    auto viewEL = previousDecision->objectLink< ViewContainer >( "view" );
-    ATH_CHECK( viewEL.isValid() );
-    auto clusterHandle = ViewHelper::makeHandle( *viewEL, m_tauJetKey, context);
+    auto viewELInfo = TrigCompositeUtils::findLink< ViewContainer >( previousDecision, "view" );
+    ATH_CHECK( viewELInfo.isValid() );
+    auto clusterHandle = ViewHelper::makeHandle( *(viewELInfo.link), m_tauJetKey, context);
     ATH_CHECK( clusterHandle.isValid() );
     ATH_MSG_DEBUG ( "Cluster handle size: " << clusterHandle->size() << "..." );
 
     // create new decision
-    auto d = newDecisionIn( decisions.get(), name() );
-
+    auto d = newDecisionIn( decisions, name() );
 
     toolInput.emplace_back( d, roi, clusterHandle.cptr(), previousDecision );
 
      {
-       auto el = ViewHelper::makeLink( *viewEL, clusterHandle, 0 );
+       auto el = ViewHelper::makeLink( *(viewELInfo.link), clusterHandle, 0 );
       ATH_CHECK( el.isValid() );
       d->setObjectLink( "feature",  el );
     }
-     d->setObjectLink( "roi", roiEL );
-     d->setObjectLink( "view", viewEL );
+     d->setObjectLink( "roi", roiELInfo.link );
      TrigCompositeUtils::linkToPrevious( d, decisionInput().key(), counter );
-     ATH_MSG_DEBUG( "Added view, roi, cluster, previous decision to new decision " << counter << " for view " << (*viewEL)->name()  );
+     ATH_MSG_DEBUG( "Added view, roi, cluster, previous decision to new decision " << counter << " for view " << (*viewELInfo.link)->name()  );
      counter++;
 
   }
@@ -94,8 +90,6 @@ StatusCode TrigTauCaloHypoAlgMT::execute( const EventContext& context ) const {
   }
  
   {// make output handle and debug
-    auto outputHandle = SG::makeHandle(decisionOutput(), context);
-    ATH_CHECK( outputHandle.record( std::move( decisions ), std::move( aux ) ) );
     ATH_MSG_DEBUG ( "Exit with "<<outputHandle->size() <<" decisions");
     TrigCompositeUtils::DecisionIDContainer allPassingIDs;
     if ( outputHandle.isValid() ) {
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/CMakeLists.txt b/Trigger/TrigValidation/TrigUpgradeTest/CMakeLists.txt
index 6f7d3d5618ac64d0b255922dab87090a4652e562..7d3df74a6b4f2c3456322a72d2aceadfcd33db66 100644
--- a/Trigger/TrigValidation/TrigUpgradeTest/CMakeLists.txt
+++ b/Trigger/TrigValidation/TrigUpgradeTest/CMakeLists.txt
@@ -102,6 +102,15 @@ atlas_add_test( muMenu
    PROPERTIES WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/unitTestRun_muMenu
    )
 
+
+file( MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/unitTestRun_tauMenu )
+atlas_add_test( tauMenu
+   SCRIPT test/test_tau_menu.sh
+   EXTRA_PATTERNS "-s TriggerSummaryStep.*HLT_.*|TriggerMonitorFinal.*HLT_.*|TrigSignatureMoniMT.*HLT_.*"
+   PROPERTIES TIMEOUT 1000
+   PROPERTIES WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/unitTestRun_tauMenu
+   )
+
 file( MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/unitTestRun_jet )
 atlas_add_test( jetRunData
    SCRIPT test/test_jet.sh
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/tauMenu.ref b/Trigger/TrigValidation/TrigUpgradeTest/share/tauMenu.ref
new file mode 100644
index 0000000000000000000000000000000000000000..f8df9068568c19bff725b0c68ba0d01d26bf3150
--- /dev/null
+++ b/Trigger/TrigValidation/TrigUpgradeTest/share/tauMenu.ref
@@ -0,0 +1,10 @@
+TriggerSummaryStep1                     1   0     DEBUG  +++ HLT_tau0_perf_ptonly_L1TAU12 ID#372992233
+TriggerSummaryStep1                     1   0     DEBUG  +++ HLT_tau25_medium1_tracktwo ID#3693875985
+TriggerSummaryStep1                     3   0     DEBUG  +++ HLT_tau0_perf_ptonly_L1TAU12 ID#372992233
+TriggerSummaryStep1                     3   0     DEBUG  +++ HLT_tau25_medium1_tracktwo ID#3693875985
+TriggerSummaryStep1                     19  0     DEBUG  +++ HLT_tau0_perf_ptonly_L1TAU12 ID#372992233
+TriggerSummaryStep1                     19  0     DEBUG  +++ HLT_tau25_medium1_tracktwo ID#3693875985
+TrigSignatureMoniMT                                INFO HLT_tau0_perf_ptonly_L1TAU12  20        20        3         3         
+TrigSignatureMoniMT                                INFO HLT_tau0_perf_ptonly_L1TAU12 decisions                    3         
+TrigSignatureMoniMT                                INFO HLT_tau25_medium1_tracktwo    20        20        3         3         
+TrigSignatureMoniMT                                INFO HLT_tau25_medium1_tracktwo decisions                    3