diff --git a/update/org.eclipse.update.configurator/META-INF/MANIFEST.MF b/update/org.eclipse.update.configurator/META-INF/MANIFEST.MF
index 6faf1b0..6c4b2d1 100644
--- a/update/org.eclipse.update.configurator/META-INF/MANIFEST.MF
+++ b/update/org.eclipse.update.configurator/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.update.configurator; singleton:=true
-Bundle-Version: 3.4.100.qualifier
+Bundle-Version: 3.4.200.qualifier
 Bundle-Activator: org.eclipse.update.internal.configurator.ConfigurationActivator
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
diff --git a/update/org.eclipse.update.configurator/pom.xml b/update/org.eclipse.update.configurator/pom.xml
index a29c507..c8e01a5 100644
--- a/update/org.eclipse.update.configurator/pom.xml
+++ b/update/org.eclipse.update.configurator/pom.xml
@@ -19,6 +19,6 @@
   </parent>
   <groupId>org.eclipse.update</groupId>
   <artifactId>org.eclipse.update.configurator</artifactId>
-  <version>3.4.100-SNAPSHOT</version>
+  <version>3.4.200-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/PlatformConfiguration.java b/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/PlatformConfiguration.java
index e43ebd4..52e6d3a 100644
--- a/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/PlatformConfiguration.java
+++ b/update/org.eclipse.update.configurator/src/org/eclipse/update/internal/configurator/PlatformConfiguration.java
@@ -485,7 +485,7 @@
 		// on next access
 		ISiteEntry[] sites = getConfiguredSites();
 		for (int i = 0; i < sites.length; i++) {
-			if (sites[i].isUpdateable()) {
+			if (sites[i].isUpdateable() && sites[i].getSitePolicy().getType() != ISitePolicy.MANAGED_ONLY) {
 				// reset site entry
 				((SiteEntry) sites[i]).refresh();
 			}
@@ -783,7 +783,9 @@
 		long result = 0;
 		ISiteEntry[] sites = config.getSites();
 		for (int i = 0; i < sites.length; i++) {
-			result = Math.max(result, sites[i].getFeaturesChangeStamp());
+			if (sites[i].getSitePolicy().getType() != ISitePolicy.MANAGED_ONLY) {
+				result = Math.max(result, sites[i].getFeaturesChangeStamp());
+			}
 		}
 		featuresChangeStamp = result;
 		featuresChangeStampIsValid = true;
@@ -797,7 +799,9 @@
 		long result = 0;
 		ISiteEntry[] sites = config.getSites();
 		for (int i = 0; i < sites.length; i++) {
-			result = Math.max(result, sites[i].getPluginsChangeStamp());
+			if (sites[i].getSitePolicy().getType() != ISitePolicy.MANAGED_ONLY) {
+				result = Math.max(result, sites[i].getPluginsChangeStamp());
+			}
 		}
 		pluginsChangeStamp = result;
 		pluginsChangeStampIsValid = true;
@@ -997,7 +1001,7 @@
 		long lastChange = config.getDate().getTime();
 		SiteEntry[] sites = config.getSites();
 		for (int s = 0; s < sites.length; s++) {
-			if (sites[s].isUpdateable()) {
+			if (sites[s].isUpdateable() && sites[s].getSitePolicy().getType() != ISitePolicy.MANAGED_ONLY) {
 				long siteTimestamp = sites[s].getChangeStamp();
 				if (siteTimestamp > lastChange)
 					sites[s].loadFromDisk(lastChange);
