diff --git a/Testing/Code/BasicFilters/CMakeLists.txt b/Testing/Code/BasicFilters/CMakeLists.txt
index 8397a657cca112920f3b03d1a1f61ecd1083d392..6aaa8c665aaa47e9c0a5459162bfae2a55a4f4c3 100644
--- a/Testing/Code/BasicFilters/CMakeLists.txt
+++ b/Testing/Code/BasicFilters/CMakeLists.txt
@@ -2007,6 +2007,24 @@ ADD_TEST(bfTuVectorDataToRandomLineGenerator ${BASICFILTERS_TESTS14}
 )
 
 
+# -----------------------  otbConcatenateVectorDataFilter  -----------------------
+
+ADD_TEST(bfTuConcatenateVectorDataFilterNew ${BASICFILTERS_TESTS14}
+  otbConcatenateVectorDataFilterNew
+)
+
+ADD_TEST(bfTvConcatenateVectorDataFilter ${BASICFILTERS_TESTS14}
+  --compare-ogr ${NOTOL}
+  ${BASELINE_FILES}/otbConcatenateVectorDataFilter_Output.shp
+  ${TEMP}/otbConcatenateVectorDataFilter_Output.shp
+  otbConcatenateVectorDataFilter
+  -in  ${INPUTDATA}/france_coastline.shp
+       ${INPUTDATA}/waterways.shp
+  -out ${TEMP}/otbConcatenateVectorDataFilter_Output.shp
+)
+
+
+
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ otbBasicFiltersTests15 ~~~~~~~~~~~~~~~~~~~~~~~~~
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -2327,6 +2345,7 @@ otbConnectedComponentMuParserFunctorTest.cxx
 otbLabelObjectOpeningMuParserFilterNew.cxx
 otbLabelObjectOpeningMuParserFilterTest.cxx
 otbVectorDataToRandomLineGenerator.cxx
+otbConcatenateVectorDataFilter.cxx
 )
 IF(OTB_DATA_USE_LARGEINPUT)
 SET(BasicFilters_SRCS15
diff --git a/Testing/Code/BasicFilters/otbBasicFiltersTests14.cxx b/Testing/Code/BasicFilters/otbBasicFiltersTests14.cxx
index d0c1ae66a535a7f23a977af29f8e92b6ef1afa40..847960f621ee7435e2b7ac64e6556dc9dcc6f8ba 100644
--- a/Testing/Code/BasicFilters/otbBasicFiltersTests14.cxx
+++ b/Testing/Code/BasicFilters/otbBasicFiltersTests14.cxx
@@ -28,5 +28,6 @@ void RegisterTests()
   REGISTER_TEST(otbLabelObjectOpeningMuParserFilterNew);
   REGISTER_TEST(otbLabelObjectOpeningMuParserFilterTest);
   REGISTER_TEST(otbVectorDataToRandomLineGeneratorNew);
-  REGISTER_TEST(otbVectorDataToRandomLineGenerator);
+  REGISTER_TEST(otbConcatenateVectorDataFilterNew);
+  REGISTER_TEST(otbConcatenateVectorDataFilter);
 }
diff --git a/Testing/Code/BasicFilters/otbConcatenateVectorDataFilter.cxx b/Testing/Code/BasicFilters/otbConcatenateVectorDataFilter.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..a2c53a9ddff41c7faaae4b11966367cd32155115
--- /dev/null
+++ b/Testing/Code/BasicFilters/otbConcatenateVectorDataFilter.cxx
@@ -0,0 +1,87 @@
+/*=========================================================================
+
+   Program:   ORFEO Toolbox
+   Language:  C++
+   Date:      $Date$
+   Version:   $Revision$
+
+
+   Copyright (c) Centre National d'Etudes Spatiales. All rights reserved.
+   See OTBCopyright.txt for details.
+
+
+   This software is distributed WITHOUT ANY WARRANTY; without even
+   the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+   PURPOSE.  See the above copyright notices for more information.
+
+ =========================================================================*/
+
+#include "otbCommandLineArgumentParser.h"
+
+// Images
+#include "otbVectorData.h"
+#include "otbVectorDataFileReader.h"
+#include "otbVectorDataFileWriter.h"
+
+// Concatener
+#include "otbConcatenateVectorDataFilter.h"
+
+
+typedef otb::VectorData<>                                 VectorDataType;
+typedef otb::VectorDataFileReader<VectorDataType>         ReaderType;
+typedef otb::VectorDataFileWriter<VectorDataType>         WriterType;
+typedef otb::ConcatenateVectorDataFilter<VectorDataType>  ConcatenateFilterType; 
+
+int otbConcatenateVectorDataFilterNew (int argc, char * argv[])
+{
+  ConcatenateFilterType::Pointer concatenate = ConcatenateFilterType::New();
+  return EXIT_SUCCESS;
+}
+
+int otbConcatenateVectorDataFilter (int argc, char * argv[])
+{
+  // Parse command line parameters
+  typedef otb::CommandLineArgumentParser ParserType;
+  ParserType::Pointer parser = ParserType::New();
+  parser->AddOptionNParams("--InputVectorDatas","Input VectorDatas to concatenate ", "-in", true);
+  parser->AddOption("--OutputVectorData","Output concatenated VectorData","-out",true);
+    
+  typedef otb::CommandLineArgumentParseResult ParserResultType;
+  ParserResultType::Pointer  parseResult = ParserResultType::New();
+  
+  try
+    {
+    parser->ParseCommandLine(argc,argv,parseResult);
+    }
+  catch ( itk::ExceptionObject & err )
+    {
+    return EXIT_FAILURE;
+    }
+  
+  
+  // Get number of input vectorDatas
+  unsigned int nbInputs = parseResult->GetNumberOfParameters("--InputVectorDatas");
+
+  // Instanciate a concatenate filter 
+    // Concatenate the vector datas
+  ConcatenateFilterType::Pointer concatenate = ConcatenateFilterType::New();
+  
+  for (unsigned int idx = 0; idx < nbInputs; idx++)
+    {
+    // Reader object
+    ReaderType::Pointer reader = ReaderType::New();
+    //std::cout << << std::endl;
+    reader->SetFileName(parseResult->GetParameterString("--InputVectorDatas",idx ));
+    reader->Update();
+    
+    concatenate->AddInput(reader->GetOutput());
+    }
+  
+  // Write the output 
+  WriterType::Pointer writer = WriterType::New();
+  writer->SetFileName(parseResult->GetParameterString("--OutputVectorData"));
+  writer->SetInput(concatenate->GetOutput());
+  writer->Update();
+
+  return EXIT_SUCCESS;
+}