diff --git a/CMake/CTestCustom.cmake.in b/CMake/CTestCustom.cmake.in
index 9d7cc2ae3132af7fa087f2aac7b5e98b52a3d1f2..e9f681bfcadd6a088db838d21aa6398245e67326 100644
--- a/CMake/CTestCustom.cmake.in
+++ b/CMake/CTestCustom.cmake.in
@@ -114,4 +114,10 @@ set(CTEST_CUSTOM_WARNING_EXCEPTION
   ".*include.mpValue.h.*[Ww]arning.*\\[-Wc\\+\\+11-extensions\\]"
   ".*itksys.SharedForward.h.*warning.*itksys_shared_forward_to_real.*"
   ".*include.mpi_portable_platform.h.*warning.*invalid.suffix.on.literal.*"
+  # Silent latex warnings in ctest
+  ".*LaTeX Warning:.*"
+  ".*Package tabulary Warning:.*"
+  ".*Package rerunfilecheck Warning:.*"
+  # Silent warning: unknown option after ‘#pragma GCC diagnostic’ kind [-Wpragmas] from GCC 4.9
+  ".*warning: unknown option after \\‘\\#pragma GCC diagnostic\\’ kind \\[-Wpragmas\\]"
   )
diff --git a/Documentation/Cookbook/CTestConfig.cmake b/Documentation/Cookbook/CTestConfig.cmake
deleted file mode 100644
index 4c5367353e56fda293045177242aa849d02e9c40..0000000000000000000000000000000000000000
--- a/Documentation/Cookbook/CTestConfig.cmake
+++ /dev/null
@@ -1,7 +0,0 @@
-set(CTEST_PROJECT_NAME "Documentation")
-set(CTEST_NIGHTLY_START_TIME "20:00:00 CEST")
-
-set(CTEST_DROP_METHOD "https")
-set(CTEST_DROP_SITE "dash.orfeo-toolbox.org")
-set(CTEST_DROP_LOCATION "/submit.php?project=Documentation")
-set(CTEST_DROP_SITE_CDASH TRUE)
diff --git a/Documentation/Cookbook/Scripts/otb_warnings.py b/Documentation/Cookbook/Scripts/otb_warnings.py
index 61af6ff2b244b165f964632f6dc595ede845979d..1bace05986cf4cb357b89bd797697d1002695450 100644
--- a/Documentation/Cookbook/Scripts/otb_warnings.py
+++ b/Documentation/Cookbook/Scripts/otb_warnings.py
@@ -37,9 +37,6 @@ def application_documentation_warnings(app):
     for key in app.GetParametersKeys():
         parameter_warnings(warn, app, key)
 
-    if "ram" in keys and not keys[-3] == "ram":
-        warn("'ram' parameter is not third from last")
-
     if "inxml" in keys and not keys[-2] == "inxml":
         warn("'inxml' parameter is not second from last parameter")
 
diff --git a/Modules/Adapters/GdalAdapters/test/otbOGRDataSourceWrapperNew.cxx b/Modules/Adapters/GdalAdapters/test/otbOGRDataSourceWrapperNew.cxx
index 4dccbdd0b96d0a43c18937b8af73785ca6595f98..7e405f764de5c5c29e79bfb98d7e7b3e6e336003 100644
--- a/Modules/Adapters/GdalAdapters/test/otbOGRDataSourceWrapperNew.cxx
+++ b/Modules/Adapters/GdalAdapters/test/otbOGRDataSourceWrapperNew.cxx
@@ -24,7 +24,14 @@
 /*===========================================================================*/
 #define BOOST_TEST_MODULE "otb::org::DataSource creation unit testing"
 #define BOOST_TEST_DYN_LINK
+#if defined(__GNUC__) || defined(__clang__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wunused-parameter"
 #include <boost/test/unit_test.hpp>
+#pragma GCC diagnostic pop
+#else
+#include <boost/test/unit_test.hpp>
+#endif
 #include <boost/foreach.hpp>
 #include "otb_boost_string_header.h"
 #include "itksys/SystemTools.hxx"
diff --git a/Modules/Applications/AppClassification/app/otbClassificationMapRegularization.cxx b/Modules/Applications/AppClassification/app/otbClassificationMapRegularization.cxx
index 3a7c64aa3aa41658ea475b51dd345e9b0c9b3c4b..5a5040931b171c5e33f6125f48d66b6f7167aaa7 100644
--- a/Modules/Applications/AppClassification/app/otbClassificationMapRegularization.cxx
+++ b/Modules/Applications/AppClassification/app/otbClassificationMapRegularization.cxx
@@ -96,25 +96,26 @@ private:
     SetParameterDescription("ip","This group allows setting parameters for classification map regularization by Majority Voting.");
 
     AddParameter(ParameterType_Int, "ip.radius", "Structuring element radius (in pixels)");
-    SetParameterDescription("ip.radius", "The radius of the ball shaped structuring element (expressed in pixels). By default, 'ip.radius = 1 pixel'.");
+    SetParameterDescription("ip.radius", "The radius of the ball shaped structuring element (in pixels).");
     SetDefaultParameterInt("ip.radius", 1.0);
 
-    AddParameter(ParameterType_Bool, "ip.suvbool", "Multiple majority: Undecided(X)/Original");
-    SetParameterDescription("ip.suvbool", "Pixels with more than 1 majority class are marked as Undecided if this parameter is checked (true), or keep their Original labels otherwise (false). Please note that the Undecided value must be different from existing labels in the input labeled image. By default, 'ip.suvbool = false'.");
+    AddParameter(ParameterType_Bool, "ip.suvbool", "Set tie pixels to undecided");
+    SetParameterDescription("ip.suvbool",
+                            "If true, set pixels with more than one majority class to an undecided value. If false, keep their original labels.");
 
     AddParameter(ParameterType_Int, "ip.nodatalabel", "Label for the NoData class");
-    SetParameterDescription("ip.nodatalabel", "Label for the NoData class. Such input pixels keep their NoData label in the output image. By default, 'ip.nodatalabel = 0'.");
+    SetParameterDescription("ip.nodatalabel", "Label for the NoData class. Such input pixels keep their NoData label in the output image.");
     SetDefaultParameterInt("ip.nodatalabel", 0.0);
 
     AddParameter(ParameterType_Int, "ip.undecidedlabel", "Label for the Undecided class");
-    SetParameterDescription("ip.undecidedlabel", "Label for the Undecided class. By default, 'ip.undecidedlabel = 0'.");
+    SetParameterDescription("ip.undecidedlabel", "Label for the Undecided class.");
     SetDefaultParameterInt("ip.undecidedlabel", 0.0);
 
     AddParameter(ParameterType_Bool, "ip.onlyisolatedpixels", "Process isolated pixels only");
-    SetParameterDescription("ip.onlyisolatedpixels", "Only pixels whose label is unique in the neighbordhood will be processed. By default, 'ip.onlyisolatedpixels = false'.");
+    SetParameterDescription("ip.onlyisolatedpixels", "Only pixels whose label is unique in the neighbordhood will be processed.");
 
     AddParameter(ParameterType_Int, "ip.isolatedthreshold", "Threshold for isolated pixels");
-    SetParameterDescription("ip.isolatedthreshold", "Maximum number of neighbours with the same label as the center pixel to consider that it is an isolated pixel. By default, 'ip.isolatedthreshold = 1'.");       
+    SetParameterDescription("ip.isolatedthreshold", "Maximum number of neighbours with the same label as the center pixel to consider that it is an isolated pixel.");
     SetDefaultParameterInt("ip.isolatedthreshold", 1);
 
 
diff --git a/Modules/Applications/AppClassification/include/otbTrainVectorBase.hxx b/Modules/Applications/AppClassification/include/otbTrainVectorBase.hxx
index 3b4fcd115491e0ffd231e0f809cc624cbea949c7..01050eeeeba91ef87f43df81a1dfc23c45cd3921 100644
--- a/Modules/Applications/AppClassification/include/otbTrainVectorBase.hxx
+++ b/Modules/Applications/AppClassification/include/otbTrainVectorBase.hxx
@@ -53,7 +53,7 @@ void TrainVectorBase::DoInit()
   MandatoryOff( "layer" );
   SetDefaultParameterInt( "layer", 0 );
 
-  AddParameter(ParameterType_ListView,  "feat", "Field names for training features.");
+  AddParameter(ParameterType_ListView,  "feat", "Field names for training features");
   SetParameterDescription("feat",
     "List of field names in the input vector data to be used as features for training.");
 
diff --git a/Modules/Applications/AppKMZ/app/otbKmzExport.cxx b/Modules/Applications/AppKMZ/app/otbKmzExport.cxx
index e17020ba963d566d4ad168fcdc1be92d87fa3e4e..978c3c3cc2ceed946b709deb7ee057eb24dd0274 100644
--- a/Modules/Applications/AppKMZ/app/otbKmzExport.cxx
+++ b/Modules/Applications/AppKMZ/app/otbKmzExport.cxx
@@ -61,7 +61,7 @@ private:
     AddParameter(ParameterType_InputImage,  "in",   "Input image");
     SetParameterDescription("in", "Input image");
 
-    AddParameter(ParameterType_OutputFilename, "out",  "Output .kmz product");
+    AddParameter(ParameterType_OutputFilename, "out",  "Output KMZ product");
     SetParameterDescription("out", "Output Kmz product directory (with .kmz extension)");
 
     AddParameter(ParameterType_Int, "tilesize",  "Tile Size");
diff --git a/Modules/Core/Common/include/otbImportVectorImageFilter.h b/Modules/Core/Common/include/otbImportVectorImageFilter.h
index d05e6b8da7344929bdbe40c0571fce4bba8c21df..1344ebe366b7d28c6a31870a8ff386c0cc3b3ed0 100644
--- a/Modules/Core/Common/include/otbImportVectorImageFilter.h
+++ b/Modules/Core/Common/include/otbImportVectorImageFilter.h
@@ -148,16 +148,16 @@ public:
 protected:
   ImportVectorImageFilter();
   virtual ~ImportVectorImageFilter();
-  void PrintSelf(std::ostream& os, itk::Indent indent) const;
+  void PrintSelf(std::ostream& os, itk::Indent indent) const override;
 
   /** This filter does not actually "produce" any data, rather it "wraps"
    * the user supplied data into an itk::Image.  */
-  virtual void GenerateData();
+   void GenerateData() override;
 
   /** This is a source, so it must set the spacing, size, and largest possible
    * region for the output image that it will produce.
    * \sa ProcessObject::GenerateOutputInformation() */
-  virtual void GenerateOutputInformation();
+   void GenerateOutputInformation() override;
 
   /** This filter can only produce the amount of data that it is given,
    * so we must override ProcessObject::EnlargeOutputRequestedRegion()
@@ -166,7 +166,7 @@ protected:
    * given.)
    *
    * \sa ProcessObject::EnlargeOutputRequestedRegion() */
-  virtual void EnlargeOutputRequestedRegion(itk::DataObject *output);
+   void EnlargeOutputRequestedRegion(itk::DataObject *output) override;
 
 private:
   ImportVectorImageFilter(const ImportVectorImageFilter &) = delete;
diff --git a/Modules/Feature/Edge/include/otbLocalHoughFilter.hxx b/Modules/Feature/Edge/include/otbLocalHoughFilter.hxx
index 596f4a1f1662fb423f91a17a531e775ddd786246..c639dfc4434793f51e00856e4a49a0ea857b7eaf 100644
--- a/Modules/Feature/Edge/include/otbLocalHoughFilter.hxx
+++ b/Modules/Feature/Edge/include/otbLocalHoughFilter.hxx
@@ -228,8 +228,7 @@ LocalHoughFilter<TInputImage>
       // ---------------------------------------
       // Get the list of LineSpatialObject lines
       // ---------------------------------------
-
-      #if !defined(ITK_LEGACY_REMOVE)
+      #if ITK_VERSION_MAJOR < 4 || (ITK_VERSION_MAJOR == 4 && ITK_VERSION_MINOR <= 12)
       lines = houghFilter->GetLines(m_NumberOfLines);
       #else
       lines = houghFilter->GetLines();
diff --git a/Modules/Filtering/MathParserX/include/otbParserXPlugins.h b/Modules/Filtering/MathParserX/include/otbParserXPlugins.h
index 195a7e955ba25e0c0076c015c309cc3fe121e002..624b75eb51a23185f214e1124cd17abe51075da6 100644
--- a/Modules/Filtering/MathParserX/include/otbParserXPlugins.h
+++ b/Modules/Filtering/MathParserX/include/otbParserXPlugins.h
@@ -23,7 +23,15 @@
 
 #include "itkMacro.h"
 #include "otbMath.h"
+
+#if defined(__GNUC__) || defined(__clang__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Winconsistent-missing-override"
+#include "mpParser.h"
+#pragma GCC diagnostic pop
+#else
 #include "mpParser.h"
+#endif
 #include <vector>
 
 namespace otb
diff --git a/Modules/Filtering/Path/include/otbRegionImageToRectangularPathListFilter.hxx b/Modules/Filtering/Path/include/otbRegionImageToRectangularPathListFilter.hxx
index 157c01cc3fa28c204b63a166fdd4bcb406b63354..2d58797aa2a99ae2a84a286b0aa3d21a5bb07e0c 100644
--- a/Modules/Filtering/Path/include/otbRegionImageToRectangularPathListFilter.hxx
+++ b/Modules/Filtering/Path/include/otbRegionImageToRectangularPathListFilter.hxx
@@ -129,7 +129,7 @@ RegionImageToRectangularPathListFilter<TInputImage, TOutputPath>
   typedef typename TInputImage::IndexType IndexType;
   std::vector<IndexType>                    regionContainer; // Pb for growing from within loop
   typename std::vector<IndexType>::iterator regionIterator;
-  typename std::vector<IndexType>::iterator regionIterator2;
+
   regionContainer.reserve(Taille[0] * Taille[1]); // to avoid growth problems
   IndexType explorerIndex; // position whose neighbors are to be checked for inclusion in current region
 
diff --git a/Modules/Filtering/Projection/test/otbSensorModel.cxx b/Modules/Filtering/Projection/test/otbSensorModel.cxx
index 6f9aad30e8a214d82e155b03edb4b447bd85995f..27571e59d1b0da02a54190596077ff0886374324 100644
--- a/Modules/Filtering/Projection/test/otbSensorModel.cxx
+++ b/Modules/Filtering/Projection/test/otbSensorModel.cxx
@@ -35,7 +35,15 @@
 #include "otbGeographicalDistance.h"
 #include "otbGenericRSTransform.h"
 
+#if defined(__GNUC__) || defined(__clang__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wunused-parameter"
 #include "ossim/projection/ossimProjection.h"
+#pragma GCC diagnostic pop
+#else
+#include "ossim/projection/ossimProjection.h"
+#endif
+
 #include "ossim/projection/ossimSensorModelFactory.h"
 #include "ossim/ossimPluginProjectionFactory.h"
 
diff --git a/Modules/IO/IOKML/src/otbKMLVectorDataIO.cxx b/Modules/IO/IOKML/src/otbKMLVectorDataIO.cxx
index a2781a04c28e38c1c5de72c26c2cf1082aeaf3e9..7dccf066b801aa0b8df9d02ba61b3d7b7a5b2c7f 100644
--- a/Modules/IO/IOKML/src/otbKMLVectorDataIO.cxx
+++ b/Modules/IO/IOKML/src/otbKMLVectorDataIO.cxx
@@ -22,12 +22,23 @@
 #include "otbKMLVectorDataIO.h"
 
 #include <fstream>
+#if defined(__GNUC__) || defined(__clang__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wunused-parameter"
 
 #include "kml/dom.h"
 #include "kml/dom/kml22.h"
 #include "kml/base/file.h"
 #include "kml/dom/kml_cast.h"
 #include "kml/engine/kml_file.h"
+#pragma GCC diagnostic pop
+#else
+#include "kml/dom.h"
+#include "kml/dom/kml22.h"
+#include "kml/base/file.h"
+#include "kml/dom/kml_cast.h"
+#include "kml/engine/kml_file.h"
+#endif
 
 #include "ogrsf_frmts.h"
 
diff --git a/Modules/IO/ImageIO/include/otbImageFileWriter.hxx b/Modules/IO/ImageIO/include/otbImageFileWriter.hxx
index 56a226626a43d223f8f4656f54cd4e07d83eed0b..956242ba79a6530b4df5e7e9b24256e2d1cd5ac3 100644
--- a/Modules/IO/ImageIO/include/otbImageFileWriter.hxx
+++ b/Modules/IO/ImageIO/include/otbImageFileWriter.hxx
@@ -173,9 +173,6 @@ ImageFileWriter<TInputImage>
   m_StreamingManager = streamingManager;
 }
 
-#ifndef ITK_LEGACY_REMOVE
-
-#endif // ITK_LEGACY_REMOVE
 /**
  *
  */
diff --git a/Modules/IO/KMZWriter/include/otbKmzProductWriter.h b/Modules/IO/KMZWriter/include/otbKmzProductWriter.h
index d1a2d451f2438401eb29e386c51e5ced6ebcac0f..04cc6ff3af6ebe020ea7100bb31b9d5fce88bf94 100644
--- a/Modules/IO/KMZWriter/include/otbKmzProductWriter.h
+++ b/Modules/IO/KMZWriter/include/otbKmzProductWriter.h
@@ -25,8 +25,16 @@
 #include "itkObjectFactory.h"
 
 //kmz creation
+#if defined(__GNUC__) || defined(__clang__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wunused-parameter"
 #include "kml/engine/kmz_file.h"
 #include "kml/base/file.h"
+#pragma GCC diagnostic pop
+#else
+#include "kml/engine/kmz_file.h"
+#include "kml/base/file.h"
+#endif
 
 // Image Tiling
 #include "otbMultiChannelExtractROI.h"
diff --git a/Modules/Learning/LearningBase/include/otbDecisionTree.hxx b/Modules/Learning/LearningBase/include/otbDecisionTree.hxx
index aa2559531bcc091cd089529417c44a0f9bb9b397..3db0d9da2eab964e82a735bd955df4c10933ed77 100644
--- a/Modules/Learning/LearningBase/include/otbDecisionTree.hxx
+++ b/Modules/Learning/LearningBase/include/otbDecisionTree.hxx
@@ -98,7 +98,6 @@ DecisionTree<AttributeValueType, LabelType>
   otbMsgDevMacro( << "Trying to match attribute " << m_Attribute << " with value " << attrValue );
 
   bool found = false;
-  KeyType key;
   if( m_IsFinal )
     {
     typename LabelMapType::const_iterator lmIt = m_LabelMap.begin();
diff --git a/Modules/Learning/Supervised/include/otbOpenCVUtils.h b/Modules/Learning/Supervised/include/otbOpenCVUtils.h
index e2bfeefe54ce91adc812b2c64362e4f5c1182e08..0bd619a70a7fe9fb8f1bbbb15b2c40c0970f2202 100644
--- a/Modules/Learning/Supervised/include/otbOpenCVUtils.h
+++ b/Modules/Learning/Supervised/include/otbOpenCVUtils.h
@@ -21,15 +21,15 @@
 #ifndef otbOpenCVUtils_h
 #define otbOpenCVUtils_h
 
-#include <opencv2/core/core_c.h>
-
 #if defined(__GNUC__) || defined(__clang__)
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wcast-align"
 #include <opencv2/core/core.hpp>
+#include <opencv2/core/core_c.h>
 #pragma GCC diagnostic pop
 #else
 #include <opencv2/core/core.hpp>
+#include <opencv2/core/core_c.h>
 #endif
 
 #if defined(__GNUC__) || defined(__clang__)
diff --git a/Modules/MPI/MPITiffWriter/include/otbSimpleParallelTiffWriter.hxx b/Modules/MPI/MPITiffWriter/include/otbSimpleParallelTiffWriter.hxx
index 47ba2bbe19305bb035705daea6382b6d11bcd353..25639be0e8226747ff74da3e68b42abdcb01ad64 100644
--- a/Modules/MPI/MPITiffWriter/include/otbSimpleParallelTiffWriter.hxx
+++ b/Modules/MPI/MPITiffWriter/include/otbSimpleParallelTiffWriter.hxx
@@ -201,9 +201,6 @@ SimpleParallelTiffWriter<TInputImage>
   m_StreamingManager = streamingManager;
  }
 
-#ifndef ITK_LEGACY_REMOVE
-
-#endif // ITK_LEGACY_REMOVE
 /**
  *
  */