diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php
index 5a4f3b5fa14d2ae051b76ffae926e3708bd0bedd..8374547eaf1331e944e9fed53d954412da4b1ab4 100644
--- a/htdocs/commande/list.php
+++ b/htdocs/commande/list.php
@@ -324,6 +324,7 @@ if ($resql)
 	$var=true;
 	$total=0;
 	$subtotal=0;
+    $productstat_cache=array();
 
     $generic_commande = new Commande($db);
     $generic_product = new Product($db);
@@ -356,17 +357,32 @@ if ($resql)
                 if ($generic_commande->lines[$lig]->product_type==0) {
                     $nbprod++; // order contains real products
                     $generic_product->id = $generic_commande->lines[$lig]->fk_product;
-                    $generic_product->load_stock();
+                    if (empty($productstat_cache[$generic_commande->lines[$lig]->fk_product])) {
+                        $generic_product->load_stock(true);
+                        $productstat_cache[$generic_commande->lines[$lig]->fk_product]['stock_reel'] = $generic_product->stock_reel;
+                    } else {
+                        $generic_product->stock_reel = $productstat_cache[$generic_commande->lines[$lig]->fk_product]['stock_reel'];
+                    }
                     // stock order and stock order_supplier
                     $stock_order=0;
                     $stock_order_supplier=0;
                     if (! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT)) {
                         if (! empty($conf->commande->enabled)) {
-                            $generic_product->load_stats_commande(0,'1,2');
+                            if (empty($productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_customer'])) {
+                                $generic_product->load_stats_commande(0,'1,2',true);
+                                $productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_customer'] = $generic_product->stats_commande['qty'];
+                            } else {
+                                $generic_product->stats_commande['qty'] = $productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_customer'];
+                            }
                             $stock_order=$generic_product->stats_commande['qty'];
                         }
                         if (! empty($conf->fournisseur->enabled)) {
-                            $generic_product->load_stats_commande_fournisseur(0,'3');
+                            if (empty($productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_supplier'])) {
+                                $generic_product->load_stats_commande_fournisseur(0,'3',true);
+                                $productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_supplier'] = $generic_product->stats_commande_fournisseur['qty'];
+                            } else {
+                                $generic_product->stats_commande_fournisseur['qty'] = $productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_supplier'];
+                            }
                             $stock_order_supplier=$generic_product->stats_commande_fournisseur['qty'];
                         }
                     }
diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php
index b9a88fd01561912bb7e707b66c506536e6aa3280..eb224e0748d0f187c62d0d162dd3fe4e64e158f3 100644
--- a/htdocs/contrat/card.php
+++ b/htdocs/contrat/card.php
@@ -1260,7 +1260,7 @@ else
          * Lines of contracts
          */
 
-	    if ($conf->product->enabled) {
+	    if ($conf->product->enabled || $conf->service->enabled) {
 			$productstatic=new Product($db);
 	    }
 
@@ -1329,7 +1329,7 @@ else
                         	$productstatic->ref=$objp->label;
                         	print $productstatic->getNomUrl(0,'',16);
                         }
-                        if (! empty($conf->global->PRODUIT_DESC_IN_FORM) and $objp->description)
+                        if (! empty($conf->global->PRODUIT_DESC_IN_FORM) && !empty($objp->description))
                             print '<br>'.dol_nl2br($objp->description);
                         print '</td>';
                     }
diff --git a/htdocs/contrat/class/index.html b/htdocs/contrat/class/index.html
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php
index daed685ce633f905fbdcf0db932d880f8064d843..6af9f298e8ed8e1654b81059a6819a6ee64391c4 100644
--- a/htdocs/core/lib/functions.lib.php
+++ b/htdocs/core/lib/functions.lib.php
@@ -2458,7 +2458,7 @@ function dol_print_error($db='',$error='')
 	if ($_SERVER['DOCUMENT_ROOT'])    // Mode web
 	{
 		$out.=$langs->trans("DolibarrHasDetectedError").".<br>\n";
-		if (! empty($conf->global->MAIN_FEATURES_LEVEL)) $out.="You use an experimental level of features, so please do NOT report any bugs, anywhere, until going back to MAIN_FEATURES_LEVEL = 0.<br>\n";
+		if (! empty($conf->global->MAIN_FEATURES_LEVEL)) $out.="You use an experimental level of features, so please do NOT report any bugs, except if problem is confirmed moving option MAIN_FEATURES_LEVEL back to 0.<br>\n";
 		$out.=$langs->trans("InformationToHelpDiagnose").":<br>\n";
 
 		$out.="<b>".$langs->trans("Date").":</b> ".dol_print_date(time(),'dayhourlog')."<br>\n";
diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang
index f304d71b1c13a23190fe83a1171722fd1bf14293..e018a45eab9f6278bf95b7585bbdc6952d4c8fd8 100755
--- a/htdocs/langs/en_US/admin.lang
+++ b/htdocs/langs/en_US/admin.lang
@@ -294,7 +294,7 @@ DoNotUseInProduction=Do not use in production
 ThisIsProcessToFollow=This is setup to process:
 StepNb=Step %s
 FindPackageFromWebSite=Find a package that provides feature you want (for example on official web site %s).
-DownloadPackageFromWebSite=Download package.
+DownloadPackageFromWebSite=Download package %s.
 UnpackPackageInDolibarrRoot=Unpack package file into Dolibarr's root directory <b>%s</b>
 SetupIsReadyForUse=Install is finished and Dolibarr is ready to use with this new component.
 NotExistsDirect=The alternative root directory is not defined.<br>
diff --git a/htdocs/langs/en_US/ecm.lang b/htdocs/langs/en_US/ecm.lang
index fe09bda787bd58f6ea51dad5138b278edfb15d62..bbbf2d3a04682c84eacab238b218ac666265f771 100644
--- a/htdocs/langs/en_US/ecm.lang
+++ b/htdocs/langs/en_US/ecm.lang
@@ -43,6 +43,8 @@ ECMDocsByContracts=Documents linked to contracts
 ECMDocsByInvoices=Documents linked to customers invoices
 ECMDocsByProducts=Documents linked to products
 ECMDocsByProjects=Documents linked to projects
+ECMDocsByUsers=Documents linked to users
+ECMDocsByInterventions=Documents linked to interventions
 ECMNoDirectoryYet=No directory created
 ShowECMSection=Show directory
 DeleteSection=Remove directory
diff --git a/htdocs/langs/en_US/products.lang b/htdocs/langs/en_US/products.lang
index ebc724edf5cf57a914ede84e03a98af4182b1fbd..4b77cba7a9c0207d8794101de82efb3539a6e190 100755
--- a/htdocs/langs/en_US/products.lang
+++ b/htdocs/langs/en_US/products.lang
@@ -26,11 +26,11 @@ ProductsAndServicesOnSell=Available Products and Services
 ProductsAndServicesNotOnSell=Obsolete Products and Services
 ProductsAndServicesStatistics=Products and Services statistics
 ProductsStatistics=Products statistics
-ProductsOnSell=Available products
-ProductsNotOnSell=Obsolete products
+ProductsOnSell=Product for sale or for pruchase
+ProductsNotOnSell=Product out of sale and out of purchase
 ProductsOnSellAndOnBuy=Products for sale and for purchase
-ServicesOnSell=Available services
-ServicesNotOnSell=Obsolete services
+ServicesOnSell=Services for sale or for pruchase
+ServicesNotOnSell=Services out of sale
 ServicesOnSellAndOnBuy=Services for sale and for purchase
 InternalRef=Internal reference
 LastRecorded=Last products/services on sell recorded