diff --git a/plugins/addons/subscription/class_subscriptionInfo.inc b/plugins/addons/subscription/class_subscriptionInfo.inc
index 62b7be1cc94ace9f8937e7836b7a8e835f31c2a2..4e381b623410e9a16fa877c667930953221f0d0d 100644
--- a/plugins/addons/subscription/class_subscriptionInfo.inc
+++ b/plugins/addons/subscription/class_subscriptionInfo.inc
@@ -32,6 +32,8 @@ class subscriptionInfo extends simplePlugin
     'fdSubscriptionEndDate'             => 'EndDate',
   ];
 
+  public static $sectionName = 'FusionDirectory Subscription';
+
   public static function plInfo ()
   {
     return [
@@ -176,7 +178,7 @@ class subscriptionInfo extends simplePlugin
         htmlescape(_('No data. Did you forgot to upload a file?')),
         ERROR_DIALOG
       );
-    } elseif (($data = parse_ini_string($data)) === FALSE) {
+    } elseif (($data = parse_ini_string($data, TRUE)) === FALSE) {
       /* Import of INI failed */
       msg_dialog::display(
         _('Import error'),
@@ -184,17 +186,42 @@ class subscriptionInfo extends simplePlugin
         ERROR_DIALOG
       );
     } else {
-      /* Import data and save it to the LDAP */
-      foreach (static::$subscriptionAttributes as $attr => $iniVar) {
-        $this->attributesAccess[$attr]->setValue(isset($data[$iniVar]) ? $data[$iniVar] : '');
+      /* Check content of ini file */
+      $errorText = NULL;
+      if (!isset($data[static::$sectionName])) {
+        $errorText = sprintf(_('Missing section "%s" in imported file'), static::$sectionName);
+      } else {
+        $data = $data[static::$sectionName];
+        foreach (static::$subscriptionAttributes as $attr => $iniVar) {
+          if ($this->attributesAccess[$attr]->isRequired() && (!isset($data[$iniVar]) || ($data[$iniVar] === ''))) {
+            $errorText = sprintf(_('Missing attribute "%s" in imported file'), $iniVar);
+            break;
+          }
+        }
       }
-      $errors = $this->parent->save();
-      if (empty($errors)) {
-        /* The object will stay open so it needs to appear as loaded from LDAP */
-        $this->is_account             = TRUE;
-        $this->initially_was_account  = TRUE;
+      if ($errorText !== NULL) {
+        msg_dialog::display(
+          _('Import error'),
+          htmlescape($errorText),
+          ERROR_DIALOG
+        );
       } else {
-        msg_dialog::displayChecks($errors);
+        /* Import data and save it to the LDAP */
+        foreach (static::$subscriptionAttributes as $attr => $iniVar) {
+          $this->attributesAccess[$attr]->setValue(isset($data[$iniVar]) ? $data[$iniVar] : '');
+        }
+        $errors = $this->parent->save();
+        if (empty($errors)) {
+          /* The object will stay open so it needs to appear as loaded from LDAP */
+          $this->is_account             = TRUE;
+          $this->initially_was_account  = TRUE;
+        } else {
+          msg_dialog::displayChecks($errors);
+          /* Reset fields to LDAP value */
+          foreach (array_keys(static::$subscriptionAttributes) as $attr) {
+            $this->attributesAccess[$attr]->setValue($this->attributesAccess[$attr]->getInitialValue());
+          }
+        }
       }
     }
     /* Avoid double import */