diff --git a/contrib/onelab/OnelabParser.cpp b/contrib/onelab/OnelabParser.cpp
index f8445ebf21d88db98203d0cf764d96b113d4bc53..2497190a851dc016aba1cb37d3e8eb481c22ee7b 100644
--- a/contrib/onelab/OnelabParser.cpp
+++ b/contrib/onelab/OnelabParser.cpp
@@ -1658,7 +1658,7 @@ void MetaModel::client_sentence(const std::string &name,
       OLMsg::Error("Wrong number of arguments <%d> for <%s>",
 		 arguments.size(), action.c_str());
   }
-  else if(!action.compare("alwaysCompute")){
+  else if(!action.compare("alwaysCompute") || !action.compare("preCompute")){
     if(isTodo(REGISTER)){
       localSolverClient *c;
       if((c=findClientByName(name))){
@@ -1677,8 +1677,8 @@ void MetaModel::client_sentence(const std::string &name,
       }
       localSolverClient *c;
       if((c=findClientByName(name))) {
-	OLMsg::SetOnelabNumber("Gmsh/NeedReloadGeom",1,false);
 	c->GmshMerge(choices);
+	OLMsg::SetOnelabNumber("Gmsh/NeedReloadGeom",1,false);
       }
       else
 	OLMsg::Error("Unknown client <%s>", name.c_str());
@@ -1693,6 +1693,7 @@ void MetaModel::client_sentence(const std::string &name,
       localSolverClient *c;
       if((c=findClientByName(name))) {
 	c->GmshMerge(choices);
+	OLMsg::SetOnelabNumber("Gmsh/NeedReloadGeom",1,false);
       }
       else
 	OLMsg::Error("Unknown client <%s>", name.c_str());