diff --git a/contrib/onelab/OnelabParser.cpp b/contrib/onelab/OnelabParser.cpp
index d7fd7ff5af2356d69fe4cf0a002e08607948730b..f4d4096319a93cc735f65cdb76d7029e2aeef0c0 100644
--- a/contrib/onelab/OnelabParser.cpp
+++ b/contrib/onelab/OnelabParser.cpp
@@ -1676,4 +1676,6 @@ void MetaModel::client_sentence(const std::string &name,
 	OLMsg::Error("Unknown client <%s>", name.c_str());
     }
   }
+  else
+    OLMsg::Error("Unknown action <%s>", action.c_str());
 }
diff --git a/contrib/onelab/loader.cpp b/contrib/onelab/loader.cpp
index 9ac1123599bdcdd86c51965514e75020606cd616..f40a51cd8589d12e8f45dbed4c3ab404b77eab43 100644
--- a/contrib/onelab/loader.cpp
+++ b/contrib/onelab/loader.cpp
@@ -236,6 +236,7 @@ int main(int argc, char *argv[]){
 	launchMenu=true;
       }
       else if(!strcmp(argv[i] + 1, "lol")) {
+	//loader used to call non-native clients (type=encapsulated) 
 	std::string clientName=argv[i+1];
 	client = new onelab::remoteNetworkClient(clientName,argv[i+2]);
 	if(client){
@@ -265,6 +266,37 @@ int main(int argc, char *argv[]){
 	}
 	exit(1);
       }
+      else if(!strcmp(argv[i] + 1, "onelab")) {
+	//loader used as a test native client
+	client = new onelab::remoteNetworkClient(argv[i+1],argv[i+2]);
+	if(!client){
+	  std::cout << "I have no client\n";
+	  exit(1);
+	}
+	std::vector<onelab::string> strings;
+	client->get(strings,client->getName()+"/9CheckCommand"); 
+	if(strings.empty()){ // initialize
+	  onelab::string s(client->getName()+"/9CheckCommand","-a");
+	  client->set(s);
+	  onelab::number o(client->getName()+"/Initialized",1);
+	  client->set(o);
+	}
+	else{ 
+	  std::cout << "I am initialized: CheckCommand=<" 
+		    << strings[0].getValue() << ">" << std::endl;	
+	  onelab::number o("alpha",123456);
+	  client->set(o);
+	  client->get(strings,"MESSAGE"); 
+	  if(strings.size()){
+	    std::cout << "I have to tell you: " << strings[0].getValue() << std::endl;
+	  }
+	  std::cout << "Now sleeping for 5s\n";
+	  SleepInSeconds(5);
+	  std::cout << "Awake again\n";
+	}
+	delete client;
+	return 0;
+      }
       else if(!strcmp(argv[i] + 1, "v")) {
         i++;
         if(argv[i])
diff --git a/contrib/onelab/myOS.cpp b/contrib/onelab/myOS.cpp
index 030d07ae7f884b632146a59cbec2cc2726bd91f5..a2b8ffb5d26ef0335a83dd5adc8c96b6a34efdfa 100644
--- a/contrib/onelab/myOS.cpp
+++ b/contrib/onelab/myOS.cpp
@@ -184,7 +184,7 @@ int SystemCall(const std::string &command, bool blocking)
   PROCESS_INFORMATION prInfo;
   memset(&suInfo, 0, sizeof(suInfo));
   suInfo.cb = sizeof(suInfo);
-  //OLMsg::Info("Calling <%s>", command.c_str());
+  OLMsg::Info("Calling <%s>", command.c_str());
   if(blocking){
     CreateProcess(NULL, (char*)command.c_str(), NULL, NULL, FALSE,
                   NORMAL_PRIORITY_CLASS, NULL, NULL,
@@ -210,7 +210,7 @@ int SystemCall(const std::string &command, bool blocking)
   }
   std::string cmd(command);
   if(!blocking) cmd += " &";
-  //OLMsg::Info("Calling <%s>", cmd.c_str());
+  OLMsg::Info("Calling <%s>", cmd.c_str());
   return system(cmd.c_str());
 #endif
 }