diff --git a/Code/IO/otbStreamingImageVirtualWriter.h b/Code/IO/otbStreamingImageVirtualWriter.h
index 37ea082f2d0d5b7bcd7ace483d5af0d5f661c45d..248f2ff6231ae9460ca02b094a7b27eb2d265c2b 100644
--- a/Code/IO/otbStreamingImageVirtualWriter.h
+++ b/Code/IO/otbStreamingImageVirtualWriter.h
@@ -132,6 +132,10 @@ public:
    *   Setting the availableRAM parameter to 0 means that the available RAM
    *   is set from the CMake configuration option */
   void SetAutomaticAdaptativeStreaming(unsigned int availableRAM = 0, double bias = 1.0);
+  
+  /** Override Update() from ProcessObject 
+   *  This filter does not produce an output */
+  virtual void Update();
 
 protected:
   StreamingImageVirtualWriter();
diff --git a/Code/IO/otbStreamingImageVirtualWriter.txx b/Code/IO/otbStreamingImageVirtualWriter.txx
index 463bb211a5121a140f329f082a1e716bd2160a37..4d0399d1c206c6a33f3c81727f53b5b60d6bcdc5 100644
--- a/Code/IO/otbStreamingImageVirtualWriter.txx
+++ b/Code/IO/otbStreamingImageVirtualWriter.txx
@@ -146,6 +146,16 @@ StreamingImageVirtualWriter<TInputImage>
   m_StreamingManager = streamingManager;
 }
 
+template <class TInputImage>
+void
+StreamingImageVirtualWriter<TInputImage>
+::Update()
+{
+  InputImagePointer inputPtr = const_cast<InputImageType *>(this->GetInput(0));
+  inputPtr->UpdateOutputInformation();
+  
+  this->GenerateData();
+}
 
 template <class TInputImage>
 void
@@ -231,9 +241,12 @@ StreamingImageVirtualWriter<TInputImage>
     {
     streamRegion = m_StreamingManager->GetSplit(m_CurrentDivision);
     otbMsgDevMacro(<< "Processing region : " << streamRegion )
-    inputPtr->ReleaseData();
+    //inputPtr->ReleaseData();
+    //inputPtr->SetRequestedRegion(streamRegion);
+    //inputPtr->Update();
     inputPtr->SetRequestedRegion(streamRegion);
-    inputPtr->Update();
+    inputPtr->PropagateRequestedRegion();
+    inputPtr->UpdateOutputData();
     }
 
   /**