diff --git a/Utilities/otbossimplugins/ossim/AlosPalsar/AlosSarData.cpp b/Utilities/otbossimplugins/ossim/AlosPalsar/AlosSarData.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..6ef51ec92d802cd615635fc9a8dd261066a563f2
--- /dev/null
+++ b/Utilities/otbossimplugins/ossim/AlosPalsar/AlosSarData.cpp
@@ -0,0 +1,159 @@
+//----------------------------------------------------------------------------
+//
+// "Copyright Centre National d'Etudes Spatiales"
+// "Copyright Centre for Remote Imaging, Sensing and Processing"
+//
+// License:  LGPL
+//
+// See LICENSE.txt file in the top level directory for more details.
+//
+//----------------------------------------------------------------------------
+// $Id$
+
+#include <AlosSarData.h>
+#include <AlosSarRecordHeader.h>
+
+#include <AlosSarDataFileDescriptor.h>
+
+#include <ossim/base/ossimTrace.h>
+#include <ossim/base/ossimKeywordlist.h>
+#include <ossim/base/ossimKeywordNames.h>
+
+// Static trace for debugging
+static ossimTrace traceDebug("ossimAlosSarData:debug");
+
+namespace ossimplugins
+{
+
+const int AlosSarData::AlosSarDataFileDescriptorID = 1;
+
+AlosSarData::AlosSarData()
+{
+
+}
+
+AlosSarData::~AlosSarData()
+{
+  ClearRecords();
+}
+
+std::ostream& operator<<(std::ostream& os, const AlosSarData& data)
+{
+  std::map<int, AlosSarRecord*>::const_iterator it = data._records.begin();
+  while(it != data._records.end())
+  {
+    (*it).second->Write(os);
+    ++it;
+  }
+  return os;
+
+}
+
+std::istream& operator>>(std::istream& is, AlosSarData& data)
+{
+
+  data.ClearRecords();
+
+  AlosSarRecordHeader header;
+  bool eof = false;
+  while(!eof)
+  {
+    is>>header;
+    if(is.eof())
+    {
+      eof = true;
+    }
+    else
+    {
+      AlosSarRecord* record = new AlosSarDataFileDescriptor;
+      if (record != NULL)
+      {
+        record->Read(is);
+        data._records[header.get_rec_seq()] = record;
+      }
+      else
+      {
+        char* buff = new char[header.get_length()-12];
+        is.read(buff, header.get_length()-12);
+        delete buff;
+      }
+    }
+  }
+  return is;
+}
+
+
+AlosSarData::AlosSarData(const AlosSarData& rhs)
+{
+  std::map<int, AlosSarRecord*>::const_iterator it = rhs._records.begin();
+  while(it != rhs._records.end())
+  {
+    _records[(*it).first] = (*it).second->Clone();
+    ++it;
+  }
+}
+
+AlosSarData& AlosSarData::operator=(const AlosSarData& rhs)
+{
+  ClearRecords();
+  std::map<int, AlosSarRecord*>::const_iterator it = rhs._records.begin();
+  while(it != rhs._records.end())
+  {
+    _records[(*it).first] = (*it).second->Clone();
+    ++it;
+  }
+
+  return *this;
+}
+
+void AlosSarData::ClearRecords()
+{
+  std::map<int, AlosSarRecord*>::const_iterator it = _records.begin();
+  while(it != _records.end())
+  {
+    delete (*it).second;
+    ++it;
+  }
+  _records.clear();
+}
+
+bool AlosSarData::saveState(ossimKeywordlist& kwl,
+                             const char* prefix) const
+{
+
+  static const char MODULE[] = "AlosSarData::saveState";
+
+  if (traceDebug())
+  {
+    ossimNotify(ossimNotifyLevel_DEBUG)<< MODULE << " entered...\n";
+  }
+
+  bool result = true;
+
+  char name[64];
+
+  kwl.add(prefix, ossimKeywordNames::TYPE_KW, "ossimAlosSarModel", true);
+  /*
+   * Adding metadata necessary to the sensor model in the keywordlist
+   */
+  const AlosSarDataFileDescriptor *datafiledesc = get_AlosSarDataFileDescriptor();
+  if (leaderfiledesc != NULL)
+  {
+    kwl.add(prefix, "num_lines",datafiledesc->get_num_lines(),true);
+    kwl.add(prefix, "num_pix_in_line", datafiledesc->get_num_pix_in_line(),true);
+  }
+  else
+  {
+    result = false;
+  }
+
+  return result;
+}
+
+
+const AlosSarFileDescriptor * AlosSarData::get_AlosSarDataFileDescriptor() const
+{
+  return dynamic_cast<const AlosSarFileDescriptor*>(_records.find(AlosSarDataFileDescriptorID)->second);
+}
+
+}
diff --git a/Utilities/otbossimplugins/ossim/AlosPalsar/AlosSarData.h b/Utilities/otbossimplugins/ossim/AlosPalsar/AlosSarData.h
new file mode 100644
index 0000000000000000000000000000000000000000..51ce72179f35d0c719f7b6721eac1bb2eb11038c
--- /dev/null
+++ b/Utilities/otbossimplugins/ossim/AlosPalsar/AlosSarData.h
@@ -0,0 +1,100 @@
+//----------------------------------------------------------------------------
+//
+// "Copyright Centre National d'Etudes Spatiales"
+// "Copyright Centre for Remote Imaging, Sensing and Processing"
+//
+// License:  LGPL
+//
+// See LICENSE.txt file in the top level directory for more details.
+//
+//----------------------------------------------------------------------------
+// $Id$
+
+#ifndef AlosSarData_h
+#define AlosSarData_h
+
+#include <iostream>
+#include "AlosSarFileDescriptor.h"
+#include "AlosSarDataSetSummary.h"
+#include "AlosSarMapProjectionData.h"
+#include "AlosSarPlatformPositionData.h"
+#include "AlosSarFacilityData.h"
+#include <map>
+
+class ossimKeywordlist;
+
+namespace ossimplugins
+{
+
+class AlosSarPlatformPositionData;
+class AlosSarMapProjectionData;
+class AlosSarDataSetSummary;
+class AlosSarFileDescriptor;
+class AlosSarFacilityData;
+
+/**
+ * @ingroup AlosSarDataFile
+ * @brief This class is able to read the Leader file of the AlosSar file structure
+ */
+class AlosSarData
+{
+public:
+  /**
+   * @brief Constructor
+   */
+  AlosSarData();
+
+  /**
+   * @brief Destructor
+   */
+  ~AlosSarData();
+
+  /**
+   * @brief This function write the AlosSarData in a stream
+   */
+  friend std::ostream& operator<<(std::ostream& os, const AlosSarData& data);
+
+  /**
+   * @brief This function read a AlosSarData from a stream
+   */
+  friend std::istream& operator>>(std::istream& is, AlosSarData& data);
+
+  /**
+   * @brief Copy constructor
+   */
+  AlosSarData(const AlosSarData& rhs);
+
+  /**
+   * @brief Copy operator
+   */
+  AlosSarData& operator=(const AlosSarData& rhs);
+
+  /**
+   * @brief Remove all the previous records from the AlosSarData
+   */
+  void ClearRecords();
+
+
+  /**
+   * @brief Method to save object state to a keyword list.
+   * @param kwl Keyword list to save to.
+   * @param prefix added to keys when saved.
+   * @return true on success, false on error.
+   */
+  virtual bool saveState(ossimKeywordlist& kwl,
+                         const char* prefix=0) const;
+
+
+  const AlosSarFileDescriptor * get_AlosSarDataFileDescriptor() const;
+
+protected:
+  typedef std::map<int, AlosSarRecord*> RecordType;
+  RecordType _records;
+
+
+  static const int AlosSarDataFileDescriptorID;
+private:
+
+};
+}
+#endif
diff --git a/Utilities/otbossimplugins/ossim/AlosPalsar/AlosSarDataFileDescriptor.cpp b/Utilities/otbossimplugins/ossim/AlosPalsar/AlosSarDataFileDescriptor.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..babdd25a997576fa31f2cdd5390b395c9b744079
--- /dev/null
+++ b/Utilities/otbossimplugins/ossim/AlosPalsar/AlosSarDataFileDescriptor.cpp
@@ -0,0 +1,70 @@
+//----------------------------------------------------------------------------
+//
+// "Copyright Centre National d'Etudes Spatiales"
+// "Copyright Centre for Remote Imaging, Sensing and Processing"
+//
+// License:  LGPL
+//
+// See LICENSE.txt file in the top level directory for more details.
+//
+//----------------------------------------------------------------------------
+// $Id$
+
+#include <AlosSarDataFileDescriptor.h>
+
+
+namespace ossimplugins
+{
+
+AlosSarDataFileDescriptor::AlosSarDataFileDescriptor() : AlosSarRecord("sar_desc_rec")
+{
+}
+
+AlosSarDataFileDescriptor::~AlosSarDataFileDescriptor()
+{
+}
+
+std::ostream& operator<<(std::ostream& os, const AlosSarDataFileDescriptor& data)
+{
+  os<<"_num_lines:"<<data._num_lines<<std::endl;
+  os<<"_num_lines:"<<data._num_lines<<std::endl;
+  return os;
+}
+
+std::istream& operator>>(std::istream& is, AlosSarDataFileDescriptor& data)
+{
+  char buf6[7];
+  buf6[6] = '\0';
+
+  char buf180[181];
+  buf180[180] = '\0';
+
+  is.read(buf180,180);
+
+  is.read(buf6,6);
+  data._num_lines = atoi(buf6);
+
+  is.read(buf6,6);
+  data._num_pix_in_line = atoi(buf6);
+
+  char buf528[528];
+  buf528[528] = '\0';
+
+  is.read(buf528,528);
+  return is;
+}
+
+AlosSarDataFileDescriptor::AlosSarDataFileDescriptor(const AlosSarDataFileDescriptor& rhs):
+  AlosSarRecord(rhs),
+  _num_lines(rhs._num_lines),
+  _num_pix_in_line(rhs._num_pix_in_line)
+{
+}
+
+AlosSarDataFileDescriptor& AlosSarDataFileDescriptor::operator=(const AlosSarDataFileDescriptor& rhs)
+{
+  _num_lines = rhs._num_lines;
+  _num_pix_in_line = rhs._num_pix_in_line;
+  return *this;
+}
+}
diff --git a/Utilities/otbossimplugins/ossim/AlosPalsar/AlosSarDataFileDescriptor.h b/Utilities/otbossimplugins/ossim/AlosPalsar/AlosSarDataFileDescriptor.h
new file mode 100644
index 0000000000000000000000000000000000000000..84254d7dce8a4f4bdd0066a38ad8269226458ebc
--- /dev/null
+++ b/Utilities/otbossimplugins/ossim/AlosPalsar/AlosSarDataFileDescriptor.h
@@ -0,0 +1,118 @@
+//----------------------------------------------------------------------------
+//
+// "Copyright Centre National d'Etudes Spatiales"
+// "Copyright Centre for Remote Imaging, Sensing and Processing"
+//
+// License:  LGPL
+//
+// See LICENSE.txt file in the top level directory for more details.
+//
+//----------------------------------------------------------------------------
+// $Id$
+
+#ifndef AlosSarDataFileDescriptor_h
+#define AlosSarDataFileDescriptor_h
+
+
+#include<iostream>
+#include <cstdlib>
+#include <AlosSarRecordHeader.h>
+#include <AlosSarRecord.h>
+
+namespace ossimplugins
+{
+
+/**
+ * @ingroup SARLeaderAlosSarDataFileDescriptorRecord
+ * @brief This class is able to read the SAR leader file descriptor record of the leader file
+ */
+class AlosSarDataFileDescriptor : public AlosSarRecord
+{
+public:
+  /**
+   * @brief Constructor
+   */
+  AlosSarDataFileDescriptor();
+  /**
+   * @brief Destructor
+   */
+  ~AlosSarDataFileDescriptor();
+
+  /**
+   * @brief This function write the AlosSarDataFileDescriptor in a stream
+   */
+  friend std::ostream& operator<<(std::ostream& os, const AlosSarDataFileDescriptor& data);
+
+  /**
+   * @brief This function read a AlosSarDataFileDescriptor from a stream
+   */
+  friend std::istream& operator>>(std::istream& is, AlosSarDataFileDescriptor& data);
+
+  /**
+   * @brief Copy constructor
+   */
+  AlosSarDataFileDescriptor(const AlosSarDataFileDescriptor& rhs);
+
+  /**
+   * @brief Copy operator
+   */
+  AlosSarDataFileDescriptor& operator=(const AlosSarDataFileDescriptor& rhs);
+
+  /**
+   * @brief This function is able to create a new instance of the class
+   */
+  AlosSarRecord* Instanciate()
+  {
+    return new AlosSarDataFileDescriptor();
+  };
+
+  /**
+   * @brief This function is able to create a new instance of the class initialised with the data of the calling instance
+   */
+  AlosSarRecord* Clone()
+  {
+    return new AlosSarDataFileDescriptor(*this);
+  };
+
+  /**
+   * @brief Read the class data from a stream
+   */
+  void Read(std::istream& is)
+  {
+    is>>*this;
+  };
+
+  /**
+   * @brief Write the class to a stream
+   */
+  void Write(std::ostream& os)
+  {
+    os<<*this;
+  };
+
+
+  int get_num_pix_in_line()
+  {
+    return _num_pix_in_line;
+  };
+
+  int get_num_lines()
+  {
+    return _num_lines;
+  };
+
+protected:
+  /**
+  * @brief num_pix_in_line
+  */
+  int   _num_pix_in_line;
+  /**
+  * @brief num_lines
+  */
+  int   _num_lines;
+
+
+private:
+};
+}
+#endif
diff --git a/Utilities/otbossimplugins/ossim/ossimAlosPalsarModel.cpp b/Utilities/otbossimplugins/ossim/ossimAlosPalsarModel.cpp
index 6274ce998be506b54ce0c7705247e7d34dfb224f..4583ce93918b57727088d786427086799489a0d2 100644
--- a/Utilities/otbossimplugins/ossim/ossimAlosPalsarModel.cpp
+++ b/Utilities/otbossimplugins/ossim/ossimAlosPalsarModel.cpp
@@ -21,6 +21,7 @@
 #include <ossim/base/ossimTrace.h>
 #include <otb/RefPoint.h>
 #include <AlosPalsar/AlosSarLeader.h>
+#include <AlosPalsar/AlosSarData.h>
 #include <otb/SensorParams.h>
 #include <otb/PlatformPosition.h>
 #include <ossim/base/ossimKeywordNames.h>
@@ -692,4 +693,14 @@ ossimFilename ossimAlosPalsarModel::findAlosPalsarLeader(const ossimFilename& fi
   return file;
 }
 
+bool ossimAlosPalsarModel::isAlosPalsarData(const ossimFilename& file) const
+{
+  //FIXME
+}
+
+ossimFilename ossimAlosPalsarModel::findAlosPalsarData(const ossimFilename& file) const
+{
+  //FIXME
+}
+
 } // namespace ossimplugins
diff --git a/Utilities/otbossimplugins/ossim/ossimAlosPalsarModel.h b/Utilities/otbossimplugins/ossim/ossimAlosPalsarModel.h
index 6ffb02d8e781359eed02023bdb0f6c623e0ae825..0b9375bc74854a7bbe01141f0d37d3d1a5090105 100644
--- a/Utilities/otbossimplugins/ossim/ossimAlosPalsarModel.h
+++ b/Utilities/otbossimplugins/ossim/ossimAlosPalsarModel.h
@@ -31,6 +31,8 @@ class PlatformPosition;
 class SensorParams;
 class RefPoint;
 class AlosSarLeader;
+class AlosSarData;
+
 /**
  * @brief This class is able to direct localisation and indirect localisation using the AlosPalsar sensor model
  *
@@ -116,11 +118,17 @@ private:
    */
   AlosSarLeader *theAlosSarLeader;
 
-
+  /**
+   * @brief List of metadata contained in the Data file
+   */
+  AlosSarData *theAlosSarData;
 
   virtual bool isAlosPalsarLeader(const ossimFilename& file) const;
   virtual ossimFilename findAlosPalsarLeader(const ossimFilename& file) const;
 
+  virtual bool isAlosPalsarData(const ossimFilename& file) const;
+  virtual ossimFilename findAlosPalsarData(const ossimFilename& file) const;
+
   TYPE_DATA
 
 };