diff --git a/htdocs/compta/facture/class/facture-rec.class.php b/htdocs/compta/facture/class/facture-rec.class.php
index 87e2fea156c91de0603b342d1d4f6316c8b08d70..8e4e05037a8cc9e7eb9611237f3edcb92e05c573 100644
--- a/htdocs/compta/facture/class/facture-rec.class.php
+++ b/htdocs/compta/facture/class/facture-rec.class.php
@@ -36,7 +36,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
 /**
  *	Classe de gestion des factures recurrentes/Modeles
  */
-class FactureRec extends Facture
+class FactureRec extends CommonInvoice
 {
 	public $element='facturerec';
 	public $table_element='facture_rec';
diff --git a/htdocs/core/modules/project/doc/doc_generic_project_odt.modules.php b/htdocs/core/modules/project/doc/doc_generic_project_odt.modules.php
index b1ce455445952849802cefa1a3f28cd7bb6ac83a..dfdc17b81ce06b40abd12c8a199cea4bc14a53f1 100644
--- a/htdocs/core/modules/project/doc/doc_generic_project_odt.modules.php
+++ b/htdocs/core/modules/project/doc/doc_generic_project_odt.modules.php
@@ -484,6 +484,22 @@ class doc_generic_project_odt extends ModelePDFProjects
 
 				dol_mkdir($conf->projet->dir_temp);
 
+				// If PROJECTLEADER contact defined on project, we use it
+				$usecontact=false;
+				$arrayidcontact=$object->getIdContact('external','PROJECTLEADER');
+				if (count($arrayidcontact) > 0)
+				{
+					$usecontact=true;
+					$result=$object->fetch_contact($arrayidcontact[0]);
+				}
+
+				// Recipient name
+				if (! empty($usecontact))
+				{
+        			// if we have a PROJECTLEADER contact and we dont use it as recipient we store the contact object for later use
+        			$contactobject = $object->contact;
+				}
+
 				$socobject=$object->thirdparty;
 
 				// Make substitution
@@ -529,8 +545,12 @@ class doc_generic_project_odt extends ModelePDFProjects
 				$array_thirdparty=$this->get_substitutionarray_thirdparty($socobject,$outputlangs);
 				$array_objet=$this->get_substitutionarray_object($object,$outputlangs);
 				$array_other=$this->get_substitutionarray_other($outputlangs);
+                // retrieve contact information for use in project as contact_xxx tags
+        		$array_project_contact = array();
+        		if ($usecontact)
+            			$array_project_contact=$this->get_substitutionarray_contact($contactobject,$outputlangs,'contact');
 
-				$tmparray = array_merge($array_user,$array_soc,$array_thirdparty,$array_objet,$array_other);
+				$tmparray = array_merge($array_user,$array_soc,$array_thirdparty,$array_objet,$array_other,$array_project_contact);
 				complete_substitutions_array($tmparray, $outputlangs, $object);
 				// Call the ODTSubstitution hook
 				$parameters=array('odfHandler'=>&$odfHandler,'file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs,'substitutionarray'=>&$tmparray);
diff --git a/htdocs/projet/tasks/contact.php b/htdocs/projet/tasks/contact.php
index 0faf21c1cc23e515753b289b33ff87430370d189..f3f58c1711903114b6d66b0ad6c4cbe1315e882c 100644
--- a/htdocs/projet/tasks/contact.php
+++ b/htdocs/projet/tasks/contact.php
@@ -492,6 +492,13 @@ if ($id > 0 || ! empty($ref))
 	}
 }
 
+if (is_object($hookmanager))
+{
+	$hookmanager->initHooks(array('contacttpl'));
+	$parameters=array();
+	$reshook=$hookmanager->executeHooks('formContactTpl',$parameters,$object,$action);
+}
+
 
 llxFooter();