diff --git a/Modules/Applications/AppClassification/app/otbTrainImagesClassifier.cxx b/Modules/Applications/AppClassification/app/otbTrainImagesClassifier.cxx
index 3c1bada305be2ec720d0ee0f32e49d571213fb18..5a5512b35a7fc52465a840557e1b786374ca0b15 100644
--- a/Modules/Applications/AppClassification/app/otbTrainImagesClassifier.cxx
+++ b/Modules/Applications/AppClassification/app/otbTrainImagesClassifier.cxx
@@ -73,20 +73,20 @@ public:
 
 
     // Change mandatory of input vector depending on supervised and unsupervised mode.
-    if( HasValue( "classifier" ) )
-      {
-      UpdateInternalParameters( "training" );
-      switch( trainVectorBase->GetClassifierCategory() )
-        {
-        case TrainVectorBase::Unsupervised:
-          MandatoryOff( "io.vd" );
-          break;
-        default:
-        case TrainVectorBase::Supervised:
-          MandatoryOn( "io.vd" );
-          break;
-        }
-      }
+//    if( HasValue( "classifier" ) )
+//      {
+//      UpdateInternalParameters( "training" );
+//      switch( trainVectorBase->GetClassifierCategory() )
+//        {
+//        case TrainVectorBase::Unsupervised:
+//          MandatoryOff( "io.vd" );
+//          break;
+//        default:
+//        case TrainVectorBase::Supervised:
+//          MandatoryOn( "io.vd" );
+//          break;
+//        }
+//      }
 
   }
 
@@ -113,14 +113,14 @@ public:
       ComputePolygonStatistics( imageList, validationVectorFileList, fileNames.polyStatValidOutputs );
       ComputeSamplingRate( fileNames.polyStatValidOutputs, fileNames.rateValidOut, rates.fmv );
       SelectAndExtractValidationSamples( fileNames, imageList, validationVectorFileList );
-      if( HasInputVector ) // if input vector is provided the sampleTrainOutputs is the previously extracted sampleOutputs
-        fileNames.sampleTrainOutputs = fileNames.sampleOutputs;
+//    if( HasInputVector ) // if input vector is provided the sampleTrainOutputs is the previously extracted sampleOutputs
+      fileNames.sampleTrainOutputs = fileNames.sampleOutputs;
       }
     else if(GetParameterFloat("sample.vtr") != 0.0)// Split training data to validation
       {
-      if( !HasInputVector ) // Compute one class statistics and sampling rate for the generated vector.
-        ComputePolygonStatistics( imageList, fileNames.sampleOutputs, fileNames.polyStatTrainOutputs );
-        ComputeSamplingRate( fileNames.polyStatTrainOutputs, fileNames.rateTrainOut, rates.fmt );
+//      if( !HasInputVector ) // Compute one class statistics and sampling rate for the generated vector.
+//        ComputePolygonStatistics( imageList, fileNames.sampleOutputs, fileNames.polyStatTrainOutputs );
+//        ComputeSamplingRate( fileNames.polyStatTrainOutputs, fileNames.rateTrainOut, rates.fmt );
       SplitTrainingToValidationSamples( fileNames, imageList );
       }
     else // nothing to do, except update fileNames
@@ -140,16 +140,16 @@ public:
                         std::vector<std::string> vectorFileList,
                         const SamplingRates& rates)
   {
-    if( !vectorFileList.empty() ) // Select and Extract samples for training with computed statistics and rates
-      {
+//    if( !vectorFileList.empty() ) // Select and Extract samples for training with computed statistics and rates
+//      {
       ComputePolygonStatistics( imageList, vectorFileList, fileNames.polyStatTrainOutputs );
       ComputeSamplingRate( fileNames.polyStatTrainOutputs, fileNames.rateTrainOut, rates.fmt );
       SelectAndExtractTrainSamples( fileNames, imageList, vectorFileList, SamplingStrategy::CLASS );
-      }
-    else // Select training samples base on geometric sampling if no input vector is provided
-      {
-      SelectAndExtractTrainSamples( fileNames, imageList, vectorFileList, SamplingStrategy::GEOMETRIC, "fid" );
-      }
+//      }
+//    else // Select training samples base on geometric sampling if no input vector is provided
+//      {
+//      SelectAndExtractTrainSamples( fileNames, imageList, vectorFileList, SamplingStrategy::GEOMETRIC, "fid" );
+//      }
   }
 
 
@@ -165,7 +165,7 @@ public:
 
     unsigned long nbInputs = imageList->Size();
 
-    if( !HasInputVector && trainVectorBase->GetClassifierCategory() == TrainVectorBase::Supervised )
+    if( !HasInputVector ) // && trainVectorBase->GetClassifierCategory() == TrainVectorBase::Supervised )
       {
       otbAppLogFATAL( "Missing input vector data files" );
       }
diff --git a/Modules/Applications/AppClassification/include/otbTrainImagesBase.txx b/Modules/Applications/AppClassification/include/otbTrainImagesBase.txx
index a0b881ee58c6af146c3bf3b911f0bccfc343e529..70bd7798b79dabe6d24bb22b3142a91ade47b449 100644
--- a/Modules/Applications/AppClassification/include/otbTrainImagesBase.txx
+++ b/Modules/Applications/AppClassification/include/otbTrainImagesBase.txx
@@ -37,7 +37,7 @@ void TrainImagesBase::InitIO()
   SetParameterDescription( "io.il", "A list of input images." );
   AddParameter( ParameterType_InputVectorDataList, "io.vd", "Input Vector Data List" );
   SetParameterDescription( "io.vd", "A list of vector data to select the training samples." );
-  MandatoryOff( "io.vd" );
+  MandatoryOn( "io.vd" );
 
   AddParameter( ParameterType_Empty, "cleanup", "Temporary files cleaning" );
   EnableParameter( "cleanup" );
@@ -83,12 +83,12 @@ void TrainImagesBase::InitSampling()
   SetMaximumParameterFloatValue( "sample.vtr", 1.0 );
   SetMinimumParameterFloatValue( "sample.vtr", 0.0 );
 
-  AddParameter( ParameterType_Float, "sample.percent", "Percentage of sample extract from images" );
-  SetParameterDescription( "sample.percent", "Percentage of sample extract from images for "
-          "training and validation when only images are provided." );
-  SetDefaultParameterFloat( "sample.percent", 1.0 );
-  SetMinimumParameterFloatValue( "sample.percent", 0.0 );
-  SetMaximumParameterFloatValue( "sample.percent", 1.0 );
+//  AddParameter( ParameterType_Float, "sample.percent", "Percentage of sample extract from images" );
+//  SetParameterDescription( "sample.percent", "Percentage of sample extract from images for "
+//          "training and validation when only images are provided." );
+//  SetDefaultParameterFloat( "sample.percent", 1.0 );
+//  SetMinimumParameterFloatValue( "sample.percent", 0.0 );
+//  SetMaximumParameterFloatValue( "sample.percent", 1.0 );
 
   ShareSamplingParameters();
   ConnectSamplingParameters();
@@ -274,12 +274,12 @@ void TrainImagesBase::SelectAndExtractSamples(FloatVectorImageType *image, std::
   // Change the selection strategy based on selected sampling strategy
   switch( strategy )
     {
-    case GEOMETRIC:
-      GetInternalApplication( "select" )->SetParameterString( "sampler", "random", false );
-      GetInternalApplication( "select" )->SetParameterString( "strategy", "percent", false );
-      GetInternalApplication( "select" )->SetParameterFloat( "strategy.percent.p",
-                                                             GetParameterFloat( "sample.percent" ), false );
-      break;
+//    case GEOMETRIC:
+//      GetInternalApplication( "select" )->SetParameterString( "sampler", "random", false );
+//      GetInternalApplication( "select" )->SetParameterString( "strategy", "percent", false );
+//      GetInternalApplication( "select" )->SetParameterFloat( "strategy.percent.p",
+//                                                             GetParameterFloat( "sample.percent" ), false );
+//      break;
     case CLASS:
     default:
       GetInternalApplication( "select" )->SetParameterString( "vec", vectorFileName, false );