diff --git a/contrib/onelab/OnelabClients.cpp b/contrib/onelab/OnelabClients.cpp
index 2baffbc96ef450a73892f9dc41c8ea5835fea36e..0bd7f9b6550bf522e6dee958421cf4e245dd4cf1 100644
--- a/contrib/onelab/OnelabClients.cpp
+++ b/contrib/onelab/OnelabClients.cpp
@@ -518,8 +518,10 @@ void localSolverClient::GmshMerge(std::vector<std::string> choices)
   for(unsigned int i = 0; i < choices.size(); i++){
     std::string fileName=getWorkingDir()+choices[i];
     //checkIfPresent or make available locally
-    OLMsg::Info("Send merge request <%s>",fileName.c_str());
-    OLMsg::MergeFile(fileName);
+    if(checkIfPresent(fileName)){
+      OLMsg::Info("Send merge request <%s>",fileName.c_str());
+      OLMsg::MergeFile(fileName);
+    }
   }
 }
 
diff --git a/contrib/onelab/OnelabClients.h b/contrib/onelab/OnelabClients.h
index 329297ee9253b4d30d9eb757381cc4c3ac1a97d6..9775d37e84b9fca30b4fff833a49bd747f3ce2ed 100644
--- a/contrib/onelab/OnelabClients.h
+++ b/contrib/onelab/OnelabClients.h
@@ -23,12 +23,12 @@ static std::string localFileTag("_");
 enum parseMode {REGISTER, ANALYZE, COMPUTE, EXIT};
 
 #if defined(WIN32)
-const char dirSep='\\';
+static char dirSep='\\';
 static std::string cmdSep(" & ");
 static std::string removeCmd("del ");
 static std::string lsCmd("dir ");
 #else
-const char dirSep='/';
+static char dirSep='/';
 static std::string cmdSep(" ; ");
 static std::string removeCmd("rm -rf ");
 static std::string lsCmd("ls ");
diff --git a/contrib/onelab/OnelabParser.cpp b/contrib/onelab/OnelabParser.cpp
index 86183f92d5e0339425712c7e3fc20476b1470d33..f8445ebf21d88db98203d0cf764d96b113d4bc53 100644
--- a/contrib/onelab/OnelabParser.cpp
+++ b/contrib/onelab/OnelabParser.cpp
@@ -1659,7 +1659,7 @@ void MetaModel::client_sentence(const std::string &name,
 		 arguments.size(), action.c_str());
   }
   else if(!action.compare("alwaysCompute")){
-    if(isTodo(REGISTER) || isTodo(ANALYZE)){
+    if(isTodo(REGISTER)){
       localSolverClient *c;
       if((c=findClientByName(name))){
 	c->compute();
@@ -1670,7 +1670,6 @@ void MetaModel::client_sentence(const std::string &name,
     }
   }
   else if(!action.compare("merge")){
-    //if(isTodo(COMPUTE)  && !OLMsg::GetErrorCount() && (OLMsg::hasGmsh)){
     if( arguments.size() && isTodo(COMPUTE)  && !OLMsg::GetErrorCount() && (OLMsg::hasGmsh)){
       std::vector<std::string> choices;
       for(unsigned int i = 0; i < arguments.size(); i++){
@@ -1686,20 +1685,14 @@ void MetaModel::client_sentence(const std::string &name,
     }
   }
   else if(!action.compare("frontPage")){
-    if( arguments.size() && OLMsg::hasGmsh ){
+    if( isTodo(REGISTER) && OLMsg::hasGmsh && arguments.size() && !OLMsg::GetErrorCount()){
       std::vector<std::string> choices;
       for(unsigned int i = 0; i < arguments.size(); i++){
 	choices.push_back(resolveGetVal(arguments[i]));
       }
       localSolverClient *c;
       if((c=findClientByName(name))) {
-	if(isTodo(REGISTER) && !OLMsg::GetErrorCount())
-	  if(onelab::server::instance()->getChanged(c->getName())){
-	    //c->compute();
-	    c->GmshMerge(choices);
-	    //OLMsg::SetOnelabNumber("Gmsh/NeedReloadGeom",1,false);
-	    //onelab::server::instance()->setChanged(false, c->getName());
-	  }
+	c->GmshMerge(choices);
       }
       else
 	OLMsg::Error("Unknown client <%s>", name.c_str());