[172527] commited for NA
diff --git a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ConfigurationManager.java b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ConfigurationManager.java
index 2cc1ff8..537d69a 100644
--- a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ConfigurationManager.java
+++ b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ConfigurationManager.java
@@ -17,6 +17,7 @@
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IWorkspaceRoot;
 import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.Preferences;
 import org.eclipse.jem.util.logger.LogEntry;
 import org.eclipse.jem.util.logger.proxy.Logger;
 import org.eclipse.wst.validation.internal.plugin.ValidationPlugin;
@@ -130,6 +131,11 @@
 			gp = (GlobalConfiguration) root.getSessionProperty(USER_PREFERENCE);
 			if (gp == null) {
 				gp = new GlobalConfiguration(root);
+				Preferences prefs = ValidationPlugin.getPlugin().getPluginPreferences();
+				if( prefs != null ){
+					prefs.addPropertyChangeListener(gp);
+				}
+				
 				gp.getVersion(); // initialize the configuration's version attribute
 				gp.load(); // initialize this instance from the stored values
 				gp.passivate(); // store this instance as a property on the IResource
@@ -273,4 +279,5 @@
 		}
 		return false;
 	}
+
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ValidationConfiguration.java b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ValidationConfiguration.java
index 3d67fe2..a052d95 100644
--- a/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ValidationConfiguration.java
+++ b/plugins/org.eclipse.wst.validation/validate/org/eclipse/wst/validation/internal/ValidationConfiguration.java
@@ -764,13 +764,28 @@
 		Preferences prefs = (Preferences) event.getSource();
 		if (prefs != null && !event.getOldValue().equals(event.getNewValue())) {
 			try {
-				deserializeAllPrefs(prefs);
+				deserializeAllPrefs(event);
+				passivate();
 			 } catch (InvocationTargetException ie) {
 				Logger.getLogger().log(ie);
 			}
 		}
 	}
 
+	private void deserializeAllPrefs(PropertyChangeEvent event) throws InvocationTargetException {
+		String storedConfig = (String)event.getNewValue();
+		if( event.getProperty().equals(USER_PREFERENCE) ){
+			deserialize(storedConfig);
+		}else if(event.getProperty().equals(USER_MANUAL_PREFERENCE)){
+			deserializeManual(storedConfig);
+		}else if(event.getProperty().equals(USER_BUILD_PREFERENCE)){
+			deserializeBuild(storedConfig);
+		}else if(event.getProperty().equals(DELEGATES_PREFERENCE)){
+			deserializeDelegates(storedConfig);
+		}
+	}
+	
+	
 	protected void deserializeBuild(String storedConfiguration) throws InvocationTargetException {
 		if (storedConfiguration == null || storedConfiguration.length() == 0 || storedConfiguration.equals("default_value")) {
 			// Assume that the configuration has never been set (new workspace).