diff --git a/Applications/CartographicDBValidation/otbComputePolylineFeatureFromImage.cxx b/Applications/CartographicDBValidation/otbComputePolylineFeatureFromImage.cxx
index 22cf8b2ee5aaf193fbf4f35aabbf21e09ef178f5..45ada79183e155b918a9a6f3158a0f7fc1bb3282 100644
--- a/Applications/CartographicDBValidation/otbComputePolylineFeatureFromImage.cxx
+++ b/Applications/CartographicDBValidation/otbComputePolylineFeatureFromImage.cxx
@@ -147,24 +147,27 @@ private:
     vprojIm->SetInputImage(inImage);
 
     // Elevation through the elevation handler
-    switch(ElevationParametersHandler::GetElevationType(this, "elev"))
+    if (ElevationParametersHandler::IsElevationEnabled(this, "elev"))
       {
-      case Elevation_DEM:
-      {
-      vprojIm->SetDEMDirectory(ElevationParametersHandler::GetDEMDirectory(this, "elev"));
-      vprojIm->SetGeoidFile(ElevationParametersHandler::GetGeoidFile(this, "elev"));
-      }
-      break;
-      case Elevation_Average:
-      {
-      vprojIm->SetAverageElevation(ElevationParametersHandler::GetAverageElevation(this, "elev"));
-      }
-      break;
-      //   Commented cause using a tiff file is not implemented yet
-      //  case Elevation_Tiff:
-      //  {
-      //  }
-      //  break;
+      switch(ElevationParametersHandler::GetElevationType(this, "elev"))
+        {
+        case Elevation_DEM:
+        {
+        vprojIm->SetDEMDirectory(ElevationParametersHandler::GetDEMDirectory(this, "elev"));
+        vprojIm->SetGeoidFile(ElevationParametersHandler::GetGeoidFile(this, "elev"));
+        }
+        break;
+        case Elevation_Average:
+        {
+        vprojIm->SetAverageElevation(ElevationParametersHandler::GetAverageElevation(this, "elev"));
+        }
+        break;
+        //   Commented cause using a tiff file is not implemented yet
+        //  case Elevation_Tiff:
+        //  {
+        //  }
+        //  break;
+        }
       }
 
     vprojIm->SetUseOutputSpacingAndOriginFromImage(true); // we want index as input;
diff --git a/Applications/Classification/otbTrainSVMImagesClassifier.cxx b/Applications/Classification/otbTrainSVMImagesClassifier.cxx
index 1cb733fc92ef179b21134c2b3bdd95b3557baec1..eb14d36528906a90233c810ca4bac70f6908803f 100644
--- a/Applications/Classification/otbTrainSVMImagesClassifier.cxx
+++ b/Applications/Classification/otbTrainSVMImagesClassifier.cxx
@@ -259,24 +259,27 @@ private:
       vdreproj->SetUseOutputSpacingAndOriginFromImage(false);
 
       // Elevation through the elevation handler
-      switch(ElevationParametersHandler::GetElevationType(this, "elev"))
+      if (ElevationParametersHandler::IsElevationEnabled(this, "elev"))
         {
-        case Elevation_DEM:
-        {
-        vdreproj->SetDEMDirectory(ElevationParametersHandler::GetDEMDirectory(this, "elev"));
-        vdreproj->SetGeoidFile(ElevationParametersHandler::GetGeoidFile(this, "elev"));
-        }
-        break;
-        case Elevation_Average:
-        {
-        vdreproj->SetAverageElevation(ElevationParametersHandler::GetAverageElevation(this, "elev"));
-        }
-        break;
-        //   Commented cause using a tiff file is not implemented yet
-        //  case Elevation_Tiff:
-        //  {
-        //  }
-        //  break;
+        switch(ElevationParametersHandler::GetElevationType(this, "elev"))
+          {
+          case Elevation_DEM:
+          {
+          vdreproj->SetDEMDirectory(ElevationParametersHandler::GetDEMDirectory(this, "elev"));
+          vdreproj->SetGeoidFile(ElevationParametersHandler::GetGeoidFile(this, "elev"));
+          }
+          break;
+          case Elevation_Average:
+          {
+          vdreproj->SetAverageElevation(ElevationParametersHandler::GetAverageElevation(this, "elev"));
+          }
+          break;
+          //   Commented cause using a tiff file is not implemented yet
+          //  case Elevation_Tiff:
+          //  {
+          //  }
+          //  break;
+          }
         }
 
       vdreproj->Update();
diff --git a/Applications/Classification/otbValidateSVMImagesClassifier.cxx b/Applications/Classification/otbValidateSVMImagesClassifier.cxx
index 7039f977776a9ecc975c9ea4f48403ae3897fb9a..46ad92d0b4d6d3e41814ee8401929c66a26a7d70 100644
--- a/Applications/Classification/otbValidateSVMImagesClassifier.cxx
+++ b/Applications/Classification/otbValidateSVMImagesClassifier.cxx
@@ -206,24 +206,27 @@ private:
       vdreproj->SetUseOutputSpacingAndOriginFromImage(false);
 
       // Elevation through the elevation handler
-      switch(ElevationParametersHandler::GetElevationType(this, "elev"))
+      if (ElevationParametersHandler::IsElevationEnabled(this, "elev"))
         {
-        case Elevation_DEM:
-        {
-        vdreproj->SetDEMDirectory(ElevationParametersHandler::GetDEMDirectory(this, "elev"));
-        vdreproj->SetGeoidFile(ElevationParametersHandler::GetGeoidFile(this, "elev"));
-        }
-        break;
-        case Elevation_Average:
-        {
-        vdreproj->SetAverageElevation(ElevationParametersHandler::GetAverageElevation(this, "elev"));
-        }
-        break;
-        //   Commented cause using a tiff file is not implemented yet
-        //  case Elevation_Tiff:
-        //  {
-        //  }
-        //  break;
+        switch(ElevationParametersHandler::GetElevationType(this, "elev"))
+          {
+          case Elevation_DEM:
+          {
+          vdreproj->SetDEMDirectory(ElevationParametersHandler::GetDEMDirectory(this, "elev"));
+          vdreproj->SetGeoidFile(ElevationParametersHandler::GetGeoidFile(this, "elev"));
+          }
+          break;
+          case Elevation_Average:
+          {
+          vdreproj->SetAverageElevation(ElevationParametersHandler::GetAverageElevation(this, "elev"));
+          }
+          break;
+          //   Commented cause using a tiff file is not implemented yet
+          //  case Elevation_Tiff:
+          //  {
+          //  }
+          //  break;
+          }
         }
 
       vdreproj->Update();
diff --git a/Applications/DisparityMap/otbStereoSensorModelToElevationMap.cxx b/Applications/DisparityMap/otbStereoSensorModelToElevationMap.cxx
index 39fcfdf0afca78547438beb798a52b203c422b62..69a88ae1e54847325ebd8bb43065444dc49d0b25 100644
--- a/Applications/DisparityMap/otbStereoSensorModelToElevationMap.cxx
+++ b/Applications/DisparityMap/otbStereoSensorModelToElevationMap.cxx
@@ -223,25 +223,28 @@ private:
       }
   
     // Elevation through the elevation handler
-    switch(ElevationParametersHandler::GetElevationType(this, "elev"))
+    if (ElevationParametersHandler::IsElevationEnabled(this, "elev"))
       {
-      case Elevation_DEM:
-      {
-      m_StereoFilter->SetUseDEM(true);
-      m_StereoFilter->SetDEMDirectory(ElevationParametersHandler::GetDEMDirectory(this, "elev"));
-      m_StereoFilter->SetGeoidFile(ElevationParametersHandler::GetGeoidFile(this, "elev"));
-      }
-      break;
-      case Elevation_Average:
-      {
-      m_StereoFilter->SetAverageElevation(ElevationParametersHandler::GetAverageElevation(this, "elev"));
-      }
-      break;
-      //   Commented cause using a tiff file is not implemented yet
-      //  case Elevation_Tiff:
-      //  {
-      //  }
-      //  break;
+      switch(ElevationParametersHandler::GetElevationType(this, "elev"))
+        {
+        case Elevation_DEM:
+        {
+        m_StereoFilter->SetUseDEM(true);
+        m_StereoFilter->SetDEMDirectory(ElevationParametersHandler::GetDEMDirectory(this, "elev"));
+        m_StereoFilter->SetGeoidFile(ElevationParametersHandler::GetGeoidFile(this, "elev"));
+        }
+        break;
+        case Elevation_Average:
+        {
+        m_StereoFilter->SetAverageElevation(ElevationParametersHandler::GetAverageElevation(this, "elev"));
+        }
+        break;
+        //   Commented cause using a tiff file is not implemented yet
+        //  case Elevation_Tiff:
+        //  {
+        //  }
+        //  break;
+        }
       }
 
     m_StereoFilter->SetSubtractInitialElevation(subtractInitialHeight);
diff --git a/Applications/FeatureExtraction/otbLineSegmentDetection.cxx b/Applications/FeatureExtraction/otbLineSegmentDetection.cxx
index d43276b6fc25b2a0e8b31d6440055da4b14b5afb..d749e029403e07648a5e2a298eb49fa977885f1e 100644
--- a/Applications/FeatureExtraction/otbLineSegmentDetection.cxx
+++ b/Applications/FeatureExtraction/otbLineSegmentDetection.cxx
@@ -166,26 +166,29 @@ private:
       vproj->SetInputOrigin(GetParameterImage("in")->GetOrigin());
       vproj->SetInputSpacing(GetParameterImage("in")->GetSpacing());
 
-    // Elevation through the elevation handler
-    switch(ElevationParametersHandler::GetElevationType(this, "elev"))
-      {
-      case Elevation_DEM:
-      {
-      vproj->SetDEMDirectory(ElevationParametersHandler::GetDEMDirectory(this, "elev"));
-      vproj->SetGeoidFile(ElevationParametersHandler::GetGeoidFile(this, "elev"));
-      }
-      break;
-      case Elevation_Average:
-      {
-      vproj->SetAverageElevation(ElevationParametersHandler::GetAverageElevation(this, "elev"));
-      }
-      break;
-      //   Commented cause using a tiff file is not implemented yet
-      //  case Elevation_Tiff:
-      //  {
-      //  }
-      //  break;
-      }
+      // Elevation through the elevation handler
+      if (ElevationParametersHandler::IsElevationEnabled(this, "elev"))
+        {
+        switch(ElevationParametersHandler::GetElevationType(this, "elev"))
+          {
+          case Elevation_DEM:
+          {
+          vproj->SetDEMDirectory(ElevationParametersHandler::GetDEMDirectory(this, "elev"));
+          vproj->SetGeoidFile(ElevationParametersHandler::GetGeoidFile(this, "elev"));
+          }
+          break;
+          case Elevation_Average:
+          {
+          vproj->SetAverageElevation(ElevationParametersHandler::GetAverageElevation(this, "elev"));
+          }
+          break;
+          //   Commented cause using a tiff file is not implemented yet
+          //  case Elevation_Tiff:
+          //  {
+          //  }
+          //  break;
+          }
+        }
 
       AddProcess(vproj, "Reprojecting output vector data");
       vproj->Update();
diff --git a/Applications/Projections/otbBundleToPerfectSensor.cxx b/Applications/Projections/otbBundleToPerfectSensor.cxx
index 5ebc029b08738168e9c2ac75e5b51f2cadabdedf..36dde4ae4d08baeec48352ddf7c92652c185ea3f 100644
--- a/Applications/Projections/otbBundleToPerfectSensor.cxx
+++ b/Applications/Projections/otbBundleToPerfectSensor.cxx
@@ -126,24 +126,27 @@ private:
     resampler->SetInterpolator(interpolator);
     
     // Elevation through the elevation handler
-    switch(ElevationParametersHandler::GetElevationType(this, "elev"))
+    if (ElevationParametersHandler::IsElevationEnabled(this, "elev"))
       {
-      case Elevation_DEM:
-      {
-      resampler->SetDEMDirectory(ElevationParametersHandler::GetDEMDirectory(this, "elev"));
-      resampler->SetGeoidFile(ElevationParametersHandler::GetGeoidFile(this, "elev"));
-      }
-      break;
-      case Elevation_Average:
-      {
-      resampler->SetAverageElevation(ElevationParametersHandler::GetAverageElevation(this, "elev"));
-      }
-      break;
-      //   Commented cause using a tiff file is not implemented yet
-      //  case Elevation_Tiff:
-      //  {
-      //  }
-      //  break;
+      switch(ElevationParametersHandler::GetElevationType(this, "elev"))
+        {
+        case Elevation_DEM:
+        {
+        resampler->SetDEMDirectory(ElevationParametersHandler::GetDEMDirectory(this, "elev"));
+        resampler->SetGeoidFile(ElevationParametersHandler::GetGeoidFile(this, "elev"));
+        }
+        break;
+        case Elevation_Average:
+        {
+        resampler->SetAverageElevation(ElevationParametersHandler::GetAverageElevation(this, "elev"));
+        }
+        break;
+        //   Commented cause using a tiff file is not implemented yet
+        //  case Elevation_Tiff:
+        //  {
+        //  }
+        //  break;
+        }
       }
 
     // Set up output image informations
diff --git a/Applications/Projections/otbImageEnvelope.cxx b/Applications/Projections/otbImageEnvelope.cxx
index 3d6a4a9be0c70f593943a8d248fce60443c36c74..5ecb5f41c14c47d50094995f5ee469fb4c0b1a23 100644
--- a/Applications/Projections/otbImageEnvelope.cxx
+++ b/Applications/Projections/otbImageEnvelope.cxx
@@ -92,24 +92,27 @@ private:
     m_Envelope->SetInput(input);
     
     // Elevation through the elevation handler
-    switch(ElevationParametersHandler::GetElevationType(this, "elev"))
+    if (ElevationParametersHandler::IsElevationEnabled(this, "elev"))
       {
-      case Elevation_DEM:
-      {
-      m_Envelope->SetDEMDirectory(ElevationParametersHandler::GetDEMDirectory(this, "elev"));
-      m_Envelope->SetGeoidFile(ElevationParametersHandler::GetGeoidFile(this, "elev"));
-      }
-      break;
-      case Elevation_Average:
-      {
-      m_Envelope->SetAverageElevation(ElevationParametersHandler::GetAverageElevation(this, "elev"));
-      }
-      break;
-      //   Commented cause using a tiff file is not implemented yet
-      //  case Elevation_Tiff:
-      //  {
-      //  }
-      //  break;
+      switch(ElevationParametersHandler::GetElevationType(this, "elev"))
+        {
+        case Elevation_DEM:
+        {
+        m_Envelope->SetDEMDirectory(ElevationParametersHandler::GetDEMDirectory(this, "elev"));
+        m_Envelope->SetGeoidFile(ElevationParametersHandler::GetGeoidFile(this, "elev"));
+        }
+        break;
+        case Elevation_Average:
+        {
+        m_Envelope->SetAverageElevation(ElevationParametersHandler::GetAverageElevation(this, "elev"));
+        }
+        break;
+        //   Commented cause using a tiff file is not implemented yet
+        //  case Elevation_Tiff:
+        //  {
+        //  }
+        //  break;
+        }
       }
     
     if (HasValue("proj"))
diff --git a/Applications/Projections/otbOrthoRectification.cxx b/Applications/Projections/otbOrthoRectification.cxx
index 90e48ee3ee343938371586319e3f04e2f58b2755..d070f22cde38c5c0d26bc11d1db672dee2c447d7 100644
--- a/Applications/Projections/otbOrthoRectification.cxx
+++ b/Applications/Projections/otbOrthoRectification.cxx
@@ -388,24 +388,27 @@ private:
       }
 
     // Elevation through the elevation handler
-    switch(ElevationParametersHandler::GetElevationType(this, "elev"))
+    if (ElevationParametersHandler::IsElevationEnabled(this, "elev"))
       {
-      case Elevation_DEM:
-      {
-      m_ResampleFilter->SetDEMDirectory(ElevationParametersHandler::GetDEMDirectory(this, "elev"));
-      m_ResampleFilter->SetGeoidFile(ElevationParametersHandler::GetGeoidFile(this, "elev"));
-      }
-      break;
-      case Elevation_Average:
-      {
-      m_ResampleFilter->SetAverageElevation(ElevationParametersHandler::GetAverageElevation(this, "elev"));
-      }
-      break;
-      //   Commented cause using a tiff file is not implemented yet
-      //  case Elevation_Tiff:
-      //  {
-      //  }
-      //  break;
+      switch(ElevationParametersHandler::GetElevationType(this, "elev"))
+        {
+        case Elevation_DEM:
+        {
+        m_ResampleFilter->SetDEMDirectory(ElevationParametersHandler::GetDEMDirectory(this, "elev"));
+        m_ResampleFilter->SetGeoidFile(ElevationParametersHandler::GetGeoidFile(this, "elev"));
+        }
+        break;
+        case Elevation_Average:
+        {
+        m_ResampleFilter->SetAverageElevation(ElevationParametersHandler::GetAverageElevation(this, "elev"));
+        }
+        break;
+        //   Commented cause using a tiff file is not implemented yet
+        //  case Elevation_Tiff:
+        //  {
+        //  }
+        //  break;
+        }
       }
 
     // If activated, generate RPC model
diff --git a/Applications/Projections/otbSuperimpose.cxx b/Applications/Projections/otbSuperimpose.cxx
index 2bac8d734e00b6f61ec40bee5d604e2a3a33dab8..78155284a5b594ba030612dd08b2ef43d51ef64e 100644
--- a/Applications/Projections/otbSuperimpose.cxx
+++ b/Applications/Projections/otbSuperimpose.cxx
@@ -108,24 +108,27 @@ private:
     m_Resampler->SetInterpolator(m_Interpolator);
     
     // Elevation through the elevation handler
-    switch(ElevationParametersHandler::GetElevationType(this, "elev"))
+    if (ElevationParametersHandler::IsElevationEnabled(this, "elev"))
       {
-      case Elevation_DEM:
-      {
-      m_Resampler->SetDEMDirectory(ElevationParametersHandler::GetDEMDirectory(this, "elev"));
-      m_Resampler->SetGeoidFile(ElevationParametersHandler::GetGeoidFile(this, "elev"));
-      }
-      break;
-      case Elevation_Average:
-      {
-      m_Resampler->SetAverageElevation(ElevationParametersHandler::GetAverageElevation(this, "elev"));
-      }
-      break;
-      //   Commented cause using a tiff file is not implemented yet
-      //  case Elevation_Tiff:
-      //  {
-      //  }
-      //  break;
+      switch(ElevationParametersHandler::GetElevationType(this, "elev"))
+        {
+        case Elevation_DEM:
+        {
+        m_Resampler->SetDEMDirectory(ElevationParametersHandler::GetDEMDirectory(this, "elev"));
+        m_Resampler->SetGeoidFile(ElevationParametersHandler::GetGeoidFile(this, "elev"));
+        }
+        break;
+        case Elevation_Average:
+        {
+        m_Resampler->SetAverageElevation(ElevationParametersHandler::GetAverageElevation(this, "elev"));
+        }
+        break;
+        //   Commented cause using a tiff file is not implemented yet
+        //  case Elevation_Tiff:
+        //  {
+        //  }
+        //  break;
+        }
       }
     
     // Set up output image informations
diff --git a/Applications/Segmentation/otbConnectedComponentSegmentation.cxx b/Applications/Segmentation/otbConnectedComponentSegmentation.cxx
index 2f9e151dfd4fb6a0fa1a1a1cd1ae32e508260642..3130e31a82d60457d22df1ac95a25604374300ec 100644
--- a/Applications/Segmentation/otbConnectedComponentSegmentation.cxx
+++ b/Applications/Segmentation/otbConnectedComponentSegmentation.cxx
@@ -169,24 +169,27 @@ private:
       m_Vproj->SetInputSpacing(inputImage->GetSpacing());
 
       // Elevation through the elevation handler
-      switch(ElevationParametersHandler::GetElevationType(this, "elev"))
+      if (ElevationParametersHandler::IsElevationEnabled(this, "elev"))
         {
-        case Elevation_DEM:
-        {
-        m_Vproj->SetDEMDirectory(ElevationParametersHandler::GetDEMDirectory(this, "elev"));
-        m_Vproj->SetGeoidFile(ElevationParametersHandler::GetGeoidFile(this, "elev"));
-        }
-        break;
-        case Elevation_Average:
-        {
-        m_Vproj->SetAverageElevation(ElevationParametersHandler::GetAverageElevation(this, "elev"));
-        }
-        break;
-        //   Commented cause using a tiff file is not implemented yet
-        //  case Elevation_Tiff:
-        //  {
-        //  }
-        //  break;
+        switch(ElevationParametersHandler::GetElevationType(this, "elev"))
+          {
+          case Elevation_DEM:
+          {
+          m_Vproj->SetDEMDirectory(ElevationParametersHandler::GetDEMDirectory(this, "elev"));
+          m_Vproj->SetGeoidFile(ElevationParametersHandler::GetGeoidFile(this, "elev"));
+          }
+          break;
+          case Elevation_Average:
+          {
+          m_Vproj->SetAverageElevation(ElevationParametersHandler::GetAverageElevation(this, "elev"));
+          }
+          break;
+          //   Commented cause using a tiff file is not implemented yet
+          //  case Elevation_Tiff:
+          //  {
+          //  }
+          //  break;
+          }
         }
       
       m_Vproj->Update();
diff --git a/Applications/Utils/otbKmzExport.cxx b/Applications/Utils/otbKmzExport.cxx
index 35d64452b717a4a99b50291e4f9982817ec91edb..dde345ddbc89554caa12a643988e0c50dd8bbda7 100644
--- a/Applications/Utils/otbKmzExport.cxx
+++ b/Applications/Utils/otbKmzExport.cxx
@@ -20,6 +20,8 @@
 
 #include "otbKmzProductWriter.h"
 
+// Elevation handler
+#include "otbWrapperElevationParametersHandler.h"
 
 namespace otb
 {
@@ -73,9 +75,8 @@ private:
     SetParameterDescription("legend", "Path to the image legend to add to the KMZ product.");
     MandatoryOff("legend");
 
-    AddParameter(ParameterType_Directory, "dem",  "DEM directory");
-    SetParameterDescription("dem", "Path to the directory that contains elevation information.");
-    MandatoryOff("dem");
+    // Elevation
+    ElevationParametersHandler::AddElevationParameters(this, "elev");
 
     // Doc example parameter settings
     SetDocExampleParameterValue("in", "qb_RoadExtract2.tif");
@@ -98,13 +99,30 @@ private:
     kmzWriter->SetInput( this->GetParameterImage("in") );
     kmzWriter->SetPath( this->GetParameterString("out") );
 
-    // Use DEM if any
-    if( this->HasValue("dem") )
+    // Elevation through the elevation handler
+    if (ElevationParametersHandler::IsElevationEnabled(this, "elev"))
       {
-      kmzWriter->SetDEMDirectory(this->GetParameterString("dem"));
+      switch(ElevationParametersHandler::GetElevationType(this, "elev"))
+        {
+        case Elevation_DEM:
+        {
+        kmzWriter->SetDEMDirectory(ElevationParametersHandler::GetDEMDirectory(this, "elev"));
+        kmzWriter->SetGeoidFile(ElevationParametersHandler::GetGeoidFile(this, "elev"));
+        }
+        break;
+        case Elevation_Average:
+        {
+        kmzWriter->SetAverageElevation(ElevationParametersHandler::GetAverageElevation(this, "elev"));
+        }
+        break;
+        //   Commented cause using a tiff file is not implemented yet
+        //  case Elevation_Tiff:
+        //  {
+        //  }
+        //  break;
+        }
       }
 
-
     // If the tile size is set
     if( this->HasValue("tilesize") )
       {
diff --git a/Applications/Utils/otbOSMDownloader.cxx b/Applications/Utils/otbOSMDownloader.cxx
index 1e968cf0e5f5ac23b3179d0e3b63ace8c7bb258a..ee8dc71ea5319e7c48f487ba3e4348b013967bce 100644
--- a/Applications/Utils/otbOSMDownloader.cxx
+++ b/Applications/Utils/otbOSMDownloader.cxx
@@ -22,6 +22,8 @@
 #include "otbVectorDataProperties.h"
 #include "otbOSMDataToVectorDataGenerator.h"
 
+// Elevation handler
+#include "otbWrapperElevationParametersHandler.h"
 
 namespace otb
 {
@@ -73,9 +75,8 @@ private:
     SetParameterDescription("key", "OSM tag value to extract (motorway, footway...)");
     MandatoryOff("value");
 
-    AddParameter(ParameterType_Directory, "dem",  "DEM directory");
-    SetParameterDescription("dem", "Path to the directory that contains elevation information.");
-    MandatoryOff("dem");
+    // Elevation
+    ElevationParametersHandler::AddElevationParameters(this, "elev");
 
     AddParameter(ParameterType_Empty, "printclasses", "option to display available key/value classes");
     std::ostringstream oss;
@@ -119,13 +120,33 @@ private:
   VectorDataPropertiesType::Pointer vdProperties = VectorDataPropertiesType::New();
   m_VdOSMGenerator = VectorDataProviderType::New();
 
-
-  //Generate the envelope
+  // Get the support image
   envelopeFilter->SetInput( this->GetParameterImage("support") ); //->Output in WGS84
-  if ( this->HasValue("dem"))
+  
+  //Generate the envelope : Elevation through the elevation handler
+  if (ElevationParametersHandler::IsElevationEnabled(this, "elev"))
     {
-    envelopeFilter->SetDEMDirectory(this->GetParameterString("dem"));
+    switch(ElevationParametersHandler::GetElevationType(this, "elev"))
+      {
+      case Elevation_DEM:
+      {
+      envelopeFilter->SetDEMDirectory(ElevationParametersHandler::GetDEMDirectory(this, "elev"));
+      envelopeFilter->SetGeoidFile(ElevationParametersHandler::GetGeoidFile(this, "elev"));
+      }
+      break;
+      case Elevation_Average:
+      {
+      envelopeFilter->SetAverageElevation(ElevationParametersHandler::GetAverageElevation(this, "elev"));
+      }
+      break;
+      //   Commented cause using a tiff file is not implemented yet
+      //  case Elevation_Tiff:
+      //  {
+      //  }
+      //  break;
+      }
     }
+
   envelopeFilter->Update();
 
   vdProperties->SetVectorDataObject(envelopeFilter->GetOutput());
diff --git a/Applications/Utils/otbVectorDataExtractROIApplication.cxx b/Applications/Utils/otbVectorDataExtractROIApplication.cxx
index e6a93d635c1ff06a2b4d0724101a724579b8f2b5..08cecb67546d07fbe7b1b9bdeb9970f878c98a3b 100644
--- a/Applications/Utils/otbVectorDataExtractROIApplication.cxx
+++ b/Applications/Utils/otbVectorDataExtractROIApplication.cxx
@@ -152,31 +152,34 @@ private:
     m_VdProj->SetOutputOrigin(inImage->GetOrigin());
     m_VdProj->SetOutputSpacing(inImage->GetSpacing());
 
-     // Elevation through the elevation handler
-    switch(ElevationParametersHandler::GetElevationType(this, "elev"))
+    // Elevation through the elevation handler
+    if (ElevationParametersHandler::IsElevationEnabled(this, "elev"))
       {
-      case Elevation_DEM:
-      {
-      m_VdExtract->SetDEMDirectory(ElevationParametersHandler::GetDEMDirectory(this, "elev"));
-      m_VdExtract->SetGeoidFile(ElevationParametersHandler::GetGeoidFile(this, "elev"));
-
-      m_VdProj->SetDEMDirectory(ElevationParametersHandler::GetDEMDirectory(this, "elev"));
-      m_VdProj->SetGeoidFile(ElevationParametersHandler::GetGeoidFile(this, "elev"));
-      }
-      break;
-      case Elevation_Average:
-      {
-      m_VdExtract->SetAverageElevation(ElevationParametersHandler::GetAverageElevation(this, "elev"));
-      m_VdProj->SetAverageElevation(ElevationParametersHandler::GetAverageElevation(this, "elev"));
+      switch(ElevationParametersHandler::GetElevationType(this, "elev"))
+        {
+        case Elevation_DEM:
+        {
+        m_VdExtract->SetDEMDirectory(ElevationParametersHandler::GetDEMDirectory(this, "elev"));
+        m_VdExtract->SetGeoidFile(ElevationParametersHandler::GetGeoidFile(this, "elev"));
+
+        m_VdProj->SetDEMDirectory(ElevationParametersHandler::GetDEMDirectory(this, "elev"));
+        m_VdProj->SetGeoidFile(ElevationParametersHandler::GetGeoidFile(this, "elev"));
+        }
+        break;
+        case Elevation_Average:
+        {
+        m_VdExtract->SetAverageElevation(ElevationParametersHandler::GetAverageElevation(this, "elev"));
+        m_VdProj->SetAverageElevation(ElevationParametersHandler::GetAverageElevation(this, "elev"));
+        }
+        break;
+        //   Commented cause using a tiff file is not implemented yet
+        //  case Elevation_Tiff:
+        //  {
+        //  }
+        //  break;
+        }
       }
-      break;
-      //   Commented cause using a tiff file is not implemented yet
-      //  case Elevation_Tiff:
-      //  {
-      //  }
-      //  break;
-      }
-    
+
     // Set the output vectorData
     SetParameterOutputVectorData("io.out", m_VdProj->GetOutput());
   }