diff --git a/Code/ApplicationEngine/otbWrapperApplication.cxx b/Code/ApplicationEngine/otbWrapperApplication.cxx
index 807e01de5c4f166c45e7db45832994787d1d3f10..9e87af74fba4caf3d6325baad6b89cef523e0bd8 100644
--- a/Code/ApplicationEngine/otbWrapperApplication.cxx
+++ b/Code/ApplicationEngine/otbWrapperApplication.cxx
@@ -116,19 +116,20 @@ void Application::ExecuteAndWriteOutput()
       it != paramList.end();
       ++it)
     {
-    if (GetParameterType(*it) == ParameterType_OutputImage
-        && IsParameterEnabled(*it) )
+    std::string key = *it;
+    if (GetParameterType(key) == ParameterType_OutputImage
+        && IsParameterEnabled(key) && HasValue(key) )
       {
-      Parameter* param = GetParameterByKey(*it);
+      Parameter* param = GetParameterByKey(key);
       OutputImageParameter* outputParam = dynamic_cast<OutputImageParameter*>(param);
       outputParam->InitializeWriters();
       AddProcess(outputParam->GetWriter(),"Writer");
       outputParam->Write();
       }
-    else if (GetParameterType(*it) == ParameterType_OutputVectorData
-             && IsParameterEnabled(*it) )
+    else if (GetParameterType(key) == ParameterType_OutputVectorData
+             && IsParameterEnabled(key) && HasValue(key) )
       {
-      Parameter* param = GetParameterByKey(*it);
+      Parameter* param = GetParameterByKey(key);
       OutputVectorDataParameter* outputParam = dynamic_cast<OutputVectorDataParameter*>(param);
       outputParam->InitializeWriters();
       AddProcess(outputParam->GetWriter(),"Writer");