From 2d2d83179cf464b68e59d8470a7fa9b6c1dc280c Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Wed, 24 Dec 2014 15:01:44 +0000
Subject: [PATCH] Code cleanup

---
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/ParallelWorkQueue.java                                |   14 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/PasswordPolicyConfigManager.java                            |   53 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/protocols/ldap/LDAPConnectionHandler.java                        |   19 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/TrustManagerProviderConfigManager.java                      |   49 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/SMTPAlertHandler.java                                 |    5 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/schema/AttributeTypeSyntax.java                                  |    4 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/schema/CountryStringSyntax.java                                  |    6 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/MonitorBackend.java                                     |   13 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/DefaultEntryCache.java                                |  158 -
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/ReferentialIntegrityPlugin.java                          |   38 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/SimilarityBasedPasswordValidator.java                 |    4 
 opendj-sdk/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/admin/server/DefaultBehaviorTest.java    |   10 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/AccessControlConfigManager.java                             |   23 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/TextDebugLogPublisher.java                               |   29 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/protocols/LDIFConnectionHandler.java                             |    9 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/UserDefinedVirtualAttributeProvider.java              |    2 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/PasswordGeneratorConfigManager.java                         |   72 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/PasswordPolicyImportPlugin.java                          |   33 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/PBKDF2PasswordStorageScheme.java                      |    2 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/UniqueAttributePlugin.java                               |    2 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/KeyManagerProviderConfigManager.java                        |   46 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/TraditionalWorkQueue.java                             |   10 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/PlainSASLMechanismHandler.java                        |   12 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/VirtualAttributeConfigManager.java                          |   64 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/RegularExpressionIdentityMapper.java                  |   26 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/replication/plugin/FractionalLDIFImportPlugin.java               |    3 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/PluginConfigManager.java                                    |   58 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/ExternalSASLMechanismHandler.java                     |   10 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/PasswordPolicyFactory.java                                  |   53 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/schema/CertificateSyntax.java                                    |    4 
 opendj-sdk/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/extensions/DummyAlertHandler.java        |   73 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/task/TaskBackend.java                                   |   49 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/schema/CollationMatchingRuleFactory.java                         |   14 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/TextHTTPAccessLogPublisher.java                          |   22 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/BackupBackend.java                                      |    7 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/RootDSEBackend.java                                     |   51 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/crypto/CryptoManagerImpl.java                                    |   18 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/ExactMatchIdentityMapper.java                         |    9 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/admin/server/ConfigAddListenerAdaptor.java                       |    2 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/PasswordStorageSchemeConfigManager.java                     |   33 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/AccountStatusNotificationHandlerConfigManager.java          |   31 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/replication/plugin/ReplicationServerListener.java                |    8 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/RootContainer.java                                  |   59 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/replication/plugin/LDAPReplicationDomain.java                    |   28 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/ChangeNumberControlPlugin.java                           |    3 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/WorkQueueConfigManager.java                                 |   20 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/admin/server/ConfigChangeListenerAdaptor.java                    |    4 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/AbstractTextAccessLogPublisher.java                      |    9 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/SubjectDNToUserAttributeCertificateMapper.java        |    2 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/GroupManager.java                                           |   37 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/LastModPlugin.java                                       |    3 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/PKCS11KeyManagerProvider.java                         |   38 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/profiler/ProfilerPlugin.java                             |   52 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/EntryContainer.java                                 |   67 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/FingerprintCertificateMapper.java                     |   11 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/SevenBitCleanPlugin.java                                 |    2 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/ConnectionHandlerConfigManager.java                         |   57 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/CryptPasswordStorageScheme.java                       |   15 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/CertificateMapperConfigManager.java                         |  117 -
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/schema/TelephoneNumberSyntax.java                                |    3 
 opendj-sdk/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/admin/server/ConstraintTest.java         |    6 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/admin/AggregationPropertyDefinition.java                         |    5 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/EntityTagVirtualAttributeProvider.java                |    2 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServer.java                        |   20 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/admin/server/ConfigDeleteListenerAdaptor.java                    |    2 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/SizeBasedRotationPolicy.java                             |   16 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/TextAuditLogPublisher.java                               |   18 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/protocols/http/HTTPConnectionHandler.java                        |   31 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/FixedTimeRotationPolicy.java                             |   13 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/LogRotationPolicyConfigManager.java                         |   35 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/LengthBasedPasswordValidator.java                     |   11 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/PasswordModifyExtendedOperation.java                  |   34 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/TraceSettings.java                                       |   13 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/LDAPADListPlugin.java                                    |    3 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/CoreConfigManager.java                                      |    6 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/RepeatedCharactersPasswordValidator.java              |   10 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/MatchingRuleConfigManager.java                              |   97 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/replication/plugin/ExternalChangelogDomain.java                  |   11 
 opendj-sdk/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/admin/server/AggregationServerTest.java  |    5 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/GSSAPISASLMechanismHandler.java                       |   41 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/FileNumberRetentionPolicy.java                           |    9 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/AttributeSyntaxConfigManager.java                           |   85 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/SynchronizationProviderConfigManager.java                   |   52 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/TrustStoreBackend.java                                  |   38 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/SMTPAccountStatusNotificationHandler.java             |   38 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/VLVIndex.java                                 |   10 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/LogRetentionPolicyConfigManager.java                        |   35 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/VLVIndex.java                                       |   70 
 opendj-sdk/opendj3-server-dev/src/snmp/src/org/opends/server/snmp/SNMPClassLoaderProvider.java                              |    8 
 opendj-sdk/opendj3-server-dev/resource/admin/example-plugin/ExamplePlugin.java                                              |    2 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/IdentityMapperConfigManager.java                            |   75 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/RandomPasswordGenerator.java                          |   86 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/AbstractLogger.java                                      |   37 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/ExtendedOperationConfigManager.java                         |   59 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/SubjectAttributeToUserAttributeCertificateMapper.java |   77 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/SambaPasswordPlugin.java                                 |    2 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/LDAPPassThroughAuthenticationPolicyFactory.java       |    2 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/protocols/jmx/JmxConnectionHandler.java                          |   32 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/LoggerConfigManager.java                                    |   58 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/MultifileTextWriter.java                                 |   48 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/SchemaBackend.java                                      |   31 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/LDIFBackend.java                                        |   26 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/AlertHandlerConfigManager.java                              |   46 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/TextAccessLogPublisher.java                              |   28 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/SASLConfigManager.java                                      |   73 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/UniqueCharactersPasswordValidator.java                |    8 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/RootDNConfigManager.java                                    |   56 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/MemberVirtualAttributeProvider.java                   |    4 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/RootPrivilegeChangeListener.java                            |   13 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/CRAMMD5SASLMechanismHandler.java                      |    8 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/EntryCacheConfigManager.java                                |   20 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/ErrorLogAccountStatusNotificationHandler.java         |   28 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/admin/server/DelayedConfigAddListener.java                       |    6 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/CharacterSetPasswordValidator.java                    |   36 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/MonitorConfigManager.java                                   |   71 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/FileBasedKeyManagerProvider.java                      |   55 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/schema/DirectoryStringSyntax.java                                |    3 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/FreeDiskSpaceRetentionPolicy.java                        |    8 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/PasswordValidatorConfigManager.java                         |   75 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/schema/JPEGSyntax.java                                           |    5 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/DictionaryPasswordValidator.java                      |   34 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/FileBasedTrustManagerProvider.java                    |   56 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/EntryUUIDPlugin.java                                     |    3 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/SizeBasedRetentionPolicy.java                            |   14 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/replication/plugin/MultimasterReplication.java                   |   33 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/DigestMD5SASLMechanismHandler.java                    |   33 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/TextErrorLogPublisher.java                               |   22 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/AttributeValuePasswordValidator.java                  |   15 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/AttributeIndex.java                                 |   67 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/JMXAlertHandler.java                                  |   17 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/AttributeCleanupPlugin.java                              |    2 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/TimeLimitRotationPolicy.java                             |   19 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/types/ConfigChangeResult.java                                    |   37 
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/BackendImpl.java                                    |   36 
 134 files changed, 1,457 insertions(+), 2,408 deletions(-)

diff --git a/opendj-sdk/opendj3-server-dev/resource/admin/example-plugin/ExamplePlugin.java b/opendj-sdk/opendj3-server-dev/resource/admin/example-plugin/ExamplePlugin.java
index bc4ec39..a476b6a 100644
--- a/opendj-sdk/opendj3-server-dev/resource/admin/example-plugin/ExamplePlugin.java
+++ b/opendj-sdk/opendj3-server-dev/resource/admin/example-plugin/ExamplePlugin.java
@@ -154,7 +154,7 @@
     this.config = config;
 
     // Update was successfull, no restart required.
-    return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    return new ConfigChangeResult();
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/admin/AggregationPropertyDefinition.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/admin/AggregationPropertyDefinition.java
index c77e731..6b03a8b 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/admin/AggregationPropertyDefinition.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/admin/AggregationPropertyDefinition.java
@@ -61,7 +61,6 @@
 import org.forgerock.i18n.slf4j.LocalizedLogger;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.DN;
-import org.forgerock.opendj.ldap.ResultCode;
 
 /**
  * Aggregation property definition.
@@ -272,7 +271,7 @@
         ServerManagedObject<? extends S> mo) {
       try {
         if (targetIsEnabledCondition.evaluate(mo)) {
-          return new ConfigChangeResult(ResultCode.SUCCESS, false);
+          return new ConfigChangeResult();
         }
       } catch (ConfigException e) {
         // This should not happen - ignore it and throw an exception
@@ -361,7 +360,7 @@
         throw new IllegalStateException("Attempting to delete a referenced "
             + relationDefinition.getChildDefinition().getUserFriendlyName());
       } else {
-        return new ConfigChangeResult(ResultCode.SUCCESS, false);
+        return new ConfigChangeResult();
       }
     }
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/admin/server/ConfigAddListenerAdaptor.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/admin/server/ConfigAddListenerAdaptor.java
index f1d18ba..b2fcb1b 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/admin/server/ConfigAddListenerAdaptor.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/admin/server/ConfigAddListenerAdaptor.java
@@ -170,7 +170,7 @@
       DN expectedDN = DNBuilder.create(childPath);
       if (!configEntry.getDN().equals(expectedDN)) {
         // Doesn't apply to us.
-        return new ConfigChangeResult(ResultCode.SUCCESS, false);
+        return new ConfigChangeResult();
       }
     }
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/admin/server/ConfigChangeListenerAdaptor.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/admin/server/ConfigChangeListenerAdaptor.java
index e59b32c..2af1441 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/admin/server/ConfigChangeListenerAdaptor.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/admin/server/ConfigChangeListenerAdaptor.java
@@ -247,7 +247,7 @@
         } else {
           // The dependent entry was not found.
           configEntry.deregisterChangeListener(this);
-          return new ConfigChangeResult(ResultCode.SUCCESS, false);
+          return new ConfigChangeResult();
         }
       }
 
@@ -296,7 +296,7 @@
         if (configEntry.getDN().equals(dn)) {
           finalizeChangeListener();
         }
-        return new ConfigChangeResult(ResultCode.SUCCESS, false);
+        return new ConfigChangeResult();
       }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/admin/server/ConfigDeleteListenerAdaptor.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/admin/server/ConfigDeleteListenerAdaptor.java
index 655831d..ba8b955 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/admin/server/ConfigDeleteListenerAdaptor.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/admin/server/ConfigDeleteListenerAdaptor.java
@@ -171,7 +171,7 @@
       DN expectedDN = DNBuilder.create(childPath);
       if (!configEntry.getDN().equals(expectedDN)) {
         // Doesn't apply to us.
-        return new ConfigChangeResult(ResultCode.SUCCESS, false);
+        return new ConfigChangeResult();
       }
     }
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/admin/server/DelayedConfigAddListener.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/admin/server/DelayedConfigAddListener.java
index 13b89e3..6d5d230 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/admin/server/DelayedConfigAddListener.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/admin/server/DelayedConfigAddListener.java
@@ -26,8 +26,6 @@
  */
 package org.opends.server.admin.server;
 
-
-
 import org.forgerock.i18n.slf4j.LocalizedLogger;
 
 import org.opends.server.api.ConfigAddListener;
@@ -37,10 +35,8 @@
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.DN;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.forgerock.i18n.LocalizableMessageBuilder;
 
-
 /**
  * A configuration add listener which will monitor a parent entry to
  * see when a specified child entry has been added. When the child
@@ -138,7 +134,7 @@
       }
     }
 
-    return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    return new ConfigChangeResult();
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/BackupBackend.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/BackupBackend.java
index e75810c..256a582 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/BackupBackend.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/BackupBackend.java
@@ -1087,10 +1087,7 @@
   @Override
   public ConfigChangeResult applyConfigurationChange(BackupBackendCfg cfg)
   {
-    ResultCode         resultCode          = ResultCode.SUCCESS;
-    boolean            adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
-
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     Set<String> values = cfg.getBackupDirectory();
     backupDirectories = new LinkedHashMap<File,CachedBackupDirectory>(values.size());
@@ -1101,7 +1098,7 @@
     }
 
     currentConfig = cfg;
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/LDIFBackend.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/LDIFBackend.java
index 3b340a4..970ae01 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/LDIFBackend.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/LDIFBackend.java
@@ -26,32 +26,32 @@
  */
 package org.opends.server.backends;
 
+import static org.opends.messages.BackendMessages.*;
+import static org.opends.server.util.ServerConstants.*;
+import static org.opends.server.util.StaticUtils.*;
+
 import java.io.File;
 import java.util.*;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.config.server.ConfigException;
 import org.forgerock.opendj.ldap.ConditionResult;
+import org.forgerock.opendj.ldap.ResultCode;
 import org.forgerock.opendj.ldap.SearchScope;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.std.server.LDIFBackendCfg;
 import org.opends.server.api.AlertGenerator;
 import org.opends.server.api.Backend;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.controls.SubtreeDeleteControl;
 import org.opends.server.core.*;
 import org.opends.server.types.*;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.server.util.LDIFException;
 import org.opends.server.util.LDIFReader;
 import org.opends.server.util.LDIFWriter;
 import org.opends.server.util.StaticUtils;
 
-import static org.opends.messages.BackendMessages.*;
-import static org.opends.server.util.ServerConstants.*;
-import static org.opends.server.util.StaticUtils.*;
-
 /**
  * This class provides a backend implementation that stores the underlying data
  * in an LDIF file.  When the backend is initialized, the contents of the
@@ -1280,8 +1280,7 @@
     // We don't actually need to do anything in response to this.  However, if
     // the base DNs or LDIF file are different from what we're currently using
     // then indicate that admin action is required.
-    boolean adminActionRequired = false;
-    LinkedList<LocalizableMessage> messages = new LinkedList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     if (ldifFilePath != null)
     {
@@ -1289,20 +1288,19 @@
       File newLDIF     = getFileForPath(configuration.getLDIFFile());
       if (! currentLDIF.equals(newLDIF))
       {
-        messages.add(INFO_LDIF_BACKEND_LDIF_FILE_CHANGED.get());
-        adminActionRequired = true;
+        ccr.addMessage(INFO_LDIF_BACKEND_LDIF_FILE_CHANGED.get());
+        ccr.setAdminActionRequired(true);
       }
     }
 
     if (baseDNSet != null && !baseDNSet.equals(configuration.getBaseDN()))
     {
-      messages.add(INFO_LDIF_BACKEND_BASE_DN_CHANGED.get());
-      adminActionRequired = true;
+      ccr.addMessage(INFO_LDIF_BACKEND_BASE_DN_CHANGED.get());
+      ccr.setAdminActionRequired(true);
     }
 
     currentConfig = configuration;
-    return new ConfigChangeResult(ResultCode.SUCCESS, adminActionRequired,
-                                  messages);
+    return ccr;
   }
 
   /** {@inheritDoc} */
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/MonitorBackend.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/MonitorBackend.java
index 60b9ece..4cc150c 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/MonitorBackend.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/MonitorBackend.java
@@ -109,9 +109,7 @@
   public ConfigChangeResult applyConfigurationChange(
       final MonitorBackendCfg backendCfg)
   {
-    ResultCode resultCode = ResultCode.SUCCESS;
-    final boolean adminActionRequired = false;
-    final ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     // Check to see if there is a new set of user-defined attributes.
     final ArrayList<Attribute> userAttrs = new ArrayList<Attribute>();
@@ -146,18 +144,17 @@
     {
       logger.traceException(e);
 
-      messages.add(ERR_CONFIG_BACKEND_ERROR_INTERACTING_WITH_BACKEND_ENTRY.get(
+      ccr.addMessage(ERR_CONFIG_BACKEND_ERROR_INTERACTING_WITH_BACKEND_ENTRY.get(
           configEntryDN, stackTraceToSingleLineString(e)));
-      resultCode = DirectoryServer.getServerErrorResultCode();
+      ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
     }
 
     userDefinedAttributes = userAttrs;
 
-    final LocalizableMessage message = INFO_MONITOR_USING_NEW_USER_ATTRS.get();
-    messages.add(message);
+    ccr.addMessage(INFO_MONITOR_USING_NEW_USER_ATTRS.get());
 
     currentConfig = backendCfg;
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
   /** {@inheritDoc} */
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/RootDSEBackend.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/RootDSEBackend.java
index 8f8a20d..3040ec2 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/RootDSEBackend.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/RootDSEBackend.java
@@ -26,6 +26,12 @@
  */
 package org.opends.server.backends;
 
+import static org.opends.messages.BackendMessages.*;
+import static org.opends.messages.ConfigMessages.*;
+import static org.opends.server.config.ConfigConstants.*;
+import static org.opends.server.util.ServerConstants.*;
+import static org.opends.server.util.StaticUtils.*;
+
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -62,12 +68,6 @@
 import org.opends.server.util.BuildVersion;
 import org.opends.server.util.LDIFWriter;
 
-import static org.opends.messages.BackendMessages.*;
-import static org.opends.messages.ConfigMessages.*;
-import static org.opends.server.config.ConfigConstants.*;
-import static org.opends.server.util.ServerConstants.*;
-import static org.opends.server.util.StaticUtils.*;
-
 /**
  * This class defines a backend to hold the Directory Server root DSE.  It is a
  * kind of meta-backend in that it will dynamically generate the root DSE entry
@@ -1087,9 +1087,7 @@
   @Override
   public ConfigChangeResult applyConfigurationChange(RootDSEBackendCfg cfg)
   {
-    ResultCode         resultCode          = ResultCode.SUCCESS;
-    boolean            adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
 
     // Check to see if we should apply a new set of base DNs.
@@ -1111,12 +1109,8 @@
           if (backend == null)
           {
             // This is not fine.  We can't use a suffix that doesn't exist.
-            messages.add(WARN_ROOTDSE_NO_BACKEND_FOR_SUBORDINATE_BASE.get(baseDN));
-
-            if (resultCode == ResultCode.SUCCESS)
-            {
-              resultCode = DirectoryServer.getServerErrorResultCode();
-            }
+            ccr.addMessage(WARN_ROOTDSE_NO_BACKEND_FOR_SUBORDINATE_BASE.get(baseDN));
+            ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
           }
           else
           {
@@ -1129,14 +1123,9 @@
     {
       logger.traceException(e);
 
-      LocalizableMessage message = WARN_ROOTDSE_SUBORDINATE_BASE_EXCEPTION.get(
-              stackTraceToSingleLineString(e));
-      messages.add(message);
-
-      if (resultCode == ResultCode.SUCCESS)
-      {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-      }
+      ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(WARN_ROOTDSE_SUBORDINATE_BASE_EXCEPTION.get(
+              stackTraceToSingleLineString(e)));
 
       subBases = null;
     }
@@ -1156,41 +1145,41 @@
     {
       logger.traceException(e);
 
-      messages.add(ERR_CONFIG_BACKEND_ERROR_INTERACTING_WITH_BACKEND_ENTRY.get(
+      ccr.addMessage(ERR_CONFIG_BACKEND_ERROR_INTERACTING_WITH_BACKEND_ENTRY.get(
               configEntryDN, stackTraceToSingleLineString(e)));
-      resultCode = DirectoryServer.getServerErrorResultCode();
+      ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
     }
 
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       subordinateBaseDNs = subBases;
 
       if (subordinateBaseDNs == null)
       {
-        messages.add(INFO_ROOTDSE_USING_SUFFIXES_AS_BASE_DNS.get());
+        ccr.addMessage(INFO_ROOTDSE_USING_SUFFIXES_AS_BASE_DNS.get());
       }
       else
       {
         String basesStr = "{ " + Utils.joinAsString(", ", subordinateBaseDNs.keySet()) + " }";
-        messages.add(INFO_ROOTDSE_USING_NEW_SUBORDINATE_BASE_DNS.get(basesStr));
+        ccr.addMessage(INFO_ROOTDSE_USING_NEW_SUBORDINATE_BASE_DNS.get(basesStr));
       }
 
 
       if (showAllAttributes != newShowAll)
       {
         showAllAttributes = newShowAll;
-        messages.add(INFO_ROOTDSE_UPDATED_SHOW_ALL_ATTRS.get(
+        ccr.addMessage(INFO_ROOTDSE_UPDATED_SHOW_ALL_ATTRS.get(
                 ATTR_ROOTDSE_SHOW_ALL_ATTRIBUTES, showAllAttributes));
       }
 
 
       userDefinedAttributes = userAttrs;
-      messages.add(INFO_ROOTDSE_USING_NEW_USER_ATTRS.get());
+      ccr.addMessage(INFO_ROOTDSE_USING_NEW_USER_ATTRS.get());
     }
 
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
   /** {@inheritDoc} */
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/SchemaBackend.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/SchemaBackend.java
index 39b81c5..bb59752 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/SchemaBackend.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/SchemaBackend.java
@@ -4882,9 +4882,7 @@
   public ConfigChangeResult applyConfigurationChange(
        SchemaBackendCfg backendCfg)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
 
     // Check to see if we should apply a new set of base DNs.
@@ -4901,10 +4899,9 @@
     {
       logger.traceException(e);
 
-
-      messages.add(ERR_SCHEMA_CANNOT_DETERMINE_BASE_DN.get(
+      ccr.addMessage(ERR_SCHEMA_CANNOT_DETERMINE_BASE_DN.get(
           configEntryDN, getExceptionMessage(e)));
-      resultCode = DirectoryServer.getServerErrorResultCode();
+      ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
       newBaseDNs = null;
     }
 
@@ -4946,13 +4943,13 @@
     {
       logger.traceException(e);
 
-      messages.add(ERR_CONFIG_BACKEND_ERROR_INTERACTING_WITH_BACKEND_ENTRY.get(
+      ccr.addMessage(ERR_CONFIG_BACKEND_ERROR_INTERACTING_WITH_BACKEND_ENTRY.get(
           configEntryDN, stackTraceToSingleLineString(e)));
-      resultCode = DirectoryServer.getServerErrorResultCode();
+      ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
     }
 
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       // Get an array containing the new base DNs to use.
       DN[] dnArray = new DN[newBaseDNs.size()];
@@ -4977,14 +4974,14 @@
         try
         {
           DirectoryServer.deregisterBaseDN(dn);
-          messages.add(INFO_SCHEMA_DEREGISTERED_BASE_DN.get(dn));
+          ccr.addMessage(INFO_SCHEMA_DEREGISTERED_BASE_DN.get(dn));
         }
         catch (Exception e)
         {
           logger.traceException(e);
 
-          messages.add(ERR_SCHEMA_CANNOT_DEREGISTER_BASE_DN.get(dn, getExceptionMessage(e)));
-          resultCode = DirectoryServer.getServerErrorResultCode();
+          ccr.addMessage(ERR_SCHEMA_CANNOT_DEREGISTER_BASE_DN.get(dn, getExceptionMessage(e)));
+          ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
         }
       }
 
@@ -4994,14 +4991,14 @@
         try
         {
           DirectoryServer.registerBaseDN(dn, this, true);
-          messages.add(INFO_SCHEMA_REGISTERED_BASE_DN.get(dn));
+          ccr.addMessage(INFO_SCHEMA_REGISTERED_BASE_DN.get(dn));
         }
         catch (Exception e)
         {
           logger.traceException(e);
 
-          messages.add(ERR_SCHEMA_CANNOT_REGISTER_BASE_DN.get(dn, getExceptionMessage(e)));
-          resultCode = DirectoryServer.getServerErrorResultCode();
+          ccr.addMessage(ERR_SCHEMA_CANNOT_REGISTER_BASE_DN.get(dn, getExceptionMessage(e)));
+          ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
         }
       }
 
@@ -5011,12 +5008,12 @@
 
       userDefinedAttributes = newUserAttrs;
       LocalizableMessage message = INFO_SCHEMA_USING_NEW_USER_ATTRS.get();
-      messages.add(message);
+      ccr.addMessage(message);
     }
 
 
     currentConfig = backendCfg;
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/TrustStoreBackend.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/TrustStoreBackend.java
index 1bdcf5a..a5739d5 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/TrustStoreBackend.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/TrustStoreBackend.java
@@ -900,9 +900,7 @@
   @Override
   public ConfigChangeResult applyConfigurationChange(TrustStoreBackendCfg cfg)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
     DN configEntryDN = cfg.dn();
 
     // Get the path to the trust store file.
@@ -910,9 +908,8 @@
     File f = getFileForPath(newTrustStoreFile);
     if (! (f.exists() && f.isFile()))
     {
-      resultCode = DirectoryServer.getServerErrorResultCode();
-
-      messages.add(ERR_TRUSTSTORE_NO_SUCH_FILE.get(newTrustStoreFile, configEntryDN));
+      ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ERR_TRUSTSTORE_NO_SUCH_FILE.get(newTrustStoreFile, configEntryDN));
     }
 
 
@@ -932,8 +929,8 @@
     {
       logger.traceException(kse);
 
-      messages.add(ERR_TRUSTSTORE_INVALID_TYPE.get(newTrustStoreType, configEntryDN, getExceptionMessage(kse)));
-      resultCode = DirectoryServer.getServerErrorResultCode();
+      ccr.addMessage(ERR_TRUSTSTORE_INVALID_TYPE.get(newTrustStoreType, configEntryDN, getExceptionMessage(kse)));
+      ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
     }
 
 
@@ -982,8 +979,8 @@
             }
             catch (Exception e)
             {
-              resultCode = DirectoryServer.getServerErrorResultCode();
-              messages.add(ERR_TRUSTSTORE_PIN_FILE_CANNOT_CREATE.get(newPINFile, configEntryDN));
+              ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+              ccr.addMessage(ERR_TRUSTSTORE_PIN_FILE_CANNOT_CREATE.get(newPINFile, configEntryDN));
             }
           }
           else
@@ -998,8 +995,8 @@
             }
             catch (IOException ioe)
             {
-              resultCode = DirectoryServer.getServerErrorResultCode();
-              messages.add(ERR_TRUSTSTORE_PIN_FILE_CANNOT_READ.get(
+              ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+              ccr.addMessage(ERR_TRUSTSTORE_PIN_FILE_CANNOT_READ.get(
                   newPINFile, configEntryDN, getExceptionMessage(ioe)));
             }
             finally
@@ -1009,8 +1006,8 @@
 
             if (pinStr == null)
             {
-              resultCode = DirectoryServer.getServerErrorResultCode();
-              messages.add(ERR_TRUSTSTORE_PIN_FILE_EMPTY.get(newPINFile, configEntryDN));
+              ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+              ccr.addMessage(ERR_TRUSTSTORE_PIN_FILE_EMPTY.get(newPINFile, configEntryDN));
             }
             else
             {
@@ -1024,8 +1021,8 @@
         String pinStr = System.getenv(newPINEnVar);
         if (pinStr == null)
         {
-          resultCode = DirectoryServer.getServerErrorResultCode();
-          messages.add(ERR_TRUSTSTORE_PIN_ENVAR_NOT_SET.get(newPINEnVar, configEntryDN));
+          ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+          ccr.addMessage(ERR_TRUSTSTORE_PIN_ENVAR_NOT_SET.get(newPINEnVar, configEntryDN));
         }
         else
         {
@@ -1038,8 +1035,8 @@
       String pinStr = System.getProperty(newPINProperty);
       if (pinStr == null)
       {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-        messages.add(ERR_TRUSTSTORE_PIN_PROPERTY_NOT_SET.get(newPINProperty, configEntryDN));
+        ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+        ccr.addMessage(ERR_TRUSTSTORE_PIN_PROPERTY_NOT_SET.get(newPINProperty, configEntryDN));
       }
       else
       {
@@ -1048,7 +1045,7 @@
     }
 
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       trustStoreFile = newTrustStoreFile;
       trustStoreType = newTrustStoreType;
@@ -1060,8 +1057,7 @@
                                   new String(trustStorePIN));
     }
 
-
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
   /**
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/AttributeIndex.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/AttributeIndex.java
index 290d631..80bbc25 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/AttributeIndex.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/AttributeIndex.java
@@ -27,9 +27,12 @@
  */
 package org.opends.server.backends.jeb;
 
+import static org.opends.messages.JebMessages.*;
+import static org.opends.server.util.ServerConstants.*;
+import static org.opends.server.util.StaticUtils.*;
+
 import java.io.Closeable;
 import java.util.*;
-import java.util.concurrent.atomic.AtomicBoolean;
 
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.LocalizableMessageBuilder;
@@ -39,7 +42,6 @@
 import org.forgerock.opendj.ldap.ByteSequence;
 import org.forgerock.opendj.ldap.ByteString;
 import org.forgerock.opendj.ldap.DecodeException;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.forgerock.opendj.ldap.schema.MatchingRule;
 import org.forgerock.opendj.ldap.spi.IndexQueryFactory;
 import org.forgerock.opendj.ldap.spi.IndexingOptions;
@@ -54,10 +56,6 @@
 
 import com.sleepycat.je.DatabaseException;
 
-import static org.opends.messages.JebMessages.*;
-import static org.opends.server.util.ServerConstants.*;
-import static org.opends.server.util.StaticUtils.*;
-
 /**
  * Class representing an attribute index.
  * We have a separate database for each type of indexing, which makes it easy
@@ -674,33 +672,30 @@
   @Override
   public synchronized ConfigChangeResult applyConfigurationChange(LocalDBIndexCfg cfg)
   {
-    // this method is not perf sensitive, using an AtomicBoolean will not hurt
-    AtomicBoolean adminActionRequired = new AtomicBoolean(false);
-    ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
     try
     {
-      applyChangeToPresenceIndex(cfg, adminActionRequired, messages);
-      applyChangeToIndex(IndexType.EQUALITY, cfg, adminActionRequired, messages);
-      applyChangeToIndex(IndexType.SUBSTRING, cfg, adminActionRequired, messages);
-      applyChangeToIndex(IndexType.ORDERING, cfg, adminActionRequired, messages);
-      applyChangeToIndex(IndexType.APPROXIMATE, cfg, adminActionRequired, messages);
-      applyChangeToExtensibleIndexes(cfg, adminActionRequired, messages);
+      applyChangeToPresenceIndex(cfg, ccr);
+      applyChangeToIndex(IndexType.EQUALITY, cfg, ccr);
+      applyChangeToIndex(IndexType.SUBSTRING, cfg, ccr);
+      applyChangeToIndex(IndexType.ORDERING, cfg, ccr);
+      applyChangeToIndex(IndexType.APPROXIMATE, cfg, ccr);
+      applyChangeToExtensibleIndexes(cfg, ccr);
 
       extensibleIndexesMapping = computeExtensibleIndexesMapping();
       indexConfig = cfg;
 
-      return new ConfigChangeResult(ResultCode.SUCCESS, adminActionRequired.get(), messages);
+      return ccr;
     }
     catch(Exception e)
     {
-      messages.add(LocalizableMessage.raw(StaticUtils.stackTraceToSingleLineString(e)));
-      return new ConfigChangeResult(
-          DirectoryServer.getServerErrorResultCode(), adminActionRequired.get(), messages);
+      ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(LocalizableMessage.raw(StaticUtils.stackTraceToSingleLineString(e)));
+      return ccr;
     }
   }
 
-  private void applyChangeToExtensibleIndexes(LocalDBIndexCfg cfg,
-      AtomicBoolean adminActionRequired, ArrayList<LocalizableMessage> messages)
+  private void applyChangeToExtensibleIndexes(LocalDBIndexCfg cfg, final ConfigChangeResult ccr)
   {
     final AttributeType attrType = cfg.getAttribute();
     if (!cfg.getIndexType().contains(IndexType.EXTENSIBLE))
@@ -732,7 +727,7 @@
         if (!nameToIndexes.containsKey(indexId))
         {
           Index index = newAttributeIndex(cfg, indexer);
-          openIndex(index, adminActionRequired, messages);
+          openIndex(index, ccr);
           nameToIndexes.put(indexId, index);
         }
         else
@@ -740,8 +735,8 @@
           Index index = nameToIndexes.get(indexId);
           if (index.setIndexEntryLimit(indexEntryLimit))
           {
-            adminActionRequired.set(true);
-            messages.add(NOTE_JEB_CONFIG_INDEX_ENTRY_LIMIT_REQUIRES_REBUILD.get(index.getName()));
+            ccr.setAdminActionRequired(true);
+            ccr.addMessage(NOTE_JEB_CONFIG_INDEX_ENTRY_LIMIT_REQUIRES_REBUILD.get(index.getName()));
           }
           if (indexConfig.getSubstringLength() != cfg.getSubstringLength())
           {
@@ -807,8 +802,7 @@
     return rules;
   }
 
-  private void applyChangeToIndex(IndexType indexType, LocalDBIndexCfg cfg,
-      AtomicBoolean adminActionRequired, ArrayList<LocalizableMessage> messages)
+  private void applyChangeToIndex(IndexType indexType, LocalDBIndexCfg cfg, final ConfigChangeResult ccr)
   {
     String indexId = indexType.toString();
     Index index = nameToIndexes.get(indexId);
@@ -824,7 +818,7 @@
       for (org.forgerock.opendj.ldap.spi.Indexer indexer : matchingRule.getIndexers())
       {
         index = newAttributeIndex(cfg, indexer);
-        openIndex(index, adminActionRequired, messages);
+        openIndex(index, ccr);
         nameToIndexes.put(indexId, index);
       }
     }
@@ -833,14 +827,13 @@
       // already exists. Just update index entry limit.
       if (index.setIndexEntryLimit(cfg.getIndexEntryLimit()))
       {
-        adminActionRequired.set(true);
-        messages.add(NOTE_JEB_CONFIG_INDEX_ENTRY_LIMIT_REQUIRES_REBUILD.get(index.getName()));
+        ccr.setAdminActionRequired(true);
+        ccr.addMessage(NOTE_JEB_CONFIG_INDEX_ENTRY_LIMIT_REQUIRES_REBUILD.get(index.getName()));
       }
     }
   }
 
-  private void applyChangeToPresenceIndex(LocalDBIndexCfg cfg, AtomicBoolean adminActionRequired,
-      ArrayList<LocalizableMessage> messages)
+  private void applyChangeToPresenceIndex(LocalDBIndexCfg cfg, final ConfigChangeResult ccr)
   {
     final IndexType indexType = IndexType.PRESENCE;
     final String indexID = indexType.toString();
@@ -854,7 +847,7 @@
     if (index == null)
     {
       index = newPresenceIndex(cfg);
-      openIndex(index, adminActionRequired, messages);
+      openIndex(index, ccr);
       nameToIndexes.put(indexID, index);
     }
     else
@@ -862,8 +855,8 @@
       // already exists. Just update index entry limit.
       if (index.setIndexEntryLimit(cfg.getIndexEntryLimit()))
       {
-        adminActionRequired.set(true);
-        messages.add(NOTE_JEB_CONFIG_INDEX_ENTRY_LIMIT_REQUIRES_REBUILD.get(index.getName()));
+        ccr.setAdminActionRequired(true);
+        ccr.addMessage(NOTE_JEB_CONFIG_INDEX_ENTRY_LIMIT_REQUIRES_REBUILD.get(index.getName()));
       }
     }
   }
@@ -885,14 +878,14 @@
     }
   }
 
-  private void openIndex(Index index, AtomicBoolean adminActionRequired, ArrayList<LocalizableMessage> messages)
+  private void openIndex(Index index, final ConfigChangeResult ccr)
   {
     index.open();
 
     if (!index.isTrusted())
     {
-      adminActionRequired.set(true);
-      messages.add(NOTE_JEB_INDEX_ADD_REQUIRES_REBUILD.get(index.getName()));
+      ccr.setAdminActionRequired(true);
+      ccr.addMessage(NOTE_JEB_INDEX_ADD_REQUIRES_REBUILD.get(index.getName()));
     }
   }
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/BackendImpl.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/BackendImpl.java
index 544ae50..8e7be6b 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/BackendImpl.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/BackendImpl.java
@@ -26,6 +26,14 @@
  */
 package org.opends.server.backends.jeb;
 
+import static com.sleepycat.je.EnvironmentConfig.*;
+
+import static org.opends.messages.BackendMessages.*;
+import static org.opends.messages.JebMessages.*;
+import static org.opends.server.backends.jeb.ConfigurableEnvironment.*;
+import static org.opends.server.util.ServerConstants.*;
+import static org.opends.server.util.StaticUtils.*;
+
 import java.io.File;
 import java.io.IOException;
 import java.util.*;
@@ -58,14 +66,6 @@
 import com.sleepycat.je.EnvironmentConfig;
 import com.sleepycat.je.EnvironmentFailureException;
 
-import static com.sleepycat.je.EnvironmentConfig.*;
-
-import static org.opends.messages.BackendMessages.*;
-import static org.opends.messages.JebMessages.*;
-import static org.opends.server.backends.jeb.ConfigurableEnvironment.*;
-import static org.opends.server.util.ServerConstants.*;
-import static org.opends.server.util.StaticUtils.*;
-
 /**
  * This is an implementation of a Directory Server Backend which stores entries
  * locally in a Berkeley DB JE database.
@@ -1028,8 +1028,7 @@
   @Override
   public ConfigChangeResult applyConfigurationChange(LocalDBBackendCfg newCfg)
   {
-    ResultCode resultCode = ResultCode.SUCCESS;
-    ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     try
     {
@@ -1040,7 +1039,7 @@
 
         // Check for changes to the base DNs.
         removeDeletedBaseDNs(newBaseDNs);
-        ConfigChangeResult failure = createNewBaseDNs(newBaseDNsArray, messages);
+        ConfigChangeResult failure = createNewBaseDNs(newBaseDNsArray, ccr);
         if (failure != null)
         {
           return failure;
@@ -1061,12 +1060,11 @@
     }
     catch (Exception e)
     {
-      messages.add(LocalizableMessage.raw(stackTraceToSingleLineString(e)));
-      return new ConfigChangeResult(
-          DirectoryServer.getServerErrorResultCode(), false, messages);
+      ccr.addMessage(LocalizableMessage.raw(stackTraceToSingleLineString(e)));
+      ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
     }
 
-    return new ConfigChangeResult(resultCode, false, messages);
+    return ccr;
   }
 
   private void removeDeletedBaseDNs(SortedSet<DN> newBaseDNs) throws DirectoryException
@@ -1084,7 +1082,7 @@
     }
   }
 
-  private ConfigChangeResult createNewBaseDNs(DN[] newBaseDNsArray, ArrayList<LocalizableMessage> messages)
+  private ConfigChangeResult createNewBaseDNs(DN[] newBaseDNsArray, final ConfigChangeResult ccr)
   {
     for (DN baseDN : newBaseDNsArray)
     {
@@ -1101,9 +1099,9 @@
         {
           logger.traceException(e);
 
-          ResultCode resultCode = DirectoryServer.getServerErrorResultCode();
-          messages.add(ERR_BACKEND_CANNOT_REGISTER_BASEDN.get(baseDN, e));
-          return new ConfigChangeResult(resultCode, false, messages);
+          ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+          ccr.addMessage(ERR_BACKEND_CANNOT_REGISTER_BASEDN.get(baseDN, e));
+          return ccr;
         }
       }
     }
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/EntryContainer.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/EntryContainer.java
index 908f0e2..65b9873 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/EntryContainer.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/EntryContainer.java
@@ -167,8 +167,7 @@
     @Override
     public ConfigChangeResult applyConfigurationAdd(LocalDBIndexCfg cfg)
     {
-      boolean adminActionRequired = false;
-      List<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+      final ConfigChangeResult ccr = new ConfigChangeResult();
 
       try
       {
@@ -176,20 +175,18 @@
         index.open();
         if(!index.isTrusted())
         {
-          adminActionRequired = true;
-          messages.add(NOTE_JEB_INDEX_ADD_REQUIRES_REBUILD.get(
-              cfg.getAttribute().getNameOrOID()));
+          ccr.setAdminActionRequired(true);
+          ccr.addMessage(NOTE_JEB_INDEX_ADD_REQUIRES_REBUILD.get(cfg.getAttribute().getNameOrOID()));
         }
         attrIndexMap.put(cfg.getAttribute(), index);
       }
       catch(Exception e)
       {
-        messages.add(LocalizableMessage.raw(e.getLocalizedMessage()));
-        return new ConfigChangeResult(
-            DirectoryServer.getServerErrorResultCode(), adminActionRequired, messages);
+        ccr.addMessage(LocalizableMessage.raw(e.getLocalizedMessage()));
+        ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
       }
 
-      return new ConfigChangeResult(ResultCode.SUCCESS, adminActionRequired, messages);
+      return ccr;
     }
 
     /** {@inheritDoc} */
@@ -205,8 +202,7 @@
     @Override
     public ConfigChangeResult applyConfigurationDelete(LocalDBIndexCfg cfg)
     {
-      boolean adminActionRequired = false;
-      ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+      final ConfigChangeResult ccr = new ConfigChangeResult();
 
       exclusiveLock.lock();
       try
@@ -217,16 +213,15 @@
       }
       catch(DatabaseException de)
       {
-        messages.add(LocalizableMessage.raw(StaticUtils.stackTraceToSingleLineString(de)));
-        return new ConfigChangeResult(
-            DirectoryServer.getServerErrorResultCode(), adminActionRequired, messages);
+        ccr.addMessage(LocalizableMessage.raw(StaticUtils.stackTraceToSingleLineString(de)));
+        ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
       }
       finally
       {
         exclusiveLock.unlock();
       }
 
-      return new ConfigChangeResult(ResultCode.SUCCESS, adminActionRequired, messages);
+      return ccr;
     }
   }
 
@@ -304,8 +299,7 @@
     @Override
     public ConfigChangeResult applyConfigurationAdd(LocalDBVLVIndexCfg cfg)
     {
-      boolean adminActionRequired = false;
-      ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+      final ConfigChangeResult ccr = new ConfigChangeResult();
 
       try
       {
@@ -313,20 +307,19 @@
         vlvIndex.open();
         if(!vlvIndex.isTrusted())
         {
-          adminActionRequired = true;
-          messages.add(NOTE_JEB_INDEX_ADD_REQUIRES_REBUILD.get(
+          ccr.setAdminActionRequired(true);
+          ccr.addMessage(NOTE_JEB_INDEX_ADD_REQUIRES_REBUILD.get(
               cfg.getName()));
         }
         vlvIndexMap.put(cfg.getName().toLowerCase(), vlvIndex);
       }
       catch(Exception e)
       {
-        messages.add(LocalizableMessage.raw(StaticUtils.stackTraceToSingleLineString(e)));
-        return new ConfigChangeResult(
-            DirectoryServer.getServerErrorResultCode(), adminActionRequired, messages);
+        ccr.addMessage(LocalizableMessage.raw(StaticUtils.stackTraceToSingleLineString(e)));
+        ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
       }
 
-      return new ConfigChangeResult(ResultCode.SUCCESS, adminActionRequired, messages);
+      return ccr;
     }
 
     /** {@inheritDoc} */
@@ -343,8 +336,7 @@
     @Override
     public ConfigChangeResult applyConfigurationDelete(LocalDBVLVIndexCfg cfg)
     {
-      boolean adminActionRequired = false;
-      List<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+      final ConfigChangeResult ccr = new ConfigChangeResult();
 
       exclusiveLock.lock();
       try
@@ -356,16 +348,15 @@
       }
       catch(DatabaseException de)
       {
-        messages.add(LocalizableMessage.raw(StaticUtils.stackTraceToSingleLineString(de)));
-        return new ConfigChangeResult(
-            DirectoryServer.getServerErrorResultCode(), adminActionRequired, messages);
+        ccr.addMessage(LocalizableMessage.raw(StaticUtils.stackTraceToSingleLineString(de)));
+        ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
       }
       finally
       {
         exclusiveLock.unlock();
       }
 
-      return new ConfigChangeResult(ResultCode.SUCCESS, adminActionRequired, messages);
+      return ccr;
     }
 
   }
@@ -3098,8 +3089,7 @@
   @Override
   public ConfigChangeResult applyConfigurationChange(LocalDBBackendCfg cfg)
   {
-    boolean adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     exclusiveLock.lock();
     try
@@ -3135,14 +3125,14 @@
       {
         if (id2children.setIndexEntryLimit(cfg.getIndexEntryLimit()))
         {
-          adminActionRequired = true;
-          messages.add(NOTE_JEB_CONFIG_INDEX_ENTRY_LIMIT_REQUIRES_REBUILD.get(id2children.getName()));
+          ccr.setAdminActionRequired(true);
+          ccr.addMessage(NOTE_JEB_CONFIG_INDEX_ENTRY_LIMIT_REQUIRES_REBUILD.get(id2children.getName()));
         }
 
         if (id2subtree.setIndexEntryLimit(cfg.getIndexEntryLimit()))
         {
-          adminActionRequired = true;
-          messages.add(NOTE_JEB_CONFIG_INDEX_ENTRY_LIMIT_REQUIRES_REBUILD.get(id2subtree.getName()));
+          ccr.setAdminActionRequired(true);
+          ccr.addMessage(NOTE_JEB_CONFIG_INDEX_ENTRY_LIMIT_REQUIRES_REBUILD.get(id2subtree.getName()));
         }
       }
 
@@ -3154,16 +3144,15 @@
     }
     catch (DatabaseException e)
     {
-      messages.add(LocalizableMessage.raw(stackTraceToSingleLineString(e)));
-      return new ConfigChangeResult(DirectoryServer.getServerErrorResultCode(),
-          false, messages);
+      ccr.addMessage(LocalizableMessage.raw(stackTraceToSingleLineString(e)));
+      ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
     }
     finally
     {
       exclusiveLock.unlock();
     }
 
-    return new ConfigChangeResult(ResultCode.SUCCESS, adminActionRequired, messages);
+    return ccr;
   }
 
   /**
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/RootContainer.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/RootContainer.java
index 74a8fb2..6d37c6c 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/RootContainer.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/RootContainer.java
@@ -34,7 +34,6 @@
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
 import org.forgerock.opendj.config.server.ConfigException;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.std.server.LocalDBBackendCfg;
 import org.opends.server.api.Backend;
@@ -698,8 +697,7 @@
   @Override
   public ConfigChangeResult applyConfigurationChange(LocalDBBackendCfg cfg)
   {
-    boolean adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     try
     {
@@ -723,8 +721,8 @@
             if (!param.isMutable()) {
               String oldValue = oldEnvConfig.getConfigParam(param.getName());
               if (!oldValue.equalsIgnoreCase(jePropertyValue)) {
-                adminActionRequired = true;
-                messages.add(INFO_CONFIG_JE_PROPERTY_REQUIRES_RESTART.get(jePropertyName));
+                ccr.setAdminActionRequired(true);
+                ccr.addMessage(INFO_CONFIG_JE_PROPERTY_REQUIRES_RESTART.get(jePropertyName));
                 if(logger.isTraceEnabled()) {
                   logger.trace("The change to the following property " +
                     "will take effect when the component is restarted: " +
@@ -745,16 +743,16 @@
             String newValue = newEnvConfig.getConfigParam(param.getName());
             if (!oldValue.equalsIgnoreCase(newValue))
             {
-              adminActionRequired = true;
+              ccr.setAdminActionRequired(true);
               String configAttr = ConfigurableEnvironment.
                   getAttributeForProperty(param.getName());
               if (configAttr != null)
               {
-                messages.add(NOTE_JEB_CONFIG_ATTR_REQUIRES_RESTART.get(configAttr));
+                ccr.addMessage(NOTE_JEB_CONFIG_ATTR_REQUIRES_RESTART.get(configAttr));
               }
               else
               {
-                messages.add(NOTE_JEB_CONFIG_ATTR_REQUIRES_RESTART.get(param.getName()));
+                ccr.addMessage(NOTE_JEB_CONFIG_ATTR_REQUIRES_RESTART.get(param.getName()));
               }
               if(logger.isTraceEnabled())
               {
@@ -784,25 +782,21 @@
         {
           if(!backendDirectory.mkdirs())
           {
-            messages.add(ERR_JEB_CREATE_FAIL.get(backendDirectory.getPath()));
-            return new ConfigChangeResult(
-                DirectoryServer.getServerErrorResultCode(),
-                adminActionRequired,
-                messages);
+            ccr.addMessage(ERR_JEB_CREATE_FAIL.get(backendDirectory.getPath()));
+            ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+            return ccr;
           }
         }
         //Make sure the directory is valid.
         else if (!backendDirectory.isDirectory())
         {
-          messages.add(ERR_JEB_DIRECTORY_INVALID.get(backendDirectory.getPath()));
-          return new ConfigChangeResult(
-              DirectoryServer.getServerErrorResultCode(),
-              adminActionRequired,
-              messages);
+          ccr.addMessage(ERR_JEB_DIRECTORY_INVALID.get(backendDirectory.getPath()));
+          ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+          return ccr;
         }
 
-        adminActionRequired = true;
-        messages.add(NOTE_JEB_CONFIG_DB_DIR_REQUIRES_RESTART.get(
+        ccr.setAdminActionRequired(true);
+        ccr.addMessage(NOTE_JEB_CONFIG_DB_DIR_REQUIRES_RESTART.get(
                         this.config.getDBDirectory(), cfg.getDBDirectory()));
       }
 
@@ -818,11 +812,9 @@
         }
         catch(Exception e)
         {
-          messages.add(ERR_CONFIG_BACKEND_MODE_INVALID.get(config.dn()));
-          return new ConfigChangeResult(
-              DirectoryServer.getServerErrorResultCode(),
-              adminActionRequired,
-              messages);
+          ccr.addMessage(ERR_CONFIG_BACKEND_MODE_INVALID.get(config.dn()));
+          ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+          return ccr;
         }
 
         //Make sure the mode will allow the server itself access to
@@ -831,12 +823,10 @@
             !backendPermission.isOwnerReadable() ||
             !backendPermission.isOwnerExecutable())
         {
-          messages.add(ERR_CONFIG_BACKEND_INSANE_MODE.get(
+          ccr.addMessage(ERR_CONFIG_BACKEND_INSANE_MODE.get(
               cfg.getDBDirectoryPermissions()));
-          return new ConfigChangeResult(
-              DirectoryServer.getServerErrorResultCode(),
-              adminActionRequired,
-              messages);
+          ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+          return ccr;
         }
 
         // Get the backend database backendDirectory permissions and apply
@@ -868,13 +858,12 @@
     }
     catch (Exception e)
     {
-      messages.add(LocalizableMessage.raw(stackTraceToSingleLineString(e)));
-      return new ConfigChangeResult(DirectoryServer.getServerErrorResultCode(),
-                                   adminActionRequired,
-                                   messages);
+      ccr.addMessage(LocalizableMessage.raw(stackTraceToSingleLineString(e)));
+      ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+      return ccr;
     }
 
-    return new ConfigChangeResult(ResultCode.SUCCESS, adminActionRequired, messages);
+    return ccr;
   }
 
   /**
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/VLVIndex.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/VLVIndex.java
index 1032a1b..cd7e2b7 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/VLVIndex.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/VLVIndex.java
@@ -26,7 +26,13 @@
  */
 package org.opends.server.backends.jeb;
 
-import java.util.*;
+import static org.opends.messages.JebMessages.*;
+import static org.opends.server.util.StaticUtils.*;
+
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.TreeSet;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import org.forgerock.i18n.LocalizableMessage;
@@ -63,9 +69,6 @@
 
 import com.sleepycat.je.*;
 
-import static org.opends.messages.JebMessages.*;
-import static org.opends.server.util.StaticUtils.*;
-
 /**
  * This class represents a VLV index. Each database record is a sorted list
  * of entry IDs followed by sets of attribute values used to sort the entries.
@@ -1300,22 +1303,20 @@
   public synchronized ConfigChangeResult applyConfigurationChange(
       LocalDBVLVIndexCfg cfg)
   {
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     // Update base DN only if changed..
     if(!config.getBaseDN().equals(cfg.getBaseDN()))
     {
       this.baseDN = cfg.getBaseDN();
-      adminActionRequired = true;
+      ccr.setAdminActionRequired(true);
     }
 
     // Update scope only if changed.
     if(!config.getScope().equals(cfg.getScope()))
     {
       this.scope = SearchScope.valueOf(cfg.getScope().name());
-      adminActionRequired = true;
+      ccr.setAdminActionRequired(true);
     }
 
     // Update sort set capacity only if changed.
@@ -1327,7 +1328,7 @@
       // we will lazyly update the sorted sets.
       if (config.getMaxBlockSize() < cfg.getMaxBlockSize())
       {
-        adminActionRequired = true;
+        ccr.setAdminActionRequired(true);
       }
     }
 
@@ -1337,18 +1338,13 @@
       try
       {
         this.filter = SearchFilter.createFilterFromString(cfg.getFilter());
-        adminActionRequired = true;
+        ccr.setAdminActionRequired(true);
       }
       catch(Exception e)
       {
-        LocalizableMessage msg = ERR_JEB_CONFIG_VLV_INDEX_BAD_FILTER.get(
-                config.getFilter(), name,
-                stackTraceToSingleLineString(e));
-        messages.add(msg);
-        if(resultCode == ResultCode.SUCCESS)
-        {
-          resultCode = ResultCode.INVALID_ATTRIBUTE_SYNTAX;
-        }
+        ccr.addMessage(ERR_JEB_CONFIG_VLV_INDEX_BAD_FILTER.get(
+            config.getFilter(), name, stackTraceToSingleLineString(e)));
+        ccr.setResultCodeIfSuccess(ResultCode.INVALID_ATTRIBUTE_SYNTAX);
       }
     }
 
@@ -1379,22 +1375,16 @@
         }
         catch(Exception e)
         {
-          messages.add(ERR_JEB_CONFIG_VLV_INDEX_UNDEFINED_ATTR.get(sortKeys[i], name));
-          if(resultCode == ResultCode.SUCCESS)
-          {
-            resultCode = ResultCode.INVALID_ATTRIBUTE_SYNTAX;
-          }
+          ccr.addMessage(ERR_JEB_CONFIG_VLV_INDEX_UNDEFINED_ATTR.get(sortKeys[i], name));
+          ccr.setResultCodeIfSuccess(ResultCode.INVALID_ATTRIBUTE_SYNTAX);
         }
 
         AttributeType attrType =
             DirectoryServer.getAttributeType(sortAttrs[i].toLowerCase());
         if(attrType == null)
         {
-          messages.add(ERR_JEB_CONFIG_VLV_INDEX_UNDEFINED_ATTR.get(sortKeys[i], name));
-          if(resultCode == ResultCode.SUCCESS)
-          {
-            resultCode = ResultCode.INVALID_ATTRIBUTE_SYNTAX;
-          }
+          ccr.addMessage(ERR_JEB_CONFIG_VLV_INDEX_UNDEFINED_ATTR.get(sortKeys[i], name));
+          ccr.setResultCodeIfSuccess(ResultCode.INVALID_ATTRIBUTE_SYNTAX);
         }
         else
         {
@@ -1416,40 +1406,34 @@
       }
       catch(DatabaseException de)
       {
-        messages.add(LocalizableMessage.raw(StaticUtils.stackTraceToSingleLineString(de)));
-        if(resultCode == ResultCode.SUCCESS)
-        {
-          resultCode = DirectoryServer.getServerErrorResultCode();
-        }
+        ccr.addMessage(LocalizableMessage.raw(StaticUtils.stackTraceToSingleLineString(de)));
+        ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
       }
       finally
       {
         entryContainer.exclusiveLock.unlock();
       }
 
-      adminActionRequired = true;
+      ccr.setAdminActionRequired(true);
     }
 
 
-    if(adminActionRequired)
+    if (ccr.adminActionRequired())
     {
       trusted = false;
-      messages.add(NOTE_JEB_INDEX_ADD_REQUIRES_REBUILD.get(name));
+      ccr.addMessage(NOTE_JEB_INDEX_ADD_REQUIRES_REBUILD.get(name));
       try
       {
         state.putIndexTrustState(null, this, false);
       }
       catch(DatabaseException de)
       {
-        messages.add(LocalizableMessage.raw(StaticUtils.stackTraceToSingleLineString(de)));
-        if(resultCode == ResultCode.SUCCESS)
-        {
-          resultCode = DirectoryServer.getServerErrorResultCode();
-        }
+        ccr.addMessage(LocalizableMessage.raw(StaticUtils.stackTraceToSingleLineString(de)));
+        ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
       }
     }
 
     this.config = cfg;
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 }
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/VLVIndex.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/VLVIndex.java
index da4d0a1..4914f13 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/VLVIndex.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/VLVIndex.java
@@ -1245,10 +1245,7 @@
       catch (StorageRuntimeException de)
       {
         ccr.addMessage(LocalizableMessage.raw(StaticUtils.stackTraceToSingleLineString(de)));
-        if (ccr.getResultCode() == ResultCode.SUCCESS)
-        {
-          ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
-        }
+        ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
       }
       finally
       {
@@ -1270,10 +1267,7 @@
       catch(StorageRuntimeException de)
       {
         ccr.addMessage(LocalizableMessage.raw(StaticUtils.stackTraceToSingleLineString(de)));
-        if (ccr.getResultCode() == ResultCode.SUCCESS)
-        {
-          ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
-        }
+        ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
       }
     }
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/task/TaskBackend.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/task/TaskBackend.java
index 46b49a8..2a72246 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/task/TaskBackend.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/task/TaskBackend.java
@@ -26,6 +26,11 @@
  */
 package org.opends.server.backends.task;
 
+import static org.opends.messages.BackendMessages.*;
+import static org.opends.server.config.ConfigConstants.*;
+import static org.opends.server.util.ServerConstants.*;
+import static org.opends.server.util.StaticUtils.*;
+
 import java.io.*;
 import java.net.InetAddress;
 import java.security.MessageDigest;
@@ -40,29 +45,24 @@
 
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.config.server.ConfigException;
 import org.forgerock.opendj.ldap.ByteString;
 import org.forgerock.opendj.ldap.ConditionResult;
 import org.forgerock.opendj.ldap.ModificationType;
+import org.forgerock.opendj.ldap.ResultCode;
 import org.forgerock.opendj.ldap.SearchScope;
 import org.forgerock.util.Reject;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.std.server.TaskBackendCfg;
 import org.opends.server.api.Backend;
 import org.opends.server.config.ConfigEntry;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.core.*;
 import org.opends.server.types.*;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.server.util.DynamicConstants;
 import org.opends.server.util.LDIFException;
 import org.opends.server.util.LDIFReader;
 import org.opends.server.util.LDIFWriter;
 
-import static org.opends.messages.BackendMessages.*;
-import static org.opends.server.config.ConfigConstants.*;
-import static org.opends.server.util.ServerConstants.*;
-import static org.opends.server.util.StaticUtils.*;
-
 /**
  * This class provides an implementation of a Directory Server backend that may
  * be used to execute various kinds of administrative tasks on a one-time or
@@ -1869,9 +1869,7 @@
   @Override
   public ConfigChangeResult applyConfigurationChange(TaskBackendCfg configEntry)
   {
-    ResultCode         resultCode          = ResultCode.SUCCESS;
-    boolean            adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
 
     String tmpBackingFile = taskBackingFile;
@@ -1884,27 +1882,26 @@
           File f = getFileForPath(tmpBackingFile);
           if (f.exists())
           {
-            messages.add(ERR_TASKBE_BACKING_FILE_EXISTS.get(tmpBackingFile));
-            resultCode = ResultCode.CONSTRAINT_VIOLATION;
+            ccr.addMessage(ERR_TASKBE_BACKING_FILE_EXISTS.get(tmpBackingFile));
+            ccr.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
           }
           else
           {
             File p = f.getParentFile();
             if (p == null)
             {
-              messages.add(ERR_TASKBE_INVALID_BACKING_FILE_PATH.get(
-                      tmpBackingFile));
-              resultCode = ResultCode.CONSTRAINT_VIOLATION;
+              ccr.addMessage(ERR_TASKBE_INVALID_BACKING_FILE_PATH.get(tmpBackingFile));
+              ccr.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
             }
             else if (! p.exists())
             {
-              messages.add(ERR_TASKBE_BACKING_FILE_MISSING_PARENT.get(p, tmpBackingFile));
-              resultCode = ResultCode.CONSTRAINT_VIOLATION;
+              ccr.addMessage(ERR_TASKBE_BACKING_FILE_MISSING_PARENT.get(p, tmpBackingFile));
+              ccr.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
             }
             else if (! p.isDirectory())
             {
-              messages.add(ERR_TASKBE_BACKING_FILE_PARENT_NOT_DIRECTORY.get(p, tmpBackingFile));
-              resultCode = ResultCode.CONSTRAINT_VIOLATION;
+              ccr.addMessage(ERR_TASKBE_BACKING_FILE_PARENT_NOT_DIRECTORY.get(p, tmpBackingFile));
+              ccr.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
             }
           }
         }
@@ -1914,24 +1911,22 @@
     {
       logger.traceException(e);
 
-      messages.add(ERR_TASKBE_ERROR_GETTING_BACKING_FILE.get(
-              getExceptionMessage(e)));
-
-      resultCode = DirectoryServer.getServerErrorResultCode();
+      ccr.addMessage(ERR_TASKBE_ERROR_GETTING_BACKING_FILE.get(getExceptionMessage(e)));
+      ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
     }
 
 
     long tmpRetentionTime = configEntry.getTaskRetentionTime();
 
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       // Everything looks OK, so apply the changes.
       if (retentionTime != tmpRetentionTime)
       {
         retentionTime = tmpRetentionTime;
 
-        messages.add(INFO_TASKBE_UPDATED_RETENTION_TIME.get(retentionTime));
+        ccr.addMessage(INFO_TASKBE_UPDATED_RETENTION_TIME.get(retentionTime));
       }
 
 
@@ -1940,7 +1935,7 @@
         taskBackingFile = tmpBackingFile;
         taskScheduler.writeState();
 
-        messages.add(INFO_TASKBE_UPDATED_BACKING_FILE.get(taskBackingFile));
+        ccr.addMessage(INFO_TASKBE_UPDATED_BACKING_FILE.get(taskBackingFile));
       }
     }
 
@@ -1962,7 +1957,7 @@
 
 
     currentConfig = configEntry;
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/AccessControlConfigManager.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/AccessControlConfigManager.java
index 0150d79..23f1bdc 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/AccessControlConfigManager.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/AccessControlConfigManager.java
@@ -26,6 +26,10 @@
  */
 package org.opends.server.core;
 
+import static org.opends.messages.ConfigMessages.*;
+import static org.opends.server.util.ServerConstants.*;
+import static org.opends.server.util.StaticUtils.*;
+
 import java.util.ArrayList;
 import java.util.LinkedHashMap;
 import java.util.List;
@@ -33,6 +37,7 @@
 
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.config.server.ConfigException;
 import org.forgerock.opendj.ldap.ResultCode;
 import org.forgerock.util.Utils;
 import org.opends.server.admin.ClassPropertyDefinition;
@@ -43,15 +48,10 @@
 import org.opends.server.admin.std.server.RootCfg;
 import org.opends.server.api.AccessControlHandler;
 import org.opends.server.api.AlertGenerator;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.DN;
 import org.opends.server.types.InitializationException;
 
-import static org.opends.messages.ConfigMessages.*;
-import static org.opends.server.util.ServerConstants.*;
-import static org.opends.server.util.StaticUtils.*;
-
 /**
  * This class manages the application-wide access-control configuration.
  * <p>
@@ -344,8 +344,7 @@
   public ConfigChangeResult applyConfigurationChange(
                                  AccessControlHandlerCfg configuration)
   {
-    ResultCode resultCode = ResultCode.SUCCESS;
-    ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     try
     {
@@ -354,16 +353,16 @@
     }
     catch (ConfigException e)
     {
-      messages.add(e.getMessageObject());
-      resultCode = ResultCode.CONSTRAINT_VIOLATION;
+      ccr.addMessage(e.getMessageObject());
+      ccr.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
     }
     catch (InitializationException e)
     {
-      messages.add(e.getMessageObject());
-      resultCode = DirectoryServer.getServerErrorResultCode();
+      ccr.addMessage(e.getMessageObject());
+      ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
     }
 
-    return new ConfigChangeResult(resultCode, false, messages);
+    return ccr;
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/AccountStatusNotificationHandlerConfigManager.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/AccountStatusNotificationHandlerConfigManager.java
index 03a1af1..209ccda1 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/AccountStatusNotificationHandlerConfigManager.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/AccountStatusNotificationHandlerConfigManager.java
@@ -26,12 +26,15 @@
  */
 package org.opends.server.core;
 
+import static org.opends.messages.ConfigMessages.*;
+import static org.opends.server.util.StaticUtils.*;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.forgerock.i18n.LocalizableMessage;
-import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.opendj.config.server.ConfigException;
 import org.forgerock.util.Utils;
 import org.opends.server.admin.ClassPropertyDefinition;
 import org.opends.server.admin.server.ConfigurationAddListener;
@@ -42,14 +45,10 @@
 import org.opends.server.admin.std.server.AccountStatusNotificationHandlerCfg;
 import org.opends.server.admin.std.server.RootCfg;
 import org.opends.server.api.AccountStatusNotificationHandler;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.DN;
 import org.opends.server.types.InitializationException;
 
-import static org.opends.messages.ConfigMessages.*;
-import static org.opends.server.util.StaticUtils.*;
-
 /**
  * This class defines a utility that will be used to manage the set of account
  * status notification handlers defined in the Directory Server.  It will
@@ -182,16 +181,11 @@
       AccountStatusNotificationHandlerCfg configuration
       )
   {
-    // Returned result.
-    ConfigChangeResult changeResult = new ConfigChangeResult(
-        ResultCode.SUCCESS, false, new ArrayList<LocalizableMessage>()
-        );
+    final ConfigChangeResult changeResult = new ConfigChangeResult();
 
     // Get the configuration entry DN and the associated handler class.
     DN configEntryDN = configuration.dn();
-    AccountStatusNotificationHandler handler = notificationHandlers.get(
-        configEntryDN
-        );
+    AccountStatusNotificationHandler handler = notificationHandlers.get(configEntryDN);
 
     // If the new configuration has the notification handler disabled,
     // then remove it from the mapping list and clean it.
@@ -290,10 +284,7 @@
       AccountStatusNotificationHandlerCfg configuration
       )
   {
-    // Returned result.
-    ConfigChangeResult changeResult = new ConfigChangeResult(
-        ResultCode.SUCCESS, false, new ArrayList<LocalizableMessage>()
-        );
+    final ConfigChangeResult changeResult = new ConfigChangeResult();
 
     // Register a change listener with it so we can be notified of changes
     // to it over time.
@@ -343,14 +334,8 @@
       AccountStatusNotificationHandlerCfg configuration
       )
   {
-    // Returned result.
-    ConfigChangeResult changeResult = new ConfigChangeResult(
-        ResultCode.SUCCESS, false, new ArrayList<LocalizableMessage>()
-        );
-
     uninstallNotificationHandler (configuration.dn());
-
-    return changeResult;
+    return new ConfigChangeResult();
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/AlertHandlerConfigManager.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/AlertHandlerConfigManager.java
index ec338c7..f290cbb 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/AlertHandlerConfigManager.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/AlertHandlerConfigManager.java
@@ -170,15 +170,13 @@
   @Override
   public ConfigChangeResult applyConfigurationAdd(AlertHandlerCfg configuration)
   {
-    ResultCode         resultCode          = ResultCode.SUCCESS;
-    boolean            adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     configuration.addChangeListener(this);
 
     if (! configuration.isEnabled())
     {
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
     AlertHandler alertHandler = null;
@@ -192,21 +190,17 @@
     }
     catch (InitializationException ie)
     {
-      if (resultCode == ResultCode.SUCCESS)
-      {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-      }
-
-      messages.add(ie.getMessageObject());
+      ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ie.getMessageObject());
     }
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       alertHandlers.put(configuration.dn(), alertHandler);
       DirectoryServer.registerAlertHandler(alertHandler);
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
@@ -233,9 +227,7 @@
   public ConfigChangeResult applyConfigurationDelete(
                                  AlertHandlerCfg configuration)
   {
-    ResultCode         resultCode          = ResultCode.SUCCESS;
-    boolean            adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     AlertHandler alertHandler = alertHandlers.remove(configuration.dn());
     if (alertHandler != null)
@@ -244,7 +236,7 @@
       alertHandler.finalizeAlertHandler();
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
@@ -285,9 +277,7 @@
   public ConfigChangeResult applyConfigurationChange(
                                  AlertHandlerCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
 
     // Get the existing alert handler if it's already enabled.
@@ -309,7 +299,7 @@
         }
       }
 
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
 
@@ -323,10 +313,10 @@
     {
       if (! className.equals(existingHandler.getClass().getName()))
       {
-        adminActionRequired = true;
+        ccr.setAdminActionRequired(true);
       }
 
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
     AlertHandler alertHandler = null;
@@ -336,21 +326,17 @@
     }
     catch (InitializationException ie)
     {
-      if (resultCode == ResultCode.SUCCESS)
-      {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-      }
-
-      messages.add(ie.getMessageObject());
+      ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ie.getMessageObject());
     }
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       alertHandlers.put(configuration.dn(), alertHandler);
       DirectoryServer.registerAlertHandler(alertHandler);
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/AttributeSyntaxConfigManager.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/AttributeSyntaxConfigManager.java
index 1d4c680..901dba3 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/AttributeSyntaxConfigManager.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/AttributeSyntaxConfigManager.java
@@ -26,36 +26,35 @@
  */
 package org.opends.server.core;
 
-import org.forgerock.i18n.slf4j.LocalizedLogger;
+import static org.opends.messages.ConfigMessages.*;
+import static org.opends.server.util.StaticUtils.*;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.ConcurrentHashMap;
 
+import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.util.Utils;
 import org.opends.server.admin.ClassPropertyDefinition;
 import org.opends.server.admin.server.ConfigurationAddListener;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.server.ConfigurationDeleteListener;
+import org.opends.server.admin.server.ServerManagementContext;
 import org.opends.server.admin.std.meta.AttributeSyntaxCfgDefn;
 import org.opends.server.admin.std.server.AttributeSyntaxCfg;
 import org.opends.server.admin.std.server.RootCfg;
-import org.opends.server.admin.server.ServerManagementContext;
 import org.opends.server.api.AttributeSyntax;
-import org.forgerock.opendj.config.server.ConfigException;
-import org.forgerock.i18n.LocalizableMessage;
-import org.forgerock.util.Utils;
 import org.opends.server.types.AttributeType;
 import org.opends.server.types.ConfigChangeResult;
-import org.opends.server.types.DirectoryException;
 import org.opends.server.types.DN;
+import org.opends.server.types.DirectoryException;
 import org.opends.server.types.InitializationException;
-import org.forgerock.opendj.ldap.ResultCode;
-
-import static org.opends.messages.ConfigMessages.*;
-import static org.opends.server.util.StaticUtils.*;
 
 /**
  * This class defines a utility that will be used to manage the set of attribute
- * syntaxes defined in the Directory Server.  It wil initialize the syntaxes
+ * syntaxes defined in the Directory Server.  It will initialize the syntaxes
  * when the server starts, and then will manage any additions, removals, or
  * modifications to any syntaxes while the server is running.
  */
@@ -156,6 +155,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationAddAcceptable(
                       AttributeSyntaxCfg configuration,
                       List<LocalizableMessage> unacceptableReasons)
@@ -185,18 +185,17 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public ConfigChangeResult applyConfigurationAdd(
                                  AttributeSyntaxCfg configuration)
   {
-    ResultCode         resultCode          = ResultCode.SUCCESS;
-    boolean            adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     configuration.addChangeListener(this);
 
     if (! configuration.isEnabled())
     {
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
     AttributeSyntax syntax = null;
@@ -215,26 +214,18 @@
       }
       catch (DirectoryException de)
       {
-        messages.add(WARN_CONFIG_SCHEMA_SYNTAX_CONFLICTING_SYNTAX.get(
+        ccr.addMessage(WARN_CONFIG_SCHEMA_SYNTAX_CONFLICTING_SYNTAX.get(
                 configuration.dn(), de.getMessageObject()));
-
-        if (resultCode == ResultCode.SUCCESS)
-        {
-          resultCode = DirectoryServer.getServerErrorResultCode();
-        }
+        ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
       }
     }
     catch (InitializationException ie)
     {
-      if (resultCode == ResultCode.SUCCESS)
-      {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-      }
-
-      messages.add(ie.getMessageObject());
+      ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ie.getMessageObject());
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
@@ -242,6 +233,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationDeleteAcceptable(
                       AttributeSyntaxCfg configuration,
                       List<LocalizableMessage> unacceptableReasons)
@@ -275,12 +267,11 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public ConfigChangeResult applyConfigurationDelete(
                                  AttributeSyntaxCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     AttributeSyntax syntax = syntaxes.remove(configuration.dn());
     if (syntax != null)
@@ -289,7 +280,7 @@
       syntax.finalizeSyntax();
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
@@ -297,6 +288,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationChangeAcceptable(
                       AttributeSyntaxCfg configuration,
                       List<LocalizableMessage> unacceptableReasons)
@@ -348,12 +340,11 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public ConfigChangeResult applyConfigurationChange(
                                  AttributeSyntaxCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
 
     // Get the existing syntax if it's already enabled.
@@ -375,7 +366,7 @@
         }
       }
 
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
 
@@ -389,10 +380,10 @@
     {
       if (! className.equals(existingSyntax.getClass().getName()))
       {
-        adminActionRequired = true;
+        ccr.setAdminActionRequired(true);
       }
 
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
     AttributeSyntax syntax = null;
@@ -407,26 +398,18 @@
       }
       catch (DirectoryException de)
       {
-        messages.add(WARN_CONFIG_SCHEMA_SYNTAX_CONFLICTING_SYNTAX.get(
+        ccr.addMessage(WARN_CONFIG_SCHEMA_SYNTAX_CONFLICTING_SYNTAX.get(
                 configuration.dn(), de.getMessageObject()));
-
-        if (resultCode == ResultCode.SUCCESS)
-        {
-          resultCode = DirectoryServer.getServerErrorResultCode();
-        }
+        ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
       }
     }
     catch (InitializationException ie)
     {
-      if (resultCode == ResultCode.SUCCESS)
-      {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-      }
-
-      messages.add(ie.getMessageObject());
+      ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ie.getMessageObject());
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/CertificateMapperConfigManager.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/CertificateMapperConfigManager.java
index a3dfb92..c1b5361 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/CertificateMapperConfigManager.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/CertificateMapperConfigManager.java
@@ -26,31 +26,30 @@
  */
 package org.opends.server.core;
 
-import org.forgerock.i18n.LocalizableMessage;
-import org.forgerock.i18n.slf4j.LocalizedLogger;
-import org.forgerock.util.Utils;
+import static org.opends.messages.ConfigMessages.*;
+import static org.opends.server.util.StaticUtils.*;
 
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.ConcurrentHashMap;
 
+import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.util.Utils;
 import org.opends.server.admin.ClassPropertyDefinition;
 import org.opends.server.admin.server.ConfigurationAddListener;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.server.ConfigurationDeleteListener;
+import org.opends.server.admin.server.ServerManagementContext;
 import org.opends.server.admin.std.meta.CertificateMapperCfgDefn;
 import org.opends.server.admin.std.server.CertificateMapperCfg;
 import org.opends.server.admin.std.server.RootCfg;
-import org.opends.server.admin.server.ServerManagementContext;
 import org.opends.server.api.CertificateMapper;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.DN;
 import org.opends.server.types.InitializationException;
-import org.forgerock.opendj.ldap.ResultCode;
-
-import static org.opends.messages.ConfigMessages.*;
-import static org.opends.server.util.StaticUtils.*;
 
 /**
  * This class defines a utility that will be used to manage the set of
@@ -68,8 +67,10 @@
 
   private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
 
-  // A mapping between the DNs of the config entries and the associated
-  // certificate mappers.
+  /**
+   * A mapping between the DNs of the config entries and the associated
+   * certificate mappers.
+   */
   private ConcurrentHashMap<DN,CertificateMapper> certificateMappers;
 
   private final ServerContext serverContext;
@@ -141,11 +142,8 @@
     }
   }
 
-
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
+  @Override
   public boolean isConfigurationAddAcceptable(
                       CertificateMapperCfg configuration,
                       List<LocalizableMessage> unacceptableReasons)
@@ -170,23 +168,18 @@
     return true;
   }
 
-
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
+  @Override
   public ConfigChangeResult applyConfigurationAdd(
                                  CertificateMapperCfg configuration)
   {
-    ResultCode         resultCode          = ResultCode.SUCCESS;
-    boolean            adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     configuration.addChangeListener(this);
 
     if (! configuration.isEnabled())
     {
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
     CertificateMapper certificateMapper = null;
@@ -200,29 +193,21 @@
     }
     catch (InitializationException ie)
     {
-      if (resultCode == ResultCode.SUCCESS)
-      {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-      }
-
-      messages.add(ie.getMessageObject());
+      ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ie.getMessageObject());
     }
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       certificateMappers.put(configuration.dn(), certificateMapper);
-      DirectoryServer.registerCertificateMapper(configuration.dn(),
-                                                certificateMapper);
+      DirectoryServer.registerCertificateMapper(configuration.dn(), certificateMapper);
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
-
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
+  @Override
   public boolean isConfigurationDeleteAcceptable(
                       CertificateMapperCfg configuration,
                       List<LocalizableMessage> unacceptableReasons)
@@ -232,17 +217,12 @@
     return true;
   }
 
-
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
+  @Override
   public ConfigChangeResult applyConfigurationDelete(
                                  CertificateMapperCfg configuration)
   {
-    ResultCode         resultCode          = ResultCode.SUCCESS;
-    boolean            adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     DirectoryServer.deregisterCertificateMapper(configuration.dn());
 
@@ -253,14 +233,11 @@
       certificateMapper.finalizeCertificateMapper();
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
-
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
+  @Override
   public boolean isConfigurationChangeAcceptable(
                       CertificateMapperCfg configuration,
                       List<LocalizableMessage> unacceptableReasons)
@@ -285,17 +262,12 @@
     return true;
   }
 
-
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
+  @Override
   public ConfigChangeResult applyConfigurationChange(
                                  CertificateMapperCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
 
     // Get the existing mapper if it's already enabled.
@@ -319,7 +291,7 @@
         }
       }
 
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
 
@@ -333,10 +305,10 @@
     {
       if (! className.equals(existingMapper.getClass().getName()))
       {
-        adminActionRequired = true;
+        ccr.setAdminActionRequired(true);
       }
 
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
     CertificateMapper certificateMapper = null;
@@ -346,22 +318,17 @@
     }
     catch (InitializationException ie)
     {
-      if (resultCode == ResultCode.SUCCESS)
-      {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-      }
-
-      messages.add(ie.getMessageObject());
+      ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ie.getMessageObject());
     }
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       certificateMappers.put(configuration.dn(), certificateMapper);
-      DirectoryServer.registerCertificateMapper(configuration.dn(),
-                                                certificateMapper);
+      DirectoryServer.registerCertificateMapper(configuration.dn(), certificateMapper);
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/ConnectionHandlerConfigManager.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/ConnectionHandlerConfigManager.java
index 1f681c3..608f14b 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/ConnectionHandlerConfigManager.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/ConnectionHandlerConfigManager.java
@@ -26,14 +26,17 @@
  */
 package org.opends.server.core;
 
-import java.util.ArrayList;
+import static org.opends.messages.ConfigMessages.*;
+import static org.opends.messages.CoreMessages.*;
+import static org.opends.server.util.StaticUtils.*;
+
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
-import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.admin.AdministrationConnector;
 import org.opends.server.admin.ClassPropertyDefinition;
 import org.opends.server.admin.server.ConfigurationAddListener;
@@ -45,16 +48,11 @@
 import org.opends.server.admin.std.server.ConnectionHandlerCfg;
 import org.opends.server.admin.std.server.RootCfg;
 import org.opends.server.api.ConnectionHandler;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.protocols.ldap.LDAPConnectionHandler;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.DN;
 import org.opends.server.types.InitializationException;
 
-import static org.opends.messages.ConfigMessages.*;
-import static org.opends.messages.CoreMessages.*;
-import static org.opends.server.util.StaticUtils.*;
-
 /**
  * This class defines a utility that will be used to manage the
  * configuration for the set of connection handlers defined in the
@@ -94,14 +92,10 @@
   @Override
   public ConfigChangeResult applyConfigurationAdd(
       ConnectionHandlerCfg configuration) {
-    // Default result code.
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     // Register as a change listener for this connection handler entry
-    // so that we will be notified of any changes that may be made to
-    // it.
+    // so that we will be notified of any changes that may be made to it.
     configuration.addChangeListener(this);
 
     // Ignore this connection handler if it is disabled.
@@ -123,18 +117,17 @@
       } catch (ConfigException e) {
         logger.traceException(e);
 
-        messages.add(e.getMessageObject());
-        resultCode = DirectoryServer.getServerErrorResultCode();
+        ccr.addMessage(e.getMessageObject());
+        ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
       } catch (Exception e) {
         logger.traceException(e);
-        messages.add(ERR_CONFIG_CONNHANDLER_CANNOT_INITIALIZE.get(
+        ccr.addMessage(ERR_CONFIG_CONNHANDLER_CANNOT_INITIALIZE.get(
             configuration.getJavaClass(), dn, stackTraceToSingleLineString(e)));
-        resultCode = DirectoryServer.getServerErrorResultCode();
+        ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
       }
     }
 
-    // Return the configuration result.
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
@@ -150,10 +143,7 @@
     DN dn = configuration.dn();
     ConnectionHandler<?> connectionHandler = connectionHandlers.get(dn);
 
-    // Default result code.
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     // See whether the connection handler should be enabled.
     if (connectionHandler == null) {
@@ -174,14 +164,14 @@
         } catch (ConfigException e) {
           logger.traceException(e);
 
-          messages.add(e.getMessageObject());
-          resultCode = DirectoryServer.getServerErrorResultCode();
+          ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+          ccr.addMessage(e.getMessageObject());
         } catch (Exception e) {
           logger.traceException(e);
 
-          messages.add(ERR_CONFIG_CONNHANDLER_CANNOT_INITIALIZE.get(
+          ccr.addMessage(ERR_CONFIG_CONNHANDLER_CANNOT_INITIALIZE.get(
               configuration.getJavaClass(), dn, stackTraceToSingleLineString(e)));
-          resultCode = DirectoryServer.getServerErrorResultCode();
+          ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
         }
       }
     } else {
@@ -193,7 +183,7 @@
         // change to take effect.
         String className = configuration.getJavaClass();
         if (!className.equals(connectionHandler.getClass().getName())) {
-          adminActionRequired = true;
+          ccr.setAdminActionRequired(true);
         }
       } else {
         // We need to disable the connection handler.
@@ -207,9 +197,7 @@
       }
     }
 
-    // Return the configuration result.
-    return new ConfigChangeResult(resultCode, adminActionRequired,
-        messages);
+    return ccr;
   }
 
 
@@ -220,10 +208,7 @@
   @Override
   public ConfigChangeResult applyConfigurationDelete(
       ConnectionHandlerCfg configuration) {
-
-    // Default result code.
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     // See if the entry is registered as a connection handler. If so,
     // deregister and stop it. We'll try to leave any established
@@ -238,7 +223,7 @@
               INFO_CONNHANDLER_CLOSED_BY_DELETE.get());
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired);
+    return ccr;
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/CoreConfigManager.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/CoreConfigManager.java
index c356916..b0059eb 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/CoreConfigManager.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/CoreConfigManager.java
@@ -355,13 +355,11 @@
   @Override
   public ConfigChangeResult applyConfigurationChange(GlobalCfg configuration)
   {
-    ResultCode         resultCode          = ResultCode.SUCCESS;
-    boolean            adminActionRequired = false;
-    List<LocalizableMessage>      messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     applyGlobalConfiguration(configuration);
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 }
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/EntryCacheConfigManager.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/EntryCacheConfigManager.java
index ff09c62..74b7463 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/EntryCacheConfigManager.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/EntryCacheConfigManager.java
@@ -30,7 +30,6 @@
 
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.forgerock.util.Utils;
 import org.opends.server.admin.ClassPropertyDefinition;
 import org.opends.server.admin.server.ConfigurationAddListener;
@@ -305,10 +304,7 @@
       }
     }
 
-    // Returned result.
-    ConfigChangeResult changeResult = new ConfigChangeResult(
-        ResultCode.SUCCESS, false, new ArrayList<LocalizableMessage>()
-        );
+    final ConfigChangeResult changeResult = new ConfigChangeResult();
 
     // If an entry cache was installed then remove it.
     if (!configuration.isEnabled())
@@ -414,14 +410,9 @@
    * {@inheritDoc}
    */
   @Override
-  public ConfigChangeResult applyConfigurationAdd(
-      EntryCacheCfg configuration
-      )
+  public ConfigChangeResult applyConfigurationAdd(EntryCacheCfg configuration)
   {
-    // Returned result.
-    ConfigChangeResult changeResult = new ConfigChangeResult(
-        ResultCode.SUCCESS, false, new ArrayList<LocalizableMessage>()
-        );
+    final ConfigChangeResult changeResult = new ConfigChangeResult();
 
     // Register a change listener with it so we can be notified of changes
     // to it over time.
@@ -479,10 +470,7 @@
       entryCache = cacheOrderMap.get(configuration.getCacheLevel());
     }
 
-    // Returned result.
-    ConfigChangeResult changeResult = new ConfigChangeResult(
-        ResultCode.SUCCESS, false, new ArrayList<LocalizableMessage>()
-        );
+    final ConfigChangeResult changeResult = new ConfigChangeResult();
 
     // If the entry cache was installed then remove it.
     if (entryCache != null)
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/ExtendedOperationConfigManager.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/ExtendedOperationConfigManager.java
index 4a6541c..2044e1e 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/ExtendedOperationConfigManager.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/ExtendedOperationConfigManager.java
@@ -26,13 +26,15 @@
  */
 package org.opends.server.core;
 
-import java.util.ArrayList;
+import static org.opends.messages.ConfigMessages.*;
+import static org.opends.server.util.StaticUtils.*;
+
 import java.util.List;
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
-import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.admin.ClassPropertyDefinition;
 import org.opends.server.admin.server.ConfigurationAddListener;
 import org.opends.server.admin.server.ConfigurationChangeListener;
@@ -42,14 +44,10 @@
 import org.opends.server.admin.std.server.ExtendedOperationHandlerCfg;
 import org.opends.server.admin.std.server.RootCfg;
 import org.opends.server.api.ExtendedOperationHandler;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.DN;
 import org.opends.server.types.InitializationException;
 
-import static org.opends.messages.ConfigMessages.*;
-import static org.opends.server.util.StaticUtils.*;
-
 /**
  * This class defines a utility that will be used to manage the set of extended
  * operation handlers defined in the Directory Server.  It will initialize the
@@ -140,20 +138,15 @@
   public ConfigChangeResult applyConfigurationDelete(
        ExtendedOperationHandlerCfg configuration)
   {
-    ResultCode resultCode          = ResultCode.SUCCESS;
-    boolean    adminActionRequired = false;
-
-
-    // See if the entry is registered as an extended operation handler.  If so,
-    // deregister it and finalize the handler.
+    final ConfigChangeResult ccr = new ConfigChangeResult();
+    // See if the entry is registered as an extended operation handler.
+    // If so, deregister it and finalize the handler.
     ExtendedOperationHandler handler = handlers.remove(configuration.dn());
     if (handler != null)
     {
       handler.finalizeExtendedOperationHandler();
     }
-
-
-    return new ConfigChangeResult(resultCode, adminActionRequired);
+    return ccr;
   }
 
   /**
@@ -185,10 +178,7 @@
     DN dn = configuration.dn();
     ExtendedOperationHandler handler = handlers.get(dn);
 
-    // Default result code.
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     // See whether the handler should be enabled.
     if (handler == null) {
@@ -204,14 +194,14 @@
         } catch (ConfigException e) {
           logger.traceException(e);
 
-          messages.add(e.getMessageObject());
-          resultCode = DirectoryServer.getServerErrorResultCode();
+          ccr.addMessage(e.getMessageObject());
+          ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
         } catch (Exception e) {
           logger.traceException(e);
 
-          messages.add(ERR_CONFIG_EXTOP_INITIALIZATION_FAILED.get(
+          ccr.addMessage(ERR_CONFIG_EXTOP_INITIALIZATION_FAILED.get(
               configuration.getJavaClass(), dn, stackTraceToSingleLineString(e)));
-          resultCode = DirectoryServer.getServerErrorResultCode();
+          ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
         }
       }
     } else {
@@ -223,7 +213,7 @@
         // change to take effect.
         String className = configuration.getJavaClass();
         if (!className.equals(handler.getClass().getName())) {
-          adminActionRequired = true;
+          ccr.setAdminActionRequired(true);
         }
       } else {
         // We need to disable the connection handler.
@@ -234,9 +224,7 @@
       }
     }
 
-    // Return the configuration result.
-    return new ConfigChangeResult(resultCode, adminActionRequired,
-        messages);
+    return ccr;
   }
 
   /**
@@ -257,10 +245,7 @@
   public ConfigChangeResult applyConfigurationAdd(
        ExtendedOperationHandlerCfg configuration)
   {
-    // Default result code.
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     // Register as a change listener for this connection handler entry
     // so that we will be notified of any changes that may be made to
@@ -284,22 +269,20 @@
       {
         logger.traceException(e);
 
-        messages.add(e.getMessageObject());
-        resultCode = DirectoryServer.getServerErrorResultCode();
+        ccr.addMessage(e.getMessageObject());
+        ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
       }
       catch (Exception e)
       {
         logger.traceException(e);
 
-        messages.add(ERR_CONFIG_EXTOP_INITIALIZATION_FAILED.get(
+        ccr.addMessage(ERR_CONFIG_EXTOP_INITIALIZATION_FAILED.get(
             configuration.getJavaClass(), dn, stackTraceToSingleLineString(e)));
-        resultCode = DirectoryServer.getServerErrorResultCode();
+        ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
       }
     }
 
-    // Return the configuration result.
-    return new ConfigChangeResult(resultCode, adminActionRequired,
-        messages);
+    return ccr;
   }
 
   /**
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/GroupManager.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/GroupManager.java
index 0035488..2a0be7c 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/GroupManager.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/GroupManager.java
@@ -225,14 +225,13 @@
   public ConfigChangeResult applyConfigurationAdd(
                                  GroupImplementationCfg configuration)
   {
-    ResultCode resultCode = ResultCode.SUCCESS;
-    List<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     configuration.addChangeListener(this);
 
     if (! configuration.isEnabled())
     {
-      return new ConfigChangeResult(resultCode, false, messages);
+      return ccr;
     }
 
     Group<?> group = null;
@@ -242,18 +241,18 @@
     }
     catch (InitializationException ie)
     {
-      resultCode = DirectoryServer.getServerErrorResultCode();
-      messages.add(ie.getMessageObject());
+      ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ie.getMessageObject());
     }
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       groupImplementations.put(configuration.dn(), group);
     }
 
     // FIXME -- We need to make sure to find all groups of this type in the
     // server before returning.
-    return new ConfigChangeResult(resultCode, false, messages);
+    return ccr;
   }
 
 
@@ -276,8 +275,7 @@
   public ConfigChangeResult applyConfigurationDelete(
                                  GroupImplementationCfg configuration)
   {
-    ResultCode resultCode = ResultCode.SUCCESS;
-    List<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     Group<?> group = groupImplementations.remove(configuration.dn());
     if (group != null)
@@ -303,7 +301,7 @@
       group.finalizeGroupImplementation();
     }
 
-    return new ConfigChangeResult(resultCode, false, messages);
+    return ccr;
   }
 
 
@@ -336,9 +334,7 @@
   public ConfigChangeResult applyConfigurationChange(
                                  GroupImplementationCfg configuration)
   {
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
-    List<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
     // Get the existing group implementation if it's already enabled.
     Group<?> existingGroup = groupImplementations.get(configuration.dn());
 
@@ -373,7 +369,7 @@
         }
       }
 
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
 
@@ -387,10 +383,10 @@
     {
       if (! className.equals(existingGroup.getClass().getName()))
       {
-        adminActionRequired = true;
+        ccr.setAdminActionRequired(true);
       }
 
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
     Group<?> group = null;
@@ -400,19 +396,18 @@
     }
     catch (InitializationException ie)
     {
-      resultCode = DirectoryServer.getServerErrorResultCode();
-      messages.add(ie.getMessageObject());
+      ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ie.getMessageObject());
     }
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       groupImplementations.put(configuration.dn(), group);
     }
 
     // FIXME -- We need to make sure to find all groups of this type in the
     // server before returning.
-
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/IdentityMapperConfigManager.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/IdentityMapperConfigManager.java
index 1a0b371..a7e0995 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/IdentityMapperConfigManager.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/IdentityMapperConfigManager.java
@@ -26,31 +26,30 @@
  */
 package org.opends.server.core;
 
-import org.forgerock.i18n.LocalizableMessage;
-import org.forgerock.i18n.slf4j.LocalizedLogger;
-import org.forgerock.util.Utils;
+import static org.opends.messages.ConfigMessages.*;
+import static org.opends.server.util.StaticUtils.*;
 
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.ConcurrentHashMap;
 
+import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.util.Utils;
 import org.opends.server.admin.ClassPropertyDefinition;
 import org.opends.server.admin.server.ConfigurationAddListener;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.server.ConfigurationDeleteListener;
+import org.opends.server.admin.server.ServerManagementContext;
 import org.opends.server.admin.std.meta.IdentityMapperCfgDefn;
 import org.opends.server.admin.std.server.IdentityMapperCfg;
 import org.opends.server.admin.std.server.RootCfg;
-import org.opends.server.admin.server.ServerManagementContext;
 import org.opends.server.api.IdentityMapper;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.DN;
 import org.opends.server.types.InitializationException;
-import org.forgerock.opendj.ldap.ResultCode;
-
-import static org.opends.messages.ConfigMessages.*;
-import static org.opends.server.util.StaticUtils.*;
 
 /**
  * This class defines a utility that will be used to manage the set of identity
@@ -159,6 +158,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationAddAcceptable(
                       IdentityMapperCfg configuration,
                       List<LocalizableMessage> unacceptableReasons)
@@ -188,18 +188,17 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public ConfigChangeResult applyConfigurationAdd(
                                  IdentityMapperCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     configuration.addChangeListener(this);
 
     if (! configuration.isEnabled())
     {
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
     IdentityMapper identityMapper = null;
@@ -213,22 +212,17 @@
     }
     catch (InitializationException ie)
     {
-      if (resultCode == ResultCode.SUCCESS)
-      {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-      }
-
-      messages.add(ie.getMessageObject());
+      ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ie.getMessageObject());
     }
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       identityMappers.put(configuration.dn(), identityMapper);
-      DirectoryServer.registerIdentityMapper(configuration.dn(),
-                                             identityMapper);
+      DirectoryServer.registerIdentityMapper(configuration.dn(), identityMapper);
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
@@ -236,6 +230,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationDeleteAcceptable(
                       IdentityMapperCfg configuration,
                       List<LocalizableMessage> unacceptableReasons)
@@ -250,12 +245,11 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public ConfigChangeResult applyConfigurationDelete(
                                  IdentityMapperCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     DirectoryServer.deregisterIdentityMapper(configuration.dn());
 
@@ -265,7 +259,7 @@
       identityMapper.finalizeIdentityMapper();
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
@@ -273,6 +267,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationChangeAcceptable(
                       IdentityMapperCfg configuration,
                       List<LocalizableMessage> unacceptableReasons)
@@ -302,12 +297,11 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public ConfigChangeResult applyConfigurationChange(
                                  IdentityMapperCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
 
     // Get the existing mapper if it's already enabled.
@@ -330,7 +324,7 @@
         }
       }
 
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
 
@@ -344,10 +338,10 @@
     {
       if (! className.equals(existingMapper.getClass().getName()))
       {
-        adminActionRequired = true;
+        ccr.setAdminActionRequired(true);
       }
 
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
     IdentityMapper identityMapper = null;
@@ -357,22 +351,17 @@
     }
     catch (InitializationException ie)
     {
-      if (resultCode == ResultCode.SUCCESS)
-      {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-      }
-
-      messages.add(ie.getMessageObject());
+      ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ie.getMessageObject());
     }
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       identityMappers.put(configuration.dn(), identityMapper);
-      DirectoryServer.registerIdentityMapper(configuration.dn(),
-                                             identityMapper);
+      DirectoryServer.registerIdentityMapper(configuration.dn(), identityMapper);
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/KeyManagerProviderConfigManager.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/KeyManagerProviderConfigManager.java
index 73befb6..2f06160 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/KeyManagerProviderConfigManager.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/KeyManagerProviderConfigManager.java
@@ -178,15 +178,13 @@
   public ConfigChangeResult applyConfigurationAdd(
           KeyManagerProviderCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     configuration.addChangeListener(this);
 
     if (! configuration.isEnabled())
     {
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
     KeyManagerProvider provider = null;
@@ -200,21 +198,17 @@
     }
     catch (InitializationException ie)
     {
-      if (resultCode == ResultCode.SUCCESS)
-      {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-      }
-
-      messages.add(ie.getMessageObject());
+      ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ie.getMessageObject());
     }
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       providers.put(configuration.dn(), provider);
       DirectoryServer.registerKeyManagerProvider(configuration.dn(), provider);
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
@@ -239,9 +233,7 @@
   public ConfigChangeResult applyConfigurationDelete(
                                  KeyManagerProviderCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     DirectoryServer.deregisterKeyManagerProvider(configuration.dn());
 
@@ -251,7 +243,7 @@
       provider.finalizeKeyManagerProvider();
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
@@ -291,9 +283,7 @@
   public ConfigChangeResult applyConfigurationChange(
                                  KeyManagerProviderCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
 
     // Get the existing provider if it's already enabled.
@@ -315,7 +305,7 @@
         }
       }
 
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
 
@@ -329,10 +319,10 @@
     {
       if (! className.equals(existingProvider.getClass().getName()))
       {
-        adminActionRequired = true;
+        ccr.setAdminActionRequired(true);
       }
 
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
     KeyManagerProvider provider = null;
@@ -342,21 +332,17 @@
     }
     catch (InitializationException ie)
     {
-      if (resultCode == ResultCode.SUCCESS)
-      {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-      }
-
-      messages.add(ie.getMessageObject());
+      ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ie.getMessageObject());
     }
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       providers.put(configuration.dn(), provider);
       DirectoryServer.registerKeyManagerProvider(configuration.dn(), provider);
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/LogRetentionPolicyConfigManager.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/LogRetentionPolicyConfigManager.java
index 56b4bec..f062205 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/LogRetentionPolicyConfigManager.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/LogRetentionPolicyConfigManager.java
@@ -26,7 +26,6 @@
  */
 package org.opends.server.core;
 
-import java.util.ArrayList;
 import java.util.List;
 
 import org.opends.server.admin.std.server.LogRetentionPolicyCfg;
@@ -34,7 +33,6 @@
 import org.opends.server.admin.std.meta.LogRetentionPolicyCfgDefn;
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.server.admin.server.ConfigurationAddListener;
 import org.opends.server.admin.server.ServerManagementContext;
 import org.opends.server.admin.server.ConfigurationChangeListener;
@@ -131,10 +129,7 @@
   @Override
   public ConfigChangeResult applyConfigurationAdd(LogRetentionPolicyCfg config)
   {
-    // Default result code.
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     try
     {
@@ -144,17 +139,17 @@
     }
     catch (ConfigException e) {
       logger.traceException(e);
-      messages.add(e.getMessageObject());
-      resultCode = DirectoryServer.getServerErrorResultCode();
+      ccr.addMessage(e.getMessageObject());
+      ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
     } catch (Exception e) {
       logger.traceException(e);
 
-      messages.add(ERR_CONFIG_RETENTION_POLICY_CANNOT_CREATE_POLICY.get(
+      ccr.addMessage(ERR_CONFIG_RETENTION_POLICY_CANNOT_CREATE_POLICY.get(
           config.dn(),stackTraceToSingleLineString(e)));
-      resultCode = DirectoryServer.getServerErrorResultCode();
+      ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
   /**
@@ -164,10 +159,7 @@
   public ConfigChangeResult applyConfigurationDelete(
       LogRetentionPolicyCfg config)
   {
-    // Default result code.
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     RetentionPolicy policy = DirectoryServer.getRetentionPolicy(config.dn());
     if(policy != null)
@@ -177,10 +169,10 @@
     else
     {
       // TODO: Add message and check for usage
-      resultCode = DirectoryServer.getServerErrorResultCode();
+      ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
   /**
@@ -201,20 +193,17 @@
   public ConfigChangeResult applyConfigurationChange(
       LogRetentionPolicyCfg configuration)
   {
-    // Default result code.
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     RetentionPolicy policy =
         DirectoryServer.getRetentionPolicy(configuration.dn());
     String className = configuration.getJavaClass();
     if(!className.equals(policy.getClass().getName()))
     {
-      adminActionRequired = true;
+      ccr.setAdminActionRequired(true);
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
   private boolean isJavaClassAcceptable(LogRetentionPolicyCfg config,
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/LogRotationPolicyConfigManager.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/LogRotationPolicyConfigManager.java
index 2d16e3b..cb7da5a 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/LogRotationPolicyConfigManager.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/LogRotationPolicyConfigManager.java
@@ -25,12 +25,10 @@
  *      Portions Copyright 2014 ForgeRock AS
  */
 package org.opends.server.core;
-import java.util.ArrayList;
 import java.util.List;
 
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.server.loggers.RotationPolicy;
 import org.opends.server.admin.server.ConfigurationAddListener;
 import org.opends.server.admin.server.ConfigurationDeleteListener;
@@ -130,10 +128,7 @@
   @Override
   public ConfigChangeResult applyConfigurationAdd(LogRotationPolicyCfg config)
   {
-    // Default result code.
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     try
     {
@@ -143,17 +138,17 @@
     }
     catch (ConfigException e) {
       logger.traceException(e);
-      messages.add(e.getMessageObject());
-      resultCode = DirectoryServer.getServerErrorResultCode();
+      ccr.addMessage(e.getMessageObject());
+      ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
     } catch (Exception e) {
       logger.traceException(e);
 
-      messages.add(ERR_CONFIG_ROTATION_POLICY_CANNOT_CREATE_POLICY.get(config.dn(),
+      ccr.addMessage(ERR_CONFIG_ROTATION_POLICY_CANNOT_CREATE_POLICY.get(config.dn(),
               stackTraceToSingleLineString(e)));
-      resultCode = DirectoryServer.getServerErrorResultCode();
+      ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
   /**
@@ -163,10 +158,7 @@
   public ConfigChangeResult applyConfigurationDelete(
       LogRotationPolicyCfg config)
   {
-    // Default result code.
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     RotationPolicy policy = DirectoryServer.getRotationPolicy(config.dn());
     if(policy != null)
@@ -176,10 +168,10 @@
     else
     {
       // TODO: Add message and check for usage
-      resultCode = DirectoryServer.getServerErrorResultCode();
+      ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
   /**
@@ -200,20 +192,17 @@
   public ConfigChangeResult applyConfigurationChange(
       LogRotationPolicyCfg configuration)
   {
-    // Default result code.
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     RotationPolicy policy =
         DirectoryServer.getRotationPolicy(configuration.dn());
     String className = configuration.getJavaClass();
     if(!className.equals(policy.getClass().getName()))
     {
-      adminActionRequired = true;
+      ccr.setAdminActionRequired(true);
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
   private boolean isJavaClassAcceptable(LogRotationPolicyCfg config,
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/LoggerConfigManager.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/LoggerConfigManager.java
index b825151..7f5f24a 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/LoggerConfigManager.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/LoggerConfigManager.java
@@ -28,12 +28,13 @@
 
 import static org.opends.messages.ConfigMessages.*;
 
-import org.forgerock.i18n.slf4j.LocalizedLogger;
-
 import java.util.ArrayList;
 import java.util.List;
 
 import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.server.admin.server.ConfigurationAddListener;
 import org.opends.server.admin.server.ConfigurationDeleteListener;
 import org.opends.server.admin.server.ServerManagementContext;
@@ -43,7 +44,6 @@
 import org.opends.server.admin.std.server.HTTPAccessLogPublisherCfg;
 import org.opends.server.admin.std.server.LogPublisherCfg;
 import org.opends.server.admin.std.server.RootCfg;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.loggers.AbstractLogger;
 import org.opends.server.loggers.AccessLogger;
 import org.opends.server.loggers.DebugLogger;
@@ -51,8 +51,6 @@
 import org.opends.server.loggers.HTTPAccessLogger;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.InitializationException;
-import org.forgerock.opendj.ldap.ResultCode;
-
 
 /**
  * This class defines a utility that will be used to manage the set of loggers
@@ -67,7 +65,6 @@
 
   private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
 
-
   private final ServerContext serverContext;
 
   /**
@@ -200,74 +197,57 @@
     }
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public boolean isConfigurationAddAcceptable(LogPublisherCfg config,
                                               List<LocalizableMessage> unacceptableReasons)
   {
     AbstractLogger instance = getLoggerInstance(config, unacceptableReasons);
-    if (instance != null)
-    {
-      return instance.isConfigurationAddAcceptable(config, unacceptableReasons);
-    }
-    return false;
+    return instance != null
+        && instance.isConfigurationAddAcceptable(config, unacceptableReasons);
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public ConfigChangeResult applyConfigurationAdd(LogPublisherCfg config)
   {
-    List<LocalizableMessage> messages = new ArrayList<LocalizableMessage>(1);
-    AbstractLogger instance = getLoggerInstance(config, messages);
+    final ConfigChangeResult ccr = new ConfigChangeResult();
+    AbstractLogger instance = getLoggerInstance(config, ccr.getMessages());
     if (instance != null)
     {
       return instance.applyConfigurationAdd(config);
     }
     else
     {
-      boolean adminActionRequired = false;
-      ResultCode resultCode = ResultCode.UNWILLING_TO_PERFORM;
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      ccr.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
+      return ccr;
     }
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public boolean isConfigurationDeleteAcceptable(LogPublisherCfg config,
                                               List<LocalizableMessage> unacceptableReasons)
   {
     AbstractLogger instance = getLoggerInstance(config, unacceptableReasons);
-    if (instance != null)
-    {
-      return instance.isConfigurationDeleteAcceptable(config,
-          unacceptableReasons);
-    }
-    return false;
+    return instance != null
+        && instance.isConfigurationDeleteAcceptable(config, unacceptableReasons);
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public ConfigChangeResult applyConfigurationDelete(LogPublisherCfg config)
   {
-    List<LocalizableMessage> messages = new ArrayList<LocalizableMessage>(1);
-    AbstractLogger instance = getLoggerInstance(config, messages);
+    final ConfigChangeResult ccr = new ConfigChangeResult();
+    AbstractLogger instance = getLoggerInstance(config, ccr.getMessages());
     if (instance != null)
     {
       return instance.applyConfigurationDelete(config);
     }
     else
     {
-      boolean           adminActionRequired = false;
-      ResultCode resultCode = ResultCode.UNWILLING_TO_PERFORM;
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      ccr.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
+      return ccr;
     }
   }
 }
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/MatchingRuleConfigManager.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/MatchingRuleConfigManager.java
index bce2791..80409ce 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/MatchingRuleConfigManager.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/MatchingRuleConfigManager.java
@@ -26,6 +26,9 @@
  */
 package org.opends.server.core;
 
+import static org.opends.messages.ConfigMessages.*;
+import static org.opends.server.util.StaticUtils.*;
+
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
@@ -34,7 +37,6 @@
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
 import org.forgerock.opendj.config.server.ConfigException;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.forgerock.opendj.ldap.schema.MatchingRule;
 import org.forgerock.util.Utils;
 import org.opends.server.admin.ClassPropertyDefinition;
@@ -53,9 +55,6 @@
 import org.opends.server.types.InitializationException;
 import org.opends.server.types.MatchingRuleUse;
 
-import static org.opends.messages.ConfigMessages.*;
-import static org.opends.server.util.StaticUtils.*;
-
 /**
  * This class defines a utility that will be used to manage the set of matching
  * rules defined in the Directory Server.  It wil initialize the rules when the
@@ -183,15 +182,13 @@
   @Override
   public ConfigChangeResult applyConfigurationAdd(MatchingRuleCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     configuration.addChangeListener(this);
 
     if (! configuration.isEnabled())
     {
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
     MatchingRuleFactory<?> factory = null;
@@ -203,36 +200,25 @@
     {
       factory = loadMatchingRuleFactory(className, configuration, true);
 
-      try
+      for (MatchingRule matchingRule: factory.getMatchingRules())
       {
-        for(MatchingRule matchingRule: factory.getMatchingRules())
-        {
-          DirectoryServer.registerMatchingRule(matchingRule, false);
-        }
-        matchingRuleFactories.put(configuration.dn(),factory);
+        DirectoryServer.registerMatchingRule(matchingRule, false);
       }
-      catch (DirectoryException de)
-      {
-        messages.add(WARN_CONFIG_SCHEMA_MR_CONFLICTING_MR.get(
-            configuration.dn(), de.getMessageObject()));
-
-        if (resultCode == ResultCode.SUCCESS)
-        {
-          resultCode = DirectoryServer.getServerErrorResultCode();
-        }
-      }
+      matchingRuleFactories.put(configuration.dn(),factory);
+    }
+    catch (DirectoryException de)
+    {
+      ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(WARN_CONFIG_SCHEMA_MR_CONFLICTING_MR.get(
+          configuration.dn(), de.getMessageObject()));
     }
     catch (InitializationException ie)
     {
-      if (resultCode == ResultCode.SUCCESS)
-      {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-      }
-
-      messages.add(ie.getMessageObject());
+      ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ie.getMessageObject());
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
@@ -301,9 +287,7 @@
   @Override
   public ConfigChangeResult applyConfigurationDelete(MatchingRuleCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     MatchingRuleFactory<?> factory = matchingRuleFactories.remove(configuration.dn());
     if (factory != null)
@@ -315,7 +299,7 @@
       factory.finalizeMatchingRule();
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
@@ -406,9 +390,7 @@
   public ConfigChangeResult applyConfigurationChange(
                                  MatchingRuleCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
 
    // Get the existing matching rule factory if it's already enabled.
@@ -429,7 +411,7 @@
         matchingRuleFactories.remove(configuration.dn());
         existingFactory.finalizeMatchingRule();
       }
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
 
@@ -443,10 +425,10 @@
     {
       if (! className.equals(existingFactory.getClass().getName()))
       {
-        adminActionRequired = true;
+        ccr.setAdminActionRequired(true);
       }
 
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
     MatchingRuleFactory<?> factory = null;
@@ -454,35 +436,24 @@
     {
       factory = loadMatchingRuleFactory(className, configuration, true);
 
-      try
+      for (MatchingRule matchingRule: factory.getMatchingRules())
       {
-        for(MatchingRule matchingRule: factory.getMatchingRules())
-        {
-          DirectoryServer.registerMatchingRule(matchingRule, false);
-        }
-        matchingRuleFactories.put(configuration.dn(), factory);
+        DirectoryServer.registerMatchingRule(matchingRule, false);
       }
-      catch (DirectoryException de)
-      {
-        messages.add(WARN_CONFIG_SCHEMA_MR_CONFLICTING_MR.get(configuration.dn(), de.getMessageObject()));
-
-        if (resultCode == ResultCode.SUCCESS)
-        {
-          resultCode = DirectoryServer.getServerErrorResultCode();
-        }
-      }
+      matchingRuleFactories.put(configuration.dn(), factory);
+    }
+    catch (DirectoryException de)
+    {
+      ccr.addMessage(WARN_CONFIG_SCHEMA_MR_CONFLICTING_MR.get(configuration.dn(), de.getMessageObject()));
+      ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
     }
     catch (InitializationException ie)
     {
-      if (resultCode == ResultCode.SUCCESS)
-      {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-      }
-
-      messages.add(ie.getMessageObject());
+      ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ie.getMessageObject());
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/MonitorConfigManager.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/MonitorConfigManager.java
index 5756549..06607d7 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/MonitorConfigManager.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/MonitorConfigManager.java
@@ -26,32 +26,28 @@
  */
 package org.opends.server.core;
 
-import org.forgerock.i18n.LocalizableMessage;
-import org.forgerock.i18n.slf4j.LocalizedLogger;
+import static org.opends.messages.ConfigMessages.*;
+import static org.opends.server.util.StaticUtils.*;
 
-import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.ConcurrentHashMap;
 
+import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.server.admin.ClassPropertyDefinition;
 import org.opends.server.admin.server.ConfigurationAddListener;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.server.ConfigurationDeleteListener;
+import org.opends.server.admin.server.ServerManagementContext;
 import org.opends.server.admin.std.meta.MonitorProviderCfgDefn;
 import org.opends.server.admin.std.server.MonitorProviderCfg;
 import org.opends.server.admin.std.server.RootCfg;
-import org.opends.server.admin.server.ServerManagementContext;
 import org.opends.server.api.MonitorProvider;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.DN;
 import org.opends.server.types.InitializationException;
-import org.forgerock.opendj.ldap.ResultCode;
-
-import static org.opends.messages.ConfigMessages.*;
-import static org.opends.server.util.StaticUtils.*;
-
-
 
 /**
  * This class defines a utility that will be used to manage the set of monitor
@@ -146,6 +142,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationAddAcceptable(
                       MonitorProviderCfg configuration,
                       List<LocalizableMessage> unacceptableReasons)
@@ -175,18 +172,17 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public ConfigChangeResult applyConfigurationAdd(
                                  MonitorProviderCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     configuration.addChangeListener(this);
 
     if (! configuration.isEnabled())
     {
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
     MonitorProvider<? extends MonitorProviderCfg> monitor = null;
@@ -200,21 +196,17 @@
     }
     catch (InitializationException ie)
     {
-      if (resultCode == ResultCode.SUCCESS)
-      {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-      }
-
-      messages.add(ie.getMessageObject());
+      ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ie.getMessageObject());
     }
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       monitors.put(configuration.dn(), monitor);
       DirectoryServer.registerMonitorProvider(monitor);
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
@@ -222,6 +214,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationDeleteAcceptable(
                       MonitorProviderCfg configuration,
                       List<LocalizableMessage> unacceptableReasons)
@@ -235,12 +228,11 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public ConfigChangeResult applyConfigurationDelete(
                                  MonitorProviderCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     MonitorProvider<?> monitor = monitors.remove(configuration.dn());
     if (monitor != null)
@@ -249,7 +241,7 @@
       monitor.finalizeMonitorProvider();
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
@@ -257,6 +249,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationChangeAcceptable(
                       MonitorProviderCfg configuration,
                       List<LocalizableMessage> unacceptableReasons)
@@ -286,13 +279,11 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public ConfigChangeResult applyConfigurationChange(
                                  MonitorProviderCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
-
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     // Get the existing monitor provider if it's already enabled.
     MonitorProvider<?> existingMonitor = monitors.get(configuration.dn());
@@ -311,7 +302,7 @@
         }
       }
 
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
 
@@ -325,10 +316,10 @@
     {
       if (! className.equals(existingMonitor.getClass().getName()))
       {
-        adminActionRequired = true;
+        ccr.setAdminActionRequired(true);
       }
 
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
     MonitorProvider<? extends MonitorProviderCfg> monitor = null;
@@ -338,21 +329,17 @@
     }
     catch (InitializationException ie)
     {
-      if (resultCode == ResultCode.SUCCESS)
-      {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-      }
-
-      messages.add(ie.getMessageObject());
+      ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ie.getMessageObject());
     }
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       monitors.put(configuration.dn(), monitor);
       DirectoryServer.registerMonitorProvider(monitor);
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/PasswordGeneratorConfigManager.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/PasswordGeneratorConfigManager.java
index f067737..747a18a 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/PasswordGeneratorConfigManager.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/PasswordGeneratorConfigManager.java
@@ -26,14 +26,18 @@
  */
 package org.opends.server.core;
 
-import org.forgerock.i18n.LocalizableMessage;
-import org.forgerock.i18n.slf4j.LocalizedLogger;
-import org.forgerock.util.Utils;
+import static org.opends.messages.ConfigMessages.*;
+import static org.opends.server.util.StaticUtils.*;
 
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.ConcurrentHashMap;
 
+import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.util.Utils;
 import org.opends.server.admin.ClassPropertyDefinition;
 import org.opends.server.admin.server.ConfigurationAddListener;
 import org.opends.server.admin.server.ConfigurationChangeListener;
@@ -43,14 +47,9 @@
 import org.opends.server.admin.std.server.PasswordGeneratorCfg;
 import org.opends.server.admin.std.server.RootCfg;
 import org.opends.server.api.PasswordGenerator;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.DN;
 import org.opends.server.types.InitializationException;
-import org.forgerock.opendj.ldap.ResultCode;
-
-import static org.opends.messages.ConfigMessages.*;
-import static org.opends.server.util.StaticUtils.*;
 
 /**
  * This class defines a utility that will be used to manage the set of password
@@ -145,6 +144,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationChangeAcceptable(
                       PasswordGeneratorCfg configuration,
                       List<LocalizableMessage> unacceptableReasons)
@@ -173,12 +173,11 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public ConfigChangeResult applyConfigurationChange(
                                  PasswordGeneratorCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
 
     // Get the existing generator if it's already enabled.
@@ -202,7 +201,7 @@
         }
       }
 
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
 
@@ -216,10 +215,10 @@
     {
       if (! className.equals(existingGenerator.getClass().getName()))
       {
-        adminActionRequired = true;
+        ccr.setAdminActionRequired(true);
       }
 
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
     PasswordGenerator<? extends PasswordGeneratorCfg>
@@ -230,26 +229,23 @@
     }
     catch (InitializationException ie)
     {
-      if (resultCode == ResultCode.SUCCESS)
-      {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-      }
-
-      messages.add(ie.getMessageObject());
+      ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ie.getMessageObject());
     }
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       passwordGenerators.put(configuration.dn(), passwordGenerator);
       DirectoryServer.registerPasswordGenerator(configuration.dn(),
                                                 passwordGenerator);
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationAddAcceptable(
                       PasswordGeneratorCfg configuration,
                       List<LocalizableMessage> unacceptableReasons)
@@ -278,18 +274,17 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public ConfigChangeResult applyConfigurationAdd(
                                  PasswordGeneratorCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     configuration.addChangeListener(this);
 
     if (! configuration.isEnabled())
     {
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
     PasswordGenerator<? extends PasswordGeneratorCfg>
@@ -304,27 +299,24 @@
     }
     catch (InitializationException ie)
     {
-      if (resultCode == ResultCode.SUCCESS)
-      {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-      }
-
-      messages.add(ie.getMessageObject());
+      ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ie.getMessageObject());
     }
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       passwordGenerators.put(configuration.dn(), passwordGenerator);
       DirectoryServer.registerPasswordGenerator(configuration.dn(),
                                                 passwordGenerator);
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationDeleteAcceptable(
       PasswordGeneratorCfg configuration, List<LocalizableMessage> unacceptableReasons)
   {
@@ -336,15 +328,14 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public ConfigChangeResult applyConfigurationDelete(
       PasswordGeneratorCfg configuration)
   {
-    ResultCode resultCode          = ResultCode.SUCCESS;
-    boolean    adminActionRequired = false;
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
-
-    // See if the entry is registered as a password generator.  If so,
-    // deregister it and stop the generator.
+    // See if the entry is registered as a password generator.
+    // If so, deregister it and stop the generator.
     PasswordGenerator generator = passwordGenerators.remove(configuration.dn());
     if (generator != null)
     {
@@ -353,8 +344,7 @@
       generator.finalizePasswordGenerator();
     }
 
-
-    return new ConfigChangeResult(resultCode, adminActionRequired);
+    return ccr;
   }
 
   /**
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/PasswordPolicyConfigManager.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/PasswordPolicyConfigManager.java
index 5347712..a50c259 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/PasswordPolicyConfigManager.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/PasswordPolicyConfigManager.java
@@ -26,12 +26,15 @@
  */
 package org.opends.server.core;
 
+import static org.opends.messages.ConfigMessages.*;
+import static org.opends.server.util.StaticUtils.*;
+
 import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
 import java.util.List;
 
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.config.server.ConfigException;
 import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.server.admin.ClassPropertyDefinition;
 import org.opends.server.admin.server.ConfigurationAddListener;
@@ -44,12 +47,8 @@
 import org.opends.server.api.AuthenticationPolicy;
 import org.opends.server.api.AuthenticationPolicyFactory;
 import org.opends.server.api.SubentryChangeListener;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.types.*;
 
-import static org.opends.messages.ConfigMessages.*;
-import static org.opends.server.util.StaticUtils.*;
-
 /**
  * This class defines a utility that will be used to manage the set of password
  * policies defined in the Directory Server. It will initialize the policies
@@ -205,32 +204,32 @@
    * {@inheritDoc}
    */
   @Override
-  public ConfigChangeResult applyConfigurationAdd(
-      AuthenticationPolicyCfg configuration)
+  public ConfigChangeResult applyConfigurationAdd(AuthenticationPolicyCfg configuration)
   {
     // See if we can create a password policy from the provided configuration
     // entry. If so, then register it with the Directory Server.
-    ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
     try
     {
       createAuthenticationPolicy(configuration);
-      return new ConfigChangeResult(ResultCode.SUCCESS, false, messages);
     }
     catch (ConfigException ce)
     {
-      messages.add(ERR_CONFIG_PWPOLICY_INVALID_POLICY_CONFIG.get(configuration.dn(), ce.getMessage()));
-      return new ConfigChangeResult(ResultCode.CONSTRAINT_VIOLATION, false, messages);
+      ccr.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
+      ccr.addMessage(ERR_CONFIG_PWPOLICY_INVALID_POLICY_CONFIG.get(configuration.dn(), ce.getMessage()));
     }
     catch (InitializationException ie)
     {
-      messages.add(ERR_CONFIG_PWPOLICY_INVALID_POLICY_CONFIG.get(configuration.dn(), ie.getMessage()));
-      return new ConfigChangeResult(DirectoryServer.getServerErrorResultCode(), false, messages);
+      ccr.addMessage(ERR_CONFIG_PWPOLICY_INVALID_POLICY_CONFIG.get(configuration.dn(), ie.getMessage()));
+      ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
     }
     catch (Exception e)
     {
-      messages.add(ERR_CONFIG_PWPOLICY_INVALID_POLICY_CONFIG.get(configuration.dn(), stackTraceToSingleLineString(e)));
-      return new ConfigChangeResult(DirectoryServer.getServerErrorResultCode(), false, messages);
+      ccr.addMessage(ERR_CONFIG_PWPOLICY_INVALID_POLICY_CONFIG.get(
+          configuration.dn(), stackTraceToSingleLineString(e)));
+      ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
     }
+    return ccr;
   }
 
 
@@ -247,15 +246,12 @@
     // a policy is not removed when referenced by a user entry (either
     // directly or via a virtual attribute).
     DN defaultPolicyDN = DirectoryServer.getDefaultPasswordPolicyDN();
-    if ((defaultPolicyDN != null) && defaultPolicyDN.equals(configuration.dn()))
+    if (defaultPolicyDN != null && defaultPolicyDN.equals(configuration.dn()))
     {
       unacceptableReason.add(WARN_CONFIG_PWPOLICY_CANNOT_DELETE_DEFAULT_POLICY.get(defaultPolicyDN));
       return false;
     }
-    else
-    {
-      return true;
-    }
+    return true;
   }
 
 
@@ -264,25 +260,24 @@
    * {@inheritDoc}
    */
   @Override
-  public ConfigChangeResult applyConfigurationDelete(
-      AuthenticationPolicyCfg configuration)
+  public ConfigChangeResult applyConfigurationDelete(AuthenticationPolicyCfg configuration)
   {
     // We'll allow the policy to be removed as long as it isn't the default.
     // FIXME: something like a referential integrity check is needed to ensure
     // a policy is not removed when referenced by a user entry (either
     // directly or via a virtual attribute).
-    ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>(1);
+    final ConfigChangeResult ccr = new ConfigChangeResult();
     DN policyDN = configuration.dn();
     DN defaultPolicyDN = DirectoryServer.getDefaultPasswordPolicyDN();
-    if ((defaultPolicyDN != null) && defaultPolicyDN.equals(policyDN))
+    if (defaultPolicyDN != null && defaultPolicyDN.equals(policyDN))
     {
-      messages.add(WARN_CONFIG_PWPOLICY_CANNOT_DELETE_DEFAULT_POLICY.get(defaultPolicyDN));
-      return new ConfigChangeResult(ResultCode.CONSTRAINT_VIOLATION, false, messages);
+      ccr.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
+      ccr.addMessage(WARN_CONFIG_PWPOLICY_CANNOT_DELETE_DEFAULT_POLICY.get(defaultPolicyDN));
+      return ccr;
     }
     DirectoryServer.deregisterAuthenticationPolicy(policyDN);
-    messages.add(INFO_CONFIG_PWPOLICY_REMOVED_POLICY.get(policyDN));
-
-    return new ConfigChangeResult(ResultCode.SUCCESS, false, messages);
+    ccr.addMessage(INFO_CONFIG_PWPOLICY_REMOVED_POLICY.get(policyDN));
+    return ccr;
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/PasswordPolicyFactory.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/PasswordPolicyFactory.java
index bd80e7b..a587622 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/PasswordPolicyFactory.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/PasswordPolicyFactory.java
@@ -32,26 +32,22 @@
 import static org.opends.messages.CoreMessages.*;
 import static org.opends.server.schema.SchemaConstants.*;
 import static org.opends.server.util.ServerConstants.*;
-import static org.opends.server.util.StaticUtils.getExceptionMessage;
-import static org.opends.server.util.StaticUtils.stackTraceToSingleLineString;
-import static org.opends.server.util.StaticUtils.toLowerCase;
+import static org.opends.server.util.StaticUtils.*;
 
 import java.text.SimpleDateFormat;
 import java.util.*;
 
 import org.forgerock.i18n.LocalizableMessage;
-import org.opends.server.admin.server.ConfigurationChangeListener;
-import org.opends.server.admin.std.meta.PasswordPolicyCfgDefn.*;
-import org.opends.server.admin.std.server.PasswordPolicyCfg;
-import org.opends.server.api.*;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
-import org.opends.server.types.*;
+import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.opendj.ldap.ByteString;
 import org.forgerock.opendj.ldap.GeneralizedTime;
 import org.forgerock.opendj.ldap.ResultCode;
-import org.forgerock.opendj.ldap.ByteString;
-
-
+import org.opends.server.admin.server.ConfigurationChangeListener;
+import org.opends.server.admin.std.meta.PasswordPolicyCfgDefn.StateUpdateFailurePolicy;
+import org.opends.server.admin.std.server.PasswordPolicyCfg;
+import org.opends.server.api.*;
+import org.opends.server.types.*;
 
 /**
  * This class is the interface between the password policy configurable
@@ -109,44 +105,39 @@
     /**
      * {@inheritDoc}
      */
+    @Override
     public void finalizeAuthenticationPolicy()
     {
       configuration.removePasswordPolicyChangeListener(this);
     }
 
-
-
-    /**
-     * {@inheritDoc}
-     */
-    public ConfigChangeResult applyConfigurationChange(
-        PasswordPolicyCfg configuration)
+    /** {@inheritDoc} */
+    @Override
+    public ConfigChangeResult applyConfigurationChange(PasswordPolicyCfg configuration)
     {
-      ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+      final ConfigChangeResult ccr = new ConfigChangeResult();
       try
       {
         updateConfiguration(configuration, true);
-        return new ConfigChangeResult(ResultCode.SUCCESS, false, messages);
       }
       catch (ConfigException ce)
       {
-        messages.add(ERR_CONFIG_PWPOLICY_INVALID_POLICY_CONFIG.get(configuration.dn(), ce.getMessage()));
-        return new ConfigChangeResult(ResultCode.CONSTRAINT_VIOLATION, false, messages);
+        ccr.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
+        ccr.addMessage(ERR_CONFIG_PWPOLICY_INVALID_POLICY_CONFIG.get(configuration.dn(), ce.getMessage()));
       }
       catch (InitializationException ie)
       {
-        messages.add(ERR_CONFIG_PWPOLICY_INVALID_POLICY_CONFIG.get(
+        ccr.addMessage(ERR_CONFIG_PWPOLICY_INVALID_POLICY_CONFIG.get(
             configuration.dn(), ie.getMessage()));
-        return new ConfigChangeResult(
-            DirectoryServer.getServerErrorResultCode(), false, messages);
+        ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
       }
       catch (Exception e)
       {
-        messages.add(ERR_CONFIG_PWPOLICY_INVALID_POLICY_CONFIG.get(
+        ccr.addMessage(ERR_CONFIG_PWPOLICY_INVALID_POLICY_CONFIG.get(
             configuration.dn(), stackTraceToSingleLineString(e)));
-        return new ConfigChangeResult(
-            DirectoryServer.getServerErrorResultCode(), false, messages);
+        ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
       }
+      return ccr;
     }
 
 
@@ -154,6 +145,7 @@
     /**
      * {@inheritDoc}
      */
+    @Override
     public boolean isConfigurationChangeAcceptable(
         PasswordPolicyCfg configuration, List<LocalizableMessage> unacceptableReasons)
     {
@@ -456,6 +448,7 @@
     /**
      * {@inheritDoc}
      */
+    @Override
     public Set<String> getDeprecatedPasswordStorageSchemes()
     {
       return deprecatedStorageSchemes;
@@ -466,6 +459,7 @@
     /**
      * {@inheritDoc}
      */
+    @Override
     public DN getDN()
     {
       return configuration.dn();
@@ -563,6 +557,7 @@
      *
      * @return A string representation of this password policy.
      */
+    @Override
     public String toString()
     {
       StringBuilder buffer = new StringBuilder();
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/PasswordStorageSchemeConfigManager.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/PasswordStorageSchemeConfigManager.java
index 91f45ab..d8179be 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/PasswordStorageSchemeConfigManager.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/PasswordStorageSchemeConfigManager.java
@@ -26,9 +26,6 @@
  */
 package org.opends.server.core;
 
-import org.forgerock.i18n.LocalizableMessage;
-import org.forgerock.util.Utils;
-
 import static org.opends.messages.ConfigMessages.*;
 import static org.opends.server.util.StaticUtils.*;
 
@@ -36,6 +33,9 @@
 import java.util.List;
 import java.util.concurrent.ConcurrentHashMap;
 
+import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.util.Utils;
 import org.opends.server.admin.ClassPropertyDefinition;
 import org.opends.server.admin.server.ConfigurationAddListener;
 import org.opends.server.admin.server.ConfigurationChangeListener;
@@ -45,11 +45,9 @@
 import org.opends.server.admin.std.server.PasswordStorageSchemeCfg;
 import org.opends.server.admin.std.server.RootCfg;
 import org.opends.server.api.PasswordStorageScheme;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.DN;
 import org.opends.server.types.InitializationException;
-import org.forgerock.opendj.ldap.ResultCode;
 
 /**
  * This class defines a utility that will be used to manage the set of password
@@ -138,6 +136,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationChangeAcceptable(
       PasswordStorageSchemeCfg configuration,
       List<LocalizableMessage> unacceptableReasons
@@ -171,21 +170,17 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public ConfigChangeResult applyConfigurationChange(
       PasswordStorageSchemeCfg configuration
       )
   {
-    // Returned result.
-    ConfigChangeResult changeResult = new ConfigChangeResult(
-        ResultCode.SUCCESS, false, new ArrayList<LocalizableMessage>()
-        );
+    final ConfigChangeResult changeResult = new ConfigChangeResult();
 
     // Get the configuration entry DN and the associated
     // password storage scheme class.
     DN configEntryDN = configuration.dn();
-    PasswordStorageScheme storageScheme = storageSchemes.get(
-        configEntryDN
-        );
+    PasswordStorageScheme storageScheme = storageSchemes.get(configEntryDN);
 
     // If the new configuration has the password storage scheme disabled,
     // then remove it from the mapping list and clean it.
@@ -236,6 +231,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationAddAcceptable(
       PasswordStorageSchemeCfg configuration,
       List<LocalizableMessage> unacceptableReasons
@@ -278,14 +274,12 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public ConfigChangeResult applyConfigurationAdd(
       PasswordStorageSchemeCfg configuration
       )
   {
-    // Returned result.
-    ConfigChangeResult changeResult = new ConfigChangeResult(
-        ResultCode.SUCCESS, false, new ArrayList<LocalizableMessage>()
-        );
+    final ConfigChangeResult changeResult = new ConfigChangeResult();
 
     // Register a change listener with it so we can be notified of changes
     // to it over time.
@@ -316,6 +310,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationDeleteAcceptable(
       PasswordStorageSchemeCfg configuration,
       List<LocalizableMessage> unacceptableReasons
@@ -330,14 +325,12 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public ConfigChangeResult applyConfigurationDelete(
       PasswordStorageSchemeCfg configuration
       )
   {
-    // Returned result.
-    ConfigChangeResult changeResult = new ConfigChangeResult(
-        ResultCode.SUCCESS, false, new ArrayList<LocalizableMessage>()
-        );
+    final ConfigChangeResult changeResult = new ConfigChangeResult();
 
     uninstallPasswordStorageScheme (configuration.dn());
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/PasswordValidatorConfigManager.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/PasswordValidatorConfigManager.java
index cda6f04..b289bb6 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/PasswordValidatorConfigManager.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/PasswordValidatorConfigManager.java
@@ -26,31 +26,30 @@
  */
 package org.opends.server.core;
 
-import org.forgerock.i18n.LocalizableMessage;
-import org.forgerock.i18n.slf4j.LocalizedLogger;
-import org.forgerock.util.Utils;
+import static org.opends.messages.ConfigMessages.*;
+import static org.opends.server.util.StaticUtils.*;
 
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.ConcurrentHashMap;
 
+import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.util.Utils;
 import org.opends.server.admin.ClassPropertyDefinition;
 import org.opends.server.admin.server.ConfigurationAddListener;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.server.ConfigurationDeleteListener;
+import org.opends.server.admin.server.ServerManagementContext;
 import org.opends.server.admin.std.meta.PasswordValidatorCfgDefn;
 import org.opends.server.admin.std.server.PasswordValidatorCfg;
 import org.opends.server.admin.std.server.RootCfg;
-import org.opends.server.admin.server.ServerManagementContext;
 import org.opends.server.api.PasswordValidator;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.DN;
 import org.opends.server.types.InitializationException;
-import org.forgerock.opendj.ldap.ResultCode;
-
-import static org.opends.messages.ConfigMessages.*;
-import static org.opends.server.util.StaticUtils.*;
 
 /**
  * This class defines a utility that will be used to manage the set of
@@ -149,6 +148,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationAddAcceptable(
                       PasswordValidatorCfg configuration,
                       List<LocalizableMessage> unacceptableReasons)
@@ -178,18 +178,17 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public ConfigChangeResult applyConfigurationAdd(
                                  PasswordValidatorCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     configuration.addChangeListener(this);
 
     if (! configuration.isEnabled())
     {
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
     PasswordValidator<? extends PasswordValidatorCfg>
@@ -204,22 +203,17 @@
     }
     catch (InitializationException ie)
     {
-      if (resultCode == ResultCode.SUCCESS)
-      {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-      }
-
-      messages.add(ie.getMessageObject());
+      ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ie.getMessageObject());
     }
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       passwordValidators.put(configuration.dn(), passwordValidator);
-      DirectoryServer.registerPasswordValidator(configuration.dn(),
-                                                passwordValidator);
+      DirectoryServer.registerPasswordValidator(configuration.dn(), passwordValidator);
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
@@ -227,6 +221,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationDeleteAcceptable(
                       PasswordValidatorCfg configuration,
                       List<LocalizableMessage> unacceptableReasons)
@@ -241,12 +236,11 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public ConfigChangeResult applyConfigurationDelete(
                                  PasswordValidatorCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     DirectoryServer.deregisterPasswordValidator(configuration.dn());
 
@@ -257,7 +251,7 @@
       passwordValidator.finalizePasswordValidator();
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
@@ -265,6 +259,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationChangeAcceptable(
                       PasswordValidatorCfg configuration,
                       List<LocalizableMessage> unacceptableReasons)
@@ -294,12 +289,11 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public ConfigChangeResult applyConfigurationChange(
                                  PasswordValidatorCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
 
     // Get the existing validator if it's already enabled.
@@ -323,7 +317,7 @@
         }
       }
 
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
 
@@ -337,10 +331,10 @@
     {
       if (! className.equals(existingValidator.getClass().getName()))
       {
-        adminActionRequired = true;
+        ccr.setAdminActionRequired(true);
       }
 
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
     PasswordValidator<? extends PasswordValidatorCfg>
@@ -351,22 +345,17 @@
     }
     catch (InitializationException ie)
     {
-      if (resultCode == ResultCode.SUCCESS)
-      {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-      }
-
-      messages.add(ie.getMessageObject());
+      ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ie.getMessageObject());
     }
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       passwordValidators.put(configuration.dn(), passwordValidator);
-      DirectoryServer.registerPasswordValidator(configuration.dn(),
-                                                passwordValidator);
+      DirectoryServer.registerPasswordValidator(configuration.dn(), passwordValidator);
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/PluginConfigManager.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/PluginConfigManager.java
index 5386c6c..c31e564 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/PluginConfigManager.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/PluginConfigManager.java
@@ -26,12 +26,18 @@
  */
 package org.opends.server.core;
 
+import static org.opends.messages.ConfigMessages.*;
+import static org.opends.messages.PluginMessages.*;
+import static org.opends.server.util.StaticUtils.*;
+
 import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.locks.ReentrantLock;
 
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.opendj.ldap.ResultCode;
 import org.forgerock.util.Utils;
 import org.opends.server.admin.ClassPropertyDefinition;
 import org.opends.server.admin.server.ConfigurationAddListener;
@@ -47,15 +53,9 @@
 import org.opends.server.api.plugin.InternalDirectoryServerPlugin;
 import org.opends.server.api.plugin.PluginResult;
 import org.opends.server.api.plugin.PluginType;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.types.*;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.server.types.operation.*;
 
-import static org.opends.messages.ConfigMessages.*;
-import static org.opends.messages.PluginMessages.*;
-import static org.opends.server.util.StaticUtils.*;
-
 /**
  * This class defines a utility that will be used to manage the configuration
  * for the set of plugins defined in the Directory Server.  It will perform the
@@ -4751,15 +4751,13 @@
   public ConfigChangeResult applyConfigurationAdd(
                                  PluginCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     configuration.addChangeListener(this);
 
     if (! configuration.isEnabled())
     {
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
     // Create a set of plugin types for the plugin.
@@ -4780,20 +4778,16 @@
     }
     catch (InitializationException ie)
     {
-      if (resultCode == ResultCode.SUCCESS)
-      {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-      }
-
-      messages.add(ie.getMessageObject());
+      ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ie.getMessageObject());
     }
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       registerPlugin(plugin, configuration.dn(), pluginTypes);
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
@@ -4819,13 +4813,11 @@
   public ConfigChangeResult applyConfigurationDelete(
                                  PluginCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     deregisterPlugin(configuration.dn());
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
@@ -4875,9 +4867,7 @@
   public ConfigChangeResult applyConfigurationChange(
                                  PluginCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
 
     // Get the existing plugin if it's already enabled.
@@ -4894,7 +4884,7 @@
         deregisterPlugin(configuration.dn());
       }
 
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
 
@@ -4909,13 +4899,13 @@
     {
       if (! className.equals(existingPlugin.getClass().getName()))
       {
-        adminActionRequired = true;
+        ccr.setAdminActionRequired(true);
       }
 
       existingPlugin.setInvokeForInternalOperations(
                           configuration.isInvokeForInternalOperations());
 
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
     // Create a set of plugin types for the plugin.
@@ -4933,20 +4923,16 @@
     }
     catch (InitializationException ie)
     {
-      if (resultCode == ResultCode.SUCCESS)
-      {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-      }
-
-      messages.add(ie.getMessageObject());
+      ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ie.getMessageObject());
     }
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       registerPlugin(plugin, configuration.dn(), pluginTypes);
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
   private void registerSkippedPreOperationPlugins(int i,
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/RootDNConfigManager.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/RootDNConfigManager.java
index f4ae0d4..2e26952 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/RootDNConfigManager.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/RootDNConfigManager.java
@@ -25,36 +25,28 @@
  *      Portions Copyright 2014 ForgeRock AS
  */
 package org.opends.server.core;
-import org.forgerock.i18n.LocalizableMessage;
+import static org.opends.messages.ConfigMessages.*;
 
-
-
-
-
-import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 
+import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.server.admin.server.ConfigurationAddListener;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.server.ConfigurationDeleteListener;
+import org.opends.server.admin.server.ServerManagementContext;
 import org.opends.server.admin.std.server.RootCfg;
 import org.opends.server.admin.std.server.RootDNCfg;
 import org.opends.server.admin.std.server.RootDNUserCfg;
-import org.opends.server.admin.server.ServerManagementContext;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.types.ConfigChangeResult;
-import org.opends.server.types.DirectoryException;
 import org.opends.server.types.DN;
+import org.opends.server.types.DirectoryException;
 import org.opends.server.types.InitializationException;
 import org.opends.server.types.Privilege;
-import org.forgerock.opendj.ldap.ResultCode;
-
-import static org.opends.messages.ConfigMessages.*;
-
-
 
 /**
  * This class defines a utility that will be used to manage the set of root
@@ -171,6 +163,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationAddAcceptable(RootDNUserCfg configuration,
                                               List<LocalizableMessage> unacceptableReasons)
   {
@@ -196,13 +189,12 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public ConfigChangeResult applyConfigurationAdd(RootDNUserCfg configuration)
   {
     configuration.addChangeListener(this);
 
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     HashSet<DN> altBindDNs = new HashSet<DN>();
     for (DN altBindDN : configuration.getAlternateBindDN())
@@ -216,8 +208,8 @@
       {
         // This shouldn't happen, since the set of DNs should have already been
         // validated.
-        resultCode = DirectoryServer.getServerErrorResultCode();
-        messages.add(de.getMessageObject());
+        ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+        ccr.addMessage(de.getMessageObject());
 
         for (DN dn : altBindDNs)
         {
@@ -227,13 +219,13 @@
       }
     }
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       DirectoryServer.registerRootDN(configuration.dn());
       alternateBindDNs.put(configuration.dn(), altBindDNs);
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
@@ -241,6 +233,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationDeleteAcceptable(RootDNUserCfg configuration,
                       List<LocalizableMessage> unacceptableReasons)
   {
@@ -252,15 +245,14 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public ConfigChangeResult applyConfigurationDelete(
                                  RootDNUserCfg configuration)
   {
     DirectoryServer.deregisterRootDN(configuration.dn());
     configuration.removeChangeListener(this);
 
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     HashSet<DN> altBindDNs = alternateBindDNs.remove(configuration.dn());
     if (altBindDNs != null)
@@ -271,7 +263,7 @@
       }
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
@@ -279,6 +271,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationChangeAcceptable(RootDNUserCfg configuration,
                       List<LocalizableMessage> unacceptableReasons)
   {
@@ -306,12 +299,11 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public ConfigChangeResult applyConfigurationChange(
                                  RootDNUserCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     HashSet<DN> setDNs = new HashSet<DN>();
     HashSet<DN> addDNs = new HashSet<DN>();
@@ -345,8 +337,8 @@
       {
         // This shouldn't happen, since the set of DNs should have already been
         // validated.
-        resultCode = DirectoryServer.getServerErrorResultCode();
-        messages.add(de.getMessageObject());
+        ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+        ccr.addMessage(de.getMessageObject());
 
         for (DN addedDN : addedDNs)
         {
@@ -369,12 +361,12 @@
       }
     }
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       alternateBindDNs.put(configuration.dn(), setDNs);
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 }
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/RootPrivilegeChangeListener.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/RootPrivilegeChangeListener.java
index dec2b08..bf01ab9 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/RootPrivilegeChangeListener.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/RootPrivilegeChangeListener.java
@@ -25,22 +25,17 @@
  *      Portions Copyright 2014 ForgeRock AS
  */
 package org.opends.server.core;
-import org.forgerock.i18n.LocalizableMessage;
-
-
 
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
+import org.forgerock.i18n.LocalizableMessage;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.std.meta.RootDNCfgDefn;
 import org.opends.server.admin.std.server.RootDNCfg;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.Privilege;
-import org.forgerock.opendj.ldap.ResultCode;
-
-
 
 /**
  * This class defines a data structure that is used to handle changes to the set
@@ -67,6 +62,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationChangeAcceptable(RootDNCfg configuration,
                       List<LocalizableMessage> unacceptableReasons)
   {
@@ -79,14 +75,13 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public ConfigChangeResult applyConfigurationChange(RootDNCfg configuration)
   {
     setDefaultRootPrivileges(configuration);
-    return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    return new ConfigChangeResult();
   }
 
-
-
   /**
    * Retrieves the set of privileges that will be automatically granted to root
    * users.
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/SASLConfigManager.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/SASLConfigManager.java
index 13d5fc1..780ecdc 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/SASLConfigManager.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/SASLConfigManager.java
@@ -26,31 +26,30 @@
  */
 package org.opends.server.core;
 
-import org.forgerock.i18n.LocalizableMessage;
-import org.forgerock.i18n.slf4j.LocalizedLogger;
-import org.forgerock.util.Utils;
+import static org.opends.messages.ConfigMessages.*;
+import static org.opends.server.util.StaticUtils.*;
 
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.ConcurrentHashMap;
 
+import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.util.Utils;
 import org.opends.server.admin.ClassPropertyDefinition;
 import org.opends.server.admin.server.ConfigurationAddListener;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.server.ConfigurationDeleteListener;
-import org.opends.server.admin.std.meta.SASLMechanismHandlerCfgDefn;
-import org.opends.server.admin.std.server.SASLMechanismHandlerCfg;
-import org.opends.server.admin.std.server.RootCfg;
 import org.opends.server.admin.server.ServerManagementContext;
+import org.opends.server.admin.std.meta.SASLMechanismHandlerCfgDefn;
+import org.opends.server.admin.std.server.RootCfg;
+import org.opends.server.admin.std.server.SASLMechanismHandlerCfg;
 import org.opends.server.api.SASLMechanismHandler;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.DN;
 import org.opends.server.types.InitializationException;
-import org.forgerock.opendj.ldap.ResultCode;
-
-import static org.opends.messages.ConfigMessages.*;
-import static org.opends.server.util.StaticUtils.*;
 
 /**
  * This class defines a utility that will be used to manage the set of SASL
@@ -149,6 +148,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationAddAcceptable(
                       SASLMechanismHandlerCfg configuration,
                       List<LocalizableMessage> unacceptableReasons)
@@ -178,18 +178,17 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public ConfigChangeResult applyConfigurationAdd(
               SASLMechanismHandlerCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     configuration.addChangeListener(this);
 
     if (! configuration.isEnabled())
     {
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
     SASLMechanismHandler handler = null;
@@ -203,20 +202,16 @@
     }
     catch (InitializationException ie)
     {
-      if (resultCode == ResultCode.SUCCESS)
-      {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-      }
-
-      messages.add(ie.getMessageObject());
+      ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ie.getMessageObject());
     }
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       handlers.put(configuration.dn(), handler);
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
@@ -224,6 +219,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationDeleteAcceptable(
                       SASLMechanismHandlerCfg configuration,
                       List<LocalizableMessage> unacceptableReasons)
@@ -238,12 +234,11 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public ConfigChangeResult applyConfigurationDelete(
               SASLMechanismHandlerCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     SASLMechanismHandler handler = handlers.remove(configuration.dn());
     if (handler != null)
@@ -251,7 +246,7 @@
       handler.finalizeSASLMechanismHandler();
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
@@ -259,6 +254,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationChangeAcceptable(
                       SASLMechanismHandlerCfg configuration,
                       List<LocalizableMessage> unacceptableReasons)
@@ -288,12 +284,11 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public ConfigChangeResult applyConfigurationChange(
               SASLMechanismHandlerCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
 
     // Get the existing handler if it's already enabled.
@@ -313,7 +308,7 @@
         }
       }
 
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
 
@@ -327,10 +322,10 @@
     {
       if (! className.equals(existingHandler.getClass().getName()))
       {
-        adminActionRequired = true;
+        ccr.setAdminActionRequired(true);
       }
 
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
     SASLMechanismHandler handler = null;
@@ -340,20 +335,16 @@
     }
     catch (InitializationException ie)
     {
-      if (resultCode == ResultCode.SUCCESS)
-      {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-      }
-
-      messages.add(ie.getMessageObject());
+      ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ie.getMessageObject());
     }
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       handlers.put(configuration.dn(), handler);
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/SynchronizationProviderConfigManager.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/SynchronizationProviderConfigManager.java
index fbaf692..4caffd6 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/SynchronizationProviderConfigManager.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/SynchronizationProviderConfigManager.java
@@ -26,13 +26,15 @@
  */
 package org.opends.server.core;
 
-import java.util.ArrayList;
+import static org.opends.messages.ConfigMessages.*;
+import static org.opends.server.util.StaticUtils.*;
+
 import java.util.List;
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
-import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.admin.ClassPropertyDefinition;
 import org.opends.server.admin.server.ConfigurationAddListener;
 import org.opends.server.admin.server.ConfigurationChangeListener;
@@ -42,14 +44,10 @@
 import org.opends.server.admin.std.server.RootCfg;
 import org.opends.server.admin.std.server.SynchronizationProviderCfg;
 import org.opends.server.api.SynchronizationProvider;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.DN;
 import org.opends.server.types.InitializationException;
 
-import static org.opends.messages.ConfigMessages.*;
-import static org.opends.server.util.StaticUtils.*;
-
 /**
  * This class defines a utility that will be used to manage the configuration
  * for the set of synchronization providers configured in the Directory Server.
@@ -150,10 +148,7 @@
   public ConfigChangeResult applyConfigurationChange(
       SynchronizationProviderCfg configuration)
   {
-    // Default result code.
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     // Attempt to get the existing synchronization provider. This will only
     // succeed if it is currently enabled.
@@ -187,17 +182,17 @@
           if (logger.isTraceEnabled())
           {
             logger.traceException(e);
-            messages.add(e.getMessageObject());
-            resultCode = DirectoryServer.getServerErrorResultCode();
+            ccr.addMessage(e.getMessageObject());
+            ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
           }
         }
         catch (Exception e)
         {
           logger.traceException(e);
 
-          messages.add(ERR_CONFIG_SYNCH_ERROR_INITIALIZING_PROVIDER.get(
+          ccr.addMessage(ERR_CONFIG_SYNCH_ERROR_INITIALIZING_PROVIDER.get(
               configuration.getJavaClass(), configuration.dn()));
-          resultCode = DirectoryServer.getServerErrorResultCode();
+          ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
         }
       }
     }
@@ -213,7 +208,7 @@
         String className = configuration.getJavaClass();
         if (!className.equals(provider.getClass().getName()))
         {
-          adminActionRequired = true;
+          ccr.setAdminActionRequired(true);
         }
       }
       else
@@ -226,9 +221,7 @@
         registeredProviders.remove(dn);
       }
     }
-    // Return the configuration result.
-    return new ConfigChangeResult(resultCode, adminActionRequired,
-        messages);
+    return ccr;
   }
 
 
@@ -261,10 +254,7 @@
   public ConfigChangeResult applyConfigurationAdd(
     SynchronizationProviderCfg configuration)
   {
-    // Default result code.
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     // Register as a change listener for this synchronization provider entry
     // so that we will be notified if when it is disabled or enabled.
@@ -292,23 +282,21 @@
         if (logger.isTraceEnabled())
         {
           logger.traceException(e);
-          messages.add(e.getMessageObject());
-          resultCode = DirectoryServer.getServerErrorResultCode();
+          ccr.addMessage(e.getMessageObject());
+          ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
         }
       }
       catch (Exception e)
       {
         logger.traceException(e);
 
-        messages.add(ERR_CONFIG_SYNCH_ERROR_INITIALIZING_PROVIDER.get(
+        ccr.addMessage(ERR_CONFIG_SYNCH_ERROR_INITIALIZING_PROVIDER.get(
             configuration.getJavaClass(), configuration.dn()));
-        resultCode = DirectoryServer.getServerErrorResultCode();
+        ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
       }
     }
 
-    // Return the configuration result.
-    return new ConfigChangeResult(resultCode, adminActionRequired,
-        messages);
+    return ccr;
   }
 
 
@@ -443,9 +431,7 @@
   public ConfigChangeResult applyConfigurationDelete(
       SynchronizationProviderCfg configuration)
   {
-    //  Default result code.
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     // See if the entry is registered as a synchronization provider. If so,
     // deregister and stop it.
@@ -456,7 +442,7 @@
       DirectoryServer.deregisterSynchronizationProvider(provider);
       provider.finalizeSynchronizationProvider();
     }
-    return new ConfigChangeResult(resultCode, adminActionRequired);
+    return ccr;
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/TrustManagerProviderConfigManager.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/TrustManagerProviderConfigManager.java
index c924361..fbde834 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/TrustManagerProviderConfigManager.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/TrustManagerProviderConfigManager.java
@@ -179,15 +179,13 @@
   public ConfigChangeResult applyConfigurationAdd(
                                   TrustManagerProviderCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     configuration.addChangeListener(this);
 
     if (! configuration.isEnabled())
     {
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
     TrustManagerProvider provider = null;
@@ -201,22 +199,18 @@
     }
     catch (InitializationException ie)
     {
-      if (resultCode == ResultCode.SUCCESS)
-      {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-      }
-
-      messages.add(ie.getMessageObject());
+      ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ie.getMessageObject());
     }
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       providers.put(configuration.dn(), provider);
       DirectoryServer.registerTrustManagerProvider(configuration.dn(),
                                                    provider);
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
@@ -241,9 +235,7 @@
   public ConfigChangeResult applyConfigurationDelete(
                                  TrustManagerProviderCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     DirectoryServer.deregisterTrustManagerProvider(configuration.dn());
 
@@ -253,7 +245,7 @@
       provider.finalizeTrustManagerProvider();
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
@@ -293,9 +285,7 @@
   public ConfigChangeResult applyConfigurationChange(
                                  TrustManagerProviderCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
 
     // Get the existing provider if it's already enabled.
@@ -317,7 +307,7 @@
         }
       }
 
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
 
@@ -331,10 +321,10 @@
     {
       if (! className.equals(existingProvider.getClass().getName()))
       {
-        adminActionRequired = true;
+        ccr.setAdminActionRequired(true);
       }
 
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
     TrustManagerProvider provider = null;
@@ -344,22 +334,17 @@
     }
     catch (InitializationException ie)
     {
-      if (resultCode == ResultCode.SUCCESS)
-      {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-      }
-
-      messages.add(ie.getMessageObject());
+      ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ie.getMessageObject());
     }
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       providers.put(configuration.dn(), provider);
-      DirectoryServer.registerTrustManagerProvider(configuration.dn(),
-                                                   provider);
+      DirectoryServer.registerTrustManagerProvider(configuration.dn(), provider);
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/VirtualAttributeConfigManager.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/VirtualAttributeConfigManager.java
index de1df74..accb7f5 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/VirtualAttributeConfigManager.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/VirtualAttributeConfigManager.java
@@ -26,6 +26,10 @@
  */
 package org.opends.server.core;
 
+import static org.forgerock.opendj.adapter.server3x.Converters.*;
+import static org.opends.messages.ConfigMessages.*;
+import static org.opends.server.util.StaticUtils.*;
+
 import java.util.*;
 import java.util.Map.Entry;
 import java.util.concurrent.ConcurrentHashMap;
@@ -33,6 +37,8 @@
 
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.opendj.ldap.ResultCode;
 import org.forgerock.util.Utils;
 import org.opends.server.admin.ClassPropertyDefinition;
 import org.opends.server.admin.server.ConfigurationAddListener;
@@ -43,13 +49,7 @@
 import org.opends.server.admin.std.server.RootCfg;
 import org.opends.server.admin.std.server.VirtualAttributeCfg;
 import org.opends.server.api.VirtualAttributeProvider;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.types.*;
-import org.forgerock.opendj.ldap.ResultCode;
-
-import static org.opends.messages.ConfigMessages.*;
-import static org.opends.server.util.StaticUtils.*;
-import static org.forgerock.opendj.adapter.server3x.Converters.from;
 
 /**
  * This class defines a utility that will be used to manage the set of
@@ -234,15 +234,13 @@
   public ConfigChangeResult applyConfigurationAdd(
                                  VirtualAttributeCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    List<LocalizableMessage>     messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     configuration.addChangeListener(this);
 
     if (! configuration.isEnabled())
     {
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
     // Make sure that we can parse all of the search filters.
@@ -251,17 +249,14 @@
     Set<SearchFilter> filters = buildFilters(configuration, reasons);
     if (!reasons.isEmpty())
     {
-      messages.addAll(reasons.keySet());
-      if (resultCode == ResultCode.SUCCESS)
-      {
-        resultCode = ResultCode.INVALID_ATTRIBUTE_SYNTAX;
-      }
+      ccr.getMessages().addAll(reasons.keySet());
+      ccr.setResultCodeIfSuccess(ResultCode.INVALID_ATTRIBUTE_SYNTAX);
     }
 
     // Get the name of the class and make sure we can instantiate it as a
     // certificate mapper.
     VirtualAttributeProvider<? extends VirtualAttributeCfg> provider = null;
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       String className = configuration.getJavaClass();
       try
@@ -270,18 +265,18 @@
       }
       catch (InitializationException ie)
       {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-        messages.add(ie.getMessageObject());
+        ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+        ccr.addMessage(ie.getMessageObject());
       }
     }
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       VirtualAttributeRule rule = createRule(configuration, provider, filters);
       rules.put(configuration.dn(), rule);
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
   /** {@inheritDoc} */
@@ -299,9 +294,7 @@
   public ConfigChangeResult applyConfigurationDelete(
                                  VirtualAttributeCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    List<LocalizableMessage>     messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     VirtualAttributeRule rule = rules.remove(configuration.dn());
     if (rule != null)
@@ -309,7 +302,7 @@
       rule.getProvider().finalizeVirtualAttributeProvider();
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
   /** {@inheritDoc} */
@@ -358,9 +351,7 @@
   public ConfigChangeResult applyConfigurationChange(
                                  VirtualAttributeCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    List<LocalizableMessage>     messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
 
     // Get the existing rule if it's already enabled.
@@ -377,7 +368,7 @@
         existingRule.getProvider().finalizeVirtualAttributeProvider();
       }
 
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
 
@@ -387,17 +378,14 @@
     Set<SearchFilter> filters = buildFilters(configuration, reasons);
     if (!reasons.isEmpty())
     {
-      messages.addAll(reasons.keySet());
-      if (resultCode == ResultCode.SUCCESS)
-      {
-        resultCode = ResultCode.INVALID_ATTRIBUTE_SYNTAX;
-      }
+      ccr.getMessages().addAll(reasons.keySet());
+      ccr.setResultCodeIfSuccess(ResultCode.INVALID_ATTRIBUTE_SYNTAX);
     }
 
     // Get the name of the class and make sure we can instantiate it as a
     // certificate mapper.
     VirtualAttributeProvider<? extends VirtualAttributeCfg> provider = null;
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       String className = configuration.getJavaClass();
       try
@@ -406,12 +394,12 @@
       }
       catch (InitializationException ie)
       {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-        messages.add(ie.getMessageObject());
+        ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+        ccr.addMessage(ie.getMessageObject());
       }
     }
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       VirtualAttributeRule rule = createRule(configuration, provider, filters);
       rules.put(configuration.dn(), rule);
@@ -421,7 +409,7 @@
       }
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/WorkQueueConfigManager.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/WorkQueueConfigManager.java
index 7ff7689..bb7d2ce 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/WorkQueueConfigManager.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/core/WorkQueueConfigManager.java
@@ -25,11 +25,9 @@
  *      Portions Copyright 2014 ForgeRock AS
  */
 package org.opends.server.core;
-import java.util.ArrayList;
 import java.util.List;
 
 import org.forgerock.i18n.LocalizableMessage;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.server.admin.ClassPropertyDefinition;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.server.ServerManagementContext;
@@ -142,10 +140,7 @@
   @Override
   public ConfigChangeResult applyConfigurationChange(WorkQueueCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
-
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     // If the work queue class has been changed, then we should warn the user
     // that it won't take effect until the server is restarted.
@@ -153,15 +148,10 @@
     String workQueueClass = configuration.getJavaClass();
     if (! workQueueClass.equals(workQueue.getClass().getName()))
     {
-      messages.add(INFO_CONFIG_WORK_QUEUE_CLASS_CHANGE_REQUIRES_RESTART.get(
-              workQueue.getClass().getName(),
-              workQueueClass));
-
-      adminActionRequired = true;
+      ccr.addMessage(INFO_CONFIG_WORK_QUEUE_CLASS_CHANGE_REQUIRES_RESTART.get(
+              workQueue.getClass().getName(), workQueueClass));
+      ccr.setAdminActionRequired(true);
     }
-
-
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 }
-
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/crypto/CryptoManagerImpl.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/crypto/CryptoManagerImpl.java
index 336688c..368fa2a 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/crypto/CryptoManagerImpl.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/crypto/CryptoManagerImpl.java
@@ -452,8 +452,7 @@
     preferredCipherTransformation = cfg.getCipherTransformation();
     preferredCipherTransformationKeyLengthBits = cfg.getCipherKeyLength();
     preferredKeyWrappingTransformation = cfg.getKeyWrappingTransformation();
-    return new ConfigChangeResult(ResultCode.SUCCESS, false,
-        new ArrayList<LocalizableMessage>());
+    return new ConfigChangeResult();
   }
 
 
@@ -466,21 +465,16 @@
   private TrustStoreBackend getTrustStoreBackend()
        throws ConfigException
   {
-    Backend b = DirectoryServer.getBackend(
-         ConfigConstants.ID_ADS_TRUST_STORE_BACKEND);
+    Backend<?> b = DirectoryServer.getBackend(ConfigConstants.ID_ADS_TRUST_STORE_BACKEND);
     if (b == null)
     {
-      LocalizableMessage msg =
-           ERR_CRYPTOMGR_ADS_TRUST_STORE_BACKEND_NOT_ENABLED.get(
-                ConfigConstants.ID_ADS_TRUST_STORE_BACKEND);
-      throw new ConfigException(msg);
+      throw new ConfigException(ERR_CRYPTOMGR_ADS_TRUST_STORE_BACKEND_NOT_ENABLED.get(
+            ConfigConstants.ID_ADS_TRUST_STORE_BACKEND));
     }
     if (!(b instanceof TrustStoreBackend))
     {
-      LocalizableMessage msg =
-           ERR_CRYPTOMGR_ADS_TRUST_STORE_BACKEND_WRONG_CLASS.get(
-                ConfigConstants.ID_ADS_TRUST_STORE_BACKEND);
-      throw new ConfigException(msg);
+      throw new ConfigException(ERR_CRYPTOMGR_ADS_TRUST_STORE_BACKEND_WRONG_CLASS.get(
+            ConfigConstants.ID_ADS_TRUST_STORE_BACKEND));
     }
     return (TrustStoreBackend)b;
   }
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/AttributeValuePasswordValidator.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/AttributeValuePasswordValidator.java
index 33e16fe..b86af6b 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/AttributeValuePasswordValidator.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/AttributeValuePasswordValidator.java
@@ -25,11 +25,9 @@
  *      Portions Copyright 2012-2014 ForgeRock AS.
  */
 package org.opends.server.extensions;
+
 import org.forgerock.i18n.LocalizableMessage;
 
-
-
-import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
 
@@ -38,12 +36,10 @@
 import org.opends.server.admin.std.server.PasswordValidatorCfg;
 import org.opends.server.api.PasswordValidator;
 import org.opends.server.types.*;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.forgerock.opendj.ldap.ByteString;
 import static org.opends.messages.ExtensionMessages.*;
 import org.forgerock.i18n.LocalizableMessageBuilder;
 
-
 /**
  * This class provides an OpenDS password validator that may be used to ensure
  * that proposed passwords are not contained in another attribute in the user's
@@ -233,14 +229,7 @@
   public ConfigChangeResult applyConfigurationChange(
                       AttributeValuePasswordValidatorCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
-
-
     currentConfig = configuration;
-
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return new ConfigChangeResult();
   }
 }
-
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/CRAMMD5SASLMechanismHandler.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/CRAMMD5SASLMechanismHandler.java
index bb2aaa9..0be1406 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/CRAMMD5SASLMechanismHandler.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/CRAMMD5SASLMechanismHandler.java
@@ -31,7 +31,6 @@
 import java.security.MessageDigest;
 import java.security.SecureRandom;
 import java.text.ParseException;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.concurrent.locks.Lock;
@@ -581,15 +580,12 @@
   public ConfigChangeResult applyConfigurationChange(
               CramMD5SASLMechanismHandlerCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     DN identityMapperDN = configuration.getIdentityMapperDN();
     identityMapper = DirectoryServer.getIdentityMapper(identityMapperDN);
     currentConfig  = configuration;
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 }
-
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/CharacterSetPasswordValidator.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/CharacterSetPasswordValidator.java
index c8427aa..819707c 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/CharacterSetPasswordValidator.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/CharacterSetPasswordValidator.java
@@ -25,29 +25,27 @@
  *      Portions Copyright 2011-2014 ForgeRock AS
  */
 package org.opends.server.extensions;
-import org.forgerock.i18n.LocalizableMessage;
 
+import static org.opends.messages.ExtensionMessages.*;
+import static org.opends.server.util.StaticUtils.*;
 
-
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
+import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.i18n.LocalizableMessageBuilder;
+import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.opendj.ldap.ByteString;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.std.server.CharacterSetPasswordValidatorCfg;
 import org.opends.server.admin.std.server.PasswordValidatorCfg;
 import org.opends.server.api.PasswordValidator;
-import org.forgerock.opendj.config.server.ConfigException;
-import org.opends.server.types.*;
-import org.forgerock.opendj.ldap.ResultCode;
-import org.forgerock.opendj.ldap.ByteString;
-import static org.opends.messages.ExtensionMessages.*;
-import org.forgerock.i18n.LocalizableMessageBuilder;
-import static org.opends.server.util.StaticUtils.*;
-
-
+import org.opends.server.types.ConfigChangeResult;
+import org.opends.server.types.DirectoryConfig;
+import org.opends.server.types.Entry;
+import org.opends.server.types.Operation;
 
 /**
  * This class provides an OpenDJ password validator that may be used to ensure
@@ -502,6 +500,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationChangeAcceptable(
                       CharacterSetPasswordValidatorCfg configuration,
                       List<LocalizableMessage> unacceptableReasons)
@@ -526,13 +525,11 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public ConfigChangeResult applyConfigurationChange(
                       CharacterSetPasswordValidatorCfg configuration)
   {
-    ResultCode         resultCode          = ResultCode.SUCCESS;
-    boolean            adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
-
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     // Make sure that we can process the defined character sets.  If so, then
     // activate the new configuration.
@@ -543,11 +540,10 @@
     }
     catch (Exception e)
     {
-      resultCode = DirectoryConfig.getServerErrorResultCode();
-      messages.add(getExceptionMessage(e));
+      ccr.setResultCode(DirectoryConfig.getServerErrorResultCode());
+      ccr.addMessage(getExceptionMessage(e));
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 }
-
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/CryptPasswordStorageScheme.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/CryptPasswordStorageScheme.java
index a12204b..6444422 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/CryptPasswordStorageScheme.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/CryptPasswordStorageScheme.java
@@ -27,7 +27,6 @@
  */
 package org.opends.server.extensions;
 
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Random;
@@ -530,22 +529,12 @@
     return true;
   }
 
-
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public ConfigChangeResult applyConfigurationChange(
                       CryptPasswordStorageSchemeCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    List<LocalizableMessage>     messages            = new ArrayList<LocalizableMessage>();
-
-
     currentConfig = configuration;
-
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return new ConfigChangeResult();
   }
 }
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/DefaultEntryCache.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/DefaultEntryCache.java
index 2709bbd..c975045 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/DefaultEntryCache.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/DefaultEntryCache.java
@@ -26,28 +26,24 @@
  */
 package org.opends.server.extensions;
 
-
-
-import org.forgerock.i18n.LocalizableMessage;
-
 import java.util.ArrayList;
 import java.util.List;
 import java.util.SortedMap;
 
+import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.std.server.EntryCacheCfg;
 import org.opends.server.api.Backend;
 import org.opends.server.api.BackendInitializationListener;
 import org.opends.server.api.EntryCache;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.core.DirectoryServer;
-import org.forgerock.i18n.slf4j.LocalizedLogger;
 import org.opends.server.types.Attribute;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.DN;
 import org.opends.server.types.Entry;
 import org.opends.server.types.InitializationException;
-import org.forgerock.opendj.ldap.ResultCode;
 
 /**
  * This class defines the default entry cache which acts as an arbiter for
@@ -65,8 +61,10 @@
   private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
 
 
-  // The entry cache order array reflects all currently configured and
-  // active entry cache implementations in cache level specific order.
+  /**
+   * The entry cache order array reflects all currently configured and
+   * active entry cache implementations in cache level specific order.
+   */
   private static EntryCache<? extends EntryCacheCfg>[] cacheOrder =
     new EntryCache<?>[0];
 
@@ -83,10 +81,7 @@
     DirectoryServer.registerBackendInitializationListener(this);
   }
 
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void initializeEntryCache(EntryCacheCfg configEntry)
          throws ConfigException, InitializationException
@@ -94,10 +89,7 @@
     // No implementation required.
   }
 
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void finalizeEntryCache()
   {
@@ -108,10 +100,7 @@
     cacheOrder = new EntryCache<?>[0];
   }
 
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public boolean containsEntry(DN entryDN)
   {
@@ -128,10 +117,7 @@
     return false;
   }
 
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public Entry getEntry(Backend backend, long entryID)
   {
@@ -152,10 +138,7 @@
     return null;
   }
 
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public Entry getEntry(DN entryDN)
   {
@@ -176,11 +159,7 @@
     return null;
   }
 
-
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public long getEntryID(DN entryDN)
   {
@@ -195,11 +174,7 @@
     return -1;
   }
 
-
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public DN getEntryDN(Backend backend, long entryID)
   {
@@ -214,11 +189,7 @@
     return null;
   }
 
-
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void putEntry(Entry entry, Backend backend, long entryID)
   {
@@ -233,11 +204,7 @@
     }
   }
 
-
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public boolean putEntryIfAbsent(Entry entry, Backend backend, long entryID)
   {
@@ -253,11 +220,7 @@
     return false;
   }
 
-
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void removeEntry(DN entryDN)
   {
@@ -269,11 +232,7 @@
     }
   }
 
-
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void clear()
   {
@@ -282,11 +241,7 @@
     }
   }
 
-
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void clearBackend(Backend backend)
   {
@@ -295,11 +250,7 @@
     }
   }
 
-
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void clearSubtree(DN baseDN)
   {
@@ -308,11 +259,7 @@
     }
   }
 
-
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void handleLowMemory()
   {
@@ -321,11 +268,7 @@
     }
   }
 
-
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public boolean isConfigurationChangeAcceptable(
       EntryCacheCfg configuration,
@@ -336,42 +279,26 @@
     return true;
   }
 
-
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
-  public ConfigChangeResult applyConfigurationChange(
-      EntryCacheCfg configuration
-      )
+  public ConfigChangeResult applyConfigurationChange(EntryCacheCfg configuration)
   {
     // No implementation required.
-    ConfigChangeResult changeResult = new ConfigChangeResult(
-        ResultCode.SUCCESS, false, new ArrayList<LocalizableMessage>()
-        );
-
-    return changeResult;
+    return new ConfigChangeResult();
   }
 
-
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public ArrayList<Attribute> getMonitorData()
   {
     ArrayList<Attribute> attrs = new ArrayList<Attribute>();
 
-    // The sum of cache hits of all active entry cache
-    // implementations.
-    Long entryCacheHits = new Long(0);
+    // The sum of cache hits of all active entry cache implementations.
+    long entryCacheHits = 0;
     // Common for all active entry cache implementations.
-    Long entryCacheMisses = new Long(cacheMisses.longValue());
-    // The sum of cache counts of all active entry cache
-    // implementations.
-    Long currentEntryCacheCount = new Long(0);
+    long entryCacheMisses = cacheMisses.longValue();
+    // The sum of cache counts of all active entry cache implementations.
+    long currentEntryCacheCount = 0;
 
     for (EntryCache<?> entryCache : cacheOrder) {
       // Get cache hits and counts from every active cache.
@@ -395,28 +322,19 @@
     return attrs;
   }
 
-
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public Long getCacheCount()
   {
-    Long cacheCount = new Long(0);
-
+    long cacheCount = 0;
     for (EntryCache<?> entryCache : cacheOrder) {
       cacheCount += entryCache.getCacheCount();
     }
-
     return cacheCount;
   }
 
-
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
+  @Override
   public String toVerboseString()
   {
     StringBuilder sb = new StringBuilder();
@@ -429,7 +347,7 @@
       }
     }
     String verboseString = sb.toString();
-    return (verboseString.length() > 0 ? verboseString : null);
+    return verboseString.length() > 0 ? verboseString : null;
   }
 
 
@@ -490,9 +408,9 @@
   public void performBackendFinalizationProcessing(Backend backend)
   {
     // Do not clear any backends if the server is shutting down.
-    if ( !(DirectoryServer.getInstance().isShuttingDown()) ) {
+    if (!DirectoryServer.getInstance().isShuttingDown())
+    {
       clearBackend(backend);
     }
   }
 }
-
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/DictionaryPasswordValidator.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/DictionaryPasswordValidator.java
index b7d9ad5..00a4adf 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/DictionaryPasswordValidator.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/DictionaryPasswordValidator.java
@@ -26,32 +26,27 @@
  *      Portions Copyright 2014 ForgeRock AS
  */
 package org.opends.server.extensions;
-import org.forgerock.i18n.LocalizableMessage;
 
-
+import static org.opends.messages.ExtensionMessages.*;
+import static org.opends.server.util.StaticUtils.*;
 
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileReader;
-import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
+import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.i18n.LocalizableMessageBuilder;
+import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.opendj.ldap.ByteString;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.std.server.DictionaryPasswordValidatorCfg;
 import org.opends.server.admin.std.server.PasswordValidatorCfg;
 import org.opends.server.api.PasswordValidator;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.types.*;
-import org.forgerock.opendj.ldap.ResultCode;
-import org.forgerock.opendj.ldap.ByteString;
-import org.forgerock.i18n.slf4j.LocalizedLogger;
-import static org.opends.messages.ExtensionMessages.*;
-import org.forgerock.i18n.LocalizableMessageBuilder;
-import static org.opends.server.util.StaticUtils.*;
-
-
 
 /**
  * This class provides an OpenDS password validator that may be used to ensure
@@ -252,6 +247,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationChangeAcceptable(
                       DictionaryPasswordValidatorCfg configuration,
                       List<LocalizableMessage> unacceptableReasons)
@@ -286,16 +282,13 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public ConfigChangeResult applyConfigurationChange(
                       DictionaryPasswordValidatorCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
-
-
     // Make sure we can load the dictionary.  If we can, then activate the new
     // configuration.
+    final ConfigChangeResult ccr = new ConfigChangeResult();
     try
     {
       dictionary    = loadDictionary(configuration);
@@ -303,11 +296,10 @@
     }
     catch (Exception e)
     {
-      resultCode = DirectoryConfig.getServerErrorResultCode();
-      messages.add(getExceptionMessage(e));
+      ccr.setResultCode(DirectoryConfig.getServerErrorResultCode());
+      ccr.addMessage(getExceptionMessage(e));
     }
-
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
   private boolean isDictionaryBased(String password,
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/DigestMD5SASLMechanismHandler.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/DigestMD5SASLMechanismHandler.java
index 0b550d7..8b76565 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/DigestMD5SASLMechanismHandler.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/DigestMD5SASLMechanismHandler.java
@@ -26,35 +26,34 @@
  */
 package org.opends.server.extensions;
 
+import static org.opends.messages.ExtensionMessages.*;
+import static org.opends.server.util.ServerConstants.*;
+import static org.opends.server.util.StaticUtils.*;
+
 import java.net.InetAddress;
 import java.net.UnknownHostException;
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 
-import javax.security.sasl.*;
+import javax.security.sasl.Sasl;
+import javax.security.sasl.SaslException;
 
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.server.admin.server.ConfigurationChangeListener;
-import org.opends.server.admin.std.meta.DigestMD5SASLMechanismHandlerCfgDefn.*;
+import org.opends.server.admin.std.meta.DigestMD5SASLMechanismHandlerCfgDefn.QualityOfProtection;
 import org.opends.server.admin.std.server.DigestMD5SASLMechanismHandlerCfg;
 import org.opends.server.admin.std.server.SASLMechanismHandlerCfg;
 import org.opends.server.api.ClientConnection;
 import org.opends.server.api.IdentityMapper;
 import org.opends.server.api.SASLMechanismHandler;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.core.BindOperation;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.DN;
 import org.opends.server.types.InitializationException;
-import org.forgerock.opendj.ldap.ResultCode;
-
-import static org.opends.messages.ExtensionMessages.*;
-import static org.opends.server.util.ServerConstants.*;
-import static org.opends.server.util.StaticUtils.*;
-
 
 /**
  * This class provides an implementation of a SASL mechanism that authenticates
@@ -218,6 +217,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationChangeAcceptable(
                       DigestMD5SASLMechanismHandlerCfg configuration,
                       List<LocalizableMessage> unacceptableReasons)
@@ -229,13 +229,11 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public ConfigChangeResult applyConfigurationChange(
           DigestMD5SASLMechanismHandlerCfg configuration)
   {
-      ResultCode        resultCode          = ResultCode.SUCCESS;
-      boolean           adminActionRequired = false;
-
-      ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+      final ConfigChangeResult ccr = new ConfigChangeResult();
       try {
           DN identityMapperDN = configuration.getIdentityMapperDN();
           identityMapper = DirectoryServer.getIdentityMapper(identityMapperDN);
@@ -254,11 +252,10 @@
           this.configuration  = configuration;
       } catch (UnknownHostException unhe) {
           logger.traceException(unhe);
-          resultCode = ResultCode.OPERATIONS_ERROR;
-          messages.add(ERR_SASL_CANNOT_GET_SERVER_FQDN.get(configEntryDN, getExceptionMessage(unhe)));
-          return new ConfigChangeResult(resultCode,adminActionRequired, messages);
+          ccr.setResultCode(ResultCode.OPERATIONS_ERROR);
+          ccr.addMessage(ERR_SASL_CANNOT_GET_SERVER_FQDN.get(configEntryDN, getExceptionMessage(unhe)));
       }
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/EntityTagVirtualAttributeProvider.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/EntityTagVirtualAttributeProvider.java
index 1cd1f7f..947581a 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/EntityTagVirtualAttributeProvider.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/EntityTagVirtualAttributeProvider.java
@@ -96,7 +96,7 @@
       final EntityTagVirtualAttributeCfg configuration)
   {
     this.config = configuration;
-    return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    return new ConfigChangeResult();
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/ErrorLogAccountStatusNotificationHandler.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/ErrorLogAccountStatusNotificationHandler.java
index 9237520..516eddd 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/ErrorLogAccountStatusNotificationHandler.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/ErrorLogAccountStatusNotificationHandler.java
@@ -25,15 +25,12 @@
  *      Portions Copyright 2014 ForgeRock AS
  */
 package org.opends.server.extensions;
-import org.forgerock.i18n.LocalizableMessage;
-import org.forgerock.i18n.slf4j.LocalizedLogger;
-
-
 
 import static org.opends.messages.ExtensionMessages.*;
 
+import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.i18n.slf4j.LocalizedLogger;
 
-import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
 
@@ -50,9 +47,6 @@
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.DN;
 import org.opends.server.types.InitializationException;
-import org.forgerock.opendj.ldap.ResultCode;
-
-
 
 /**
  * This class defines an account status notification handler that will write
@@ -197,21 +191,11 @@
       ErrorLogAccountStatusNotificationHandlerCfg configuration
       )
   {
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
-    ConfigChangeResult changeResult = new ConfigChangeResult(
-        resultCode, adminActionRequired, messages
-        );
+    // Initialize the set of notification types that should generate log messages.
+    boolean applyChanges =false;
+    processNotificationHandlerConfig (configuration, applyChanges);
 
-    // Initialize the set of notification types that should generate log
-    // messages.
-    boolean applyChanges = false;
-    processNotificationHandlerConfig (
-        configuration, applyChanges
-        );
-
-    return changeResult;
+    return new ConfigChangeResult();
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/ExactMatchIdentityMapper.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/ExactMatchIdentityMapper.java
index fbc9c04..2b50048 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/ExactMatchIdentityMapper.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/ExactMatchIdentityMapper.java
@@ -334,17 +334,12 @@
   public ConfigChangeResult applyConfigurationChange(
               ExactMatchIdentityMapperCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
-
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     attributeTypes =
          configuration.getMatchAttribute().toArray(new AttributeType[0]);
     currentConfig = configuration;
 
-
-   return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+   return ccr;
   }
 }
-
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/ExternalSASLMechanismHandler.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/ExternalSASLMechanismHandler.java
index 37cf958..3093a42 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/ExternalSASLMechanismHandler.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/ExternalSASLMechanismHandler.java
@@ -27,7 +27,6 @@
 package org.opends.server.extensions;
 
 import java.security.cert.Certificate;
-import java.util.ArrayList;
 import java.util.List;
 
 import org.forgerock.i18n.LocalizableMessage;
@@ -376,9 +375,7 @@
   public ConfigChangeResult applyConfigurationChange(
               ExternalSASLMechanismHandlerCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
 
     // See if we should attempt to validate client certificates against those in
@@ -410,15 +407,14 @@
     }
 
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       validationPolicy         = newValidationPolicy;
       certificateAttributeType = newCertificateType;
       currentConfig            = configuration;
     }
 
-
-   return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 }
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/FileBasedKeyManagerProvider.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/FileBasedKeyManagerProvider.java
index f4a43dd..0aa6376 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/FileBasedKeyManagerProvider.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/FileBasedKeyManagerProvider.java
@@ -36,7 +36,6 @@
 import java.io.IOException;
 import java.security.KeyStore;
 import java.security.KeyStoreException;
-import java.util.ArrayList;
 import java.util.List;
 import javax.net.ssl.KeyManager;
 import javax.net.ssl.KeyManagerFactory;
@@ -434,9 +433,7 @@
   public ConfigChangeResult applyConfigurationChange(
                                  FileBasedKeyManagerProviderCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
 
     // Get the path to the key store file.
@@ -446,19 +443,16 @@
       File f = getFileForPath(newKeyStoreFile);
       if (!(f.exists() && f.isFile()))
       {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-
-        messages.add(ERR_FILE_KEYMANAGER_NO_SUCH_FILE.get(
-            newKeyStoreFile, configEntryDN));
+        ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+        ccr.addMessage(ERR_FILE_KEYMANAGER_NO_SUCH_FILE.get(newKeyStoreFile, configEntryDN));
       }
     }
     catch (Exception e)
     {
       logger.traceException(e);
 
-      resultCode = DirectoryServer.getServerErrorResultCode();
-
-      messages.add(ERR_FILE_KEYMANAGER_CANNOT_DETERMINE_FILE.get(
+      ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ERR_FILE_KEYMANAGER_CANNOT_DETERMINE_FILE.get(
           configEntryDN, getExceptionMessage(e)));
     }
 
@@ -475,9 +469,8 @@
       {
         logger.traceException(kse);
 
-        resultCode = DirectoryServer.getServerErrorResultCode();
-
-        messages.add(ERR_FILE_KEYMANAGER_INVALID_TYPE.get(
+        ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+        ccr.addMessage(ERR_FILE_KEYMANAGER_INVALID_TYPE.get(
             configuration.getKeyStoreType(), configEntryDN, getExceptionMessage(kse)));
       }
     }
@@ -502,9 +495,8 @@
 
       if (pinStr == null)
       {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-
-        messages.add(ERR_FILE_KEYMANAGER_PIN_PROPERTY_NOT_SET.get(
+        ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+        ccr.addMessage(ERR_FILE_KEYMANAGER_PIN_PROPERTY_NOT_SET.get(
             propertyName, configEntryDN));
       }
       else
@@ -519,10 +511,8 @@
 
       if (pinStr == null)
       {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-
-        messages.add(ERR_FILE_KEYMANAGER_PIN_ENVAR_NOT_SET.get(
-            enVarName, configEntryDN));
+        ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+        ccr.addMessage(ERR_FILE_KEYMANAGER_PIN_ENVAR_NOT_SET.get(enVarName, configEntryDN));
       }
       else
       {
@@ -536,10 +526,8 @@
 
       if (!pinFile.exists())
       {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-
-        messages.add(ERR_FILE_KEYMANAGER_PIN_NO_SUCH_FILE.get(
-            fileName, configEntryDN));
+        ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+        ccr.addMessage(ERR_FILE_KEYMANAGER_PIN_NO_SUCH_FILE.get(fileName, configEntryDN));
       }
       else
       {
@@ -551,9 +539,8 @@
         }
         catch (IOException ioe)
         {
-          resultCode = DirectoryServer.getServerErrorResultCode();
-
-          messages.add(ERR_FILE_KEYMANAGER_PIN_FILE_CANNOT_READ.get(
+          ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+          ccr.addMessage(ERR_FILE_KEYMANAGER_PIN_FILE_CANNOT_READ.get(
               fileName, configEntryDN, getExceptionMessage(ioe)));
         }
         finally
@@ -563,10 +550,8 @@
 
         if (pinStr == null)
         {
-          resultCode = DirectoryServer.getServerErrorResultCode();
-
-          messages.add(ERR_FILE_KEYMANAGER_PIN_FILE_EMPTY.get(
-              fileName, configEntryDN));
+          ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+          ccr.addMessage(ERR_FILE_KEYMANAGER_PIN_FILE_EMPTY.get(fileName, configEntryDN));
         }
         else
         {
@@ -579,7 +564,7 @@
       newPIN = configuration.getKeyStorePin().toCharArray();
     }
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       currentConfig = configuration;
       keyStorePIN   = newPIN;
@@ -587,8 +572,6 @@
       keyStoreType  = newKeyStoreType;
     }
 
-
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 }
-
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/FileBasedTrustManagerProvider.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/FileBasedTrustManagerProvider.java
index 691276e..8ec55ee 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/FileBasedTrustManagerProvider.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/FileBasedTrustManagerProvider.java
@@ -25,11 +25,8 @@
  *      Portions Copyright 2014 ForgeRock AS
  */
 package org.opends.server.extensions;
+
 import org.forgerock.i18n.LocalizableMessage;
-
-
-
-import java.util.ArrayList;
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileInputStream;
@@ -56,11 +53,8 @@
 
 import org.forgerock.i18n.slf4j.LocalizedLogger;
 import static org.opends.messages.ExtensionMessages.*;
-
 import static org.opends.server.util.StaticUtils.*;
 
-
-
 /**
  * This class defines a trust manager provider that will reference certificates
  * stored in a file located on the Directory Server filesystem.
@@ -462,9 +456,7 @@
   public ConfigChangeResult applyConfigurationChange(
                                  FileBasedTrustManagerProviderCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
 
     // Get the path to the trust store file.
@@ -472,14 +464,11 @@
     File f = getFileForPath(newTrustStoreFile);
     if (! (f.exists() && f.isFile()))
     {
-      resultCode = DirectoryServer.getServerErrorResultCode();
-
-      messages.add(ERR_FILE_TRUSTMANAGER_NO_SUCH_FILE.get(newTrustStoreFile, configEntryDN));
+      ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ERR_FILE_TRUSTMANAGER_NO_SUCH_FILE.get(newTrustStoreFile, configEntryDN));
     }
 
-
-    // Get the trust store type.  If none is specified, then use the default
-    // type.
+    // Get the trust store type.  If none is specified, then use the default type.
     String newTrustStoreType = configuration.getTrustStoreType();
     if (newTrustStoreType == null)
     {
@@ -494,8 +483,9 @@
     {
       logger.traceException(kse);
 
-      messages.add(ERR_FILE_TRUSTMANAGER_INVALID_TYPE.get(newTrustStoreType, configEntryDN, getExceptionMessage(kse)));
-      resultCode = DirectoryServer.getServerErrorResultCode();
+      ccr.addMessage(ERR_FILE_TRUSTMANAGER_INVALID_TYPE.get(
+          newTrustStoreType, configEntryDN, getExceptionMessage(kse)));
+      ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
     }
 
 
@@ -534,9 +524,8 @@
           File pinFile = getFileForPath(newPINFile);
           if (! pinFile.exists())
           {
-            resultCode = DirectoryServer.getServerErrorResultCode();
-
-            messages.add(ERR_FILE_TRUSTMANAGER_PIN_NO_SUCH_FILE.get(newPINFile, configEntryDN));
+            ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+            ccr.addMessage(ERR_FILE_TRUSTMANAGER_PIN_NO_SUCH_FILE.get(newPINFile, configEntryDN));
           }
           else
           {
@@ -550,8 +539,8 @@
             }
             catch (IOException ioe)
             {
-              resultCode = DirectoryServer.getServerErrorResultCode();
-              messages.add(ERR_FILE_TRUSTMANAGER_PIN_FILE_CANNOT_READ.get(
+              ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+              ccr.addMessage(ERR_FILE_TRUSTMANAGER_PIN_FILE_CANNOT_READ.get(
                   newPINFile, configEntryDN, getExceptionMessage(ioe)));
             }
             finally
@@ -561,9 +550,8 @@
 
             if (pinStr == null)
             {
-              resultCode = DirectoryServer.getServerErrorResultCode();
-
-              messages.add(ERR_FILE_TRUSTMANAGER_PIN_FILE_EMPTY.get(newPINFile, configEntryDN));
+              ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+              ccr.addMessage(ERR_FILE_TRUSTMANAGER_PIN_FILE_EMPTY.get(newPINFile, configEntryDN));
             }
             else
             {
@@ -577,9 +565,8 @@
         String pinStr = System.getenv(newPINEnVar);
         if (pinStr == null)
         {
-          resultCode = DirectoryServer.getServerErrorResultCode();
-
-          messages.add(ERR_FILE_TRUSTMANAGER_PIN_ENVAR_NOT_SET.get(newPINEnVar, configEntryDN));
+          ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+          ccr.addMessage(ERR_FILE_TRUSTMANAGER_PIN_ENVAR_NOT_SET.get(newPINEnVar, configEntryDN));
         }
         else
         {
@@ -592,9 +579,8 @@
       String pinStr = System.getProperty(newPINProperty);
       if (pinStr == null)
       {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-
-        messages.add(ERR_FILE_TRUSTMANAGER_PIN_PROPERTY_NOT_SET.get(newPINProperty, configEntryDN));
+        ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+        ccr.addMessage(ERR_FILE_TRUSTMANAGER_PIN_PROPERTY_NOT_SET.get(newPINProperty, configEntryDN));
       }
       else
       {
@@ -603,7 +589,7 @@
     }
 
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       trustStoreFile = newTrustStoreFile;
       trustStoreType = newTrustStoreType;
@@ -611,8 +597,6 @@
       currentConfig  = configuration;
     }
 
-
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 }
-
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/FingerprintCertificateMapper.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/FingerprintCertificateMapper.java
index fe3b99b..565c5fb 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/FingerprintCertificateMapper.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/FingerprintCertificateMapper.java
@@ -336,9 +336,7 @@
   public ConfigChangeResult applyConfigurationChange(
               FingerprintCertificateMapperCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
 
     // Get the algorithm that will be used to generate the fingerprint.
@@ -354,7 +352,7 @@
     }
 
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       fingerprintAlgorithm = newFingerprintAlgorithm;
       currentConfig        = configuration;
@@ -376,12 +374,11 @@
       {
         LocalizableMessage message = WARN_SATUACM_ATTR_UNINDEXED.get(
             configuration.dn(), t.getNameOrOID(), b.getBackendID());
-        messages.add(message);
+        ccr.addMessage(message);
         logger.error(message);
       }
     }
 
-   return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+   return ccr;
   }
 }
-
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/GSSAPISASLMechanismHandler.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/GSSAPISASLMechanismHandler.java
index 2425412..396dd30 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/GSSAPISASLMechanismHandler.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/GSSAPISASLMechanismHandler.java
@@ -29,7 +29,7 @@
 
 
 import static org.opends.messages.ExtensionMessages.*;
-import static org.opends.server.config.ConfigConstants.CONFIG_DIR_NAME;
+import static org.opends.server.config.ConfigConstants.*;
 import static org.opends.server.util.ServerConstants.*;
 import static org.opends.server.util.StaticUtils.*;
 
@@ -39,7 +39,6 @@
 import java.io.IOException;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 
@@ -51,27 +50,24 @@
 import javax.security.sasl.Sasl;
 import javax.security.sasl.SaslException;
 
-import org.ietf.jgss.GSSException;
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.LocalizableMessageBuilder;
+import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.opendj.ldap.ResultCode;
+import org.ietf.jgss.GSSException;
 import org.opends.server.admin.server.ConfigurationChangeListener;
-import org.opends.server.admin.std.meta.
-  GSSAPISASLMechanismHandlerCfgDefn.QualityOfProtection;
+import org.opends.server.admin.std.meta.GSSAPISASLMechanismHandlerCfgDefn.QualityOfProtection;
 import org.opends.server.admin.std.server.GSSAPISASLMechanismHandlerCfg;
 import org.opends.server.admin.std.server.SASLMechanismHandlerCfg;
 import org.opends.server.api.ClientConnection;
 import org.opends.server.api.IdentityMapper;
 import org.opends.server.api.SASLMechanismHandler;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.core.BindOperation;
 import org.opends.server.core.DirectoryServer;
-import org.forgerock.i18n.slf4j.LocalizedLogger;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.DN;
 import org.opends.server.types.InitializationException;
-import org.forgerock.opendj.ldap.ResultCode;
-
-
 
 /**
  * This class provides an implementation of a SASL mechanism that
@@ -191,6 +187,7 @@
    * @throws UnsupportedCallbackException
    *           if an error occurs.
    */
+  @Override
   public void handle(Callback[] callbacks) throws UnsupportedCallbackException
   {
   }
@@ -473,6 +470,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationChangeAcceptable(
       GSSAPISASLMechanismHandlerCfg newConfiguration,
       List<LocalizableMessage> unacceptableReasons) {
@@ -523,11 +521,10 @@
   /**
    * {@inheritDoc}
    */
-  public ConfigChangeResult applyConfigurationChange(
-      GSSAPISASLMechanismHandlerCfg newConfiguration) {
-    ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
+  @Override
+  public ConfigChangeResult applyConfigurationChange(GSSAPISASLMechanismHandlerCfg newConfiguration)
+  {
+    final ConfigChangeResult ccr = new ConfigChangeResult();
     try
     {
       logout();
@@ -537,21 +534,21 @@
     }
     catch (InitializationException ex) {
       logger.traceException(ex);
-      messages.add(ex.getMessageObject());
+      ccr.addMessage(ex.getMessageObject());
       clearProperties();
-      resultCode = ResultCode.OTHER;
+      ccr.setResultCode(ResultCode.OTHER);
     } catch (UnknownHostException ex) {
       logger.traceException(ex);
-      messages.add(ERR_SASL_CANNOT_GET_SERVER_FQDN.get(configEntryDN, getExceptionMessage(ex)));
+      ccr.addMessage(ERR_SASL_CANNOT_GET_SERVER_FQDN.get(configEntryDN, getExceptionMessage(ex)));
       clearProperties();
-      resultCode = ResultCode.OTHER;
+      ccr.setResultCode(ResultCode.OTHER);
     } catch (IOException ex) {
       logger.traceException(ex);
-      messages.add(ERR_SASLGSSAPI_CANNOT_CREATE_JAAS_CONFIG.get(getExceptionMessage(ex)));
+      ccr.addMessage(ERR_SASLGSSAPI_CANNOT_CREATE_JAAS_CONFIG.get(getExceptionMessage(ex)));
       clearProperties();
-      resultCode = ResultCode.OTHER;
+      ccr.setResultCode(ResultCode.OTHER);
     }
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 /**
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/JMXAlertHandler.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/JMXAlertHandler.java
index 710ed5b..d09c410 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/JMXAlertHandler.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/JMXAlertHandler.java
@@ -25,10 +25,8 @@
  *      Portions Copyright 2014 ForgeRock AS
  */
 package org.opends.server.extensions;
+
 import org.forgerock.i18n.LocalizableMessage;
-
-
-
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.ConcurrentHashMap;
@@ -62,15 +60,10 @@
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.DN;
 import org.opends.server.types.InitializationException;
-import org.forgerock.opendj.ldap.ResultCode;
-
 import static org.opends.messages.ConfigMessages.*;
 import static org.opends.messages.ExtensionMessages.*;
-
 import static org.opends.server.util.ServerConstants.*;
 
-
-
 /**
  * This class provides an implementation of a Directory Server alert handler
  * that will send alerts using JMX notifications.
@@ -83,9 +76,7 @@
 {
   private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
 
-  /**
-   * The fully-qualified name of this class.
-   */
+  /** The fully-qualified name of this class. */
   private static final String CLASS_NAME =
        "org.opends.server.extensions.JMXAlertHandler";
 
@@ -407,8 +398,6 @@
                                         JMXAlertHandlerCfg configuration)
   {
     currentConfig = configuration;
-
-    return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    return new ConfigChangeResult();
   }
 }
-
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/LDAPPassThroughAuthenticationPolicyFactory.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/LDAPPassThroughAuthenticationPolicyFactory.java
index 20eb5b8..14cacaf 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/LDAPPassThroughAuthenticationPolicyFactory.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/LDAPPassThroughAuthenticationPolicyFactory.java
@@ -1976,7 +1976,7 @@
       {
         exclusiveLock.unlock();
       }
-      return new ConfigChangeResult(ResultCode.SUCCESS, false);
+      return new ConfigChangeResult();
     }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/LengthBasedPasswordValidator.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/LengthBasedPasswordValidator.java
index 7d6a1b0..736f929 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/LengthBasedPasswordValidator.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/LengthBasedPasswordValidator.java
@@ -25,10 +25,8 @@
  *      Portions Copyright 2014 ForgeRock AS
  */
 package org.opends.server.extensions;
+
 import org.forgerock.i18n.LocalizableMessage;
-
-
-
 import java.util.List;
 import java.util.Set;
 
@@ -38,12 +36,10 @@
 import org.opends.server.api.PasswordValidator;
 import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.types.*;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.forgerock.opendj.ldap.ByteString;
 import static org.opends.messages.ExtensionMessages.*;
 import org.forgerock.i18n.LocalizableMessageBuilder;
 
-
 /**
  * This class provides a password validator that can ensure that the provided
  * password meets minimum and/or maximum length requirements.
@@ -183,10 +179,7 @@
   public ConfigChangeResult applyConfigurationChange(
               LengthBasedPasswordValidatorCfg configuration)
   {
-    // We will always accept the proposed configuration if it's gotten to this
-    // point.
     currentConfig = configuration;
-    return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    return new ConfigChangeResult();
   }
 }
-
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/MemberVirtualAttributeProvider.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/MemberVirtualAttributeProvider.java
index 08c86cc..817ab42 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/MemberVirtualAttributeProvider.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/MemberVirtualAttributeProvider.java
@@ -334,10 +334,8 @@
   public ConfigChangeResult applyConfigurationChange(
                                  MemberVirtualAttributeCfg configuration)
   {
-    // Just accept the new configuration as-is.
     currentConfig = configuration;
-
-    return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    return new ConfigChangeResult();
   }
 }
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/PBKDF2PasswordStorageScheme.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/PBKDF2PasswordStorageScheme.java
index b3a1908..8d15bbf 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/PBKDF2PasswordStorageScheme.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/PBKDF2PasswordStorageScheme.java
@@ -138,7 +138,7 @@
       PBKDF2PasswordStorageSchemeCfg configuration)
   {
     this.config = configuration;
-    return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    return new ConfigChangeResult();
   }
 
   /** {@inheritDoc} */
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/PKCS11KeyManagerProvider.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/PKCS11KeyManagerProvider.java
index cda03a7..65d5187 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/PKCS11KeyManagerProvider.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/PKCS11KeyManagerProvider.java
@@ -34,7 +34,6 @@
 import java.io.FileReader;
 import java.io.IOException;
 import java.security.KeyStore;
-import java.util.ArrayList;
 import java.util.List;
 import javax.net.ssl.KeyManager;
 import javax.net.ssl.KeyManagerFactory;
@@ -53,11 +52,8 @@
 
 import org.forgerock.i18n.slf4j.LocalizedLogger;
 import static org.opends.messages.ExtensionMessages.*;
-
 import static org.opends.server.util.StaticUtils.*;
 
-
-
 /**
  * This class defines a key manager provider that will access keys stored on a
  * PKCS#11 device.  It will use the Java PKCS#11 interface, which may need to be
@@ -367,10 +363,7 @@
   public ConfigChangeResult applyConfigurationChange(
                                  PKCS11KeyManagerProviderCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
-
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     // Get the PIN needed to access the contents of the keystore file.
     //
@@ -392,9 +385,8 @@
 
       if (pinStr == null)
       {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-
-        messages.add(ERR_PKCS11_KEYMANAGER_PIN_PROPERTY_NOT_SET.get(propertyName, configEntryDN));
+        ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+        ccr.addMessage(ERR_PKCS11_KEYMANAGER_PIN_PROPERTY_NOT_SET.get(propertyName, configEntryDN));
       }
       else
       {
@@ -408,9 +400,8 @@
 
       if (pinStr == null)
       {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-
-        messages.add(ERR_PKCS11_KEYMANAGER_PIN_ENVAR_NOT_SET.get(enVarName, configEntryDN));
+        ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+        ccr.addMessage(ERR_PKCS11_KEYMANAGER_PIN_ENVAR_NOT_SET.get(enVarName, configEntryDN));
       }
       else
       {
@@ -424,9 +415,8 @@
 
       if (!pinFile.exists())
       {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-
-        messages.add(ERR_PKCS11_KEYMANAGER_PIN_NO_SUCH_FILE.get(fileName, configEntryDN));
+        ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+        ccr.addMessage(ERR_PKCS11_KEYMANAGER_PIN_NO_SUCH_FILE.get(fileName, configEntryDN));
       }
       else
       {
@@ -438,8 +428,8 @@
         }
         catch (IOException ioe)
         {
-          resultCode = DirectoryServer.getServerErrorResultCode();
-          messages.add(ERR_PKCS11_KEYMANAGER_PIN_FILE_CANNOT_READ.get(
+          ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+          ccr.addMessage(ERR_PKCS11_KEYMANAGER_PIN_FILE_CANNOT_READ.get(
               fileName, configEntryDN, getExceptionMessage(ioe)));
         }
         finally
@@ -449,8 +439,8 @@
 
         if (pinStr == null)
         {
-          resultCode = DirectoryServer.getServerErrorResultCode();
-          messages.add(ERR_PKCS11_KEYMANAGER_PIN_FILE_EMPTY.get(fileName, configEntryDN));
+          ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+          ccr.addMessage(ERR_PKCS11_KEYMANAGER_PIN_FILE_EMPTY.get(fileName, configEntryDN));
         }
         else
         {
@@ -463,14 +453,12 @@
       newPIN = configuration.getKeyStorePin().toCharArray();
     }
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       currentConfig = configuration;
       keyStorePIN   = newPIN;
     }
 
-
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 }
-
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/ParallelWorkQueue.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/ParallelWorkQueue.java
index 7ad105a..10b711d 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/ParallelWorkQueue.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/ParallelWorkQueue.java
@@ -26,10 +26,9 @@
  */
 package org.opends.server.extensions;
 
-
-
 import static org.opends.messages.ConfigMessages.*;
 import static org.opends.messages.CoreMessages.*;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.ConcurrentLinkedQueue;
@@ -38,21 +37,19 @@
 import java.util.concurrent.atomic.AtomicLong;
 
 import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.std.server.ParallelWorkQueueCfg;
 import org.opends.server.api.WorkQueue;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.core.DirectoryServer;
-import org.forgerock.i18n.slf4j.LocalizedLogger;
 import org.opends.server.monitors.ParallelWorkQueueMonitor;
 import org.opends.server.types.CancelRequest;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.InitializationException;
 import org.opends.server.types.Operation;
-import org.forgerock.opendj.ldap.ResultCode;
-
-
 
 /**
  * This class defines a data structure for storing and interacting with the
@@ -488,7 +485,6 @@
   public ConfigChangeResult applyConfigurationChange(
                                  ParallelWorkQueueCfg configuration)
   {
-    ArrayList<LocalizableMessage> resultMessages = new ArrayList<LocalizableMessage>();
     int newNumThreads =
         computeNumWorkerThreads(configuration.getNumWorkerThreads());
 
@@ -526,7 +522,7 @@
         }
       }
     }
-    return new ConfigChangeResult(ResultCode.SUCCESS, false, resultMessages);
+    return new ConfigChangeResult();
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/PasswordModifyExtendedOperation.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/PasswordModifyExtendedOperation.java
index b51eb51..7472828 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/PasswordModifyExtendedOperation.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/PasswordModifyExtendedOperation.java
@@ -26,6 +26,12 @@
  */
 package org.opends.server.extensions;
 
+import static org.opends.messages.CoreMessages.*;
+import static org.opends.messages.ExtensionMessages.*;
+import static org.opends.server.extensions.ExtensionsConstants.*;
+import static org.opends.server.util.ServerConstants.*;
+import static org.opends.server.util.StaticUtils.*;
+
 import java.io.IOException;
 import java.util.*;
 import java.util.concurrent.locks.Lock;
@@ -33,17 +39,18 @@
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.LocalizableMessageBuilder;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.config.server.ConfigException;
 import org.forgerock.opendj.io.ASN1;
 import org.forgerock.opendj.io.ASN1Reader;
 import org.forgerock.opendj.io.ASN1Writer;
 import org.forgerock.opendj.ldap.ByteString;
 import org.forgerock.opendj.ldap.ByteStringBuilder;
 import org.forgerock.opendj.ldap.ModificationType;
+import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.std.server.ExtendedOperationHandlerCfg;
 import org.opends.server.admin.std.server.PasswordModifyExtendedOperationHandlerCfg;
 import org.opends.server.api.*;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.controls.PasswordPolicyErrorType;
 import org.opends.server.controls.PasswordPolicyResponseControl;
 import org.opends.server.controls.PasswordPolicyWarningType;
@@ -55,13 +62,6 @@
 import org.opends.server.schema.AuthPasswordSyntax;
 import org.opends.server.schema.UserPasswordSyntax;
 import org.opends.server.types.*;
-import org.forgerock.opendj.ldap.ResultCode;
-
-import static org.opends.messages.CoreMessages.*;
-import static org.opends.messages.ExtensionMessages.*;
-import static org.opends.server.extensions.ExtensionsConstants.*;
-import static org.opends.server.util.ServerConstants.*;
-import static org.opends.server.util.StaticUtils.*;
 
 /**
  * This class implements the password modify extended operation defined in RFC
@@ -1246,9 +1246,7 @@
   public ConfigChangeResult applyConfigurationChange(
        PasswordModifyExtendedOperationHandlerCfg config)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    List<LocalizableMessage>     messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
 
     // Make sure that the specified identity mapper is OK.
@@ -1260,23 +1258,21 @@
       mapper   = DirectoryServer.getIdentityMapper(mapperDN);
       if (mapper == null)
       {
-        resultCode = ResultCode.CONSTRAINT_VIOLATION;
-
-        messages.add(ERR_EXTOP_PASSMOD_NO_SUCH_ID_MAPPER.get(mapperDN, config.dn()));
+        ccr.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
+        ccr.addMessage(ERR_EXTOP_PASSMOD_NO_SUCH_ID_MAPPER.get(mapperDN, config.dn()));
       }
     }
     catch (Exception e)
     {
       logger.traceException(e);
 
-      resultCode = DirectoryServer.getServerErrorResultCode();
-
-      messages.add(ERR_EXTOP_PASSMOD_CANNOT_DETERMINE_ID_MAPPER.get(config.dn(), getExceptionMessage(e)));
+      ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ERR_EXTOP_PASSMOD_CANNOT_DETERMINE_ID_MAPPER.get(config.dn(), getExceptionMessage(e)));
     }
 
 
     // If all of the changes were acceptable, then apply them.
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       if (! identityMapperDN.equals(mapperDN))
       {
@@ -1289,7 +1285,7 @@
     // Save this configuration for future reference.
     currentConfig = config;
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
   /** {@inheritDoc} */
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/PlainSASLMechanismHandler.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/PlainSASLMechanismHandler.java
index 9ee182f..fa7061e 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/PlainSASLMechanismHandler.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/PlainSASLMechanismHandler.java
@@ -33,7 +33,6 @@
 import static org.opends.server.util.ServerConstants.*;
 import static org.opends.server.util.StaticUtils.*;
 
-import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.locks.Lock;
 
@@ -53,8 +52,6 @@
 import org.forgerock.opendj.ldap.ResultCode;
 import org.forgerock.opendj.ldap.ByteString;
 
-
-
 /**
  * This class provides an implementation of a SASL mechanism that uses
  * plain-text authentication.  It is based on the proposal defined in
@@ -562,18 +559,13 @@
   public ConfigChangeResult applyConfigurationChange(
               PlainSASLMechanismHandlerCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
-
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     // Get the identity mapper that should be used to find users.
     DN identityMapperDN = configuration.getIdentityMapperDN();
     identityMapper = DirectoryServer.getIdentityMapper(identityMapperDN);
     currentConfig  = configuration;
 
-
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 }
-
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/RandomPasswordGenerator.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/RandomPasswordGenerator.java
index 1623101..7ccb60a 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/RandomPasswordGenerator.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/RandomPasswordGenerator.java
@@ -26,7 +26,8 @@
  */
 package org.opends.server.extensions;
 
-
+import static org.opends.messages.ExtensionMessages.*;
+import static org.opends.server.util.StaticUtils.*;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -35,20 +36,16 @@
 import java.util.StringTokenizer;
 
 import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.opendj.ldap.ByteString;
+import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.std.server.PasswordGeneratorCfg;
 import org.opends.server.admin.std.server.RandomPasswordGeneratorCfg;
 import org.opends.server.api.PasswordGenerator;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.core.DirectoryServer;
-import org.forgerock.i18n.slf4j.LocalizedLogger;
 import org.opends.server.types.*;
-import org.forgerock.opendj.ldap.ResultCode;
-import org.forgerock.opendj.ldap.ByteString;
-import static org.opends.messages.ExtensionMessages.*;
-import static org.opends.server.util.StaticUtils.*;
-
-
 
 /**
  * This class provides an implementation of a Directory Server password
@@ -241,6 +238,7 @@
    * @throws  DirectoryException  If a problem occurs while attempting to
    *                              generate the password.
    */
+  @Override
   public ByteString generatePassword(Entry userEntry)
          throws DirectoryException
   {
@@ -276,6 +274,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationChangeAcceptable(
       RandomPasswordGeneratorCfg configuration,
       List<LocalizableMessage> unacceptableReasons)
@@ -377,12 +376,11 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public ConfigChangeResult applyConfigurationChange(
       RandomPasswordGeneratorCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
 
     // Get the character sets for use in generating the password.  At least one
@@ -395,12 +393,8 @@
       newEncodedCharacterSets = configuration.getPasswordCharacterSet();
       if (newEncodedCharacterSets.size() == 0)
       {
-        messages.add(ERR_RANDOMPWGEN_NO_CHARSETS.get(configEntryDN));
-
-        if (resultCode == ResultCode.SUCCESS)
-        {
-          resultCode = ResultCode.OBJECTCLASS_VIOLATION;
-        }
+        ccr.addMessage(ERR_RANDOMPWGEN_NO_CHARSETS.get(configEntryDN));
+        ccr.setResultCodeIfSuccess(ResultCode.OBJECTCLASS_VIOLATION);
       }
       else
       {
@@ -409,12 +403,8 @@
         {
           if (charsets.containsKey(s.getName()))
           {
-            messages.add(ERR_RANDOMPWGEN_CHARSET_NAME_CONFLICT.get(configEntryDN, s.getName()));
-
-            if (resultCode == ResultCode.SUCCESS)
-            {
-              resultCode = ResultCode.CONSTRAINT_VIOLATION;
-            }
+            ccr.addMessage(ERR_RANDOMPWGEN_CHARSET_NAME_CONFLICT.get(configEntryDN, s.getName()));
+            ccr.setResultCodeIfSuccess(ResultCode.CONSTRAINT_VIOLATION);
           }
           else
           {
@@ -425,24 +415,15 @@
     }
     catch (ConfigException ce)
     {
-      messages.add(ce.getMessageObject());
-
-      if (resultCode == ResultCode.SUCCESS)
-      {
-        resultCode = ResultCode.INVALID_ATTRIBUTE_SYNTAX;
-      }
+      ccr.addMessage(ce.getMessageObject());
+      ccr.setResultCodeIfSuccess(ResultCode.INVALID_ATTRIBUTE_SYNTAX);
     }
     catch (Exception e)
     {
       logger.traceException(e);
 
-      messages.add(ERR_RANDOMPWGEN_CANNOT_DETERMINE_CHARSETS.get(
-              getExceptionMessage(e)));
-
-      if (resultCode == ResultCode.SUCCESS)
-      {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-      }
+      ccr.addMessage(ERR_RANDOMPWGEN_CANNOT_DETERMINE_CHARSETS.get(getExceptionMessage(e)));
+      ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
     }
 
 
@@ -471,12 +452,8 @@
           NamedCharacterSet charset = charsets.get(name);
           if (charset == null)
           {
-            messages.add(ERR_RANDOMPWGEN_UNKNOWN_CHARSET.get(newFormatString, name));
-
-            if (resultCode == ResultCode.SUCCESS)
-            {
-              resultCode = ResultCode.CONSTRAINT_VIOLATION;
-            }
+            ccr.addMessage(ERR_RANDOMPWGEN_UNKNOWN_CHARSET.get(newFormatString, name));
+            ccr.setResultCodeIfSuccess(ResultCode.CONSTRAINT_VIOLATION);
           }
           else
           {
@@ -488,12 +465,8 @@
         {
           logger.traceException(e);
 
-          messages.add(ERR_RANDOMPWGEN_INVALID_PWFORMAT.get(newFormatString));
-
-          if (resultCode == ResultCode.SUCCESS)
-          {
-            resultCode = DirectoryServer.getServerErrorResultCode();
-          }
+          ccr.addMessage(ERR_RANDOMPWGEN_INVALID_PWFORMAT.get(newFormatString));
+          ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
         }
       }
     }
@@ -501,18 +474,13 @@
     {
       logger.traceException(e);
 
-      messages.add(ERR_RANDOMPWGEN_CANNOT_DETERMINE_PWFORMAT.get(
-              getExceptionMessage(e)));
-
-      if (resultCode == ResultCode.SUCCESS)
-      {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-      }
+      ccr.addMessage(ERR_RANDOMPWGEN_CANNOT_DETERMINE_PWFORMAT.get(getExceptionMessage(e)));
+      ccr.setResultCodeIfSuccess(DirectoryServer.getServerErrorResultCode());
     }
 
 
     // If everything looks OK, then apply the changes.
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       synchronized (generatorLock)
       {
@@ -532,8 +500,6 @@
       }
     }
 
-
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 }
-
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/RegularExpressionIdentityMapper.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/RegularExpressionIdentityMapper.java
index e26ef269..33faf92 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/RegularExpressionIdentityMapper.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/RegularExpressionIdentityMapper.java
@@ -26,6 +26,10 @@
  */
 package org.opends.server.extensions;
 
+import static org.opends.messages.ExtensionMessages.*;
+import static org.opends.server.protocols.internal.InternalClientConnection.*;
+import static org.opends.server.protocols.internal.Requests.*;
+
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
@@ -51,12 +55,8 @@
 import org.opends.server.protocols.internal.InternalClientConnection;
 import org.opends.server.protocols.internal.InternalSearchOperation;
 import org.opends.server.protocols.internal.SearchRequest;
-import static org.opends.server.protocols.internal.Requests.*;
 import org.opends.server.types.*;
 
-import static org.opends.messages.ExtensionMessages.*;
-import static org.opends.server.protocols.internal.InternalClientConnection.*;
-
 /**
  * This class provides an implementation of a Directory Server identity mapper
  * that uses a regular expression to process the provided ID string, and then
@@ -368,10 +368,7 @@
   public ConfigChangeResult applyConfigurationChange(
               RegularExpressionIdentityMapperCfg configuration)
   {
-    ResultCode         resultCode          = ResultCode.SUCCESS;
-    boolean            adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
-
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     Pattern newMatchPattern = null;
     try
@@ -380,11 +377,8 @@
     }
     catch (PatternSyntaxException pse)
     {
-      LocalizableMessage message = ERR_REGEXMAP_INVALID_MATCH_PATTERN.get(
-                      configuration.getMatchPattern(),
-                                  pse.getMessage());
-      messages.add(message);
-      resultCode = ResultCode.CONSTRAINT_VIOLATION;
+      ccr.addMessage(ERR_REGEXMAP_INVALID_MATCH_PATTERN.get(configuration.getMatchPattern(), pse.getMessage()));
+      ccr.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
     }
 
     String newReplacePattern = configuration.getReplacePattern();
@@ -398,7 +392,7 @@
          configuration.getMatchAttribute().toArray(new AttributeType[0]);
 
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       attributeTypes = newAttributeTypes;
       currentConfig  = configuration;
@@ -406,8 +400,6 @@
       replacePattern = newReplacePattern;
     }
 
-
-   return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 }
-
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/RepeatedCharactersPasswordValidator.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/RepeatedCharactersPasswordValidator.java
index 06e6c04..da91fd4 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/RepeatedCharactersPasswordValidator.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/RepeatedCharactersPasswordValidator.java
@@ -29,7 +29,6 @@
 
 
 
-import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
 
@@ -38,7 +37,6 @@
             RepeatedCharactersPasswordValidatorCfg;
 import org.opends.server.api.PasswordValidator;
 import org.opends.server.types.*;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.forgerock.opendj.ldap.ByteString;
 import static org.opends.messages.ExtensionMessages.*;
 import org.forgerock.i18n.LocalizableMessageBuilder;
@@ -180,15 +178,9 @@
   public ConfigChangeResult applyConfigurationChange(
                       RepeatedCharactersPasswordValidatorCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
-
     // For this password validator, we will always be able to successfully apply
     // the new configuration.
     currentConfig = configuration;
-
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return new ConfigChangeResult();
   }
 }
-
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/SMTPAccountStatusNotificationHandler.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/SMTPAccountStatusNotificationHandler.java
index c012049..ecb4583 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/SMTPAccountStatusNotificationHandler.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/SMTPAccountStatusNotificationHandler.java
@@ -26,7 +26,8 @@
  */
 package org.opends.server.extensions;
 
-
+import static org.opends.messages.ExtensionMessages.*;
+import static org.opends.server.util.StaticUtils.*;
 
 import java.io.BufferedReader;
 import java.io.File;
@@ -39,32 +40,26 @@
 
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.LocalizableMessageBuilder;
+import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.opendj.ldap.ByteString;
+import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.util.Utils;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.std.server.AccountStatusNotificationHandlerCfg;
-import org.opends.server.admin.std.server.
-            SMTPAccountStatusNotificationHandlerCfg;
+import org.opends.server.admin.std.server.SMTPAccountStatusNotificationHandlerCfg;
 import org.opends.server.api.AccountStatusNotificationHandler;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.core.DirectoryServer;
-import org.forgerock.i18n.slf4j.LocalizedLogger;
-import org.forgerock.util.Utils;
 import org.opends.server.types.AccountStatusNotification;
 import org.opends.server.types.AccountStatusNotificationProperty;
 import org.opends.server.types.AccountStatusNotificationType;
 import org.opends.server.types.Attribute;
 import org.opends.server.types.AttributeType;
-import org.forgerock.opendj.ldap.ByteString;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.Entry;
 import org.opends.server.types.InitializationException;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.server.util.EMailMessage;
 
-import static org.opends.messages.ExtensionMessages.*;
-import static org.opends.server.util.StaticUtils.*;
-
-
-
 /**
  * This class provides an implementation of an account status notification
  * handler that can send e-mail messages via SMTP to end users and/or
@@ -129,6 +124,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public void initializeStatusNotificationHandler(
                    SMTPAccountStatusNotificationHandlerCfg configuration)
          throws ConfigException, InitializationException
@@ -484,6 +480,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationAcceptable(
                       AccountStatusNotificationHandlerCfg
                            configuration,
@@ -499,6 +496,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public void handleStatusNotification(AccountStatusNotification notification)
   {
     SMTPAccountStatusNotificationHandlerCfg config = currentConfig;
@@ -664,6 +662,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationChangeAcceptable(
                       SMTPAccountStatusNotificationHandlerCfg configuration,
                       List<LocalizableMessage> unacceptableReasons)
@@ -724,9 +723,11 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public ConfigChangeResult applyConfigurationChange(
               SMTPAccountStatusNotificationHandlerCfg configuration)
   {
+    final ConfigChangeResult ccr = new ConfigChangeResult();
     try
     {
       HashMap<AccountStatusNotificationType,String> subjects =
@@ -738,18 +739,13 @@
       currentConfig = configuration;
       subjectMap    = subjects;
       templateMap   = templates;
-      return new ConfigChangeResult(ResultCode.SUCCESS, false);
     }
     catch (ConfigException ce)
     {
       logger.traceException(ce);
-
-      LinkedList<LocalizableMessage> messageList = new LinkedList<LocalizableMessage>();
-      messageList.add(ce.getMessageObject());
-
-      return new ConfigChangeResult(ResultCode.UNWILLING_TO_PERFORM, false,
-                                    messageList);
+      ccr.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
+      ccr.addMessage(ce.getMessageObject());
     }
+    return ccr;
   }
 }
-
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/SMTPAlertHandler.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/SMTPAlertHandler.java
index ec5a71b..0644a35 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/SMTPAlertHandler.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/SMTPAlertHandler.java
@@ -36,7 +36,6 @@
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
 import org.forgerock.opendj.config.server.ConfigException;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.std.server.AlertHandlerCfg;
 import org.opends.server.admin.std.server.SMTPAlertHandlerCfg;
@@ -225,8 +224,6 @@
                                  SMTPAlertHandlerCfg configuration)
   {
     currentConfig = configuration;
-
-    return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    return new ConfigChangeResult();
   }
 }
-
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/SimilarityBasedPasswordValidator.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/SimilarityBasedPasswordValidator.java
index 7faf885..86623cf 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/SimilarityBasedPasswordValidator.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/SimilarityBasedPasswordValidator.java
@@ -33,7 +33,6 @@
 import org.opends.server.api.PasswordValidator;
 import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.types.*;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.forgerock.opendj.ldap.ByteString;
 import org.opends.server.util.LevenshteinDistance;
 import org.opends.server.admin.std.server.SimilarityBasedPasswordValidatorCfg;
@@ -149,7 +148,6 @@
               SimilarityBasedPasswordValidatorCfg configuration)
   {
     currentConfig = configuration;
-    return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    return new ConfigChangeResult();
   }
 }
-
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/SubjectAttributeToUserAttributeCertificateMapper.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/SubjectAttributeToUserAttributeCertificateMapper.java
index 2af9842..948492e 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/SubjectAttributeToUserAttributeCertificateMapper.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/SubjectAttributeToUserAttributeCertificateMapper.java
@@ -27,9 +27,19 @@
  */
 package org.opends.server.extensions;
 
+import static org.opends.messages.ExtensionMessages.*;
+import static org.opends.server.protocols.internal.InternalClientConnection.*;
+import static org.opends.server.protocols.internal.Requests.*;
+import static org.opends.server.util.StaticUtils.*;
+
 import java.security.cert.Certificate;
 import java.security.cert.X509Certificate;
-import java.util.*;
+import java.util.Collection;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
 
 import javax.security.auth.x500.X500Principal;
 
@@ -47,12 +57,16 @@
 import org.opends.server.protocols.internal.InternalClientConnection;
 import org.opends.server.protocols.internal.InternalSearchOperation;
 import org.opends.server.protocols.internal.SearchRequest;
-import static org.opends.server.protocols.internal.Requests.*;
-import org.opends.server.types.*;
-
-import static org.opends.messages.ExtensionMessages.*;
-import static org.opends.server.protocols.internal.InternalClientConnection.*;
-import static org.opends.server.util.StaticUtils.*;
+import org.opends.server.types.AttributeType;
+import org.opends.server.types.ConfigChangeResult;
+import org.opends.server.types.DN;
+import org.opends.server.types.DirectoryException;
+import org.opends.server.types.Entry;
+import org.opends.server.types.IndexType;
+import org.opends.server.types.InitializationException;
+import org.opends.server.types.RDN;
+import org.opends.server.types.SearchFilter;
+import org.opends.server.types.SearchResultEntry;
 
 /**
  * This class implements a very simple Directory Server certificate mapper that
@@ -449,9 +463,7 @@
               SubjectAttributeToUserAttributeCertificateMapperCfg
                    configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
 
     // Get and validate the subject attribute to user attribute mappings.
@@ -464,13 +476,10 @@
       int colonPos = lowerMap.indexOf(':');
       if (colonPos <= 0)
       {
-        if (resultCode == ResultCode.SUCCESS)
-        {
-          resultCode = ResultCode.CONSTRAINT_VIOLATION;
-        }
+        ccr.setResultCodeIfSuccess(ResultCode.CONSTRAINT_VIOLATION);
 
 
-        messages.add(ERR_SATUACM_INVALID_MAP_FORMAT.get(configEntryDN, mapStr));
+        ccr.addMessage(ERR_SATUACM_INVALID_MAP_FORMAT.get(configEntryDN, mapStr));
         break;
       }
 
@@ -478,13 +487,10 @@
       String userAttrName = lowerMap.substring(colonPos+1).trim();
       if ((certAttrName.length() == 0) || (userAttrName.length() == 0))
       {
-        if (resultCode == ResultCode.SUCCESS)
-        {
-          resultCode = ResultCode.CONSTRAINT_VIOLATION;
-        }
+        ccr.setResultCodeIfSuccess(ResultCode.CONSTRAINT_VIOLATION);
 
 
-        messages.add(ERR_SATUACM_INVALID_MAP_FORMAT.get(configEntryDN, mapStr));
+        ccr.addMessage(ERR_SATUACM_INVALID_MAP_FORMAT.get(configEntryDN, mapStr));
         break;
       }
 
@@ -493,13 +499,8 @@
 
       if (newAttributeMap.containsKey(certAttrName))
       {
-        if (resultCode == ResultCode.SUCCESS)
-        {
-          resultCode = ResultCode.CONSTRAINT_VIOLATION;
-        }
-
-
-        messages.add(ERR_SATUACM_DUPLICATE_CERT_ATTR.get(configEntryDN, certAttrName));
+        ccr.setResultCodeIfSuccess(ResultCode.CONSTRAINT_VIOLATION);
+        ccr.addMessage(ERR_SATUACM_DUPLICATE_CERT_ATTR.get(configEntryDN, certAttrName));
         break;
       }
 
@@ -507,13 +508,8 @@
            DirectoryServer.getAttributeType(userAttrName, false);
       if (userAttrType == null)
       {
-        if (resultCode == ResultCode.SUCCESS)
-        {
-          resultCode = ResultCode.CONSTRAINT_VIOLATION;
-        }
-
-
-        messages.add(ERR_SATUACM_NO_SUCH_ATTR.get(mapStr, configEntryDN, userAttrName));
+        ccr.setResultCodeIfSuccess(ResultCode.CONSTRAINT_VIOLATION);
+        ccr.addMessage(ERR_SATUACM_NO_SUCH_ATTR.get(mapStr, configEntryDN, userAttrName));
         break;
       }
 
@@ -521,13 +517,10 @@
       {
         if (attrType.equals(userAttrType))
         {
-          if (resultCode == ResultCode.SUCCESS)
-          {
-            resultCode = ResultCode.CONSTRAINT_VIOLATION;
-          }
+          ccr.setResultCodeIfSuccess(ResultCode.CONSTRAINT_VIOLATION);
 
 
-          messages.add(ERR_SATUACM_DUPLICATE_USER_ATTR.get(configEntryDN, attrType.getNameOrOID()));
+          ccr.addMessage(ERR_SATUACM_DUPLICATE_USER_ATTR.get(configEntryDN, attrType.getNameOrOID()));
           break mapLoop;
         }
       }
@@ -552,20 +545,20 @@
         {
           LocalizableMessage message = WARN_SATUACM_ATTR_UNINDEXED.get(
               configuration.dn(), t.getNameOrOID(), b.getBackendID());
-          messages.add(message);
+          ccr.addMessage(message);
           logger.error(message);
         }
       }
     }
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       attributeMap  = newAttributeMap;
       currentConfig = configuration;
     }
 
 
-   return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+   return ccr;
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/SubjectDNToUserAttributeCertificateMapper.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/SubjectDNToUserAttributeCertificateMapper.java
index 44b89ea..52cc784 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/SubjectDNToUserAttributeCertificateMapper.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/SubjectDNToUserAttributeCertificateMapper.java
@@ -301,7 +301,7 @@
                    configuration)
   {
     currentConfig = configuration;
-    return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    return new ConfigChangeResult();
   }
 }
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/TraditionalWorkQueue.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/TraditionalWorkQueue.java
index e021963..8f83518 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/TraditionalWorkQueue.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/TraditionalWorkQueue.java
@@ -30,6 +30,7 @@
 
 import static org.opends.messages.ConfigMessages.*;
 import static org.opends.messages.CoreMessages.*;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.LinkedBlockingQueue;
@@ -40,19 +41,19 @@
 import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock;
 
 import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.std.server.TraditionalWorkQueueCfg;
 import org.opends.server.api.WorkQueue;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.core.DirectoryServer;
-import org.forgerock.i18n.slf4j.LocalizedLogger;
 import org.opends.server.monitors.TraditionalWorkQueueMonitor;
 import org.opends.server.types.CancelRequest;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.InitializationException;
 import org.opends.server.types.Operation;
-import org.forgerock.opendj.ldap.ResultCode;
 
 
 
@@ -660,7 +661,6 @@
   public ConfigChangeResult applyConfigurationChange(
       TraditionalWorkQueueCfg configuration)
   {
-    ArrayList<LocalizableMessage> resultMessages = new ArrayList<LocalizableMessage>();
     int newNumThreads =
         computeNumWorkerThreads(configuration.getNumWorkerThreads());
     int newMaxCapacity = configuration.getMaxWorkQueueCapacity();
@@ -773,7 +773,7 @@
       }
     }
 
-    return new ConfigChangeResult(ResultCode.SUCCESS, false, resultMessages);
+    return new ConfigChangeResult();
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/UniqueCharactersPasswordValidator.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/UniqueCharactersPasswordValidator.java
index ef396a5..7ca75fb 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/UniqueCharactersPasswordValidator.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/UniqueCharactersPasswordValidator.java
@@ -29,7 +29,6 @@
 
 
 
-import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -38,7 +37,6 @@
 import org.opends.server.admin.std.server.UniqueCharactersPasswordValidatorCfg;
 import org.opends.server.api.PasswordValidator;
 import org.opends.server.types.*;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.forgerock.opendj.ldap.ByteString;
 import static org.opends.messages.ExtensionMessages.*;
 import org.forgerock.i18n.LocalizableMessageBuilder;
@@ -170,15 +168,13 @@
   public ConfigChangeResult applyConfigurationChange(
                       UniqueCharactersPasswordValidatorCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     // For this password validator, we will always be able to successfully apply
     // the new configuration.
     currentConfig = configuration;
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 }
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/UserDefinedVirtualAttributeProvider.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/UserDefinedVirtualAttributeProvider.java
index 88f714e..fe208d0 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/UserDefinedVirtualAttributeProvider.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/extensions/UserDefinedVirtualAttributeProvider.java
@@ -184,7 +184,7 @@
     // Just accept the new configuration as-is.
     currentConfig = configuration;
 
-    return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    return new ConfigChangeResult();
   }
 }
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/AbstractLogger.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/AbstractLogger.java
index 6eacdc5..70dcd1d 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/AbstractLogger.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/AbstractLogger.java
@@ -29,7 +29,6 @@
 import static org.opends.messages.ConfigMessages.*;
 import static org.opends.server.util.StaticUtils.*;
 
-import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 import java.util.concurrent.CopyOnWriteArrayList;
@@ -37,18 +36,18 @@
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.LocalizableMessageDescriptor.Arg3;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.server.admin.ClassPropertyDefinition;
 import org.opends.server.admin.server.ConfigurationAddListener;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.server.ConfigurationDeleteListener;
 import org.opends.server.admin.std.server.LogPublisherCfg;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.ServerContext;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.DN;
 import org.opends.server.types.InitializationException;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.server.util.StaticUtils;
 
 /**
@@ -262,10 +261,7 @@
   @Override
   public ConfigChangeResult applyConfigurationAdd(C config)
   {
-    // Default result code.
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     config.addChangeListener((ConfigurationChangeListener) this);
 
@@ -278,18 +274,18 @@
       catch(ConfigException e)
       {
         LocalizedLogger.getLoggerForThisClass().traceException(e);
-        messages.add(e.getMessageObject());
-        resultCode = DirectoryServer.getServerErrorResultCode();
+        ccr.addMessage(e.getMessageObject());
+        ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
       }
       catch (Exception e)
       {
         LocalizedLogger.getLoggerForThisClass().traceException(e);
-        messages.add(ERR_CONFIG_LOGGER_CANNOT_CREATE_LOGGER.get(
+        ccr.addMessage(ERR_CONFIG_LOGGER_CANNOT_CREATE_LOGGER.get(
             config.dn(), stackTraceToSingleLineString(e)));
-        resultCode = DirectoryServer.getServerErrorResultCode();
+        ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
       }
     }
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
   private P findLogPublisher(DN dn)
@@ -310,10 +306,7 @@
   @Override
   public ConfigChangeResult applyConfigurationChange(C config)
   {
-    // Default result code.
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     P logPublisher = findLogPublisher(config.dn());
     if(logPublisher == null)
@@ -336,7 +329,7 @@
         String className = config.getJavaClass();
         if(!className.equals(logPublisher.getClass().getName()))
         {
-          adminActionRequired = true;
+          ccr.setAdminActionRequired(true);
         }
       }
       else
@@ -346,7 +339,7 @@
       }
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
   /**
@@ -365,9 +358,7 @@
   @Override
   public ConfigChangeResult applyConfigurationDelete(C config)
   {
-    // Default result code.
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     P logPublisher = findLogPublisher(config.dn());
     if(logPublisher != null)
@@ -376,10 +367,10 @@
     }
     else
     {
-      resultCode = ResultCode.NO_SUCH_OBJECT;
+      ccr.setResultCode(ResultCode.NO_SUCH_OBJECT);
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired);
+    return ccr;
   }
 
   private boolean isJavaClassAcceptable(C config,
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/AbstractTextAccessLogPublisher.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/AbstractTextAccessLogPublisher.java
index 2aa4c46..279be52 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/AbstractTextAccessLogPublisher.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/AbstractTextAccessLogPublisher.java
@@ -51,7 +51,6 @@
 import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.core.*;
 import org.opends.server.types.*;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.forgerock.opendj.ldap.AddressMask;
 import org.forgerock.opendj.ldap.ByteString;
 
@@ -1027,7 +1026,7 @@
       // Rebuild the filter using the new configuration and criteria.
       buildFilters();
 
-      return new ConfigChangeResult(ResultCode.SUCCESS, false);
+      return new ConfigChangeResult();
     }
 
 
@@ -1065,7 +1064,7 @@
       // Rebuild the filter using the new configuration and criteria.
       buildFilters();
       configuration.addChangeListener(this);
-      return new ConfigChangeResult(ResultCode.SUCCESS, false);
+      return new ConfigChangeResult();
     }
 
 
@@ -1079,7 +1078,7 @@
     {
       // Rebuild the filter using the new configuration and criteria.
       buildFilters();
-      return new ConfigChangeResult(ResultCode.SUCCESS, false);
+      return new ConfigChangeResult();
     }
 
 
@@ -1093,7 +1092,7 @@
     {
       // Rebuild the filter using the new configuration and criteria.
       buildFilters();
-      return new ConfigChangeResult(ResultCode.SUCCESS, false);
+      return new ConfigChangeResult();
     }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/FileNumberRetentionPolicy.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/FileNumberRetentionPolicy.java
index 966c2c1..18ade21 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/FileNumberRetentionPolicy.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/FileNumberRetentionPolicy.java
@@ -38,7 +38,6 @@
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.DirectoryException;
-import org.forgerock.opendj.ldap.ResultCode;
 
 
 /**
@@ -82,15 +81,9 @@
   public ConfigChangeResult applyConfigurationChange(
       FileCountLogRetentionPolicyCfg config)
   {
-    // Default result code.
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
-
     this.numFiles = config.getNumberOfFiles();
     this.config = config;
-
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return new ConfigChangeResult();
   }
 
   /**
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/FixedTimeRotationPolicy.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/FixedTimeRotationPolicy.java
index 8e2f808..50d0b20 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/FixedTimeRotationPolicy.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/FixedTimeRotationPolicy.java
@@ -25,7 +25,6 @@
  *      Portions Copyright 2014 ForgeRock AS
  */
 package org.opends.server.loggers;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Calendar;
 import java.util.List;
@@ -35,13 +34,10 @@
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.std.server.FixedTimeLogRotationPolicyCfg;
 import org.opends.server.types.ConfigChangeResult;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.server.util.TimeThread;
 
-
 /**
- * This class implements a rotation policy based on fixed
- * day/time of day.
+ * This class implements a rotation policy based on fixed day/time of day.
  */
 public class FixedTimeRotationPolicy implements
     RotationPolicy<FixedTimeLogRotationPolicyCfg>,
@@ -86,10 +82,7 @@
   public ConfigChangeResult applyConfigurationChange(
       FixedTimeLogRotationPolicyCfg config)
   {
-    // Default result code.
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     rotationTimes = new int[config.getTimeOfDay().size()];
 
@@ -101,7 +94,7 @@
 
     Arrays.sort(rotationTimes);
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
   /**
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/FreeDiskSpaceRetentionPolicy.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/FreeDiskSpaceRetentionPolicy.java
index 3c730e0..cd8080b 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/FreeDiskSpaceRetentionPolicy.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/FreeDiskSpaceRetentionPolicy.java
@@ -41,7 +41,6 @@
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.DirectoryException;
-import org.forgerock.opendj.ldap.ResultCode;
 
 /**
  * This class implements a retention policy based on the free disk space
@@ -88,15 +87,10 @@
   public ConfigChangeResult applyConfigurationChange(
       FreeDiskSpaceLogRetentionPolicyCfg config)
   {
-    // Default result code.
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
-
     this.freeDiskSpace = config.getFreeDiskSpace();
     this.config = config;
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return new ConfigChangeResult();
   }
 
   /**
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/MultifileTextWriter.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/MultifileTextWriter.java
index 4b4b09d..9e7ec24 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/MultifileTextWriter.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/MultifileTextWriter.java
@@ -27,27 +27,30 @@
 package org.opends.server.loggers;
 
 
-import org.opends.server.api.DirectoryThread;
-import org.opends.server.api.ServerShutdownListener;
-import org.opends.server.core.DirectoryServer;
-import org.opends.server.types.*;
-import org.forgerock.opendj.ldap.ResultCode;
-import org.opends.server.types.FilePermission;
-import org.opends.server.admin.std.server.SizeLimitLogRotationPolicyCfg;
-import org.opends.server.admin.server.ConfigurationChangeListener;
-import org.opends.server.util.TimeThread;
-
-import static org.opends.server.util.StaticUtils.stackTraceToSingleLineString;
 import static org.opends.messages.LoggerMessages.*;
+import static org.opends.server.util.StaticUtils.*;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
-
-import java.io.*;
-import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Calendar;
+import org.opends.server.admin.server.ConfigurationChangeListener;
+import org.opends.server.admin.std.server.SizeLimitLogRotationPolicyCfg;
+import org.opends.server.api.DirectoryThread;
+import org.opends.server.api.ServerShutdownListener;
+import org.opends.server.core.DirectoryServer;
+import org.opends.server.types.ConfigChangeResult;
+import org.opends.server.types.DirectoryException;
+import org.opends.server.types.FilePermission;
+import org.opends.server.util.TimeThread;
 
 /**
  * A MultiFileTextWriter is a specialized TextWriter which supports publishing
@@ -349,6 +352,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationChangeAcceptable(
       SizeLimitLogRotationPolicyCfg config, List<LocalizableMessage> unacceptableReasons)
   {
@@ -359,6 +363,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public ConfigChangeResult applyConfigurationChange(
       SizeLimitLogRotationPolicyCfg config)
   {
@@ -390,8 +395,7 @@
 
     sizeLimit = newSizeLimit;
 
-    return new ConfigChangeResult(ResultCode.SUCCESS, false,
-                                  new ArrayList<LocalizableMessage>());
+    return new ConfigChangeResult();
   }
 
   /**
@@ -414,6 +418,7 @@
      * the run method of the rotaterThread. It wakes up periodically and checks
      * whether the file needs to be rotated based on the rotation policy.
      */
+    @Override
     public void run()
     {
       while(!isShuttingDown())
@@ -474,6 +479,7 @@
    *
    * @return  The human-readable name for this shutdown listener.
    */
+  @Override
   public String getShutdownListenerName()
   {
     return "MultifileTextWriter Thread " + name;
@@ -486,6 +492,7 @@
    *
    * @param  reason  The human-readable reason for the shutdown.
    */
+  @Override
   public void processServerShutdown(LocalizableMessage reason)
   {
     stopRequested = true;
@@ -525,6 +532,7 @@
   /**
    * Shutdown the text writer.
    */
+  @Override
   public void shutdown()
   {
     processServerShutdown(null);
@@ -546,6 +554,7 @@
    *
    * @param record the log record to write.
    */
+  @Override
   public void writeRecord(String record)
   {
     // Assume each character is 1 byte ASCII
@@ -597,6 +606,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public void flush()
   {
     try
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/SizeBasedRetentionPolicy.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/SizeBasedRetentionPolicy.java
index 1d79886..53e216c 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/SizeBasedRetentionPolicy.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/SizeBasedRetentionPolicy.java
@@ -28,7 +28,6 @@
 import static org.opends.messages.LoggerMessages.*;
 
 import java.io.File;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
@@ -39,7 +38,6 @@
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.DirectoryException;
-import org.forgerock.opendj.ldap.ResultCode;
 
 /**
  * This class implements a retention policy based on the amount of
@@ -60,6 +58,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public void initializeLogRetentionPolicy(
       SizeLimitLogRetentionPolicyCfg config)
   {
@@ -73,6 +72,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationChangeAcceptable(
       SizeLimitLogRetentionPolicyCfg config,
       List<LocalizableMessage> unacceptableReasons)
@@ -84,23 +84,20 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public ConfigChangeResult applyConfigurationChange(
       SizeLimitLogRetentionPolicyCfg config)
   {
-    // Default result code.
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
-
     this.size = config.getDiskSpaceUsed();
     this.config = config;
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return new ConfigChangeResult();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public File[] deleteFiles(FileNamingPolicy fileNamingPolicy)
       throws DirectoryException
   {
@@ -148,6 +145,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public String toString()
   {
     return "Size Based Retention Policy " + config.dn().toString();
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/SizeBasedRotationPolicy.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/SizeBasedRotationPolicy.java
index 361a2e8..ab3054a 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/SizeBasedRotationPolicy.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/SizeBasedRotationPolicy.java
@@ -32,16 +32,12 @@
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.types.InitializationException;
 import org.opends.server.types.ConfigChangeResult;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.forgerock.opendj.config.server.ConfigException;
 
-
 import java.util.List;
-import java.util.ArrayList;
 
 /**
- * This class implements a rotation policy based on the size of the
- * file.
+ * This class implements a rotation policy based on the size of the file.
  */
 public class SizeBasedRotationPolicy implements
     RotationPolicy<SizeLimitLogRotationPolicyCfg>,
@@ -79,16 +75,10 @@
   public ConfigChangeResult applyConfigurationChange(
       SizeLimitLogRotationPolicyCfg config)
   {
-    // Default result code.
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
-
     sizeLimit = config.getFileSizeLimit();
-
     currentConfig = config;
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return new ConfigChangeResult();
   }
 
   /**
@@ -101,9 +91,7 @@
   public boolean rotateFile(RotatableLogFile writer)
   {
     long fileSize = writer.getBytesWritten();
-
     return fileSize >= sizeLimit;
   }
 
 }
-
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/TextAccessLogPublisher.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/TextAccessLogPublisher.java
index b999389..a33bca3 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/TextAccessLogPublisher.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/TextAccessLogPublisher.java
@@ -26,31 +26,30 @@
  */
 package org.opends.server.loggers;
 
+import static org.opends.messages.ConfigMessages.*;
+import static org.opends.server.util.StaticUtils.*;
+
 import java.io.File;
 import java.io.IOException;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.LocalizableMessageBuilder;
+import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.opendj.ldap.ByteString;
+import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.server.admin.server.ConfigurationChangeListener;
-import org.opends.server.admin.std.meta.FileBasedAccessLogPublisherCfgDefn.*;
+import org.opends.server.admin.std.meta.FileBasedAccessLogPublisherCfgDefn.LogFormat;
 import org.opends.server.admin.std.server.FileBasedAccessLogPublisherCfg;
 import org.opends.server.api.ClientConnection;
 import org.opends.server.api.ExtendedOperationHandler;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.core.*;
 import org.opends.server.types.*;
-import org.forgerock.opendj.ldap.ResultCode;
-import org.forgerock.opendj.ldap.ByteString;
 import org.opends.server.util.TimeThread;
 
-import static org.opends.messages.ConfigMessages.*;
-import static org.opends.server.util.StaticUtils.*;
-
 /**
  * This class provides the implementation of the access logger used by the
  * directory server.
@@ -111,10 +110,7 @@
   public ConfigChangeResult applyConfigurationChange(
       final FileBasedAccessLogPublisherCfg config)
   {
-    // Default result code.
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
-    final List<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     final File logFile = getFileForPath(config.getLogFile());
     final FileNamingPolicy fnPolicy = new TimeStampNaming(logFile);
@@ -203,7 +199,7 @@
         if ((cfg.isAsynchronous() && config.isAsynchronous())
             && (cfg.getQueueSize() != config.getQueueSize()))
         {
-          adminActionRequired = true;
+          ccr.setAdminActionRequired(true);
         }
 
         if (!config.getLogRecordTimeFormat().equals(timeStampFormat))
@@ -219,12 +215,12 @@
     }
     catch (final Exception e)
     {
-      resultCode = DirectoryServer.getServerErrorResultCode();
-      messages.add(ERR_CONFIG_LOGGING_CANNOT_CREATE_WRITER.get(
+      ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ERR_CONFIG_LOGGING_CANNOT_CREATE_WRITER.get(
           config.dn(), stackTraceToSingleLineString(e)));
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/TextAuditLogPublisher.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/TextAuditLogPublisher.java
index 5f34b7e..fa2fe89 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/TextAuditLogPublisher.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/TextAuditLogPublisher.java
@@ -33,7 +33,6 @@
 
 import java.io.File;
 import java.io.IOException;
-import java.util.ArrayList;
 import java.util.List;
 
 import org.forgerock.i18n.LocalizableMessage;
@@ -44,7 +43,6 @@
 import org.opends.server.types.*;
 import org.forgerock.opendj.ldap.ByteSequence;
 import org.forgerock.opendj.ldap.ByteString;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.server.util.Base64;
 import org.opends.server.util.StaticUtils;
 import org.opends.server.util.TimeThread;
@@ -59,11 +57,8 @@
 {
 
   private TextWriter writer;
-
   private FileBasedAuditLogPublisherCfg cfg;
 
-
-
   /**
    * {@inheritDoc}
    */
@@ -71,10 +66,7 @@
   public ConfigChangeResult applyConfigurationChange(
       FileBasedAuditLogPublisherCfg config)
   {
-    // Default result code.
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     File logFile = getFileForPath(config.getLogFile());
     FileNamingPolicy fnPolicy = new TimeStampNaming(logFile);
@@ -145,7 +137,7 @@
         if ((cfg.isAsynchronous() && config.isAsynchronous())
             && (cfg.getQueueSize() != config.getQueueSize()))
         {
-          adminActionRequired = true;
+          ccr.setAdminActionRequired(true);
         }
 
         cfg = config;
@@ -153,12 +145,12 @@
     }
     catch (Exception e)
     {
-      resultCode = DirectoryServer.getServerErrorResultCode();
-      messages.add(ERR_CONFIG_LOGGING_CANNOT_CREATE_WRITER.get(
+      ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ERR_CONFIG_LOGGING_CANNOT_CREATE_WRITER.get(
           config.dn(), stackTraceToSingleLineString(e)));
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/TextDebugLogPublisher.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/TextDebugLogPublisher.java
index 1f1eff1..95218a9 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/TextDebugLogPublisher.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/TextDebugLogPublisher.java
@@ -28,7 +28,6 @@
 
 import java.io.File;
 import java.io.IOException;
-import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -47,7 +46,6 @@
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.FilePermission;
 import org.opends.server.types.InitializationException;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.server.util.TimeThread;
 
 import static org.opends.messages.ConfigMessages.*;
@@ -235,10 +233,7 @@
   public ConfigChangeResult applyConfigurationChange(
       FileBasedDebugLogPublisherCfg config)
   {
-    // Default result code.
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
-    List<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     addTraceSettings(null, getDefaultSettings(config));
     DebugLogger.updateTracerSettings();
@@ -310,7 +305,7 @@
         if((currentConfig.isAsynchronous() && config.isAsynchronous()) &&
             (currentConfig.getQueueSize() != config.getQueueSize()))
         {
-          adminActionRequired = true;
+          ccr.setAdminActionRequired(true);
         }
 
         currentConfig = config;
@@ -318,12 +313,12 @@
     }
     catch(Exception e)
     {
-      resultCode = DirectoryServer.getServerErrorResultCode();
-      messages.add(ERR_CONFIG_LOGGING_CANNOT_CREATE_WRITER.get(
+      ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ERR_CONFIG_LOGGING_CANNOT_CREATE_WRITER.get(
           config.dn(), stackTraceToSingleLineString(e)));
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
   private TraceSettings getDefaultSettings(FileBasedDebugLogPublisherCfg config)
@@ -363,16 +358,11 @@
   @Override
   public ConfigChangeResult applyConfigurationAdd(DebugTargetCfg config)
   {
-    // Default result code.
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
-    List<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
-
     addTraceSettings(config.getDebugScope(), new TraceSettings(config));
 
     DebugLogger.updateTracerSettings();
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return new ConfigChangeResult();
   }
 
   /**
@@ -381,16 +371,11 @@
   @Override
   public ConfigChangeResult applyConfigurationDelete(DebugTargetCfg config)
   {
-    // Default result code.
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
-    List<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
-
     removeTraceSettings(config.getDebugScope());
 
     DebugLogger.updateTracerSettings();
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return new ConfigChangeResult();
   }
 
   /**
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/TextErrorLogPublisher.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/TextErrorLogPublisher.java
index bb19653..4f1ece1 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/TextErrorLogPublisher.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/TextErrorLogPublisher.java
@@ -33,7 +33,6 @@
 
 import java.io.File;
 import java.io.IOException;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.List;
@@ -42,7 +41,6 @@
 
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.opendj.config.server.ConfigException;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.messages.Severity;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.std.meta.ErrorLogPublisherCfgDefn;
@@ -296,9 +294,7 @@
   @Override
   public ConfigChangeResult applyConfigurationChange(FileBasedErrorLogPublisherCfg config)
   {
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
-    List<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     setDefaultSeverities(config.getDefaultSeverity());
 
@@ -310,8 +306,8 @@
         int equalPos = overrideSeverity.indexOf('=');
         if (equalPos < 0)
         {
-          resultCode = DirectoryServer.getServerErrorResultCode();
-          messages.add(WARN_ERROR_LOGGER_INVALID_OVERRIDE_SEVERITY.get(overrideSeverity));
+          ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+          ccr.addMessage(WARN_ERROR_LOGGER_INVALID_OVERRIDE_SEVERITY.get(overrideSeverity));
         } else
         {
           String category = overrideSeverity.substring(0, equalPos);
@@ -348,8 +344,8 @@
           }
           catch(Exception e)
           {
-            resultCode = DirectoryServer.getServerErrorResultCode();
-            messages.add(WARN_ERROR_LOGGER_INVALID_CATEGORY.get(category));
+            ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+            ccr.addMessage(WARN_ERROR_LOGGER_INVALID_CATEGORY.get(category));
           }
         }
       }
@@ -419,7 +415,7 @@
             && config.isAsynchronous()
             && currentConfig.getQueueSize() != config.getQueueSize())
         {
-          adminActionRequired = true;
+          ccr.setAdminActionRequired(true);
         }
 
         currentConfig = config;
@@ -427,12 +423,12 @@
     }
     catch(Exception e)
     {
-      resultCode = DirectoryServer.getServerErrorResultCode();
-      messages.add(ERR_CONFIG_LOGGING_CANNOT_CREATE_WRITER.get(
+      ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ERR_CONFIG_LOGGING_CANNOT_CREATE_WRITER.get(
           config.dn(), stackTraceToSingleLineString(e)));
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
   private void setDefaultSeverities(Set<ErrorLogPublisherCfgDefn.DefaultSeverity> defSevs)
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/TextHTTPAccessLogPublisher.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/TextHTTPAccessLogPublisher.java
index b22644d..254cebf 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/TextHTTPAccessLogPublisher.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/TextHTTPAccessLogPublisher.java
@@ -41,10 +41,10 @@
 import java.util.Set;
 
 import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.opendj.config.server.ConfigException;
 import org.forgerock.util.Utils;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.std.server.FileBasedHTTPAccessLogPublisherCfg;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.ServerContext;
 import org.opends.server.types.ConfigChangeResult;
@@ -52,7 +52,6 @@
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.FilePermission;
 import org.opends.server.types.InitializationException;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.server.util.TimeThread;
 
 /**
@@ -120,10 +119,7 @@
   public ConfigChangeResult applyConfigurationChange(
       final FileBasedHTTPAccessLogPublisherCfg config)
   {
-    // Default result code.
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
-    final List<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     final File logFile = getFileForPath(config.getLogFile());
     final FileNamingPolicy fnPolicy = new TimeStampNaming(logFile);
@@ -216,7 +212,7 @@
         if (cfg.isAsynchronous() && config.isAsynchronous()
             && cfg.getQueueSize() != config.getQueueSize())
         {
-          adminActionRequired = true;
+          ccr.setAdminActionRequired(true);
         }
 
         if (!config.getLogRecordTimeFormat().equals(timeStampFormat))
@@ -230,20 +226,20 @@
         LocalizableMessage errorMessage = validateLogFormat(logFormatFields);
         if (errorMessage != null)
         {
-          resultCode = DirectoryServer.getServerErrorResultCode();
-          adminActionRequired = true;
-          messages.add(errorMessage);
+          ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+          ccr.setAdminActionRequired(true);
+          ccr.addMessage(errorMessage);
         }
       }
     }
     catch (final Exception e)
     {
-      resultCode = DirectoryServer.getServerErrorResultCode();
-      messages.add(ERR_CONFIG_LOGGING_CANNOT_CREATE_WRITER.get(
+      ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+      ccr.addMessage(ERR_CONFIG_LOGGING_CANNOT_CREATE_WRITER.get(
           config.dn(), stackTraceToSingleLineString(e)));
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/TimeLimitRotationPolicy.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/TimeLimitRotationPolicy.java
index c0955b5..da44ed9 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/TimeLimitRotationPolicy.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/TimeLimitRotationPolicy.java
@@ -31,11 +31,7 @@
 import org.opends.server.admin.std.server.TimeLimitLogRotationPolicyCfg;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.types.ConfigChangeResult;
-import org.forgerock.opendj.ldap.ResultCode;
-
-
 import java.util.List;
-import java.util.ArrayList;
 
 /**
  * This class implements a fixed time based rotation policy.
@@ -67,20 +63,12 @@
     return true;
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   public ConfigChangeResult applyConfigurationChange(
       TimeLimitLogRotationPolicyCfg config)
   {
-    // Default result code.
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
-
     timeInterval = config.getRotationInterval();
-
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return new ConfigChangeResult();
   }
 
 
@@ -88,7 +76,7 @@
    * This method indicates if the log file should be
    * rotated or not.
    *
-   * @param writer The mutli file text writer written the log file.
+   * @param writer The multi file text writer written the log file.
    * @return true if the file should be rotated, false otherwise.
    */
   public boolean rotateFile(RotatableLogFile writer)
@@ -100,4 +88,3 @@
   }
 
 }
-
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/TraceSettings.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/TraceSettings.java
index 2c4dd7d..943564b 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/TraceSettings.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/loggers/TraceSettings.java
@@ -27,18 +27,15 @@
 
 package org.opends.server.loggers;
 
-import java.util.ArrayList;
 import java.util.List;
 
 import org.forgerock.i18n.LocalizableMessage;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.std.server.DebugTargetCfg;
 import org.opends.server.types.ConfigChangeResult;
-import org.forgerock.opendj.ldap.ResultCode;
 
 /**
- * This class encapsulates the trace settings in effect at a given traceing
- * scope.
+ * This class encapsulates the trace settings in effect at a given tracing scope.
  */
 public class TraceSettings implements
     ConfigurationChangeListener<DebugTargetCfg>
@@ -205,11 +202,7 @@
    */
   public ConfigChangeResult applyConfigurationChange(DebugTargetCfg config)
   {
-    // Default result code.
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages =
-        new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     // We can assume that the target scope did not change since its the
     // naming attribute. Changing it would result in a modify DN.
@@ -223,7 +216,7 @@
 
     this.currentConfig = config;
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
   /**
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/AttributeCleanupPlugin.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/AttributeCleanupPlugin.java
index 042553f..3010e7a 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/AttributeCleanupPlugin.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/AttributeCleanupPlugin.java
@@ -131,7 +131,7 @@
       }
 
       /* Update was successful, no restart required. */
-      return new ConfigChangeResult(ResultCode.SUCCESS, false);
+      return new ConfigChangeResult();
     }
     finally
     {
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/ChangeNumberControlPlugin.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/ChangeNumberControlPlugin.java
index 252117b..9cfa907 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/ChangeNumberControlPlugin.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/ChangeNumberControlPlugin.java
@@ -47,7 +47,6 @@
 import org.opends.server.replication.protocol.OperationContext;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.Control;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.server.types.operation.PostOperationAddOperation;
 import org.opends.server.types.operation.PostOperationDeleteOperation;
 import org.opends.server.types.operation.PostOperationModifyDNOperation;
@@ -294,7 +293,7 @@
                                  ChangeNumberControlPluginCfg configuration)
   {
     currentConfig = configuration;
-    return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    return new ConfigChangeResult();
   }
 
   /**
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/EntryUUIDPlugin.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/EntryUUIDPlugin.java
index 279882c..cbe52ea 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/EntryUUIDPlugin.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/EntryUUIDPlugin.java
@@ -44,7 +44,6 @@
 import org.opends.server.api.plugin.PluginType;
 import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.types.*;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.server.types.operation.PreOperationAddOperation;
 
 import static org.opends.messages.PluginMessages.*;
@@ -273,7 +272,7 @@
                                  EntryUUIDPluginCfg configuration)
   {
     currentConfig = configuration;
-    return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    return new ConfigChangeResult();
   }
 }
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/LDAPADListPlugin.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/LDAPADListPlugin.java
index 29d1b9e..aa6ab94 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/LDAPADListPlugin.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/LDAPADListPlugin.java
@@ -44,7 +44,6 @@
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.DirectoryConfig;
 import org.opends.server.types.ObjectClass;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.server.types.operation.PreParseSearchOperation;
 
 import org.forgerock.i18n.slf4j.LocalizedLogger;
@@ -273,7 +272,7 @@
                                       configuration)
   {
     currentConfig = configuration;
-    return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    return new ConfigChangeResult();
   }
 }
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/LastModPlugin.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/LastModPlugin.java
index daa7275..d79c4b8 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/LastModPlugin.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/LastModPlugin.java
@@ -45,7 +45,6 @@
 import org.opends.server.api.plugin.PluginType;
 import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.types.*;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.server.types.operation.PreOperationAddOperation;
 import org.opends.server.types.operation.PreOperationModifyDNOperation;
 import org.opends.server.types.operation.PreOperationModifyOperation;
@@ -346,7 +345,7 @@
                                  LastModPluginCfg configuration)
   {
     currentConfig = configuration;
-    return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    return new ConfigChangeResult();
   }
 }
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/PasswordPolicyImportPlugin.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/PasswordPolicyImportPlugin.java
index 3186d21..611771e 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/PasswordPolicyImportPlugin.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/PasswordPolicyImportPlugin.java
@@ -34,7 +34,6 @@
 import static org.opends.server.schema.SchemaConstants.*;
 import static org.opends.server.util.StaticUtils.*;
 
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -693,10 +692,7 @@
   public ConfigChangeResult applyConfigurationChange(
                                  PasswordPolicyImportPluginCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
-
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     // Get the set of default password storage schemes for auth password
     // attributes.
@@ -722,9 +718,8 @@
                   AUTH_PASSWORD_SCHEME_NAME_SALTED_SHA_1);
         if (defaultAuthSchemes[0] == null)
         {
-          resultCode = DirectoryServer.getServerErrorResultCode();
-
-          messages.add(ERR_PLUGIN_PWIMPORT_NO_DEFAULT_AUTH_SCHEMES.get(
+          ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+          ccr.addMessage(ERR_PLUGIN_PWIMPORT_NO_DEFAULT_AUTH_SCHEMES.get(
                   AUTH_PASSWORD_SCHEME_NAME_SALTED_SHA_1));
         }
       }
@@ -739,13 +734,13 @@
              DirectoryServer.getPasswordStorageScheme(schemeDN);
         if (defaultAuthSchemes[i] == null)
         {
-          resultCode = DirectoryServer.getServerErrorResultCode();
-          messages.add(ERR_PLUGIN_PWIMPORT_NO_SUCH_DEFAULT_AUTH_SCHEME.get(schemeDN));
+          ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+          ccr.addMessage(ERR_PLUGIN_PWIMPORT_NO_SUCH_DEFAULT_AUTH_SCHEME.get(schemeDN));
         }
         else if (! defaultAuthSchemes[i].supportsAuthPasswordSyntax())
         {
-          resultCode = DirectoryServer.getServerErrorResultCode();
-          messages.add(ERR_PLUGIN_PWIMPORT_INVALID_DEFAULT_AUTH_SCHEME.get(schemeDN));
+          ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+          ccr.addMessage(ERR_PLUGIN_PWIMPORT_INVALID_DEFAULT_AUTH_SCHEME.get(schemeDN));
         }
         i++;
       }
@@ -774,9 +769,8 @@
                   toLowerCase(STORAGE_SCHEME_NAME_SALTED_SHA_1));
         if (defaultUserSchemes[0] == null)
         {
-          resultCode = DirectoryServer.getServerErrorResultCode();
-
-          messages.add(ERR_PLUGIN_PWIMPORT_NO_DEFAULT_USER_SCHEMES.get(
+          ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+          ccr.addMessage(ERR_PLUGIN_PWIMPORT_NO_DEFAULT_USER_SCHEMES.get(
                   STORAGE_SCHEME_NAME_SALTED_SHA_1));
         }
       }
@@ -791,20 +785,19 @@
              DirectoryServer.getPasswordStorageScheme(schemeDN);
         if (defaultUserSchemes[i] == null)
         {
-          resultCode = DirectoryServer.getServerErrorResultCode();
-          messages.add(ERR_PLUGIN_PWIMPORT_INVALID_DEFAULT_USER_SCHEME.get(schemeDN));
+          ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+          ccr.addMessage(ERR_PLUGIN_PWIMPORT_INVALID_DEFAULT_USER_SCHEME.get(schemeDN));
         }
         i++;
       }
     }
 
-    if (resultCode == ResultCode.SUCCESS)
+    if (ccr.getResultCode() == ResultCode.SUCCESS)
     {
       defaultAuthPasswordSchemes = defaultAuthSchemes;
       defaultUserPasswordSchemes = defaultUserSchemes;
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 }
-
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/ReferentialIntegrityPlugin.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/ReferentialIntegrityPlugin.java
index b171073..1deac6b 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/ReferentialIntegrityPlugin.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/ReferentialIntegrityPlugin.java
@@ -27,13 +27,18 @@
  */
 package org.opends.server.plugins;
 
+import static org.opends.messages.PluginMessages.*;
+import static org.opends.server.protocols.internal.InternalClientConnection.*;
+import static org.opends.server.protocols.internal.Requests.*;
+import static org.opends.server.schema.SchemaConstants.*;
+import static org.opends.server.util.StaticUtils.*;
+
 import java.io.BufferedReader;
 import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileReader;
 import java.io.FileWriter;
 import java.io.IOException;
-import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.LinkedHashMap;
@@ -67,7 +72,6 @@
 import org.opends.server.protocols.internal.InternalClientConnection;
 import org.opends.server.protocols.internal.InternalSearchOperation;
 import org.opends.server.protocols.internal.SearchRequest;
-import static org.opends.server.protocols.internal.Requests.*;
 import org.opends.server.types.*;
 import org.opends.server.types.operation.PostOperationDeleteOperation;
 import org.opends.server.types.operation.PostOperationModifyDNOperation;
@@ -75,11 +79,6 @@
 import org.opends.server.types.operation.PreOperationModifyOperation;
 import org.opends.server.types.operation.SubordinateModifyDNOperation;
 
-import static org.opends.messages.PluginMessages.*;
-import static org.opends.server.protocols.internal.InternalClientConnection.*;
-import static org.opends.server.schema.SchemaConstants.*;
-import static org.opends.server.util.StaticUtils.*;
-
 /**
  * This class implements a Directory Server post operation plugin that performs
  * Referential Integrity processing on successful delete and modify DN
@@ -203,9 +202,7 @@
   public ConfigChangeResult applyConfigurationChange(
           ReferentialIntegrityPluginCfg newConfiguration)
   {
-    ResultCode         resultCode          = ResultCode.SUCCESS;
-    boolean            adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     //Load base DNs from new configuration.
     LinkedHashSet<DN> newConfiguredBaseDNs = new LinkedHashSet<DN>();
@@ -259,10 +256,8 @@
     String newLogFileName=newConfiguration.getLogFile();
     if(logFileName != null && !logFileName.equals(newLogFileName))
     {
-      adminActionRequired=true;
-      messages.add(
-           INFO_PLUGIN_REFERENT_LOGFILE_CHANGE_REQUIRES_RESTART.get(logFileName,
-                newLogFileName));
+      ccr.setAdminActionRequired(true);
+      ccr.addMessage(INFO_PLUGIN_REFERENT_LOGFILE_CHANGE_REQUIRES_RESTART.get(logFileName, newLogFileName));
     }
 
     //Switch to the new lists.
@@ -273,11 +268,13 @@
     //If the plugin is enabled and the interval has changed, process that
     //change. The change might start or stop the background processing thread.
     long newInterval=newConfiguration.getUpdateInterval();
-    if(newConfiguration.isEnabled() && newInterval != interval)
-      processIntervalChange(newInterval, messages);
+    if (newConfiguration.isEnabled() && newInterval != interval)
+    {
+      processIntervalChange(newInterval, ccr.getMessages());
+    }
 
     currentConfiguration = newConfiguration;
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
 
@@ -528,7 +525,7 @@
   }
 
   /**
-   * Process the specifed new interval value. This processing depends on what
+   * Process the specified new interval value. This processing depends on what
    * the current interval value is and new value will be. The values have been
    * checked for equality at this point and are not equal.
    *
@@ -545,10 +542,9 @@
    *
    * @param msgs An array list of messages that thread stop and start messages
    *             can be added to.
-   *
    */
-  private void processIntervalChange(long newInterval,
-                                     ArrayList<LocalizableMessage> msgs) {
+  private void processIntervalChange(long newInterval, List<LocalizableMessage> msgs)
+  {
     if(interval == 0) {
       DirectoryServer.registerShutdownListener(this);
       interval=newInterval;
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/SambaPasswordPlugin.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/SambaPasswordPlugin.java
index f29cde3..82a7325 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/SambaPasswordPlugin.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/SambaPasswordPlugin.java
@@ -655,7 +655,7 @@
     // No validation required and no restart required.
     config = newConfig;
 
-    return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    return new ConfigChangeResult();
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/SevenBitCleanPlugin.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/SevenBitCleanPlugin.java
index 50d087d..d3c649e 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/SevenBitCleanPlugin.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/SevenBitCleanPlugin.java
@@ -511,7 +511,7 @@
                                  SevenBitCleanPluginCfg configuration)
   {
     currentConfig = configuration;
-    return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    return new ConfigChangeResult();
   }
 }
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/UniqueAttributePlugin.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/UniqueAttributePlugin.java
index d09a88e..a9f9ed3 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/UniqueAttributePlugin.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/UniqueAttributePlugin.java
@@ -768,7 +768,7 @@
                                  UniqueAttributePluginCfg newConfiguration)
   {
     currentConfiguration = newConfiguration;
-    return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    return new ConfigChangeResult();
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/profiler/ProfilerPlugin.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/profiler/ProfilerPlugin.java
index 1726421..ab41932 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/profiler/ProfilerPlugin.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/plugins/profiler/ProfilerPlugin.java
@@ -25,36 +25,28 @@
  *      Portions Copyright 2014 ForgeRock AS
  */
 package org.opends.server.plugins.profiler;
-import org.forgerock.i18n.LocalizableMessage;
-
-
+import static org.opends.messages.PluginMessages.*;
+import static org.opends.server.util.StaticUtils.*;
 
 import java.io.File;
-import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
 
+import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.std.meta.PluginCfgDefn;
 import org.opends.server.admin.std.server.PluginCfg;
 import org.opends.server.admin.std.server.ProfilerPluginCfg;
 import org.opends.server.api.plugin.DirectoryServerPlugin;
-import org.opends.server.api.plugin.PluginType;
 import org.opends.server.api.plugin.PluginResult;
-import org.forgerock.opendj.config.server.ConfigException;
+import org.opends.server.api.plugin.PluginType;
 import org.opends.server.types.ConfigChangeResult;
-import org.opends.server.types.DirectoryConfig;
 import org.opends.server.types.DN;
-import org.forgerock.opendj.ldap.ResultCode;
+import org.opends.server.types.DirectoryConfig;
 import org.opends.server.util.TimeThread;
 
-import org.forgerock.i18n.slf4j.LocalizedLogger;
-import static org.opends.messages.PluginMessages.*;
-
-import static org.opends.server.util.StaticUtils.*;
-
-
-
 /**
  * This class defines a Directory Server startup plugin that will register
  * itself as a configurable component that can allow for a simple sample-based
@@ -240,6 +232,7 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationChangeAcceptable(
                       ProfilerPluginCfg configuration,
                       List<LocalizableMessage> unacceptableReasons)
@@ -289,12 +282,11 @@
    * @return Returns information about the result of changing the
    *         configuration.
    */
+  @Override
   public ConfigChangeResult applyConfigurationChange(
                                  ProfilerPluginCfg configuration)
   {
-    ResultCode        resultCode          = ResultCode.SUCCESS;
-    boolean           adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages            = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     currentConfig = configuration;
 
@@ -312,11 +304,11 @@
                  new ProfilerThread(configuration.getProfileSampleInterval());
             profilerThread.start();
 
-            messages.add(INFO_PLUGIN_PROFILER_STARTED_PROFILING.get(configEntryDN));
+            ccr.addMessage(INFO_PLUGIN_PROFILER_STARTED_PROFILING.get(configEntryDN));
           }
           else
           {
-            messages.add(INFO_PLUGIN_PROFILER_ALREADY_PROFILING.get(configEntryDN));
+            ccr.addMessage(INFO_PLUGIN_PROFILER_ALREADY_PROFILING.get(configEntryDN));
           }
         }
         break;
@@ -328,13 +320,13 @@
         {
           if (profilerThread == null)
           {
-            messages.add(INFO_PLUGIN_PROFILER_NOT_RUNNING.get(configEntryDN));
+            ccr.addMessage(INFO_PLUGIN_PROFILER_NOT_RUNNING.get(configEntryDN));
           }
           else
           {
             profilerThread.stopProfiling();
 
-            messages.add(INFO_PLUGIN_PROFILER_STOPPED_PROFILING.get(configEntryDN));
+            ccr.addMessage(INFO_PLUGIN_PROFILER_STOPPED_PROFILING.get(configEntryDN));
 
             String filename =
                  getFileForPath(
@@ -345,16 +337,15 @@
             {
               profilerThread.writeCaptureData(filename);
 
-              messages.add(INFO_PLUGIN_PROFILER_WROTE_PROFILE_DATA.get(configEntryDN, filename));
+              ccr.addMessage(INFO_PLUGIN_PROFILER_WROTE_PROFILE_DATA.get(configEntryDN, filename));
             }
             catch (Exception e)
             {
               logger.traceException(e);
 
-              messages.add(ERR_PLUGIN_PROFILER_CANNOT_WRITE_PROFILE_DATA.get(configEntryDN, filename,
-                      stackTraceToSingleLineString(e)));
-
-              resultCode = DirectoryConfig.getServerErrorResultCode();
+              ccr.addMessage(ERR_PLUGIN_PROFILER_CANNOT_WRITE_PROFILE_DATA.get(
+                  configEntryDN, filename, stackTraceToSingleLineString(e)));
+              ccr.setResultCode(DirectoryConfig.getServerErrorResultCode());
             }
 
             profilerThread = null;
@@ -369,13 +360,13 @@
         {
           if (profilerThread == null)
           {
-            messages.add(INFO_PLUGIN_PROFILER_NOT_RUNNING.get(configEntryDN));
+            ccr.addMessage(INFO_PLUGIN_PROFILER_NOT_RUNNING.get(configEntryDN));
           }
           else
           {
             profilerThread.stopProfiling();
 
-            messages.add(INFO_PLUGIN_PROFILER_STOPPED_PROFILING.get(configEntryDN));
+            ccr.addMessage(INFO_PLUGIN_PROFILER_STOPPED_PROFILING.get(configEntryDN));
 
             profilerThread = null;
           }
@@ -383,7 +374,6 @@
         break;
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 }
-
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/protocols/LDIFConnectionHandler.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/protocols/LDIFConnectionHandler.java
index e01f133..0c50ae1 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/protocols/LDIFConnectionHandler.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/protocols/LDIFConnectionHandler.java
@@ -54,7 +54,6 @@
 import org.opends.server.types.LDIFExportConfig;
 import org.opends.server.types.LDIFImportConfig;
 import org.opends.server.types.Operation;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.server.util.AddChangeRecordEntry;
 import org.opends.server.util.ChangeRecordEntry;
 import org.opends.server.util.DeleteChangeRecordEntry;
@@ -69,8 +68,6 @@
 import static org.opends.server.util.ServerConstants.*;
 import static org.opends.server.util.StaticUtils.*;
 
-
-
 /**
  * This class defines an LDIF connection handler, which can be used to watch for
  * new LDIF files to be placed in a specified directory.  If a new LDIF file is
@@ -82,9 +79,7 @@
        implements ConfigurationChangeListener<LDIFConnectionHandlerCfg>,
                   AlertGenerator
 {
-  /**
-   * The debug log tracer for this class.
-   */
+  /** The debug log tracer for this class. */
   private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
 
 
@@ -623,7 +618,7 @@
     File newLDIFDirectory = new File(configuration.getLDIFDirectory());
     this.ldifDirectory = newLDIFDirectory;
     currentConfig = configuration;
-    return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    return new ConfigChangeResult();
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/protocols/http/HTTPConnectionHandler.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/protocols/http/HTTPConnectionHandler.java
index 212ca61..025ef3a 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/protocols/http/HTTPConnectionHandler.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/protocols/http/HTTPConnectionHandler.java
@@ -26,6 +26,11 @@
  */
 package org.opends.server.protocols.http;
 
+import static org.opends.messages.ConfigMessages.*;
+import static org.opends.messages.ProtocolMessages.*;
+import static org.opends.server.util.ServerConstants.*;
+import static org.opends.server.util.StaticUtils.*;
+
 import java.io.File;
 import java.io.IOException;
 import java.net.InetAddress;
@@ -54,6 +59,8 @@
 import org.forgerock.json.resource.Resources;
 import org.forgerock.json.resource.Router;
 import org.forgerock.json.resource.servlet.HttpServlet;
+import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.opendj.ldap.ResultCode;
 import org.forgerock.opendj.ldap.SearchScope;
 import org.forgerock.opendj.rest2ldap.AuthorizationPolicy;
 import org.forgerock.opendj.rest2ldap.Rest2LDAP;
@@ -73,22 +80,15 @@
 import org.opends.server.admin.std.server.ConnectionHandlerCfg;
 import org.opends.server.admin.std.server.HTTPConnectionHandlerCfg;
 import org.opends.server.api.*;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.extensions.NullKeyManagerProvider;
 import org.opends.server.extensions.NullTrustManagerProvider;
 import org.opends.server.loggers.HTTPAccessLogger;
 import org.opends.server.monitors.ClientConnectionMonitorProvider;
 import org.opends.server.types.*;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.server.util.SelectableCertificateKeyManager;
 import org.opends.server.util.StaticUtils;
 
-import static org.opends.messages.ConfigMessages.*;
-import static org.opends.messages.ProtocolMessages.*;
-import static org.opends.server.util.ServerConstants.*;
-import static org.opends.server.util.StaticUtils.*;
-
 /**
  * This class defines a connection handler that will be used for communicating
  * with clients over HTTP. The connection handler is responsible for
@@ -212,14 +212,12 @@
   public ConfigChangeResult applyConfigurationChange(
       HTTPConnectionHandlerCfg config)
   {
-    // Create variables to include in the response.
-    boolean adminActionRequired = false;
-    List<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     if (anyChangeRequiresRestart(config))
     {
-      adminActionRequired = true;
-      messages.add(ERR_CONNHANDLER_CONFIG_CHANGES_REQUIRE_RESTART.get("HTTP"));
+      ccr.setAdminActionRequired(true);
+      ccr.addMessage(ERR_CONNHANDLER_CONFIG_CHANGES_REQUIRE_RESTART.get("HTTP"));
     }
 
     // Reconfigure SSL if needed.
@@ -230,9 +228,9 @@
     catch (DirectoryException e)
     {
       logger.traceException(e);
-      messages.add(e.getMessageObject());
-      return new ConfigChangeResult(e.getResultCode(), adminActionRequired,
-          messages);
+      ccr.setResultCode(e.getResultCode());
+      ccr.addMessage(e.getMessageObject());
+      return ccr;
     }
 
     if (config.isEnabled() && this.currentConfig.isEnabled() && isListening())
@@ -255,8 +253,7 @@
     this.currentConfig = config;
     this.enabled = this.currentConfig.isEnabled();
 
-    return new ConfigChangeResult(ResultCode.SUCCESS, adminActionRequired,
-        messages);
+    return ccr;
   }
 
   private boolean anyChangeRequiresRestart(HTTPConnectionHandlerCfg newCfg)
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/protocols/jmx/JmxConnectionHandler.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/protocols/jmx/JmxConnectionHandler.java
index 2e471ea..f1cfac4 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/protocols/jmx/JmxConnectionHandler.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/protocols/jmx/JmxConnectionHandler.java
@@ -26,9 +26,12 @@
  */
 package org.opends.server.protocols.jmx;
 
+import static org.opends.messages.ProtocolMessages.*;
+import static org.opends.server.types.HostPort.*;
+import static org.opends.server.util.StaticUtils.*;
+
 import java.io.IOException;
 import java.net.InetSocketAddress;
-import java.util.ArrayList;
 import java.util.Collection;
 import java.util.LinkedList;
 import java.util.List;
@@ -36,22 +39,20 @@
 
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.std.server.ConnectionHandlerCfg;
 import org.opends.server.admin.std.server.JMXConnectionHandlerCfg;
 import org.opends.server.api.ClientConnection;
 import org.opends.server.api.ConnectionHandler;
 import org.opends.server.api.ServerShutdownListener;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.core.DirectoryServer;
-import org.opends.server.types.*;
-import org.forgerock.opendj.ldap.ResultCode;
+import org.opends.server.types.ConfigChangeResult;
+import org.opends.server.types.DN;
+import org.opends.server.types.HostPort;
+import org.opends.server.types.InitializationException;
 import org.opends.server.util.StaticUtils;
 
-import static org.opends.messages.ProtocolMessages.*;
-import static org.opends.server.types.HostPort.*;
-import static org.opends.server.util.StaticUtils.*;
-
 /**
  * This class defines a connection handler that will be used for
  * communicating with administrative clients over JMX. The connection
@@ -75,10 +76,6 @@
   public static final String TRUST_MANAGER_ARRAY_KEY =
     "org.opends.server.protocol.jmx.ssl.trust.manager.array";
 
-  /** The fully-qualified name of this class. */
-  private static final String CLASS_NAME =
-    "org.opends.server.protocols.jmx.JMXConnectionHandler";
-
   /** The list of active client connection. */
   private final List<ClientConnection> connectionList;
 
@@ -115,9 +112,7 @@
   @Override
   public ConfigChangeResult applyConfigurationChange(
       JMXConnectionHandlerCfg config) {
-    // Create variables to include in the response.
-    ResultCode resultCode = ResultCode.SUCCESS;
-    final List<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     // Determine whether or not the RMI connection needs restarting.
     boolean rmiConnectorRestart = false;
@@ -166,8 +161,8 @@
       }
       catch (RuntimeException e)
       {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-        messages.add(LocalizableMessage.raw(e.getMessage()));
+        ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+        ccr.addMessage(LocalizableMessage.raw(e.getMessage()));
       }
     }
 
@@ -181,8 +176,7 @@
       System.setProperty(key, value);
     }
 
-    // Return configuration result.
-    return new ConfigChangeResult(resultCode, false, messages);
+    return ccr;
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/protocols/ldap/LDAPConnectionHandler.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/protocols/ldap/LDAPConnectionHandler.java
index efc0342..ef11dc3 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/protocols/ldap/LDAPConnectionHandler.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/protocols/ldap/LDAPConnectionHandler.java
@@ -45,13 +45,15 @@
 import javax.net.ssl.SSLEngine;
 
 import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.config.server.ConfigException;
 import org.forgerock.opendj.ldap.AddressMask;
+import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.std.server.ConnectionHandlerCfg;
 import org.opends.server.admin.std.server.LDAPConnectionHandlerCfg;
 import org.opends.server.api.*;
 import org.opends.server.api.plugin.PluginResult;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.PluginConfigManager;
 import org.opends.server.core.QueueingStrategy;
@@ -59,10 +61,8 @@
 import org.opends.server.extensions.NullKeyManagerProvider;
 import org.opends.server.extensions.NullTrustManagerProvider;
 import org.opends.server.extensions.TLSByteChannel;
-import org.forgerock.i18n.slf4j.LocalizedLogger;
 import org.opends.server.monitors.ClientConnectionMonitorProvider;
 import org.opends.server.types.*;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.server.util.SelectableCertificateKeyManager;
 import org.opends.server.util.StaticUtils;
 
@@ -306,10 +306,7 @@
   public ConfigChangeResult applyConfigurationChange(
       LDAPConnectionHandlerCfg config)
   {
-    // Create variables to include in the response.
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     // Note that the following properties cannot be modified:
     //
@@ -344,9 +341,9 @@
     catch (DirectoryException e)
     {
       logger.traceException(e);
-      messages.add(e.getMessageObject());
-      return new ConfigChangeResult(e.getResultCode(), adminActionRequired,
-          messages);
+      ccr.setResultCode(e.getResultCode());
+      ccr.addMessage(e.getMessageObject());
+      return ccr;
     }
 
     if (config.isAllowLDAPV2())
@@ -358,7 +355,7 @@
       DirectoryServer.deregisterSupportedLDAPVersion(2, this);
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
   private void configureSSL(LDAPConnectionHandlerCfg config)
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/replication/plugin/ExternalChangelogDomain.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/replication/plugin/ExternalChangelogDomain.java
index 8fc4322..ac605c1 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/replication/plugin/ExternalChangelogDomain.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/replication/plugin/ExternalChangelogDomain.java
@@ -83,7 +83,7 @@
     domain.setEclIncludes(domain.getServerId(),
         configuration.getECLInclude(),
         configuration.getECLIncludeForDeletes());
-    return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    return new ConfigChangeResult();
   }
 
 
@@ -107,7 +107,7 @@
     this.isEnabled = configuration.isEnabled();
     domain.changeConfig(configuration.getECLInclude(),
         configuration.getECLIncludeForDeletes());
-    return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    return new ConfigChangeResult();
   }
 
   private ConfigChangeResult setDomain(ExternalChangelogDomainCfg configuration)
@@ -124,7 +124,9 @@
     }
     catch (Exception e)
     {
-      return new ConfigChangeResult(ResultCode.CONSTRAINT_VIOLATION, false);
+      final ConfigChangeResult ccr = new ConfigChangeResult();
+      ccr.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
+      return ccr;
     }
   }
 
@@ -162,8 +164,7 @@
   public ConfigChangeResult applyConfigurationDelete(
       ExternalChangelogDomainCfg configuration)
   {
-    // nothing to do
-    return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    return new ConfigChangeResult();
   }
 
   /**
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/replication/plugin/FractionalLDIFImportPlugin.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/replication/plugin/FractionalLDIFImportPlugin.java
index f0ddc1c..1b34b21 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/replication/plugin/FractionalLDIFImportPlugin.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/replication/plugin/FractionalLDIFImportPlugin.java
@@ -41,7 +41,6 @@
 import org.opends.server.replication.plugin.LDAPReplicationDomain.*;
 import org.opends.server.types.*;
 import org.forgerock.opendj.ldap.ByteString;
-import org.forgerock.opendj.ldap.ResultCode;
 import static org.opends.messages.ReplicationMessages.*;
 import static org.opends.server.replication.plugin.LDAPReplicationDomain.*;
 
@@ -499,6 +498,6 @@
   public ConfigChangeResult applyConfigurationChange(
     FractionalLDIFImportPluginCfg configuration)
   {
-    return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    return new ConfigChangeResult();
   }
 }
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/replication/plugin/LDAPReplicationDomain.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/replication/plugin/LDAPReplicationDomain.java
index ce77320..8c61a30 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/replication/plugin/LDAPReplicationDomain.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/replication/plugin/LDAPReplicationDomain.java
@@ -26,6 +26,17 @@
  */
 package org.opends.server.replication.plugin;
 
+import static org.forgerock.opendj.ldap.ResultCode.*;
+import static org.opends.messages.ReplicationMessages.*;
+import static org.opends.messages.ToolMessages.*;
+import static org.opends.server.protocols.internal.InternalClientConnection.*;
+import static org.opends.server.protocols.internal.Requests.*;
+import static org.opends.server.replication.plugin.EntryHistorical.*;
+import static org.opends.server.replication.protocol.OperationContext.*;
+import static org.opends.server.replication.service.ReplicationMonitor.*;
+import static org.opends.server.util.ServerConstants.*;
+import static org.opends.server.util.StaticUtils.*;
+
 import java.io.File;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -91,17 +102,6 @@
 import org.opends.server.util.TimeThread;
 import org.opends.server.workflowelement.localbackend.LocalBackendModifyOperation;
 
-import static org.forgerock.opendj.ldap.ResultCode.*;
-import static org.opends.messages.ReplicationMessages.*;
-import static org.opends.messages.ToolMessages.*;
-import static org.opends.server.protocols.internal.InternalClientConnection.*;
-import static org.opends.server.protocols.internal.Requests.*;
-import static org.opends.server.replication.plugin.EntryHistorical.*;
-import static org.opends.server.replication.protocol.OperationContext.*;
-import static org.opends.server.replication.service.ReplicationMonitor.*;
-import static org.opends.server.util.ServerConstants.*;
-import static org.opends.server.util.StaticUtils.*;
-
 /**
  *  This class implements the bulk part of the Directory Server side
  *  of the replication code.
@@ -3850,16 +3850,16 @@
 
     solveConflictFlag = isSolveConflict(configuration);
 
+    final ConfigChangeResult ccr = new ConfigChangeResult();
     try
     {
       storeECLConfiguration(configuration);
     }
     catch(Exception e)
     {
-      return new ConfigChangeResult(ResultCode.OTHER, false);
+      ccr.setResultCode(ResultCode.OTHER);
     }
-
-    return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    return ccr;
   }
 
   /** {@inheritDoc} */
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/replication/plugin/MultimasterReplication.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/replication/plugin/MultimasterReplication.java
index f9d34fa..c43111b 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/replication/plugin/MultimasterReplication.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/replication/plugin/MultimasterReplication.java
@@ -26,6 +26,11 @@
  */
 package org.opends.server.replication.plugin;
 
+import static org.opends.messages.ReplicationMessages.*;
+import static org.opends.server.replication.plugin.ReplicationRepairRequestControl.*;
+import static org.opends.server.util.ServerConstants.*;
+import static org.opends.server.util.StaticUtils.*;
+
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.Iterator;
@@ -77,11 +82,6 @@
 import org.opends.server.types.operation.PreOperationModifyDNOperation;
 import org.opends.server.types.operation.PreOperationModifyOperation;
 
-import static org.opends.messages.ReplicationMessages.*;
-import static org.opends.server.replication.plugin.ReplicationRepairRequestControl.*;
-import static org.opends.server.util.ServerConstants.*;
-import static org.opends.server.util.StaticUtils.*;
-
 /**
  * This class is used to load the Replication code inside the JVM
  * and to trigger initialization of the replication.
@@ -126,7 +126,7 @@
   private static int replayThreadNumber = 10;
 
   /**
-   * enum that symbolizes the state of the multimaster replication.
+   * Enum that symbolizes the state of the multimaster replication.
    */
   private static enum State
   {
@@ -375,6 +375,7 @@
   public ConfigChangeResult applyConfigurationAdd(
      ReplicationDomainCfg configuration)
   {
+    ConfigChangeResult ccr = new ConfigChangeResult();
     try
     {
       LDAPReplicationDomain rd = createNewDomain(configuration);
@@ -385,13 +386,13 @@
           rd.shutdown();
         }
       }
-      return new ConfigChangeResult(ResultCode.SUCCESS, false);
     } catch (ConfigException e)
     {
       // we should never get to this point because the configEntry has
       // already been validated in isConfigurationAddAcceptable()
-      return new ConfigChangeResult(ResultCode.CONSTRAINT_VIOLATION, false);
+      ccr.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
     }
+    return ccr;
   }
 
   /** {@inheritDoc} */
@@ -753,7 +754,7 @@
   {
     deleteDomain(configuration.getBaseDN());
 
-    return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    return new ConfigChangeResult();
   }
 
   /** {@inheritDoc} */
@@ -815,7 +816,7 @@
     connectionTimeoutMS = (int) Math.min(configuration.getConnectionTimeout(),
         Integer.MAX_VALUE);
 
-    return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    return new ConfigChangeResult();
   }
 
   /** {@inheritDoc} */
@@ -896,14 +897,20 @@
       }
     }
     // if state is STOPPING, then we need to return from this method
+    final LDAPReplicationDomain domain = getDomain(baseDN);
+    return domain != null && domain.isECLEnabled();
+  }
+
+  private static LDAPReplicationDomain getDomain(DN baseDN)
+  {
     for (LDAPReplicationDomain domain : domains.values())
     {
-      if (domain.isECLEnabled() && domain.getBaseDN().equals(baseDN))
+      if (domain.getBaseDN().equals(baseDN))
       {
-        return true;
+        return domain;
       }
     }
-    return false;
+    return null;
   }
 
   /**
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/replication/plugin/ReplicationServerListener.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/replication/plugin/ReplicationServerListener.java
index 939bfa0..4e8abe1 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/replication/plugin/ReplicationServerListener.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/replication/plugin/ReplicationServerListener.java
@@ -31,7 +31,6 @@
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.opendj.config.server.ConfigException;
 import org.forgerock.opendj.ldap.ResultCode;
-
 import org.opends.server.admin.server.ConfigurationAddListener;
 import org.opends.server.admin.server.ConfigurationDeleteListener;
 import org.opends.server.admin.std.server.ReplicationServerCfg;
@@ -82,17 +81,18 @@
   @Override
   public ConfigChangeResult applyConfigurationAdd(ReplicationServerCfg cfg)
   {
+    final ConfigChangeResult ccr = new ConfigChangeResult();
     try
     {
       replicationServer = new ReplicationServer(cfg, dsrsShutdownSync);
-      return new ConfigChangeResult(ResultCode.SUCCESS, false);
     }
     catch (ConfigException e)
     {
       // we should never get to this point because the configEntry has
       // already been validated in configAddisAcceptable
-      return new ConfigChangeResult(ResultCode.CONSTRAINT_VIOLATION, false);
+      ccr.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
     }
+    return ccr;
   }
 
   /** {@inheritDoc} */
@@ -124,7 +124,7 @@
     {
       replicationServer.remove();
     }
-    return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    return new ConfigChangeResult();
   }
 
   /** {@inheritDoc} */
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServer.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServer.java
index 7ce0805..6423d53 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServer.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/replication/server/ReplicationServer.java
@@ -26,6 +26,10 @@
  */
 package org.opends.server.replication.server;
 
+import static org.opends.messages.ConfigMessages.*;
+import static org.opends.messages.ReplicationMessages.*;
+import static org.opends.server.util.StaticUtils.*;
+
 import java.io.IOException;
 import java.net.*;
 import java.util.*;
@@ -60,10 +64,6 @@
 import org.opends.server.replication.service.DSRSShutdownSync;
 import org.opends.server.types.*;
 
-import static org.opends.messages.ConfigMessages.*;
-import static org.opends.messages.ReplicationMessages.*;
-import static org.opends.server.util.StaticUtils.*;
-
 /**
  * ReplicationServer Listener. This singleton is the main object of the
  * replication server. It waits for the incoming connections and create listener
@@ -869,12 +869,10 @@
   public ConfigChangeResult applyConfigurationChange(
       ReplicationServerCfg configuration)
   {
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     // Some of those properties change don't need specific code.
-    // They will be applied for next connections. Some others have immediate
-    // effect
+    // They will be applied for next connections. Some others have immediate effect
     final Set<HostPort> oldRSAddresses = getConfiguredRSAddresses();
 
     final ReplicationServerCfg oldConfig = this.config;
@@ -897,7 +895,7 @@
       catch (ChangelogException e)
       {
         logger.traceException(e);
-        resultCode = ResultCode.OPERATIONS_ERROR;
+        ccr.setResultCode(ResultCode.OPERATIONS_ERROR);
       }
     }
 
@@ -962,9 +960,9 @@
     final String newDir = config.getReplicationDBDirectory();
     if (newDir != null && !newDir.equals(oldConfig.getReplicationDBDirectory()))
     {
-      adminActionRequired = true;
+      ccr.setAdminActionRequired(true);
     }
-    return new ConfigChangeResult(resultCode, adminActionRequired);
+    return ccr;
   }
 
   /**
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/schema/AttributeTypeSyntax.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/schema/AttributeTypeSyntax.java
index b8f0dcc..d1abe25 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/schema/AttributeTypeSyntax.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/schema/AttributeTypeSyntax.java
@@ -1491,7 +1491,7 @@
     currentConfig = configuration;
     stripMinimumUpperBound = configuration.isStripSyntaxMinUpperBound();
 
-    return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    return new ConfigChangeResult();
   }
 
 
@@ -1508,7 +1508,7 @@
 
   /**
    * Boolean that indicates that the minimum upper bound value should be
-   * stripped from the Attrbute Type Syntax Description.
+   * stripped from the Attribute Type Syntax Description.
    *
    * @return True if the minimum upper bound value should be stripped.
    */
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/schema/CertificateSyntax.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/schema/CertificateSyntax.java
index 55eec38..8459a96 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/schema/CertificateSyntax.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/schema/CertificateSyntax.java
@@ -41,8 +41,6 @@
 import org.opends.server.core.DirectoryServer;
 import org.forgerock.opendj.ldap.ByteSequence;
 import org.opends.server.types.ConfigChangeResult;
-import org.forgerock.opendj.ldap.ResultCode;
-
 import org.forgerock.opendj.io.ASN1;
 import org.forgerock.opendj.ldap.DecodeException;
 import org.forgerock.opendj.io.ASN1Reader;
@@ -148,7 +146,7 @@
       CertificateAttributeSyntaxCfg configuration)
   {
     this.config = configuration;
-    return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    return new ConfigChangeResult();
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/schema/CollationMatchingRuleFactory.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/schema/CollationMatchingRuleFactory.java
index 2cdb892..c6a6196 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/schema/CollationMatchingRuleFactory.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/schema/CollationMatchingRuleFactory.java
@@ -26,7 +26,6 @@
  */
 package org.opends.server.schema;
 
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
@@ -40,7 +39,6 @@
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
 import org.forgerock.opendj.config.server.ConfigException;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.forgerock.opendj.ldap.schema.CoreSchema;
 import org.forgerock.opendj.ldap.schema.MatchingRule;
 import org.forgerock.opendj.ldap.schema.Schema;
@@ -192,9 +190,7 @@
   public ConfigChangeResult applyConfigurationChange(
       CollationMatchingRuleCfg configuration)
   {
-    ResultCode resultCode = ResultCode.SUCCESS;
-    boolean adminActionRequired = false;
-    ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>();
+    final ConfigChangeResult ccr = new ConfigChangeResult();
 
     if (!configuration.isEnabled()
         || currentConfig.isEnabled() != configuration.isEnabled())
@@ -204,7 +200,7 @@
       // 2. There is a change in the enable status
       // i.e. (disable->enable or enable->disable). In this case, the
       // ConfigManager will have already created the new Factory object.
-      return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+      return ccr;
     }
 
     // Since we have come here it means that this Factory is enabled and
@@ -239,11 +235,11 @@
     {
       LocalizableMessage message =
           WARN_CONFIG_SCHEMA_MR_CONFLICTING_MR.get(configuration.dn(), de.getMessageObject());
-      adminActionRequired = true;
-      messages.add(message);
+      ccr.setAdminActionRequired(true);
+      ccr.addMessage(message);
     }
     currentConfig = configuration;
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+    return ccr;
   }
 
   /**
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/schema/CountryStringSyntax.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/schema/CountryStringSyntax.java
index 20f9471..2f36221 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/schema/CountryStringSyntax.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/schema/CountryStringSyntax.java
@@ -39,16 +39,12 @@
 import org.opends.server.core.DirectoryServer;
 import org.forgerock.opendj.ldap.ByteSequence;
 import org.opends.server.types.ConfigChangeResult;
-import org.forgerock.opendj.ldap.ResultCode;
-
-
 import static org.opends.messages.SchemaMessages.*;
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.LocalizableMessageBuilder;
 import static org.opends.server.schema.PrintableString.*;
 import static org.opends.server.schema.SchemaConstants.*;
 
-
 /**
  * This class defines the country string attribute syntax, which should be a
  * two-character ISO 3166 country code.  However, for maintainability, it will
@@ -156,7 +152,7 @@
       CountryStringAttributeSyntaxCfg configuration)
   {
     this.config = configuration;
-    return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    return new ConfigChangeResult();
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/schema/DirectoryStringSyntax.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/schema/DirectoryStringSyntax.java
index e590c49..160253b 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/schema/DirectoryStringSyntax.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/schema/DirectoryStringSyntax.java
@@ -32,7 +32,6 @@
 import org.forgerock.i18n.slf4j.LocalizedLogger;
 import org.forgerock.opendj.config.server.ConfigException;
 import org.forgerock.opendj.ldap.ByteSequence;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.std.server.DirectoryStringAttributeSyntaxCfg;
 import org.forgerock.opendj.ldap.schema.MatchingRule;
@@ -330,7 +329,7 @@
     currentConfig = configuration;
     allowZeroLengthValues = configuration.isAllowZeroLengthValues();
 
-    return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    return new ConfigChangeResult();
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/schema/JPEGSyntax.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/schema/JPEGSyntax.java
index 169a7f8..3f3d999 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/schema/JPEGSyntax.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/schema/JPEGSyntax.java
@@ -40,9 +40,6 @@
 import org.opends.server.core.DirectoryServer;
 import org.forgerock.opendj.ldap.ByteSequence;
 import org.opends.server.types.ConfigChangeResult;
-import org.forgerock.opendj.ldap.ResultCode;
-
-
 import static org.opends.messages.SchemaMessages.*;
 
 import org.forgerock.i18n.LocalizableMessage;
@@ -290,7 +287,7 @@
               JPEGAttributeSyntaxCfg configuration)
   {
     this.config = configuration;
-    return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    return new ConfigChangeResult();
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/schema/TelephoneNumberSyntax.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/schema/TelephoneNumberSyntax.java
index 73cdc7c..c0e373f 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/schema/TelephoneNumberSyntax.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/schema/TelephoneNumberSyntax.java
@@ -41,7 +41,6 @@
 import org.opends.server.types.ConfigChangeResult;
 
 
-import org.forgerock.opendj.ldap.ResultCode;
 import org.forgerock.opendj.ldap.ByteSequence;
 
 import static org.opends.messages.SchemaMessages.*;
@@ -372,7 +371,7 @@
     currentConfig = configuration;
     strictMode = configuration.isStrictFormat();
 
-    return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    return new ConfigChangeResult();
   }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/types/ConfigChangeResult.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/types/ConfigChangeResult.java
index abb1543..e56ede7 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/types/ConfigChangeResult.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/types/ConfigChangeResult.java
@@ -66,20 +66,6 @@
   }
 
   /**
-   * Creates a new config change result object with the provided information.
-   *
-   * @param  resultCode           The result code for this config change result.
-   * @param  adminActionRequired  Indicates whether administrative
-   *                              action is required for one or more
-   *                              of the changes to take effect.
-   */
-  public ConfigChangeResult(ResultCode resultCode,
-                            boolean adminActionRequired)
-  {
-    this(resultCode, adminActionRequired, new ArrayList<LocalizableMessage>());
-  }
-
-  /**
    * Creates a new config change result object with the provided
    * information.
    *
@@ -111,13 +97,10 @@
     return resultCode;
   }
 
-
-
   /**
    * Specifies the result code for this config change result.
    *
-   * @param  resultCode  The result code for this config change
-   *                     result.
+   * @param  resultCode  The result code for this config change result.
    */
   public void setResultCode(ResultCode resultCode)
   {
@@ -125,6 +108,21 @@
   }
 
   /**
+   * Sets the provided result code for this config change result if the current result code is
+   * success.
+   *
+   * @param newResultCode
+   *          The new result code for this config change result.
+   */
+  public void setResultCodeIfSuccess(ResultCode newResultCode)
+  {
+    if (getResultCode() == ResultCode.SUCCESS)
+    {
+      setResultCode(newResultCode);
+    }
+  }
+
+  /**
    * Indicates whether administrative action is required before one or
    * more of the changes will take effect.
    *
@@ -143,8 +141,7 @@
    *
    * @param  adminActionRequired  Specifies whether administrative
    *                              action is required before one or
-   *                              more of the changes will take
-   *                              effect.
+   *                              more of the changes will take effect.
    */
   public void setAdminActionRequired(boolean adminActionRequired)
   {
diff --git a/opendj-sdk/opendj3-server-dev/src/snmp/src/org/opends/server/snmp/SNMPClassLoaderProvider.java b/opendj-sdk/opendj3-server-dev/src/snmp/src/org/opends/server/snmp/SNMPClassLoaderProvider.java
index a4d065e..2ea532e 100644
--- a/opendj-sdk/opendj3-server-dev/src/snmp/src/org/opends/server/snmp/SNMPClassLoaderProvider.java
+++ b/opendj-sdk/opendj3-server-dev/src/snmp/src/org/opends/server/snmp/SNMPClassLoaderProvider.java
@@ -47,7 +47,6 @@
 import org.opends.server.admin.std.server.SNMPConnectionHandlerCfg;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.types.ConfigChangeResult;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.opends.server.util.StaticUtils;
 import org.forgerock.util.Reject;
 
@@ -178,11 +177,8 @@
             logger.traceException(ex);
         }
 
-        // Check if the security file
-        // If security file have changed, changeConfiguration not
-        // Supported.
-
-        return new ConfigChangeResult(ResultCode.SUCCESS, false);
+        // If security file have changed, changeConfiguration not supported.
+        return new ConfigChangeResult();
     }
 
     /**
diff --git a/opendj-sdk/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/admin/server/AggregationServerTest.java b/opendj-sdk/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/admin/server/AggregationServerTest.java
index a124fd6..ec7c967 100644
--- a/opendj-sdk/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/admin/server/AggregationServerTest.java
+++ b/opendj-sdk/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/admin/server/AggregationServerTest.java
@@ -48,7 +48,6 @@
 import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.types.ConfigChangeResult;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.testng.Assert;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
@@ -73,7 +72,7 @@
     @Override
     public ConfigChangeResult applyConfigurationChange(
         TestChildCfg configuration) {
-      return new ConfigChangeResult(ResultCode.SUCCESS, false);
+      return new ConfigChangeResult();
     }
 
 
@@ -103,7 +102,7 @@
     @Override
     public ConfigChangeResult applyConfigurationDelete(
         TestChildCfg configuration) {
-      return new ConfigChangeResult(ResultCode.SUCCESS, false);
+      return new ConfigChangeResult();
     }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/admin/server/ConstraintTest.java b/opendj-sdk/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/admin/server/ConstraintTest.java
index 672683b..a62bdd3 100644
--- a/opendj-sdk/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/admin/server/ConstraintTest.java
+++ b/opendj-sdk/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/admin/server/ConstraintTest.java
@@ -72,7 +72,7 @@
     /** {@inheritDoc} */
     @Override
     public ConfigChangeResult applyConfigurationAdd(TestChildCfg configuration) {
-      return new ConfigChangeResult(ResultCode.SUCCESS, false);
+      return new ConfigChangeResult();
     }
 
 
@@ -98,7 +98,7 @@
     @Override
     public ConfigChangeResult applyConfigurationDelete(
         TestChildCfg configuration) {
-      return new ConfigChangeResult(ResultCode.SUCCESS, false);
+      return new ConfigChangeResult();
     }
 
 
@@ -124,7 +124,7 @@
     @Override
     public ConfigChangeResult applyConfigurationChange(
         TestChildCfg configuration) {
-      return new ConfigChangeResult(ResultCode.SUCCESS, false);
+      return new ConfigChangeResult();
     }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/admin/server/DefaultBehaviorTest.java b/opendj-sdk/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/admin/server/DefaultBehaviorTest.java
index 29b6750..9f0255f 100644
--- a/opendj-sdk/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/admin/server/DefaultBehaviorTest.java
+++ b/opendj-sdk/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/admin/server/DefaultBehaviorTest.java
@@ -45,14 +45,11 @@
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.DN;
-import org.forgerock.opendj.ldap.ResultCode;
 import org.testng.Assert;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
-
-
 /**
  * Test cases for default behavior on the server-side.
  */
@@ -82,7 +79,7 @@
      * {@inheritDoc}
      */
     public ConfigChangeResult applyConfigurationAdd(TestChildCfg configuration) {
-      return new ConfigChangeResult(ResultCode.SUCCESS, false);
+      return new ConfigChangeResult();
     }
 
 
@@ -139,9 +136,8 @@
     /**
      * {@inheritDoc}
      */
-    public ConfigChangeResult applyConfigurationChange(
-        TestChildCfg configuration) {
-      return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    public ConfigChangeResult applyConfigurationChange(TestChildCfg configuration) {
+      return new ConfigChangeResult();
     }
 
 
diff --git a/opendj-sdk/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/extensions/DummyAlertHandler.java b/opendj-sdk/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/extensions/DummyAlertHandler.java
index 9772f99..a68e4a8 100644
--- a/opendj-sdk/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/extensions/DummyAlertHandler.java
+++ b/opendj-sdk/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/extensions/DummyAlertHandler.java
@@ -26,21 +26,17 @@
  */
 package org.opends.server.extensions;
 
-
-
 import java.util.List;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.std.server.AlertHandlerCfg;
 import org.opends.server.api.AlertGenerator;
 import org.opends.server.api.AlertHandler;
-import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.InitializationException;
-import org.forgerock.opendj.ldap.ResultCode;
-import org.forgerock.i18n.LocalizableMessage;
-
 
 /**
  * This class implements a Directory Server alert handler that only provides a
@@ -50,28 +46,21 @@
        implements AlertHandler<AlertHandlerCfg>,
                   ConfigurationChangeListener<AlertHandlerCfg>
 {
-  // The current configuration for this alert handler.
+  /** The current configuration for this alert handler. */
   private AlertHandlerCfg currentConfig;
 
-  // The number of times this alert handler has been invoked.
+  /** The number of times this alert handler has been invoked. */
   private static AtomicInteger alertCount = new AtomicInteger(0);
 
-
-  /**
-   * Creates a new instance of this SMTP alert handler.
-   */
+  /** Creates a new instance of this SMTP alert handler. */
   public DummyAlertHandler()
   {
     super();
-
     // All initialization should be done in the initializeAlertHandler method.
   }
 
-
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
+  @Override
   public void initializeAlertHandler(AlertHandlerCfg configuration)
        throws ConfigException, InitializationException
   {
@@ -79,50 +68,36 @@
     currentConfig = configuration;
   }
 
-
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
+  @Override
   public AlertHandlerCfg getAlertHandlerConfiguration()
   {
     return currentConfig;
   }
 
-
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
+  @Override
   public boolean isConfigurationAcceptable(AlertHandlerCfg configuration,
                                            List<LocalizableMessage> unacceptableReasons)
   {
     return true;
   }
 
-
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
+  @Override
   public void finalizeAlertHandler()
   {
     // No action is required.
   }
 
-
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
+  @Override
   public void sendAlertNotification(AlertGenerator generator, String alertType,
                                     LocalizableMessage alertMessage)
   {
     alertCount.incrementAndGet();
   }
 
-
-
   /**
    * Retrieves the number of times that this alert handler has been invoked.
    *
@@ -133,28 +108,20 @@
     return alertCount.get();
   }
 
-
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
+  @Override
   public boolean isConfigurationChangeAcceptable(AlertHandlerCfg configuration,
                       List<LocalizableMessage> unacceptableReasons)
   {
     return true;
   }
 
-
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
+  @Override
   public ConfigChangeResult applyConfigurationChange(
                                  AlertHandlerCfg configuration)
   {
     currentConfig = configuration;
-
-    return new ConfigChangeResult(ResultCode.SUCCESS, false);
+    return new ConfigChangeResult();
   }
 }
-

--
Gitblit v1.10.0