diff --git a/Modules/Adapters/GdalAdapters/include/otbOGRVersionProxy.h b/Modules/Adapters/GdalAdapters/include/otbOGRVersionProxy.h
index 0c4711fc86dff384012d52e1eeb9d7d5cd939ace..d26689c360b066a01c3e4c4b2cd8f0bbead00b44 100644
--- a/Modules/Adapters/GdalAdapters/include/otbOGRVersionProxy.h
+++ b/Modules/Adapters/GdalAdapters/include/otbOGRVersionProxy.h
@@ -64,17 +64,6 @@ namespace version_proxy
  * See function documentation for details.
  */
 
-  /**
-   * This function physically deletes an existing dataset.
-   * 
-   * Calls OGRDataSource::DeleteDataSource for gdal 1.x implementation
-   * and GDALDriver::Delete for gdal 2.x implementation.
-   *
-   * \param name Name of the dataset to destroy.
-   */
-  OTBGdalAdapters_EXPORT   
-  bool Delete(const char * name);
-
   /**
    * Return the list of files composing the dataset.
    * 
diff --git a/Modules/Adapters/GdalAdapters/src/otbOGRDataSourceWrapper.cxx b/Modules/Adapters/GdalAdapters/src/otbOGRDataSourceWrapper.cxx
index 78ba720a8ffbda7080bd921f4403b71a1466e9bd..966d975634999c1b894e8b0d29a68d1ed2a81fdc 100644
--- a/Modules/Adapters/GdalAdapters/src/otbOGRDataSourceWrapper.cxx
+++ b/Modules/Adapters/GdalAdapters/src/otbOGRDataSourceWrapper.cxx
@@ -218,8 +218,36 @@ void DeleteDataSource(std::string const& datasourceName)
   fileNameHelper->SetExtendedFileName( datasourceName.c_str() );
   std::string simpleFileName = fileNameHelper->GetSimpleFileName();
 
-  bool ret = otb::ogr::version_proxy::Delete(simpleFileName.c_str());
-  if (!ret)
+  // Open dataset
+  GDALDataset * poDS = (GDALDataset *)GDALOpenEx(
+      simpleFileName.c_str(), 
+       GDAL_OF_UPDATE | GDAL_OF_VECTOR,
+      NULL,
+      NULL,
+      NULL);
+
+  GDALDriver * poDriver = NULL;
+  bool success =1;
+  if(poDS)
+    {
+    poDriver = poDS->GetDriver();
+    GDALClose(poDS);
+    }
+  else
+    {
+      success = false;
+    }
+  if(poDriver)
+    {
+    OGRErr ret = poDriver->Delete(simpleFileName.c_str());
+    success = ret == OGRERR_NONE;
+    }
+  else 
+    {
+      success = false;
+    }
+
+  if (!success)
     {
     itkGenericExceptionMacro(<< "Deletion of data source " << simpleFileName
                              << " failed: " << CPLGetLastErrorMsg());
diff --git a/Modules/Adapters/GdalAdapters/src/otbOGRVersionProxy.cxx b/Modules/Adapters/GdalAdapters/src/otbOGRVersionProxy.cxx
index cc9339984b2defba8e1bd9cde0fd48ada9979449..7c4b1e44e25060aa9342b857877114c654b16420 100644
--- a/Modules/Adapters/GdalAdapters/src/otbOGRVersionProxy.cxx
+++ b/Modules/Adapters/GdalAdapters/src/otbOGRVersionProxy.cxx
@@ -49,38 +49,6 @@ namespace ogr
 namespace version_proxy
 {
 
-bool Delete(const char * name)
-{
-  // Open dataset
-  GDALDataset * poDS = (GDALDataset *)GDALOpenEx(
-      name, 
-       GDAL_OF_UPDATE | GDAL_OF_VECTOR,
-      NULL,
-      NULL,
-      NULL);
-
-  GDALDriver * poDriver = NULL;
-  if(poDS)
-    {
-    poDriver = poDS->GetDriver();
-    GDALClose(poDS);
-    }
-#if GDAL_VERSION_NUM<2000000
-  if(poDriver && poDriver->TestCapability(ODrCDeleteDataSource))
-    {
-    OGRErr ret = poDriver->DeleteDataSource(name);
-    return (ret == OGRERR_NONE);
-    }
-#else
-  if(poDriver)
-    {
-    OGRErr ret = poDriver->Delete(name);
-    return (ret == OGRERR_NONE);
-    }
-#endif
-  return false;
-}
-
 #if GDAL_VERSION_NUM>=2000000
 namespace raii
 {
diff --git a/Modules/IO/IOGDAL/src/otbOGRVectorDataIO.cxx b/Modules/IO/IOGDAL/src/otbOGRVectorDataIO.cxx
index 518567088bc8b4f3f8f71e0fbc7e691c76f3f041..2d280b1af1d253995429407f559406cac20e142c 100644
--- a/Modules/IO/IOGDAL/src/otbOGRVectorDataIO.cxx
+++ b/Modules/IO/IOGDAL/src/otbOGRVectorDataIO.cxx
@@ -238,7 +238,23 @@ void OGRVectorDataIO::Write(const itk::DataObject* datag, char ** /** unused */)
     }
 
   // Erase the dataSource if already exist
-  ogr::version_proxy::Delete(this->m_FileName.c_str());
+  GDALDataset * poDS = (GDALDataset *)GDALOpenEx(
+      this->m_FileName.c_str(), 
+       GDAL_OF_UPDATE | GDAL_OF_VECTOR,
+      NULL,
+      NULL,
+      NULL);
+
+  GDALDriver * poDriver = NULL;
+  if(poDS)
+    {
+    poDriver = poDS->GetDriver();
+    GDALClose(poDS);
+    }
+  if(poDriver)
+    {
+    poDriver->Delete(this->m_FileName.c_str());
+    }
 
   m_DataSource = ogrDriver->Create( this->m_FileName.c_str(),
                     0,