diff --git a/Modules/Applications/AppHyperspectral/app/otbHyperspectralUnmixing.cxx b/Modules/Applications/AppHyperspectral/app/otbHyperspectralUnmixing.cxx
index 13c2306602d67449e1c280474c643b48a6e40358..38ee5a8c6f9a3e2a396cb978688d061d9064ff30 100644
--- a/Modules/Applications/AppHyperspectral/app/otbHyperspectralUnmixing.cxx
+++ b/Modules/Applications/AppHyperspectral/app/otbHyperspectralUnmixing.cxx
@@ -115,7 +115,6 @@ private:
     SetDocAuthors("OTB-Team");
     SetDocSeeAlso("VertexComponentAnalysis");
 
-    AddDocTag("Miscellaneous");
     AddDocTag(Tags::Hyperspectral);
 
     AddParameter(ParameterType_InputImage,  "in",   "Input Image Filename");
diff --git a/Modules/Applications/AppHyperspectral/app/otbVertexComponentAnalysis.cxx b/Modules/Applications/AppHyperspectral/app/otbVertexComponentAnalysis.cxx
index e919d57f5d110ad42a682d2363effa88d1b17e2d..818c433a09c84e5ad0489f2a35b7a89c25ec4356 100644
--- a/Modules/Applications/AppHyperspectral/app/otbVertexComponentAnalysis.cxx
+++ b/Modules/Applications/AppHyperspectral/app/otbVertexComponentAnalysis.cxx
@@ -71,7 +71,6 @@ private:
     "unmix hyperspectral data, in IEEE Transactions on Geoscience and"
     "Remote Sensing, vol. 43, no. 4, pp. 898-910, April 2005.");
 
-    AddDocTag("Miscellaneous");
     AddDocTag(Tags::Hyperspectral);
     AddDocTag(Tags::DimensionReduction);
 
diff --git a/Modules/Applications/AppImageUtils/app/otbCompareImages.cxx b/Modules/Applications/AppImageUtils/app/otbCompareImages.cxx
index cbdcb90795e11c3400a1bbeb9ab02c4b612f98db..643d643fdf9535afb3ab02106bfafb96a0daf276 100644
--- a/Modules/Applications/AppImageUtils/app/otbCompareImages.cxx
+++ b/Modules/Applications/AppImageUtils/app/otbCompareImages.cxx
@@ -61,9 +61,7 @@ private:
     SetDocAuthors("OTB-Team");
     SetDocSeeAlso("BandMath application, ImageStatistics");
 
-	AddDocTag("Miscellaneous");
-    AddDocTag("Statistics");
-	AddDocTag(Tags::Manip);
+    AddDocTag(Tags::Manip);
 
     AddParameter(ParameterType_Group, "ref", "Reference image properties");
     AddParameter(ParameterType_InputImage,  "ref.in",   "Reference image");
@@ -114,7 +112,7 @@ private:
     AddParameter(ParameterType_Float, "psnr",  "PSNR");
     SetParameterDescription("psnr", "Peak Signal to Noise Ratio value");
     SetParameterRole("psnr", Role_Output);
-    
+
     AddParameter(ParameterType_Float, "count",  "count");
     SetParameterDescription("count", "Nb of pixels which are different");
     SetParameterRole("count", Role_Output);
@@ -172,12 +170,12 @@ private:
   void DoExecute() override
   {
     // Init filters
-    ExtractROIMonoFilterType::Pointer extractRefFilter = 
+    ExtractROIMonoFilterType::Pointer extractRefFilter =
       ExtractROIMonoFilterType::New();
-    ExtractROIMonoFilterType::Pointer extractMeasFilter = 
+    ExtractROIMonoFilterType::Pointer extractMeasFilter =
       ExtractROIMonoFilterType::New();
-    StreamingCompareImageFilterType::Pointer compareFilter = 
-      StreamingCompareImageFilterType::New(); 
+    StreamingCompareImageFilterType::Pointer compareFilter =
+      StreamingCompareImageFilterType::New();
 
     // Get input image pointers
     FloatVectorImageType::Pointer refIm = this->GetParameterImage("ref.in");
diff --git a/Modules/Applications/AppImageUtils/app/otbPixelValue.cxx b/Modules/Applications/AppImageUtils/app/otbPixelValue.cxx
index 80c55244c8de69e0ba860acb9eb91751a06f92c7..ea8bb52d905adbee6cb8277fce8002076655d466 100644
--- a/Modules/Applications/AppImageUtils/app/otbPixelValue.cxx
+++ b/Modules/Applications/AppImageUtils/app/otbPixelValue.cxx
@@ -41,7 +41,7 @@ public:
   typedef otb::MultiChannelExtractROI<FloatVectorImageType::InternalPixelType,
               FloatVectorImageType::InternalPixelType> ExtractROIFilterType;
 
-  typedef otb::GenericRSTransform<>  RSTransformType;                                    
+  typedef otb::GenericRSTransform<>  RSTransformType;
   /** Standard macro */
   itkNewMacro(Self);
 
@@ -64,10 +64,8 @@ private:
     SetDocAuthors("OTB-Team");
     SetDocSeeAlso(" ");
 
-    AddDocTag("Miscellaneous");
-    AddDocTag("Utilities");
-    AddDocTag("Coordinates");
-    AddDocTag("Raster");
+    AddDocTag(Tags::Manip);
+    AddDocTag(Tags::Coordinates);
 
     AddParameter(ParameterType_InputImage , "in", "Input Image");
     SetParameterDescription("in" , "Input image");
@@ -81,19 +79,19 @@ private:
           "This will be the Y coordinate interpreted depending on the "
           "chosen mode");
 
-    AddParameter(ParameterType_Choice , "mode" , 
+    AddParameter(ParameterType_Choice , "mode" ,
           "Coordinate system used to designate the pixel");
-    SetParameterDescription( "mode" , 
+    SetParameterDescription( "mode" ,
           "Different modes can be selected, default mode is Index.");
     AddChoice( "mode.index" , "Index");
-    SetParameterDescription( "mode.index" , 
+    SetParameterDescription( "mode.index" ,
           "This mode uses the given coordinates as index to locate the pixel.");
     AddChoice( "mode.physical" , "Image physical space");
-    SetParameterDescription( "mode.physical" , 
+    SetParameterDescription( "mode.physical" ,
           "This mode interprets the given coordinates in the image "
           "physical space.");
     AddChoice( "mode.epsg" , "EPSG coordinates");
-    SetParameterDescription( "mode.epsg" , 
+    SetParameterDescription( "mode.epsg" ,
           "This mode interprets the given coordinates in the specified "
           "geographical coordinate system by the EPSG code.");
 
@@ -169,7 +167,7 @@ private:
       RSTransformType::Pointer inverse = RSTransformType::New();
       if ( HasUserValue("mode.epsg.code") )
         {
-        std::string wktFromEpsg = 
+        std::string wktFromEpsg =
           otb::GeoInformationConversion::ToWKT(GetParameterInt( "mode.epsg.code" ));
         inverse->SetOutputProjectionRef(wktFromEpsg);
         }
@@ -193,13 +191,13 @@ private:
       if ( coma != std::string::npos )
         {
         std::size_t zero = boundaries[i].find_last_not_of("0");
-        if ( zero != std::string::npos ) 
+        if ( zero != std::string::npos )
           boundaries[i].erase(zero + 1);
         else
           boundaries[i] = "0";
         }
       }
-  
+
     std::string box = "";
     box += "["+boundaries[2]+" , "+boundaries[0]+"] x ";
     box += "["+boundaries[3]+" , "+boundaries[1]+"]";
@@ -217,7 +215,7 @@ private:
       {
       id[0] = static_cast< int >( GetParameterFloat( "coordx" ) );
       id[1] = static_cast< int >( GetParameterFloat( "coordy" ) );
-      if (static_cast< unsigned int >( id[0] ) >= 
+      if (static_cast< unsigned int >( id[0] ) >=
                     inImage->GetLargestPossibleRegion().GetSize()[0]
        || static_cast< unsigned int >( id[1] ) >=
                     inImage->GetLargestPossibleRegion().GetSize()[1]
@@ -239,16 +237,16 @@ private:
       pixel[ 1 ] = GetParameterFloat( "coordy" );
       isPixelIn = inImage->TransformPhysicalPointToIndex(pixel,id);
       }
-    
+
     else if ( mode == "epsg" )
       {
       RSTransformType::Pointer rsTransform = RSTransformType::New();
       if ( HasUserValue("mode.epsg.code") )
         {
-        std::string wktFromEpsg = 
+        std::string wktFromEpsg =
           otb::GeoInformationConversion::ToWKT( GetParameterInt( "mode.epsg.code" ) );
         rsTransform->SetInputProjectionRef(wktFromEpsg);
-        }      
+        }
       rsTransform->SetOutputKeywordList( inImage->GetImageKeywordlist() );
       rsTransform->SetOutputProjectionRef( inImage->GetProjectionRef() );
       rsTransform->InstantiateTransform();
@@ -274,7 +272,7 @@ private:
     // Extract the channels if needed
     if ( GetParameterByKey("cl")->GetActive() )
       {
-      for (unsigned int idx = 0; idx < GetSelectedItems("cl").size(); ++idx) 
+      for (unsigned int idx = 0; idx < GetSelectedItems("cl").size(); ++idx)
         {
         extractor->SetChannel(GetSelectedItems("cl")[idx] + 1 );
         }
@@ -286,7 +284,7 @@ private:
     region.SetIndex(id);
 
     extractor->SetExtractionRegion(region);
-    extractor->Update();   
+    extractor->Update();
 
     // Display the pixel value
     id.Fill(0);
diff --git a/Modules/Applications/AppKMZ/app/otbKmzExport.cxx b/Modules/Applications/AppKMZ/app/otbKmzExport.cxx
index 6d00a5e411f90a1b247bb7928ce84228f53e0f08..e17020ba963d566d4ad168fcdc1be92d87fa3e4e 100644
--- a/Modules/Applications/AppKMZ/app/otbKmzExport.cxx
+++ b/Modules/Applications/AppKMZ/app/otbKmzExport.cxx
@@ -56,9 +56,7 @@ private:
     SetDocAuthors("OTB-Team");
     SetDocSeeAlso("Conversion");
 
-	AddDocTag("Miscellaneous");
-    AddDocTag("KMZ");
-    AddDocTag("Export");
+    AddDocTag(Tags::Vector);
 
     AddParameter(ParameterType_InputImage,  "in",   "Input image");
     SetParameterDescription("in", "Input image");
@@ -138,4 +136,3 @@ private:
 }
 
 OTB_APPLICATION_EXPORT(otb::Wrapper::KmzExport)
-
diff --git a/Modules/Applications/AppMathParser/app/otbBandMath.cxx b/Modules/Applications/AppMathParser/app/otbBandMath.cxx
index 2503d924eb04d348d1d5062e87195466ce0f1608..50fd803aa2ba80cf2302d8e376f115824fc09a32 100644
--- a/Modules/Applications/AppMathParser/app/otbBandMath.cxx
+++ b/Modules/Applications/AppMathParser/app/otbBandMath.cxx
@@ -94,7 +94,7 @@ private:
     SetDocLimitations( "None" );
     SetDocAuthors( "OTB-Team" );
     SetDocSeeAlso("[1] http://beltoforion.de/article.php?a=muparser");
-    AddDocTag( "Miscellaneous" );
+    AddDocTag(Tags::Manip);
 
     AddParameter( ParameterType_InputImageList, "il", "Input image-list" );
     SetParameterDescription(
diff --git a/Modules/Applications/AppMathParserX/app/otbBandMathX.cxx b/Modules/Applications/AppMathParserX/app/otbBandMathX.cxx
index 1d87d0c3270ef98fb50e7fc2a066342615fa62ab..7352a2d73c7707cca23ff44e87d0d6dc4d89176a 100644
--- a/Modules/Applications/AppMathParserX/app/otbBandMathX.cxx
+++ b/Modules/Applications/AppMathParserX/app/otbBandMathX.cxx
@@ -205,7 +205,7 @@ private:
     SetDocAuthors( "OTB-Team" );
     SetDocSeeAlso("[1] http://articles.beltoforion.de/article.php?a=muparserx\n"
       "[2] BandMath");
-    AddDocTag( "Miscellaneous" );
+    AddDocTag(Tags::Manip);
 
     AddParameter( ParameterType_InputImageList, "il", "Input image-list" );
     SetParameterDescription( "il", "Image-list to perform computation on." );
diff --git a/Modules/Applications/AppProjection/app/otbObtainUTMZoneFromGeoPoint.cxx b/Modules/Applications/AppProjection/app/otbObtainUTMZoneFromGeoPoint.cxx
index 3e3a0765facc654571e7a0c5d534d6b6f06264f4..02e5e60952da02c0afa0c0e8f2a14dcdf03e87ca 100644
--- a/Modules/Applications/AppProjection/app/otbObtainUTMZoneFromGeoPoint.cxx
+++ b/Modules/Applications/AppProjection/app/otbObtainUTMZoneFromGeoPoint.cxx
@@ -63,8 +63,7 @@ private:
     SetDocAuthors("OTB-Team");
     SetDocSeeAlso(" ");
 
-	AddDocTag("Miscellaneous");
-    AddDocTag(Tags::Coordinates);
+    AddDocTag(Tags::Geometry);
 
     AddParameter(ParameterType_Float,  "lat", "Latitude");
     SetParameterDescription("lat", "Latitude value of desired point.");
diff --git a/Modules/Applications/AppVectorUtils/app/otbOSMDownloader.cxx b/Modules/Applications/AppVectorUtils/app/otbOSMDownloader.cxx
index 389b0f0cf0c19e09f5d3eb2473568eb0fb47e2f7..d3a58b43fabf1c33364b54c2a1dd6cc6423a8427 100644
--- a/Modules/Applications/AppVectorUtils/app/otbOSMDownloader.cxx
+++ b/Modules/Applications/AppVectorUtils/app/otbOSMDownloader.cxx
@@ -72,9 +72,7 @@ private:
     SetDocSeeAlso("[1] TrainImagesClassifier \n"
       "[2] http://www.openstreetmap.fr/");
 
-	AddDocTag("Miscellaneous");
-    AddDocTag(Tags::Meta);
-	AddDocTag(Tags::Vector);
+    AddDocTag(Tags::Vector);
 
     AddParameter(ParameterType_OutputVectorData, "out", "Output vector data");
     SetParameterDescription("out", "Vector data file to store downloaded features");
@@ -224,4 +222,3 @@ private:
 }
 
 OTB_APPLICATION_EXPORT(otb::Wrapper::OSMDownloader)
-