diff --git a/Database/TPTools/TPTools/TPConverter.h b/Database/TPTools/TPTools/TPConverter.h
index 6eda8c220b5142a6b7bdd3efeea6d6a4ae5a619f..0c973e8ed98146b0b2563a1689515b24808c6857 100644
--- a/Database/TPTools/TPTools/TPConverter.h
+++ b/Database/TPTools/TPTools/TPConverter.h
@@ -470,6 +470,25 @@ protected:
 
 // --------------------------------------------------------------
 
+namespace TPCnv {
+
+/** @class  TPCnv::CreateTransient
+    Helper class to make specializing the creation of transient objects
+    in the TPConverterBase::createTransient() easier.
+
+    Provide specialization before definition of your T/P converter for transient typeTRANS
+    The final T/P converter can still overwrite its whole createTransient() method 
+*/
+   template<class TRANS>
+   class CreateTransient  {
+      public:
+      static std::unique_ptr<TRANS>  create() { return std::make_unique<TRANS>(); }
+   };
+
+} // namespace TPCnv
+
+
+
 // Base converter template for polymorphic types
 
 // Converters for objects in the same inheritance tree must share the same
diff --git a/Database/TPTools/TPTools/TPConverter.icc b/Database/TPTools/TPTools/TPConverter.icc
index 4864c828e9ce5420a214280fb04cbfc9d7cf2e59..01634dfea722b4c7f516d855fd82f5b64285c7a9 100644
--- a/Database/TPTools/TPTools/TPConverter.icc
+++ b/Database/TPTools/TPTools/TPConverter.icc
@@ -62,10 +62,13 @@ toPersistent_impl( const TRANS *trans, MsgStream &log )
 
 template< class TRANS_BASE, class TRANS, class PERS >
 TRANS* TPPolyCnvBase<TRANS_BASE, TRANS, PERS>::
-createTransient(const PERS* persObj, MsgStream &log) {
-   std::unique_ptr<TRANS>	trans(new TRANS());
+createTransient(const PERS* persObj, MsgStream &log)
+{
+   // this is by default equivalent to 'new TRANS()'
+   std::unique_ptr<TRANS> trans = TPCnv::CreateTransient<TRANS>::create();
+   
    this->persToTrans(persObj, trans.get(), log);
-   return(trans.release());
+   return( trans.release() );
 }