diff --git a/Modules/Wrappers/ApplicationEngine/include/otbWrapperInputFilenameListParameter.h b/Modules/Wrappers/ApplicationEngine/include/otbWrapperInputFilenameListParameter.h
index da8d4a47c4bb6443610f1df867c9517a3a8972d0..d0fbb14c1633ce48ee9211c48dd33d76501bd0bc 100644
--- a/Modules/Wrappers/ApplicationEngine/include/otbWrapperInputFilenameListParameter.h
+++ b/Modules/Wrappers/ApplicationEngine/include/otbWrapperInputFilenameListParameter.h
@@ -90,8 +90,9 @@ protected:
 
   /** */
   using Superclass::FromString;
-  void FromString( const ParameterType::Pointer &,
-		   const std::string & ) const override;
+  const ParameterType::Pointer &
+    FromString( const ParameterType::Pointer &,
+		const std::string & ) const override;
 
 //
 // Private methods.
diff --git a/Modules/Wrappers/ApplicationEngine/include/otbWrapperInputImageListParameter.h b/Modules/Wrappers/ApplicationEngine/include/otbWrapperInputImageListParameter.h
index ac4972ec58c4762fca6f6e00c350aa8f215eb928..540290d6868283be5f9b857d6b6798b2dad3ffd3 100644
--- a/Modules/Wrappers/ApplicationEngine/include/otbWrapperInputImageListParameter.h
+++ b/Modules/Wrappers/ApplicationEngine/include/otbWrapperInputImageListParameter.h
@@ -107,8 +107,9 @@ protected:
 
   /** */
   using Superclass::FromString;
-  void FromString( const ParameterType::Pointer &,
-		   const std::string & ) const override;
+  const ParameterType::Pointer &
+    FromString( const ParameterType::Pointer &,
+		const std::string & ) const override;
 
 //
 // Private methods.
diff --git a/Modules/Wrappers/ApplicationEngine/include/otbWrapperInputVectorDataListParameter.h b/Modules/Wrappers/ApplicationEngine/include/otbWrapperInputVectorDataListParameter.h
index fef04a5d543aa92c3dc569417a0760b83bbe75e2..c6fa2b3b459d30b04f937f9fdb961a5676e157b1 100644
--- a/Modules/Wrappers/ApplicationEngine/include/otbWrapperInputVectorDataListParameter.h
+++ b/Modules/Wrappers/ApplicationEngine/include/otbWrapperInputVectorDataListParameter.h
@@ -98,8 +98,9 @@ protected:
 
   /** */
   using Superclass::FromString;
-  void FromString( const ParameterType::Pointer &,
-		   const std::string & ) const override;
+  const ParameterType::Pointer &
+    FromString( const ParameterType::Pointer &,
+		const std::string & ) const override;
 
 private:
   // Purposely not implemented
diff --git a/Modules/Wrappers/ApplicationEngine/include/otbWrapperParameterList.h b/Modules/Wrappers/ApplicationEngine/include/otbWrapperParameterList.h
index 1b5adfaefb69f8efe4bfefc13f508a8b2a772797..2c9c699fbe3c540a62d9cc4b39c39bfa052508b6 100644
--- a/Modules/Wrappers/ApplicationEngine/include/otbWrapperParameterList.h
+++ b/Modules/Wrappers/ApplicationEngine/include/otbWrapperParameterList.h
@@ -177,7 +177,7 @@ protected:
 
   /** std::string -> ParameterType::ValueType protocol */
   virtual
-    void
+    const typename ParameterType::Pointer &
     FromString( const typename ParameterType::Pointer &,
 		const std::string & ) const = 0;
 
diff --git a/Modules/Wrappers/ApplicationEngine/include/otbWrapperParameterList.txx b/Modules/Wrappers/ApplicationEngine/include/otbWrapperParameterList.txx
index d76245bc645555991c127265bf18d110f7586339..c908931411bd06704769db48fc698f9ba2ae239f 100644
--- a/Modules/Wrappers/ApplicationEngine/include/otbWrapperParameterList.txx
+++ b/Modules/Wrappers/ApplicationEngine/include/otbWrapperParameterList.txx
@@ -473,11 +473,9 @@ typename T::Pointer
 ParameterList< T >
 ::FromString( const std::string & s ) const
 {
-  typename T::Pointer parameter;
+  typename T::Pointer parameter( T::New() );
 
-  FromString( s );
-
-  return parameter;
+  return FromString( parameter, s );
 }
 
 } // End namespace Wrapper
diff --git a/Modules/Wrappers/ApplicationEngine/include/otbWrapperStringListParameter.h b/Modules/Wrappers/ApplicationEngine/include/otbWrapperStringListParameter.h
index 4850e4991345a7660e0eefcd2ccefe6b65abc8e8..4f394bd951012444dac05ff72ccc2ebb36de8a73 100644
--- a/Modules/Wrappers/ApplicationEngine/include/otbWrapperStringListParameter.h
+++ b/Modules/Wrappers/ApplicationEngine/include/otbWrapperStringListParameter.h
@@ -98,8 +98,9 @@ protected:
 
   /** */
   using Superclass::FromString;
-  void FromString( const ParameterType::Pointer &,
-		   const std::string & ) const override;
+  const ParameterType::Pointer &
+    FromString( const ParameterType::Pointer &,
+		const std::string & ) const override;
 
 //
 // Private methods.
diff --git a/Modules/Wrappers/ApplicationEngine/src/otbWrapperInputFilenameListParameter.cxx b/Modules/Wrappers/ApplicationEngine/src/otbWrapperInputFilenameListParameter.cxx
index 5d8da5bae206061239062880fceee66bb0573d6c..72b5aa13caf22c3827c30c52722f46d7bffd733d 100644
--- a/Modules/Wrappers/ApplicationEngine/src/otbWrapperInputFilenameListParameter.cxx
+++ b/Modules/Wrappers/ApplicationEngine/src/otbWrapperInputFilenameListParameter.cxx
@@ -111,7 +111,7 @@ InputFilenameListParameter
 }
 
 /*****************************************************************************/
-void
+const InputFilenameListParameter::ParameterType::Pointer &
 InputFilenameListParameter
 ::FromString( const ParameterType::Pointer & p,
 	      const std::string & s ) const
@@ -119,6 +119,8 @@ InputFilenameListParameter
   assert( !p.IsNull() );
 
   p->SetValue( s );
+
+  return p;
 }
 
 }
diff --git a/Modules/Wrappers/ApplicationEngine/src/otbWrapperInputImageListParameter.cxx b/Modules/Wrappers/ApplicationEngine/src/otbWrapperInputImageListParameter.cxx
index b42bfc934d4b516df6c2c1195e1729114f6444cd..2363f9a2a3295c695c96526a0e5b28e5842e9de8 100644
--- a/Modules/Wrappers/ApplicationEngine/src/otbWrapperInputImageListParameter.cxx
+++ b/Modules/Wrappers/ApplicationEngine/src/otbWrapperInputImageListParameter.cxx
@@ -236,7 +236,7 @@ InputImageListParameter
 }
 
 /*****************************************************************************/
-void
+const InputImageListParameter::ParameterType::Pointer &
 InputImageListParameter
 ::FromString( const ParameterType::Pointer & p,
 	      const std::string & s ) const
@@ -244,6 +244,8 @@ InputImageListParameter
   assert( !p.IsNull() );
 
   p->SetFromFileName( s );
+
+  return p;
 }
 
 
diff --git a/Modules/Wrappers/ApplicationEngine/src/otbWrapperInputVectorDataListParameter.cxx b/Modules/Wrappers/ApplicationEngine/src/otbWrapperInputVectorDataListParameter.cxx
index 7afb8494d1f8c63ef64446633498a3a8ec6f20b3..3b21c919327b2b75ae04c2d9073fab0b0c595125 100644
--- a/Modules/Wrappers/ApplicationEngine/src/otbWrapperInputVectorDataListParameter.cxx
+++ b/Modules/Wrappers/ApplicationEngine/src/otbWrapperInputVectorDataListParameter.cxx
@@ -201,7 +201,7 @@ InputVectorDataListParameter
 }
 
 /*****************************************************************************/
-void
+const InputVectorDataListParameter::ParameterType::Pointer &
 InputVectorDataListParameter
 ::FromString( const ParameterType::Pointer & p,
 	      const std::string & s ) const
@@ -209,6 +209,8 @@ InputVectorDataListParameter
   assert( !p.IsNull() );
 
   p->SetFromFileName( s );
+
+  return p;
 }
 
 
diff --git a/Modules/Wrappers/ApplicationEngine/src/otbWrapperStringListParameter.cxx b/Modules/Wrappers/ApplicationEngine/src/otbWrapperStringListParameter.cxx
index 610113316362897285b61fe7d780d04ba638ecbb..c880f2fa3ec094f7d9e1317a6d8fc26727162a15 100644
--- a/Modules/Wrappers/ApplicationEngine/src/otbWrapperStringListParameter.cxx
+++ b/Modules/Wrappers/ApplicationEngine/src/otbWrapperStringListParameter.cxx
@@ -115,7 +115,7 @@ StringListParameter
 }
 
 /*****************************************************************************/
-void
+const StringListParameter::ParameterType::Pointer &
 StringListParameter
 ::FromString( const ParameterType::Pointer & p,
 	      const std::string & s ) const
@@ -123,6 +123,8 @@ StringListParameter
   assert( !p.IsNull() );
 
   p->SetValue( s );
+
+  return p;
 }