diff --git a/jboss-seam/src/main/java/org/jboss/seam/contexts/Contexts.java b/jboss-seam/src/main/java/org/jboss/seam/contexts/Contexts.java
index 7c310eb..147e724 100644
--- a/jboss-seam/src/main/java/org/jboss/seam/contexts/Contexts.java
+++ b/jboss-seam/src/main/java/org/jboss/seam/contexts/Contexts.java
@@ -11,6 +11,7 @@ import java.util.Map;
 import org.jboss.seam.Component;
 import org.jboss.seam.ScopeType;
 import org.jboss.seam.bpm.BusinessProcess;
+import org.jboss.seam.core.ConversationPropagation;
 import org.jboss.seam.core.Events;
 import org.jboss.seam.core.Init;
 import org.jboss.seam.core.Manager;
@@ -89,8 +90,36 @@ public class Contexts
       return methodContext.get() != null;
    }
 
-   public static boolean isPageContextActive() 
+   /**
+    * Is PageContext set?
+    * 
+    * If not it is lazily created in case of RESTORE_VIEW is processing
+    * This is a requirement for starting CONVERSATION - JSF2 change
+    * @return
+    */
+   public static boolean isPageContextActive()
    {
+      if (pageContext.get() == null)
+      {
+         log.debug("isPageContextActive is null");
+         // lazy initialize the page context during restore view
+         javax.faces.context.FacesContext facesContext = javax.faces.context.FacesContext.getCurrentInstance();
+         if (facesContext != null)
+         {
+            if (javax.faces.event.PhaseId.RESTORE_VIEW.equals(facesContext.getCurrentPhaseId()))
+            {
+               log.debug("Page Context will be lazilly created");
+               FacesLifecycle.resumePage();
+               Map<String, String> parameters = facesContext.getExternalContext().getRequestParameterMap();
+               ConversationPropagation.instance().restoreConversationId(parameters);
+               boolean conversationFound = Manager.instance().restoreConversation();
+               pageContext.get().set("org.jboss.seam.jsf.SeamPhaseListener.conversationFound", conversationFound);
+               
+               FacesLifecycle.resumeConversation(facesContext.getExternalContext());
+            }
+         }
+
+      }
       return pageContext.get() != null;
    }
 
diff --git a/jboss-seam/src/main/java/org/jboss/seam/faces/FacesManager.java b/jboss-seam/src/main/java/org/jboss/seam/faces/FacesManager.java
index 780c47d..7c50676 100644
--- a/jboss-seam/src/main/java/org/jboss/seam/faces/FacesManager.java
+++ b/jboss-seam/src/main/java/org/jboss/seam/faces/FacesManager.java
@@ -100,7 +100,7 @@ public class FacesManager extends Manager
    protected void storeConversationToViewRootIfNecessary()
    {
       FacesContext facesContext = FacesContext.getCurrentInstance();
-      if ( facesContext!=null && FacesLifecycle.getPhaseId()==PhaseId.RENDER_RESPONSE )
+      if ( facesContext!=null && (FacesLifecycle.getPhaseId()==PhaseId.RENDER_RESPONSE || FacesLifecycle.getPhaseId()==PhaseId.RESTORE_VIEW) )
       {
          FacesPage.instance().storeConversation();
       }
diff --git a/jboss-seam/src/main/java/org/jboss/seam/jsf/SeamPhaseListener.java b/jboss-seam/src/main/java/org/jboss/seam/jsf/SeamPhaseListener.java
index 8f0042b..24c18e5 100644
--- a/jboss-seam/src/main/java/org/jboss/seam/jsf/SeamPhaseListener.java
+++ b/jboss-seam/src/main/java/org/jboss/seam/jsf/SeamPhaseListener.java
@@ -27,7 +27,6 @@ import org.jboss.seam.Seam;
 import org.jboss.seam.contexts.Context;
 import org.jboss.seam.contexts.Contexts;
 import org.jboss.seam.contexts.FacesLifecycle;
-import org.jboss.seam.core.ConversationPropagation;
 import org.jboss.seam.core.Events;
 import org.jboss.seam.core.Init;
 import org.jboss.seam.core.Manager;
@@ -377,20 +376,17 @@ public class SeamPhaseListener implements PhaseListener
     */
    protected void beforeRestoreView(FacesContext facesContext)
    {
-      FacesLifecycle.beginRequest( facesContext.getExternalContext() );
+       FacesLifecycle.beginRequest( facesContext.getExternalContext() );
    }
    
    /**
     * Restore the page and conversation contexts during a JSF request
     */
    protected void afterRestoreView(FacesContext facesContext)
-   {
-      FacesLifecycle.resumePage();
-      Map parameters = facesContext.getExternalContext().getRequestParameterMap();
-      ConversationPropagation.instance().restoreConversationId(parameters);
-      boolean conversationFound = Manager.instance().restoreConversation();
-      FacesLifecycle.resumeConversation( facesContext.getExternalContext() );
-      postRestorePage(facesContext, parameters, conversationFound);
+   {	   
+	   boolean conversationFound = Contexts.isPageContextActive() ? Contexts.getPageContext().isSet("org.jboss.seam.jsf.SeamPhaseListener.conversationFound") : false;
+	   Map parameters = facesContext.getExternalContext().getRequestParameterMap();
+	   postRestorePage(facesContext, parameters, conversationFound);
    }
 
    public void raiseEventsBeforePhase(PhaseEvent event)
