diff --git a/htdocs/webservices/demo_wsclient_thirdparty.php-NORUN b/htdocs/webservices/demo_wsclient_thirdparty.php-NORUN
index 50b1b6fcb0cb89145e94becd3be69094e5ab53b2..44c9ff5886f7fff2bd0c65bb6ba86d9bd67194a2 100755
--- a/htdocs/webservices/demo_wsclient_thirdparty.php-NORUN
+++ b/htdocs/webservices/demo_wsclient_thirdparty.php-NORUN
@@ -31,11 +31,13 @@ $WS_DOL_URL = DOL_MAIN_URL_ROOT.'/webservices/server_thirdparty.php';
 //$WS_DOL_URL = 'http://localhost:8080/';	// If not a page, should end with /
 $WS_METHOD_GETTHIRDSPARTY  = 'getThirdParty';
 $WS_METHOD_CREATETHIRDSPARTY = 'createThirdParty';
+$WS_METHOD_UPDATETHIRDSPARTY = 'updateThirdParty';
 $ns='http://www.dolibarr.org/ns/';
 
 //Chosse action to do
 //$action='get';
 $action='create';
+//$action='update';
 
 
 // Set the WebService URL
@@ -121,6 +123,55 @@ if ($action=='create')
 	}
 }
 
+// Test URL
+if ($action=='update')
+{
+	$thirdparty=array(
+	'id'=>'1',
+	'ref'=>'Test WS Create Client',
+	'ref_ext'=>'WS0001',
+	'fk_user_mod'=>'1',
+	'status'=>'1',
+	'client'=>'1',
+	'supplier'=>'0',
+	'address'=>'Adresse customer',
+	'zip'=>'75000',
+	'town'=>'Paris',
+	'country_id'=>'1',//France
+	'customer_code'=>'-1',//Generate code regarding module configuration
+	'supplier_code'=>'0',
+	'phone'=>'0141414141',
+	'fax'=>'0121212121',
+	'email'=>'webtest1@test.fr',
+	'url'=>' www.test.fr',
+	'profid1'=>'1111111',
+	'profid2'=>'222222',
+	'profid3'=>'333333',
+	'profid4'=>'44444',
+	'profid5'=>'55555',
+	'profid6'=>'66666',
+	'capital'=>'3000',
+	'vat_used'=>'0',
+	'vat_number'=>''
+	//,'options_attr1'=>'Attr1 balbal', //Extra field exemple where field code is attr1
+	//'options_attr2'=>'Attr2 balbal' //Extra field exemple where field code is attr2
+	);
+
+
+	$parameters = array('authentication'=>$authentication,'thirdparty'=>$thirdparty);
+	dol_syslog("Call method ".$WS_METHOD_UPDATETHIRDSPARTY);
+	$result = $soapclient->call($WS_METHOD_UPDATETHIRDSPARTY,$parameters,$ns,'');
+	if (! $result)
+	{
+		print $soapclient->error_str;
+		print "<br>\n\n";
+		print $soapclient->request;
+		print "<br>\n\n";
+		print $soapclient->response;
+		exit;
+	}
+}
+
 
 /*
  * View
diff --git a/htdocs/webservices/server_thirdparty.php b/htdocs/webservices/server_thirdparty.php
index ee76f7ac8c2b9f3ccc038aa5bd1cd7ce3cc8cd8a..40c5bdefd6ee07edd03c4d0306826f67768578f5 100755
--- a/htdocs/webservices/server_thirdparty.php
+++ b/htdocs/webservices/server_thirdparty.php
@@ -219,7 +219,7 @@ $server->register(
     // Entry values
     array('authentication'=>'tns:authentication','thirdparty'=>'tns:thirdparty'),
     // Exit values
-    array('result'=>'tns:result','id'=>'xsd:string'),
+    array('result'=>'tns:result','id'=>'xsd:string','ref'=>'xsd:string'),
     $ns,
     $ns.'#createThirdParty',
     $styledoc,
@@ -227,6 +227,20 @@ $server->register(
     'WS to create a thirdparty'
 );
 
+// Register WSDL
+$server->register(
+	'updateThirdParty',
+	// Entry values
+	array('authentication'=>'tns:authentication','thirdparty'=>'tns:thirdparty'),
+	// Exit values
+	array('result'=>'tns:result'),
+	$ns,
+	$ns.'#updateThirdParty',
+	$styledoc,
+	$styleuse,
+	'WS to update a thirdparty'
+);
+
 
 // Register WSDL
 $server->register(
@@ -465,6 +479,131 @@ function createThirdParty($authentication,$thirdparty)
     return $objectresp;
 }
 
+/**
+ * Update a thirdparty
+ *
+ * @param	array		$authentication		Array of authentication information
+ * @param	Societe		$thirdparty		    Thirdparty
+ * @return	array							Array result
+ */
+function updateThirdParty($authentication,$thirdparty)
+{
+	global $db,$conf,$langs;
+
+	$now=dol_now();
+
+	dol_syslog("Function: updateThirdParty login=".$authentication['login']);
+
+	if ($authentication['entity']) $conf->entity=$authentication['entity'];
+
+	// Init and check authentication
+	$objectresp=array();
+	$errorcode='';$errorlabel='';
+	$error=0;
+	$fuser=check_authentication($authentication,$error,$errorcode,$errorlabel);
+	// Check parameters
+	if (empty($thirdparty['id']))	{
+		$error++; $errorcode='KO'; $errorlabel="Thirdparty id is mandatory.";
+	}
+
+
+	if (! $error)
+	{
+		$objectfound=false;
+		
+		include_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
+
+		$object=new Societe($db);
+		$result=$object->fetch($id);
+		
+		if (!empty($thirdparty['id'])) {
+			 
+			$objectfound=true;
+			
+			$object->ref=$thirdparty['ref'];
+			$object->name=$thirdparty['ref'];
+			$object->ref_ext=$thirdparty['ref_ext'];
+			$object->status=$thirdparty['status'];
+			$object->client=$thirdparty['client'];
+			$object->fournisseur=$thirdparty['supplier'];
+			$object->code_client=$thirdparty['customer_code'];
+			$object->code_fournisseur=$thirdparty['supplier_code'];
+			$object->code_compta=$thirdparty['customer_code_accountancy'];
+			$object->code_compta_fournisseur=$thirdparty['supplier_code_accountancy'];
+			$object->date_creation=$now;
+			$object->note=$thirdparty['note'];
+			$object->address=$thirdparty['address'];
+			$object->zip=$thirdparty['zip'];
+			$object->town=$thirdparty['town'];
+	
+			$object->country_id=$thirdparty['country_id'];
+			if ($thirdparty['country_code']) $object->country_id=getCountry($thirdparty['country_code'],3);
+			$object->province_id=$thirdparty['province_id'];
+			//if ($thirdparty['province_code']) $newobject->province_code=getCountry($thirdparty['province_code'],3);
+	
+			$object->phone=$thirdparty['phone'];
+			$object->fax=$thirdparty['fax'];
+			$object->email=$thirdparty['email'];
+			$object->url=$thirdparty['url'];
+			$object->idprof1=$thirdparty['profid1'];
+			$object->idprof2=$thirdparty['profid2'];
+			$object->idprof3=$thirdparty['profid3'];
+			$object->idprof4=$thirdparty['profid4'];
+			$object->idprof5=$thirdparty['profid5'];
+			$object->idprof6=$thirdparty['profid6'];
+	
+			$object->capital=$thirdparty['capital'];
+	
+			$object->barcode=$thirdparty['barcode'];
+			$object->tva_assuj=$thirdparty['vat_used'];
+			$object->tva_intra=$thirdparty['vat_number'];
+	
+			$object->canvas=$thirdparty['canvas'];
+	
+			//Retreive all extrafield for thirdsparty
+			// fetch optionals attributes and labels
+			$extrafields=new ExtraFields($db);
+			$extralabels=$extrafields->fetch_name_optionals_label('company');
+			foreach($extrafields->attribute_label as $key=>$label)
+			{
+				$key='options_'.$key;
+				$object->array_options[$key]=$thirdparty[$key];
+			}
+	
+			$db->begin();
+	
+			$result=$object->update($fuser);
+			if ($result <= 0) {
+				$error++;
+			}
+		}
+
+		if ((! $error) && ($objectfound))
+		{
+			$db->commit();
+			$objectresp=array('result'=>array('result_code'=>'OK', 'result_label'=>''));
+		}
+		elseif ($objectfound)
+		{
+			$db->rollback();
+			$error++;
+			$errorcode='KO';
+			$errorlabel=$object->error;
+		} else {
+			$error++;
+			$errorcode='NOT_FOUND';
+			$errorlabel='Thirdparty id='.$thirdparty['id'].' cannot be found';
+		}
+	}
+
+	if ($error)
+	{
+		$objectresp = array('result'=>array('result_code' => $errorcode, 'result_label' => $errorlabel));
+	}
+
+	return $objectresp;
+}
+
 
 
 /**