diff --git a/htdocs/webservices/server_user.php b/htdocs/webservices/server_user.php
index 3a7d0a8928361117fb0654fe8daa8258fe8224aa..c33bfaf07eab84d00860547df162e344e69759f7 100644
--- a/htdocs/webservices/server_user.php
+++ b/htdocs/webservices/server_user.php
@@ -181,7 +181,8 @@ $thirdpartywithuser_fields = array(
 	'tva_intra' => array('name'=>'tva_intra','type'=>'xsd:string'),
 	// 	For user
 	'login' => array('name'=>'login','type'=>'xsd:string'),
-	'password' => array('name'=>'password','type'=>'xsd:string')
+	'password' => array('name'=>'password','type'=>'xsd:string'),
+	'group_id' => array('name'=>'group_id','type'=>'xsd:string')
 );
 
 //Retreive all extrafield for contact
@@ -523,6 +524,7 @@ function createUserFromThirdparty($authentication,$thirdpartywithuser)
 				}
 				else
 				{
+					$db->begin();
 					/*
 					 * Company creation
 					 */
@@ -533,6 +535,25 @@ function createUserFromThirdparty($authentication,$thirdpartywithuser)
 					$thirdparty->town=$thirdpartywithuser['town'];
 					$thirdparty->country_id=$thirdpartywithuser['country_id'];
 					$thirdparty->country_code=$thirdpartywithuser['country_code'];
+
+					// find the country id by code
+					$langs->load("dict");
+
+					$sql = "SELECT rowid";
+					$sql.= " FROM ".MAIN_DB_PREFIX."c_pays";
+					$sql.= " WHERE active = 1";
+					$sql.= " AND code='".$thirdparty->country_code."'";
+
+					$resql=$db->query($sql);
+					if ($resql)
+					{
+						$num = $db->num_rows($resql);
+						if ($num)
+						{
+							$obj = $db->fetch_object($resql);
+							$thirdparty->country_id      = $obj->rowid;
+						}
+					}
 					$thirdparty->phone=$thirdpartywithuser['phone'];
 					$thirdparty->fax=$thirdpartywithuser['fax'];
 					$thirdparty->email=$thirdpartywithuser['email'];
@@ -570,6 +591,9 @@ function createUserFromThirdparty($authentication,$thirdpartywithuser)
 						$contact->phone_pro = $thirdparty->phone;
 						$contact->phone_mobile = $thirdpartywithuser['phone_mobile'];
 						$contact->fax = $thirdparty->fax;
+						$contact->statut = 1;
+						$contact->country_id = $thirdparty->country_id;
+						$contact->country_code = $thirdparty->country_code;
 
 						//Retreive all extrafield for thirdsparty
 						// fetch optionals attributes and labels
@@ -591,33 +615,29 @@ function createUserFromThirdparty($authentication,$thirdpartywithuser)
 							*
 							*/
 							$edituser = new User($db);
-							$db->begin();
 
 							$id = $edituser->create_from_contact($contact,$thirdpartywithuser["login"]);
 							if ($id > 0)
 							{
-								$edituser->setPassword($user,trim($thirdpartywithuser['password']));
-							}
-							else
-							{
-								$error++;
-								$errorcode='NOT_CREATE'; $errorlabel='Object not create : no contact found or create';
-							}
+								$edituser->setPassword($fuser,trim($thirdpartywithuser['password']));
 
-
-							if (! $error && $id > 0)
-							{
-								$db->commit();
+								if($thirdpartywithuser['group_id'] > 0 )
+									$edituser->SetInGroup($thirdpartywithuser['group_id'],$conf->entity);
 							}
 							else
 							{
-								$db->rollback();
 								$error++;
-								$errorcode='NOT_CREATE'; $errorlabel='Contact not create';
+								$errorcode='NOT_CREATE'; $errorlabel='Object not create : '.$edituser->error;
 							}
 						}
+						else
+						{
+							$error++;
+							$errorcode='NOT_CREATE'; $errorlabel='Object not create : '.$contact->error;
+						}
 
 						if(!$error) {
+							$db->commit();
 							$objectresp=array('result'=>array('result_code'=>'OK', 'result_label'=>'SUCCESS'),'id'=>$socid_return);
 							$error=0;
 						}
@@ -645,6 +665,7 @@ function createUserFromThirdparty($authentication,$thirdpartywithuser)
 
 	if ($error)
 	{
+		$db->rollback();
 		$objectresp = array(
 		'result'=>array('result_code' => $errorcode, 'result_label' => $errorlabel)
 		);