diff --git a/Common/GmshMessage.cpp b/Common/GmshMessage.cpp
index e883fded65ab33ed65c176604b25fd2ad065396e..75f561b754c8ac7bf1ce98cb450f93ea148617a0 100644
--- a/Common/GmshMessage.cpp
+++ b/Common/GmshMessage.cpp
@@ -1281,8 +1281,14 @@ void Msg::ImportPhysicalsAsOnelabRegions()
 void Msg::RunOnelabClient(const std::string &name, const std::string &command)
 {
 #if defined(HAVE_ONELAB) && !defined(HAVE_ONELAB2)
-  gmshLocalNetworkClient client(name, command, "", true);
-  client.run();
+  onelab::remoteNetworkClient *c = dynamic_cast<onelab::remoteNetworkClient*>(_onelabClient);
+  if(c){
+    c->runSubClient(name, command);
+  }
+  else{
+    gmshLocalNetworkClient client(name, command, "", true);
+    client.run();
+  }
 #endif
 }
 
diff --git a/Common/gmshLocalNetworkClient.cpp b/Common/gmshLocalNetworkClient.cpp
index ef92f8471a629ea715fddf6f8cef86529b5e4d01..da5f06feb1a22b6557fa8f89f4139670f82aaafa 100644
--- a/Common/gmshLocalNetworkClient.cpp
+++ b/Common/gmshLocalNetworkClient.cpp
@@ -378,6 +378,10 @@ bool gmshLocalNetworkClient::receiveMessage(gmshLocalNetworkClient *master)
         new gmshLocalNetworkClient(clientName, command, "", true);
       onelabGmshServer *server = new onelabGmshServer(subClient);
       subClient->setPid(0);
+      onelab::string o(subClient->getName() + "/Action", "compute");
+      o.setVisible(false);
+      o.setNeverChanged(true);
+      onelab::server::instance()->set(o);
       int sock = server->LaunchClient();
       if(sock < 0){ // could not establish the connection: aborting
         server->Shutdown();