diff --git a/Code/ApplicationEngine/otbWrapperParameter.h b/Code/ApplicationEngine/otbWrapperParameter.h
index 73a85a81391c6ced195c9a49161a014ff4ce9135..8e9a1aa696dbb80d23640db7370b0d56fdd1cdde 100644
--- a/Code/ApplicationEngine/otbWrapperParameter.h
+++ b/Code/ApplicationEngine/otbWrapperParameter.h
@@ -126,6 +126,12 @@ public:
   /** Get the user access level */
   itkGetEnumMacro(UserLevel, UserLevel);
 
+  /** Set the parameter io type*/
+  itkSetEnumMacro(Role, Role);
+
+  /** Get the user access level */
+  itkGetEnumMacro(Role, Role);
+
   /** Reset to the the default value. Default implementation does
    * nothing
    */
@@ -210,6 +216,7 @@ protected:
                 m_UserValue(false),
                 m_DefaultValueMode(DefaultValueMode_UNKNOWN),
                 m_UserLevel(UserLevel_Basic),
+                m_Role(Role_Input),
                 m_AutomaticValue(false),
                 m_IsChecked(false)
   {}
@@ -244,6 +251,9 @@ protected:
 
   UserLevel                          m_UserLevel;
 
+  /** Default iotype mode */
+  Role                               m_Role;
+
   /** List of parents Parameters */
   Parameter::Pointer                 m_Root;
 
diff --git a/Code/ApplicationEngine/otbWrapperTypes.h b/Code/ApplicationEngine/otbWrapperTypes.h
index a840c047f34e91b48cfa5289cffc53e19039ecea..ce03697cc10a0cff8cbbab034394bb4ca4a5c08c 100644
--- a/Code/ApplicationEngine/otbWrapperTypes.h
+++ b/Code/ApplicationEngine/otbWrapperTypes.h
@@ -69,6 +69,13 @@ typedef enum
   ImagePixelType_double,
 } ImagePixelType;
 
+typedef enum
+{
+  Role_Input,
+  Role_Output
+} Role;
+
+
 typedef otb::Image<char>                       Int8ImageType;
 typedef otb::Image<unsigned char>              UInt8ImageType;
 typedef otb::Image<short>                      Int16ImageType;