diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/page/ModifyModulesComposite.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/page/ModifyModulesComposite.java
index 64f53c2..329d1af 100644
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/page/ModifyModulesComposite.java
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/page/ModifyModulesComposite.java
@@ -60,6 +60,8 @@
  * A wizard page used to add and remove modules.
  */
 public class ModifyModulesComposite extends Composite {
+	public static final String TASK_REFRESH_MODULES = "refresh-modules";
+
 	private static final String ROOT = "root";
 	protected static Color color;
 	protected static Font font;
@@ -69,6 +71,7 @@
 	protected IServerAttributes server;
 	protected IRuntime runtime;
 	protected boolean runtimeDirty;
+	protected Object refreshModules;
 
 	protected Map<ChildModuleMapKey, IModule[]> childModuleMap = new HashMap<ChildModuleMapKey, IModule[]>();
 	protected Map<IModule, IModule[]> parentModuleMap = new HashMap<IModule, IModule[]>();
@@ -243,11 +246,11 @@
 		if (isVisible())
 			return;
 		
-		// see bug 185875
-		if (server == this.server) {
+		// see bug 185875, 205869
+		if (refreshModules == taskModel.getObject(TASK_REFRESH_MODULES) && server == this.server) {
 			if (server == null)
 				return;
-			if (runtime == this.runtime) {
+			if (runtime == server.getRuntime()) {
 				if (runtime == null)
 					return;
 				if (runtime instanceof IRuntimeWorkingCopy) {
@@ -259,6 +262,7 @@
 			}
 		}
 		
+		refreshModules = taskModel.getObject(TASK_REFRESH_MODULES);
 		this.server = server;
 		if (server == null)
 			runtime = null;
