diff --git a/include/otbSARFFTCorrelationGridImageFilter.h b/include/otbSARFFTCorrelationGridImageFilter.h
index 4663fa140ea473e4afbd798ce5fdc73c0e821950..f46d21bfe4a20bd4aae9e0ce45cd4e98effa1289 100644
--- a/include/otbSARFFTCorrelationGridImageFilter.h
+++ b/include/otbSARFFTCorrelationGridImageFilter.h
@@ -25,7 +25,7 @@
 #include "itkSmartPointer.h"
 #include "itkPoint.h"
 
-#include "otbImageKeywordlist.h"
+#include "otbImageMetadata.h"
 #include "otbGenericRSTransform.h"
 #include "itkMinimumMaximumImageCalculator.h"
 #include "itkStatisticsImageFilter.h"
diff --git a/include/otbSARFFTCorrelationGridImageFilter.txx b/include/otbSARFFTCorrelationGridImageFilter.txx
index 51ee79c706107bcda68e2a9274760b37802f7a79..6c2fd33e8c261c66483048931c238e406bc49f8f 100644
--- a/include/otbSARFFTCorrelationGridImageFilter.txx
+++ b/include/otbSARFFTCorrelationGridImageFilter.txx
@@ -162,23 +162,23 @@ namespace otb
     m_GridStep_ML[0] = m_GridStep[0]/m_MLran;
     m_GridStep_ML[1] = m_GridStep[1]/m_MLazi;
 
-    ///////// Checks (with input keywordlists/metadata) /////////////
+    ///////// Checks (with input Metadatas/metadata) /////////////
     // Check ML Factors (inputs of this filter with Master and Slave metadata)
-    // Get Master and Slave Keywordlist
-    ImageKeywordlist masterKWL = masterPtr->GetImageKeywordlist();
-    ImageKeywordlist slaveKWL = slavePtr->GetImageKeywordlist();
+    // Get Master and Slave Metadata
+    ImageMetadata masterKWL = masterPtr->GetImageMetadata();
+    ImageMetadata slaveKWL = slavePtr->GetImageMetadata();
 
-    if (masterKWL.HasKey("support_data.ml_ran") && masterKWL.HasKey("support_data.ml_azi"))
+    if (masterKWL.Has("ml_ran") && masterKWL.Has("ml_azi"))
       {
 	// Get Master ML Factors
-	unsigned int master_MLRan = atoi(masterKWL.GetMetadataByKey("support_data.ml_ran").c_str());
-	unsigned int master_MLAzi = atoi(masterKWL.GetMetadataByKey("support_data.ml_azi").c_str());
+	unsigned int master_MLRan = atoi(masterKWL["ml_ran"].c_str());
+	unsigned int master_MLAzi = atoi(masterKWL["ml_azi"].c_str());
 
-	if (slaveKWL.HasKey("support_data.ml_ran") && slaveKWL.HasKey("support_data.ml_azi"))
+	if (slaveKWL.Has("ml_ran") && slaveKWL.Has("ml_azi"))
 	  {
 	    // Get Slave ML Factors
-	    unsigned int slave_MLRan = atoi(slaveKWL.GetMetadataByKey("support_data.ml_ran").c_str());
-	    unsigned int slave_MLAzi = atoi(slaveKWL.GetMetadataByKey("support_data.ml_azi").c_str());
+	    unsigned int slave_MLRan = atoi(slaveKWL["ml_ran"].c_str());
+	    unsigned int slave_MLAzi = atoi(slaveKWL["ml_azi"].c_str());
 
 	    if ((slave_MLRan != master_MLRan) || (slave_MLAzi != master_MLAzi))
 	      {
@@ -193,11 +193,11 @@ namespace otb
       }
     else
       {
-	if (slaveKWL.HasKey("support_data.ml_ran") && slaveKWL.HasKey("support_data.ml_azi"))
+	if (slaveKWL.Has("ml_ran") && slaveKWL.Has("ml_azi"))
 	  {
 	    // Get Slave ML Factors
-	    unsigned int slave_MLRan = atoi(slaveKWL.GetMetadataByKey("support_data.ml_ran").c_str());
-	    unsigned int slave_MLAzi = atoi(slaveKWL.GetMetadataByKey("support_data.ml_azi").c_str());
+	    unsigned int slave_MLRan = atoi(slaveKWL["ml_ran"].c_str());
+	    unsigned int slave_MLAzi = atoi(slaveKWL["ml_azi"].c_str());
 	    
 	    if ((slave_MLRan != m_MLran) || (slave_MLAzi != m_MLazi))
 	      {
@@ -241,12 +241,12 @@ namespace otb
     m_rsTransform->SetOutputImageMetadata(slavePtr->GetImageMetadata());
     m_rsTransform->InstantiateTransform();
 
-    // Add GridSteps into KeyWordList
-    ImageKeywordlist outputKWL;
-    outputKWL.AddKey("support_data.gridstep.range", std::to_string(m_GridStep[0]));
-    outputKWL.AddKey("support_data.gridstep.azimut", std::to_string(m_GridStep[1]));
+    // Add GridSteps into Metadata
+    ImageMetadata outputKWL;
+    outputKWL.Add("gridstep.range", std::to_string(m_GridStep[0]));
+    outputKWL.Add("gridstep.azimut", std::to_string(m_GridStep[1]));
     
-    outputPtr->SetImageKeywordList(outputKWL); 
+    outputPtr->SetImageMetadata(outputKWL); 
   }
 
   /**