diff --git a/dev/initdata/import-thirdparties.php b/dev/initdata/import-thirdparties.php
new file mode 100755
index 00000000000..1b4f9f57df0
--- /dev/null
+++ b/dev/initdata/import-thirdparties.php
@@ -0,0 +1,237 @@
+#!/usr/bin/env php
+
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * WARNING, THIS WILL LOAD MASS DATA ON YOUR INSTANCE
+ */
+
+/**
+ * \file dev/initdata/import-thirdparties.php
+ * \brief Script example to insert thirdparties from a csv file.
+ * To purge data, you can have a look at purge-data.php
+ */
+
+// Test si mode batch
+$sapi_type = php_sapi_name();
+$script_file = basename(__FILE__);
+$path=dirname(__FILE__).'/';
+if (substr($sapi_type, 0, 3) == 'cgi') {
+ echo "Erreur: Vous utilisez l'interpreteur PHP pour le mode CGI. Pour executer mailing-send.php en ligne de commande, vous devez utiliser l'interpreteur PHP pour le mode CLI.\n";
+ exit;
+}
+
+// Recupere root dolibarr
+$path=preg_replace('/import-thirdparties.php/i','',$_SERVER["PHP_SELF"]);
+require ($path."../../htdocs/master.inc.php");
+include_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
+include_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
+
+$delimiter=',';
+$enclosure='"';
+$linelength=10000;
+$escape='/';
+
+// Global variables
+$version=DOL_VERSION;
+$confirmed=1;
+$error=0;
+
+
+/*
+ * Main
+ */
+
+@set_time_limit(0);
+print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n";
+dol_syslog($script_file." launched with arg ".join(',',$argv));
+
+$mode = $argv[1];
+$filepath = $argv[2];
+$filepatherr = $filepath.'.err';
+//$defaultlang = empty($argv[3])?'en_US':$argv[3];
+$startlinenb = empty($argv[3])?1:$argv[3];
+$endlinenb = empty($argv[4])?0:$argv[4];
+
+if (empty($mode) || ! in_array($mode,array('test','confirm','confirmforced')) || empty($filepath)) {
+ print "Usage: $script_file (test|confirm|confirmforced) filepath.csv [startlinenb] [endlinenb]\n";
+ print "Usage: $script_file test myfilepath.csv 2 1002\n";
+ print "\n";
+ exit(-1);
+}
+if (! file_exists($filepath)) {
+ print "Error: File ".$filepath." not found.\n";
+ print "\n";
+ exit(-1);
+}
+
+$ret=$user->fetch('','admin');
+if (! $ret > 0)
+{
+ print 'A user with login "admin" and all permissions must be created to use this script.'."\n";
+ exit;
+}
+$user->getrights();
+
+// Ask confirmation
+if (! $confirmed)
+{
+ print "Hit Enter to continue or CTRL+C to stop...\n";
+ $input = trim(fgets(STDIN));
+}
+
+// Open input and ouput files
+$fhandle = fopen($filepath, 'r');
+if (! $fhandle)
+{
+ print 'Error: Failed to open file '.$filepath."\n";
+ exit(1);
+}
+$fhandleerr = fopen($filepatherr, 'w');
+if (! $fhandleerr)
+{
+ print 'Error: Failed to open file '.$filepatherr."\n";
+ exit(1);
+}
+
+//$langs->setDefaultLang($defaultlang);
+
+
+$db->begin();
+
+$i=0;
+while ($fields=fgetcsv($fhandle, $linelength, $delimiter, $enclosure, $escape))
+{
+ $i++;
+ $errorrecord=0;
+
+ if ($startlinenb && $i < $startlinenb) continue;
+ if ($endlinenb && $i > $endlinenb) continue;
+
+ $object = new Societe($db);
+ $object->state = $fields[6];
+ $object->client = $fields[7];
+ $object->fournisseur = $fields[8];
+
+ $object->name = trim($fields[13]);
+ $object->name_alias = trim($fields[0]);
+
+ $object->address = trim($fields[14]);
+ $object->zip = trim($fields[15]);
+ $object->town = trim($fields[16]);
+ $object->country_code = trim($fields[22]);
+ $object->phone = trim($fields[23]);
+ $object->fax = trim($fields[24]);
+ $object->email = trim($fields[26]);
+ $object->siret = trim($fields[29]);
+ $object->tva_intra = trim($fields[34]);
+ $object->default_lang = trim($fields[43]);
+
+ $condpayment = trim($fields[36]);
+ $object->cond_reglement_id = dol_getIdFromCode($db, $condpayment, 'c_paiement_term', 'label');
+
+ $object->code_client = $fields[9];
+ $object->code_fournisseur = $fields[10];
+
+ $labeltype = trim($fields[1]);
+ $object->typent_id = dol_getIdFromCode($db, $labeltype, 'c_typent', 'label');
+
+ print "Process line nb ".$i.", name ".$object->name;
+
+
+ // Extrafields
+ //$object->array_options['options_state']=price2num($fields[20]);
+ //$object->array_options['options_region']=price2num($fields[18]);
+
+ $ret=$object->create($user);
+ if ($ret < 0)
+ {
+ print " - Error in create result code = ".$ret." - ".$object->errorsToString();
+ $errorrecord++;
+ }
+ else
+ {
+ print " - Creation OK with name ".$object->name." - id = ".$ret;
+ }
+
+ dol_syslog("Add contacts");
+
+ // Insert an invoice contact if there is an invoice email != standard email
+ if (! $errorrecord && $fields[27] && $fields[26] != $fields[27])
+ {
+ $contact = new Contact($db);
+ $contact->firstname = '';
+ $contact->lastname = '';
+
+ if ($ret1 < 0 || $ret2 < 0)
+ {
+ print " - Error in create contact result code = ".$ret1." ".$ret2." - ".$object->errorsToString();
+ $errorrecord++;
+ }
+ else
+ {
+ print " - create contact OK";
+ }
+ }
+
+ // Insert a delivery contact
+ if (! $errorrecord && 1)
+ {
+ $contact = new Contact($db);
+ $contact->firstname = '';
+ $contact->lastname = '';
+
+ if ($ret1 < 0 || $ret2 < 0)
+ {
+ print " - Error in create contact result code = ".$ret1." ".$ret2." - ".$object->errorsToString();
+ $errorrecord++;
+ }
+ else
+ {
+ print " - create contact OK";
+ }
+ }
+
+
+ print "\n";
+
+ if ($errorrecord)
+ {
+ fwrite($fhandleerr, 'Error on record nb '.$i." - ".$object->errorsToString()."\n");
+ $error++; // $errorrecord will be reset
+ }
+}
+
+
+
+
+
+// commit or rollback
+if ($mode != 'confirmforced' && ($error || $mode != 'confirm'))
+{
+ print "Rollback any changes.\n";
+ $db->rollback();
+}
+else
+{
+ print "Commit all changes.\n";
+ $db->commit();
+}
+
+$db->close();
+fclose($fhandle);
+fclose($fhandleerr);
+
+exit($error);
diff --git a/dev/initdata/import-users.php b/dev/initdata/import-users.php
new file mode 100755
index 00000000000..0b3566423fd
--- /dev/null
+++ b/dev/initdata/import-users.php
@@ -0,0 +1,177 @@
+#!/usr/bin/env php
+
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * WARNING, THIS WILL LOAD MASS DATA ON YOUR INSTANCE
+ */
+
+/**
+ * \file dev/initdata/import-thirdparties.php
+ * \brief Script example to insert thirdparties from a csv file.
+ * To purge data, you can have a look at purge-data.php
+ */
+
+// Test si mode batch
+$sapi_type = php_sapi_name();
+$script_file = basename(__FILE__);
+$path=dirname(__FILE__).'/';
+if (substr($sapi_type, 0, 3) == 'cgi') {
+ echo "Erreur: Vous utilisez l'interpreteur PHP pour le mode CGI. Pour executer mailing-send.php en ligne de commande, vous devez utiliser l'interpreteur PHP pour le mode CLI.\n";
+ exit;
+}
+
+// Recupere root dolibarr
+$path=preg_replace('/import-users.php/i','',$_SERVER["PHP_SELF"]);
+require ($path."../../htdocs/master.inc.php");
+include_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
+include_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
+
+$delimiter=',';
+$enclosure='"';
+$linelength=10000;
+$escape='/';
+
+// Global variables
+$version=DOL_VERSION;
+$confirmed=1;
+$error=0;
+
+
+/*
+ * Main
+ */
+
+@set_time_limit(0);
+print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n";
+dol_syslog($script_file." launched with arg ".join(',',$argv));
+
+$mode = $argv[1];
+$filepath = $argv[2];
+$filepatherr = $filepath.'.err';
+//$defaultlang = empty($argv[3])?'en_US':$argv[3];
+$startlinenb = empty($argv[3])?1:$argv[3];
+$endlinenb = empty($argv[4])?0:$argv[4];
+
+if (empty($mode) || ! in_array($mode,array('test','confirm','confirmforced')) || empty($filepath)) {
+ print "Usage: $script_file (test|confirm|confirmforced) filepath.csv [startlinenb] [endlinenb]\n";
+ print "Usage: $script_file test myfilepath.csv 2 1002\n";
+ print "\n";
+ exit(-1);
+}
+if (! file_exists($filepath)) {
+ print "Error: File ".$filepath." not found.\n";
+ print "\n";
+ exit(-1);
+}
+
+$ret=$user->fetch('','admin');
+if (! $ret > 0)
+{
+ print 'A user with login "admin" and all permissions must be created to use this script.'."\n";
+ exit;
+}
+$user->getrights();
+
+// Ask confirmation
+if (! $confirmed)
+{
+ print "Hit Enter to continue or CTRL+C to stop...\n";
+ $input = trim(fgets(STDIN));
+}
+
+// Open input and ouput files
+$fhandle = fopen($filepath, 'r');
+if (! $fhandle)
+{
+ print 'Error: Failed to open file '.$filepath."\n";
+ exit(1);
+}
+$fhandleerr = fopen($filepatherr, 'w');
+if (! $fhandleerr)
+{
+ print 'Error: Failed to open file '.$filepatherr."\n";
+ exit(1);
+}
+
+//$langs->setDefaultLang($defaultlang);
+
+
+$db->begin();
+
+$i=0;
+while ($fields=fgetcsv($fhandle, $linelength, $delimiter, $enclosure, $escape))
+{
+ $i++;
+ $errorrecord=0;
+
+ if ($startlinenb && $i < $startlinenb) continue;
+ if ($endlinenb && $i > $endlinenb) continue;
+
+ $object = new User($db);
+ $object->statut = 1;
+
+ $tmp=explode(' ',$fields[3],2);
+
+ $object->firstname = trim($tmp[0]);
+ $object->lastname = trim($tmp[1]);
+ if ($object->lastname) $object->login = strtolower(substr($object->firstname, 0, 1)) . strtolower(substr($object->lastname, 0));
+ else $object->login=strtolower($object->firstname);
+ $object->login=preg_replace('/ /','',$object->login);
+ $object->password = 'init';
+
+ print "Process line nb ".$i.", login ".$object->login;
+
+ $ret=$object->create($user);
+ if ($ret < 0)
+ {
+ print " - Error in create result code = ".$ret." - ".$object->errorsToString();
+ $errorrecord++;
+ }
+ else
+ {
+ print " - Creation OK with login ".$object->login." - id = ".$ret;
+ }
+
+ print "\n";
+
+ if ($errorrecord)
+ {
+ fwrite($fhandleerr, 'Error on record nb '.$i." - ".$object->errorsToString()."\n");
+ $error++; // $errorrecord will be reset
+ }
+}
+
+
+
+
+
+// commit or rollback
+if ($mode != 'confirmforced' && ($error || $mode != 'confirm'))
+{
+ print "Rollback any changes.\n";
+ $db->rollback();
+}
+else
+{
+ print "Commit all changes.\n";
+ $db->commit();
+}
+
+$db->close();
+fclose($fhandle);
+fclose($fhandleerr);
+
+exit($error);
diff --git a/dev/initdata/purge-data.php b/dev/initdata/purge-data.php
index 25ab928b136..82448a5d857 100755
--- a/dev/initdata/purge-data.php
+++ b/dev/initdata/purge-data.php
@@ -53,6 +53,10 @@ $error=0;
// List of sql to execute
$sqls=array(
+ 'user'=>array(
+ 'DELETE FROM '.MAIN_DB_PREFIX."user_rights WHERE fk_user IN (SELECT rowid FROM ".MAIN_DB_PREFIX."user WHERE admin = 0 and login != 'admin')",
+ 'DELETE FROM '.MAIN_DB_PREFIX."user WHERE admin = 0 and login != 'admin'",
+ ),
'bank'=>array(
'DELETE FROM '.MAIN_DB_PREFIX.'bank_account',
'DELETE FROM '.MAIN_DB_PREFIX.'bank_class',